From 256403fe73b6a0332a8b2ec0a3812811d8d77331 Mon Sep 17 00:00:00 2001 From: "xieqinan@espressif.com" Date: Wed, 9 Sep 2026 11:34:28 +0800 Subject: [PATCH 1/2] feat(zigbee): upgrade zigbee example to v2.0 --- examples/zigbee/.build-test-rules.yml | 15 +- examples/zigbee/README.md | 11 + examples/zigbee/esp_zigbee_gateway/README.md | 222 +++++----- .../images/esp-zigbee-gateway-board.webp | Bin 0 -> 67684 bytes .../images/esp-zigbee-standalone-modules.webp | Bin 0 -> 26888 bytes .../esp_zigbee_gateway/main/CMakeLists.txt | 8 +- .../esp_zigbee_gateway/main/Kconfig.projbuild | 17 + .../main/esp_zigbee_gateway.c | 353 +++++++++------ .../main/esp_zigbee_gateway.h | 123 +++--- .../esp_zigbee_gateway/main/idf_component.yml | 12 +- .../esp_zigbee_gateway/main/zigbee_rcp.c | 124 ++++++ .../esp_zigbee_gateway/main/zigbee_rcp.h | 22 + .../zigbee/esp_zigbee_gateway/partitions.csv | 12 +- .../esp_zigbee_gateway/sdkconfig.defaults | 24 +- .../HA_on_off_light/CMakeLists.txt | 3 + .../light_sample/HA_on_off_light/README.md | 52 +-- .../HA_on_off_light/main/CMakeLists.txt | 8 +- .../HA_on_off_light/main/esp_zb_light.c | 231 ++++++---- .../HA_on_off_light/main/esp_zb_light.h | 61 +-- .../HA_on_off_light/main/idf_component.yml | 13 +- .../HA_on_off_light/main/light_driver.c | 62 --- .../HA_on_off_light/main/light_driver.h | 70 --- .../HA_on_off_light/partitions.csv | 10 +- .../HA_on_off_light/sdkconfig.defaults | 9 +- .../HA_on_off_switch/CMakeLists.txt | 3 + .../light_sample/HA_on_off_switch/README.md | 73 ++-- .../HA_on_off_switch/main/CMakeLists.txt | 8 +- .../HA_on_off_switch/main/esp_zb_switch.c | 403 +++++++++++------- .../HA_on_off_switch/main/esp_zb_switch.h | 61 +-- .../HA_on_off_switch/main/idf_component.yml | 12 +- .../HA_on_off_switch/main/switch_driver.c | 178 -------- .../HA_on_off_switch/main/switch_driver.h | 94 ---- .../HA_on_off_switch/partitions.csv | 10 +- .../HA_on_off_switch/sdkconfig.defaults | 10 +- examples/zigbee/light_sample/README.md | 9 +- .../zigbee/light_sample/pytest_esp_zigbee.py | 40 +- .../example_common/CMakeLists.txt | 4 + .../example_common/Kconfig | 12 + .../example_common/include/alarm_timer.h | 47 ++ .../example_common/sdkconfig.mbedtls_minimal | 51 +++ .../example_common/src/alarm_timer.c | 69 +++ .../examples_utils/CMakeLists.txt | 3 - .../examples_utils/include/zcl_utility.h | 50 --- .../examples_utils/zcl_utility.c | 40 -- .../light_driver/CMakeLists.txt | 3 + .../zb_common_components/light_driver/Kconfig | 13 + .../light_driver/idf_component.yml | 3 + .../light_driver/include/light_driver.h | 151 +++++++ .../light_driver/src/light_driver.c | 87 ++++ .../switch_driver/CMakeLists.txt | 13 + .../switch_driver/Kconfig | 27 ++ .../switch_driver/include/switch_driver.h | 79 ++++ .../switch_driver/src/switch_driver.c | 116 +++++ 53 files changed, 1880 insertions(+), 1251 deletions(-) create mode 100644 examples/zigbee/README.md create mode 100644 examples/zigbee/esp_zigbee_gateway/images/esp-zigbee-gateway-board.webp create mode 100644 examples/zigbee/esp_zigbee_gateway/images/esp-zigbee-standalone-modules.webp create mode 100644 examples/zigbee/esp_zigbee_gateway/main/Kconfig.projbuild create mode 100644 examples/zigbee/esp_zigbee_gateway/main/zigbee_rcp.c create mode 100644 examples/zigbee/esp_zigbee_gateway/main/zigbee_rcp.h delete mode 100644 examples/zigbee/light_sample/HA_on_off_light/main/light_driver.c delete mode 100644 examples/zigbee/light_sample/HA_on_off_light/main/light_driver.h delete mode 100644 examples/zigbee/light_sample/HA_on_off_switch/main/switch_driver.c delete mode 100644 examples/zigbee/light_sample/HA_on_off_switch/main/switch_driver.h create mode 100644 examples/zigbee/zb_common_components/example_common/CMakeLists.txt create mode 100644 examples/zigbee/zb_common_components/example_common/Kconfig create mode 100644 examples/zigbee/zb_common_components/example_common/include/alarm_timer.h create mode 100644 examples/zigbee/zb_common_components/example_common/sdkconfig.mbedtls_minimal create mode 100644 examples/zigbee/zb_common_components/example_common/src/alarm_timer.c delete mode 100644 examples/zigbee/zb_common_components/examples_utils/CMakeLists.txt delete mode 100644 examples/zigbee/zb_common_components/examples_utils/include/zcl_utility.h delete mode 100644 examples/zigbee/zb_common_components/examples_utils/zcl_utility.c create mode 100644 examples/zigbee/zb_common_components/light_driver/CMakeLists.txt create mode 100644 examples/zigbee/zb_common_components/light_driver/Kconfig create mode 100644 examples/zigbee/zb_common_components/light_driver/idf_component.yml create mode 100644 examples/zigbee/zb_common_components/light_driver/include/light_driver.h create mode 100644 examples/zigbee/zb_common_components/light_driver/src/light_driver.c create mode 100644 examples/zigbee/zb_common_components/switch_driver/CMakeLists.txt create mode 100644 examples/zigbee/zb_common_components/switch_driver/Kconfig create mode 100644 examples/zigbee/zb_common_components/switch_driver/include/switch_driver.h create mode 100644 examples/zigbee/zb_common_components/switch_driver/src/switch_driver.c diff --git a/examples/zigbee/.build-test-rules.yml b/examples/zigbee/.build-test-rules.yml index 838a83e2e49..d708848456e 100644 --- a/examples/zigbee/.build-test-rules.yml +++ b/examples/zigbee/.build-test-rules.yml @@ -6,23 +6,22 @@ - openthread - protocol_examples_common depends_filepatterns: + - examples/zigbee/esp_zigbee_gateway/* - examples/zigbee/light_sample/**/* examples/zigbee/esp_zigbee_gateway: enable: - - if: SOC_WIFI_SUPPORTED == 1 and IDF_TARGET not in ["esp32c2", "esp32c61"] - reason: not supported esp32c2 and esp32c61 - disable: - - if: IDF_TARGET == "esp32s31" - temporary: true - reason: Zigbee gateway example does not support esp32s31 yet + - if: (SOC_WIFI_SUPPORTED == 1 and IDF_TARGET not in ["esp32c61", "esp32c2"]) or IDF_TARGET in ["esp32p4"] + disable_test: + - if: IDF_TARGET not in ["esp32s3"] + reason: only test on esp32s3 <<: *zigbee_dependencies examples/zigbee/light_sample: enable: - - if: SOC_IEEE802154_SUPPORTED == 1 and IDF_TARGET not in ["esp32h4", "esp32s31", "esp32h21"] + - if: SOC_IEEE802154_SUPPORTED == 1 disable_test: - - if: IDF_TARGET != "esp32h2" + - if: IDF_TARGET not in ["esp32h2"] temporary: true reason: only test on esp32h2 <<: *zigbee_dependencies diff --git a/examples/zigbee/README.md b/examples/zigbee/README.md new file mode 100644 index 00000000000..449716cbfc6 --- /dev/null +++ b/examples/zigbee/README.md @@ -0,0 +1,11 @@ +# Zigbee Examples + +See the [README.md](../README.md) file in the upper level [examples](../) directory for more information about examples. + +## Overview + +In this folder, it contains following Zigbee examples: + +* [esp_zigbee_gateway](esp_zigbee_gateway) is a Zigbee gateway example. It runs on a Wi-Fi SoC such as ESP32, ESP32-C3 and ESP32-S3. It needs an 802.15.4 SoC like ESP32-H2 running [ot_rcp](../openthread/ot_rcp) example to provide 802.15.4 radio. For more details see [README](esp_zigbee_gateway/README.md). + +* [light_sample](light_sample) It is a pair of typical Zigbee Light On/Off switch and bulb examples. They run on an 802.15.4 SoC like ESP32-H2. For more details see [README](light_sample/README.md). diff --git a/examples/zigbee/esp_zigbee_gateway/README.md b/examples/zigbee/esp_zigbee_gateway/README.md index e313e611e9c..e6cb29eee3d 100644 --- a/examples/zigbee/esp_zigbee_gateway/README.md +++ b/examples/zigbee/esp_zigbee_gateway/README.md @@ -1,46 +1,68 @@ -| Supported Targets | ESP32 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-S2 | ESP32-S3 | -| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | +| Supported Targets | ESP32 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-P4 | ESP32-S2 | ESP32-S3 | ESP32-S31 | +| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- | --------- | # Gateway Example -This example demonstrates how to build a Zigbee Gateway device. +This example demonstrates how to build a Zigbee Gateway device. It runs on a Wi-Fi SoC such as ESP32, ESP32-C3 and ESP32-S3, with an 802.15.4 SoC like ESP32-H2 +running [ot_rcp](https://github.com/espressif/esp-idf/tree/master/examples/openthread/ot_rcp) to provide 802.15.4 radio. -The ESP Zigbee SDK provides more examples and tools for productization: -* [ESP Zigbee SDK Docs](https://docs.espressif.com/projects/esp-zigbee-sdk) -* [ESP Zigbee SDK Repo](https://github.com/espressif/esp-zigbee-sdk) +## Hardware Platforms -## Hardware Required +### Wi-Fi based ESP Zigbee Gateway -By default, two SoCs are required to run this example: -* An ESP32 series Wi-Fi SoC (ESP32, ESP32-C, ESP32-S, etc) loaded with this esp_zigbee_gateway example. -* An ESP32-H2 802.15.4 SoC loaded with [ot_rcp](../../openthread/ot_rcp/) example +The Wi-Fi based ESP Zigbee Gateway consists of two SoCs: -Connect the two SoCs via UART, below is an example setup with ESP32-DevKitC and ESP32-H2-DevKitC: -![Zigbee_gateway](../../openthread/ot_br/image/thread-border-router-esp32-esp32h2.jpg) +* An ESP32 series Wi-Fi SoC (ESP32, ESP32-C, ESP32-S, etc) loaded with this example. +* An 802.15.4 enabled SoC (e.g., ESP32-H2 or ESP32-C6) loaded with [OpenThread RCP](https://github.com/espressif/esp-idf/tree/master/examples/openthread/ot_rcp) example. + +#### ESP Zigbee Gateway Board + +The ESP Zigbee gateway board provides an integrated module of an ESP32-S3 SoC and an ESP32-H2 RCP. + +![br_dev_kit](images/esp-zigbee-gateway-board.webp) + +The two SoCs are connected with following interfaces: +* UART for serial communication +* RESET and BOOT pins for RCP Update +* 3-Wires PTA for RF coexistence + +No jumper wires needed. No `idf.py menuconfig` under menu "OpenThread RCP Update" configure to change. + +#### Standalone Modules + +The SDK also supports manually connecting an ESP32-H2 RCP to an ESP32 series Wi-Fi SoC. As one way of connection is following: ESP32 pin | ESP32-H2 pin ------------- |------------- GND | G GPIO4 (RX) | TX GPIO5 (TX) | RX + GPI017 | RST + GPIO18 | GPIO9(BOOT) -* TX, RX pin can be also configured by user in esp_zigbee_gateway.h +TX, RX, RST and BOOT pin from ESP32 side can be configured by user in `idf.py menuconfig` under menu "ESP Zigbee gateway rcp update". -The example could also run on a single SoC which supports both Wi-Fi and Zigbee (e.g., ESP32-C6), but since there is only one RF path in ESP32-C6, which means Wi-Fi and Zigbee can't receive simultaneously, it has a significant impact on performance. Hence the two SoCs solution is recommended. +TX, RX pins from ESP32-H2 should be configured in [ot_rcp example](https://github.com/espressif/esp-idf/tree/master/examples/openthread/ot_rcp) via "OpenThread RCP Example > Configure RCP UART pin manually" options. -## Configure the RCP +Other pin number is also available for user to configure if needed. -The `OPENTHREAD_NCP_VENDOR_HOOK` of `ot_rcp` should be selected via menuconfig when the [ot_rcp](../../openthread/ot_rcp/) example is built. Then use `idf.py -p PORT erase-flash` to flash the RCP firmware to ESP32-H2-DevKitC. +The following image shows an example connection between ESP32 DevKitC and ESP32-H2 DevKitC: -## Configure the project +![Zigbee_gateway](images/esp-zigbee-standalone-modules.webp) -Before project configuration and build, make sure to set the correct chip target using `idf.py set-target `. +## Erase the NVRAM -In order to run the example on single SoC which supports both Wi-Fi and Thread, the option `CONFIG_ESP_COEX_SW_COEXIST_ENABLE` and option `CONFIG_ZB_RADIO_NATIVE` should be enabled. The two options are enabled by default for ESP32-C6 target. +Before flash it to the board, it is recommended to erase NVRAM if user doesn't want to keep the previous examples or other projects stored info +using `idf.py -p PORT erase-flash` -## Erase the NVRAM +## Create the RCP firmware image -Before flash it to the board, it is recommended to erase NVRAM if user doesn't want to keep the previous examples or other projects stored info using `idf.py -p PORT erase-flash` +The esp_zigbee_gateway supports updating the RCP image. Generate rcp image before building the esp_zigbee_gateway example. + +Build the [ot_rcp](https://github.com/espressif/esp-idf/tree/master/examples/openthread/ot_rcp) example. Later in the esp_zigbee_gateway building process, the built RCP image will be automatically packed into the esp_zigbee_gateway firmware. See detail in [CMakeLists.txt](main/CMakeLists.txt). + +Notes: +- `OPENTHREAD_NCP_VENDOR_HOOK` of `ot_rcp` should be selected via menuconfig. ## Build and Flash @@ -48,86 +70,94 @@ Build the project, flash it to the board, and start the monitor tool to view the (To exit the serial monitor, type ``Ctrl-]``.) -## Example Output +## Application Functions -As you run the example, you will see the following log: - -esp_zigbee_gateway: +- When the program starts, the board will attempt to read the RCP version from the remote radio via UART. ``` -I (499) main_task: Calling app_main() -I (519) ESP_RADIO_SPINEL: spinel UART interface initialization completed -I (519) ESP_RADIO_SPINEL: Spinel UART interface has been successfully enabled -I (519) ZB_ESP_SPINEL: Spinel UART interface enable successfully -I (529) main_task: Returned from app_main() -I(529) OPENTHREAD:[I] P-RadioSpinel-: RCP reset: RESET_POWER_ON -I(539) OPENTHREAD:[I] P-RadioSpinel-: Software reset RCP successfully -I (569) ZB_ESP_SPINEL: Radio spinel workflow register successfully -I (769) ESP_ZB_GATEWAY: Production configuration is ready -W (769) ESP_ZB_GATEWAY: Production configuration is not present -I (769) example_connect: Start example_connect. -I (779) pp: pp rom version: e7ae62f -I (779) net80211: net80211 rom version: e7ae62f -I (799) wifi:wifi driver task: 3fca80d8, prio:23, stack:6656, core=0 -I (799) wifi:wifi firmware version: 3ce09e5 -I (799) wifi:wifi certification version: v7.0 -I (799) wifi:config NVS flash: enabled -I (799) wifi:config nano formatting: disabled -I (809) wifi:Init data frame dynamic rx buffer num: 32 -I (809) wifi:Init static rx mgmt buffer num: 5 -I (819) wifi:Init management short buffer num: 32 -I (819) wifi:Init dynamic tx buffer num: 32 -I (819) wifi:Init static tx FG buffer num: 2 -I (829) wifi:Init static rx buffer size: 1600 -I (829) wifi:Init static rx buffer num: 10 -I (839) wifi:Init dynamic rx buffer num: 32 -I (839) wifi_init: rx ba win: 6 -I (839) wifi_init: tcpip mbox: 32 -I (849) wifi_init: udp mbox: 6 -I (849) wifi_init: tcp mbox: 6 -I (849) wifi_init: tcp tx win: 5760 -I (859) wifi_init: tcp rx win: 5760 -I (859) wifi_init: tcp mss: 1440 -I (869) wifi_init: WiFi IRAM OP enabled -I (869) wifi_init: WiFi RX IRAM OP enabled -I (879) phy_init: phy_version 670,b7bc9b9,Apr 30 2024,10:54:13 -W (879) phy_init: failed to load RF calibration data (0x1102), falling back to full calibration -I (989) wifi:mode : sta (f4:12:fa:41:a7:f4) -I (989) wifi:enable tsf -I (999) example_connect: Connecting to esp-office-2.4G... -I (999) example_connect: Waiting for IP(s) -I (3409) wifi:new:<13,0>, old:<1,0>, ap:<255,255>, sta:<13,0>, prof:1 -I (3649) wifi:state: init -> auth (b0) -I (3719) wifi:state: auth -> assoc (0) -I (3759) wifi:state: assoc -> run (10) -I (3769) wifi:connected with esp-office-2.4G, aid = 1, channel 13, BW20, bssid = 9c:3a:9a:04:18:92 -I (3769) wifi:security: WPA2-PSK, phy: bgn, rssi: -42 -I (3769) wifi:pm start, type: 1 - -I (3779) wifi:dp: 1, bi: 102400, li: 3, scale listen interval from 307200 us to 307200 us -I (3789) wifi:set rx beacon pti, rx_bcn_pti: 0, bcn_timeout: 25000, mt_pti: 0, mt_time: 10000 -I (3819) wifi:AP's beacon interval = 102400 us, DTIM period = 1 -I (3849) wifi:idx:0 (ifx:0, 9c:3a:9a:04:18:92), tid:0, ssn:0, winSize:64 -I (4799) esp_netif_handlers: example_netif_sta ip: 192.168.200.133, mask: 255.255.252.0, gw: 192.168.200.1 -I (4799) example_connect: Got IPv4 event: Interface "example_netif_sta" address: 192.168.200.133 -I (5509) example_connect: Got IPv6 event: Interface "example_netif_sta" address: fe80:0000:0000:0000:f612:faff:fe41:a7f4, type: ESP_IP6_ADDR_IS_LINK_LOCAL -I (5509) example_common: Connected to example_netif_sta -I (5519) example_common: - IPv4 address: 192.168.200.133, -I (5519) example_common: - IPv6 address: fe80:0000:0000:0000:f612:faff:fe41:a7f4, type: ESP_IP6_ADDR_IS_LINK_LOCAL -I (5529) wifi:Set ps type: 0, coexist: 0 - -I (5539) ESP_ZB_GATEWAY: Initialize Zigbee stack -I (5549) ESP_ZB_GATEWAY: Device started up in factory-reset mode -I (5549) ESP_ZB_GATEWAY: Start network formation -W (5729) ESP_ZB_GATEWAY: Network(0xb8e9) closed, devices joining not allowed. -I (5729) ESP_ZB_GATEWAY: Formed network successfully (Extended PAN ID: 60:55:f9:ff:fe:f7:73:e8, PAN ID: 0xb8e9, Channel:13, Short Address: 0x0000) -I (6339) ESP_ZB_GATEWAY: Network(0xb8e9) is open for 180 seconds -I (6339) ESP_ZB_GATEWAY: Network steering started +I (433) main_task: Started on CPU0 +I (443) main_task: Calling app_main() +I (453) ZIGBEE_GATEWAY: Start ESP Zigbee Stack +I (493) main_task: Returned from app_main() +I (503) RCP_UPDATE: RCP: using update sequence 0 +I (503) ESP_RADIO_SPINEL: spinel UART interface initialization completed +I (503) ESP_RADIO_SPINEL: Spinel UART interface has been successfully enabled +I (503) ESP_ZIGBEE_RADIO_SPINEL_UART: Spinel UART interface enable successfully +I(513) OPENTHREAD:[I] P-SpinelDrive-: co-processor reset: RESET_POWER_ON +E(523) OPENTHREAD:[C] P-SpinelDrive-: Software reset co-processor successfully +I (573) ESP_ZIGBEE_RCP: Running RCP version: openthread-esp32/fcae32885b029-b945928d7; esp32h2; 2026-03-11 02:30:22 UTC ``` -## Gateway Functions +- If `CONFIG_AUTO_UPDATE_RCP` is enabled and the version does not match the stored one, the board will automatically update the RCP using the stored version. - * When the device starts up, it will attempt to connect to a Wi-Fi network and then interface with the OT-RCP via UART to form a Zigbee network. - * For more Gateway functionalities, please refer to [matter zigbee bridge](https://github.com/espressif/esp-matter/tree/main/examples/bridge_apps/zigbee_bridge/) and [Rainmaker Zigbee Gateway](https://github.com/espressif/esp-rainmaker/tree/master/examples/zigbee_gateway) examples. +- After confirming that the remote radio is functioning properly, the board will connect to Wi-Fi as configured in menuconfig. +``` + +I (573) example_connect: Start example_connect. +I (583) pp: pp rom version: e7ae62f +I (583) net80211: net80211 rom version: e7ae62f +I (593) wifi:wifi driver task: 3fcb86d0, prio:23, stack:6656, core=0 +I (593) wifi:wifi firmware version: 14da9b7 +I (593) wifi:wifi certification version: v7.0 +I (603) wifi:config NVS flash: enabled +I (603) wifi:config nano formatting: disabled +I (603) wifi:Init data frame dynamic rx buffer num: 32 +I (613) wifi:Init static rx mgmt buffer num: 5 +I (613) wifi:Init management short buffer num: 32 +I (623) wifi:Init dynamic tx buffer num: 32 +I (623) wifi:Init static tx FG buffer num: 2 +I (633) wifi:Init static rx buffer size: 1600 +I (633) wifi:Init static rx buffer num: 10 +I (633) wifi:Init dynamic rx buffer num: 32 +I (643) wifi_init: rx ba win: 6 +I (643) wifi_init: accept mbox: 6 +I (643) wifi_init: tcpip mbox: 32 +I (653) wifi_init: udp mbox: 6 +I (653) wifi_init: tcp mbox: 6 +I (653) wifi_init: tcp tx win: 5760 +I (663) wifi_init: tcp rx win: 5760 +I (663) wifi_init: tcp mss: 1440 +I (663) wifi_init: WiFi IRAM OP enabled +I (673) wifi_init: WiFi RX IRAM OP enabled +I (673) phy_init: phy_version 701,f4f1da3a,Mar 3 2025,15:50:10 +W (673) phy_init: failed to load RF calibration data (0x1102), falling back to full calibration +I (783) phy_init: Saving new calibration data due to checksum failure or outdated calibration data, mode(2) +I (793) wifi:mode : sta (48:27:e2:14:43:38) +I (793) wifi:enable tsf +I (793) example_connect: Connecting to esp-guest... +W (793) wifi:Password length matches WPA2 standards, authmode threshold changes from OPEN to WPA2 +I (803) example_connect: Waiting for IP(s) +I (3293) wifi:new:<6,0>, old:<1,0>, ap:<255,255>, sta:<6,0>, prof:1, snd_ch_cfg:0x0 +I (3303) wifi:state: init -> auth (0xb0) +I (3303) wifi:state: auth -> assoc (0x0) +I (3323) wifi:state: assoc -> run (0x10) +I (3413) wifi:connected with esp-guest, aid = 1, channel 6, BW20, bssid = 84:78:48:86:87:31 +I (3423) wifi:security: WPA2-PSK, phy: bgn, rssi: -30 +I (3423) wifi:pm start, type: 1 + +I (3423) wifi:dp: 1, bi: 102400, li: 3, scale listen interval from 307200 us to 307200 us +I (3433) wifi:set rx beacon pti, rx_bcn_pti: 0, bcn_timeout: 25000, mt_pti: 0, mt_time: 10000 +I (3453) wifi:AP's beacon interval = 102400 us, DTIM period = 1 +I (3503) wifi:idx:0 (ifx:0, 84:78:48:86:87:31), tid:0, ssn:0, winSize:64 +I (4573) example_connect: Got IPv6 event: Interface "example_netif_sta" address: fe80:0000:0000:0000:4a27:e2ff:fe14:4338, type: ESP_IP6_ADDR_IS_LINK_LOCAL +I (4843) esp_netif_handlers: example_netif_sta ip: 10.18.40.174, mask: 255.255.255.0, gw: 10.18.40.1 +I (4843) example_connect: Got IPv4 event: Interface "example_netif_sta" address: 10.18.40.174 +I (4843) example_common: Connected to example_netif_sta +I (4853) example_common: - IPv4 address: 10.18.40.174, +I (4853) example_common: - IPv6 address: fe80:0000:0000:0000:4a27:e2ff:fe14:4338, type: ESP_IP6_ADDR_IS_LINK_LOCAL +I (4863) wifi:Set ps type: 0, coexist: 0 +``` + +- Finally, the board will act as the `Zigbee Gateway`, forming a network and handling commands from the network. +``` +I (4883) ZIGBEE_GATEWAY: Initialize Zigbee stack +I (4883) ZIGBEE_GATEWAY: Deferred driver initialization successful +I (4883) ZIGBEE_GATEWAY: Device started up in factory-reset mode +I (5303) ZIGBEE_GATEWAY: Formed network successfully: PAN ID(0x4494, EXT: 0x6055f9fffef7a2ad), Channel(13), Short Address(0x0000) +I (5573) ZIGBEE_GATEWAY: Network(0x4494) is open for 180 seconds +I (5573) ZIGBEE_GATEWAY: Network steering completed +``` + +- Gateway functionalities supporting Wi-Fi interaction will be added in future updates. ## Troubleshooting diff --git a/examples/zigbee/esp_zigbee_gateway/images/esp-zigbee-gateway-board.webp b/examples/zigbee/esp_zigbee_gateway/images/esp-zigbee-gateway-board.webp new file mode 100644 index 0000000000000000000000000000000000000000..02285eff657227bfbfe0677e90cdeb822ba1ffac GIT binary patch literal 67684 zcmb@tW2|Uj>^698+qP}nw(WE7(LJ_p+qP}nwrz9nZ~pU6GMUMIdRMYnx{|${bnP~6 zpSDVpVq!WFfB@>ELJDdM92!sn000R89(-T`3t#|283hSr0ssI&%w}6`&N}VwAL!88 zUGXPhpr+&@B=TAaBxAZOmUnO{Hj8Ze2v3bZu3M(gDFmKbXzN?v*X_T$cD1)he}Ps=mmxKPV;`$0$ScOH zal2;3Q8{ZTw5iv~=eQmDvbE(Ic;c~r$p7uX{WCbvP<7y zP4aoF?Ut2}myj<^v494441&2Un`Z~wle{)}d|KHo~PiN8gcZr?wz$d}2+lRz;Y)V+KQE`^w7rusKN71xA^Uhj`+JJlat}dns^dpxd%%{wFRZ#$P@VKzFJZ0KHVdL*E7x#Evd0>Q%bZzgc`*a~ zWCE_!3?=+3zDD60|cqcejL4+ zdr*tT4vcHE;E)B1y+QeWZ;KPY^x9c8{K&llCHzVg2_MJMX}%d5{aIy(j>!!wR6gwEIfu^WQSJl)*^2u5!e^kK*OmvCkO}MwB16W72_}N23Kl+%!fa*yK(JU~QQY@W1(pOV z=jLM<^%8-}O8e!(Wk5;!8qI~FxUCiS|DD5Gk?>ysnogKK=-1X!n2w1*iVYj7b=G%ZF*j2`it>UN2 z3sn?Mhpn68>PBD}y;xFVMa>gYbOeh-akfBJgg>YTc*AO{1tbLL#J6*cUoa` z{o`t&_CWpb@dXMYRgSjXMWtheYQDqcy!dU;->&rK4XMlLWb4&ho$ZhdoZ?Mob|ExLg6H3i|@ zVkp8vAZzp0c>!m`s<_Q!)r{OaB2%H&(^vIb+1W`9s@s{W3LZ(&=C-QXl`hWCT}YkJ zOP=&r%}9oUSk1U>DOmNhh%rhwD54hs?w^UES5O~PO#0gcz{ocmqX|%>6JZCP7SZ$B zZs>YRI!a&*tb2$6;qwX<(5-*0Ght2rb^_>D5aZf_*3GrU_?@Zitb|ocz-V(#(@hW> z3Aoi!oAt9idn(5p?#NV209qP$2mY1>L`%b}Px@#Z0>MlX+LKMX8@s+tw~L%lO~0`g z#Ug4NA4j>;zB)=20d=aaZAnmZ; zC@~~snFEoXu8;(T$|5N3JW8dBNy$@QOw3yQ7;Y0ei#vvGr$QM1N^{?vZdmP0l#hi6+nci9Qt&IugX44&4Fz$~s&Hn&1!Xr+4~ z_39(o6q%D>3=?=FH!Hy@|MF49+9WQiGkIQLH#tgUk*Ejnf-`CgSZ2$lOOfEun9b?r@{+^ zIeg{SK8feq`XHHS*p=Y~p4xg~Ludl8O*S_Um228Ku6#qN?GfDmmSIi1u)__3Dg05) zaJ#VbP2L!8$(7-z6Zq=m>fgL@E*iDUC&7WFu3dhkhw;U;a+VCvbvT{{CfeM z+x2a_|Kdt;UHAoq)YbmQ&k@`d-sJ{?)b&i=DU<>-d{lC?h)8JJPdqd!W{GrvUU3n@ zDVY_s(ClXxe>ng8{q)}Zvv~Y)AU=q|cf3cB<~!vZ03*F#R#?F;AKypwZmbR&kt&ke z%$W*RldcCLmX9tL0(r9uIA<^AS#7aqAoL^ctMmt^{ zG(IJ)a2k@BnbBVjGn1DUG8P6iD<#iRJ-W`-Sj4EpA01&1;+EibsmQHw+>5mb>@s(J z_N*J_qGBkatL`~-x04=uGxf*BM+bj@U}$1kqiLyV84!GwdL`7=XS3!P#>a}kzBS#z zC5@Ana}9>W>4Sqd!p`Tp?M3CNx+tEKRhmTLX{pnmo3Xs>xv zf*VLG-818Y5;7=!Bb>%&>02S*8<*EA zUQ+_nvI9Wd;!z}jgZ@%xdJ~HnutHk9yNFSTRx~7pTvkRC7oDGk?1YO=5+!SR4tLb- zh7$5}{l0|k)Y_Jwgd7i@3}w0GavOrJoNT~+`BG6*y#MIVr(Bc(&Igw#((h?ptFgh{`(K z3lmISK$zg}hyKrZxz4xyx5&lWnd}f;q@b+8MqZ#fh{N6SM@*9b&|~f|7kzJK zV2fKiqS}XIiJ*Cpb7N)TOTZtT)ts-2+>u9L%1!mc?V`M57*5bw!=*6$&gW!*^4}*P zDR$R^vf=H+c{0IrcS&N3M5pV{1(Gjr1Mg6++h5j z+{f15ZS?X0=!%NQXqUvGjX=1sia)E=yLZ$tC-^rOAvap0Mpi^%c+j7UAy3!X%`EVlXpZl#EtfVY|tKh+X^> zkj_elYwMhA5ML6uH|6;3wy@luvF$H6k}qq0tiUZWv~-O!hwV2A@!k($I@I{qU(YZ% zIXYjCa;K$pKOVVh0UnT6aN|TS=Ivm)98QgG+HMEEZTIq9JER? zmKa@BH~g39`~o}8g}}~l*aLnh-#NRVaxej_qT;TGfT;$5o~|5=f!0>O@Vzzq{u(l4 z6G(7ZH$n%_e0c_6(*RcNL0F+i{w)M0#j`)I5k&9$BEQqNAwUDMGN|{Yysn%1;pN$@ zy7XP&{L%KEO{DUJ6*8hP!b8V=St<6d`Hpq%xuW--2!vmP5>eb1{@`3T3@v_G!biRC zDfN=P`MTWw=$}NbYC76;-rJ8ma=fk$`baYGdIPhjo)KuQ<> zS&RASm#Nc@HBaHbVNPMgrs}H|cJ>IIocFo}pm&7LECgWdU`I&VHJky<8tq@%sN-^9 z>uAzBzqWZS9FmV8tx`zv#fYvxFsF>3j2*RuEi#HTSkx=`H(5pc1j?DRtK}7&b zAmd@NAbgbcTiM-*!QDryxf;)6wAB1+x-R}4?!&)sdG=z+yU&n!-k#Z$u{Tv5)}RAD z-*n#gJa>Km7LxnKWuWdAP}z*?(s=Xp2e8v<0&)O=XobZ(!J30j!UBc`f-9!fNmq~I zCUeWII?NcfppWCyo4}KL+Q0k@He_GyS)Jl)^Q!<`j$%Nw*u%OMWhkuusE=ZhC!m91 zcBWIN=0FH&8Hw0+nmZhKUo?RF(Kzwr{u$tXPvuJNZzBG8{;KzL^WtJ6D|VGBn*q7E z{dx3G2JS4~*5B)eVrhDRToMAQ26a^gloB(V<-^xO$9iev1aDOas-=knTjR3mV=xih zaXhfJ=xR{a7rVrV&H%SPJ+lD-AwL&Fl0L{>nA)G*-JcVkb;hV=7Y&xhW#>QE0ke12 z9($Otz0bh0d|t2pCkn~D(A8NNhya_uNO?P6M`sVy@-JJjPWDf0*t}=keO_fIf7}y^ z4v;#(hIW~|sAUfH1u7EyTJA|-Dwg2w>vZNiUXoC;0xrka2Nr1C4?CKs@==(?z>~P0shuDaIqfE?JPDkx{)H!7{r=40j-v`M0(KOT^lpMvw9IM58YmEDD&}Cg zaLuqVfHGZg8%|k}5R;+1Wvf3X;#%^HEl=NSUxn-Tw#B1^ zg&hM~^*Ur>0_+g_8FY`d_v@90Pbr$f&)~}3X#7)>&8_^`|01fe9PTGdR75OFtMah? z2}YqSl_CX$b6ueOmA5qZAKck!X+qN*myrEeRTS3<{~V z5l>EU{IXhV;Ftpe2c+bUmr7-j(Kh9%qL< zKbSkC@W73QiU)w^7IXdlUwkokHTtgyqwQ|$=I_8zw9GLjOU7r~_^0}Y;>{7^j((bS z7cvj+m~L%q#D<&M#YD8*2C!TO&{H!5tc-|*yH`6+Lq{;~XV<()$cfxmL1*m7l`#n9 zWLUTlNoiGeBcNINMMq3#DjkjySqVHuV&t{z8F(zq=b5xCx@eerH#hk^O%^quGsQC8JPtqvUQ^YRODYg+<=a4Vt8 z)v)yzq01@Dm_^e#;iLDmAwMpQKz(qFCsZy;eRUP#qZbhHU6#dt{W_I-Iv-j0f_DLc zQIb5BbA6vM;<0{IS=}GQ|NPopiTY~oS5s2(T0oEzy!=1K?|}b4{+<|4?H%5IQ^Buu z+a=U0+Z0Mtidc+!Kk0+kd+l^`@cA+^D_<%pG$^M#WU_6|ZgP5tz;ibHjLAjL10sXj zbjP&P!rg6iC~FEF*!#oeVt6Wh6&FS|H%CooxlBHY<>m=bN_s+OW};R~5>R*_pO(>C zFBY&8Qh0OTfsBhfl%CX;WCp!Ps9|m@*_1HB%Noel%ZS%|Y32;%<_qs-$E% zVyZdtNlM80d^56` z8;tpb6a+i^I}hIeh|5I_8s3p%uKO$9t8LB-mXkpVXp{4p!2Ui74-mKI?X{x$CO|5HK<0;9-ucqAqhJ5bZ;w}`IyiF+r9QB*Xm6CqB{!rm|Z`ZbGxGTiZ= zs^CJXKaBnffKOB z=nIg=p0=gfF1+d25Yhl<4ih3B=A}4&Oroz)y%_XEoJCqzk-Ask`X#a&*8r^Qkv4kc zH3;7Trv5M>#j*F(duobr2NWSy8REBX*0;1UG9vtP!a(`+kc0T69#EWia8?yrhwlNu~(xHMGh_#PiryAoj= z6ZqQI`ox+a-pIdf{y02nd9xD%C!J@2!gn8@zCpmc-IX*WPXMyv3<%eH_|k(|?4u)? z1f3im4B~%}|Bi!a`kydd0}5gG{|oq}>FhwJlHe4mxi>id*7>*%MAsV%U69=KGH|S2 zG%w{S;O!YZ+1m>}ZxpyDu($f%2O%{J_vw%~M-b?Sin=<>2L0d=L-SqsT z=6*9FNSK5mF2O&LcU?hH)G)8-+jZ?Fb{#P7>9G@W+Z>;O`xpU2{RJLT>C=KRM9ER+ z<8aTQus{o12I+3q0u@t{COc-|Y|JzzwKpVoJC8l~_x+gzQUDD)DU#2jCk|t(-7EY> z@v*rLZdJAzFF>^H^>ULyuN)!&X80Y?1mX#{xS~D)Ipe(ZQp{LJJ$mA@s)kNJy< zNnak{41<`My4Ps~dSng(7tnAB!&NJP5RZUV*N2*@K8!^-FP1UipO;(DQRu!38_f=Q zLRy2+dK1V3jfk>jElORG>Hrnt0gq^o+kVeS&bxL*4L^WD8Ua7F7w_*U*8yTcAB$gn z1#Qj7TeirO0K^smnyDBd5U_fcD63sFnq7x63wEsr^=sMFJr~@ywS6O?D$CApuJ6R$ zYvx`?MmRKRS!Hu`Px&&>L8ZeuSOb@CU~UK)EJ;A2)_CqO2#S`zVddM)cF>?}y&&mu zE!`^w+|Hqn*$4{6VZRZMq{X8SUgf>=RLTGb zwcHO6PcB9>QdcLt>ju&?4OO%nwiMC1AQP7)O_oS7_di(J!6SU&DAe{C$x4vQQsJs= zfU5JI>0DMpz!@Gx>1IY$T$=b*c)4(F&rc*J*F!HA+geq|Csyhpirb>K)uSmJ(veCl z$TFt>VR|Zq00TzlHWhU?#+@Rn2pk$(s3&kr4Woh6c!kOncovy?fT-YrV^wgHak97oawFkw`1olY0h3a&`NxQo6N2Z1~T`n|m>u7$87RG8o%zFlpW|e3%FZ zdV|ay-XDK@JNlQbN<-qMDM<_dDs#_v@5?A2W6yHINdPy3U#30p0tDT{yRaLrA3=uqE=s>+;bOemX3eE5 zq|b{vCYoqnL@L!#gJf@)u(sjqtWlzZ7(c(mf8j@p_LF4mas6EHL2e^w4_xrBbSH}% z`mqrEA}DzJbvtm~_jRC{*|^8#?VYw_W}0Px+QiZaK~WBcEW`Ins4#&GGN%}gR3MVF zP-3AH^G4bbC^*ZpP>U$YT(hKZ>{EE3`rL&X(~ZNg`r8AOxRb_kMQ$uk;grY!Lw75- z{^7Pi|Be){bxxtzN!(Sd?ZUU~gKVw>?f+nDzGJxJQ#jih+=tPy|Ip;(BRHj-x{V{a z>SH+X3EUFf9Rr!0voYL{7goaO;0A#L)RMvT1H3T4?gbX?(jX|20PG>QbrEJ)y|!W zo~gmj;QlFNelQm6cFo}1F&yu@2$Gh^cyR9W&M3fSJe8?R-KgCxL{iR`&1WHatQ{)4 zmrJ@4=~FKkgYw*&Hiyqebv&Xn%KV(}Kio{Dq;NhYzT1^6)iqkhm0815iynWsBHf)k zYJ`^a!}#RY*Ox3k?Tx8o3e&ujTe=svjZ3VN&8*KhTb?J1UDbnaiKK2fdmQKmt$8yd zgu5GaxDcM0TFaGj5e$rBFxFM7h{l!R#RdHNw%zzQ`-XSWAm;}ap(5p^>i9lx-_J?Z zWa%PkWlb~Sr3quaP7pT2D5_;xk{dRj>fj3+MHxX|hE-(jKY1?&z=4C0>G~a=wAEk} z(>fd{_>oUXEIu8+1c21rWtJM>%SZ$~+wdfs$MJ7TyK9)I|6fB*lt zRU9OMf87TJ3#R}8_JhFLfK&v)mcV@T24(UTq-Eu$FB$O+Sdf->n=V|vi?0rzFF$xB z-&#;l9;z;G)`A_^lG~}OFg)-Z$~Ie?%X(EmcRdM2^MwdsqOx4or!>g1o4XSDqCb&8 ze?olIy<The6-vYu6u8N-+y~vAYMGL@!xx=d~;vuKk2`AFT1rq>3;*iR*!er z;2&qNec$;qS>xCwJ;HjRutN(8!yG-q`-XB-;Q_RVK{X z&ua_YfFKl6(f2GXtB1gN0SpARj(`EJp?i3qhfq{1vxNbHZb; zMi5Po@>PRhoGD@L*39iACQIJ&q(bSt1Z9hqS&YTZ1@X_U7`y8rZNInR>7-b&ZLnNL za#RhL7w4-_U7n~jCdkrxeioZ5c}T~=j9&hHeZHq)_Zt9PKw8dMgBFs4#RsRnzz3XW zVM+d`$uJ2C^J7li(W=`C>*~)1Ka)Tu&qxs&ctQK25xcG?byf4!!@laIKZk8zt?I=S z_02Soqe~ZUD!@w%SJA6ia#uyy_`;RwIPGu4HDjz_2!C0rv_LL^IcZ6jq$E8YhDO_E z!g17121!~fJpu?Ym2b+ueh&3RkAE+`d--*gURdSAZ-#y#@W18idrY2SS zBkkdHI_6nbGk_o3LuNMT+eqv_^`(3 zN47NG9o3nvAuB!!7Cb~!nLQg*>BR}A@yWxVS4kNnk-VKXm?Ym&Ii|tU-VNKVD@Dnr zbI=wXnlD8MoEW9G|1yh;ge4njZhC(FPgk^-BLG9kGnou41Xt%UdA=r`sCt^`An^b? zC?ZySEcU6|h+zvU^yhlHPx>INq=1qcYOA;tdN!qd+Co*Pi~J3GYq!YPh6##8PcDr7 zyZ|@TW|K|OBq8Kl2Fa2cM~AGt@rOY2o_i5%?;PUNtk`-_^coil2qk{Gl28y-;CCKxpOO$Wu{6IBM0Ko z8=MHhcq4Df8P${azpG`G0qK3QZrpa&@T27+QpR1_J?*%Lx>h4k75k9BQMD!VPUV19 z%jrJkfJfZ6rAkEUBseB&sCsAHfX8t(*)W5-T#3pBH>*qxs$oB9xeo9ZIxOOL(1QDS z{FkX*lApIW^-!{PJ_i*+VfAOO9aUX^ox^^g5>T=XMdG%pt)D>|#@ zm~!KN>XZuk)ULUXloQdNBer9JIVM17UsBB&PLz2Ha%j4qvYr_y{$tm z)Y1`9m4%*`AEE!rmrS8xUMpY{4_gfr|=%emS2^cQlow|DK(mE-cnzg1^&$ zAS9_`Ok>fzsSkb=3CS_gL=nW|Lm-gP3x1V?_-zxN=O&YW{RU6B1i(3 z9O?;5hSPeHIPBaS;w82c-JBf#;S*MqxJW~MmXR}4xNOIMFIeOE@~|fz_*x)!aK{kF zFCf_~K)Px@RLBW3M`va7L#yTialK#MkKzbl7vuaM5;DDR7Q`Gld-s$}E~&(`OLT8M zy}?ew@Pt}K%m?Uv&NLAWh+ym6%#=Qn1>D?Yln!=i9$_o6i0&Z6e{!`^VslK}T zhQ@%P<~b`D4iQejuV6sHJtxseEDE6yk&|x>)S6Tk%(Q@H+AtYBjzu~_NqVxDKGjn| z18oK<^M9V)BvGl`41K6T|FJ)t!p;0Brq3ylsJsw&o{SxpRMFi+wYZ?cyW*E z)GwTGptgi+G-uYAD^pG)ow$*af(;tNn1_x zEU1eJvfpw$obVkDNIQoyX|&9jC^8}s`vp`C+2T`XD+cxm;@1}hi-i^iV|+h+wcb5q z@jO<>Gc5N5(`fCcy5Lf|4gTej^SaGtB0%MaO46|QMxk6%m)fW4@iLHLY;xvSVYnbE z@i)kE|F#tEw3VqkimCFd-QUonqoX71A&B{!ESdX+FrCtkt3Sf}s<|j~FP?W1UfPjB z5;w7&Ma|nTfDBa4FT7a=;R3662AH2W)v&Kagf=AHySr~b;Zy*#QTLnrTOwoY8W?y6 zPia!xd?m~Msx=gJf1j0|P#MjNh5I@gAL!|&@%;k}l@-?92bBMy?c|km#4==)k0Pcw zOAAn*MWvwvbQWZruwhL7*;C(gp1>JP_+nkp07~sTCjXCA|p% zfrY*n0dcB|%~I3A3ubM2kj)h@1i5V)4e+a2>aK2Sc(!~z%&i{^Mg%9I}Jnk@>;NRUQ7}(~IRS&yr~9PeYuP7??Feis%>$(`7!w%(r~9#own)Gv%;{cHVd@L94z$UX z&k2}^5wN(xmQ8-;U1nE=tjwz@Pn+tACw+sc>-HGf+*{~AQJTopY?mGM7-zTKkdgBz zH(v#IN%Bkd<~#PX{+&=}EBkeuBO#I9ss}P)RmUK-imQTBSC+$N*ED6sOD+h?BgO1= zX&Yi-voYH<%Nd*Np>bW%Y=lkw}H<(uO~(iPQKO=_Pv0q0i4-v@+eFI8nlLK z)5UK7elASCZd=jIZfq~d)pcs}GUy<1;P{?oqFOkB&m&P-au#vCm4O|1s*vLZheFJ`N8+iD6+CF=MNW{Kw(Dto*>MZt zA?@lik!eZImWE2qMM*k1Srzzun@%`;DTdhNmw5YwS+VTNeg;n0RxHP-alUpIeRfq_ zX}|um+JOJ=gu-u(SoA;a`n|7)_KvL-)l7FFFN`;Ex0|w~JixRW1oK$o2*MpBc8E_Cn2Fk+(u|9yci&Org0>l$yZGe^@l5ap>vhvnu#uKvjSw}J6lDZD@Q z4ldMaKk6ELd9DhY%&mWNO#pU*TNqH8fm_3|%f9;zkAJR)o5f=ez59_u6MgSWef2Zp! z%aWplV6WiZt5jM{La;k94t~FDd2#zv5TY4BuDFBn-uc2*^;%L}D}%s(jLXiJOZZmc z6EJ+TVIkxsNm{}WE#xZe#YQU~?w#1XT!_H;H~4YUZaIgqNJO(uMtSA#%C!45@V_iM zG2DF{`<9lv&Ww*$opTKF0bZXmU~;va_%vb@em3MmlVwgD@{#)aV>uLjAK;G3x|ql; zvg%jPl?Ip=pYCJhQL;@lW}?>cHdqFBq$FjI2m)yJG6UwVmxzS0m*sRAtQmAPYw}B3 zK|G~G1}aX1+WUcX7ArfZngN2pqLu*OGTOi!Y24t5tU4k29b}y;^PqR0v>3jb=HuTI}&<`Aig7i`XfO20U~h01*DO_i{?i-wio3`6jo`6(ANS z#5Fp|tHAveF+1XK+-Sz?G?yr7$fbep0d5l(h|gsE8JiRw8_VUJwW%S^V(L*hmfELt zmE;J9Y|@nFUJbG7yCszP3c*$2fF}NXa5QevUJ58kf1sAOZbMUocNqdte*C`ss9z)np;CbBW_#`3>Z?|w^oMAlBJ=sz8r)Ke z2$eNyQA56Rv_eW0opxu0w0(m3k@^6;@pw~a1~$DU2Ue1h$HUzFmKM2sILETq%9l83 zQLMzIe$JXw+p$+3 z!6NdO7){sfPI~Ev><+G+@G864v4xpjpbnKfC*3#*cQZx@Rsc*O8%JSLB~?2OJDUQ^ zU4q5R(t<;j#^7XdK`Whgt}-ex+KXIC>+C$k0{7@mYb`nPYKaZU&=}5il#+I$?cW1p zSU~?Hx8@-gmmwgjz{1wa4xC#A+~Ihv7WH%!ZULM@{yS|~t_4f3hO+ZeG+Q~qO>4Hx zjol4oBxHXY_Ie!Dno<~BmDfF%_v8?;(23ZjtI2a}1^+Q8$J&2$3|rDuZ^VRQyrJIO zEuUL){>D^mLLPWgxkRb2!kB!6%Fi14LrsUVjibYyYW{zO{4@yzzf~+=#ZugpZh_ zHOFzfxAIdg&CJ!_KaUZd$w8Y;fEgdi;S}3zuNsy$rr+T6GaR3F1DUMXj9r}jcOWf(sh@M>6&eqgR}E=Z8(^TxnA}+OrzEdO%~brVH**lAtyKpuLC!1f zeiqU|y48Erq{GY@Lk{Cd(1WO;Ba6{oUHQ{Ma4;e7B% zR8k@;O;AVdfO$rKLu%(|X6CYhbv|JVzLQ%teeqjfz_WIDJzVrez9gMr)BoB*7^s)myFh@9rzva(|#_^$Ihb&m9Y3K&193O_m85mM(s z|2pFxQE9}LM&8F)>2rEk6}To!o4CNx=84JQz~75Il)v5Q=}4a#uZfg!`7kkCNW;^j zTWuFrgGbX?1MADhDcNb?6t~n+VjG}X_WE1VzOl90^>P*)c`>7yXNZ6dOb$KKD%XA> zPJz%+!Rd1?eDH0@KDDYpXRar&(Cye}(?-Huk*81Uh zhVPagb@`mMlZ>LYkA59YSzxTaC;NRftsD0hg4-oIRxE?zG0E6c6# zTWPn(QotT+a`LoMfM(=%xhewku=Ye=w5Ch z@jrZ)91Qt@H$e+Y(0?HF%{ABW9OHpGJ&az(9S3G>rhNP4XDh}5p`KwSxo@lr4Hq8N zagC`eS)$qS7~dK1uZ%@^Zm2xM@e_j)1Qex7r%XMVobtAcxD;N2Gp$*9)Z+v5oVWcK zn#|wTLs*X8bMFvZ2S}w;0S1}!;r2x-7t#<~lYez`>yUEKP9R)o8vLBaXUUicZ&alR`PB;WxN{BTGM- z=su~3w`UuP1ku87cot^Xcjl$E{$rH-$Agc)QAy_ zHH+zxV^d{jn3LP=Q%=GpW*-$LTIZEtF!>v4BT~zBb?X?5tl3m)Of+0X7Ok5of{)D^ zNghWfZ;K0w(!CF&AC+$i2<<4udjU{wD83nRN1`M5q^5 zeEIDeF(7hjHqBjh6T!caCqu#oTOx@5zG0=eJiH*uY`&-5?%&d-@@ZL~TusvPV_|A& zE5;1|5d*)r@FV7z{fO24jjOIzsX2Ru0)r@r-OuKx^%vX%cF!?^G&jf&+@Nq>%hv`C zwkSxl_h&vM3T?+n8lsUdc`CBx4m1y*@rQPP)!2*XCfpA0pX0>Hy=1r%o1)F^TaqqQ zl4d4DDn#UkwOpVZrjPIeO?T=MuaNWtNjzbSgKZ3(FaPmG-XJS444$9x z>3Bh{HNwGzRt4e*zyB9_WVL`iKMU_^P&B``PkiQ0{qi>e-E6Lx0FAcn@7K=Edb~^# zquHrATuIy=Xp{f8+IyuJ-|i6p9Y`has7|6G>%64Vb(EFp5MHbj`!YOmSCMd|N+cja1w@^xky-df}@Y89MQ={V`OPwF|^D89CyH2TWf@ zUa^x-;FblakM5WU76+Li6+hiPxHs07UQ=54633`h+jfzsx?RiI`5BI~kR6r-Qn2<| z^(&Hn6%tsymR<6X;BLC*cK_?epYe>0bTIDS8bka<^h}KNdM9tGm&!p+z6%9bYNi~Y<7gVgVV;Z}Ea zT1R^b2)GFq?}6fnn?Hlba_CR>mt6m4kAG2UA-w*IKI<(HvY+ZixVG5fUO2m|PJDjY zLPX!guTa_+Qt2J37{&q4Q)v0EPn>@WQQv^t*5bd~{B8%oE%EyWw`eGiN;0lm4tld6 z(}Jy{Tk-&W|FvOYy5X!Z2s7R7xzfd#dPE!!djAK*9_z7}N7T3Z=0xbTGdz^>^jvB# zcTZ5AmHzV={}t6zQ9}NQNZII-jdmt|c9lKW>Fz{>N*1a95P?{Jt1wf`4G-G=~{?vhMm9xJo_gW zB%}>kZWam z|B@L_+jUO?)oO9dxqk@nzbe2(t?)!Q{6ECxe>*AA2k`S7hV^es{r|B*$o5&pxgsq) zB>>VETDj7y0^kX4>}nlI%Gye18)Bv0#?q$ik9GjNqe<=AN4acA(>}1kTD~cuBmh8) zc5@)vpMmY!D;g^zi3?d0QEUU`GM?uL_bjhcC*Sdg-5`?K0#-1ye8 z6qkxao@Mo2F0{!c2Py-N%Ov|F&8-0-3@ z0o<@_PmZHX5bJhGi0$k~uHI2d?v6V*oVL-xEP1n5hr=ag zYc?rhGT#W&K}G}Z(cXjRt3*Bn!(4l8`DF_PW(r%w1}wh(gg)WFkFrzypo{$Nxnk9@ ze*XsjODw72W|=a7?xiw)*7m7ZYx2XT1_-^t`O%F$`%8q2S}x6bR}>~4%56WU67lPC z8r2)l6*6cY@M;Xp5h!xe^-S^ge7uknkCTu3*z!$QW@gtW^^FwG&?)gwNtQu@=Cdme z&bvA4_@DpKa{c%FzzdTT=)2|j6*Uw5e}Cd}KqF3lSo5sanga+&nnq%U0l2`c%5WIF zp?PONn3Lr~*qa_*tnj(CUKbRbWf;^FDuDG&Uf%;SIhL8Rx`8rU>cS?PR^!Q=(5daYK^oJ-hW?@iqmG0kcA^ZS>fqn=jM%)a_E>dF$Ekpo- z4+0X~IB@|aFS6uKAS)p}@jAI)hEg}gZG?V!z(j^FPebw!`9FY?-;=}&M9VZ9Xc(=@ z?cxGkLZ-gIPK^*tI$@_mDAgq*lUTNIV}UTl%6KoM5;n#`Zh48-)5peSya_<2Ru6yR zg-tQ%e@Unb>M5QLtriVD)T($@GhH%U5xDU#>j;u{s}xF>5bsIK#jB#f5#Is=qW=#7 zB|zH0eb#o1K)?E>hH0NY!mr2{41%-hm*KD|{EE7eby1x?m(l`XH=Pzk zSzGCQmG?n9xuhOyVM{BBspCN%9#ZX%+K-Zl&W9q?E8n{2?e11GY(SsC=fU$rnZ0iX zr_4c7ur{3?y<<#nSu?-Gm@lzpX$Vw%(>q;2I%7-2?A2ZZE{L4vMBwjb%gS!iA85tV zEWgF*jc_acf$?T$Z1B7iM7J*rJDp$ELsdL34#5j!<~TyW%oNq50B965-B$`^r#GjdP`CyJ6X-kmb7?iGez>S8`Nc z>>UzFml-3g4!y5+;HB(xS`B5W)?*yOn_C^3?PumnmIx@`#68qF_-whi`?qc?hm(y2 zH4-w2tys-^05d*dsCqgQ3;1+TF@2O*&}UM<;6mhXSx>p*I*q_B!i{x{aB>^SQA^9< z1Vgf@z_S9V-WqN)5viHVH+CDFyOVimlc zNLhBZseaJ7xb0lEwRd`!Pf=+F)X1wqpCsZWVBeZ411&}jJV4&l_P>piC_6`fh`Cpt z_q9@=jQBdy&m?Mmy!&j;K`Gu^;19N-P!G?Gpx zkBbr>C=)CF__B}xMMZ*xQ1l>qA+J+tH?DYU>LIL;N2a~^0XF0Gi{B;gi^D3{b{QpOMWq88C*{db!jR&MW)S-er;8g7ypy6C zkRqDDXmB+gLP*rHc&l1t=40Gr_N~64;c5@}vo!L6za!T_@*ViW1%> z)|`rL&KZDvMM!vk%MTB)_WpeFNIPpnlJVYe4y**&2cwsQQi+HlW7*vI9F12&8-&ua zu6>52q;xLkD1^o-Dv6x6G-j~(7r!qySiRAz3SbSF?~?E1$G&(3744oy^4tInw>mWfbq;KIlT2p7QKQv3=KX+_uZZMfFej}oJq1{A&H9<}YhOmnNt?6vf}-k-bi?s5 zN~By1?f(tmo_q}u7Qikul&%Iv_X<24xr=Y3Q1Gu<8Ky254HltsH9_rF4APEh#Bc>9 zQHPAy7*1~t#VT1Nmnk5?>m9*=USr&0+How-kj~RF&0iE;UzQ;X;fH-odOx4otb0## zxk_?AtCI)#aB{xQ%rGbJ$9up(0h=dKJXnMz>g-n*6$Xa}>qz2+{i%4_SysFh+nN}p z3r_jkqMhxjfD@8c&KDSkhY(ByRCpp6vRYJ5p>NT^%9yqKF@Hq;S1%ouNnMKei- zXAay$#EP3n`>x*|d#o{hVhF&;+~%ZqMzw94-iEjnJCju8CQ}6B^SGd8DAqD-w|;Ri z5NYcDNC7}bAEm}-%qcI!HK&o$*mQ+*UvN;f6%j&NDE5|q#IO^6IpZ$gdsFG^(WxVE z#)5{OyqH8zWw8!r;)lPFr#G)s0@FT0VGKxse^;jD<4pjxhTZ*jogH_vg zONhjUYG)f?!>fFW``v{Pd`Em8XLC*_4P^DV0ACfKa^*wwJe3gO4E7l$D@p*SQ6S!plS23^vFJXQu1d7ys0HG*tO>tCcgUt(I3GLvj)1Rf{pUBk|Y%~ z6S8!8-9*lnx^E4XrrsX;UhE=cCa4UPoYmAaIk&(-jM6n1MUa?XKU+DC#t+gif4|!2xGsMJ|TAqJZL`K{96x1UA^YMgs0@NU;2W*|o1R7LKZ0 zRKC*LKC~20|CaDJiaza66G$(WEI>`KKsJQ)(b*_Tp=v#OVA{x$g7)zxy2YB&W;Na= z*-*Neq&`Z54o!qZt-IvUa)#o~$z2CYqyi|&1|UP#sN z9h#Lq7qy~)VW8KO8WVrZD?hrbF|p+pJ9Mn4*a}dg;7(gNwciGEA_Uzrm>ynFAUw*l zv_6c_g4n@X7Z>zCmx#gz_eIlZraUe@lkfDSEG`i_f3tf|cB+3$Swm$P0B+0oBJ>f0 z6b9|+#JbN)uos~zx_CIw#~#*85ylHxKZ`4qLWr5K*@~vcMEzr@}WnYW_*TpO(?{h zPqX%{7-V_rbr0FO)>qSUWw=nheZY)0CL%%RDcG^ARJ<#%7P`kx3_unB8G?k#CS+6Wj!xqv>Uys1e$0J? zm4R1q;Mq3djXm!2BKL5TM#w6r0~cm;>?l>bmfZcA%WgC7fNXX3iiMblzubitI$sh7HbV4I9?(VG@5_yl`eEfg3X|teFlBF1akcI2= zPIX@fw=$f24~}R3-1ZAx@K{4@JT623zQQ3*pi@qXJy4ada6A0*N!vpiH!R`^EYjp? ze?RkoXxb$r=nPlOX>h-{errcKI6uXg&uofA5^e>5Jh;o#5)TYGgwZ(YY0~QpcVA-? zBXLVcPOaDSv5KtSJ<~r?rqnnvpK?t3>U0${%&XZHv1KMTob?XQNm!_>u#7umGIaJL z-53l?)nm$<-?v8Z3c(?owQ&$>|9yr_68?=QRQ8dzvT3-KZb!{rwHqm&Tlx=So1lfQ z!IsilCIhn8=?n?yazo$P(*(dMBQci^ zNUn?wdPYBI)n3tMdsToQ}G*q|fWsM*;HBAuRScq$#+0o$gI zzd+OjvA0$ur#r@SPg#!7k5BMxm2B1Rr>-&(Qui7Fs_}{j zB-WAFp(`xTZ@whN`$^$1-WlFAn?>dC-?ZXuimAQ$fD||)bE-{=f?{75N+ppG){ym~ z8Y};;71f1bsqZxme3XUqgsro^E+Ms)(@@RXG-Uj^{~Ps3KQQpYu;IbY--XC(;uX`r zw8R$(oSuwekWw$+dnrORxTlB~2ugxC~iZ&IWovy{EZnp4tek`liqascd1?=cLA z1DJwd;DykvZ^4w?N|lChZrtDx(L1EEsF!Nv00U|H^R_~I!|y#ZO|Kl_kp;a$q6J4b zxC_;0TTfH`29`v}7+dxj#VF~cUhX2G8oW)&S8TZ8Xe4@2MA5ia^CzR+21o-uraEa$ z)fQ_&U0&gb2otx)o9g%g_#UY%!Lm>i!`&T!5pfI5vaNOn^#0FaRsLJ*ndhQd2`2Hb zkb<8vWm`S{T*&p_0~8P2eXHrMG%6K;rN1l)g|RZF!$$y;RLiahb&q9GD!RHw`UJ3{&nX(4WuiBZ0- z>pC&~c!@_a+@?%_X!Y)d0pv$Rft3Qd7%)Od|Jc<|Jl1IaykrBq4xb{P1fOPSFC>K^ z14PumA~tSYDvIuoYn}LN#;wL;AD69WM%4nhRiRQgSIrW;%|Xgd!TPtj5!{cM^-$ut z<_e^#lL&PQ-O-VQzWd5xzHU zA7fw}fVt1;5fiG-f2cNNIUihH2l5$g1w!+llt=r-cD$6oU6^QW z^6elYCs`pcbcA@3LNwxgEYx!#)MhfWeb@QR?Ql) z=`*koMY-iS!(s^;gnrU^_jGUzj?5> zJ{J1wKd7#X70sV?B#gzO6i*M`xYNBHTrb9tR^5)0J!bd|K@4VFW3Er1`8ds=uf1;v zn41B5m`gT3v>xHy`hvNDw<8^qve(p=-CQXij%W>ncH)y_zJZkpd|3}?SMEPqJz>HiT)X(9fb;ChkoH^qNmAcGMPu`Grmum$3n~ zPd9pGQ9zz;4n1KNDL_6hEsd@ysoB}hyak&vOlt$U+Qyg4T!wS45$E({Bz7KWmcl17)aHgbd$tCEYg zM=J<{gCiB@{AMnRGNB5dZ=GXHbp5Gdn2RjdNAa>X5ieDpJN%7DsmD((8kTk~Z(R2V z8~&cR5MmB|?w78mcN2ZN#kv&~;g<0+BPzqUPk`Sy)z>g^6u>tAFr{RSox`D&y8ixu zP;wgtV=!pGPHNMy)+7Tqd$UH)>iJyEMVdIUs$2VP z`ETq{Gsqm>MNi)!`Zh@-pz!wr|KxT^S9?AAja4;KV5xQU<Nh-TTk$g#sCVLG z!Y4kgQi_8(nlx>v9AZ*aJoY;9m%KYz>3fdJ$=dR}0mZR(()8be4d5)d6okp` zh*+Rc5~3&H)_-d~bmTSl)>LHpenE!N6klaOES3nKl{oNlkrS`n9mtg+Q*u?1H4?Ka#p~7K|CR%xyeS9)9ru_Klf2VB zO!W7V&s6e?AoVN~uN6}mv|hZxH+W=rFq?B1w(`6EJJz2J$ujY!wi5^^b&3)ci*h4Y z8m{WUGtk#f$_lIo3vxj7d#eI6yo=)m|G3#n;I+4y2(d~J-Bcu{HRMVP^idbNo`%@o zFrtD2m+5zNp)c;XybF4WNUt#>vZB^6TTR1urH{zE)tZ((|6@3#8N<8goyXeXywav8 zcf>v?F=gAr6r_@w!iLDp=9U-Y!>r{(oG+u(!n704^k&L4vA)MhJYqmwYF_N*Rn$p{ z-G}#bdJ5d&QHRf`s!`u$|Ma9X5rMmAEHBVgfDbz0+)eU*xk*H-C1@*9R!tBCHLtjYHb`6!%)3E`d5JpYgc2ihEmjP1X_f zF&b;$bZ|oQMPj!Qz-%7>|~8P@dzmf z*-|N~F&(O_`=7SKZK^0^CfvHcG??I?@N@;`>)@U7fZ3#3Z)$Sd0wd_D17Zy%OjBMM z@Bm-H`s9A~uqxfi$9oxQu2SVaN0DGwDiZ%x*(#6W8tJQ|`B{Z6@jJ{8~Z<#IRlUcnzdA2tFxDf@s*QeY$vCJN9= z#0n)Y_h4=;-W%(crcRF668|WJ=PtLbU=^Gx_S5~{00&R4gxdtc1F4-ottLb z%Zdpj$ia~BmJ&!xfctsqMc2b11YVUvVncBJ%h%v(X%r?<6wUYk%CN;4+bEaS&p#eACG^%Cklc0ymzS?!dj{;K-*k)p zG@*8VEanDX%$#sJ9Nhtwjddjt3(lckiMm0Mt{P2HpXJ5PFSeaYRUHPC05DT|Q(pVA zo=j_1ydUgvLR}T30VoABZZ1|eWQ!$Ix{-xRG4eW}x9qvD4}g0()%A@}5KmMC}7TDkpN3FS*jIfd{u zNTl(RXYL(cq%o}_1KqxB&2}Xe~(R>+?D{mHrJ@NYig>x?keu_=;kie;j@#F^<=6KZb z0b;GUN@p6l0o>bj*5YEY!4GyHd1Gz`NJB z_0PQ7v^2#~eQ_QlI1@Z{f5Y;uo~hltA#u0KA6cs+o^XEhtXvz~67hBE*+bj) zU*2|&dX#?+4)2RboXvK8!R?op!GAjSo`1ZK>Zwa0Fn&!&yMY9C{4`8xRy10lk=; zOiF_^oP?$}LE9zQj8$F{k*6B18%G5Ew<8sQ|N35_^9~TmkGIs#MEgNedT)sO(sQwh zPPri2R42DE@SYgh7cJ}nfdLQ@`!Fud5yFG89n1KeOpG-WM&CY~nu9o_7!$?Yh`a3< zZG!3^K)KeXnej1I5#-AwNw2p>K~(PH;U8F6i>fRjf@(ANB?`<(-S70X9`6IPE1Qzb5uVR+@z zypu~*yg(yKCT8ShM8c%zH*aqj!#uvWZtnnlf0u4TH6h`7nF^IfR_V6^>94F2!OfrB zujkj;lnkkQl$Jo^s_s%=py9->>AnjQ)#62bS%p|yS}68c(Ln8NS`Jb@dACvC$ZLdg zj$sXa6yaC9Hyb)qDQe45cp`H=;kE=2Y((-1xt(RqgcBv}@}q)s6mOI5yt74xw5<_A zphW?Wqa*8Y8bI{7T>Xn9X`jD1Gckp3ZLg4d=@PaJ$C5c3*?d)Zm;hh$Ua7wV7(!(u zbKIW8oSwd)xdMk=diLwhx_;(BvU;^u1uQB3A*!NaK+0XhwjjBFi)Ovm zawSUv4O^djGfbtDJ4oh<(@kJhSWEX~&tyU}4leJo(Awp=Qn%5yCr1~ApHeDfIQloc z3YAY348UGWtgK5^LOP|}K|~dj0WGkZ@oSm82IU!nbFevDc;|#7D4rXSrBsQfs*f$E zq5J}vCOzNpmP)tj^x*WA(uQ1t_KC8wC6;hSd`7$)hP)ic(zr($2q%yESR?@)&ceuc z7E;#I3SA~WG!eunF*ujC`T82z2g2)K*@wU!KHQr(QXzthr-X+8?~NH#1l*Vbv^V1| zd*h1)IVWd#sQt2+pbPDZ=-FPo5AH!?!Q9|`i9J)P!3wf(;OC7@`Bic=u59m@H&YmI z(P&Q3)34`5Mu|iFJ{^Uy*ck}V!77Fb7{Xi)XAoZ{S@hO_zQjwp`fjRu0j|I!sp*}3 z0&KOY1{QRp=*CgN9Yp-?@^@k^4zLO>$+3T(l{kwT6bc{S=~faCo6=7Ga<0S-N50SMgfYF7g6O*?&`YZ>kVF3ZlmR>DE7? zz;=cUr)wP1{mD`!O~?HYFzV0I23-%#K{pUj=-F5N*AqMAj}k0s+xfd=m8V z#3uwhsE`JnS!=cEINT|qY^FelD;NY&4L>$IeE~iUyY;#6TD5;CeNBMGO{IwM#YJ8Z z4Cd4rCeYHsqeJW{Q$96)$y6JH1{71ruKo5m*ju^K1!3)eb5 zLX^eJe&@0YxdjpOvcZ$JxQ8-{HzA@OL$|z^ZHU0f(KRWCl!C^?(R6XKZ;)16YS#$25oucB9UX zT%q%X_!?R&QR6A^5Ii3_bEL;H(=E={=}?nH5tQ)*OLH?Ro^qqz8Iv}BZ{E?}YiYK* zRu(KRRNIGp$ng2rH~&42bGr6prkKbZZYJ<76(rB=i%dJFGc)PHRM*EaS7q->9Wz9b zCJ-TOiaD1Kk-w5VbI8HvN5hHXV=09KF54w`%Kr~Pj{gOqBVTLF8oRj7c1^~beWa|~ zl4^P~k!)U_cnquf#^=*upzpF2G%8fzFd?6i$PT!>UlO;#5+ zt;$yv6;n6Y%#QWL+T?Bbv4P0kerG-x-5VSs#Kwg1C3B^{Y)>&1Tt--W$JZRuKx@V) z@NPdZ_Q4G_AX#JS60*r|D&3WwOh_?Z_61HPNy3tfO1^WJ-*aY?eF~AnV;}T=0(d+r zWr1XP+dF1lU^i7{5j;)`r2K#}a>!ycDclbR`Rp|2`ge@2nwNd8n$r#k^e#2oV(P=$ zT_>k*mcY0)jD6A&b&5p0N7nGTe8OT@0(EBuH?1zLADnwA%%0NU&PHze5(I=Goxa)n ztOrny(y4PRM=|x<<9aVPG`)_c**!0t!?f~|iDi!?IgHrA`_0A0qf5)i(%{uG)8ZxG zF|;a^Q`gO0g)NYabedtkUPtgxG~Um$LSvc&&~5XcBpE4hZ3M`}gJHKgnugiz1%l9M z+0lW&sp{RH=heygQ^2I!uFfbCwL(5n9uB@Qk9$2ovmkgW?d}?0;F^+g zT|^mmb)EO4KPp8TPNPJ5T+^-l~ z5-*@;;hzX{=}lmrG#Pt~Jg*g5_=!s_dyAzJu3?18Poud|H)wSs4*g=zJq1E>0=0N zEGLMh*V(b$rs0FsA5wJ94MCdkBlFmepUMQ;rZTp~uc9IdjsPa{2#FcOI1%%O}KyJnGF7^jncyXAO$H zosrrI3>;;AMB65W7M{cp>L9MRnvv8ykAK$f(=YfYBoZ63&-0Y9Ne^*z4+f6PjG0qS z{bWDY_7We{JCL;#9@y-#7(`pScTmopTpPZ%W1`;k?22lMeAyQ*Rap0>)xm1M!`N*Z ze{T!wD9`j1b7w@aP&^MKlf)NmTDpV~(H4UqhFssih+(vx1F$X1Y!;V)j?+@8|F;pbt))ujC}7`k<$`5jm4-r@F9_=Z05Di&2m~6~Qqm@Kk~vs9amkTF&=OVjuDOnPPL1BasVjSV^Ba}oWwm)NQji|g zUN2zn*go0e8{hvmLlj$OB5hc7$QBvN2S{)mUnzQo8&Zrx0WlaX?L6nnUANsR5indyJ#%QD5lN=XoL69iCl?FT2%SlS!uz_HLw8cD=b!~wT*Ig_feYHBE7z6#nP zX=$QfzytNeD_5Xu=TP+ScV-` zWO%`5XohdCQ=P=v0EWkf>W!z6aMo-t7%2y`lzAjPXjCi4ddPT2ELv~-t+~)no1tz~3j9LV$b#Ij#uen_ucMsX$+%ro3S|>p03bRon1=Lq0SAgk z>0FhbsvIP_vA4c9y5FbP-;EZ}UFHtn3UCZIqIpAAHM#N`BGBT(Q*_j^)BUAc2`@~t zVxoAcad;aYVn@EX=n=4lc|r-7|Jn~;T;L2n^bCqyf#eDA*u}AcWE0l%V?_dxc>#sC zsqqNso;tyl?Q9rB>w#VX{ zwG;XQ*fag8PZ^7)eRT&rB|!8}Zx~;sS#Y?)Q9NIml+P`r^JSSqw=Gkd69GNa*Hftt z&kN-ut3bbKxs}>rR#%nM0g(45?b2Q>k<6H@DquNzA29ZoU$7%-a^W>uB(QGcNDokp zslnZcd(fYorCeXnoK29k8itnZGyDFVuB1Q%mCp}m>T@|NXKmF#9=-Z>t0uN^q-Iys z$PEUp3+sFl+Qbl1aCB|$n{%J@DZ?g=&85U2Ubwe>%H(CvD7dMAZL2C%NgRtH=jvJR zdbt1bTFM0CV*co=-to3*d@}KcE1awjAMCe8HyWNB@udEXfwxQ7aeJVtA1lBBS*DRc zPg+Su@;2xbtvjWBt@g-ACsnq$({n6&-S>5^Ne$o);$%Y4Xm~G;25n2nlY4VI&=}*U?c{x8EO~v8#)VMGc<7KuV zvRWmbxXXU8!u^R(>JaXq3xyIe&7@AuHmsT~aRLfo#Jzx~(Lbez5K1i2KZ_m* zI9M&7c~>+LJS<7JsGuwTHGy?n*Y!T1Hmm&jY@|cpSfXj%QbG*ok&Vy*>88~W%SNv%b_MAXtAzAjS&X_bg+$d&t((JgQ0*l2)iGh9O-^42NdT{sah7U#s2C^vU}`MrE4Hb@t2 zs>F&9w>JyF%_xqhqoH>zOzd`?kpp^myHy#KSN8)XSOP+g;>N4#C;kxb9ir- z5XC$_-uSlIIrA*V_4-KYiYRy7DIj{K%HczlhjcZWlLx+Xb))`EgPK++ z(S#QOrL5t>v36wO0EikKL*kRt(+os?umoFmf=7)YiE~l!@H?C^GuhI6&mc@q8-XfCi}Zi5&KvB*JxS~U>zO7zJ9wHdpKZc*qZ;y?pf!XU~Ubx-asJkF4Wd-q5Cy z>Us;9MvTzWLwH8D1FSsWxQ|9xtk*UEjsj48N}zBW&9R@9_gB3^Jvk*v=W@?%WzNL< zfBgdd#s+lB#1S~A4c<&N4!@Lxy!#D~Z!l!o#m3`004Q#!Q1~Kn=88108=&#|u&rXfUGk=w#iGUlK z-G}S<%V`P%8}3jbu}BC8JHWgbpi9Gz5qWz4Eh^?|D5`|BMn`XK`HEgFE#@btYQ8cG z)L)`ZE!oEnsP%3qCMvg~Mpd+nxfa)V9PJ|`OD+y_duKlK__EprR<2X^8TO){U zpJ26;A68gL{;#PH>2wU^=&u3{eTu;-eoNEL%@}iBM2PB(Js1k}Q_NeU`=n@C-+$^n zvnCfMGAk8tCG{-_5rFWhtw6xi!?iwCP0g*cZ-;FmDQCNwuV1UTiVifoiV-AvfAq(w zWUOO-&QXGD&OvbNfAXg&tYD>TuFF7qraE0C!t(ULuSU;=Xy1~|g-O>9@C_hx1t3e^ zv_rj)q3B3w!JK?a{a?QFe6^}b>dx=Jmm}|TFkk%Hn4VXE+z2&*Y;p`E&>UGDw+jxf zzRW(7T2^AJxVN(^YNP|07mRRfE4v^galz2Asr0lLnZ&P?S?$v&02okMa6tcb@iMiv zo(D76GT2h5Y~dcZD`-7@V?JDZ?0xh);8BH^j3IOxHP=s*$wXUuQ7uhWls^qm3YU@7 z;C+MQ)y;$nJH0X;COXdA%6^_;?tU@P@E8S!kDvOTk~yLnzll7zU#?0U@S-EJWZ2IJ5uRqrbg)GS+z{gip6ng62?;?t&JG1rmLqu zENux3-sFcuKl4!&1gL{Kw5SDdBLicaBQz85+JF?e*5%(cL?M!j24{fr*}7=R+bb(Z zF0!lPc<9KZKf7C214JnTea;r`778?(gH7g_R%_KYVnZ(V{` zlrOhqzwwt8`$tP9Z>IO88W{((*3af+&lX-`H$BL~+K5O_;28OAg(<0HeE&z5R43sz zTWFv+Uj1oji(DeKP46I7R8$VQY2t6X)XF=>hJr->zZ!MV$GXX;rK&6RdXKHa1^m_&lINBGxqKL=uqFrg(#KrDd+G1Hxg_ z>gSH0JaFo7rWKF@;?@*_uy$aP{=SDi%w+4S&hy$ExLNVF^4nH_g5~^7CPhnC#_tfE zQNGkK2rrbD&b--^@=26s{d8}p5z;4I4DcCH6-JPdFXEI=3-CeMQv#ha-8q;50?#fu zTLyV%?2);rP{%}!h_)VcLB`=!GQU|mW#|KM@ugf>yQ^+N0-_yX5xzl=GS)6=c%bTf zfUx?TazO;FF)Bfes|(>@dxvx=^c%6u&|u40Pmx>mvu~1+{^nd&DmMlgaWH0*M3sXq z@=Oa$cxL{9W~8dB-k`n@@KZ*`sNm!A*Hgy-fQb#%!1*EUQL~H&jjIQ4tU!HRe zQSEc*Mb9Eeu|i%5?STt!?y|p@&Q{+~Hkh2NteRB-12VBB*x!)9OC0a@ZA{lSHT3{4u|LPfH5hx2+tPBYlLwgmx*J~8Cx zOg7%qx-=8O^%p#1MrIsV^BFn(&!KP+4z-(}gCB?5k2V@@pBg@E0OhJ~&RD*3UGT#J zz*-#LdxQ&o%_1zsyXp%CQm1T8Zn2NX^1G`!%-@_O81UujVlujE8gC<&i$ZnI-2&r- zpt2rgQ>N~jZjgko8h9EmDd?My{ey^8Ti(~^pO*rBvYbj5Y-1Alft*T5-t4rws|21-5CpadFYp zNH*1#EB16^o$P{BNOi;~SH%dO8C1Je0IA5Q2Zh zf(N{E4jD!7YrSRCTsD1MY@ETZP^J~1`)LaSQ1&Uwo&u%WXmnJF5U#0N-lFm4B8edUVdDb;knb*ctN>fAE5Tv}m-jHKu^3PN#VURw3lv;*oaW zG3;?qR-av#sgm0|UGst*AK){(9Ue__BF6H-f-R%UQCdc5@5eo~^+Uj9YSShw9ud5? z%eYpJl?_G}FC_0v3?nTJJ!oEqi#I120h|fx$@Y`mEOztsk1(#L0o=Fa!R2k^Id)1F z5j;^j&+tFGJ&c0GjK}euiu^dNX`bg)z;#mN=vq80UmjblftVoYhlwIR$9@0bU9}x zi!2&HHiPOgM)|I37{@;OqGa$Lo~YyYHcn5Tg$6oxjXU38S}`7jAtWO{H$0UN9I4Cw zMmP+Ls*_c9t-WssnA}?LP)Z-Uxohc>LrGLhxRK<^NK@{Q!5J_Yvitx2_{3PM%- zd$51o=VWRi7!_qF?0{Z5AoVi=V;X3&zRekE`=Vp%*mu{qVXVrRLRxZSZ>Rp)a85tJtLC zVEsjpb$!*6q!oNMe?eum$?8;MJ7Y30HTyS6z5D0K7R|$+eh!)Mb-M&^H$U&??ZS=`(Quj;=hGpT9JiC} zp`O)zC!fCc4+VH<#eCJfRfwCso`6|RT6tL(oP)$%bpZCxX^5LJqwx&*9Z6?g(((C% zFg!!Tn3z3+Znv;E&YRAhgIOsTMxV8TkJ*qv9J8%Y;RO}vf=LbrOizxuxxgESN(>gqt+0K zAx%TSjBLa=MN3nPV#`+iB5khtn$l7(ZnM-B{Dyk+swh-S2HDwFrM8Bc)SlCsnRsmJ zC;XQVpU!A}--nu7xDB083y`Te>#}@xl;KbY4nG9?pB5n`xwvKF4te=^{?-O0w*$|b zQ^ecmgS>S(H@uH*rIkgq)6ZNkOR<{kv@Ja$z!dpNxRh{O&c`?Oca7jWM{Lh?Lj)L# zAJ^y&E?Zgzg?B(?r`46)KaOwzGq~D*1i>Su#zsao{QG%LDo-!?5@gf8U{xJ zGKFxI$vPaj44Nf%l_Hai&dJ#b2Cpqc0PXxVjZTc~hn({&V#!WRfNyDAdio>Ru}>vM z`Cm^k52I1`xYL-|uK&;15EOD;Ycm2X5}?;%L;_nn&HF0$_(OjoYdo@%F9576|FFCu z9NbGfjL5!Qg+9Ee{H9=Pw;UL(C`sSnt; zQPqTHS;t=BST7$d^lo&#*K!$}h;Hq1Xi+5ciM1&v#<_i2KSp=JlqJyywqJS(*J+)i zz-b)Y$Z@p05w&xnB?s10<=85htrvi`DV2h%ZG2^!EyL0jVXM$y4{B%Rn=F^{Y$kb~ z>%@bP-0pwWZ_j%Est9^1sx#2JT)uBo9=_RcyFy;!f%=x=$4dw<59jqq$Lay2wWv-m zqRHNy@&F#bBf9P;vkr{fd7vi^BvXU2hA)Q8^q=y+8Yc3L@Y8diL#Eo3xYPBz7iB3F zLcHR07@J}0Rh4WDz5@si*yJnWJU%=H0OdypoQ=gKqSV?H%d>_yXA74A8DpxU-o8yn zf@~Uf4=Qg5$RXf14AtfLe}M}d8YDbo%eNOKcGtYHU22Khx|XSf7l)~_a zQ4tmXg(7LMGbvAsfKB?(K?WT69es;1)kRC3sC)f!SB)FDD2HYW^22txO6WEIidg^a za{&}nkbo68hhhkXEj0RwR;PMh<*X)?p<22tX~eVLi< zjI5cgmepVfgNeA2B_&pKUJ?DMlI~oqgoxQ6@!TM~r}cZoaIO@#8G*<*v2Df&wF_!W z@IP%71u3JS_VaRX%gS0_`B@cW@6K4GxZti_X&=y2YNp7{csI{BJA#~XpMv0e9T)v^ z@2c@J1Zbun>NFU}? z(!aE+mU+nhLfRLJ`fWBv?W;BY93-)v^j&g8f&y1(@RdZY=giMHMPaCC{g~j)%ZNP2 zO>A7giVaP)l;kG77-ZM-w|g0JF}2^~ECXm+oNCL8?KzDZyhy&KelxYels7|gM21tT zeN%kY=oNw{UJSiId+UZ@0jC>ur*=QZ9|*CapqAWwG0se}(NC{_iR*cPC;&J>$G;>w zi1DF49MV$FrfI1FDS$Cr^Qpr0Xh$ZVA2og7s>-3p7t1DZ6<<1_k#rcicaqHg^@ zIIoR!<7;D8616JK-lBRooT-HI%?yNQwIaC_eDWrOOn<+`JUn4|c+z>2-h^gZ4{eE> z6Ll5a$)2$Q<4vJJM<@s*bJtXajqUWz(kNZh4Dn%VcjK`J|k~ zhA#0SHC?mMZn@3RwU^|rQ-j)-sjJ3(g<&2zr&+FyuUK94q;qn27=p!tRJXIcwnNBm z?lr0Fihq_QyA4Oy)B%QI$0n+FPX=u6Tr&|8xRm`k#WRMfNPsqq=wZi*bL=Tyg%kC!Y=I>5$%xd%kR#%nZuG;kc>~+i$oZAU${5F$^sBVT1Sn?j zs;AdC0vQp?QXt{a4iTW{+0E*WIi?aTyi(ke`(ab(+q1STH6^&3r)$2(w`gfC$R)cD zymw{7P6!GW18})b4uq0N$CWa4i09d6eSv*dmyPo(?Z0&T(v>06etGy(5;y*TC^1Mr z!40FaTgVY)ly(=1JKgxkI^U#R1*T05Q@y>I+Y*2x3|C?)$uD#-+$8E8XQi>#fMC8y z-|rsq*b~%6v*nykYu%#-%kf~^?ovlSmMA+?MB&RKR{}*q?!D5mg?RHnmzjPCj-Az;2`)9goD-q0~jhY8%NzY z2d&0Sj)5I0iqp%5w;DwnXaRqAm!Lu~bTbS*PA0xky#bzFc3=}-@Fr}dsU457Oka?s zU59*^>cb#Fk1(-L%b=`Y^w(DnSpD)E%+bniwAJkrk>i(Nm54nbf9iy0x)n-_w5ps| zJb=im6b);0uhRE>4zL!wA9TwvwW}B5R-?$t!@ffan3K64AQh73*|u|KV~JHRUj_>m z3%;by`zFqSseE&K%=s2B+*by#@~YKkx`W4KrlaFL%IgvN@F4m3hcLV zO7)P06lDB@F9l=~C9oraDroa+h8 zGubDp&Zx!lW0yeo8nzcUPF*p>bC2Fd*fmu;4kbziRv@eT6nk%_Yc2RIq(JZWdz4tF zg|q7Y{OwF1exr*+`bQ{>tL zIed#jTDlW)lkx(__oj$}X>k8(Ps&FN;+B@O;mXrKtqPGy;I0GJ*jnzYahWLowYa+L z$@$@A>FV>!Do#)eC0ZGI81nEbwr6rtX%J319Q0<)QdlxA0-KJlU*}2Wjc;#MuCo#s zRorrVr;qWXcooqUg1dJEupq2@9ltcGpyJBHoEX;#2&ZNU`!mdmtR--MpGM@!4oZ)w zqei@A)^4d$k_^F3{&&MqeF-Mhruzq?Q`?--Wd1-w4OyOy)j}e~i%nNp=X2-Dw*;-r zuIseOmqrX}-EI@skDE-VA-_t9pH0!`xL&mJ!z>@3=+r(u-xkbX%)+4+#v5iHMZjeF zsfw|X{81U853d@?aP`o!z}%?ZD=9S@t`up8zY*!7CM1S8`y&i^hRs_S4h{YluGq#$ zsG8H6rC=ZSl=ZKyy}%Fd$eMTdt{_m?fE?ox??kHDC^{f99P z@4n=e3jzgdc3DFDTglsF^;K-_##xYLsnmp!i4`yEwEw{yXg2k?4~$-t#`@HKd~(`b zt(7+p|01S$a09Z{;Zos+Let!wnd=bLSR@1+^<8xdK+~xHEUJxW>YvE*?xfT>evzQE z`^Yc@X8L0$Q@ArHK#2$}cbioiADeT=j+C9zU`vv;X5t$DF{03Njcx5y{!D*^aCASO zVnO7sV!kNGBbcC}PfSRnvk{0vDX6_Uf_9`1THGcMhlj);ooR}=c893Uv+fP@T?_NC zc**w88R+mw$s~b+J>C%4OD7XmhE&3XMilUAJE(63MM5E_O1eY&;EyHfaVC1iD50yx19VY=%I=Yh%Cu zJwzUm9!E&mWTV24uk?vw)p>o5)@VGd5hU8^IIrXdlC0;)7>PBp;8s0 zh_VUDUWhlE8n*Nr1TtA^aOwn|@g@PR@=D^yvas~Am>@!Xx87%V%0ol_W?!VM{}}Y` z6^P;fqD{7!s4v@iOYX4a!b%TB;J%qXz34>O_BIX7v_`)Q@AkDmXOnxB!#8iNrxFj| znuxJmy~3xM$~=o#HiR&fm&<+&9*WOt928TyV-aON5YSh(#mjN8X@2PHZpI}`qn__h zfQo{;jixU`+5FHI-QspRh8Cn%3CGPrSai*v1Hr3B04VL=1q(|OiSz0F<-#~~pe=Wt z8|6mDP{gr+aMt)`9HA@Oy1*z1?>?pPbL|$*{=JSGZwQq0Kte%kzQotpV_lU4nCDl@ z2@l;bW3V9?f!RRVH(wt7KKRYC^tSj1*^f77u)Lw5L&imD3ofv*8~S*yR)hjPlGJ~V zvvp047cLNvUQ7)_K9Cgh6F0g#?WTpOYjap}gI<0ARL?$bkh<{| z)wbOPr2k5=%x!2A4Y;9$HtI~v388J7)-QeXRO@A|ayHp-ib_^KNEL5g&L#yQ zIbFR%LTn)Wc#NB8iNk_3U% zdDUK4&9i+yNt90jB_#DbL+Z9fh(5=G%nxY`gWmMq*4W~> z>ju8s6_*vlAFS8x+PZvK{NvUM; zPgk1$U;I9%G1F3VIYEvDqry^%=9_7sLc;0I@B9QnmJw0;@!7y-l98PzY(91VvN>GyUqNx3Xl}1} zK_#K0dG*cfyN+CA{WhWyN*kT$HLlsCoT9_kt8)+0e9l;Z?nWf1^YcpGgUf%-MLn%Z zTA@(MhOx!iV=Tt`A@oiwm`3AVu&r50Uc3a?rJ{@0Mw(&PMhf9bZTxHOyhcwTWtNuw z#hLC?$9uT7+|mF}#hJw;Xry6@?+luxL0Tb5`+a&CziE`e%ZPy|m!+RK=*||0gG6ap z?xCn{nl zA1-#-peJZ`b(dALO;UEJY|Ga$-y4>3ccu1;TJYTLHJ(m+J3u1LBqI$Fr{&3dOab2*TU^0b%H19quUo`I`a+ zJG)ED-t`>$%uor%O%(nK(e`GvvIaWdO?D z(8y<}Wsg5K+sjgwoz&65e{DhWqf?glNj~MIlP2kC0TIFuWZgi+0k6F4a>?m#aWWB@ zug{#WK30ZE7cze*oU6iZN!FR{$eC{#s|$y20T&y)Jf)3lIPxDgbm4A5U&ENEs@voe z^d>ySd$IF-fKTTj2Is`ouVc>%uJo`(3G-3Kwfe3o@d}tSx{SvsaP`9GTy4HI4jf@| zIYROnTk&=UsD8A5>xL^rNijz-4DLS%W<3|G9|MvLXx04A54;X`W-=$C9jcHGbsY(M zHlLijCOqRo!`V;K=I@w|8zCkZRVUyrkU2)mPr)mdIx#^+!#r2Jjc4Z?u4i#zVvp9+ z^97_Rx+<~Wgw0)rl@leHkDzu2b=(}HQd3?sNkb=@H>}?G_nfY(DEl#C&g(t(Cm% zl1;M(Dw_$DzgsGdX&b8V(9cAcMpJvH@a7!mB)?7+G(RetBPYJ#8goe-`eI-*Z1-0!{`4c9BHfdVkDg*?+Ll* z_j$wcXS!??;08NhB}%C{npkdT%#7KoHLmTv2i=Y@?9AfAEyqetcQPTb>V72I$UYjH zoRe^W1@@O97i1AY+JyK%)&0#mB-sB6p80MNoeN7w{O%~wL>81T^lAel9#r#m^hEPJ z>?X&fMG5;Yyr%;HL6Eis?aXV$jQ}WqtG=Xwa zXJ5bRSxA>Qrqx_L?1HE{S#MZCduMg{vYh;4`Ba(4mrN0iplmK_+YU28-WjcZwj45c z;+zd61l{>Oz#A+;li`Y*trgCX^hV$#A0`@aN3CO`zwOR9l;}=|^G5WQ%|AH@W?@$* zAk{SM=?0%a*Klkg^F}tcK=fkCn0#iwbb&f$%_VF1imaLwmi=5Mih2F^# zUaw8PEFeJr@-fA5s#ROd4N57yuj}5@EaYZaev)1bW2NJ}J>XD?j3&w6xa8Wv3(AZ5 zCl#ZV+!Ns0`8_!}7`B#;%q0p;rQGPMeBG|!rO2zjLp~~a3P9n|u@lRXV^Wa`{jLqsvH|@gS&h)U zYQHh@u%&{wD;Yk?Spy~!7cQTc^Zjd<=vzl$M`+YrWE){>2q}3(Y}UmRbp-iPeAe%) z)cAh;=k$~w87n7F8URpVXhaL0JKXCMIjpQkCy5rdjP_nhJ<^$R8~IcTSv3G{s% zuB80H#lz;f`Oy7jh7!od1HWq;)QtL~!MZyigmibV`SS4w8N}De z-Bz7q6Q$P3zvKT~+?qkpV1R4)|B#fs$>rQF=hP%iUHctfJGLudifH*ghPrtq*yh}} z6?i(5q|4j?>-le|c|nxk-S? zv`G7Sg_EKcO*Sp?88{U`l^^#fRQ(Q-$NN%CZqVmQxCx`iQSO8`bjtz7-Cq}_$~5D4 zt`sRd-ok`_mhzg_)a_m{^+l8}<=CZs5#t2Q1{s5xk&>09r{m#`qlx=}^lGI0D&h1s$G&7#0m1(Qf^$xlD%*e}p{=C#k{)(a++3kiMv;{H%( z2@7vFV7zlWry%)YtV0Pg>9)lOQDysc5 z_(_S5RzBM*O#S`X3m?Lw7W+yP4YwU9s3x8bd=<*Tc)ejP4pM6~?8pGv3TcI5WInsKavS`M`{z_DNG@ zzf))0tCOZfA&ePUd_HWW0ig_LAbmJ+3c?wkcDr2lS8mGzM=GzDVT(&8zgYi>JLA|| zJ=1yg6Y>y&4Rkpv0?Sg6htT4tYdxS?f3S~)v_Lsaj7ny8Fa(3#GiuS&cIfJ0K!;CT zb|AM?RMe&BjrU}j!5tgsK0@=KhJxs933|Fz(617`3M|s)p`JyK;B=OD>Q03|M7e!( zzp3^ya^5K<5tRRrPcFox{q_9e`p&>Wu#y2;(S+$t6Q@O50ls*UwgM@6Y?WaVgIEFj zw-dg=6(0#6P`o?f_Ph%7TBy|7+<~}!9KGjGagBYV_8n70zI&EQz@By+0hfNmW5I5R zHTfd5@qMHztA)=|8hg$!iw?%AGLZE?4#?&A1x;$13;ZTEEhdve-k?9o9PHaR#%vnQm)jDB~N<$L5nK!kyMFZvK~YW!2wv*2hF?(+a9wS$yo## zrR!B_%D>YG{EQm=*)c>Q{aN!ymVqv&YHA$sd@M^1`;tj7`MGsO&w&?LX_Ax@>j=6Y z4nEkH4L)IzL6%!ic@N6c!M)C%--)ved`~eNh6pr?q|8y@aYz3){1J@E1sg3qW*vMh zs-*BP@DFNcs#-FHZ2*uUb4I6Z1Y$1&0*M6tiP^+a5Wc93O}Z-ON>0?4l~D@La7`GW z(qf1eK@dxxWw1^k@RNjUK!_vhrbQXWZ$+U%d~>aBGOS+2+Kw%YV7dznUQSVv>}zOk9S zTXhclmG{|krb_!O`1bDUuPS0ySObte>JT0aEoIw z>+36pdgHhq4UChrW4J}r+#R21D~aZI{cVPAY6QkjdKsPoG9V|t%LtI9_V9#Ulg3Glvw03W}ibn;t zdLoj3vda>CeBEx&Ud~B26o~CYe;NzM7-{bJ?&KFg``Gw77Ohg8y7={mk&0{5$x@wj z3Vc(jxRdKOW2(rNePG^F)^u-K4!#@UI%v2%v{kt^Yum5*!J~>mx~lm0Kvu3pHnFAJ$lN zc>k;t;xMvQGo&HxGLc*ku;WX7%>b=ir-@v7@jMGkYe8l8uudQN(8^#Fg?Xon(@&Q# zoJRkP=%j!NCpDk0*6D&m0HnOGlme6Jw%FHop6#-|plzk6|CMsDK)0n4KL5%&!GLlZ zWdw+1gSW!}MmWMAmdbxIUr(H?hT^U}2r?QZG(gHKRRuSEM%Lu^>Q~GCcna@HI z@MiB)60ERvq7ncTDDP$^Z>R-d<*VN{;jcA9dj#Yn{*KfU0AcD~<`b3ulrz-vR3l+yhpCK5Tb-T1m#1Y~B!=zV3LY)Dx z$t@h=%dE`p-oRT0;>=%c^CsC%3e9;E8RnsSA;EW8`F7||$Ixh8mOy^VRc$<98q7QT zaB>LDoNpm-I3sMp{Wc&L7c42)u<7) z&dbBP)m}wgDB90tt)eLBl^)WR+Q=X|yysB+0#o=mQDTW$NiH5(eM%EWCT{S%ss5&e zv^k$K#HG2)Wx3g^Yr!S)c)1cbBiH-+gaATkCRCUM_YBDT|H{W6t&sL`PstuU_a@** zYm*y(DOGOeuz`rM?LJ9zcf}3M*c|7<*Iz%$Wz7wU7aYj#dw0c?!+?Y!m)?&W^dN< z4^6g`vbTdo&u?!sR-+n(edI=YS!4+qi)CQEY9`|&7OJ2LEJu|EVWB$(Tv-eHUGUR? z$xG+*YW4`6>&>1}6}FA=I#;Dqx|a`r1}zR#oYqA{+Gr`7rjL{$Es4Vghw>Phfo?{# zd~R`F%c1~Qm+w5c%{6htadv9$b7p|@D#JVr@)3}tAv#2gLn{Hxueq8i)U^3~GH6#H3p-KlY0r}lM4Vm6~ohM*wpt43E}Rv>hWHt4|Mh6*IreQ>6U*0N>U| z>0wyMGyBCfPZJZ-PlbjU#|2cTPCbF~R!s19Exuoc$uOR)XOojA1=yy;ghuJktx7B` zu)0K&Lm@Di>MG?^YslXgrbM-rR|$BQNnxNd0Al1Lt13F8uFZJBP5X(c6x6B<=7MrV zp?)*SDf9CwwdrzP_krB1`2EafOiF%~XWRi2_EnwLctP6lii-RGseBeG11P19P5z)} z9RGRS6`(Vh|MY;&nsY!>oz zwGRu+KI@WWLY=D1Nrd?kza+=-W`@sj zC)@iLg0mmL;?e@}f(^>ReUt*N=N}Rjid@d9d!;*hM}=<2jKe;bHlNp%;?eVXN}Mf# z_;Wz(2v{r@$>cC}mO#MWmEPI~b$mPdgJbJhvt2R}(D1sgT4PN(x8%MHUo^#Qc|5Rp zaI(xeDETOP?7@i5Gs?ZX`B5E1(D=UUA$HUu1_5%j72kuT8x-l?mVtc@(*q}?v!Db4(uBZ}+#!l?qP6TNSsuXgvc0Qd9?1Q-(06+0 zmW-rTF`~^~{_R`~%|LJU{0ue|H6u*##rgRvbh1AO=@BiWshBfmbn7X|#HyaSc|Fk( zTbnAH1a(e&wT$wkzsWbtXthoghQI6Og&6c(qrH~Or4x@L_sP~yZYIQ=@}x(2#ksX5 zHH;O{V{DX-Sn{YuNHZOG7p$kw8?aY~(a_f16&NcCrISTh3~C92#9IM!*|AW1awwsz zHyWpyW{!_w%*O->i{6trx?_sauoq{l;ACtva|qx5+Mt=bjr3wraxT(kcT_MJ??#nN zJOT3a1wnr_{C!!pq;TOlE}=grU*>53ubvVN4yGhB__zRx-NpVNSRaf(&ZyDwODR2y-$SB|iEtR4;Py}?LC0R^}x zdt+Fo!_<@FUbJa3$S1j(eEx+w7G`s&0u{44aq0MQPkEOY_hA6VG;HINd2s$+icpP1^R05?%7ydI;Qb&Aqb6Sjtw>*XhRr=u9*Hk(8>gr^$6xuAV7)P# zKNlA>I+{CcoB3f)qm);_!(yHY9x9I~ZEjNZujavg9shwN z=fJ4Z$0%CuOi4cJhimr++MOMri)iZ-wlJ&S{%t+}BnHF}2@>Yrj^vA@%EX7n<`0;~ z#S2NX+G;rF&O8Py>D)>CUOb5hDL#Ku4;xtrjEK0~UtW%CcB~=t^P01kCs@GS1}1U0 z6VmZtP7N1j!vJbZwcI7~O$RxyjL_5mXu{6#VA_?{=46U^Z!&Y9to;MkOw725n7$t! z;Vg!<7?d?pHr`udUAAC5$!MvIw9GC3pjXZ+oU(Wef6f{3OT-T{m0~AJNV8nbJ5nwVu`Z>)t`s zp5VQ;F?%!FSJjNIs+cJiiRCE7&4V_Hp`qQpIg^%g?6+d>+@wIQ4X<~1jqGB-bpM^P zL5gVKmcUqFlf{0DX686_I+?oIz6c=(OA};{X+~&J@$(Yd+8J9f3^K8E@b0SGosKpN zJuX9@^Zqyk9{cijmr?TCnlZ8*Xr$7PD}j5 z_-h5Jl!n}u#}1Af%!Fa-JtR+5wR5P}PngsNknChgNkHMZ03-!>0!b3C01{ifrm+up zt5PKR+zU@-c^!|c!!O%3KoNo}wRG-VMazD(#d6{^*PLF_PK)Q@u297q@3@G*{FLz3 zWDN58Tqt>4NCiMF9B0&6039DasEY905)5=Jid2F{)MEkdsLHmO*$8&gVn@@|nM*uc zH#dwtzOizFQVR@7F*;EJ8wlO@!?lXH=ShEcZs3`<(}ka_&1Wmy0i4@yt=okxSe|o+ znlIyUBIehzM0~5I*$D~~X|Zm1#%cb6=D@zMKTry0{*F33o)XM1e-V3kc6+5%njB?p zAqdJL^grE+{2yRz3?^d#wje0-B~Cw@S=SVMFx*jWY*o2-B1Y3*c=R{Tha>Ho)3?Qry=QRtxsw z>&f_6$HaMGFd-oecja7)DG}&mwng{arBs$^YYnQfOM;`uB!6)u1)R5PBqmH^V$rW{ zT;^N~s8yK-R+zL33!C@(t7CtYvxqs^s=Y*x1c;G2!|uPPK_7=ckX-nSMSAq?mzyG6 zpr4gqbk$~LfwG!iG{0A=8y6w;lF?Ck+>-p}LJl#t1W_kGHHKvt%Z=S+?YaC5 z$^cY@@{hr&ORXX~ucy&Lv-^Q(5&^8HM7q_JCB5->$GdBG36|UsBo#0knHP&%KK)bA zf&=+4bN#X6y-zWeYbp8sHIf^Wjp<_EKp~aV2huX zkaSW_p8uM)(FqO{MrF(Y4y(HFbq*t<{%~{O_LE?Fw}YXsa>tI$da0r49$w@br@Yvp zgwtd%mQSjhsS|rMV?oy*qlm!m>K)3cf|M7j-qA;ubl!QRodP)Cokn)VXr-9GO@M5M6Heu8Amo1M_=ME>G@@!x*r(yGDS$Yum1Qa zAq;$}VH3&6HO22pxs6Zz?*qH&mVyqnHMyXIah66~wz_Fu6 z024*Wj?s}oz~#*+N>3H>G|;&yuEX8DT{F7Sgustr^MwQ1Uka6{LjlvRdc<}@w{OJV z#Ezi#XSGFD*o=*HX~BNU0bET4L14|-LOr-hJsUS^0-Cn3OPSNWN_WeWG=V@&mb+P_ zL~pEH;s@f2O4#o&?Gk2Nqm6vD5{Xf~ao!C;9E7DB6Ibq_?&LmAGBOKd4Rc{38NVcZgwTPki%KlD zusVjS^gpXqOp)qsEItn4fQHq_zBq8L=$Gt>-E2RLHZdxFU3HW$(#j#dP&a^qJFM2k zC!udLGj`-Gf5Pl2BRefpUOyMZAFPk7o{hzo$y;mDB>9@Gx8#$)E2!WB z0q0x=;z$EH_7dGA5+_u~VwB_gLXB|$ZrycAr z%>kDJklGB}()b0A?G~kH@0^85`2K90D-^Z2*Xg;{9`OFZ&$e4u7FE2*pvBgk2@zCS zm;MGNa9=gpBV?Vl=O|&oxFZoI2keZV3RUZi+DrZlL5w-qnBO zGJJluFrFlw!`-T`AC`f(%wsHFMc|mcTAMOod?ER#qUd9vxN;1|;ihH*=`|f~s^Lrz zx>P-aalOi3%1`SD1*)mZOgzOkA_U1k3uF+b(i>d7?N*2w2kyMs=i={gUV4Ah_P+7A z;R2|$HYke12_z!>8>6DoNrd<{h0g2YBDNQ4q*nGEDbU_va9Zahzr{f8%94-5OC%bI z+}G9$BvG8}fR8)Hg9525;89rdy*w^=jbc9@h=y!yFyX-mDnHlr&Skajn)?yy%1NoIY?)q9!t45Ihk>%x_kPQ~fA((V2>?%vKT1~QG=&JQn z?ste6`a{6C#uVOb6i&6jw6WGJn88t&tetabg1(u6`O7{MTS%#owYTm#sf;|ZNS<{A z#ictk9EIG9j5>Lt6r5mlen!{t^?tgr!md9_u_;{C2NsRcmlEkG%3=ZUN}??aYDKfX zk4qRwJ53(G09t!3i|+S>enSAjED#di^2V}xWbjqEqcvw|E2j3KBB#A&22)Sx!-v9! z;3i~j{_G<@`*BM(A{=q%`3?Rd#37yE7%)5<1`;f9j{3MmG2y|6C`J(`#@8hpoU-PJ zYZ94G4tmoW#0VKY`n^bM`?bki|E9TqyiFN| zT+`&{kA3QgDTfgB+%86#BBY9E5yV(}TIn;EH@V<-F(GGIL#vBM4*lrpDXJs}XPKRL zgNH5a@m>r_$?o(yb$WA4ng=abr691UeZArGLj}S2^>&*hgG6QbHyv>%o730xThQgT z9?=}w*Z)gOn-eh{xa3b*%9x@vg>)~l1vjYk$<1LP4cNDyi5CrdQ7a&KzXPs*bT4h@ zm>S@b)daT_i+H|=^oVo@FSSPH9;(mT;sGu-M3GEpR-dyWilJa-#$-yQ{VB?FCy*28 z9$n-0yS@IG?hSEA*)xQb6z;AuBn zz8yMCZ2>1b=hE<$mHZCsbd_ard|h5FjF34vjvF_D_MF#gSNc#4OP8N`E|+AQq%BOR zdlW+IbJNkkzt_l~T!!l)U^RW3)!r#pv&G*oVps>MVHhwyRB{xGZn$7#hXGP#W>)=t zTfZHYCBba>tENien$OokKrtZPtrEl>N=Tb#J!j}C+;D|PRh@qUhf(UoJK>yEv^W{p zGA$jr)xfY^$Qj$&fqe~l!j@&O!6F|U03+wcFc3`BnYeSsDR@7WL{hQnq<|`a%ME!V zCw3sv9!0v~NE?IEF^ZEro<>s%G@t;3jb^0@F-J}8sXqX!o147iTPxRmjTw*mKEzbm z8-2GH6$x*K!YgQNnrJ*V0)x1}VllpN)mFOvu1CxIgVcNGGSNE*%#$Rv8Gn+9U+s^F z{X^t-$go%7(8ya4l#Uu%U=~C8X&-}h`cnd#hQhIasIgEqLj-Q2l1lE!N5JN?1h(B1 zQVL5go@0Bw0m+)@>Yw|^ob%O>%`Q4oQuF2MgUb=C$$zm@tN)zjOLBCMPD~gQ2iorM zZv1!A5KWq+bVPY+Yhe%8FBWCO$GR-j#aGBQ|4lkk7o+|M<4U=Zw<$>e z1_ax0Uek2Mpr8$*svZ>HW1jSQEj#8osBoAg&!%X?!4?=(v@M}98opH!Q@hS#baa=J z?%L4I-Q@$DFqz$h=OmExIHsdJ{k9`q7H<+3*c!%59^OsUm%kXcpvf_0P5N*R9mcfw z=<@LeTh8+%OS7F7KJk zVA`9uz!}9H+Kl?N-Wb_J29`lhKd-UnypK(TzPv0PL}ldt#7pcc;0=eZ;qY>4ZiS=K z^1j~Ed?d(4@B9+LkHw@*gy}|O6@w;Glm7;1Elx;RUGLC7V2ypz5~9n48aMkT?5Yy> z2A>0&@G$^I3V6O|z!`3l4uJP7!>~f$j3mA>1T*lGYe$4+eQE@1<Nt=+IMNASvR! z(&^04#A;{2KTkz$wmM}MxfzWy8<>QhEzC=JS+u)nk|(D(qEVompc4OuGS#C#rDd(FPFV|MPX`{-};$ak1Nul#O(7jX?HKasx zJuM#5JAM%kKvQk>n)|%Bu4R<`$dxu#16PqgpFhbDUP&3Cr#k?V)rrny_Nqo~qgt`? zIDmiI;IIaiJf_TTU8%${oD%trJlYmlHG|~f`Tabvy}|nid@XS~$MiNMN-U>=bX0ke zqL+ak@SY;V+J!6#Rk*IVKWKMhZN$nH3iYc<^oL&J^ZiQopwx?RtNh&3tYKK&AC%cOHIa8!7|L4c_Dc4DDeO!?yrZXqGaGu;wB;D< zTXJ5)b1M-%A*PWOaB@0tZT!;L?d3+X6;;Bg+VE(aE-W2yL(Qo|-Y*R<@A%_&Mhe#A zCw7IT?}qj1>7e=126E%p;0SWps56K`u9##F+jgdoG$<{5^T3VtblDGp$YVX5b;^2t z!Gk8I%wY-4ny#rjGKu9p?FfFE@3p5;eFOo3kK4J3!ui-Un5K&8e`!Fk%e;$$QSu&? z#O@M6+YKqd7n-H_S9kyoToCI|l$&&XMH`%(X~KLC+?*bEK=_{pX?2PK!|B%MB+rUT z9-JE!tC%vUHH}_j&}gT&r18s!4adeUfP|oVM>tt%NuMl#OwK5tEmTNRYFiDu?I-Q0 zR;Tq*WMpip1ZYURu^sjrQ&e&VSXOAE6e)BAo`p!B7T)oaQpy^x$*?bool7~q6|9VE zm(c+iCi<)>c6Q%Cnm>QQ9auxJN-(f0DVy;qZp>8F*~V4Sk0kt`E9I>f&BjIp)B@LV zbuD{j#X;)8LyXh4a3}NZZ6mDQVRUW4iBeAgk2u*s*dxxf%&rzuyjfJ0)xClIW@(6u zvDj}MpRikoV|o&CSIKx5wvJLEaAauP*7$~1F=BY)WbH$0d}OOoV>ly;xO$dE3qc(f zd$UN5&@qH{?{cF|S8;e2GVt@R&`}yR83xpo%^6gV|AK+b&OC(}=h>xHBHR-ZJ^h>( zIqXi0ow?`RW1$dorXvX5VhKGIm^VmjC8NE5TQ4t06b-iK5*1bI1Szzd!`Qd1Qy|T} z;K39MuLqZ{vUax5B6APJrpgh8$+-H^)x<03zfvF`#Szf=uWR9}kyg_Wqvjzo`@qj= z<2G?&u@IO1IpMI#l#%g93=j|5n=mqeYMZ(VvQ}rwnen)G$OFE0{Y{D*hiN${==c*| zZEzH1re)zy-Rnc!?$gy66mlLaQYysdzeWNSl!@dhFAUO?4^bHbFoO^E&KfgLnEId3t4sPMYPF?AJX&qxpnkN)UJ;NZd}waswJ@7)NMc7CQ$-3 ztC`9%r1vlN-)fBVXX$JHs?^Y3YUf0ZoLZ}#0}s%;o>}r8 zsWz^k@3nu{J}N*WBY5hAI;p1|;@aEyLUZV^3*;^vQlYTUzTqV0m9ec%U_(~&x7wXi zjW55=l2{uRO@~I+oUe{}ZwNq+`Z)rP?!kjdbV1>1r|4E+_Vf`2Ksx7bNQ=;G$cpUS zN8sdalTNlM#kYCmR9vLBx8viro-<4RIGd%EM+8gz2-d)D=}=qJng3vlgiE2g&64ky zl-)Gf4^I5pO9=LZ(5Hg7&rz2tm3ZdqPKvkdu!jG}&brks;hAMGYFMbSxaD%DM8>{h zvi!OaBH4~yF16+`UsA-;bu%8URSU!vn{V`3T4u|MQC31XTukv->>r_tN{{0vuhSTa z$J;8?8517P#T7>MUfb)tjoJd`(L#C7;PKc=DDR1Z_MMO9Spud%)?L_M$p2VA_6Ji< zd+fV54_StTB=7JamG$DyPsOH{Da0lNw{&|(m)B+ZEm}p>y@9{0BvX@7aOa=+2ZPnC zYV^69Q8*Be*hJ)%!G!48nz@5^wGf-fz(N}%|MF;;H%izn`0QMQ4#Z0Nx5e(&D?gKN z1R)S(BEp@Gtv%_Q+;f@Sy9CT3=%w_SdizID#-s zv3@b18$JdBtbHy+fvnI2wXbf1h(RT_CYNtfw)Pc~Rb5_rJn?CEX$jk61yS>4R9j|Lm3Y}M5jJKLX$w*PC^%M{6gw8hN7&_WZBvBXRxq^$hW?hs0MWrX# zBza&lSEG;?*yUphgoz3o0y`ltFdD~u#BlEU+l{EGMYkH8=+#MU{AD%uCc3Clf8xNl z+ahYo8+_a%%7j%yQ)&P+S!O>0`p9CHmPLx0iwST4&*)eW>(Uc|I_sluEIruosv8aD z&k(HK^4W84!Pd$xoGF>ywC+mNk)aZc=@O~ip+IP^>K}BmK6`1vK?E2WwIF8$t<88n z(&7%y|6U9r%l04n>5@sMDzZ#MEG^+2t{EN<=+7Uo-6#?1opT>WZjE*Eq>%rF5}1jxeSEQS&h5 zcT>}2>I0o*hE$xrmMem@gs!WNx2H#MW+-IAhVm}R!5Ai$tEIhqpYxY{mOEMXK}Z5v*VdxAdVM{f6dpqD`JJE5ZBUJU+gmK`2oTc5~&qk2r+qYgY7JTlbU9zc!r0_`eqq-plXhBYUpvid$&llROb~4kX%3_mc&&cW=J! z2%01Dwe(*5Mj>Mk?kZ~K9HA4AOIhs?BJ?TZi3U$S>2T^9aVTDCTTRJRZQ1vVS}p&o zulYMDL|s|QEJgAvCFH=e@}J46?!epay|6J@j7t^RuN_to{BVEz@>6W8&6ci%C%W`j zZf7Rap9QKWxISDjUW>*}Pi<~lmVLtiVbv{C_nPJH4ky=LPqRi<4Aq11TsMw}4jr#; zh%{C@KG;Cd`_#qhVtrkG$zVJXGywvCHWrvR9Ejxi3-%z~0*m<{sUjNw_eO`?a*2pe ztv#0G`)u7WN@{k_rF@fdBbXsh@-#{dSVi%w8d`Ycd_R$OQQ$k{p5%+MB!@3y7H3iv z9J+p&Zypv@)bf2}rxzH+caf1!8a8IX-{Lyim7&2r^Og(>fV$+$7Waxp?01-o-Vk|a_;3kF(tu&|#U4Pn zR}LI`&1C7?FV_W$q~}ZxbkdGwXY)sb2%kskhZ$bmqD~T%Q(Z5*Fq3N|zmDQ@T*k0> zRE*Z%dW_HkKv%RE8k2+xycaAiu|!D;U#(3uNP1g;V~(HuulX3EHnP00h^A!w<6ygv zg(Js*G=QmySb~8K7VX)n68_XC2duOPEdcC-ZtUhNTk=QW7{a$>{yu?7guoyOBN!aF!uTZ2d zX3!XGKe#Q8asn$FEZ61WZ((_TRZso=c&G^{yJi3_aSv^(J^#JOg%A7@61w zDA`GAbtt+$Z6qBR31M_rxkL|Qgnm`?18Ced&=~0wyESg7zQ7bCl5|t?1)l@#-hnK8 z^m+Wb7Sb?KsvLRIAs^FI-9-Ga4MqTeWHJgZ~g{=U#I=f3$JQlHqjmm2WhX zxy)Iq?zJN^sdkEMSJ!8II|NkGfT24WP#`}B7j&ZnY==gO%EG`p>zTXBXTD^HSpi(r z&eA_j>)HMD2vHB_Rm41fm;Y~xAx7m(n_rd2Nnxi$Q_}`nO%1P=lz@V7OAL4Tba?m8 z6$*1-yY@m5`L1xHryiD%P2zDSlqUl`lrze#@IFM~WEPT$YvF^7l$kuRy}=^M9x#{Yy{n+|nZJKL8e zEYF-r*z+Zvu^V7EgHSOY>!rhtH7=dgEo+k2S8zJn-BC*BF^Tn=izN7_7B*?lP9oh8 z9>IDZM5FXDjCTr1CIiMdOK#xGGVc)XQ}Ti*fy4(=;5;qXqzQ64-QXlUvYr^{F zU;*Lf7slGbJwtRtbjfV5jgQDZW{%P!#3<8nRX2d9eVzA6XO*wj<(GlVZeqpgIo zVmy(7F^@efbSV3Bl41ZAXmg~cV6gWoya8cTlw-mL2?(j~)U%kbCl%B%b=$hux&=wL zqnNlHqwf;mpqn>k7z4nq(c)0H#NJL+7xR{c;%3g5tOX++sHE{O1_LIS7VM+X)r1wL z*w>4L$9MAp4X>VxPp|Li`s;%z<132%Q-1n7w4NlhY+VRB6W2tAbI8~)j4G$O+`hUc&A*t)nz?-7gqy2k6xKO4 zMjl8Gt6<07d?4HGT8urWVjns-pl1rZUb1guLwkma4;&9>O@P48NGQC7VF5-(^*xs> zmWXVE{Z7BK#@~zo$%+-;_|G|?Bc~9Dw#R^7Xw`eR^_X`irtov_m6LeL=b&|&)wSU} z6Fi_5uxKwko^cS>fO?daq(%E#m+_-#d=_T#NYoQ-0i`Smn-wZ5T%zG<+27%CM#?Z> zSBZ1&&g%7b=8n$Tfzh_06}ph^z*1m}wr3t1gewGf^IWXUCX4JN^WHk&;dkRS8%B^( zDEl~PG}8A9-#yD0jQ&z9-UeN1x%R)Vo9RSYT7S!-WDEP|Mbuo9{%D1~r)g zpfq55O=CGwP97z|vI|rv&*(p!6%b1%T*b8UD7Q3W;No+@ks!}PWPD{l`%qCAy_>7d z&vIR64AZRV)G~tz;2?-u&$yjhKD+83DEv6E!eT!D7uoq}9upzpxleBYrtHD6ny4Rn zv%bwMIcKJ-!&2?U7KwwRr8Z?bj)UaE(dJ6T<8bRk6cqX0)P_%GY+pf_qQ^sWubECM zqSeQ@5W1Z?Pr_Ls4>B*p-mh$}XB-+jR48(m1`G^0@j+s-U!YcJuX4$g(|gnDtXMr* zCC5!2Acf)j)ycz_TcAz2by@u*_X4pi?!~wai-L6}8&B^Qa!q#XcI-?cK58N`ksU5( zey+msf@BY%{1q63tDE$V5^ROC;P8Ln*ME_FdCgrKIJVk`uo-F)mw6LO zxZk}_H=sP8DUwgX0+;txDZ-=$9tURnP95{-7)>}`;oe46k)62Qs`ocsy02((tZw8$ z!7#jav~fVFtNq#%S}@u*bBGbLI*mz%QQ1Gok$+-r8L6LKA{y*r$KDobMe+NWhehA3 zwcp_d^v=H-R_{c^S1o_*1RBk<9)K4Q6f^OZf(;QronT}5QwaH?qR(3hc8kiuxUMzi z7ojv7O~fJ}0Kq!BpjDP7t>^t~Ri^B8-@_9`{mFs#tb6sMK&VV=l9!O(FEt2w`0ZYh z5&j<}S`6^m%?^mFlE>_&guD=bpAf*YpwKXj$?-W z?9zEswSc-Tk!xFbbO%Q%*DD?zc_d%gyNuGbv@NFqr zS3-OVOjeSCR||6F$EiwTsH;<>9_aQ}M0kkR<^Ra2kpg+8gZEo;>M1!>gq&?l|LCp`(Nd#Ys<1*h3n6?CE&n~-sAW2mDsIAfG0 z!mXCt)HkuNatlJA65r2>)P^$_-O;t)M$Onv-d2)BFB)+l;W+hlc-;Mr>}M=fvvWR~ zG(!>26XuM)VxvIL^I>KB^eS%I9QEv3gAERa6)XRk$ylqxcY@YzjE4d5mnOHEju8a0 z!i#OffKFt2PV?|gQPET#7ay!V3=F+cKmsTg*5JQhmbsqg-pP?kz2bVw7))04+saeN zwysei$OfY^WJ#hNj6_zk|0KbgGlJj>k!$>RsYme)Ol`iD(Gg3RsdB!`vF>q4pW^d+ z8p~XOI3-S8N7tXu7<^#nstkE?mUD_$rR6L`=~~uZlBWdvE=&rDzkH~QsiY@tpV*m6 z&@LsYbQ)6Ay@n1k&aP30EI5FnJL$HEA;9au>WXz8Gqf~ zzrOCAHx^A#C6Uyeqb#COne1JX)d*DUXmg%S2*U4>wDF&kuzGyGLtOE-cdtc)o6Z#X zE@02~c$QL(k|Cw;^$1O~H;|FkX+)(tqFw4W_m;q5^VwxxX(@u-|gt$!gi3 zBNq(LEDe!>a_{?t z&MPq0fhS}gk%qU}Jdo1JUp6ui$uL#B$`j81ZC$RH{%q)4SX#;#Jh zO96W1SE_-H;}ayeeoau=hH0i6v5kpUwU)U)CQL3t#7pZ;GsdDftDcmcEH# zexCtp1{C49!bRiC&#|;elXF&YPwWRl5~xN-4r%Yp#dS|6T}D2B$F zu-5Jfu>NI=`}|0q=UnNug@X`u{6OXXGtH^+(l&O<=jJ5*kAln_UMUrIqYUn5j2Mc1bCmD=mRZ)I(zY)()p6`J99-5cvl z&1wxQyij~nG9h1411}awpz6jQpS3Gu1{cPT>sRCv1QM!uM*3gVf00CN^=hJ#FpS#`~r~y?bISgs}pS zgv}w}^|0JAj1@n6W%Gq-yOG4pqB9EeC_fS%D-OlROCoNN(;^s{+BR?jM7xKRUp0CM3|=L2vzmU@0Ks`93uOs0x}7cJ3pBp4I0AOZin(n0

{-t-20zyrU)B z3t)crXeKBd3TZ_Zd(Zn;_R23P6RcQolL8o83z|46agLn|`#r*Q-;2XYB@-R8K>KA| zPz%KAtWHz%)<=w|_1Eg+JdkVtd2l$j{S<1xe_+rzuYQHJX`1`WF{iGP46I zlU=q@iS?!9Wj;lOLPYzKFwuGNgwZPRV(=|%hd5VFkLz6{G(spW|_iZnfr2fpuR?EtQV=9C{ z2L-8ZCYcOWtAu+u+~ z7N{IZg)3B-0|~7tx!H7tlTE}408TB;bES74-lKQ&o&0?UAk>=#L!7faGO9IN0ja$_ z{a)3c)~salLX@?3{uZ@PQpjkw=F4pQfsw&`0Njz-rRP2@t+f(gylJ553C5y8^dAq)3ETOCmd&RN!;ou(}cD&J6DVn$F_e}9hsdvjLz z-f0CcOhFajdpOBL7PEfcg^>pD#TqLYU}v-e%Kk4@uk}Dkyrvm*V#TsV{A}Qm+hE+izjgD)l zDB2f&7t-OA-^x!sJw*IIg>K&KZ;&@`iDZ1P%ec+Ruuc1+6CSh8^eSftQEDhWuXzch z$g;@k!9->}kp6c=_m+YHgv5CuBqpPEfviC#p$$5;w-!W3WgPcD5k{Kzk|@9(=|=il zbVxh}#{j2vAX0)U@8olqaY9&ay03A$hc9{gtjsQ$h|*p->#7_Pd3>r)1z2ru=8b4c z)c^x3bBMgGpHm`EBQT4n0C>#xWElcrk|#ql4#Ok2Y4I<)E#eDY_bbs{b^-aPVYn-S1t-=a|24kJduf(!@@aAE0YDVp7_zBkzl){}_gN zoAnR7rZ;N0-=cl`94x&5Hbx@a=j!U@DKx;VsQVdjq*veAlY6qZj?>8ZEAdQJen8?~ zWwT2&sLdP$Cx)`3-5o)-qrS2RT-@!0v-;WCvBv%NJOlvp6*I6Ay4rt2(pJ$XPCd}i z4Q3`@PcDEzgx3NZ25^x7^b3-x>`I~DpR~DfDjzAi!2{|Oe@jU}&{4ejgp>0bE7bY^ zT*9R90%il->s6Mag;G3T#H6GBDmd;aC-d6^#{vyvlTT!W+D`SJUiDPVOs`;$?IQPh zdQ}{Cu$F_&*vZ*R$WRv2Rm_gm2B$0^m`?J zjPMVjM&r@W9^z+WIh)TZkZi+|rqKsa4SUAD)Av-j7@p$wbarNAQG%vb6#?T~GL+JzUe zasmlymt;Dc%t$+#_tn(n4Q+;lLrcdmRZT$)l;R_h7pB(wUzfSpzJ(lgWOM!M8`{D8 zH1?i9L&&^p=S$cZ|6ltYok4g7jiF<4kFZ}+l9Xs`4nw=44*k#?J|XjbN9`kixBFe?M6^lkbr^}eb+D#RR|H@+LKWt(VWjQ=sUqW>v5#kN&z z*q>%(i=CmnK*hP_I)MGEA;_SL$4yzo{~NCQ{b3hc^@M+PRFT1OKnBm6OS^p^dIP^f zkAM_Ya5p+B(omBJLBUAEO3AFDaC-AV#0FoHI{@%3d6NrOi%nR9V(2qJl&Lx+CbWGm zUk0GlpE@~XbJl_C&WBI{VEO|fWT##iL;Rxm&dhpN2?QwIV)w^hFt4NA{98X_^61Wy zj->DAoAQmVS-lpWBB96c*e*^L@aLd=3+Bg~ikxkj-7I{~ONgl+;Y*tNP%>yw<$pHY zALCp0(4!vA2QypM5Qu)UYPwzq*t!y}scK!or&)8xDM_aZ0JyE1ebLb>m0Jyf&_Brs zJ!|P3gr1-wJo4yt}?K`y&%}aN5W3> z?_?u=ttCGLhfvJe!fY68%#NJJ?D<-K>j(JmCu$<)KF#LN;?aX#jHfHDk zt@cL5KRBljnim_CpBCONe^$|jS_&c(5J2%MOkuG{&b4vk`2Xm_iiCU zv9vcsHc;!&YWIOm6e{8-x7ykf_S6+dv8%d3agVfI zV&!Ibcyb88R?}I&VBB7Ad9E61^??>u8Y&( zHq%V%w+3YA8-QKWA9hXysG1MFC5xgJOui!5p`gbLi2nrp|$mg7Pf2b%i; zzAlsG{aw;Rr)+Wiyop$nkPB6j<91<6i8`r1k&yE?>6@&^Fa}f=-7>XhK7quNszEg$7pPrvT zskD~$(S4yXKI69uiBdwn_efpy0<4=a5qMavjKqLr<*Lnd-}*B);9!N^Aql2huT{{)c^l$0aDi8&>Af{4Q1& zkJWY4s$5>_yzsx#@}!;ZU-lEXtX`&^Agt}cMpQK3E`E82{>(=81}9WA!J*dRZGo7Z-XI*7oe7VUTX&bf z?9b-cXPTvb%88$al7tF;xEHo!suCF*>;vSwL!^bCui$~wj%=5W}X5F1N~jE1io?U)EXv7e*3d^x%eTv%E)b!+H7FmuHh zq7?Lr<wI0^<4ZaDMOkxMqPnTYi`k8jE&Ba8`B`Rupn=JOB!oY*?aq18YdkmTi+= z=Mib4pu%Q1n59G$VBO4cw<-5h94&hW#~j-W)ETaa&pzw zb^!AR2)*^H)eu25o%%JBO;4P@~}Gt_hSW3R<*tGI}qVucupVT@DUC zs9z#^g%r%SiqRe{-T4zQh49;Xa&spgMwHuAQWS+@Hv8EGunDB|JXd5bcWDeX(jlOL z&WEAK(3RD^WHrhvR>STNEuX_~CHrpRxJzM7P2bp3x=cytp{?Lf0p@b?Q+rv5lCVO| z!yClvpj<%H5GQ@>Sc`0=-P7V*1JuR%d`XqYG42qlbWZgz!7;+tpP|=x{@M&Qy^LsJ z_oq88iXfZ$m_+ooT@($xvz`j;L2$v<>1+!1&JI`S^(e!qHKeiM^6RdJ@sjX3q*YM zEL#Buj4PcBUnHp&c~Lj&2#X%ByZ;E!d9oDnrs$zU2rzQiDBI658G zu`bu(wP#cnuF$k~%DG{vTbv_6)kW*+^659(fF&glx6e}0Xlw2woQ@g9vof9uoGq?aHrCMM+V+9wQzS7`$W5%xkA z774;&6WH$827lU_{Y7`$(A!5agOGN@$1W~YvG0bWEdaxH>=b3$9T?p*kuRg>?)h0_^8 zu;nE_%a{_Yx3P@Y=2!^vaaD*J4`#?F3kthB&+{dKeUHAn=<0Nnw9Bw+{S9Y@HgBNCk4WDNN~Y{ihHIAzMo9 z6&J}KmPZpqP+HCJQ>u3pD|2LFS0mroLvhAR#@l(=&K=l{o=D#Iq|)fcCyzm%xGxx5 z7KSXg{u`^{wn|8NdV?@h*itH9*TNYB1ibsEbWZfi$gbmQoy!%C{eY9EjoI5UZTILO z`%V;!CYLSz4XFW%n6KztT8C81dvcN@brYo(ELKp+=TEkoh?m5JE2Fahun7DBrI&&N zoaP)`bl(~G^Me5vi@EC<J5qKS#cs)w#gh3r4`8kaH{jRDg~!43bLzp$)uZ>_ zva- z&^b_+2oG$Z8vAZg2`#{HHGwuO1*$DxT(?^nZXmgQYxmS#>Qb9Xxi)O!1h-!byB7Wu zh=+7lVy;Wi&a;12Pt95_c8#G~c*3EWa-LjGS#jd9Z-{1HSG7Atdw6vP?SWZHX*3JlZ@j7MOs z92Vez9-upn^Qa$VJj-*9PvfasauI+&lb|}wB^MMO{M~yOQ>h075%H%`C9dzl9Z8;p1TL+=^;W_Y37RaRU zEl}bQz?RRaZU~YC2%5!&)A&|sn+h^vYDMlZZN8)Q0penjK_#r|D7*b5#f2teyf8eq zck|vZMqK{30EGO@e89%HE+DfGjMgDbm&@has9$gVjhOv*5v6VYKcIn%hVZy6L+Vh$ z{Z_(|*7w(6>UC(V5i1Eq@Jw9?(hk_{Kg>f@)zAi*0e)KT+J9IMS9bc$E&%=sJ5~kB zMew5$PmvN*hxoigZb}F#fVe5f!@yvDB|Vh+w`>4d{1}rokJ9!3Jo&KGieig7-v^%1 z6dTk|ygR8VIzWZVz@snPkEF3N9(~DbNsuMN@ zrbjqp0NT5vtNRH8d*LD|U@>1TOKq?bE>{~wAvg=1+z1+KMS-23o^{$!K*~R_h)pqD z7%b4}Y;$AG`~C+NoGbeOp3d?yLvAPZgqw-EjOECa2ZNB`lC~VK2s$FBL7`~?CkM$xkeBL(RJymbH{lile9G5nSu-knzfybTC`1wdl@a}!(DC}kppPDj-O32YWto{ z8=qfC!LS1M73bp}VYHjPb~Xhc==9HMd;*6{Ywv-08k$JbIwR(rl~Z%6_SVI^i|7jH z3t{G(h!3onqeGkq=qxCX-qn`mvWM3@vNGBwfh zRw+vO4}}CvJpSyKhqS*2ruG;-zNk7wVtIhg;f7!J(sBz>Kmy{sI_?e z=e9Tr+f8$&b8y+B!{kknl$)12U9r#(JJ6l+JwP5sFX!Y0hA>7bOx1;GJ3M`vR6GCg z^s(7v@Vf5yjZB{k5gmsQ-C}cTLQ7z)HI1#ssvIuO^k#&)8mGzZk!Jc=AW^QmML9$5uuk z8J-twkh0yLptCo*Sk4>2TO{dZ;H=oxZpKfkGLnGcE~d0mIJ69?^M-`YXL+3b&;z^M$xO3o>@1Fol(b zsog0cff;y{9qF7+4Ds-ZSkE}zfT}{|wkaFUFaWKc&F_Y+RXT8d2Q|-BUhDnQK*kDs zhS_w0K|bkNHa1J|lwKL?N_#9fIEc+94U_8#Qc$gzaW!pQkvij_YJ(Xuy|a^{7qW6a z*x}N*)|=hUG4>LDJ@k+>E!*%&G2XO}rcAUCzJ7&3<=JGyzaZZnR?9*dfqIB9R_`vO zG)_1LTiZzCndR|@Dhr9KDa!j)QaA>Kj=uu%K7b4g(|s|nT{MfAOE!y!F$kGgvE+zx zWSF5f3{cCCk^VeXD%GYxZfCp2QvgxG@LU~EGo$cJ+6?e{h^|bf%h%aXM(+R~^#C}0 zmIA)N;VrbS95b2OjOY4kfn~g+S%()c0zCKurSJz?26Nsn zhnuIR?A7m^kt&K-xel58hah1!J|%soeK*TrptIf8V)vw$-X%cUL~)14<` zIeT=4BZ69BD;Udx42|Nd0A$iWfQMA!>M1c8ZUHq?G;nclMEJ-34I4YRmR3Ag%S341 zQ_fAgB~P2oFr<^8c6lNo{|SycO-XoBfBt9muKR8w)e>0(-o(5#>$s(?b#br40~2F1 z!g~Ld&i@5i=vjfnF>%5`c-+#7UyAiJ&x&7neZ-OYyeS@M33TXjib0;nDs;65wfe};Ph zFw$vy7fGEBG?{mjCy&RpHD6CbD|C5`5#4}%&IC;l)}$gq>U;_`Sa64(B4C{wlNntj zFKe`U|Hv##C0weOyIKXL<|OUy?by3v7-4(H#1DWIaGxzb4zrJao9SL+QV$YVEvX=e z;?MJxyMFbIP=azyxWVjZy~*V}N}$1tm#7)YRs3O(DsTc})4L{#Zki_VR%dJjR-hc4 z0yFoH$)~tn*u?acMmHyF^A-tMK6BKIhIp3L&(1|f`6^hNoB73_f3ryz$T>Sov?e6E z47~FNqPl(Fqn)Uy#ow=crGTDC6?5^#)Qmp^@(%)Pgv;~EPNO(Z8vlS8Syg-%pKtf5 zK2ifuEP=}p`l9ES`8rPlIvUWK)029dT##O6#^?sfGcM90dn@4cs+Ik9kRT_-j`?_? zQdK9?7~W$+O0RR@g?L8m#WeEinP5AQ^0G9kJxlc>v_pKhX1}tygInn*gtIl~7#w7s zTfyXa;{t<$>FmLmP!fMg7TqAPl4i{;;1N2w#X8 zU0z1vSE(l(@&93nnek8n3e3S_f`>J=5WU~E3${JmTjsO4REDorsQ5dmQ`W!rxG}!S zkaoHQJ-KN{M!I9Wa4F|+LHd9DKi+eK_2Ih(v+5xTbPL=T)HKtO1sdg1odBP_1)%Jh zlgES->rej8?Xa+MFoBH%C#cK#46%9Vy84&&=kQ!74PK#_nUU#c0j1 z6mz{>a|YfHq5ex#-6il}s(2^XmjUL}Y(_`fj0ymne%nIeN4~8}bFBL6efUY@v~NcF z%dKT%HZp+~%}Y=j-k)OH$b)`w=qRewOzD^*`cUD^#E<?QD}CwG8=`Z<>g<$oyy$8_s! zz%2Q5vwINnoKbyR5Y)!Obi~`hUVi4ZRgP0up3@5Y>fVQgbY;`XMm`ESiCxrQr)r8fSXQw) z_#5K^TGtv|B%27&U4Q-f^!%w72MYeaJ&{qxbBh7`@5?-k9h#KkMP9t%j$(3E263SG zNgOdxGIff@Z!B#S)x6^(Zy$>36T4~#T&o$MILgbz2!V+(37eP@k@{$<77P)18r1+z?p+$1+ zL7#+@0=vv!W}hyYm6CLjG61XkQ#JVIl-ngh#-3JmDpbZVUdJ2ZIfp+sOxjq++fHej z;C*g_V%ytXx=2%`z24$TC*Karx59~c?s;V3c}vuO>y?6$H*?nz6)9DTcnQ}=s!9(} zk>*3eQblK@Wp)N7BXq?db;&er_9fHxi1NTNc;7xp(_iJjL7^wo%kTDsFCICFm+sB> zSPMH+Ww`vUBpfJX_;(#5l_R-jk|rhI_OJktES` zzKYA=YD<>jAbSJ|8?zQW{<7v3%wwhUl%2gBpGw_k$s`BGrZG9_IaVYAxcPfTRvJRF zZ&D}QGD0msHWkPTY8%9-RPqeyt^NDzaFlpF0pAIlz6@IsX+o6~42*e+QIml)U#jAh zXAqu#dfF#I3AP#lGqX{)YgAW<-=%6tH?TExTGhg6xf9-7uPXt6swt{d_&x|b4D*W; zW3!a4Ofhbl^JDR?JtMO@ORgQgtlyV+yy$NEe{Okn)b$^c2+Q=AJK0uxWsZ9U&(9Ig zKI}S;sqg2_Ph^(r23tY9XCPFyp(GBAQn6XWvC;)6q!e}5?s8e&zRY!*g`#_h9COQ3C>B6O zw?wXbYr#g5EfU6omgo6*U2z_?;6kYYPIKazK@0Q_RGb+eqxB<6cFV_NS}v{2!`C=_ zH$O+-UpAIy6*SV>fYiCrp)0>z?k*PE)r(+H@Rl7K@@kjlW7vY_0h=_|IVw8d=av_e zdo;gnCxDjeY+yc^`o8v|gTN>Z+g0xBeysyl|NkkMcaFS7DSlZlhRW*da<+|~9VXW0 zfO;iqUW50+9z6UqE2Ibc(MYDWvV9Jut$U))mKUeaHv+8SU&!%eG4+DMGT=WXxl%!S zIhRc@e~~SkDV_Tt2{56T?z^Utcy~9NiRwnmt2$VqUIgK>DolJAqCZyW`1Z{Ycf(u( zGhrkGy~XY!l4Qf~yKz0H9~#M1NX#~_5aKRb<}`isqA&~f#8^bj0Z?@%Fz|+Z-b|q3 ze3wjZ`A&Vxn2KENB1W6%;Q#?o_vGg7hVf|5I?~j=|#>NBXyGi_f#pffb`wUQ|PY;E$TO!1P$TwG~gQF1ErP&LscopTE<`S511@p&tuHr>%Jm3e{Je3a~1{!)_ zRUY){AZ$x&o-uN>!T|HBpm&S9+jsp?f7cc5BxNlG_OsLPuq433PoX<|sYQfB zI7@CD*IcoNh&PD(WLB+e%a;(Am}+iHcOdj7lXdx^P~7MqqR51pT{OP)m_305euWO7 z3lmM9TbA#D?Na>ny&DYTXwa%Hk*g)b(CVOuWb5eEx7;dAr(j6=9;%{9Ho-#Apr6Ui zWnz+A5D{DFwCwfzB*o5orAN%wZ3hQ>B<`MAU%EWiJWh*O+w=nZNZk4C&j&I{S1n6; zv*Ha`FE-Qif2h;~E&tq1ONF`gCsD#ldGkxR?SuVZ(2OizSy(zY59AQeG2* zQI_dnQElKf>cUf`$@cpFP!49(z1^)U7EkyNit&Zh&&)6DwQvLRhhxv0#6dksZ7f^6 zj(1b?KvdN~9VHka4p#T1;7%e} z4#*9Z1R_8@=P(=dN8X^@puLEMg6h7B`PVU@vg{Kd#5N`O#L%PR;Z-3atU2y?Hm$&n zkny5W7HG7QM>|i9g_+Yq-I?hS;P9?`n{P~FCKO?Xrao6RDYRXSWUfB36nE|g?a3-JyQk(}W2A)~RyC~|3CWs5u$@7=)9QkW)Yd1dFfz`~a)o5?+2X z4l(0iU3UO}Pc-hGd%%?kB#)8etT8UU@$ez_0^cvfo>na*Ii;hWU@BbdO|Y%1rHMdTSS?~|Ie8T! zxAlep&wG1iNpMV6!Aw|iM%q}o5_{rXQ9deW zX%d+kTKvT{%DDxhz4fGXpVp-e_eDkV0S#ExjVd02T5=hnO!_#TRh8^oMygTXyteWf zrzt}o`g|taJOT9wTp`SyX{ygwtYo*mi7(A@_lYI37UIU(T0)eM zDk*|wwQA5{cF2)Xw~05tYY&(8=UCU;@J~UUsoA;a0c@6GSP;-IV(0JNDSnIfYK4VN zNm0!=#|2lkUaytE2MGN@ztBq=R&a4)*z5}zDcM2RE47Z}zL&&lU2T3`hULGG{|rdF=%WZuehxHDccY98)wQ4Me?hRS|5o{%gv z%K)?Hr`OG^MG~w`5mdYub;ZFNPzi8cb|DWrns7QK!{1F$Q7Pf>Dbw+&YB~n5kK&-! zh+%G+_+!3)fUTIBR|mt&CD=`RlBX~jJ>(GU>&j}Nm)Z#)@1t1P@h-Ebg+i@gf|yre z2!PUodElP*sU;zXa^Nvq)iIQV{Qc{ghib3mko>Sj0djFP1`d_GXrxsa0Iw(S`#do$ zl=&n3B7e%l75;|ZN%NGHF|d2v_cvY$se zp!xY^`}{M&&t_8PJQY&3QOIdSpGBEb-W`H^{aTLnZWD+dZdLY^*d*%_o8RHIQU>D)1e|^Y>HqSEzS@Az` z-!r4kl)M<`sn4RGZG!#PT1x0HWq8u{QuzEV3`p~^yrOa6&u{zOC0<+#%cHvN)5wk{ z{s{sLElxR`cV)OCGlVi)!F9QhKLMfz<@>sIjRLtRjvn#?-n_%N10xP1aW^NX08V%kdqV6K{x( zm+t6;uw8{<`4Ibiv;7k4&9DI+Af#J~T`dwxi{E<#F)kA;$l(PUG!lFGLlkY`DZ#G{ z)*KveD(7tx;*M52XfL|`#7eM6TxUh>oL7SQ`lU7jg;K$DKJF0ZRMf+QWpOC(pD3eZ zKdOLWyUHidb@#l6M3FlCeLjN@qqArGR$Gva0m9Yo@i^+lNKyODTEF-8dXCkU$-}K` zWp0Z0@36MQg0TDzpTRs7Hn_YJeV5>mMmaEj&jepdR`|Q~K;{s$)NYpLBI-#9TpRb3 zzCZin;Z8z6HR#A3jB1@Z@4k2^Mge_-+VP+;!Elrtw?E`vQ0R**mV}e=BnxQ<-bRlP zj2>rXKRF!cq7qt~k_~QP>J?lS;W_QkJ+06pVRF=0wsQya@&K%YHN)T5Kb6mTj1LVO zxutX8E(?=u$0;B6iR3;Ic=3%rqq8^#$SW8h{*5;AKCX*F`e*J=?)RnQZu`ngC#It4 zLwaebQJ7XsIetW&I9%d+%3uaE8C=3vjVX8yJ=9{3B5eq_a_-R&s2^DV8x2FG;iI|V zu+%o#-~v$Fh&3lkfuTIE9D7b(I(OwGU^GD9*opswrfd4g@$#(_V~C@Rk&=2rh>!-+ zPj2%z(lZeR^z->u70OCnO5{BadNNCrZ~WIVlVp{p5C`8bgOf2E)tcm&q;oKB=rc-Q z-sG6ikJn}u`qFn^nheAqp+Jhmed0%$15GLXF`It)^jS6Yk7%$Vm*5M;CT(~A;Fd0w z2|RzES{@Xo^g(|UW%S#SZg~Huj8}BxP+78?S$-(`7?`esg#%*=CtEP>2|=PMn~kQw z)&A2$wfFe}p-9neGGXg;D3a>o@)(9Jl+XN5i~}AIRt1k%CdR(5MR~eu9eNKXGv84Z zhQY`aa)I=p52V;+^A=Qd2wuDRL!%XCK{?T&7R)OygPj-Zn{&Y_E{X5B(xn;@Pv|Tkh z)Pferl7deOPcOiIzqEa9ONQq)D=bnjj+oey#8A>#=qX+~ zyAQH6-Y6YWFJ(IhDxY~()G@68{tM03f#mKGanjbIdQVEj!av#ADC}}PH{FN8wHiRV z>nB1`B#=$M^3f=tYn9sSA9s10K`ZAFs=5w^+)3}V9kt;}$q(xIXE#L@%WFn8@5s3& zy;f|P$6_T6Eq_CBcc)8E>V2ZF;D|Dd2)EdGIX{k3gy(CXnHc`D>OJs`!KjTXD$Bou{Qi|Hm#IrPO04g0yYkIai;;~e zQP>TkEO#_;gw+xneNUe89c@HhSV>U!q)(_!>qv<FHV zH&ARfY~%T+rP#l?5psq1dVVF#BTjgHU29tqX3xEU7T(<2c$u85~7kqJ@8xsAJ9+S}zb@JM49znL{ z?P8KTamIZJMN32!cTy^nABE1yjwdT(E)|4GS&EcQVMAY zP9OTqBzL2dW2Owa`+@M1?qag^jRLOOHtL3Qlx8sX%X6NyuihZuoqB2RIr#3cwo~1) z?%YFioCu}mxpe-4DEP02TPNs>G{Ugs~_IbtZSY(RZso+Ev2O7w3!@$hwW+vN#^ zOg=SNC4wcQ0n71oeC%iPt*iQc`%o<1Qm}D^5;$MV7yS)@kSd>#vNV;6Lg`8K1UQek zFk=no%}ejo0F~3B4r<_TXPh2E+o(vUfbX=g<(J_&E)SiUQHQLg!9)NIDk=+DdU@W< zmH+@YRV?a*F2K1)OClPgG>4cN)gJkW9uX5t$NK&U&Fj*BaM75F+5JsM!ym z@2kuzWr;hv&p@RxrXCJx3$;<7J;vFQtiA*Nrn;*6Qz!x&#YkZ0nv(ATPmtCc^!JT_fC1%6VU_fbsGJP2*TKLb66iID*ylhnEAKqSXjD-=MHIzz#`p^ zFp~ObR4Q|{qf0Bo>t&c;(OMIg3-ffU%I9e&jh_G-uCK$bbnM6wlMWxR-2CddP8phX z&}Ly+D8Mp8y_1PdhU$k^Q;K5oCc$t7qRhNTG}RvLC;$KeEHW%}q*cM{+r8fQTD@m| z!88vSn%kX0WO*2OWKCM3TFy0ZNoX(@Bw~sdCzGCWxsb;aBI_I4^1*bFjkggpOc3;CI=`fnH(yB#5|1xY zsk4y@oa?*l!?12{Xmo&z+9%W+B^%WH#xR8J(F3YF&}uMY&DKU@3Z8Y6EjeYc5r+}b zo+6JCjrs`X==A4-HihT_gQnf)FjbULY#Yj14|RTCw*@}7uJW2f@2MO}Fu=aB$Xkhy z7px1v)Ui~}Hy8S)TRRe6BsM+Bnc)Q2PDJS;*n>B1z1XzxwngpKAb8_Gynqh6@h5;; zSZ9&>I;J`ex^qP=zG-{fgVO`j8ckmwF)cNT1PQWY00000000000000000000000A0 oZo3_o*gydifB*mh0000000000000000000000000000000IBQ%cK`qY literal 0 HcmV?d00001 diff --git a/examples/zigbee/esp_zigbee_gateway/images/esp-zigbee-standalone-modules.webp b/examples/zigbee/esp_zigbee_gateway/images/esp-zigbee-standalone-modules.webp new file mode 100644 index 0000000000000000000000000000000000000000..e1a50ba0b22b38fef093860da4eb7975f75e32a6 GIT binary patch literal 26888 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 -#include -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "driver/usb_serial_jtag.h" -#include "esp_coexist.h" + #include "esp_check.h" +#include "esp_err.h" #include "esp_log.h" -#include "esp_netif.h" -#include "esp_vfs_dev.h" -#include "esp_vfs_eventfd.h" -#include "esp_wifi.h" #include "nvs_flash.h" + +#if CONFIG_EXAMPLE_CONNECT_WIFI || CONFIG_EXAMPLE_CONNECT_ETHERNET +#include "esp_event.h" #include "protocol_examples_common.h" -#include "esp_zigbee_gateway.h" -#include "zb_config_platform.h" - -static const char *TAG = "ESP_ZB_GATEWAY"; - -/* Note: Please select the correct console output port based on the development board in menuconfig */ -#if CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG -esp_err_t esp_zb_gateway_console_init(void) -{ - esp_err_t ret = ESP_OK; - /* Disable buffering on stdin */ - setvbuf(stdin, NULL, _IONBF, 0); - - /* Minicom, screen, idf_monitor send CR when ENTER key is pressed */ - usb_serial_jtag_vfs_set_rx_line_endings(ESP_LINE_ENDINGS_CR); - /* Move the caret to the beginning of the next line on '\n' */ - usb_serial_jtag_vfs_set_tx_line_endings(ESP_LINE_ENDINGS_CRLF); - - /* Enable non-blocking mode on stdin and stdout */ - fcntl(fileno(stdout), F_SETFL, O_NONBLOCK); - fcntl(fileno(stdin), F_SETFL, O_NONBLOCK); - - usb_serial_jtag_driver_config_t usb_serial_jtag_config = USB_SERIAL_JTAG_DRIVER_CONFIG_DEFAULT(); - ret = usb_serial_jtag_driver_install(&usb_serial_jtag_config); - usb_serial_jtag_vfs_use_driver(); - uart_vfs_dev_register(); - return ret; -} +#if CONFIG_EXAMPLE_CONNECT_WIFI +#include "esp_wifi.h" +#endif #endif -static void bdb_start_top_level_commissioning_cb(uint8_t mode_mask) +#if CONFIG_AUTO_UPDATE_RCP +#include "zigbee_rcp.h" +#endif + +#if CONFIG_ESP_COEX_SW_COEXIST_ENABLE +#include "esp_coexist.h" +#endif + +#include "light_driver.h" +#include "alarm_timer.h" + +#include "esp_zigbee.h" + +#include "ezbee/zha.h" +#include "esp_zigbee_gateway.h" + +static const char *TAG = "ZIGBEE_GATEWAY"; + +#if (CONFIG_EXAMPLE_CONNECT_WIFI || CONFIG_EXAMPLE_CONNECT_ETHERNET) +static esp_err_t esp_zigbee_connect_netif(void) { - ESP_RETURN_ON_FALSE(esp_zb_bdb_start_top_level_commissioning(mode_mask) == ESP_OK, , TAG, "Failed to start Zigbee bdb commissioning"); + esp_err_t ret = ESP_OK; +#if CONFIG_EXAMPLE_CONNECT_WIFI + wifi_ps_type_t ps_type = WIFI_PS_NONE; +#if CONFIG_ESP_COEX_SW_COEXIST_ENABLE + ps_type = WIFI_PS_MIN_MODEM; +#endif /* CONFIG_ESP_COEX_SW_COEXIST_ENABLE */ +#endif /* CONFIG_EXAMPLE_CONNECT_WIFI */ + + ESP_RETURN_ON_ERROR(esp_netif_init(), TAG, "Failed to initialize network interface"); + ESP_RETURN_ON_ERROR(esp_event_loop_create_default(), TAG, "Failed to create event loop"); + +#if CONFIG_ESP_COEX_SW_COEXIST_ENABLE + esp_coex_wifi_i154_enable(); +#endif /* CONFIG_ESP_COEX_SW_COEXIST_ENABLE*/ + + ESP_RETURN_ON_ERROR(example_connect(), TAG, "Failed to connect to Network Interface"); + +#if CONFIG_EXAMPLE_CONNECT_WIFI + ESP_RETURN_ON_ERROR(esp_wifi_set_ps(ps_type), TAG, "Failed to set power save type for Wi-Fi"); +#endif /* CONFIG_EXAMPLE_CONNECT_WIFI */ + return ret; +} +#endif /* (CONFIG_EXAMPLE_CONNECT_WIFI || CONFIG_EXAMPLE_CONNECT_ETHERNET) */ + +static esp_err_t deferred_driver_init(void) +{ + static bool is_inited = false; + + ESP_RETURN_ON_FALSE(!is_inited, ESP_OK, TAG, "Deferred driver already initialized"); + + light_driver_init(false); + is_inited = true; + + return ESP_OK; } -void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) +static void esp_zigbee_alarm_bdb_commissioning(alarm_timer_arg_t arg) { - uint32_t *p_sg_p = signal_struct->p_app_signal; - esp_err_t err_status = signal_struct->esp_err_status; - esp_zb_app_signal_type_t sig_type = *p_sg_p; - esp_zb_zdo_signal_device_annce_params_t *dev_annce_params = NULL; + esp_zigbee_lock_acquire(portMAX_DELAY); + (void)ezb_bdb_start_top_level_commissioning(arg); + esp_zigbee_lock_release(); +} - switch (sig_type) { - case ESP_ZB_ZDO_SIGNAL_SKIP_STARTUP: -#if CONFIG_EXAMPLE_CONNECT_WIFI -#if CONFIG_ESP_COEX_SW_COEXIST_ENABLE - esp_coex_wifi_i154_enable(); -#endif /* CONFIG_ESP_COEX_SW_COEXIST_ENABLE */ - ESP_RETURN_ON_FALSE(example_connect() == ESP_OK, , TAG, "Failed to connect to Wi-Fi"); - ESP_RETURN_ON_FALSE(esp_wifi_set_ps(WIFI_PS_MIN_MODEM) == ESP_OK, , TAG, "Failed to set Wi-Fi minimum modem power save type"); -#endif /* CONFIG_EXAMPLE_CONNECT_WIFI */ +static bool esp_zigbee_app_signal_handler(const ezb_app_signal_t *app_signal) +{ + ezb_app_signal_type_t signal_type = ezb_app_signal_get_type(app_signal); + + switch (signal_type) { + case EZB_ZDO_SIGNAL_SKIP_STARTUP: ESP_LOGI(TAG, "Initialize Zigbee stack"); - esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_INITIALIZATION); + ezb_bdb_start_top_level_commissioning(EZB_BDB_MODE_INITIALIZATION); break; - case ESP_ZB_BDB_SIGNAL_DEVICE_FIRST_START: - case ESP_ZB_BDB_SIGNAL_DEVICE_REBOOT: - if (err_status == ESP_OK) { - ESP_LOGI(TAG, "Device started up in %s factory-reset mode", esp_zb_bdb_is_factory_new() ? "" : "non"); - if (esp_zb_bdb_is_factory_new()) { - ESP_LOGI(TAG, "Start network formation"); - esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_NETWORK_FORMATION); + case EZB_BDB_SIGNAL_DEVICE_FIRST_START: + case EZB_BDB_SIGNAL_DEVICE_REBOOT: { + ezb_bdb_comm_status_t status = *((ezb_bdb_comm_status_t *)ezb_app_signal_get_params(app_signal)); + if (status == EZB_BDB_STATUS_SUCCESS) { + ESP_LOGI(TAG, "Deferred driver initialization %s", deferred_driver_init() ? "failed" : "successful"); + ESP_LOGI(TAG, "Device started up in%s factory-reset mode", ezb_bdb_is_factory_new() ? "" : " non"); + if (ezb_bdb_is_factory_new()) { + ESP_ERROR_CHECK(ezb_bdb_start_top_level_commissioning(EZB_BDB_MODE_NETWORK_FORMATION)); } else { - esp_zb_bdb_open_network(180); - ESP_LOGI(TAG, "Device rebooted"); + ezb_bdb_open_network(180); + ESP_LOGI(TAG, "Device reboot"); } } else { - ESP_LOGE(TAG, "Failed to initialize Zigbee stack (status: %s)", esp_err_to_name(err_status)); + ESP_LOGW(TAG, "The %s failed with status(0x%02x), please retry", ezb_app_signal_to_string(signal_type), status); + alarm_timer_schedule(esp_zigbee_alarm_bdb_commissioning, EZB_BDB_MODE_INITIALIZATION, 1000); } - break; - case ESP_ZB_BDB_SIGNAL_FORMATION: - if (err_status == ESP_OK) { - esp_zb_ieee_addr_t ieee_address; - esp_zb_get_long_address(ieee_address); - ESP_LOGI(TAG, "Formed network successfully (Extended PAN ID: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x, PAN ID: 0x%04hx, Channel:%d, Short Address: 0x%04hx)", - ieee_address[7], ieee_address[6], ieee_address[5], ieee_address[4], - ieee_address[3], ieee_address[2], ieee_address[1], ieee_address[0], - esp_zb_get_pan_id(), esp_zb_get_current_channel(), esp_zb_get_short_address()); - esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_NETWORK_STEERING); + } break; + case EZB_BDB_SIGNAL_FORMATION: { + ezb_bdb_comm_status_t status = *((ezb_bdb_comm_status_t *)ezb_app_signal_get_params(app_signal)); + if (status == EZB_BDB_STATUS_SUCCESS) { + ezb_extpanid_t extended_pan_id; + ezb_nwk_get_extended_panid(&extended_pan_id); + ESP_LOGI(TAG, "Formed network successfully: PAN ID(0x%04hx, EXT: 0x%llx), Channel(%d), Short Address(0x%04hx)", + ezb_nwk_get_panid(), extended_pan_id.u64, ezb_nwk_get_current_channel(), ezb_nwk_get_short_address()); + ezb_bdb_start_top_level_commissioning(EZB_BDB_MODE_NETWORK_STEERING); } else { - ESP_LOGI(TAG, "Restart network formation (status: %s)", esp_err_to_name(err_status)); - esp_zb_scheduler_alarm((esp_zb_callback_t)bdb_start_top_level_commissioning_cb, ESP_ZB_BDB_MODE_NETWORK_FORMATION, 1000); + ESP_LOGW(TAG, "Failed to form network with status(0x%02x)", status); + alarm_timer_schedule(esp_zigbee_alarm_bdb_commissioning, EZB_BDB_MODE_NETWORK_FORMATION, 1000); } - break; - case ESP_ZB_BDB_SIGNAL_STEERING: - if (err_status == ESP_OK) { - ESP_LOGI(TAG, "Network steering started"); + } break; + case EZB_BDB_SIGNAL_STEERING: { + ezb_bdb_comm_status_t status = *((ezb_bdb_comm_status_t *)ezb_app_signal_get_params(app_signal)); + if (status == EZB_BDB_STATUS_SUCCESS) { + ESP_LOGI(TAG, "Network steering completed"); + } else { + ESP_LOGW(TAG, "Failed to steering network with status(0x%02x)", status); + alarm_timer_schedule(esp_zigbee_alarm_bdb_commissioning, EZB_BDB_MODE_NETWORK_FORMATION, 1000); } - break; - case ESP_ZB_ZDO_SIGNAL_DEVICE_ANNCE: - dev_annce_params = (esp_zb_zdo_signal_device_annce_params_t *)esp_zb_app_signal_get_params(p_sg_p); - ESP_LOGI(TAG, "New device commissioned or rejoined (short: 0x%04hx)", dev_annce_params->device_short_addr); - break; - case ESP_ZB_NWK_SIGNAL_PERMIT_JOIN_STATUS: - if (err_status == ESP_OK) { - if (*(uint8_t *)esp_zb_app_signal_get_params(p_sg_p)) { - ESP_LOGI(TAG, "Network(0x%04hx) is open for %d seconds", esp_zb_get_pan_id(), *(uint8_t *)esp_zb_app_signal_get_params(p_sg_p)); - } else { - ESP_LOGW(TAG, "Network(0x%04hx) closed, devices joining not allowed.", esp_zb_get_pan_id()); - } + } break; + case EZB_ZDO_SIGNAL_DEVICE_ANNCE: { + const ezb_zdo_signal_device_annce_params_t *dev_annce_params = ezb_app_signal_get_params(app_signal); + ESP_LOGI(TAG, "New device commissioned or rejoined (short: 0x%04hx)", dev_annce_params->short_addr); + } break; + case EZB_ZDO_SIGNAL_LEAVE_INDICATION: { + const ezb_zdo_signal_leave_indication_params_t *leave_ind_params = ezb_app_signal_get_params(app_signal); + ESP_LOGI(TAG, "Zigbee Node(0x%04hx) is leaving network", leave_ind_params->short_addr); + } break; + case EZB_NWK_SIGNAL_PERMIT_JOIN_STATUS: { + uint8_t duration = *(uint8_t *)ezb_app_signal_get_params(app_signal); + if (duration) { + ESP_LOGI(TAG, "Network(0x%04hx) is open for %d seconds", ezb_nwk_get_panid(), duration); + } else { + ESP_LOGW(TAG, "Network(0x%04hx) closed, devices joining not allowed.", ezb_nwk_get_panid()); } - break; - case ESP_ZB_ZDO_SIGNAL_PRODUCTION_CONFIG_READY: - ESP_LOGI(TAG, "Production configuration is %s", err_status == ESP_OK ? "ready" : "not present"); - esp_zb_set_node_descriptor_manufacturer_code(ESP_MANUFACTURER_CODE); - break; + } break; default: - ESP_LOGI(TAG, "ZDO signal: %s (0x%x), status: %s", esp_zb_zdo_signal_to_string(sig_type), sig_type, - esp_err_to_name(err_status)); + ESP_LOGI(TAG, "Zigbee APP Signal: %s(type: 0x%02x)", ezb_app_signal_to_string(signal_type), signal_type); + break; + } + return true; +} + +static void zcl_core_set_attr_value_handler(ezb_zcl_set_attr_value_message_t *message) +{ + ESP_RETURN_ON_FALSE(message, , TAG, "message is empty"); + ESP_LOGI(TAG, "ZCL SetAttributeValue message for endpoint(%d) cluster(0x%04x) %s with status(0x%02x)", message->info.dst_ep, + message->info.cluster_id, message->info.cluster_role == EZB_ZCL_CLUSTER_SERVER ? "server" : "client", + message->info.status); + if (message->info.cluster_id == EZB_ZCL_CLUSTER_ID_ON_OFF) { + light_driver_set_power(*(uint8_t *)message->in.attribute.data.value); + ESP_LOGI(TAG, "Set On/Off: %d", *(uint8_t *)message->in.attribute.data.value); + } else { + ESP_LOGW(TAG, "Unsupported cluster ID(0x%04x)", message->info.cluster_id); + } +} + +static void esp_zigbee_zcl_core_action_handler(ezb_zcl_core_action_callback_id_t callback_id, void *message) +{ + switch (callback_id) { + case EZB_ZCL_CORE_SET_ATTR_VALUE_CB_ID: + zcl_core_set_attr_value_handler(message); + break; + case EZB_ZCL_CORE_DEFAULT_RSP_CB_ID: { + ezb_zcl_cmd_default_rsp_message_t *default_rsp = (ezb_zcl_cmd_default_rsp_message_t *)message; + ESP_LOGI(TAG, "Received ZCL Default Response with status(0x%02x)", default_rsp->in.status_code); + } break; + default: + ESP_LOGW(TAG, "ZCL Core Action: ID(0x%04lx)", callback_id); break; } } -static void esp_zb_task(void *pvParameters) +esp_err_t esp_zigbee_create_zha_gateway_device(void) { - /* initialize Zigbee stack */ - esp_zb_cfg_t zb_nwk_cfg = ESP_ZB_ZC_CONFIG(); - esp_zb_init(&zb_nwk_cfg); - esp_zb_set_primary_network_channel_set(ESP_ZB_PRIMARY_CHANNEL_MASK); - esp_zb_ep_list_t *ep_list = esp_zb_ep_list_create(); - esp_zb_cluster_list_t *cluster_list = esp_zb_zcl_cluster_list_create(); - esp_zb_endpoint_config_t endpoint_config = { - .endpoint = ESP_ZB_GATEWAY_ENDPOINT, - .app_profile_id = ESP_ZB_AF_HA_PROFILE_ID, - .app_device_id = ESP_ZB_HA_REMOTE_CONTROL_DEVICE_ID, - .app_device_version = 0, - }; + ezb_af_device_desc_t dev_desc = ezb_af_create_device_desc(); + ezb_zha_custom_gateway_config_t gateway_cfg = EZB_ZHA_CUSTOM_GATEWAY_CONFIG(); + ezb_af_ep_desc_t ep_desc = ezb_zha_create_custom_gateway(ESP_ZIGBEE_CUSTOM_GATEWAY_EP_ID, &gateway_cfg); + ezb_zcl_cluster_desc_t basic_desc = {0}; + + basic_desc = ezb_af_endpoint_get_cluster_desc(ep_desc, EZB_ZCL_CLUSTER_ID_BASIC, EZB_ZCL_CLUSTER_SERVER); + ezb_zcl_basic_cluster_desc_add_attr(basic_desc, EZB_ZCL_ATTR_BASIC_MANUFACTURER_NAME_ID, (void *)ESP_MANUFACTURER_NAME); + ezb_zcl_basic_cluster_desc_add_attr(basic_desc, EZB_ZCL_ATTR_BASIC_MODEL_IDENTIFIER_ID, (void *)ESP_MODEL_IDENTIFIER); + ezb_af_endpoint_add_cluster_desc(ep_desc, ezb_zcl_on_off_create_cluster_desc(NULL, EZB_ZCL_CLUSTER_SERVER)); + + ESP_ERROR_CHECK(ezb_af_device_add_endpoint_desc(dev_desc, ep_desc)); + ESP_ERROR_CHECK(ezb_af_device_desc_register(dev_desc)); + + ezb_zcl_core_action_handler_register(esp_zigbee_zcl_core_action_handler); + + return ESP_OK; +} + +esp_err_t esp_zigbee_setup_commissioning(void) +{ + ezb_aps_secur_enable_distributed_security(false); + ESP_ERROR_CHECK(ezb_bdb_set_primary_channel_set(ESP_ZIGBEE_PRIMARY_CHANNEL_MASK)); + ESP_ERROR_CHECK(ezb_bdb_set_secondary_channel_set(ESP_ZIGBEE_SECONDARY_CHANNEL_MASK)); + ESP_ERROR_CHECK(ezb_app_signal_add_handler(esp_zigbee_app_signal_handler)); + + return ESP_OK; +} + +static void esp_zigbee_stack_main_task(void *pvParameters) +{ + esp_zigbee_config_t zigbee_config = ESP_ZIGBEE_DEFAULT_CONFIG(); + +#if CONFIG_AUTO_UPDATE_RCP + esp_rcp_update_config_t rcp_config = ESP_ZIGBEE_RCP_CONFIG(); + ESP_ERROR_CHECK(esp_zigbee_rcp_init(&rcp_config)); +#endif + + ESP_ERROR_CHECK(esp_zigbee_init(&zigbee_config)); + +#if CONFIG_AUTO_UPDATE_RCP + ESP_ERROR_CHECK(esp_zigbee_rcp_update()); +#endif + +#if (CONFIG_EXAMPLE_CONNECT_WIFI || CONFIG_EXAMPLE_CONNECT_ETHERNET) + ESP_ERROR_CHECK(esp_zigbee_connect_netif()); +#endif + + ESP_ERROR_CHECK(esp_zigbee_setup_commissioning()); + + ESP_ERROR_CHECK(esp_zigbee_create_zha_gateway_device()); + + ESP_ERROR_CHECK(esp_zigbee_start(false)); + + esp_zigbee_launch_mainloop(); + + esp_zigbee_deinit(); + +#if CONFIG_AUTO_UPDATE_RCP + esp_zigbee_rcp_deinit(); +#endif - esp_zb_attribute_list_t *basic_cluser = esp_zb_basic_cluster_create(NULL); - esp_zb_basic_cluster_add_attr(basic_cluser, ESP_ZB_ZCL_ATTR_BASIC_MANUFACTURER_NAME_ID, ESP_MANUFACTURER_NAME); - esp_zb_basic_cluster_add_attr(basic_cluser, ESP_ZB_ZCL_ATTR_BASIC_MODEL_IDENTIFIER_ID, ESP_MODEL_IDENTIFIER); - esp_zb_cluster_list_add_basic_cluster(cluster_list, basic_cluser, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); - esp_zb_cluster_list_add_identify_cluster(cluster_list, esp_zb_identify_cluster_create(NULL), ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); - esp_zb_ep_list_add_gateway_ep(ep_list, cluster_list, endpoint_config); - esp_zb_device_register(ep_list); - ESP_ERROR_CHECK(esp_zb_start(false)); - esp_zb_stack_main_loop(); vTaskDelete(NULL); } void app_main(void) { - esp_zb_platform_config_t config = { - .radio_config = ESP_ZB_DEFAULT_RADIO_CONFIG(), - .host_config = ESP_ZB_DEFAULT_HOST_CONFIG(), - }; - - ESP_ERROR_CHECK(esp_zb_platform_config(&config)); ESP_ERROR_CHECK(nvs_flash_init()); - ESP_ERROR_CHECK(esp_netif_init()); - ESP_ERROR_CHECK(esp_event_loop_create_default()); -#if CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG - ESP_ERROR_CHECK(esp_zb_gateway_console_init()); -#endif - xTaskCreate(esp_zb_task, "Zigbee_main", 8192, NULL, 5, NULL); + + ESP_LOGI(TAG, "Start ESP Zigbee Stack"); + xTaskCreate(esp_zigbee_stack_main_task, "Zigbee_main", 4096 * 2, NULL, 5, NULL); } diff --git a/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.h b/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.h index 03a880bb59c..169b36017ac 100644 --- a/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.h +++ b/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: LicenseRef-Included * @@ -12,62 +12,87 @@ * CONDITIONS OF ANY KIND, either express or implied. */ -#include "esp_err.h" -#include "esp_zigbee_core.h" +#pragma once -/* Zigbee Configuration */ -#define MAX_CHILDREN 10 /* the max amount of connected devices */ -#define INSTALLCODE_POLICY_ENABLE false /* enable the install code policy for security */ -#define ESP_ZB_PRIMARY_CHANNEL_MASK (1l << 13) /* Zigbee primary channel mask use in the example */ -#define ESP_ZB_GATEWAY_ENDPOINT 1 /* Gateway endpoint identifier */ -#define APP_PROD_CFG_CURRENT_VERSION 0x0001 /* Production configuration version */ +#define ESP_ZIGBEE_PRIMARY_CHANNEL_MASK (1U << CONFIG_ZB_EXAMPLE_PRIMARY_CHANNEL) +#define ESP_ZIGBEE_SECONDARY_CHANNEL_MASK CONFIG_ZB_EXAMPLE_SECONDARY_CHANNEL_MASK -/* Basic manufacturer information */ -#define ESP_MANUFACTURER_CODE 0x131B /* Customized manufacturer code */ -#define ESP_MANUFACTURER_NAME "\x09""ESPRESSIF" /* Customized manufacturer name */ -#define ESP_MODEL_IDENTIFIER "\x07"CONFIG_IDF_TARGET /* Customized model identifier */ +#define ESP_ZIGBEE_CUSTOM_GATEWAY_EP_ID (10) -/* RCP connection pins */ -#define HOST_RX_PIN_TO_RCP_TX 4 -#define HOST_TX_PIN_TO_RCP_RX 5 +#define ESP_ZIGBEE_STORAGE_PARTITION_NAME "nvs" -#define ESP_ZB_ZC_CONFIG() \ - { \ - .esp_zb_role = ESP_ZB_DEVICE_TYPE_COORDINATOR, \ - .install_code_policy = INSTALLCODE_POLICY_ENABLE, \ - .nwk_cfg.zczr_cfg = { \ - .max_children = MAX_CHILDREN, \ - }, \ +#define ESP_MANUFACTURER_NAME "\x09""ESPRESSIF" +#define ESP_MODEL_IDENTIFIER "\x07"CONFIG_IDF_TARGET + +#if defined(CONFIG_ZB_GW_RCP_CHIP_ESP32C6) +#define ESP_ZIGBEE_RCP_TARGET_CHIP ESP32C6_CHIP +#elif defined(CONFIG_ZB_GW_RCP_CHIP_ESP32H2) +#define ESP_ZIGBEE_RCP_TARGET_CHIP ESP32H2_CHIP +#else +#define ESP_ZIGBEE_RCP_TARGET_CHIP ESP_UNKNOWN_CHIP +#endif + +#define ESP_ZIGBEE_ZC_CONFIG() \ + { \ + .device_type = EZB_NWK_DEVICE_TYPE_COORDINATOR, \ + .install_code_policy = false, \ + .zczr_config = { \ + .max_children = 10, \ + }, \ } -#if CONFIG_ZB_RADIO_NATIVE -#define ESP_ZB_DEFAULT_RADIO_CONFIG() \ - { \ - .radio_mode = ZB_RADIO_MODE_NATIVE, \ +#if CONFIG_SOC_IEEE802154_SUPPORTED +#define ESP_ZIGBEE_PLATFORM_CONFIG() \ + { \ + .storage_partition_name = ESP_ZIGBEE_STORAGE_PARTITION_NAME, \ + .radio_config = { \ + .radio_mode = ESP_ZIGBEE_RADIO_MODE_NATIVE, \ + }, \ } #else -#define ESP_ZB_DEFAULT_RADIO_CONFIG() \ - { \ - .radio_mode = ZB_RADIO_MODE_UART_RCP, \ - .radio_uart_config = { \ - .port = 1, \ - .uart_config = \ - { \ - .baud_rate = 460800, \ - .data_bits = UART_DATA_8_BITS, \ - .parity = UART_PARITY_DISABLE, \ - .stop_bits = UART_STOP_BITS_1, \ - .flow_ctrl = UART_HW_FLOWCTRL_DISABLE, \ - .rx_flow_ctrl_thresh = 0, \ - .source_clk = UART_SCLK_DEFAULT, \ - }, \ - .rx_pin = HOST_RX_PIN_TO_RCP_TX, \ - .tx_pin = HOST_TX_PIN_TO_RCP_RX, \ - }, \ +#define ESP_ZIGBEE_UART_CONFIG() \ + { \ + .port = 1, \ + .uart_config = \ + { \ + .baud_rate = 460800, \ + .data_bits = UART_DATA_8_BITS, \ + .parity = UART_PARITY_DISABLE, \ + .stop_bits = UART_STOP_BITS_1, \ + .flow_ctrl = UART_HW_FLOWCTRL_DISABLE, \ + .rx_flow_ctrl_thresh = 0, \ + .source_clk = UART_SCLK_DEFAULT, \ + }, \ + .rx_pin = CONFIG_DEFAULT_PIN_TO_RCP_TX, \ + .tx_pin = CONFIG_DEFAULT_PIN_TO_RCP_RX, \ + } + +#define ESP_ZIGBEE_PLATFORM_CONFIG() \ + { \ + .storage_partition_name = ESP_ZIGBEE_STORAGE_PARTITION_NAME, \ + .radio_config = { \ + .radio_mode = ESP_ZIGBEE_RADIO_MODE_UART_RCP, \ + .radio_uart_config = ESP_ZIGBEE_UART_CONFIG(), \ + }, \ } #endif -#define ESP_ZB_DEFAULT_HOST_CONFIG() \ - { \ - .host_connection_mode = ZB_HOST_CONNECTION_MODE_NONE, \ - } +#define ESP_ZIGBEE_DEFAULT_CONFIG() \ + { \ + .device_config = ESP_ZIGBEE_ZC_CONFIG(), \ + .platform_config = ESP_ZIGBEE_PLATFORM_CONFIG(), \ + }; + +#define ESP_ZIGBEE_RCP_CONFIG() \ + { \ + .rcp_type = RCP_TYPE_UART, \ + .uart_rx_pin = CONFIG_DEFAULT_PIN_TO_RCP_TX, \ + .uart_tx_pin = CONFIG_DEFAULT_PIN_TO_RCP_RX, \ + .uart_port = 1, \ + .uart_baudrate = 115200, \ + .reset_pin = CONFIG_DEFAULT_PIN_TO_RCP_RESET, \ + .boot_pin = CONFIG_DEFAULT_PIN_TO_RCP_BOOT, \ + .update_baudrate = 460800, \ + .firmware_dir = "/" CONFIG_RCP_PARTITION_NAME "/ot_rcp", \ + .target_chip = ESP_ZIGBEE_RCP_TARGET_CHIP, \ + } diff --git a/examples/zigbee/esp_zigbee_gateway/main/idf_component.yml b/examples/zigbee/esp_zigbee_gateway/main/idf_component.yml index d3a34266983..8ba0e508e57 100644 --- a/examples/zigbee/esp_zigbee_gateway/main/idf_component.yml +++ b/examples/zigbee/esp_zigbee_gateway/main/idf_component.yml @@ -1,9 +1,13 @@ ## IDF Component Manager Manifest File dependencies: - espressif/esp-zboss-lib: "~1.6.0" - espressif/esp-zigbee-lib: "~1.6.0" - ## Required IDF version + espressif/esp_rcp_update: "~1.6.0" + espressif/esp-zigbee-lib: + version: ">=2.0.0" idf: - version: ">=5.0.0" + version: ">=5.2" + example_common: + path: ${IDF_PATH}/examples/zigbee/zb_common_components/example_common + light_driver: + path: ${IDF_PATH}/examples/zigbee/zb_common_components/light_driver protocol_examples_common: path: ${IDF_PATH}/examples/common_components/protocol_examples_common diff --git a/examples/zigbee/esp_zigbee_gateway/main/zigbee_rcp.c b/examples/zigbee/esp_zigbee_gateway/main/zigbee_rcp.c new file mode 100644 index 00000000000..67d1ebd21b4 --- /dev/null +++ b/examples/zigbee/esp_zigbee_gateway/main/zigbee_rcp.c @@ -0,0 +1,124 @@ +/* + * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: LicenseRef-Included + * + * This example code is in the Public Domain (or CC0 licensed, at your option.) + * + * Unless required by applicable law or agreed to in writing, this + * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. + */ + +#include +#include "esp_log.h" +#include "esp_check.h" +#include "sdkconfig.h" +#if CONFIG_AUTO_UPDATE_RCP +#include "esp_rcp_update.h" +#include "esp_spiffs.h" +#endif + +#if CONFIG_OPENTHREAD_SPINEL_ONLY +#include "esp_radio_spinel.h" +#define ESP_ZIGBEE_RCP_VERSION_MAX_SIZE 80 +#endif + +#include "esp_zigbee.h" + +#include "zigbee_rcp.h" + +#define TAG "ZIGBEE_RCP" + +#if CONFIG_AUTO_UPDATE_RCP + +static void rcp_update(void) +{ + ESP_LOGI(TAG, "Update RCP"); + /* Stop Zigbee stack during RCP update */ + esp_zigbee_deinit(); + if (esp_rcp_update() != ESP_OK) { + esp_rcp_mark_image_verified(false); + } + esp_restart(); +} + +static void rcp_fatal_failure_handler(void) +{ +#if CONFIG_AUTO_UPDATE_RCP + ESP_LOGW(TAG, "RCP failure, re-flashing RCP"); + rcp_update(); +#endif + esp_restart(); +} + +static void rcp_failure_handler(void) +{ + ESP_LOGW(TAG, "RCP failure, reset RCP"); + esp_rcp_reset(); +} + +esp_err_t esp_zigbee_rcp_update(void) +{ + char rcp_version[ESP_ZIGBEE_RCP_VERSION_MAX_SIZE] = {0}; + ESP_RETURN_ON_ERROR(esp_radio_spinel_rcp_version_get(rcp_version, ESP_RADIO_SPINEL_ZIGBEE), TAG, + "Failed to get rcp version from radio spinel"); +#if (CONFIG_AUTO_UPDATE_RCP) + char storage_rcp_version[ESP_ZIGBEE_RCP_VERSION_MAX_SIZE] = {0}; + if (esp_rcp_load_version_in_storage(storage_rcp_version, sizeof(storage_rcp_version)) == ESP_OK) { + if (strcmp(storage_rcp_version, rcp_version)) { + ESP_LOGI(TAG, "Update the RCP version from %s to %s", storage_rcp_version, rcp_version); + rcp_update(); + } else { + ESP_LOGI(TAG, "Running RCP version: %s", rcp_version); + esp_rcp_mark_image_verified(true); + } + } else { + ESP_LOGI(TAG, "No RCP firmware found in storage, reboot to try next image"); + esp_rcp_mark_image_verified(false); + esp_restart(); + } +#endif + return ESP_OK; +} + +static esp_err_t spiffs_init(void) +{ + esp_vfs_spiffs_conf_t rcp_fw_conf = { + .base_path = "/" CONFIG_RCP_PARTITION_NAME, + .partition_label = CONFIG_RCP_PARTITION_NAME, + .max_files = 10, + .format_if_mount_failed = false, + }; + return esp_vfs_spiffs_register(&rcp_fw_conf); +} + +static void spiffs_deinit(void) +{ + esp_vfs_spiffs_unregister(CONFIG_RCP_PARTITION_NAME); +} + +esp_err_t esp_zigbee_rcp_init(esp_rcp_update_config_t *config) +{ + ESP_RETURN_ON_FALSE(config != NULL, ESP_ERR_INVALID_ARG, TAG, "config is NULL"); + ESP_ERROR_CHECK(spiffs_init()); + ESP_ERROR_CHECK(esp_rcp_update_init(config)); +#if CONFIG_OPENTHREAD_SPINEL_ONLY + esp_radio_spinel_register_rcp_failure_handler(rcp_failure_handler, ESP_RADIO_SPINEL_ZIGBEE); + esp_radio_spinel_set_compatibility_error_callback(rcp_fatal_failure_handler); + esp_radio_spinel_set_coprocessor_reset_failure_callback(rcp_fatal_failure_handler); +#endif + return ESP_OK; +} + +void esp_zigbee_rcp_deinit(void) +{ +#if CONFIG_OPENTHREAD_SPINEL_ONLY + esp_radio_spinel_set_coprocessor_reset_failure_callback(NULL); + esp_radio_spinel_set_compatibility_error_callback(NULL); + esp_radio_spinel_register_rcp_failure_handler(NULL, ESP_RADIO_SPINEL_ZIGBEE); +#endif + esp_rcp_update_deinit(); + spiffs_deinit(); +} +#endif diff --git a/examples/zigbee/esp_zigbee_gateway/main/zigbee_rcp.h b/examples/zigbee/esp_zigbee_gateway/main/zigbee_rcp.h new file mode 100644 index 00000000000..1af0b43303d --- /dev/null +++ b/examples/zigbee/esp_zigbee_gateway/main/zigbee_rcp.h @@ -0,0 +1,22 @@ +/* + * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: LicenseRef-Included + * + * This example code is in the Public Domain (or CC0 licensed, at your option.) + * + * Unless required by applicable law or agreed to in writing, this + * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. + */ + +#pragma once + +#include "esp_err.h" +#include "esp_rcp_update.h" + +esp_err_t esp_zigbee_rcp_init(esp_rcp_update_config_t *config); + +void esp_zigbee_rcp_deinit(void); + +esp_err_t esp_zigbee_rcp_update(void); diff --git a/examples/zigbee/esp_zigbee_gateway/partitions.csv b/examples/zigbee/esp_zigbee_gateway/partitions.csv index 055152f11a6..63a03fb79c1 100644 --- a/examples/zigbee/esp_zigbee_gateway/partitions.csv +++ b/examples/zigbee/esp_zigbee_gateway/partitions.csv @@ -1,8 +1,8 @@ # Name, Type, SubType, Offset, Size, Flags # Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap -nvs, data, nvs, 0x9000, 0x6000, -phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 1400K, -zb_storage, data, fat, 0x16e000,16K, -zb_fct, data, fat, 0x172000,1K, -rcp_fw, data, spiffs, 0x173000,500k, +nvs, data, nvs, , 0x6000, +otadata, data, ota, , 0x2000, +phy_init, data, phy, , 0x1000, +factory, app, factory, , 1708K, +zb_fct, data, fat, , 1K, +rcp_fw, data, spiffs, , 640k, diff --git a/examples/zigbee/esp_zigbee_gateway/sdkconfig.defaults b/examples/zigbee/esp_zigbee_gateway/sdkconfig.defaults index d2995026210..e4887059c4d 100644 --- a/examples/zigbee/esp_zigbee_gateway/sdkconfig.defaults +++ b/examples/zigbee/esp_zigbee_gateway/sdkconfig.defaults @@ -8,12 +8,28 @@ CONFIG_PARTITION_TABLE_OFFSET=0x8000 CONFIG_PARTITION_TABLE_MD5=y # end of Partition Table -CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096 +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +# end of Serial flasher config # -# Zboss +# Event +# +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096 +#end of Event + + +# +# Zigbee # CONFIG_ZB_ENABLED=y CONFIG_ZB_ZCZR=y -# end of Zboss -# end of Component config +# end of Zigbee + +# +# ESP Zigbee gateway RCP update +# +CONFIG_AUTO_UPDATE_RCP=n +# end of ESP Zigbee gateway RCP update diff --git a/examples/zigbee/light_sample/HA_on_off_light/CMakeLists.txt b/examples/zigbee/light_sample/HA_on_off_light/CMakeLists.txt index 1c706695df5..e1b695bacd2 100644 --- a/examples/zigbee/light_sample/HA_on_off_light/CMakeLists.txt +++ b/examples/zigbee/light_sample/HA_on_off_light/CMakeLists.txt @@ -3,6 +3,9 @@ cmake_minimum_required(VERSION 3.22) include($ENV{IDF_PATH}/tools/cmake/project.cmake) +list(PREPEND SDKCONFIG_DEFAULTS + "${IDF_PATH}/examples/zigbee/zb_common_components/example_common/sdkconfig.mbedtls_minimal" + "sdkconfig.defaults") # "Trim" the build. Include the minimal set of components, main, and anything it depends on. idf_build_set_property(MINIMAL_BUILD ON) project(light_bulb) diff --git a/examples/zigbee/light_sample/HA_on_off_light/README.md b/examples/zigbee/light_sample/HA_on_off_light/README.md index 1078416c3ba..c5cf96b392c 100644 --- a/examples/zigbee/light_sample/HA_on_off_light/README.md +++ b/examples/zigbee/light_sample/HA_on_off_light/README.md @@ -1,9 +1,9 @@ -| Supported Targets | ESP32-C5 | ESP32-C6 | ESP32-H2 | -| ----------------- | -------- | -------- | -------- | +| Supported Targets | ESP32-C5 | ESP32-C6 | ESP32-H2 | ESP32-H21 | ESP32-H4 | ESP32-S31 | +| ----------------- | -------- | -------- | -------- | --------- | -------- | --------- | # Light Bulb Example -This test code shows how to configure Zigbee end device and use it as HA on/off light bulb. +This example demonstrates how to configure a Home Automation on/off light on a Zigbee Coordinator using ESP Zigbee SDK v2. The ESP Zigbee SDK provides more examples and tools for productization: * [ESP Zigbee SDK Docs](https://docs.espressif.com/projects/esp-zigbee-sdk) @@ -11,13 +11,13 @@ The ESP Zigbee SDK provides more examples and tools for productization: ## Hardware Required -* One development board with ESP32-H2 SoC acting as Zigbee end-device (loaded with HA_on_off_light example) +* One 802.15.4-enabled development board running this example as a Zigbee Coordinator * A USB cable for power supply and programming -* Choose another ESP32-H2 as Zigbee coordinator (see [HA_on_off_switch example](../HA_on_off_switch)) +* A second board running as a Zigbee Router/End Device (see [HA_on_off_switch](../HA_on_off_switch)) ## Configure the project -Before project configuration and build, make sure to set the correct chip target using `idf.py --preview set-target TARGET` command. +Before project configuration and build, make sure to set the correct chip target using `idf.py set-target TARGET`. ## Erase the NVRAM @@ -31,36 +31,28 @@ Build the project, flash it to the board, and start the monitor tool to view the ## Example Output -As you run the example, you will see the following log: +When the program starts, the board forms a Zigbee network and opens it for joining. As you run the example, you will see output similar to: ``` -I (403) app_start: Starting scheduler on CPU0 -I (408) main_task: Started on CPU0 -I (408) main_task: Calling app_main() -I (428) phy: phy_version: 230,2, 9aae6ea, Jan 15 2024, 11:17:12 -I (428) phy: libbtbb version: 944f18e, Jan 15 2024, 11:17:25 -I (438) main_task: Returned from app_main() -I (548) ESP_ZB_ON_OFF_LIGHT: ZDO signal: ZDO Config Ready (0x17), status: ESP_FAIL -I (548) ESP_ZB_ON_OFF_LIGHT: Initialize Zigbee stack -W (548) rmt: channel resolution loss, real=10666666 -I (558) gpio: GPIO[8]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 -I (548) ESP_ZB_ON_OFF_LIGHT: Deferred driver initialization successful -I (568) ESP_ZB_ON_OFF_LIGHT: Device started up in factory-reset mode -I (578) ESP_ZB_ON_OFF_LIGHT: Start network steering -I (3558) ESP_ZB_ON_OFF_LIGHT: Joined network successfully (Extended PAN ID: 74:4d:bd:ff:fe:63:f7:30, PAN ID: 0x13af, Channel:13, Short Address: 0x7c16) -I (10238) ESP_ZB_ON_OFF_LIGHT: Received message: endpoint(10), cluster(0x6), attribute(0x0), data size(1) -I (10238) ESP_ZB_ON_OFF_LIGHT: Light sets to On -I (10798) ESP_ZB_ON_OFF_LIGHT: Received message: endpoint(10), cluster(0x6), attribute(0x0), data size(1) -I (10798) ESP_ZB_ON_OFF_LIGHT: Light sets to Off -I (11228) ESP_ZB_ON_OFF_LIGHT: Received message: endpoint(10), cluster(0x6), attribute(0x0), data size(1) -I (11228) ESP_ZB_ON_OFF_LIGHT: Light sets to On -I (11618) ESP_ZB_ON_OFF_LIGHT: Received message: endpoint(10), cluster(0x6), attribute(0x0), data size(1) -I (11618) ESP_ZB_ON_OFF_LIGHT: Light sets to Off +I (435) ON_OFF_LIGHT: Start ESP Zigbee Stack +I (475) ON_OFF_LIGHT: Initialize Zigbee stack +I (475) ON_OFF_LIGHT: Deferred driver initialization successful +I (485) ON_OFF_LIGHT: Device started up in factory-reset mode +I (795) ON_OFF_LIGHT: Formed network successfully: PAN ID(0x3051, EXT: 0x4831b7fffec183f0), Channel(13), Short Address(0x0000) +I (1175) ON_OFF_LIGHT: Network steering completed +I (3705) ON_OFF_LIGHT: New device commissioned or rejoined(short: 0xa515) ``` ## Light Control Functions - * By toggling the switch button (BOOT) on the ESP32-H2 board loaded with the `HA_on_off_switch` example, the LED on this board loaded with `HA_on_off_light` example will be on and off. +* By toggling the switch button (BOOT) on the board loaded with the `HA_on_off_switch` example, the LED on this board will turn on and off. + +``` +I (26905) ON_OFF_LIGHT: ZCL SetAttributeValue message for endpoint(10) cluster(0x0006) server with status(0x00) +I (26905) ON_OFF_LIGHT: Set On/Off: 1 +I (27535) ON_OFF_LIGHT: ZCL SetAttributeValue message for endpoint(10) cluster(0x0006) server with status(0x00) +I (27535) ON_OFF_LIGHT: Set On/Off: 0 +``` ## Troubleshooting diff --git a/examples/zigbee/light_sample/HA_on_off_light/main/CMakeLists.txt b/examples/zigbee/light_sample/HA_on_off_light/main/CMakeLists.txt index 8c00feb33ad..1c98b7bfbb6 100644 --- a/examples/zigbee/light_sample/HA_on_off_light/main/CMakeLists.txt +++ b/examples/zigbee/light_sample/HA_on_off_light/main/CMakeLists.txt @@ -1,5 +1,3 @@ -idf_component_register( - SRC_DIRS "." - INCLUDE_DIRS "." - PRIV_REQUIRES nvs_flash esp_driver_uart ieee802154 -) +idf_component_register(SRC_DIRS "." + PRIV_INCLUDE_DIRS "." + PRIV_REQUIRES nvs_flash esp_driver_uart ieee802154) diff --git a/examples/zigbee/light_sample/HA_on_off_light/main/esp_zb_light.c b/examples/zigbee/light_sample/HA_on_off_light/main/esp_zb_light.c index 916baa2fc5e..119dd66fd5b 100644 --- a/examples/zigbee/light_sample/HA_on_off_light/main/esp_zb_light.c +++ b/examples/zigbee/light_sample/HA_on_off_light/main/esp_zb_light.c @@ -1,7 +1,7 @@ /* - * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD * - * SPDX-License-Identifier: LicenseRef-Included + * SPDX-License-Identifier: LicenseRef-Included * * Zigbee HA_on_off_light Example * @@ -11,141 +11,188 @@ * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. */ -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" + #include "esp_check.h" +#include "esp_err.h" #include "esp_log.h" #include "nvs_flash.h" -#include "ha/esp_zigbee_ha_standard.h" -#include "zcl_utility.h" + +#include "light_driver.h" +#include "alarm_timer.h" + +#include "esp_zigbee.h" +#include "ezbee/zha.h" + #include "esp_zb_light.h" -#if !defined ZB_ED_ROLE -#error Define ZB_ED_ROLE in idf.py menuconfig to compile light (End Device) source code. -#endif +static const char *TAG = "ON_OFF_LIGHT"; -static const char *TAG = "ESP_ZB_ON_OFF_LIGHT"; -/********************* Define functions **************************/ -static esp_err_t deferred_driver_init(void) +esp_err_t deferred_driver_init(void) { - light_driver_init(LIGHT_DEFAULT_OFF); + static bool is_inited = false; + + ESP_RETURN_ON_FALSE(!is_inited, ESP_OK, TAG, "Deferred driver already initialized"); + + light_driver_init(false); + is_inited = true; + return ESP_OK; } -static void bdb_start_top_level_commissioning_cb(uint8_t mode_mask) +static void esp_zigbee_alarm_bdb_commissioning(alarm_timer_arg_t arg) { - ESP_RETURN_ON_FALSE(esp_zb_bdb_start_top_level_commissioning(mode_mask) == ESP_OK, , TAG, "Failed to start Zigbee commissioning"); + esp_zigbee_lock_acquire(portMAX_DELAY); + (void)ezb_bdb_start_top_level_commissioning(arg); + esp_zigbee_lock_release(); } -void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) +static bool esp_zigbee_app_signal_handler(const ezb_app_signal_t *app_signal) { - uint32_t *p_sg_p = signal_struct->p_app_signal; - esp_err_t err_status = signal_struct->esp_err_status; - esp_zb_app_signal_type_t sig_type = *p_sg_p; - switch (sig_type) { - case ESP_ZB_ZDO_SIGNAL_SKIP_STARTUP: + ezb_app_signal_type_t signal_type = ezb_app_signal_get_type(app_signal); + + switch (signal_type) { + case EZB_ZDO_SIGNAL_SKIP_STARTUP: ESP_LOGI(TAG, "Initialize Zigbee stack"); - esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_INITIALIZATION); + ezb_bdb_start_top_level_commissioning(EZB_BDB_MODE_INITIALIZATION); break; - case ESP_ZB_BDB_SIGNAL_DEVICE_FIRST_START: - case ESP_ZB_BDB_SIGNAL_DEVICE_REBOOT: - if (err_status == ESP_OK) { + case EZB_BDB_SIGNAL_DEVICE_FIRST_START: + case EZB_BDB_SIGNAL_DEVICE_REBOOT: { + ezb_bdb_comm_status_t status = *((ezb_bdb_comm_status_t *)ezb_app_signal_get_params(app_signal)); + if (status == EZB_BDB_STATUS_SUCCESS) { ESP_LOGI(TAG, "Deferred driver initialization %s", deferred_driver_init() ? "failed" : "successful"); - ESP_LOGI(TAG, "Device started up in %s factory-reset mode", esp_zb_bdb_is_factory_new() ? "" : "non"); - if (esp_zb_bdb_is_factory_new()) { - ESP_LOGI(TAG, "Start network steering"); - esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_NETWORK_STEERING); + ESP_LOGI(TAG, "Device started up in%s factory-reset mode", ezb_bdb_is_factory_new() ? "" : " non"); + if (ezb_bdb_is_factory_new()) { + ezb_bdb_start_top_level_commissioning(EZB_BDB_MODE_NETWORK_FORMATION); } else { - ESP_LOGI(TAG, "Device rebooted"); + ezb_bdb_open_network(180); + ESP_LOGI(TAG, "Device reboot"); } } else { - /* commissioning failed */ - ESP_LOGW(TAG, "Failed to initialize Zigbee stack (status: %s)", esp_err_to_name(err_status)); + ESP_LOGW(TAG, "%s failed with status(0x%02x), please retry", ezb_app_signal_to_string(signal_type), status); + alarm_timer_schedule(esp_zigbee_alarm_bdb_commissioning, EZB_BDB_MODE_INITIALIZATION, 1000); } - break; - case ESP_ZB_BDB_SIGNAL_STEERING: - if (err_status == ESP_OK) { - esp_zb_ieee_addr_t extended_pan_id; - esp_zb_get_extended_pan_id(extended_pan_id); - ESP_LOGI(TAG, "Joined network successfully (Extended PAN ID: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x, PAN ID: 0x%04hx, Channel:%d, Short Address: 0x%04hx)", - extended_pan_id[7], extended_pan_id[6], extended_pan_id[5], extended_pan_id[4], - extended_pan_id[3], extended_pan_id[2], extended_pan_id[1], extended_pan_id[0], - esp_zb_get_pan_id(), esp_zb_get_current_channel(), esp_zb_get_short_address()); + } break; + case EZB_BDB_SIGNAL_FORMATION: { + ezb_bdb_comm_status_t status = *((ezb_bdb_comm_status_t *)ezb_app_signal_get_params(app_signal)); + if (status == EZB_BDB_STATUS_SUCCESS) { + ezb_extpanid_t extended_pan_id; + ezb_nwk_get_extended_panid(&extended_pan_id); + ESP_LOGI(TAG, "Formed network successfully: PAN ID(0x%04hx, EXT: 0x%llx), Channel(%d), Short Address(0x%04hx)", + ezb_nwk_get_panid(), extended_pan_id.u64, ezb_nwk_get_current_channel(), ezb_nwk_get_short_address()); + ezb_bdb_start_top_level_commissioning(EZB_BDB_MODE_NETWORK_STEERING); } else { - ESP_LOGI(TAG, "Network steering was not successful (status: %s)", esp_err_to_name(err_status)); - esp_zb_scheduler_alarm((esp_zb_callback_t)bdb_start_top_level_commissioning_cb, ESP_ZB_BDB_MODE_NETWORK_STEERING, 1000); + ESP_LOGW(TAG, "Failed to form network with status(0x%02x)", status); + alarm_timer_schedule(esp_zigbee_alarm_bdb_commissioning, EZB_BDB_MODE_NETWORK_FORMATION, 1000); } - break; + } break; + case EZB_BDB_SIGNAL_STEERING: { + ezb_bdb_comm_status_t status = *((ezb_bdb_comm_status_t *)ezb_app_signal_get_params(app_signal)); + if (status == EZB_BDB_STATUS_SUCCESS) { + ESP_LOGI(TAG, "Network steering completed"); + } else { + ESP_LOGW(TAG, "Failed to steering network with status(0x%02x)", status); + alarm_timer_schedule(esp_zigbee_alarm_bdb_commissioning, EZB_BDB_MODE_NETWORK_STEERING, 1000); + } + } break; + case EZB_ZDO_SIGNAL_DEVICE_ANNCE: { + const ezb_zdo_signal_device_annce_params_t *dev_annce_params = ezb_app_signal_get_params(app_signal); + ESP_LOGI(TAG, "New device commissioned or rejoined(short: 0x%04hx)", dev_annce_params->short_addr); + } break; + case EZB_NWK_SIGNAL_PERMIT_JOIN_STATUS: { + uint8_t duration = *(uint8_t *)ezb_app_signal_get_params(app_signal); + if (duration) { + ESP_LOGI(TAG, "Network(0x%04hx) is open for %d seconds", ezb_nwk_get_panid(), duration); + } else { + ESP_LOGW(TAG, "Network(0x%04hx) closed, devices joining not allowed.", ezb_nwk_get_panid()); + } + } break; default: - ESP_LOGI(TAG, "ZDO signal: %s (0x%x), status: %s", esp_zb_zdo_signal_to_string(sig_type), sig_type, - esp_err_to_name(err_status)); + ESP_LOGI(TAG, "Zigbee APP Signal: %s(type: 0x%02x)", ezb_app_signal_to_string(signal_type), signal_type); break; } + return true; } -static esp_err_t zb_attribute_handler(const esp_zb_zcl_set_attr_value_message_t *message) +static void zcl_core_set_attr_value_handler(ezb_zcl_set_attr_value_message_t *message) { - esp_err_t ret = ESP_OK; - bool light_state = 0; - - ESP_RETURN_ON_FALSE(message, ESP_FAIL, TAG, "Empty message"); - ESP_RETURN_ON_FALSE(message->info.status == ESP_ZB_ZCL_STATUS_SUCCESS, ESP_ERR_INVALID_ARG, TAG, "Received message: error status(%d)", - message->info.status); - ESP_LOGI(TAG, "Received message: endpoint(%d), cluster(0x%x), attribute(0x%x), data size(%d)", message->info.dst_endpoint, message->info.cluster, - message->attribute.id, message->attribute.data.size); - if (message->info.dst_endpoint == HA_ESP_LIGHT_ENDPOINT) { - if (message->info.cluster == ESP_ZB_ZCL_CLUSTER_ID_ON_OFF) { - if (message->attribute.id == ESP_ZB_ZCL_ATTR_ON_OFF_ON_OFF_ID && message->attribute.data.type == ESP_ZB_ZCL_ATTR_TYPE_BOOL) { - light_state = message->attribute.data.value ? *(bool *)message->attribute.data.value : light_state; - ESP_LOGI(TAG, "Light sets to %s", light_state ? "On" : "Off"); - light_driver_set_power(light_state); - } - } + ESP_RETURN_ON_FALSE(message, , TAG, "message is empty"); + ESP_LOGI(TAG, "ZCL SetAttributeValue message for endpoint(%d) cluster(0x%04x) %s with status(0x%02x)", message->info.dst_ep, + message->info.cluster_id, message->info.cluster_role == EZB_ZCL_CLUSTER_SERVER ? "server" : "client", + message->info.status); + if (message->info.cluster_id == EZB_ZCL_CLUSTER_ID_ON_OFF) { + light_driver_set_power(*(uint8_t *)message->in.attribute.data.value); + ESP_LOGI(TAG, "Set On/Off: %d", *(uint8_t *)message->in.attribute.data.value); + } else { + ESP_LOGW(TAG, "Unsupported cluster ID(0x%04x)", message->info.cluster_id); } - return ret; } -static esp_err_t zb_action_handler(esp_zb_core_action_callback_id_t callback_id, const void *message) +static void esp_zigbee_zcl_core_action_handler(ezb_zcl_core_action_callback_id_t callback_id, void *message) { - esp_err_t ret = ESP_OK; switch (callback_id) { - case ESP_ZB_CORE_SET_ATTR_VALUE_CB_ID: - ret = zb_attribute_handler((esp_zb_zcl_set_attr_value_message_t *)message); + case EZB_ZCL_CORE_SET_ATTR_VALUE_CB_ID: + zcl_core_set_attr_value_handler(message); break; + case EZB_ZCL_CORE_DEFAULT_RSP_CB_ID: { + ezb_zcl_cmd_default_rsp_message_t *default_rsp = (ezb_zcl_cmd_default_rsp_message_t *)message; + ESP_LOGI(TAG, "Received ZCL Default Response with status(0x%02x)", default_rsp->in.status_code); + } break; default: - ESP_LOGW(TAG, "Receive Zigbee action(0x%x) callback", callback_id); + ESP_LOGW(TAG, "ZCL Core Action: ID(0x%04lx)", callback_id); break; } - return ret; } -static void esp_zb_task(void *pvParameters) +esp_err_t esp_zigbee_create_zha_on_off_light_device(void) { - /* initialize Zigbee stack */ - esp_zb_cfg_t zb_nwk_cfg = ESP_ZB_ZED_CONFIG(); - esp_zb_init(&zb_nwk_cfg); - esp_zb_on_off_light_cfg_t light_cfg = ESP_ZB_DEFAULT_ON_OFF_LIGHT_CONFIG(); - esp_zb_ep_list_t *esp_zb_on_off_light_ep = esp_zb_on_off_light_ep_create(HA_ESP_LIGHT_ENDPOINT, &light_cfg); - zcl_basic_manufacturer_info_t info = { - .manufacturer_name = ESP_MANUFACTURER_NAME, - .model_identifier = ESP_MODEL_IDENTIFIER, - }; + ezb_af_device_desc_t dev_desc = ezb_af_create_device_desc(); + ezb_zha_on_off_light_config_t light_cfg = EZB_ZHA_ON_OFF_LIGHT_CONFIG(); + ezb_af_ep_desc_t ep_desc = ezb_zha_create_on_off_light(ESP_ZIGBEE_HA_ON_OFF_LIGHT_EP_ID, &light_cfg); + ezb_zcl_cluster_desc_t basic_desc = {0}; - esp_zcl_utility_add_ep_basic_manufacturer_info(esp_zb_on_off_light_ep, HA_ESP_LIGHT_ENDPOINT, &info); - esp_zb_device_register(esp_zb_on_off_light_ep); - esp_zb_core_action_handler_register(zb_action_handler); - esp_zb_set_primary_network_channel_set(ESP_ZB_PRIMARY_CHANNEL_MASK); - ESP_ERROR_CHECK(esp_zb_start(false)); - esp_zb_stack_main_loop(); + basic_desc = ezb_af_endpoint_get_cluster_desc(ep_desc, EZB_ZCL_CLUSTER_ID_BASIC, EZB_ZCL_CLUSTER_SERVER); + ezb_zcl_basic_cluster_desc_add_attr(basic_desc, EZB_ZCL_ATTR_BASIC_MANUFACTURER_NAME_ID, (void *)ESP_MANUFACTURER_NAME); + ezb_zcl_basic_cluster_desc_add_attr(basic_desc, EZB_ZCL_ATTR_BASIC_MODEL_IDENTIFIER_ID, (void *)ESP_MODEL_IDENTIFIER); + ESP_ERROR_CHECK(ezb_af_device_add_endpoint_desc(dev_desc, ep_desc)); + ESP_ERROR_CHECK(ezb_af_device_desc_register(dev_desc)); + + ezb_zcl_core_action_handler_register(esp_zigbee_zcl_core_action_handler); + + return ESP_OK; +} + +esp_err_t esp_zigbee_setup_commissioning(void) +{ + ezb_aps_secur_enable_distributed_security(false); + ESP_ERROR_CHECK(ezb_bdb_set_primary_channel_set(ESP_ZIGBEE_PRIMARY_CHANNEL_MASK)); + ESP_ERROR_CHECK(ezb_bdb_set_secondary_channel_set(ESP_ZIGBEE_SECONDARY_CHANNEL_MASK)); + ESP_ERROR_CHECK(ezb_app_signal_add_handler(esp_zigbee_app_signal_handler)); + + return ESP_OK; +} + +static void esp_zigbee_stack_main_task(void *pvParameters) +{ + esp_zigbee_config_t config = ESP_ZIGBEE_DEFAULT_CONFIG(); + + ESP_ERROR_CHECK(esp_zigbee_init(&config)); + + ESP_ERROR_CHECK(esp_zigbee_setup_commissioning()); + + ESP_ERROR_CHECK(esp_zigbee_create_zha_on_off_light_device()); + + ESP_ERROR_CHECK(esp_zigbee_start(false)); + + esp_zigbee_launch_mainloop(); + + esp_zigbee_deinit(); + + vTaskDelete(NULL); } void app_main(void) { - esp_zb_platform_config_t config = { - .radio_config = ESP_ZB_DEFAULT_RADIO_CONFIG(), - .host_config = ESP_ZB_DEFAULT_HOST_CONFIG(), - }; ESP_ERROR_CHECK(nvs_flash_init()); - ESP_ERROR_CHECK(esp_zb_platform_config(&config)); - xTaskCreate(esp_zb_task, "Zigbee_main", 4096, NULL, 5, NULL); + ESP_LOGI(TAG, "Start ESP Zigbee Stack"); + xTaskCreate(esp_zigbee_stack_main_task, "Zigbee_main", 4096, NULL, 5, NULL); } diff --git a/examples/zigbee/light_sample/HA_on_off_light/main/esp_zb_light.h b/examples/zigbee/light_sample/HA_on_off_light/main/esp_zb_light.h index ed2da9d632d..f7aeb106c56 100644 --- a/examples/zigbee/light_sample/HA_on_off_light/main/esp_zb_light.h +++ b/examples/zigbee/light_sample/HA_on_off_light/main/esp_zb_light.h @@ -1,7 +1,7 @@ /* - * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD * - * SPDX-License-Identifier: LicenseRef-Included + * SPDX-License-Identifier: LicenseRef-Included * * Zigbee HA_on_off_light Example * @@ -12,36 +12,41 @@ * CONDITIONS OF ANY KIND, either express or implied. */ -#include "esp_zigbee_core.h" -#include "light_driver.h" +#pragma once -/* Zigbee configuration */ -#define INSTALLCODE_POLICY_ENABLE false /* enable the install code policy for security */ -#define ED_AGING_TIMEOUT ESP_ZB_ED_AGING_TIMEOUT_64MIN /* aging timeout of device */ -#define ED_KEEP_ALIVE 3000 /* 3000 millisecond */ -#define HA_ESP_LIGHT_ENDPOINT 10 /* esp light bulb device endpoint, used to process light controlling commands */ -#define ESP_ZB_PRIMARY_CHANNEL_MASK ESP_ZB_TRANSCEIVER_ALL_CHANNELS_MASK /* Zigbee primary channel mask use in the example */ +#define ESP_ZIGBEE_PRIMARY_CHANNEL_MASK (1U << CONFIG_ZB_EXAMPLE_PRIMARY_CHANNEL) +#define ESP_ZIGBEE_SECONDARY_CHANNEL_MASK CONFIG_ZB_EXAMPLE_SECONDARY_CHANNEL_MASK -/* Basic manufacturer information */ -#define ESP_MANUFACTURER_NAME "\x09""ESPRESSIF" /* Customized manufacturer name */ -#define ESP_MODEL_IDENTIFIER "\x07"CONFIG_IDF_TARGET /* Customized model identifier */ +#define ESP_ZIGBEE_HA_ON_OFF_LIGHT_EP_ID (10) -#define ESP_ZB_ZED_CONFIG() \ - { \ - .esp_zb_role = ESP_ZB_DEVICE_TYPE_ED, \ - .install_code_policy = INSTALLCODE_POLICY_ENABLE, \ - .nwk_cfg.zed_cfg = { \ - .ed_timeout = ED_AGING_TIMEOUT, \ - .keep_alive = ED_KEEP_ALIVE, \ - }, \ +#define ESP_ZIGBEE_STORAGE_PARTITION_NAME "nvs" + +#define ESP_MANUFACTURER_NAME "\x09""ESPRESSIF" +#define ESP_MODEL_IDENTIFIER "\x07"CONFIG_IDF_TARGET + +#define ESP_ZIGBEE_ZC_CONFIG() \ + { \ + .device_type = EZB_NWK_DEVICE_TYPE_COORDINATOR, \ + .install_code_policy = false, \ + .zczr_config = { \ + .max_children = 10, \ + }, \ } -#define ESP_ZB_DEFAULT_RADIO_CONFIG() \ - { \ - .radio_mode = ZB_RADIO_MODE_NATIVE, \ +#if CONFIG_SOC_IEEE802154_SUPPORTED +#define ESP_ZIGBEE_PLATFORM_CONFIG() \ + { \ + .storage_partition_name = ESP_ZIGBEE_STORAGE_PARTITION_NAME, \ + .radio_config = { \ + .radio_mode = ESP_ZIGBEE_RADIO_MODE_NATIVE, \ + }, \ } +#else +#warning "The example is not for IEEE 802.15.4-disabled SoC usage, please refer to esp_zigbee_gateway for RCP configuration" +#endif -#define ESP_ZB_DEFAULT_HOST_CONFIG() \ - { \ - .host_connection_mode = ZB_HOST_CONNECTION_MODE_NONE, \ - } +#define ESP_ZIGBEE_DEFAULT_CONFIG() \ + { \ + .device_config = ESP_ZIGBEE_ZC_CONFIG(), \ + .platform_config = ESP_ZIGBEE_PLATFORM_CONFIG(), \ + }; diff --git a/examples/zigbee/light_sample/HA_on_off_light/main/idf_component.yml b/examples/zigbee/light_sample/HA_on_off_light/main/idf_component.yml index b025d290a53..b85c1d36688 100644 --- a/examples/zigbee/light_sample/HA_on_off_light/main/idf_component.yml +++ b/examples/zigbee/light_sample/HA_on_off_light/main/idf_component.yml @@ -1,10 +1,11 @@ ## IDF Component Manager Manifest File dependencies: - espressif/esp-zboss-lib: "~1.6.0" - espressif/esp-zigbee-lib: "~1.6.0" - espressif/led_strip: "~3.0.0" ## Required IDF version idf: - version: ">=5.0.0" - examples_utils: - path: ${IDF_PATH}/examples/zigbee/zb_common_components/examples_utils + version: ">=5.2" + espressif/esp-zigbee-lib: + version: ">=2.0.0" + example_common: + path: ${IDF_PATH}/examples/zigbee/zb_common_components/example_common + light_driver: + path: ${IDF_PATH}/examples/zigbee/zb_common_components/light_driver diff --git a/examples/zigbee/light_sample/HA_on_off_light/main/light_driver.c b/examples/zigbee/light_sample/HA_on_off_light/main/light_driver.c deleted file mode 100644 index 72ff6b9e372..00000000000 --- a/examples/zigbee/light_sample/HA_on_off_light/main/light_driver.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: LicenseRef-Included - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Espressif Systems - * integrated circuit in a product or a software update for such product, - * must reproduce the above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * 4. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "esp_log.h" -#include "led_strip.h" -#include "light_driver.h" - -static led_strip_handle_t s_led_strip; -static uint8_t s_red = 255, s_green = 255, s_blue = 255; - -void light_driver_set_power(bool power) -{ - ESP_ERROR_CHECK(led_strip_set_pixel(s_led_strip, 0, s_red * power, s_green * power, s_blue * power)); - ESP_ERROR_CHECK(led_strip_refresh(s_led_strip)); -} - -void light_driver_init(bool power) -{ - led_strip_config_t led_strip_conf = { - .max_leds = CONFIG_EXAMPLE_STRIP_LED_NUMBER, - .strip_gpio_num = CONFIG_EXAMPLE_STRIP_LED_GPIO, - }; - led_strip_rmt_config_t rmt_conf = { - .resolution_hz = 10 * 1000 * 1000, // 10MHz - }; - ESP_ERROR_CHECK(led_strip_new_rmt_device(&led_strip_conf, &rmt_conf, &s_led_strip)); - light_driver_set_power(power); -} diff --git a/examples/zigbee/light_sample/HA_on_off_light/main/light_driver.h b/examples/zigbee/light_sample/HA_on_off_light/main/light_driver.h deleted file mode 100644 index b9f734fdde8..00000000000 --- a/examples/zigbee/light_sample/HA_on_off_light/main/light_driver.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: LicenseRef-Included - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Espressif Systems - * integrated circuit in a product or a software update for such product, - * must reproduce the above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * 4. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#pragma once - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* light intensity level */ -#define LIGHT_DEFAULT_ON 1 -#define LIGHT_DEFAULT_OFF 0 - -/* LED strip configuration */ -#define CONFIG_EXAMPLE_STRIP_LED_GPIO 8 -#define CONFIG_EXAMPLE_STRIP_LED_NUMBER 1 - -/** -* @brief Set light power (on/off). -* -* @param power The light power to be set -*/ -void light_driver_set_power(bool power); - -/** -* @brief color light driver init, be invoked where you want to use color light -* -* @param power power on/off -*/ -void light_driver_init(bool power); - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/examples/zigbee/light_sample/HA_on_off_light/partitions.csv b/examples/zigbee/light_sample/HA_on_off_light/partitions.csv index a56c0be7802..fb012212e45 100644 --- a/examples/zigbee/light_sample/HA_on_off_light/partitions.csv +++ b/examples/zigbee/light_sample/HA_on_off_light/partitions.csv @@ -1,7 +1,7 @@ # Name, Type, SubType, Offset, Size, Flags # Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap -nvs, data, nvs, 0x9000, 0x6000, -phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 900K, -zb_storage, data, fat, 0xf1000, 16K, -zb_fct, data, fat, 0xf5000, 1K, +nvs, data, nvs, , 0x6000, +otadata, data, ota, , 0x2000, +phy_init, data, phy, , 0x1000, +factory, app, factory, , 940K, +zb_fct, data, fat, , 1K, diff --git a/examples/zigbee/light_sample/HA_on_off_light/sdkconfig.defaults b/examples/zigbee/light_sample/HA_on_off_light/sdkconfig.defaults index 5ae45b073a7..a79dbf9d326 100644 --- a/examples/zigbee/light_sample/HA_on_off_light/sdkconfig.defaults +++ b/examples/zigbee/light_sample/HA_on_off_light/sdkconfig.defaults @@ -3,15 +3,10 @@ # CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" -CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" -CONFIG_PARTITION_TABLE_OFFSET=0x8000 -CONFIG_PARTITION_TABLE_MD5=y # end of Partition Table # -# Zboss +# Zigbee # CONFIG_ZB_ENABLED=y -CONFIG_ZB_ZED=y -# end of Zboss -# end of Component config +# end of Zigbee diff --git a/examples/zigbee/light_sample/HA_on_off_switch/CMakeLists.txt b/examples/zigbee/light_sample/HA_on_off_switch/CMakeLists.txt index 7352039602a..d768bb9eb9b 100644 --- a/examples/zigbee/light_sample/HA_on_off_switch/CMakeLists.txt +++ b/examples/zigbee/light_sample/HA_on_off_switch/CMakeLists.txt @@ -2,6 +2,9 @@ # in this exact order for cmake to work correctly cmake_minimum_required(VERSION 3.22) include($ENV{IDF_PATH}/tools/cmake/project.cmake) +list(PREPEND SDKCONFIG_DEFAULTS + "${IDF_PATH}/examples/zigbee/zb_common_components/example_common/sdkconfig.mbedtls_minimal" + "sdkconfig.defaults") # "Trim" the build. Include the minimal set of components, main, and anything it depends on. idf_build_set_property(MINIMAL_BUILD ON) project(light_switch) diff --git a/examples/zigbee/light_sample/HA_on_off_switch/README.md b/examples/zigbee/light_sample/HA_on_off_switch/README.md index 61f4128bf1a..d2464103321 100644 --- a/examples/zigbee/light_sample/HA_on_off_switch/README.md +++ b/examples/zigbee/light_sample/HA_on_off_switch/README.md @@ -1,9 +1,9 @@ -| Supported Targets | ESP32-C5 | ESP32-C6 | ESP32-H2 | -| ----------------- | -------- | -------- | -------- | +| Supported Targets | ESP32-C5 | ESP32-C6 | ESP32-H2 | ESP32-H21 | ESP32-H4 | ESP32-S31 | +| ----------------- | -------- | -------- | -------- | --------- | -------- | --------- | # Light Switch Example -This test code shows how to configure Zigbee Coordinator and use it as an HA on/off_switch. +This example demonstrates how to configure a Home Automation On/Off switch on a Zigbee End Device. The ESP Zigbee SDK provides more examples and tools for productization: * [ESP Zigbee SDK Docs](https://docs.espressif.com/projects/esp-zigbee-sdk) @@ -11,64 +11,53 @@ The ESP Zigbee SDK provides more examples and tools for productization: ## Hardware Required -* One development board with ESP32-H2 SoC acting as Zigbee Coordinator (loaded with HA_on_off_switch) -* A USB cable for power supply and programming -* Choose another ESP32-H2 as Zigbee end-device (see [HA_on_off_light](../HA_on_off_light/)) +* One 802.15.4-enabled development board running this example. +* A second board running as a Zigbee Coordinator (see the [HA_on_off_light](../HA_on_off_light/) example). +* A USB cable for power supply and programming. ## Configure the project -Before project configuration and build, make sure to set the correct chip target using `idf.py --preview set-target TARGET` command. +Before project configuration and build, set the correct chip target using `idf.py set-target TARGET`. ## Erase the NVRAM -Before flash it to the board, it is recommended to erase NVRAM if user doesn't want to keep the previous examples or other projects stored info using `idf.py -p PORT erase-flash` +Before flashing the board, erase the NVRAM with `idf.py -p PORT erase-flash` if you do not want to retain +information stored by previous examples or projects. ## Build and Flash -Build the project, flash it to the board, and start the monitor tool to view the serial output by running `idf.py -p PORT flash monitor`. +Build the project, flash it to the board, and start the monitor tool to view the serial output by running +`idf.py -p PORT flash monitor`. (To exit the serial monitor, type ``Ctrl-]``.) -## Example Output +## Application Functions -As you run the example, you will see the following log: +When the program starts, the board attempts to join an available Zigbee network: ``` -I (441) main_task: Started on CPU0 -I (441) main_task: Calling app_main() -I (461) phy: phy_version: 230,2, 9aae6ea, Jan 15 2024, 11:17:12 -I (461) phy: libbtbb version: 944f18e, Jan 15 2024, 11:17:25 -I (471) main_task: Returned from app_main() -I (601) ESP_ZB_ON_OFF_SWITCH: ZDO signal: ZDO Config Ready (0x17), status: ESP_FAIL -I (601) ESP_ZB_ON_OFF_SWITCH: Initialize Zigbee stack -I (611) gpio: GPIO[9]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:2 -I (611) ESP_ZB_ON_OFF_SWITCH: Deferred driver initialization successful -I (621) ESP_ZB_ON_OFF_SWITCH: Device started up in factory-reset mode -I (621) ESP_ZB_ON_OFF_SWITCH: Start network formation -W (781) ESP_ZB_ON_OFF_SWITCH: Network(0x13af) closed, devices joining not allowed. -I (781) ESP_ZB_ON_OFF_SWITCH: Formed network successfully (Extended PAN ID: 74:4d:bd:ff:fe:63:f7:30, PAN ID: 0x13af, Channel:13, Short Address: 0x0000) -I (1391) ESP_ZB_ON_OFF_SWITCH: Network(0x13af) is open for 180 seconds -I (1391) ESP_ZB_ON_OFF_SWITCH: Network steering started -I (9561) ESP_ZB_ON_OFF_SWITCH: ZDO signal: NWK Device Associated (0x12), status: ESP_OK -I (9561) ESP_ZB_ON_OFF_SWITCH: ZDO signal: ZDO Device Update (0x30), status: ESP_OK -I (9601) ESP_ZB_ON_OFF_SWITCH: New device commissioned or rejoined (short: 0x7c16) -I (9671) ESP_ZB_ON_OFF_SWITCH: Found light -I (9671) ESP_ZB_ON_OFF_SWITCH: Try to bind On/Off -I (9681) ESP_ZB_ON_OFF_SWITCH: Bound successfully! -I (9681) ESP_ZB_ON_OFF_SWITCH: The light originating from address(0x7c16) on endpoint(10) -I (9751) ESP_ZB_ON_OFF_SWITCH: ZDO signal: ZDO Device Authorized (0x2f), status: ESP_OK -I (9781) ESP_ZB_ON_OFF_SWITCH: Network(0x13af) is open for 180 seconds -I (16451) ESP_ZB_ON_OFF_SWITCH: Send 'on_off toggle' command -I (17011) ESP_ZB_ON_OFF_SWITCH: Send 'on_off toggle' command -I (17441) ESP_ZB_ON_OFF_SWITCH: Send 'on_off toggle' command -I (17831) ESP_ZB_ON_OFF_SWITCH: Send 'on_off toggle' command +I (427) ON_OFF_SWITCH: Start ESP Zigbee Stack +I (467) ON_OFF_SWITCH: Initialize Zigbee stack +I (467) ON_OFF_SWITCH: Deferred driver initialization successful +I (467) ON_OFF_SWITCH: Device started up in factory-reset mode +I (1727) ON_OFF_SWITCH: Joined network successfully: PAN ID(0x3051, EXT: 0x4831b7fffec183f0), Channel(13), Short Address(0xe5e0) ``` -## Light Control Functions +After joining, the switch finds and binds a Home Automation light: - * By toggling the switch button (BOOT) on this board, the LED on the board loaded with the `HA_on_off_light` example will turn on and off. +``` +I (1727) ON_OFF_SWITCH: Attempt to find HA light device +I (1827) ON_OFF_SWITCH: Attempt to bind HA light device (short address: 0x0000) +I (1847) ON_OFF_SWITCH: Bound HA light device successfully +``` +Pressing the `BOOT` button sends an On/Off Toggle command to the bound device: + +``` +I (24447) ON_OFF_SWITCH: Sent ZCL On/Off Toggle request +I (24517) ON_OFF_SWITCH: Received ZCL Default Response with status(0x00) +``` ## Troubleshooting -For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. +For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. diff --git a/examples/zigbee/light_sample/HA_on_off_switch/main/CMakeLists.txt b/examples/zigbee/light_sample/HA_on_off_switch/main/CMakeLists.txt index 79e119440f2..bd4a51ba995 100644 --- a/examples/zigbee/light_sample/HA_on_off_switch/main/CMakeLists.txt +++ b/examples/zigbee/light_sample/HA_on_off_switch/main/CMakeLists.txt @@ -1,5 +1,3 @@ -idf_component_register( - SRC_DIRS "." - INCLUDE_DIRS "." - PRIV_REQUIRES nvs_flash esp_driver_gpio esp_driver_uart ieee802154 -) +idf_component_register(SRC_DIRS "." + PRIV_INCLUDE_DIRS "." + PRIV_REQUIRES nvs_flash esp_driver_gpio esp_driver_uart ieee802154) diff --git a/examples/zigbee/light_sample/HA_on_off_switch/main/esp_zb_switch.c b/examples/zigbee/light_sample/HA_on_off_switch/main/esp_zb_switch.c index fbf140207c7..67da06758c2 100644 --- a/examples/zigbee/light_sample/HA_on_off_switch/main/esp_zb_switch.c +++ b/examples/zigbee/light_sample/HA_on_off_switch/main/esp_zb_switch.c @@ -1,7 +1,7 @@ /* - * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD * - * SPDX-License-Identifier: LicenseRef-Included + * SPDX-License-Identifier: LicenseRef-Included * * Zigbee HA_on_off_switch Example * @@ -12,189 +12,272 @@ * CONDITIONS OF ANY KIND, either express or implied. */ -#include "string.h" -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "esp_err.h" #include "esp_check.h" +#include "esp_err.h" #include "esp_log.h" #include "nvs_flash.h" -#include "ha/esp_zigbee_ha_standard.h" -#include "zcl_utility.h" + +#include "switch_driver.h" +#include "alarm_timer.h" + +#include "esp_zigbee.h" +#include "ezbee/zha.h" + #include "esp_zb_switch.h" -#if defined ZB_ED_ROLE -#error Define ZB_COORDINATOR_ROLE in idf.py menuconfig to compile light switch source code. -#endif -typedef struct light_bulb_device_params_s { - esp_zb_ieee_addr_t ieee_addr; - uint8_t endpoint; - uint16_t short_addr; -} light_bulb_device_params_t; +static const char *TAG = "ON_OFF_SWITCH"; -static switch_func_pair_t button_func_pair[] = { - {GPIO_INPUT_IO_TOGGLE_SWITCH, SWITCH_ONOFF_TOGGLE_CONTROL} -}; - -static const char *TAG = "ESP_ZB_ON_OFF_SWITCH"; - -static void zb_buttons_handler(switch_func_pair_t *button_func_pair) +static void button_event_handler(switch_driver_handle_t handle) { - if (button_func_pair->func == SWITCH_ONOFF_TOGGLE_CONTROL) { - /* implemented light switch toggle functionality */ - esp_zb_zcl_on_off_cmd_t cmd_req; - cmd_req.zcl_basic_cmd.src_endpoint = HA_ONOFF_SWITCH_ENDPOINT; - cmd_req.address_mode = ESP_ZB_APS_ADDR_MODE_DST_ADDR_ENDP_NOT_PRESENT; - cmd_req.on_off_cmd_id = ESP_ZB_ZCL_CMD_ON_OFF_TOGGLE_ID; - esp_zb_lock_acquire(portMAX_DELAY); - esp_zb_zcl_on_off_cmd_req(&cmd_req); - esp_zb_lock_release(); - ESP_EARLY_LOGI(TAG, "Send 'on_off toggle' command"); - } + ESP_RETURN_ON_FALSE(handle != SWITCH_INV_HANDLE, , TAG, "Invalid switch handle"); + + ezb_zcl_on_off_cmd_t cmd_req = { + .cmd_ctrl = + { + .dst_addr.addr_mode = EZB_ADDR_MODE_NONE, + .src_ep = ESP_ZIGBEE_HA_ON_OFF_SWITCH_EP_ID, + }, + }; + esp_zigbee_lock_acquire(portMAX_DELAY); + ezb_zcl_on_off_toggle_cmd_req(&cmd_req); + esp_zigbee_lock_release(); + ESP_EARLY_LOGI(TAG, "Sent ZCL On/Off Toggle request"); } static esp_err_t deferred_driver_init(void) { - ESP_RETURN_ON_FALSE(switch_driver_init(button_func_pair, PAIR_SIZE(button_func_pair), zb_buttons_handler), ESP_FAIL, TAG, - "Failed to initialize switch driver"); + static bool is_inited = false; + + ESP_RETURN_ON_FALSE(!is_inited, ESP_OK, TAG, "Deferred driver already initialized"); + + switch_driver_config_t config = { + .gpio_num = CONFIG_GPIO_BOOT_ON_DEVKIT, + .event_cb = button_event_handler, + }; + switch_driver_handle_t handle = switch_driver_init(&config); + + is_inited = handle == SWITCH_INV_HANDLE ? false : true; + + return is_inited ? ESP_OK : ESP_FAIL; +} + +static void zdo_bind_ha_light_device_result(const ezb_zdp_bind_req_result_t *result, void *user_ctx) +{ + assert(result); + if (result->error == EZB_ERR_NONE) { + if (result->rsp && result->rsp->status == EZB_ZDP_STATUS_SUCCESS) { + ESP_LOGI(TAG, "Bound HA light device successfully"); + } else { + ESP_LOGE(TAG, "Failed to bind HA light device with status (0x%02x)", result->rsp->status); + } + } else { + ESP_LOGE(TAG, "Failed to bind HA light device with error (0x%04x)", result->error); + } +} + +static ezb_err_t zdo_bind_ha_light_device(uint16_t dst_short_addr, uint8_t dst_ep) +{ + ezb_err_t ret = EZB_ERR_FAIL; + ezb_zdo_bind_req_t bind_req = { + .dst_nwk_addr = ezb_nwk_get_short_address(), + .field = + { + .src_ep = ESP_ZIGBEE_HA_ON_OFF_SWITCH_EP_ID, + .cluster_id = EZB_ZCL_CLUSTER_ID_ON_OFF, + .dst_addr_mode = EZB_ADDR_MODE_EXT, + .dst_ep = dst_ep, + }, + .cb = zdo_bind_ha_light_device_result, + .user_ctx = NULL, + }; + ezb_nwk_get_extended_address(&bind_req.field.src_addr); + + ESP_RETURN_ON_ERROR(ezb_address_extended_by_short(dst_short_addr, &bind_req.field.dst_addr.extended_addr), TAG, + "Failed to get extended address for destination device(0x%04hx)", dst_short_addr); + + ret = ezb_zdo_bind_req(&bind_req); + if (ret == EZB_ERR_NONE) { + ESP_LOGI(TAG, "Attempt to bind HA light device (short address: 0x%04hx)", dst_short_addr); + } else { + ESP_LOGE(TAG, "Failed to bind HA light device (short address: 0x%04hx) with error(0x%04x)", dst_short_addr, ret); + } + return ret; +} + +static void zdo_find_ha_light_device_result(const ezb_zdo_match_desc_req_result_t *result, void *user_ctx) +{ + assert(result); + if (result->error == EZB_ERR_NONE) { + if (result->rsp && result->rsp->status == EZB_ZDP_STATUS_SUCCESS && result->rsp->match_length > 0 && + result->rsp->match_list) { + for (size_t i = 0; i < result->rsp->match_length; i++) { + zdo_bind_ha_light_device(result->rsp->nwk_addr_of_interest, result->rsp->match_list[i]); + } + } + } else { + ESP_LOGE(TAG, "Failed to find HA light device in the network with error(0x%04x)", result->error); + } +} + +static ezb_err_t zdo_find_ha_light_device(void) +{ + ezb_err_t ret = EZB_ERR_FAIL; + uint16_t cluster_list[1] = {EZB_ZCL_CLUSTER_ID_ON_OFF}; + + ezb_zdo_match_desc_req_t req = { + .dst_nwk_addr = 0xFFFD, + .field = + { + .nwk_addr_of_interest = 0xFFFD, + .profile_id = EZB_AF_HA_PROFILE_ID, + .num_in_clusters = 1, + .num_out_clusters = 0, + .cluster_list = cluster_list, + }, + .cb = zdo_find_ha_light_device_result, + .user_ctx = NULL, + }; + ret = ezb_zdo_match_desc_req(&req); + if (ret == EZB_ERR_NONE) { + ESP_LOGI(TAG, "Attempt to find HA light device"); + } else { + ESP_LOGE(TAG, "Failed to find HA light device with error(0x%04x)", ret); + } + return ret; +} + +static void esp_zigbee_alarm_bdb_commissioning(alarm_timer_arg_t arg) +{ + esp_zigbee_lock_acquire(portMAX_DELAY); + (void)ezb_bdb_start_top_level_commissioning(arg); + esp_zigbee_lock_release(); +} + +static bool esp_zigbee_app_signal_handler(const ezb_app_signal_t *app_signal) +{ + ezb_app_signal_type_t signal_type = ezb_app_signal_get_type(app_signal); + + switch (signal_type) { + case EZB_ZDO_SIGNAL_SKIP_STARTUP: + ESP_LOGI(TAG, "Initialize Zigbee stack"); + ezb_bdb_start_top_level_commissioning(EZB_BDB_MODE_INITIALIZATION); + break; + case EZB_BDB_SIGNAL_DEVICE_FIRST_START: + case EZB_BDB_SIGNAL_DEVICE_REBOOT: { + ezb_bdb_comm_status_t status = *((ezb_bdb_comm_status_t *)ezb_app_signal_get_params(app_signal)); + if (status == EZB_BDB_STATUS_SUCCESS) { + ESP_LOGI(TAG, "Deferred driver initialization %s", deferred_driver_init() ? "failed" : "successful"); + ESP_LOGI(TAG, "Device started up in%s factory-reset mode", ezb_bdb_is_factory_new() ? "" : " non"); + if (ezb_bdb_is_factory_new()) { + ezb_bdb_start_top_level_commissioning(EZB_BDB_MODE_NETWORK_STEERING); + } else { + ESP_LOGI(TAG, "Device reboot"); + } + } else { + ESP_LOGW(TAG, "The %s failed with status(0x%02x), please retry", ezb_app_signal_to_string(signal_type), status); + alarm_timer_schedule(esp_zigbee_alarm_bdb_commissioning, EZB_BDB_MODE_INITIALIZATION, 1000); + } + } break; + case EZB_BDB_SIGNAL_STEERING: { + ezb_bdb_comm_status_t status = *((ezb_bdb_comm_status_t *)ezb_app_signal_get_params(app_signal)); + if (status == EZB_BDB_STATUS_SUCCESS) { + ezb_extpanid_t extended_pan_id; + ezb_nwk_get_extended_panid(&extended_pan_id); + ESP_LOGI(TAG, "Joined network successfully: PAN ID(0x%04hx, EXT: 0x%llx), Channel(%d), Short Address(0x%04hx)", + ezb_nwk_get_panid(), extended_pan_id.u64, ezb_nwk_get_current_channel(), ezb_nwk_get_short_address()); + zdo_find_ha_light_device(); + } else { + ESP_LOGW(TAG, "Failed to join network with status(0x%02x)", status); + alarm_timer_schedule(esp_zigbee_alarm_bdb_commissioning, EZB_BDB_MODE_NETWORK_STEERING, 1000); + } + } break; + case EZB_ZDO_SIGNAL_LEAVE: { + const ezb_zdo_signal_leave_params_t *leave_params = ezb_app_signal_get_params(app_signal); + ESP_LOGI(TAG, "Left network successfully with type(0x%02x)", leave_params->leave_type); + } break; + case EZB_NWK_SIGNAL_PERMIT_JOIN_STATUS: { + uint8_t duration = *(uint8_t *)ezb_app_signal_get_params(app_signal); + if (duration) { + ESP_LOGI(TAG, "Network(0x%04hx) is open for %d seconds", ezb_nwk_get_panid(), duration); + } else { + ESP_LOGW(TAG, "Network(0x%04hx) closed, devices joining not allowed.", ezb_nwk_get_panid()); + } + } break; + case EZB_ZDO_SIGNAL_LEAVE_INDICATION: { + const ezb_zdo_signal_leave_indication_params_t *leave_ind_params = ezb_app_signal_get_params(app_signal); + ESP_LOGI(TAG, "Zigbee Node(0x%04hx) is leaving network", leave_ind_params->short_addr); + } break; + default: + ESP_LOGI(TAG, "Zigbee APP Signal: %s(type: 0x%02x)", ezb_app_signal_to_string(signal_type), signal_type); + break; + } + return true; +} + +static void esp_zigbee_zcl_core_action_handler(ezb_zcl_core_action_callback_id_t callback_id, void *message) +{ + switch (callback_id) { + case EZB_ZCL_CORE_DEFAULT_RSP_CB_ID: { + ezb_zcl_cmd_default_rsp_message_t *default_rsp = (ezb_zcl_cmd_default_rsp_message_t *)message; + ESP_LOGI(TAG, "Received ZCL Default Response with status(0x%02x)", default_rsp->in.status_code); + } break; + default: + ESP_LOGW(TAG, "ZCL Core Action: ID(0x%04lx)", callback_id); + break; + } +} + +esp_err_t esp_zigbee_create_zha_on_off_switch_device(void) +{ + ezb_af_device_desc_t dev_desc = ezb_af_create_device_desc(); + ezb_zha_on_off_switch_config_t switch_cfg = EZB_ZHA_ON_OFF_SWITCH_CONFIG(); + ezb_af_ep_desc_t ep_desc = ezb_zha_create_on_off_switch(ESP_ZIGBEE_HA_ON_OFF_SWITCH_EP_ID, &switch_cfg); + ezb_zcl_cluster_desc_t basic_desc = {0}; + + basic_desc = ezb_af_endpoint_get_cluster_desc(ep_desc, EZB_ZCL_CLUSTER_ID_BASIC, EZB_ZCL_CLUSTER_SERVER); + ezb_zcl_basic_cluster_desc_add_attr(basic_desc, EZB_ZCL_ATTR_BASIC_MANUFACTURER_NAME_ID, (void *)ESP_MANUFACTURER_NAME); + ezb_zcl_basic_cluster_desc_add_attr(basic_desc, EZB_ZCL_ATTR_BASIC_MODEL_IDENTIFIER_ID, (void *)ESP_MODEL_IDENTIFIER); + + ESP_ERROR_CHECK(ezb_af_device_add_endpoint_desc(dev_desc, ep_desc)); + ESP_ERROR_CHECK(ezb_af_device_desc_register(dev_desc)); + + ezb_zcl_core_action_handler_register(esp_zigbee_zcl_core_action_handler); + return ESP_OK; } -static void bdb_start_top_level_commissioning_cb(uint8_t mode_mask) +esp_err_t esp_zigbee_setup_commissioning(void) { - ESP_RETURN_ON_FALSE(esp_zb_bdb_start_top_level_commissioning(mode_mask) == ESP_OK, , TAG, "Failed to start Zigbee bdb commissioning"); + ezb_aps_secur_enable_distributed_security(false); + ESP_ERROR_CHECK(ezb_bdb_set_primary_channel_set(ESP_ZIGBEE_PRIMARY_CHANNEL_MASK)); + ESP_ERROR_CHECK(ezb_bdb_set_secondary_channel_set(ESP_ZIGBEE_SECONDARY_CHANNEL_MASK)); + ESP_ERROR_CHECK(ezb_app_signal_add_handler(esp_zigbee_app_signal_handler)); + + return ESP_OK; } -static void bind_cb(esp_zb_zdp_status_t zdo_status, void *user_ctx) +static void esp_zigbee_stack_main_task(void *pvParameters) { - if (zdo_status == ESP_ZB_ZDP_STATUS_SUCCESS) { - ESP_LOGI(TAG, "Bound successfully!"); - if (user_ctx) { - light_bulb_device_params_t *light = (light_bulb_device_params_t *)user_ctx; - ESP_LOGI(TAG, "The light originating from address(0x%x) on endpoint(%d)", light->short_addr, light->endpoint); - free(light); - } - } -} + esp_zigbee_config_t config = ESP_ZIGBEE_DEFAULT_CONFIG(); -static void user_find_cb(esp_zb_zdp_status_t zdo_status, uint16_t addr, uint8_t endpoint, void *user_ctx) -{ - if (zdo_status == ESP_ZB_ZDP_STATUS_SUCCESS) { - ESP_LOGI(TAG, "Found light"); - esp_zb_zdo_bind_req_param_t bind_req; - light_bulb_device_params_t *light = (light_bulb_device_params_t *)malloc(sizeof(light_bulb_device_params_t)); - light->endpoint = endpoint; - light->short_addr = addr; - esp_zb_ieee_address_by_short(light->short_addr, light->ieee_addr); - esp_zb_get_long_address(bind_req.src_address); - bind_req.src_endp = HA_ONOFF_SWITCH_ENDPOINT; - bind_req.cluster_id = ESP_ZB_ZCL_CLUSTER_ID_ON_OFF; - bind_req.dst_addr_mode = ESP_ZB_ZDO_BIND_DST_ADDR_MODE_64_BIT_EXTENDED; - memcpy(bind_req.dst_address_u.addr_long, light->ieee_addr, sizeof(esp_zb_ieee_addr_t)); - bind_req.dst_endp = endpoint; - bind_req.req_dst_addr = esp_zb_get_short_address(); - ESP_LOGI(TAG, "Try to bind On/Off"); - esp_zb_zdo_device_bind_req(&bind_req, bind_cb, (void *)light); - } -} + ESP_ERROR_CHECK(esp_zigbee_init(&config)); -void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) -{ - uint32_t *p_sg_p = signal_struct->p_app_signal; - esp_err_t err_status = signal_struct->esp_err_status; - esp_zb_app_signal_type_t sig_type = *p_sg_p; - esp_zb_zdo_signal_device_annce_params_t *dev_annce_params = NULL; - switch (sig_type) { - case ESP_ZB_ZDO_SIGNAL_SKIP_STARTUP: - ESP_LOGI(TAG, "Initialize Zigbee stack"); - esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_INITIALIZATION); - break; - case ESP_ZB_BDB_SIGNAL_DEVICE_FIRST_START: - case ESP_ZB_BDB_SIGNAL_DEVICE_REBOOT: - if (err_status == ESP_OK) { - ESP_LOGI(TAG, "Deferred driver initialization %s", deferred_driver_init() ? "failed" : "successful"); - ESP_LOGI(TAG, "Device started up in %s factory-reset mode", esp_zb_bdb_is_factory_new() ? "" : "non"); - if (esp_zb_bdb_is_factory_new()) { - ESP_LOGI(TAG, "Start network formation"); - esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_NETWORK_FORMATION); - } else { - esp_zb_bdb_open_network(180); - ESP_LOGI(TAG, "Device rebooted"); - } - } else { - ESP_LOGE(TAG, "Failed to initialize Zigbee stack (status: %s)", esp_err_to_name(err_status)); - } - break; - case ESP_ZB_BDB_SIGNAL_FORMATION: - if (err_status == ESP_OK) { - esp_zb_ieee_addr_t extended_pan_id; - esp_zb_get_extended_pan_id(extended_pan_id); - ESP_LOGI(TAG, "Formed network successfully (Extended PAN ID: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x, PAN ID: 0x%04hx, Channel:%d, Short Address: 0x%04hx)", - extended_pan_id[7], extended_pan_id[6], extended_pan_id[5], extended_pan_id[4], - extended_pan_id[3], extended_pan_id[2], extended_pan_id[1], extended_pan_id[0], - esp_zb_get_pan_id(), esp_zb_get_current_channel(), esp_zb_get_short_address()); - esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_NETWORK_STEERING); - } else { - ESP_LOGI(TAG, "Restart network formation (status: %s)", esp_err_to_name(err_status)); - esp_zb_scheduler_alarm((esp_zb_callback_t)bdb_start_top_level_commissioning_cb, ESP_ZB_BDB_MODE_NETWORK_FORMATION, 1000); - } - break; - case ESP_ZB_BDB_SIGNAL_STEERING: - if (err_status == ESP_OK) { - ESP_LOGI(TAG, "Network steering started"); - } - break; - case ESP_ZB_ZDO_SIGNAL_DEVICE_ANNCE: - dev_annce_params = (esp_zb_zdo_signal_device_annce_params_t *)esp_zb_app_signal_get_params(p_sg_p); - ESP_LOGI(TAG, "New device commissioned or rejoined (short: 0x%04hx)", dev_annce_params->device_short_addr); - esp_zb_zdo_match_desc_req_param_t cmd_req; - cmd_req.dst_nwk_addr = dev_annce_params->device_short_addr; - cmd_req.addr_of_interest = dev_annce_params->device_short_addr; - esp_zb_zdo_find_on_off_light(&cmd_req, user_find_cb, NULL); - break; - case ESP_ZB_NWK_SIGNAL_PERMIT_JOIN_STATUS: - if (err_status == ESP_OK) { - if (*(uint8_t *)esp_zb_app_signal_get_params(p_sg_p)) { - ESP_LOGI(TAG, "Network(0x%04hx) is open for %d seconds", esp_zb_get_pan_id(), *(uint8_t *)esp_zb_app_signal_get_params(p_sg_p)); - } else { - ESP_LOGW(TAG, "Network(0x%04hx) closed, devices joining not allowed.", esp_zb_get_pan_id()); - } - } - break; - default: - ESP_LOGI(TAG, "ZDO signal: %s (0x%x), status: %s", esp_zb_zdo_signal_to_string(sig_type), sig_type, - esp_err_to_name(err_status)); - break; - } -} + ESP_ERROR_CHECK(esp_zigbee_setup_commissioning()); -static void esp_zb_task(void *pvParameters) -{ - /* initialize Zigbee stack */ - esp_zb_cfg_t zb_nwk_cfg = ESP_ZB_ZC_CONFIG(); - esp_zb_init(&zb_nwk_cfg); - esp_zb_on_off_switch_cfg_t switch_cfg = ESP_ZB_DEFAULT_ON_OFF_SWITCH_CONFIG(); - esp_zb_ep_list_t *esp_zb_on_off_switch_ep = esp_zb_on_off_switch_ep_create(HA_ONOFF_SWITCH_ENDPOINT, &switch_cfg); - zcl_basic_manufacturer_info_t info = { - .manufacturer_name = ESP_MANUFACTURER_NAME, - .model_identifier = ESP_MODEL_IDENTIFIER, - }; + ESP_ERROR_CHECK(esp_zigbee_create_zha_on_off_switch_device()); - esp_zcl_utility_add_ep_basic_manufacturer_info(esp_zb_on_off_switch_ep, HA_ONOFF_SWITCH_ENDPOINT, &info); - esp_zb_device_register(esp_zb_on_off_switch_ep); - esp_zb_set_primary_network_channel_set(ESP_ZB_PRIMARY_CHANNEL_MASK); - ESP_ERROR_CHECK(esp_zb_start(false)); - esp_zb_stack_main_loop(); + ESP_ERROR_CHECK(esp_zigbee_start(false)); + + esp_zigbee_launch_mainloop(); + + esp_zigbee_deinit(); + + vTaskDelete(NULL); } void app_main(void) { - esp_zb_platform_config_t config = { - .radio_config = ESP_ZB_DEFAULT_RADIO_CONFIG(), - .host_config = ESP_ZB_DEFAULT_HOST_CONFIG(), - }; ESP_ERROR_CHECK(nvs_flash_init()); - ESP_ERROR_CHECK(esp_zb_platform_config(&config)); - - xTaskCreate(esp_zb_task, "Zigbee_main", 4096, NULL, 5, NULL); + ESP_LOGI(TAG, "Start ESP Zigbee Stack"); + xTaskCreate(esp_zigbee_stack_main_task, "Zigbee_main", 4096, NULL, 5, NULL); } diff --git a/examples/zigbee/light_sample/HA_on_off_switch/main/esp_zb_switch.h b/examples/zigbee/light_sample/HA_on_off_switch/main/esp_zb_switch.h index 8993eb969e6..2af33f72ce0 100644 --- a/examples/zigbee/light_sample/HA_on_off_switch/main/esp_zb_switch.h +++ b/examples/zigbee/light_sample/HA_on_off_switch/main/esp_zb_switch.h @@ -1,7 +1,7 @@ /* - * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD * - * SPDX-License-Identifier: LicenseRef-Included + * SPDX-License-Identifier: LicenseRef-Included * * Zigbee HA_on_off_switch Example * @@ -11,34 +11,43 @@ * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. */ -#include "esp_zigbee_core.h" -#include "switch_driver.h" -/* Zigbee configuration */ -#define MAX_CHILDREN 10 /* the max amount of connected devices */ -#define INSTALLCODE_POLICY_ENABLE false /* enable the install code policy for security */ -#define HA_ONOFF_SWITCH_ENDPOINT 1 /* esp light switch device endpoint */ -#define ESP_ZB_PRIMARY_CHANNEL_MASK (1l << 13) /* Zigbee primary channel mask use in the example */ +#pragma once -/* Basic manufacturer information */ -#define ESP_MANUFACTURER_NAME "\x09""ESPRESSIF" /* Customized manufacturer name */ -#define ESP_MODEL_IDENTIFIER "\x07"CONFIG_IDF_TARGET /* Customized model identifier */ +#define ESP_ZIGBEE_PRIMARY_CHANNEL_MASK (1U << CONFIG_ZB_EXAMPLE_PRIMARY_CHANNEL) +#define ESP_ZIGBEE_SECONDARY_CHANNEL_MASK CONFIG_ZB_EXAMPLE_SECONDARY_CHANNEL_MASK -#define ESP_ZB_ZC_CONFIG() \ - { \ - .esp_zb_role = ESP_ZB_DEVICE_TYPE_COORDINATOR, \ - .install_code_policy = INSTALLCODE_POLICY_ENABLE, \ - .nwk_cfg.zczr_cfg = { \ - .max_children = MAX_CHILDREN, \ - }, \ +#define ESP_ZIGBEE_HA_ON_OFF_SWITCH_EP_ID (1) + +#define ESP_ZIGBEE_STORAGE_PARTITION_NAME "nvs" + +#define ESP_MANUFACTURER_NAME "\x09""ESPRESSIF" +#define ESP_MODEL_IDENTIFIER "\x07" CONFIG_IDF_TARGET + +#define ESP_ZIGBEE_ZED_CONFIG() \ + { \ + .device_type = EZB_NWK_DEVICE_TYPE_END_DEVICE, \ + .install_code_policy = false, \ + .zed_config = { \ + .ed_timeout = EZB_NWK_ED_TIMEOUT_64MIN, \ + .keep_alive = 4000, \ + }, \ } -#define ESP_ZB_DEFAULT_RADIO_CONFIG() \ - { \ - .radio_mode = ZB_RADIO_MODE_NATIVE, \ +#if CONFIG_SOC_IEEE802154_SUPPORTED +#define ESP_ZIGBEE_PLATFORM_CONFIG() \ + { \ + .storage_partition_name = ESP_ZIGBEE_STORAGE_PARTITION_NAME, \ + .radio_config = { \ + .radio_mode = ESP_ZIGBEE_RADIO_MODE_NATIVE, \ + }, \ } +#else +#warning "The example is not for IEEE 802.15.4-disabled SoC usage, please refer to esp_zigbee_gateway for RCP configuration" +#endif -#define ESP_ZB_DEFAULT_HOST_CONFIG() \ - { \ - .host_connection_mode = ZB_HOST_CONNECTION_MODE_NONE, \ - } +#define ESP_ZIGBEE_DEFAULT_CONFIG() \ + { \ + .device_config = ESP_ZIGBEE_ZED_CONFIG(), \ + .platform_config = ESP_ZIGBEE_PLATFORM_CONFIG(), \ + }; diff --git a/examples/zigbee/light_sample/HA_on_off_switch/main/idf_component.yml b/examples/zigbee/light_sample/HA_on_off_switch/main/idf_component.yml index bfb3027106a..119743043fb 100644 --- a/examples/zigbee/light_sample/HA_on_off_switch/main/idf_component.yml +++ b/examples/zigbee/light_sample/HA_on_off_switch/main/idf_component.yml @@ -1,9 +1,11 @@ ## IDF Component Manager Manifest File dependencies: - espressif/esp-zboss-lib: "~1.6.0" - espressif/esp-zigbee-lib: "~1.6.0" ## Required IDF version idf: - version: ">=5.0.0" - examples_utils: - path: ${IDF_PATH}/examples/zigbee/zb_common_components/examples_utils + version: ">=5.2" + espressif/esp-zigbee-lib: + version: ">=2.0.0" + example_common: + path: ${IDF_PATH}/examples/zigbee/zb_common_components/example_common + switch_driver: + path: ${IDF_PATH}/examples/zigbee/zb_common_components/switch_driver diff --git a/examples/zigbee/light_sample/HA_on_off_switch/main/switch_driver.c b/examples/zigbee/light_sample/HA_on_off_switch/main/switch_driver.c deleted file mode 100644 index 198459efa8f..00000000000 --- a/examples/zigbee/light_sample/HA_on_off_switch/main/switch_driver.c +++ /dev/null @@ -1,178 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: LicenseRef-Included - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Espressif Systems - * integrated circuit in a product or a software update for such product, - * must reproduce the above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * 4. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "esp_log.h" -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/queue.h" -#include "switch_driver.h" - -/** - * @brief: - * This example code shows how to configure light switch with attribute as well as button switch handler. - * - * @note: - Currently only support toggle switch functionality available - * - * @note: - * For other possible switch functions (on/off,level up/down,step up/down). User need to implement and create them by themselves - */ - -static QueueHandle_t gpio_evt_queue = NULL; -/* button function pair, should be defined in switch example source file */ -static switch_func_pair_t *switch_func_pair; -/* call back function pointer */ -static esp_switch_callback_t func_ptr; -/* which button is pressed */ -static uint8_t switch_num; -static const char *TAG = "ESP_ZB_SWITCH"; - -static void IRAM_ATTR gpio_isr_handler(void *arg) -{ - xQueueSendFromISR(gpio_evt_queue, (switch_func_pair_t *)arg, NULL); -} - -/** - * @brief Enable GPIO (switches refer to) isr - * - * @param enabled enable isr if true. - */ -static void switch_driver_gpios_intr_enabled(bool enabled) -{ - for (int i = 0; i < switch_num; ++i) { - if (enabled) { - gpio_intr_enable((switch_func_pair + i)->pin); - } else { - gpio_intr_disable((switch_func_pair + i)->pin); - } - } -} - -/** - * @brief Tasks for checking the button event and debounce the switch state - * - * @param arg Unused value. - */ -static void switch_driver_button_detected(void *arg) -{ - gpio_num_t io_num = GPIO_NUM_NC; - switch_func_pair_t button_func_pair; - static switch_state_t switch_state = SWITCH_IDLE; - bool evt_flag = false; - - for (;;) { - /* check if there is any queue received, if yes read out the button_func_pair */ - if (xQueueReceive(gpio_evt_queue, &button_func_pair, portMAX_DELAY)) { - io_num = button_func_pair.pin; - switch_driver_gpios_intr_enabled(false); - evt_flag = true; - } - while (evt_flag) { - bool value = gpio_get_level(io_num); - switch (switch_state) { - case SWITCH_IDLE: - switch_state = (value == GPIO_INPUT_LEVEL_ON) ? SWITCH_PRESS_DETECTED : SWITCH_IDLE; - break; - case SWITCH_PRESS_DETECTED: - switch_state = (value == GPIO_INPUT_LEVEL_ON) ? SWITCH_PRESS_DETECTED : SWITCH_RELEASE_DETECTED; - break; - case SWITCH_RELEASE_DETECTED: - switch_state = SWITCH_IDLE; - /* callback to button_handler */ - (*func_ptr)(&button_func_pair); - break; - default: - break; - } - if (switch_state == SWITCH_IDLE) { - switch_driver_gpios_intr_enabled(true); - evt_flag = false; - break; - } - vTaskDelay(10 / portTICK_PERIOD_MS); - } - } -} - -/** - * @brief init GPIO configuration as well as isr - * - * @param button_func_pair pointer of the button pair. - * @param button_num number of button pair. - */ -static bool switch_driver_gpio_init(switch_func_pair_t *button_func_pair, uint8_t button_num) -{ - gpio_config_t io_conf = {}; - switch_func_pair = button_func_pair; - switch_num = button_num; - uint64_t pin_bit_mask = 0; - - /* set up button func pair pin mask */ - for (int i = 0; i < button_num; ++i) { - pin_bit_mask |= (1ULL << (button_func_pair + i)->pin); - } - /* interrupt of falling edge */ - io_conf.intr_type = GPIO_INTR_NEGEDGE; - io_conf.pin_bit_mask = pin_bit_mask; - io_conf.mode = GPIO_MODE_INPUT; - io_conf.pull_up_en = GPIO_PULLUP_ENABLE; - /* configure GPIO with the given settings */ - gpio_config(&io_conf); - /* create a queue to handle gpio event from isr */ - gpio_evt_queue = xQueueCreate(10, sizeof(switch_func_pair_t)); - if ( gpio_evt_queue == 0) { - ESP_LOGE(TAG, "Queue was not created and must not be used"); - return false; - } - /* start gpio task */ - xTaskCreate(switch_driver_button_detected, "button_detected", 4096, NULL, 10, NULL); - /* install gpio isr service */ - gpio_install_isr_service(ESP_INTR_FLAG_DEFAULT); - for (int i = 0; i < button_num; ++i) { - gpio_isr_handler_add((button_func_pair + i)->pin, gpio_isr_handler, (void *) (button_func_pair + i)); - } - return true; -} - -bool switch_driver_init(switch_func_pair_t *button_func_pair, uint8_t button_num, esp_switch_callback_t cb) -{ - if (!switch_driver_gpio_init(button_func_pair, button_num)) { - return false; - } - func_ptr = cb; - return true; -} diff --git a/examples/zigbee/light_sample/HA_on_off_switch/main/switch_driver.h b/examples/zigbee/light_sample/HA_on_off_switch/main/switch_driver.h deleted file mode 100644 index 10d332cd6e1..00000000000 --- a/examples/zigbee/light_sample/HA_on_off_switch/main/switch_driver.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: LicenseRef-Included - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Espressif Systems - * integrated circuit in a product or a software update for such product, - * must reproduce the above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * 4. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -#pragma once - -#include "driver/gpio.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* user should configure which I/O port as toggle switch input, default is GPIO9 */ -#define GPIO_INPUT_IO_TOGGLE_SWITCH GPIO_NUM_9 - -/* config button level depends on the pull up/down setting - push button level is on level = 1 when pull-down enable - push button level is on level = 0 when pull-up enable -*/ -#define GPIO_INPUT_LEVEL_ON 0 - -#define ESP_INTR_FLAG_DEFAULT 0 - -#define PAIR_SIZE(TYPE_STR_PAIR) (sizeof(TYPE_STR_PAIR) / sizeof(TYPE_STR_PAIR[0])) - -typedef enum { - SWITCH_IDLE, - SWITCH_PRESS_ARMED, - SWITCH_PRESS_DETECTED, - SWITCH_PRESSED, - SWITCH_RELEASE_DETECTED, -} switch_state_t; - -typedef enum { - SWITCH_ON_CONTROL, - SWITCH_OFF_CONTROL, - SWITCH_ONOFF_TOGGLE_CONTROL, - SWITCH_LEVEL_UP_CONTROL, - SWITCH_LEVEL_DOWN_CONTROL, - SWITCH_LEVEL_CYCLE_CONTROL, - SWITCH_COLOR_CONTROL, -} switch_func_t; - -typedef struct { - uint32_t pin; - switch_func_t func; -} switch_func_pair_t; - -typedef void (*esp_switch_callback_t)(switch_func_pair_t *param); - -/** - * @brief init function for switch and callback setup - * - * @param button_func_pair pointer of the button pair. - * @param button_num number of button pair. - * @param cb callback pointer. - */ -bool switch_driver_init(switch_func_pair_t *button_func_pair, uint8_t button_num, esp_switch_callback_t cb); - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/examples/zigbee/light_sample/HA_on_off_switch/partitions.csv b/examples/zigbee/light_sample/HA_on_off_switch/partitions.csv index a56c0be7802..3050a3d6053 100644 --- a/examples/zigbee/light_sample/HA_on_off_switch/partitions.csv +++ b/examples/zigbee/light_sample/HA_on_off_switch/partitions.csv @@ -1,7 +1,7 @@ # Name, Type, SubType, Offset, Size, Flags # Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap -nvs, data, nvs, 0x9000, 0x6000, -phy_init, data, phy, 0xf000, 0x1000, -factory, app, factory, 0x10000, 900K, -zb_storage, data, fat, 0xf1000, 16K, -zb_fct, data, fat, 0xf5000, 1K, +nvs, data, nvs, , 0x6000, +otadata, data, ota, , 0x2000, +phy_init, data, phy, , 0x1000, +factory, app, factory, , 940K, +zb_fct, data, fat, , 1K, diff --git a/examples/zigbee/light_sample/HA_on_off_switch/sdkconfig.defaults b/examples/zigbee/light_sample/HA_on_off_switch/sdkconfig.defaults index a5e62b5807f..fd13a569304 100644 --- a/examples/zigbee/light_sample/HA_on_off_switch/sdkconfig.defaults +++ b/examples/zigbee/light_sample/HA_on_off_switch/sdkconfig.defaults @@ -3,15 +3,11 @@ # CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" -CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" -CONFIG_PARTITION_TABLE_OFFSET=0x8000 -CONFIG_PARTITION_TABLE_MD5=y # end of Partition Table # -# Zboss +# Zigbee # CONFIG_ZB_ENABLED=y -CONFIG_ZB_ZCZR=y -# end of Zboss -# end of Component config +CONFIG_ZB_ZED=y +# end of Zigbee diff --git a/examples/zigbee/light_sample/README.md b/examples/zigbee/light_sample/README.md index 2ef76b5b03a..a523ab1ea5c 100644 --- a/examples/zigbee/light_sample/README.md +++ b/examples/zigbee/light_sample/README.md @@ -1,12 +1,11 @@ # Light Switch and Bulb Control Example -(See the `README.md` file in the upper level 'examples' directory for more information about examples.) +See the [README.md](../README.md) file in the upper level [examples](../) directory for more information about examples. ## Overview -The folder contains examples demonstrating Zigbee Coordinator and End-Device roles +The folder contains two Zigbee examples demonstrating Coordinator and End Device roles. -* [HA_on_off_light](HA_on_off_light) is a standard HA on-off light bulb example demonstrating Zigbee End-device. It provides a simple on/off condition for a Zigbee light. It runs on an 802.15.4 SoC like ESP32-H2. For more details see the example readme file. - -* [HA_on_off_switch](HA_on_off_switch) is a standard HA on-off switch example demonstrating Zigbee Coordinator role. It provides an on/off toggle to control a Zigbee HA on off light. It runs on an 802.15.4 SoC like ESP32-H2. For more details to see the example readme file. +* [HA_on_off_light](HA_on_off_light) is a standard Zigbee coordinator acting as Home Automation On/Off light bulb. It runs on an 802.15.4 SoC like ESP32-H2. For more details see [README](HA_on_off_light/README.md). +* [HA_on_off_switch](HA_on_off_switch) is a standard Zigbee End-device acting as Home Automation On/Off switch. It runs on an 802.15.4 SoC like ESP32-H2. For more details to see [README](HA_on_off_switch/README.md). diff --git a/examples/zigbee/light_sample/pytest_esp_zigbee.py b/examples/zigbee/light_sample/pytest_esp_zigbee.py index 868fd0d2fc5..d193778c86a 100644 --- a/examples/zigbee/light_sample/pytest_esp_zigbee.py +++ b/examples/zigbee/light_sample/pytest_esp_zigbee.py @@ -1,9 +1,8 @@ -# SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD +# SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: Apache-2.0 # !/usr/bin/env python3 import pathlib import time -from typing import Tuple import pytest from pytest_embedded import Dut @@ -24,24 +23,25 @@ pytest_build_dir = CURRENT_DIR_LIGHT + '|' + CURRENT_DIR_SWITCH ) # config Zigbee network @idf_parametrize('target', ['esp32h2'], indirect=['target']) -def test_config_zigbee_network(dut: Tuple[Dut, Dut]) -> None: +def test_config_zigbee_network(dut: tuple[Dut, Dut]) -> None: light = dut[0] switch = dut[1] time.sleep(3) - switch.expect('ESP_ZB_ON_OFF_SWITCH: Formed network successfully', timeout=30) - # get the switch extpanid - switch_node_expanid = switch.expect(r'Extended PAN ID: (([a-z0-9]{2}:?){8})', timeout=3)[1].decode() - switch_node_expanid = switch_node_expanid.replace(':', '') - # get the switch panid - switch_node_panid = switch.expect(r'PAN ID: 0x([a-z0-9]+:?)', timeout=2)[1].decode() - # new device commissioned successfully - switch.expect(r'New device commissioned or rejoined \(short: 0x([a-z0-9]+)[^a-z0-9]', timeout=30)[1].decode() - # get the light node extpanid - light.expect('ESP_ZB_ON_OFF_LIGHT: Joined network successfully', timeout=20) - light_node_expanid = light.expect(r'Extended PAN ID: (([a-z0-9]{2}:?){8})', timeout=3)[1].decode() - light_node_expanid = light_node_expanid.replace(':', '') - # get the light panid - light_node_panid = light.expect(r'PAN ID: 0x([a-z0-9]+:?)', timeout=2)[1].decode() - # make sure the light node join the network that switch node formed (same expanid) - if (light_node_expanid != switch_node_expanid) or (light_node_panid != switch_node_panid): - assert False + light_network = light.expect( + r'ON_OFF_LIGHT: Formed network successfully: PAN ID\(0x([a-fA-F0-9]+), EXT: 0x([a-fA-F0-9]+)\)', + timeout=30, + ) + light_panid = light_network[1].decode() + light_extpanid = light_network[2].decode() + + switch_network = switch.expect( + r'ON_OFF_SWITCH: Joined network successfully: PAN ID\(0x([a-fA-F0-9]+), EXT: 0x([a-fA-F0-9]+)\)', + timeout=30, + ) + switch_panid = switch_network[1].decode() + switch_extpanid = switch_network[2].decode() + + light.expect(r'New device commissioned or rejoined ?\(short: 0x([a-fA-F0-9]+)\)', timeout=30) + + assert switch_panid == light_panid + assert switch_extpanid == light_extpanid diff --git a/examples/zigbee/zb_common_components/example_common/CMakeLists.txt b/examples/zigbee/zb_common_components/example_common/CMakeLists.txt new file mode 100644 index 00000000000..f07ce4cf482 --- /dev/null +++ b/examples/zigbee/zb_common_components/example_common/CMakeLists.txt @@ -0,0 +1,4 @@ +idf_component_register(SRC_DIRS "src" + INCLUDE_DIRS "include" + REQUIRES esp_timer +) diff --git a/examples/zigbee/zb_common_components/example_common/Kconfig b/examples/zigbee/zb_common_components/example_common/Kconfig new file mode 100644 index 00000000000..16e86dcfff9 --- /dev/null +++ b/examples/zigbee/zb_common_components/example_common/Kconfig @@ -0,0 +1,12 @@ +menu "Zigbee Example Configuration" + + config ZB_EXAMPLE_PRIMARY_CHANNEL + int "Zigbee primary channel" + range 11 26 + default 13 + + config ZB_EXAMPLE_SECONDARY_CHANNEL_MASK + hex "Zigbee secondary channel mask" + default 0x07FFF800 + +endmenu diff --git a/examples/zigbee/zb_common_components/example_common/include/alarm_timer.h b/examples/zigbee/zb_common_components/example_common/include/alarm_timer.h new file mode 100644 index 00000000000..220618167ad --- /dev/null +++ b/examples/zigbee/zb_common_components/example_common/include/alarm_timer.h @@ -0,0 +1,47 @@ +/* + * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: LicenseRef-Included + * + * Alarm driver + * + * Unless required by applicable law or agreed to in writing, this + * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. + */ + +#pragma once + +#include +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief The argument type for the alarm callback. + * + */ +typedef uintptr_t alarm_timer_arg_t; + +/** + * @brief The callback for the timer. + * + */ +typedef void (*alarm_timer_callback_t)(alarm_timer_arg_t arg); + +/** + * @brief Schedule an alarm to fire at a given time. + * + * @param cb The callback to execute when the alarm fires. + * @param arg The argument to pass to the callback. + * @param time_ms The time to fire the timer in milliseconds. + * + * @return ESP_OK on success, error code otherwise. + */ +esp_err_t alarm_timer_schedule(alarm_timer_callback_t cb, alarm_timer_arg_t arg, uint32_t time_ms); + +#ifdef __cplusplus +} +#endif diff --git a/examples/zigbee/zb_common_components/example_common/sdkconfig.mbedtls_minimal b/examples/zigbee/zb_common_components/example_common/sdkconfig.mbedtls_minimal new file mode 100644 index 00000000000..9d212c4f5c4 --- /dev/null +++ b/examples/zigbee/zb_common_components/example_common/sdkconfig.mbedtls_minimal @@ -0,0 +1,51 @@ +# This config file optimizes the mbedTLS code size by disabling +# unused features by ESP-Zigbee-SDK. + +# +# mbedTLS +# + +# Enable required +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CCM_C=y + +# Disable unused +CONFIG_MBEDTLS_GCM_C=n +CONFIG_MBEDTLS_CMAC_C=n +CONFIG_MBEDTLS_SHA1_C=n +CONFIG_MBEDTLS_SHA3_C=n +CONFIG_MBEDTLS_SHA512_C=n +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=n +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=n +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=n +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=n +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=n +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=n +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=n +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_PSK=n +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=n + +## v5.0 +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=n +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=n +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=n +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=n +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=n +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=n + +## v6.0 +CONFIG_MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH=y +CONFIG_MBEDTLS_CTR_DRBG_C=y +CONFIG_MBEDTLS_HMAC_DRBG_C=n +CONFIG_MBEDTLS_X509_RSASSA_PSS_SUPPORT=n +CONFIG_MBEDTLS_CIPHER_MODE_CBC=n +CONFIG_MBEDTLS_CIPHER_MODE_CFB=n +CONFIG_MBEDTLS_CIPHER_MODE_CTR=n +CONFIG_MBEDTLS_CIPHER_MODE_OFB=n +CONFIG_MBEDTLS_CIPHER_MODE_XTS=n +# PSA_WANT_ALG_RSA_PSS needs CONFIG_MBEDTLS_RSA_C=y on ESP-IDF master +CONFIG_MBEDTLS_RSA_C=y +CONFIG_MBEDTLS_MD5_C=n +CONFIG_MBEDTLS_SHA384_C=n + +# end of mbedTLS diff --git a/examples/zigbee/zb_common_components/example_common/src/alarm_timer.c b/examples/zigbee/zb_common_components/example_common/src/alarm_timer.c new file mode 100644 index 00000000000..51fb2c629fc --- /dev/null +++ b/examples/zigbee/zb_common_components/example_common/src/alarm_timer.c @@ -0,0 +1,69 @@ +/* + * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: LicenseRef-Included + * + * Alarm Timer + * + * Unless required by applicable law or agreed to in writing, this + * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. + */ + +#include + +#include "esp_timer.h" + +#include "alarm_timer.h" + +typedef struct alarm_timer_s { + esp_timer_handle_t timer; + alarm_timer_callback_t cb; + alarm_timer_arg_t arg; +} alarm_timer_t; + +static void alarm_timer_cb(void *arg) +{ + alarm_timer_t *alarm = (alarm_timer_t *)arg; + + esp_timer_delete(alarm->timer); + alarm->cb(alarm->arg); + free(alarm); +} + +esp_err_t alarm_timer_schedule(alarm_timer_callback_t cb, alarm_timer_arg_t arg, uint32_t time_ms) +{ + if (cb == NULL) { + return ESP_ERR_INVALID_ARG; + } + + alarm_timer_t *alarm = malloc(sizeof(alarm_timer_t)); + if (alarm == NULL) { + return ESP_ERR_NO_MEM; + } + + alarm->cb = cb; + alarm->arg = arg; + alarm->timer = NULL; + + esp_timer_create_args_t timer_args = { + .callback = alarm_timer_cb, + .arg = alarm, + }; + + esp_err_t err = esp_timer_create(&timer_args, &alarm->timer); + if (err != ESP_OK) { + free(alarm); + return err; + } + + uint64_t time_us = (uint64_t)time_ms * 1000; + err = esp_timer_start_once(alarm->timer, time_us); + if (err != ESP_OK) { + esp_timer_delete(alarm->timer); + free(alarm); + return err; + } + + return ESP_OK; +} diff --git a/examples/zigbee/zb_common_components/examples_utils/CMakeLists.txt b/examples/zigbee/zb_common_components/examples_utils/CMakeLists.txt deleted file mode 100644 index 7eafd7b4d21..00000000000 --- a/examples/zigbee/zb_common_components/examples_utils/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -idf_component_register(SRCS "zcl_utility.c" - INCLUDE_DIRS "include" - PRIV_REQUIRES espressif__esp-zigbee-lib) diff --git a/examples/zigbee/zb_common_components/examples_utils/include/zcl_utility.h b/examples/zigbee/zb_common_components/examples_utils/include/zcl_utility.h deleted file mode 100644 index afd1293a869..00000000000 --- a/examples/zigbee/zb_common_components/examples_utils/include/zcl_utility.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: LicenseRef-Included - * - * ZCL utility functions for Zigbee examples - * - * This example code is in the Public Domain (or CC0 licensed, at your option.) - * - * Unless required by applicable law or agreed to in writing, this - * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. -*/ - -#pragma once - -#include "esp_err.h" -#include "esp_zigbee_core.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/*! Maximum length of ManufacturerName string field */ -#define ESP_ZB_ZCL_CLUSTER_ID_BASIC_MANUFACTURER_NAME_MAX_LEN 32 - -/*! Maximum length of ModelIdentifier string field */ -#define ESP_ZB_ZCL_CLUSTER_ID_BASIC_MODEL_IDENTIFIER_MAX_LEN 32 - -/** optional basic manufacturer information */ -typedef struct zcl_basic_manufacturer_info_s { - char *manufacturer_name; - char *model_identifier; -} zcl_basic_manufacturer_info_t; - -/** - * @brief Adds manufacturer information to the ZCL basic cluster of endpoint - * - * @param ep_list The pointer to the endpoint list with @p endpoint_id - * @param endpoint_id The endpoint identifier indicating where the ZCL basic cluster resides - * @param info The pointer to the basic manufacturer information, @see zcl_basic_manufacturer_info_t - * @return - * - ESP_OK: On success - * - ESP_ERR_INVALID_ARG: Invalid argument - */ -esp_err_t esp_zcl_utility_add_ep_basic_manufacturer_info(esp_zb_ep_list_t *ep_list, uint8_t endpoint_id, zcl_basic_manufacturer_info_t *info); - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/examples/zigbee/zb_common_components/examples_utils/zcl_utility.c b/examples/zigbee/zb_common_components/examples_utils/zcl_utility.c deleted file mode 100644 index 65c6fdec9d6..00000000000 --- a/examples/zigbee/zb_common_components/examples_utils/zcl_utility.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: LicenseRef-Included - * - * ZCL utility functions for Zigbee examples - * - * This example code is in the Public Domain (or CC0 licensed, at your option.) - * - * Unless required by applicable law or agreed to in writing, this - * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. -*/ - -#include -#include - -#include "esp_check.h" -#include "esp_zigbee_core.h" - -#include "zcl_utility.h" - -static const char *TAG = "ZCL_UTILITY"; - -esp_err_t esp_zcl_utility_add_ep_basic_manufacturer_info(esp_zb_ep_list_t *ep_list, uint8_t endpoint_id, zcl_basic_manufacturer_info_t *info) -{ - esp_err_t ret = ESP_OK; - esp_zb_cluster_list_t *cluster_list = NULL; - esp_zb_attribute_list_t *basic_cluster = NULL; - - cluster_list = esp_zb_ep_list_get_ep(ep_list, endpoint_id); - ESP_RETURN_ON_FALSE(cluster_list, ESP_ERR_INVALID_ARG, TAG, "Failed to find endpoint id: %d in list: %p", endpoint_id, ep_list); - basic_cluster = esp_zb_cluster_list_get_cluster(cluster_list, ESP_ZB_ZCL_CLUSTER_ID_BASIC, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); - ESP_RETURN_ON_FALSE(basic_cluster, ESP_ERR_INVALID_ARG, TAG, "Failed to find basic cluster in endpoint: %d", endpoint_id); - ESP_RETURN_ON_FALSE((info && info->manufacturer_name), ESP_ERR_INVALID_ARG, TAG, "Invalid manufacturer name"); - ESP_ERROR_CHECK(esp_zb_basic_cluster_add_attr(basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MANUFACTURER_NAME_ID, info->manufacturer_name)); - ESP_RETURN_ON_FALSE((info && info->model_identifier), ESP_ERR_INVALID_ARG, TAG, "Invalid model identifier"); - ESP_ERROR_CHECK(esp_zb_basic_cluster_add_attr(basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MODEL_IDENTIFIER_ID, info->model_identifier)); - return ret; -} diff --git a/examples/zigbee/zb_common_components/light_driver/CMakeLists.txt b/examples/zigbee/zb_common_components/light_driver/CMakeLists.txt new file mode 100644 index 00000000000..b865c652ff4 --- /dev/null +++ b/examples/zigbee/zb_common_components/light_driver/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRC_DIRS "src" + INCLUDE_DIRS "include" + REQUIRES led_strip) diff --git a/examples/zigbee/zb_common_components/light_driver/Kconfig b/examples/zigbee/zb_common_components/light_driver/Kconfig new file mode 100644 index 00000000000..f89d061cddb --- /dev/null +++ b/examples/zigbee/zb_common_components/light_driver/Kconfig @@ -0,0 +1,13 @@ +menu "ESP Zigbee DevKit LED Configuration" + + config GPIO_LED_ON_DEVKIT + int "LED GPIO on devkit" + default 8 if IDF_TARGET_ESP32H2 + default 8 if IDF_TARGET_ESP32C6 + default 27 if IDF_TARGET_ESP32C5 + default 8 + + help + The GPIO connected to the LED on the devkits + +endmenu diff --git a/examples/zigbee/zb_common_components/light_driver/idf_component.yml b/examples/zigbee/zb_common_components/light_driver/idf_component.yml new file mode 100644 index 00000000000..82ebf2bc72e --- /dev/null +++ b/examples/zigbee/zb_common_components/light_driver/idf_component.yml @@ -0,0 +1,3 @@ +## IDF Component Manager Manifest File +dependencies: + espressif/led_strip: "~3.0.0" diff --git a/examples/zigbee/zb_common_components/light_driver/include/light_driver.h b/examples/zigbee/zb_common_components/light_driver/include/light_driver.h new file mode 100644 index 00000000000..b3aa17e5f41 --- /dev/null +++ b/examples/zigbee/zb_common_components/light_driver/include/light_driver.h @@ -0,0 +1,151 @@ +/* + * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: LicenseRef-Included + * + * Zigbee light driver example + * + * This example code is in the Public Domain (or CC0 licensed, at your option.) + * + * Unless required by applicable law or agreed to in writing, this + * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. + */ + +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* light intensity level */ +#define LIGHT_DEFAULT_ON 1 +#define LIGHT_DEFAULT_OFF 0 + +/* LED strip configuration */ +#define CONFIG_EXAMPLE_STRIP_LED_GPIO CONFIG_GPIO_LED_ON_DEVKIT +#define CONFIG_EXAMPLE_STRIP_LED_NUMBER 1 + +/** Convert Hue,Saturation,V to RGB + * RGB - [0..0xffff] + * hue - [0..0xff] + * Sat - [0..0xff] + * V always = (ZB_UINT16_MAX-1) + */ +#define HSV_to_RGB(h, s, v, r, g, b) \ + { \ + uint8_t i; \ + uint8_t sector = UINT8_MAX / 6; \ + float f, p, q, t; \ + if (s == 0) { /* achromatic (grey)*/ \ + r = g = b = (v); \ + } else { \ + i = h / sector; /* sector 0 to 5 */ \ + f = h % sector; /* factorial part of h*/ \ + p = (float)(v * (1.0 - (float)s / UINT8_MAX)); \ + q = (float)(v * (1.0 - (float)s / UINT8_MAX * f / (float)sector)); \ + t = (float)(v * (1.0 - (float)s / UINT8_MAX * (1 - f / (float)sector))); \ + switch (i) { \ + case 0: \ + r = (v); \ + g = t; \ + b = p; \ + break; \ + case 1: \ + r = q; \ + g = (v); \ + b = p; \ + break; \ + case 2: \ + r = p; \ + g = (v); \ + b = t; \ + break; \ + case 3: \ + r = p; \ + g = q; \ + b = (v); \ + break; \ + case 4: \ + r = t; \ + g = p; \ + b = (v); \ + break; \ + case 5: \ + default: \ + r = (v); \ + g = p; \ + b = q; \ + break; \ + } \ + } \ + } + +#define XYZ_to_RGB(X, Y, Z, r, g, b) \ + { \ + r = (float)(3.240479 * (X)-1.537150 * (Y)-0.498535 * (Z)); \ + g = (float)(-0.969256 * (X) + 1.875992 * (Y) + 0.041556 * (Z)); \ + b = (float)(0.055648 * (X)-0.204043 * (Y) + 1.057311 * (Z)); \ + if (r > 1) { \ + r = 1; \ + } \ + if (g > 1) { \ + g = 1; \ + } \ + if (b > 1) { \ + b = 1; \ + } \ + } + +/** + * @brief Set light power (on/off). + * + * @param power The light power value to be set + */ +void light_driver_set_power(bool power); + +/** + * @brief color light driver init, be invoked where you want to use color light + * + * @param power power on/off + */ +void light_driver_init(bool power); + +/** + * @brief Set light level + * + * @param level The light level value to be set + */ +void light_driver_set_level(uint8_t level); + +/** + * @brief Set light color from RGB + * + * @param red The red color value to be set + * @param green The green color value to be set + * @param blue The blue color value to be set + */ +void light_driver_set_color_RGB(uint8_t red, uint8_t green, uint8_t blue); + +/** + * @brief Set light color from color xy + * + * @param color_current_x The color x value to be set + * @param color_current_y The color y value to be set + */ +void light_driver_set_color_xy(uint16_t color_current_x, uint16_t color_current_y); + +/** + * @brief Set light color from hue saturation + * + * @param hue The hue value to be set + * @param sat The saturation value to be set + */ +void light_driver_set_color_hue_sat(uint8_t hue, uint8_t sat); + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/examples/zigbee/zb_common_components/light_driver/src/light_driver.c b/examples/zigbee/zb_common_components/light_driver/src/light_driver.c new file mode 100644 index 00000000000..4273ace70ab --- /dev/null +++ b/examples/zigbee/zb_common_components/light_driver/src/light_driver.c @@ -0,0 +1,87 @@ +/* + * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: LicenseRef-Included + * + * Zigbee light driver example + * + * This example code is in the Public Domain (or CC0 licensed, at your option.) + * + * Unless required by applicable law or agreed to in writing, this + * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. + */ + +#include "led_strip.h" +#include "light_driver.h" + +static led_strip_handle_t s_led_strip; +static uint8_t s_red = 255, s_green = 255, s_blue = 255, s_level = 255; + +void light_driver_set_color_xy(uint16_t color_current_x, uint16_t color_current_y) +{ + float red_f = 0, green_f = 0, blue_f = 0, color_x, color_y; + color_x = (float)color_current_x / 65535; + color_y = (float)color_current_y / 65535; + /* assume color_Y is full light level value 1 (0-1.0) */ + float color_X = color_x / color_y; + float color_Z = (1 - color_x - color_y) / color_y; + /* change from xy to linear RGB NOT sRGB */ + XYZ_to_RGB(color_X, 1, color_Z, red_f, green_f, blue_f); + float ratio = (float)s_level / 255; + s_red = (uint8_t)(red_f * (float)255); + s_green = (uint8_t)(green_f * (float)255); + s_blue = (uint8_t)(blue_f * (float)255); + ESP_ERROR_CHECK(led_strip_set_pixel(s_led_strip, 0, s_red * ratio, s_green * ratio, s_blue * ratio)); + ESP_ERROR_CHECK(led_strip_refresh(s_led_strip)); +} + +void light_driver_set_color_hue_sat(uint8_t hue, uint8_t sat) +{ + float red_f, green_f, blue_f; + HSV_to_RGB(hue, sat, UINT8_MAX, red_f, green_f, blue_f); + float ratio = (float)s_level / 255; + s_red = (uint8_t)red_f; + s_green = (uint8_t)green_f; + s_blue = (uint8_t)blue_f; + ESP_ERROR_CHECK(led_strip_set_pixel(s_led_strip, 0, s_red * ratio, s_green * ratio, s_blue * ratio)); + ESP_ERROR_CHECK(led_strip_refresh(s_led_strip)); +} + +void light_driver_set_color_RGB(uint8_t red, uint8_t green, uint8_t blue) +{ + float ratio = (float)s_level / 255; + s_red = red; + s_green = green; + s_blue = blue; + ESP_ERROR_CHECK(led_strip_set_pixel(s_led_strip, 0, red * ratio, green * ratio, blue * ratio)); + ESP_ERROR_CHECK(led_strip_refresh(s_led_strip)); +} + +void light_driver_set_power(bool power) +{ + ESP_ERROR_CHECK(led_strip_set_pixel(s_led_strip, 0, s_red * power, s_green * power, s_blue * power)); + ESP_ERROR_CHECK(led_strip_refresh(s_led_strip)); +} + +void light_driver_set_level(uint8_t level) +{ + s_level = level; + float ratio = (float)s_level / 255; + ESP_ERROR_CHECK(led_strip_set_pixel(s_led_strip, 0, s_red * ratio, s_green * ratio, s_blue * ratio)); + ESP_ERROR_CHECK(led_strip_refresh(s_led_strip)); +} + +void light_driver_init(bool power) +{ + led_strip_config_t led_strip_conf = { + .max_leds = CONFIG_EXAMPLE_STRIP_LED_NUMBER, + .strip_gpio_num = CONFIG_EXAMPLE_STRIP_LED_GPIO, + }; + led_strip_rmt_config_t rmt_conf = { + .resolution_hz = 10 * 1000 * 1000, // 10MHz + }; + ESP_ERROR_CHECK(led_strip_new_rmt_device(&led_strip_conf, &rmt_conf, &s_led_strip)); + + light_driver_set_power(power); +} diff --git a/examples/zigbee/zb_common_components/switch_driver/CMakeLists.txt b/examples/zigbee/zb_common_components/switch_driver/CMakeLists.txt new file mode 100644 index 00000000000..aaa61c566a1 --- /dev/null +++ b/examples/zigbee/zb_common_components/switch_driver/CMakeLists.txt @@ -0,0 +1,13 @@ +include($ENV{IDF_PATH}/tools/cmake/version.cmake) + +set(public_requires "freertos") + +if("${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}" VERSION_GREATER_EQUAL "5.3") + list(APPEND public_requires "esp_driver_gpio") +else() + list(APPEND public_requires "driver") +endif() + +idf_component_register(SRC_DIRS "src" + INCLUDE_DIRS "include" + REQUIRES ${public_requires}) diff --git a/examples/zigbee/zb_common_components/switch_driver/Kconfig b/examples/zigbee/zb_common_components/switch_driver/Kconfig new file mode 100644 index 00000000000..1a09f65af0a --- /dev/null +++ b/examples/zigbee/zb_common_components/switch_driver/Kconfig @@ -0,0 +1,27 @@ +menu "ESP Zigbee DevKit GPIO Configuration" + config GPIO_BOOT_ON_DEVKIT + int "BOOT GPIO on devkit" + default 9 if IDF_TARGET_ESP32H2 + default 9 if IDF_TARGET_ESP32C6 + default 28 if IDF_TARGET_ESP32C5 + default 9 + + help + The GPIO connected to the BOOT button on the devkits + + config GPIO_EXT1_WAKEUP_SOURCE + int "External wakeup GPIO" + default 9 if IDF_TARGET_ESP32H2 + default 7 if IDF_TARGET_ESP32C6 + default 7 if IDF_TARGET_ESP32S31 + default 6 if IDF_TARGET_ESP32C5 + range 7 14 if IDF_TARGET_ESP32H2 + range 0 7 if IDF_TARGET_ESP32C6 + range 0 7 if IDF_TARGET_ESP32S31 + range 0 6 if IDF_TARGET_ESP32C5 + default 9 + + help + The GPIO can be used as external wake up source for sleep device + +endmenu diff --git a/examples/zigbee/zb_common_components/switch_driver/include/switch_driver.h b/examples/zigbee/zb_common_components/switch_driver/include/switch_driver.h new file mode 100644 index 00000000000..74e05253b9f --- /dev/null +++ b/examples/zigbee/zb_common_components/switch_driver/include/switch_driver.h @@ -0,0 +1,79 @@ +/* + * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: LicenseRef-Included + * + * Zigbee switch driver + * + * This driver reads a physical GPIO switch/button (e.g. BOOT button on devkit), + * uses GPIO interrupt and a queue to report press/release events to the application + * via a callback. Typical use: Zigbee HA On/Off Switch sending commands on button press. + * + * Unless required by applicable law or agreed to in writing, this + * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. + */ + +#pragma once + +#include + +#include "driver/gpio.h" +#include "esp_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Opaque handle for the switch driver instance. + */ +typedef void* switch_driver_handle_t; + +/** + * @brief Invalid handle value. + */ +#define SWITCH_INV_HANDLE NULL + +/** + * @brief Callback invoked from GPIO ISR (low-level) when the switch level changes. + * + * Runs in interrupt context: keep it minimal (e.g. set a flag or post to a queue). + * Do not block or call blocking / non-ISR-safe APIs. + * + * @param user_ctx User context passed at init + */ +typedef void (*switch_event_cb_t)(switch_driver_handle_t handle); + +/** + * @brief Switch driver configuration. + */ +typedef struct { + gpio_num_t gpio_num; /*!< GPIO number used as switch input (e.g. BOOT button) */ + switch_event_cb_t event_cb; /*!< Callback on level change (invoked from ISR); may be NULL if only polling */ +} switch_driver_config_t; + +/** + * @brief Initialize the switch driver. + * + * Configures the GPIO in switch_driver_init() as input with pull-up enabled, + * installs the GPIO ISR, and hooks the callback. The callback is triggered in low-level + * (GPIO ISR) context on level change. + * + * @param config Driver configuration (gpio_num required; event_cb optional) + * @return Handle + */ +switch_driver_handle_t switch_driver_init(const switch_driver_config_t *config); + +/** + * @brief Deinitialize the switch driver. + * + * Removes ISR handler and resets GPIO. + * + * @param handle Handle from switch_driver_init; may be NULL + */ +void switch_driver_deinit(switch_driver_handle_t handle); + +#ifdef __cplusplus +} +#endif diff --git a/examples/zigbee/zb_common_components/switch_driver/src/switch_driver.c b/examples/zigbee/zb_common_components/switch_driver/src/switch_driver.c new file mode 100644 index 00000000000..7bb35cab09f --- /dev/null +++ b/examples/zigbee/zb_common_components/switch_driver/src/switch_driver.c @@ -0,0 +1,116 @@ +/* + * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: LicenseRef-Included + * + * Zigbee switch driver + * + * Unless required by applicable law or agreed to in writing, this + * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. + */ + +#include +#include + +#include "switch_driver.h" +#include "driver/gpio.h" +#include "freertos/FreeRTOS.h" + +#include "esp_attr.h" +#include "esp_log.h" + +static QueueHandle_t gpio_event_queue = NULL; + +static void switch_driver_gpio_intr_enabled(gpio_num_t gpio_num, bool enabled) +{ + if (enabled) { + gpio_intr_enable(gpio_num); + } else { + gpio_intr_disable(gpio_num); + } +} + +static void IRAM_ATTR gpio_isr_handler(void *arg) +{ + switch_driver_config_t *config = (switch_driver_config_t *)arg; + switch_driver_gpio_intr_enabled(config->gpio_num, false); + xQueueSendFromISR(gpio_event_queue, &config, NULL); +} + +static void switch_driver_button_detected(void *arg) +{ + (void)arg; + switch_driver_config_t *config = NULL; + while (1) { + if (xQueueReceive(gpio_event_queue, &config, portMAX_DELAY) == pdTRUE) { + if (config) { + if (config->event_cb) { + config->event_cb(config); + } + } + } + vTaskDelay(pdMS_TO_TICKS(200)); + switch_driver_gpio_intr_enabled(config->gpio_num, true); + } +} +switch_driver_handle_t switch_driver_init(const switch_driver_config_t *config) +{ + if (config == NULL || config->gpio_num < 0) { + return NULL; + } + + switch_driver_config_t *handle = (switch_driver_config_t *)malloc(sizeof(switch_driver_config_t)); + if (handle == NULL) { + return NULL; + } + memcpy(handle, (void *)config, sizeof(switch_driver_config_t)); + + /* Configure GPIO in init: input, pull-up, and negative-edge interrupt */ + gpio_config_t io_conf = { + .pin_bit_mask = (1ULL << config->gpio_num), + .mode = GPIO_MODE_INPUT, + .pull_up_en = GPIO_PULLUP_ENABLE, + .pull_down_en = GPIO_PULLDOWN_DISABLE, + .intr_type = GPIO_INTR_LOW_LEVEL, + }; + esp_err_t ret = gpio_config(&io_conf); + if (ret != ESP_OK) { + free(handle); + return NULL; + } + gpio_event_queue = xQueueCreate(10, sizeof(switch_driver_config_t *)); + if (gpio_event_queue == 0) { + gpio_reset_pin(config->gpio_num); + free(handle); + return NULL; + } + + xTaskCreate(switch_driver_button_detected, "button_detected", 4096, NULL, 10, NULL); + ret = gpio_install_isr_service(0); + if (ret != ESP_OK) { + gpio_reset_pin(config->gpio_num); + free(handle); + return NULL; + } + + ret = gpio_isr_handler_add(config->gpio_num, gpio_isr_handler, (void *)handle); + if (ret != ESP_OK) { + gpio_reset_pin(config->gpio_num); + free(handle); + return NULL; + } + + return handle; +} + +void switch_driver_deinit(switch_driver_handle_t handle) +{ + if (handle == NULL) { + return; + } + switch_driver_config_t *config = (switch_driver_config_t *)handle; + gpio_isr_handler_remove(config->gpio_num); + gpio_reset_pin(config->gpio_num); + free(config); +} From 269035ba122a894c5ed2e401c0d28d91d2a8ec71 Mon Sep 17 00:00:00 2001 From: "xieqinan@espressif.com" Date: Wed, 9 Sep 2026 11:36:05 +0800 Subject: [PATCH 2/2] feat(openthread): update openthread ot_br and ot_zb_multipan examples --- examples/openthread/ot_br/README.md | 2 +- .../thread-border-router-esp32-esp32h2.jpg | Bin 338838 -> 0 bytes .../thread-border-router-esp32-esp32h2.webp | Bin 0 -> 26888 bytes examples/openthread/ot_zb_multipan/README.md | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 examples/openthread/ot_br/image/thread-border-router-esp32-esp32h2.jpg create mode 100644 examples/openthread/ot_br/image/thread-border-router-esp32-esp32h2.webp diff --git a/examples/openthread/ot_br/README.md b/examples/openthread/ot_br/README.md index c22dc0aa182..5922824a5c2 100644 --- a/examples/openthread/ot_br/README.md +++ b/examples/openthread/ot_br/README.md @@ -22,7 +22,7 @@ By default, two SoCs are required to run this example: * Another IEEE 802.15.4 SoC (ESP32-H2) loaded with [ot_cli](../ot_cli) example. Connect the two SoCs via UART, below is an example setup with ESP32 DevKitC and ESP32-H2 DevKitC: -![thread_br](image/thread-border-router-esp32-esp32h2.jpg) +![thread_br](image/thread-border-router-esp32-esp32h2.webp) ESP32 pin | ESP32-H2 pin ----------|------------- diff --git a/examples/openthread/ot_br/image/thread-border-router-esp32-esp32h2.jpg b/examples/openthread/ot_br/image/thread-border-router-esp32-esp32h2.jpg deleted file mode 100644 index 91f67f5a85f125fe8b82067c3076f2e3317e3933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338838 zcmeFZ4ZIswnJ}K)+fu%y0)BwBPyqprFqveM%oNJ)Op-|^lSwj@WG2aqFquqdl9^;a zlSzW*7OU&WVyog8ifvs~T=!kkT@?kfts;fh<+6a56%@3E0tEz0ftI%SJxN+XWLIAI z_x^tWcmK})-DGBR&NI(*&h!18GxPV&KjeFJnxshI)RfP675MYb|IYVxqTg)zd<^4z zkI&~j+IQ5{Nxo@tHU<8CQ}6IC8lU@o{M2bLpTBT_A zTmeBH=K^tr&jpgvhWerj!50J|-$gThQU0#!wW@qJ@f4F(`nai8?m1hcJCcv06 zS#73}}o_B#4y1=j%2*xlB3Iw5G@O;qX zd}q*c#s2vn=d2?T;<6*zP19`}o#i8lV$JBfE6)T^o}kn=Uk3ZSw7;rhl4>jebz=o; zwv`c8W7u`+<<@4`*2nnPB}mrgw%l%*)MR7n64T<<^dy=m8@Bt2uLu z15<`L*)h7dBqw^{iDw-_%yBvSmC=0Nhy8JP(0tt4ToJS75sMZLLtlC3pXc1s6U`Nj zQExT|anY4mo;l*b^8?uV0kn98ldF?fW6<)Sv^v72{s6in5I77FFi%}{#XsA)F0E)7 zc3T94)ohE347E&I8N*Jm|4{0hSVL+2o+y>CP4Rsdb7Sl7QE3A}(46pqKCD2qF#q}r<|v7wm6JSxs~85~DgP0!-~06snl9JC)D z3H+S1`uK%7JL(J$7AGJ-#Rv&K&cYa5(y(Nq)F(kh&;@4-iN0BDqp<|Is0rbKq^DDC zlc)&1p%5rQNx{<-fOrLGSRAhi*`btxi<}NFz)>jiaVnK9aDmD5#y5|A8#ii<86m=N1J~O4+8F_jQS}b5kFNtG zOk&A;Ti5I0bV4#VezI0e@vb;Jg(gp~3A`$SMg%_UglqLA-x9$I5g%RRjHGh~cJzCE z^t-}TVXiO+`0AUL*E9k^kTLn7TP;L{C7}Jp6syol#-!qjaIUB*g(M%UCHX)-2D4*; zV0P_FIjvENY_C=()LIA7o#b>W2srNWk?4$PTN%xKwv`BHTNRgSBK;%3AO4P9$P~3;wiy^?S`(IdO@}{wIT^!OHzUD}HILkg4@-dA$5&j95lCHp9gYM)Pndhu z?qz_r2xuB_!Qft8`y-%4vkfN7MM|JwOZ+3CvBGHf@+$an9Zaj1v#pl_f_tC?kmVAi zh$${0#f@GjR1eh$VY4bQ-AZsg^W$d!RogMZ*X{61*Ee)_L^xiJVRtOM@k&2etOPSf zs>>9JL{+G&b)g@i$nnIrYQcW5UZxZ&M5vWuNy!w5VM(jUjy(1MD!?NTnS8&74>M$1 zueSL?RS37L1ws%7J|qg^&X{-GoLNumy;_qn#~6Z>|C$G5{Q@9em)bm-oRY$i4Za>Wn#r9Bbl9CxVIb6&!FPj+0U&9E9~s`4zDQn*QbE)su4gCY>Ljbh2i3FuBFT z=@OO9!cwPlq~l?^Ea5Q)&*KD(Cs|y^W6VTSXu#-roWipn9vx|QjwNV3fdVB=RB;l) zD;{Cs$p9`XL(}fp@%^hSM5uE3v@@!;FOY@Hl}p6@1{uSv*_9 zgI-+0b0s|D0cDr3;C>GnDpn%mY@&#B8j zML*wHu=-N>`fJ7+@@ePywaY ziRGPi0@w6d(MT6PU5k~qbjxdNv6_({dL2F1aOebUbYiUl&EuvOGZJ(gx4JQ>M2B#D z81tOW7$BuM;TW9Ah-?>+g_Vqh_o$dZk@2%$As#ar*6U00REcRRgHD{mnIJnH#@RqN zt-yGkH?nm+n2U>A*7HL07+}1iEv7`T8MX%e2hi)cp#B4D_A5R zuH+pL%E$d48{_bHBEhf~j_@ba4%_A8I)bt;{xEdHmPYsjS%ysO$o4Ci;(?5ndRy_iD+e8Z4^jIswDd=o=lc1V+@;W zvzN@4Dt=W{lBH5r?6?DNfQzKob4q0Y%SM!TS>&IIciT#;gm$H z{X#0`NJf9ii~*+drFu$*Q>ijuZ*!q|O7>(@4dbb{A?rlMpXzFjL?891f?7i-{7}ko zC}e>ksHCT~WAOx)$JJDfq^NR99RoB9sT|dCn(0BBrwpoT4>EPiGg`S=woQfEme3XEzz!5VG85OFF~C}L(9C2d zHy(qDOu6D(gOHk0E8Su&63f_9H`+wC3~cnY0+h-?h?gxA4nwnEaF{4CC8Mvjk`bms z4d_;S;yEy;Gl1hvmI+jbjbRR9phSQka(Xt61cLEWFaZNkHUh!yusXfY3j$n~eyvgJkB|OHEDC)6X84dU1op7#IiPYoPAlF5snWAgwB1SY4_d5Ax z2{q%xR=z-Cm10oM%ebG4hn2jA`;j=R=7R~yXhF>}KsJ`etBF{f&D9CIL|UxaC!!kV zv7L0xEoDON(2O@qd7Q(u2`*5eIVKGFnCH2wNrtpalWW(LR-oo_Lq0VICnJFw+f=3MiWM;(1GdxNKD{trmgjw#hA%R+8|P7)7gR+EEeniT)GtQ7VUZ- zPhgWcr5MiULpT4MD=p3k~GP4X}= zrG+?Lm3T`RFu0!J!|C!ELxfa%LJF=7U`-SRz1k&>6!;QN-G+q#U(@-XUXJsUst<*7 zpl11^9mn~P4r@|_)lOcJi&ejFq3XF?F6}3_EQ9W{`Gu46xaV&{fK&o5NT}H+pC*nPUb%Cvk($)x12~m zYxrdi7ulK_7qp_Ev(gl&b*uss&Stf!SfbJeTF)2wF~D-ToCcgHbixv?hlDbcR+)CD zSxu+gY`ZZK#k9@019Z&}ds2sLOIR4zI(1rR(~)kcA8a(kP{c^Kl^{({7~80c&9p@e zh9|b_R=#bLqSlX;5L0Zola`n}Sz_Bt(N^B_XuB@$bWPx8_U$b|W%M)dsa5Ct$58LidbSv|6-_I>AA-#$=@dJS>*8u7m`K zb}gSp{YW6*VY_Yu4b-BAJeDB>fnu@ma%q_9@kO`H!FpK;X6w?JWY{0CRI@E3C=9D; z-3$hMy_%Bs$Pi`M6WO2;QirnPqGl)pDcNoeLrO(;m`fKCx7Vup^L99u*Pxt`2rHrX z7@*z-esiQ_Fx@5^Db>tC&a6ecWn0SiqEV{mCgh+LZMM2@4#T79&=c};9W7`25JWR* zzcVx;Hh?i1xRftXJO`{D3i=_L_7fe%%4>*UYD9R*?)XCulz;{msL;W>y>JF{hfu8n zL69FAMVMMGnAY)RapHG3pc+oG6CayUSm5uL5`;0cwaTH;8~ znEZC6&7b-HV}P$}451*+!zv&=0AYcb;BcJcaF*fl29&@jVR#B35yrkc@@L60K-{B} zAb3f|a1D?L8jPIr*EVMH7@!smiA2R%BLiB+zypBO&c?t!Fd_g3P-7E-3d4as07-FF zpXC$DL@?2mDv1(fCRL&@^x0;fD7h(>=~tU*j2kGugw77RqGr*9N+=)8me`IK$qln= zeWDMmsbW0PrKq&Qq+_a5RnuVTtU`cyvph}M0|d$^;9N0KEsqie0^F~cbxf!RRUquH z1JY`}N{EB&ojM{F9eq+ov|luM`;G1a8nbQ2i>M)$|GaDmrNxzes$wN5%Hcfxeb zq=mK_X_}VRb!;)xGe+YJ$fx22TS|;c25gdu0j{Wx23SqRiP*@+NRTBit5Qm}uT&EQ zqn7eWCdDCzY>ed7O{td{rsG^(QN==OAT%pLkr1K$ByW?I(+QxL+pc5M%yC`&0j>@>%*Hw0h6(cbm^|$v@OJf%Vb${`1+vFJE{Mq zOv+^J3?4C9$8v;l)5;lqkxNDym_QI9gH!?v4+;S;niTy- zuGY76p*j^dy#dL~EK?%#JugR;>Q!irVFxzrArolnW}sV(D2~$9bS9AHCC5?=x?C@m zQ?)q9M;dV{ok=>)q~*{GLh^c6qHUC~H*GLJhd;&u$Cs_99SkHGqabao zukJ8z%jIah*t8OGs$|EDwL$^wg#)fFWSSE*nl|GcTdq)Ds5`{txb3A-sFCY7%lUSB zpvO(W(H}s3I%;KjgXPdz4(kHvCr6j;WN;X_7>&#fAfe8|l%S6>4C=1z(SiUK!)l$9>@|!8(9Cghgq{*QGE9j=ppaZs#awcRORN6Ettq2RT;zT)E zs!++&d6n`Hk_J&u>V;OZ7W7<*uDg{%#8A2^oeTy$w#W?{2^$l-DpOFgoSKh1sah-O z(SFdj(WwnO_87wilXcCm6@)_)+K5^-OS)>$#geS44a|5`<-OOD>J%y9jSd-h;LrdL zi>;oU)YaC+w`sRydNr5N>SjsB5xSG0{dF5ysqlb-vO&1%rm~1u=>iv=(A|vOY9u(G z&S0HdPm6Fhqvw|tXqblMg$y>q&>oURb=ap3H(Jl|yw(ZBaUxB@e%waF36&}&hY%jO zAVvu}L}M72`k6=*HB*{iCsUbvyQs-*N-FgckSiXO-0J21lGYe9PP8ioU5s~Y!5D>> zx~fR^m{KH=OArKI36`N88w$5W^|mTRU6mOWbHgMES>q~;!&=Go!=;Jmz-Jh`gcev3 zmSI_0$TQiV?bigq$#QN&i>Tdrz>0Cvs*o_dah31AEZ%@?-2`H}={_$O6(FJL1Yjp+ z2bG~;hzSFGrxXkTV68sYe?V--bv0SqJfxr96tuoSo2mAPcP3m|{N^E)`ugZ95&o zlDjfU1~X_^(0im=542su^`fD+B?(NTl}$$q9*0iKAAQSY8C~Q_vE~q9a2sJ$zzT9d zJ2dsa$#jwk(o5I!@kqzZU>c(aQ>bNgB4!~qo`f_NO@)G%X@(D zuzXN#_vAKUZLTipf)E1P$lQ?gh*VfrS+(W3Y__MnSXR;mx>vDH*A>gUYnA9sV_+t0 zxiKGBgKgf3V?EvD1imW<{BXcaq*>RFSM5Artyx*4UBmo(nm3Fbk|E-lA(K)%X8A1v zvoJU#iISd4Xo+-k5}K7090T@9_rCT%c)et0-TJDNj67HAZ5JA=1wUj2xG!*a#}NyrD1{1B~)a ztJH8p`ACP-O(~h_wHta0tEGBbzZwaJ3sA-u>h(gf>6V*JrjU%JJH3on2!X{U)iSTg za47-`D>lw259b`RDXo(<{aUIUh7#SZRTrzBP=m_H8%(D?h{CFoEp#hts!^cGIBl|2 z6Gh-;Kh-B#CYWmnB#9wn>3l5S2#zrfg>r;8XqRld=mPs$;Ph12?35sp17+xJylfOf z&@8~EW~E+&MMP^Uz+FQ$r5=d)T{=wosgzmnCutK3cg6r6swTsMHpEx8LRi(RYH~PC zA%UJ&%_3K%umE;{WrbFSZllSvVkSu9p$0o`dl!DVlBvV9&AmYP>*cc$N4`!r> zDOHjdjU-@u>L!y;|lGQW^tZ6}Vq~m%@$3j90#W3?;qJ}k#QKiD#;W5Be zK9;K$JMETSNH(3pK-YOa990rVH`FThhJ!-F)e}y=PiX_k88{qeE2`pUW3hNo01i>B zUIz|QJJ%_4Ha!OD)x)GxPbMIGvL0dl3eYMRoTwGxpc=nz~)Jg1&4 zwYes!2iT~;i<|Li9!kq;9c>Bm1Uv>9=j=jnFmTe_aQ7TO@=#YVdv?r2a*54Z^|OgGS4A>+5{blo0AaHelacz6h< z28AF3PpTDYz!lPkWF;7=VRpSB;CW?`aUoAGbp)}K#wZ;n%0btF=!(CSXynm`!Dniy zo6ias*$9L!zMoBWkwT?~yR9C7D(&1jd0UQQ4?&p(T!q1fl?P=+##r8@H};X5LR24bNS`I~t> z4?=)&BVz=@?!>pDK_#r#O?p+H0F$Lr8XODjT{9muIZ;lPTz{@wk_VMkgQ^zuZG;#wRLqu9H5uwPfzg9qvMJ^!?i@&sax%+T`&<*0pHg(8#o$nr zD2Kz@CMcJpVI*J|+Xz`#3#M5{nuZ^3k)?87D6$+^&J--Kqv53&oZU(a>s+n zvZ&^0ODg1|WGO?-nWR;7S-K!cFcm@gYRzACBo1O?o(A-fO<6S@aN$69xgsj5X)P7B z&H5Oi9E;YSrk+&;9$4%4s=#gRY85LMS^=SBUBSwOnwSdY1$yYRR>5u|bTp|7ZMZ&! z@qP@%1mW5kV27y1+e0;B-~$5hVxTw+2B+&UvUZBg)NS1$;at#9HcdS(aUHX3A~5C8 zc&Hro)5(@0(gD%5cso5T<%eT{@m!)rcGGc5=eukqfMATs6Cp~5J7NYVbtC}ET+#wT zRxq6sUBKRCSVHYkxm}2s3s6~LSsJno%ZbMa+8AJoY|5$Vz>H+dHd2?oI`~2=Qb~>W zvTh$~QGryT?=SjQ4%E;|JV2_Z$rLhaAbScKi(=VGxG83elBBjLDN~u|!ga64Xck7v zeUvPflC`Q)1MxplOTv+W*d2|oB)91v1Hy+6m2Lsg%d%jPPG(XOi}3s~)SF039P5Po zJX(*qnJg73778Gsp@+FZI1Bns>=y<$+RLXKdTU5jL-5cR zjG|bNSID?jX3Az)1CxjtXfw2y@1Ac@N~BioDshhcy(^5lAoFMU7!?K{YzTAq1-T z1HYf{wT9)4ZZ{in42{OB9o^0q$~8SpO^j5@Ex^^dV1n?dU+{<6L9q{3uViwTlBy)l z2uL{q54@SJla7%qMNYZnUD72T&%$Tfug5kj_Y)-Pbg=GjWND zBrg!O$@6|vp=cv1N z(=Dj2lpezZ&58E~`vXw104i+~+62qeYyCk!H3S?Dk&!CjOw{>C3jwQr3N2_zz%AD0 z(EiXi$hO`x>PC^Ma9)PZS1}nA1K&g}uRE1)Q68Knr2EvI>qbvJ? ziYgbWOuJE{sHhOqx@NCL6hdmL8wHLy$Y>IIRt7QC5G7Tp!8ihBs~-aSf{_8Ftx#vsx2htZ zgJby+N42svPe;dW)3Tj7lwe0g1QjfajMSOtpjegLWL$o&OXq@!x(~7^;epy}X=o={ zq18|V*j?Pfa>?i<@PSyo#;2qJ3Pda{^>`hN4Z}@|u5=4YsZ?sUJ)1;K7sDi{0z44S zvLJiF1p`ey6{yOEK_bDEWUOQ5Q~1OsmV}OlT4}7Nl-oVZDPUwInnL7mkao-UR=Vbp znGDs7GFp*<^NmU?jDds|mq-9}R!wv?gv;?IDo0RNu{PmDk_`E&C=xRol}0!*NJDBY zK-T^FMtH;&FwOv9He==dw5tL}2vK8KXX4W$AoEqJ0aqXh`EVg(rBHr^m9Ce=O@AGW!Gc#VVtKsN(2{b!6yrc5$Kg;K zgsEHsF80&mWS5*QB*SZkP(eguj#-h)K+P&y5Qt)f9&nM&D(^4iF~1yT^iHX3D@4!9 z7AUA{G~9S7Rp^d+BUde5+%R$Q+qIRn(Xoj|6k z(1w|o>K^U1Lw(sF1F3|#Txbm0Kz`tct4>YitC=BRP2g@l<0|Ejo}SbK2ArT^L%mXE zYzNAP!iX4P{kmL=f?N!!0|OJ&Nt;nK8K@~xG?gw{U@3vW!3=n zyUBaB5SG#mjkOX$2Sc33SE+Pgg3Fg7U!E2Tb2^78YYNvp@>BW(MB&_CK`yDZlNI75Cx7H;+He^;xLts@m4>U?YFWbs24lAvXts+X-1g@-~*TT zdmt@Bo84X!>^^y|%CgHKQb9*?U=%gwYMz1gcF@Vj-JadD^AQbASsWMBX*w)(V+=vM zG#bso`2q0c+t82;vuIyT`ZW(^>Yb=*46J-QXW&|^rWI0*%F&V@NyNGW9_$y4AaE@^ zaIOFn-@&MEjR6jZCS5IutcJ@L<#y36p=!DB0h=gC13A>C)H*1MfN}`Zbc$$o5b1`) zcot2BD=?h}B?hF?QOz1l!baDaFm^>&BQdnuD3Z8g#N==~OO&mmLh(#CS1jUAbKo~3 z#b5yI<}Iw3Nqd@DEvR78sK0>X^)62b>@r;qvb1z~Epa?slJR7ejG}$4S02bwNYlfK zK-=RosK9DHtF2>FdeAX=B%1TWG+kGVv1l?I$b@?mm8tTnLdR|D2|H;_Y)ZxIBKFAX zReEaE8Wdt_nC=?YB3x1usVK^W#c#bZ59v{h)xd=K`+{83+g*c7C|w+6<6|O~rjmBA ztgG%smQx}KLsIP|-mDGma0KoZ(+PjSR;~}z4FQzA3@#{i0&w4Lse8n+i^bCuhk~r7g&Pd3?{(>v;kgd zVN4h7>A-of%UWOo5MNRg7AUDF0wz_Fs3tEdU~OFj@0c*=(2fhG`JTTXR!YnO>JADM z&!I$jb1Bgb(r`3xmZ?G^6)c+NAnzBrYI-C*>MKQ_!V~bO=LkX zFsO*ND2&$8c9m%2LXVjgxg6ONK~U3)l-hc*z!@5E##p-Fz@dM zOR6Iq{XS(FM3Lk%hOZY#;Ti}c#>MRxSuQ1MJK5yAV7O!D?qm$bdLtMWV64WK`7RVR zs+z#XAx9vRbT0-CJ%}z2ibg{lfB?2o&u2Rgq2}e2m2f(qEMWaqQZ6vVdMAhkLf)8d z&>(}Ltcg^^UASDb!%

0?|lEDhf?Cswyn(t)6OeR=@6#-|rnoX+T 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

4ypA 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

=@seY z9F2p*qVu|$;V&Hs0cqFt^jO~2$p84jCl_aI%cTsq{lC;k`X7=A7<*?0%EpVQG9WD(s zS5C^kIQ34=1prW!F7URW_#Dk{cr#t{hEa%AjqJ4#4RPtgB1&+f+;?w|S55qn zefWbRej0TN`kjf#yn(>jn{46FWdz^PPM z@1lUw*`KZX0Oj<{vXnn&*FPz)PAl+p9p5#4pOYued~4;i7?XbdN=|Ap+81t$MC-e_ zR#nG#=$GW{C0SV48Lp0CYCPAlk(qb)lfw>p7FXlufuZM`Acg(CuF_}%^Zuh;@s#*k zzo=FyJFa+1i?Zb`84bo@W``VvLyu?We;<8M^>*j_7B@MXzt!L|HHSHwJ~JGa-K-ip z4Su>O;DQEi;hT>-t0>jx=Y07^osT$K`X6ROZKS#QPB57>o-gYEqlT;`?hNPjMR<~a z@#pg>XOhcF~wTPv14G0nPmb`<;%5 zwqXl90-XfKgSihSj)*D7d+?CmhiSTDixHK_wf7Qr25e+k7?*RV448?N)CY;=aNmZK z4vRqMfwG(?G$0G}25FuBPT`qK? zASIJHbUXA$^8~E&B*teI5)K7OMIQs~U8@*U2iuq=NcdCKOWJ<=?Pr5-74aD4{QREu zb3$wnV1=!fVFi>1r5ZL|02F??nR}x7e)rNh@fdR<{natL!^K6?m|OIs-BO5$?JF2Y z73ZMB9QUrLa#}`(j+EcDFR-Xt0_?{}NBs<6iZ70U><|o?<%azM#y zzElUIJ`hp>D$w_(Ok_L==?Z&l{dp(0A<@@{nFqs4Jn~-5Hp#>IWe=H~(emk9)-^H< z)uZneZS!|2A8oh~j&s-lB?@E-ee0b+rT{2hgC{chpd3JqayIwS*L+r}0T(8#VZ!G>)13 zPG4*Dp{0k6x%IKBH1p}t(T(Y=ZoA2-p_*uVi4KaJLDrkgfN9TdSolEo#(OMb+MWb*ZALT{A6J(v;X+VpMHfvv$?qHKTUz zO~t4fL2N?oAj#)FzVAQ3e~CCbInVRl_jO;RS&_@qc08d+U)y7tc!^!a8wsh^i2aVU zGUx?=+rk;`*2i z)1Ub2#DyzI_c3Q&JoLSmDj`uxuXKdYl(L@%;}9{2x5e?d_DJ)PL&P!uEIAhtsoWrD z)~I-(E>fiQC-=sfF*`e{tZy!1s%yr;pEwvQ+JG+A3(Wyc{KQ zE#;W#PXK^D(k&>?=gz#8&c4h!&o1~y`hA_>izWT5Qnt>0+l1Z_P|q%Va4nzLCD9}7 z@7TGF%Mjo)yaQ;KyW09QOv-^vc#b<#QmcY-ZX^D#RHsfU(FyDxd;s&l>05QC(Bsm( zW394Ml@R>7EIZ|l)V4wjp**r06%tymN(49U)DhKqMr8Exf*LV=CZtZhWu#@Y@$ZR; ze=IX|Fm&2AWbc=osRuV{!hWJU3=BZaq&CBiM?|Ja1}@1`l94gTwQ!4kVgTt~F(8rG zf;%*w@kYJEnSMSx*r7>x<1BYw`l9d{;kl2?d;8h2!L8fB9FzxBvFZsGbxLbPk|=YI z-{|G?Uo}`Qjv5l02y-~7JS4SZ20Yqk{Z1;Up9j@tQfg8cu7_yP@M?L9UQ2Q7%kNQI zCogb*d6r=x*Q_4xUwd{xZ6kYYH^7>*UG0{$qk;y#Ii$JvB2n+!zG*Ky_8h6?9fo0Q z$oY#f{|BMy`FHx-2~_~Co^zU&64VdPqG@kRvLt>QoeVc{ zeWH&~>+Tr`Paw;W;f32ISbT0+4jiJSTCs(W7*a38BaD)Ae~s@k|6)tM?>KAuwJg=P zy^p2a-n!!IXP<3jb03nggY)EwtEDh|=~S@(CNM*~80meEm)O_n>Pq<)KZSaHOL_HM zXROzr%P)36Qa~$&rRO&jojfu=WBQVZ9oO?Aiyyak_pVD?rUUxfKR_GKu{C`oh4cPY z{?i`WgB;^q#xL~t*j$u?xb-+Sk<-7>L4gL=;iG((5k?0h<|Z#UFI<+JeV zWxu^I@DFie=Qm^h8m_N=yE^3LpE~V~>Z<;A|N6VWb=-2R24lC+u8O>tjyhoCqz;I% ztTk56DkEm5WSw3Y%Xc5Ow4Lm2<5WxrU*Zs98ij}EDQqgzrDE}+L z=^-S6xmaVip*Q^r9Ug<3){dj?1}~{7zF&xOFX!9pvS3rLUgcTYogZ<2%+Y&vdL!Tt z#N>6iJ!7Fd*t;B*HYo)V!D*eD-IqS=mL(j4a!#^?)E3jww~pLy_r}!4_;q{TGG42r z?*td>Zlqt8)NuTo6LJ5T*F&W(9}nF?x0`YCX-(K!*P70L99U>qij;7M$%;T<5mDqcY#(JpIeyYp=ADUHZMd@7;R;+e5T>;&}a#*e1M`kuI3S z`i7NZb3C%T+7uLY@Fv4aicNo%(ZDb<`zdo=-vhom`%5TUFzTP+L1}De>Flb> z-1^KZ+lgv(^%uup@cpBH7GSPISnARLh&2N$^~%2wNtef&!(=ptywSIR{^?PlVy>*> zxBl%2BJ~P$bhk?{57GQl9(%qKiBksZ_gRI7Lg&VLxuutX<`o9ZWfrV|#=_CKpFzG^ z=Su=D=ChTSzqu?v{v!*Vj(yehD*d}=DD(BFhy_ZeUkskd1PNJ9i*n!v2ivAqfRJM4 zXVJl*m^ajpR`X%6vd0Vbr%8#ie=0Z_1A{xjXts`i&%cDeAV*J^PwFU(VJ(@geGH+F0 z=#fX`s?vIppRJZBDmS5rfZX54MSB@IYk@%FCBhzTFuPhc=E9U{-;OytBI9K)o7*2n(jHAMYez#tcZ&Qfv{8rBn39k4ejkraT1Oql zr0oSthqdmU>TaR~nA);20jf7+&G>BM%OF*;J*0#>yQgwAL|LgH5OBH?knb1;v6#9_@ zuF9RX@b9}fn!jpHe8`uptCceM8$2hdRSv9Wh50|Vx7uR!`;3a+aU&JFNecc_c2b5l zTIdYMDb<}G?C8kPuob^+$*sG#sF)$Uv$B}`)up}v`1tcGYH7DS;rTYRvCV_8J{YCe z4-aq8zAjii6yIo07_Gky&VpMzW4zptq~jIncxV_l8cfmE>Q*^tY=J118yu9diOhwm zs(ai2;||!_Q#|dHyxsL2OTKCX$e$CRInti3Efc5T2B!!I>IE|{%HvBs2As)W`2Ja)+5tRsK**sw-uvP|nK(Eeg zLuE6jzADSz9hU5u%dm~BLA@}-+!{{<%U4*)4D6!7wY3S20UVhV@$V1JevhxNIqjvk z4np|LlUulkt8Xh|KphCT}L!aXV*qLNmU(xD{Sl<|!_j&XSq2d*mpcN;RTTvBl zT|VzuUXXO;SO|GBrTO4aUOvBpc511a$lZBZ%V^5ro1WfYDduH27G6! zx8LZ##llt!rvSiMUviMHfdFLqb`s|o)Y`NmBGsZxN^4+;Cq~W}Zkk!`}@uO8Ong^(k0Mg4)_6DBAX z=}?Fsb1=NIe3;^#3zn^3Fzc!=EB{sYY)x>;=s;lWXk#QoQ-&#XHoh$-o1iw2?meov zSWNSM0uc_L>#Od|9gZ4utguN4j?}UZ)D4iYlw!HDX`pwSS=p%gNWP!{w$-Q)PV7${ z^5)*6J%1$;nZ_pH z7UADk=fz`*+#Y$3)8&mmN2D^iEuhE$0ol8PXIkF%OD_e?ExkV;obQ4eqfhVo%0!QA z9r*v$+_g6OaGx9-n}N({H8mH|K&S%;VOrC6&Nz-z42FrM&RW( zc_kl7Kt2u{Agd?(7}W0p*s9@%72n%ia^IRm|6ssQ3d(dNfY|N01YvzrHb7+AXoPSZ zGxv~j2`r@=iMssT-|~gMf~;O*1G=cc6Q8bx4gKalQYBnfgw?q~o@PQWqI+&5=ugTMirOFIr==>vGIR8#-FZ>IxQ_9hM)nB2z=JG)F`KKGNS(QDM?Ge)X?nma=cQqN_4G#?P z`gt$LZHj2Inlw5bNY2h>=Y!T^#)_u@5AUk1!(%#FIeI(xzJTZm`a#>>jRgH9Apg5wE4NaF`mn(J?H%LVENwYh~C1SXm-R?#ruFItRtd1V4_S z76V`NzU(w6fsL|-3*}_kE(Y_@RTp&7#)sD38mWKyu8Ss5UyNHUSbahvb&k)@*W_l& zeZnK-x#WENK6s)ND93;7#lwAMl^S?VCZqt4W+)_y^7(wP( zht+tXq@F&;4{-_B8ecA@sbpd8`z?dwYHt(C2AjWtf2zK53i?`P8|&r-_o5POI5d+_f4GAY~JL2@ggW*R-J2`s=}*Am0Cj>{fI2fM@DR> z+$6UUE8=+sjPfgc=Hzs!KKRfUr>?}ZXsKMnee2Z>2}mQLLpc9k&M_twsEdjB z8MOVdlT1eY(s0)$+N<l6e#T%)3;6Y6#=emhkLoDvnc;a`u@ z45Q0!bl&OR_fDp!r0|8^B&mG}m`Q5T&prp2G566VjR#UNrIgAO zteqER=lwV1CuV1*HZeu+xL^=DdN`${X?19E4ie+7wGjC>yruYwl6yfm&0UQ5xj5v# zn#*q9*-J13p)^)1p3*j{#q_cQea=leZMdC%hhRfYtOL#LEmr=~i&mpleE@8_I=BIN zjAC>)7wlU9B9&fbBP<8g7UhZ`?Nl_}o+73E+i(`Fv5kQq;*t@__wuxWc2NM({ki)MVPIq73NmM4K!Rsq~^q zl)s5TU<&xXKdSUCII)mco~;vvH7)LW6vVB}8?GJW_?Gp(C+c=LDV3NX;KI>OTrm+o z=?7wv*pwYA7OYiW({U$G;U1#Tqoyo74|i-}T=x3v<~XX(`t`^RnlXA->tL91)PKQT&fA z^t3)|nJ#~Jt`=cp{;Ar^tj}7(@x6Aq2-j%DSH|~bcY=aG1t<@Bn8ymr@Bp3DG$4u9 zz5CH})a@MTNrRm_MEw==sJxrI;szz3uzz~x#3Zrya_*YhmGi90Uag7cb+IUQB9sVY z1grTR+aJf__;o-#rGPEG;~@h(*^`S9!7|+gQ^LimL6g?S9?_8q6E*pL+)~EPL&n*u zGP?d7;!5>Lk*>e@9TJDB2%y9VKEDWF($&aWWxvv3Y5jrvbU_q=6jke^X{;5jP~N z<{Nshuz4?-!ECb@QVA$<=`B?9?Z(GcniBWxy}p0Hzjfox)l~zeHDFk%bEsu<%-Qq? zBlBD>u)bc_9h{EWHVi7(G0oPun?L^4Trh5o><3Tw3Zp(Dtv< zJ90Sn%oKoum21WS1JHb%IrfzB@tqfaDzl&4Nxz15crvGKP-0P!P*hV{Ehd! zjRDj|5>QGbjM2xZg#6`fyb$#$Z%79hP1&+bb9rxgol%3sbduH7xq&9r5<{x(J+f%YMJ6OYT)v@n)lJ zCijr%xoSGp>F+fR0B=@2bR3@i_4&dLl>UKB(-Owl_(lshYITY{Kg%w%`;Sb$0sxi| zZB)uX_Cp1r>khMr;`dIL@NJ&F#{006_BEa5gTGg14kdRl9+8pxvY(!erv67pcNqQ& z6%TZ-qXZ%iKG2^|OAGG+a?GzJy>dwl!{+Xb>8Hl)F+mg}_7Aq=p9eqAV|;LhR`8D0 z1g)F32b5httL!XSL0vTs{)g1)dE&f4;q1wJyG-OE0Rsn!4D08nAe2Q=r*Y+BA&$*lNB7;#5dhW$_Kx#e*Kil8#nq|li zmpZE$m*6pLwz;3<{f zO58@Qo)JF(VI6mZK0e2fwfgYZw&K^AiF%1ub>GMX?!Nvfz1zKNwBE_h`5%!@hwwFD zW*F0;b3_10G;jXYIRqZ9t99Cwb(gz)y-Q$M-<3(q&387aJ>|A=6Frbv`TJ0CKaRGc zp>dLT;RJeKwfTC0--FdGfO(K0L8NAB_Q5sYu+&^;n@!YPV8#rk?`O!JkD2}BboEgS z^%)JX8Q7bdEH)Tz0{-vo0k?Z<^Gh3@s}PoP|95y5r%01g!^XtmzH!O>Y)0SKxZiOu zcNRR^9D&5vtH~tPBxVGd9-qT9#rxg5bBkY40f*k|N^~JHN0kj#qz3fyy3D^olHNhv z9SmeEw`Y2|m*_~DkZD08_!>5yp>s1p#2ZgTLtl(f1U#%F#Orl;j%L|=PR zp~W5gwUY_PCbPE8^d?fpM|0Q+S1mjoCFiJmvLFB=ACdp|Mb(L_lmR+)Oy;f}zpPxP zUMHZ?8X*VQ&7MZDF8kXo4heqD%pX9Q09HOkFQpctlbiV8#qa83%om1vqc!iF@qG(g zT+*ezd5=BV`{)=akzod4{Y~S=D6Gh6QcuABY6sb0iEK3s=HQjKrP#H>lk3%WRH9AG z^7-)sjHwSanVuFx8k4-QX%XGicy#qdtA?+6S zt#JzMi`sh^4~Ro^9k5t`o<%Vl&08~@zW%z+8V^t%(J;qtb`7u%B?~#vQ6*b~@{mk4 zMC(Gtie#c{!O@jk|4=m3|M?E!)q4rl?Jm^ZE`I6gu5#z_b-Z4RU2?Ya#hdKLL5Al& z6u#f$e9!&EIyuEhg^I>HOf2VpxXyUi_I=78EqIsI2U{SJ=NHYR1~~N2*?w{DbWI7jSgm2oPD)!#@N@jFnSVqb&F)&A;*QpQ&csF(Be;q^?ES85s4I$Wsxl z>xfjHT+b{kKJyr=bRAAKdIlp(oYs4n2`}~L|BQkEBa?yv6~bO+Gv&n z<>hCov@#XJpOVS}+H%~`R5^%F)b}tke{ELD0Xt)A|9wr|>l!cPHJ8||ETYig6Blih zvbXWiOu;)=cg7g*yjWi);kf;r1$wBk5GYX0r+OX&JqsYCo-(tMr2XzNAueq64ISE% z;i}fRr#lav=D?TvXJ*gUU-BEPJ^B3_S z$6=~~{nQHzwb7h@A+U3^pW5~s@aG*yuLRmz6qvUp#@>F_;|ew9i9((Or+H+)Ots%ZIYiTf_GHx6>Z96BkttKx2mqBUwa=Yuvk(Tu61sfk67_J3?H43_IENdaGp z(Zl*JLZkm9V}=QCWi!EK37?30a63mx?}9`ltIc-fXru^CjvzCJiS*;T17@WRbG$#+ z%=iOkkyP_5cwwOfEkOHrwWYZZStwhl)4hxEudXZ0w(#-tY-yfz|7cV=$nt0_6C1#g z5I7x0fMh%Cwp;Eem4y~094>Up8og`@<(FDUyjzNP4GajgXiNI1pK&0Gh>A$hGVY(r4P>UW=A4+T|7Mx`!=ul=A9 z0R*_X!B`Ip${SxfN773U4FrEM72>(lLaFhJE>==OUU`4V9Cb;en0~dA{ZoB|OG*$5 zN-y%@|8QjUrf9I#k)w%Jo0m2XEUT>#t9$EbbIruBewz{VG3_XA>+AOSdy z?ra)mPyvUU*<`a-CAmm;L^F5Mrl}VfDnUN@z?-gh8m)Y*vsl5fOKy%)*}2)o3M9R4G7CHlfGXeEo>X_8co#Dyu^$?VxH<4%yhN?~x5?hmqy<+?d6`tt@aejYa^>!W`vf&nEcgwoYC&C~Cwp z$ljxZyb+ycWLG^DbVrNvEHWgS><-PV{DRqtd7b@cfX{gbExT(OTapl*BiztW1v2bAj>q zPP*}aOYp1yf_Uxa>_E<&`zalJx1abF5sYda`8C3p`D2@53t|mGG8AT%ngDc*w@o{d znj(Y!za4e(Hh~+&t>vK0bg#93&e5DV+D5P?822?Wx1F7Nt zEJKz77&dZ&7b(I!CcVex?S=6~6ue=^&TX7OEQET&^EVNj_5#&O(pZt4`tLpFvKbVh z#9;15x1tI6LPy5NnSg08nC2PV!GO`U%$|F;*F3mjYWf^5i`O$AFZX}ua2hXo)BQ+K z)PP4)_s@6H6Fx@d@a~ggZ~UyEu?gsw3497I*3H3?mt*{gziw~rxQ!FPu0h<*Tp!=0~A)s>&PV@TyNA7$HOfVxo%%&q~*&hbsy?I z@JR&VzC7~1@r}7_a7F8lffH*DBMD<$hk=9KfNX8l31|w~e5u`176+oj4j z79?RxKDt#|%QeK*$C*XEUisl?8eqB#)D5Hn(T}?q6=7rM(gxK(n-WenRdZAgiUU;w zG%&`xlC6N**Yr{Ou)?8x&E;7S(jL$Kc9JB*-2NJVC$mo(2KqMD|MBFVds5bVfZe@h zdSPuc3P1WS*l9U?>FWRP)aU;BOltB%x8CDj6~S?B^{R(u&nPRIN8#I%WYsNho1IkC}qi~pRWfq^qn?9L9cGi?*7ak_#BoNPy z?lSQh8x$p&dbXZ#&cH!yX0v)g3D(>OaF}mx!*8oO+*VpT-u<@xvRR%a+VJ<-O6ckS z2ZUGQvphT;6g+aF9`~xDxgi#fmFRXa*sAAdlv?bsLgN81v>3gSzoOiX4^6?(V@^ z>o7T{-Qfer`~HQL6)}2_VSwqeU(z6>kk>_A2;3ez1Lz@$KU#$>2ueCmdN((H`9leg z`#j5BG1z9IGW@|_2mBU{W%KKnwG^1Q z5(*Lw2%t!;?PwPa;F3|p`?4;r_OZJ^08h?8{<$mR|TF>a0 zYJz^kVqpwTH`mNMP(9QDH3ETrUle|A3q&U^FIpQ%hXPOeo`w>%m&zZ)A9#!8B#-Pe z#zLhnb3&0xf-x5g9Y0a~Yt`E&2~gzf)S6{^+rm@lfIMU)YO~i4b~@RT^ljfi4J>h% zTqe3AuIb`)yZIgkbG%5DVi__t67oIDe~@XhVG$vZOhpd@&q*l_pf{X8My?}OMSh*F zYTCt5Ei*cK6#$9L`&i;ES)q!nRJQjTcpeJa)WAEzeKRMgJB~QaD`GL>E&M%{o%AHXdK)QMjJ|qX!tr8msF7r0kYlu1a`%vBXKD6AX z8R7FlJFDS^N3ndzYyGfhq`s~;M7>Gt)XPO@bI&Yq&dvWj?Bk)qs-~N!6-rU4#bYvm zYpOAu!~Z3YGP;$?8{OS@Ta_CR+v`+S0Y?2+7Jo<*xYfmUz{yNKSMS7c<66QWN4}nH z*8-&`wklTjBJe5GsdL;z@0s7Cc`XY-d6t4+iD7GOtg%viHZmVRCywF8vgr*mlW-2zhV#ws*YqCnFGiIFp-^3uy= z7NY#Axh(ns8!*83)}e7toR+%8=}eO?Q2BgPMAj2{1?fe0!1UdwSY5ZNz45Oi!1hB1nL8&!hD+tPAJh&b&?GW4u z&(qEJ&Uw3rq6;)qr2vH6%D37)cIqzoPK_G_LiufX?HVGMTVw9+Z2TqWdJ8b8ndgxvwlJLWzN=Y!s2ju`PQ?)Re%3H8W_!S^r zv~e^Ldz8u5ff`Cn2~?I_Rx#~CG5Cf>@Jxz$q#l!VB!CZR&eoKY4pwelbSC^0%x+4w zFPW5cLYRX2H@zSbdk6Q4Li=IwTIA+BR3~$9UMA;objE3UR`}I{meEV>Z_0SI>9wd%}twCEgdVROL|NFtHXI3ai4!cZZBV(Hz9hzuKJ1c#akLPC+sW~VA~K} zBjcU+j4uh`RwumSYm+=*OKXM>)K@7#Nch;&jW%6*la+UsOqqRZEKSo*%nMk=Lv?($ z*#HB3&5wTvy~NxM!dN+VJwC9W{gV@;rf)I*E9%vRha*gdmE-BbnoRr}TC*AwByxl+ z9lc$m{4Mv_4Ih`JVuR??Vc701gKG0SM$eS=8KF`{n?dn_GOFdSIq}jarf{d1z>rS5 zslVTJLNx`uD;5h=^1p^pFYtdF%&aWrg~KX)EUG*mHTqR=(W0ln@Abvs0u#qM2nM^| zr?c3qZ~QWdIUuGzj1KA7mj0s{Bj2y3?<6}t-?(rx2@1$gjyP^~bGLd~TRumagnl^} z3sDBPm1K(>wR;SZM#jl6b&d{us;M4y6OOwg9#m!=Yj>rWX;S~4ea=8wa()WXk}uI; zNq1`Gp;^nURS{6`~3ZECwJ4` z;;eG}e7g}6KYA&r+JsxFQO3(3S@=9%;;^CQ5xk+dcLkwxo?w+YS%3MgUqo8WXFs1E z2z`8wlk(Xno(lvb)#oLL+;R5x^(6R>T~|t-G{R)5^td6vg`ffzW?NozUj?fUvT>Ab zslHGkU;A{=reR0Jd?0VaJvr)f2aXW~c8xZW@_tGWR~XQ!i{v-%7e@K3rW&m2R7riVTce;Pp5Pc+u=lzciD^oNRkZU>xSe+~nwEfODdHPrJpx^ax z-#|s?z^djR$o})Wl8qImvhITn)~S(E3$KGSuB;DS+M-nXRz$;_)@3G<`&uMO(Xb(~ zY?k$?pYaoT+gOyj9p#0-f3k<9XKsl4(*{jn=Aw~@f7xhkAb4_$hxuk5 z2Dn?I#}ym`1XNq(j@c_}!m^_F#?CO^ZB^M((wl2xovi}()7%If>&?Zq3C-XVMjpqQ z=&JQ=f%2pJ_&aXh3Y?r}o2%6)wLecyr}qFK%m7adOy;eLmV$R*P7EOGes$Yz#cN2| z0O;Nq6Ml;bv-+G@jhLS+A#1MQTT*_sDbI1;-DSg%4f1E{a^YJ%wpxNJ=oXlgBPM<#zcfdM2D!0??VSlTSk&yKAWN zfnf?iKr1j+@FHfmKB#V-+e#i|JhXjXQx?f8${<H~g}#H~QL90AGunHd zOV`Xr#GdWo5pfTg+)DM8V!Y@^I7jHB?E(PaXUfq<0ME&LJm1x-HpT9hsHTR0L&geC#djf;Mp!z-@M=; zi0};!=yEO*79U#z^N%H2G7a`Cu_`_v*HZ@*k{+2D5pn^TC@c=tMH25qqij|=e8E6p zv5GSDraFQDdOGG!G2%l`IWPEwQkjvmkL|~nOEhA-Q2LO1x7mm189gi(%W0=8y=?j1 zQQ1-b9uZRzsTMjFMO%&c%9-7u!@?t|NN2 z@Mz@bdTKss8S`*<54iNoUc#w}43-l;0HL`ulSBEjR?()(FPizg&qokB3)i&Tu~&2z zO)`szmlr|^4DVz=mZ%d{GV0a@YJWe{&5Bl@ea>87eX#1CROaHD6Dz^Ts)nbY%1X}& z?fZeg>&UU3B}BMc)N03S5<{b3_8Rt#J-+)L*len+knI?dG$;Y}k>_e_%6_h)aflwy zx`{j8A?D{VkjO-I+0PfK%qyh(3%U6L6jbe_j4m>^H{bCw0~^xx`9-YxOpm&jXx=u` z#oCt$gu6R+bF_UW&1g^KN9S5ZGL(!ZC_<^200{3KP6pWjVPEfzL<`{)gZ;AhaS z{xlg#pqu@xLWE(4Q<$A6MQl~UKI$7@D6bu*{X*j_b>+6&<05*c_w5l52phx{VaXmeJ|DISrKedd4uF45;zNVDmy+}7_Y!B2T{r!|0 zoQJ{rGlRd#2aA)?Yl2r^x5v_~o>x3O(pen(-BY0GS}rq=0y2J}qknq5BfcA*I)9B; z@gTLr>p#9x#=xY0-v!;aqo5a}OqD1< zdOI)|`=HiQ2)Lh9VL=hgbEmYK+tS$(&SQYp8VaXrmM&@pg-WNtk6L|N@6uqsuJmi1 zR+C5Bbaqi5!ryMTgqz59Y?&-PK2TP~?|k6FAKR+|GqlQ~JsS&$NuKH$o|u<_gN4Q| z%<2_m@w_W%ey687FEZRUE$WhDKO9y6``*nHo@Mg%VkS}W>&q3g4LN72Eg@s(@+0{4 zah1}i+w@IW0{v>D1y|hJ$bsxTLx6iZ;?jz`?HB<37eHEV7o8=$c>UHJtbyLIv+&;I z@_SO6pRz8?wu24uoN27YL8zxo``N!2H+r5d+LN8LPd>^!N3Xmj>57x_kcnH9aa6@p zVxH<+(H=byFH;a!;Kc&rio3clJ!(YvGt<|tS?`OPBz-pHT}EiOr0^t_VwqZ?QmEWE zdQ}yjLEpv+)JsBM==rN^~_0r+I?@BfE0; zOA|1fIc6Gr{+T^4h1=I{`dBs5jPLFJ_v|>gv7qzA23J@jpJQMdF4)K9K25<3MQ3kd zvlGPzr3kA(3mPHp&xsX&TF$R1bpgb}fW2yFYj~~`N^>*NB|0QFwY>Sn&1k}^jR@F32kw87yc+4=LYYhTLOdxH~b%dx=tL8X|`JS^OJo? zTR)D}7{}H{4bIGEE6=k*=s6liRlUw43`b>H>5HQZ)6J9uRiUiG%#KS-F-M& z2PuDM-hz~Ny!U*3sVl{FdRq1b7ZwY|Q|3gz%B7eq-?!Fl`rA?t?+-u~fSv0WckrhY$p3D}{}W%JTzpFI1;zt%VZOX6(u z7worTu)K-{e(cA8WL%dLq%W+~j{UuFUe(aO*2 zhhHjrIMM~O1ioRs^CTOq0e2`KhbI=X&z{AllMCwVmdXnf z3p$1~gCCLEcp~OdB9KwZq{6V zRZn?bo0_A5v?lQs!Dhd3|4AsJ+Q8vZCR`nM85#h$rmlpA?V`DPGBq{U0E_?{_KsPrVA`& z8j#~x_y(Gkg-o?y4&)|c7{;5e%1&x#%uNwl^E31YT7q}Auu8u*trZuhqAUNJ%?{_T z#c&62Dn5p69P1t3=F2vW>W}3xs+C>SFVQj?yRh~Rnpj&034X~(KM{+I5 zeW<-$(=DkSH|p$PyyKPA>dyNo%M=}mcCVH!>QgZABOlWm_#bw)TOw8ex228lBG)Ur zVUB*~kx?RdM32_j?|c+{P^aL?wiX1Snk0I(rit{=UDuhG&~(SbQlI;9Kcv1Uan?r_ z^B)=5GW3cOH^(q|cVQ3;y!KlCX+k55WaalNsHx_IA-~51z3g%1_g*>1Nw%+p|1dAU z4gN5on%98vaRttbB7FH`gK)bmd)Ql;jayJ46~kSLQS14`Kafp7mH`2H6riF#UY!y+ zYKZ*N$w-!ZHJUcs=q%qy{>mM1axkWl2VsB_Ajkp|8^8u4XdTr!W2WUejLq=+E)}KG zgwRew_-F|i%&*c5Q@(qB;dxj5wwz~Wc~gRXcV0eG+E=4JIHcD+O*1~8AdgR7`xU8a z_5gI#>g6mWhnK>8{e~hdgqIGiI~!E#QnD?U?Er*w#k4u}gupuUS}p zIE$wcf7v73{@j!9cuS$%b@`E2Z35^{Te17Z%2^KYkEupa0G$RUFC^hoy3BV9w)N`9 z(IaU0yDq@wqB)wEMztfR?)5?YTQ96xv#_o1?%Zh3-_}al`YfobH@ZU2PA`gyi}4sr zG2>m*`4qWcJyDD0d=X}3A)=le4;Y#@G#gU0ewO$r9$57}U?@L@cgoS|St2F>Ir?K2{Jmi&)a0VpAp0w_??{lpIbkMnZp}E z{wjY0&+4XnU5!$dR1#%ex|7o49n6;CUg6g{)+0HQ(I?YwoM)q}kIQY%MbSXn9eP!` z(D3NTO@~XEf9n6j{1mRf_6Y0DQRvX?YwuSQwn+g+R{;$ayW2OC_xe}0(bp77`hga_ zS?S?q7mJ6}1>XNZtyb*v0L0&hrtsRTb^+Qu<>P``zi<+uKwqr)QXHhGIFErg5VY9s&0{?=g*UDmvv&>5DYh3S32r z$Jj(p-2cMn{*RI8HRDqZa|I&g$Nc0h#L6Ak_N{MSLDwL8Z}*JTr<|ZORq21nJ&sn} ztCT6ZYbLee+ch_{;aj%5)qM+(1#hm{9z-&OUponqR(G0Uig4>tfv5cl7De3tEO1WO0UY9IfA1hLaj`HVVy3@RJ{WPLD1Dywqm5pf1)>(dI#~;Z z1F5Ujhp;f6ug5PxX8NZLOQPgcb4@RnLk^bDM#o#Y!&Co6$0$5IO<1uUw6=ygoLl*4 zj&Dv7837jUj5k6jp@Zu>fiiaSk;P0ejn-ed z>_6N8kwpNfD|o4?g~5Us>78vJr6&UT1t%J7EzUORK2@5{!@LgBxL- zBJxl<(tA5+=E%GRgeSTYi4Kt7EGC?*`xX5>bDkTdNnnU9IcUlgHqJeJAj&hs`+@gu z#_^7KrpD|!0Z!9~c*Uqa56cFeLv%ePO2b5y4>rDyN-f?+p8c_Y)A98g^N7;^1V%oF zuL1y`8h_5s0W&-+;PHXH@X5*Cb+m7)X{bZi&JGFOtJ-g{P)z%fgK(UnX&y<`YdeT#MPvHKi{|LWPAxL`FP%zo`p^GXgP_dKM^a zaFm~$Qt`X;cA6zo(xEYUj`NV8%b&U`fB9wi>^g@+v`Y==T1(x;Q?3a$riW!X0|4!Qym|)LHL{n^ zLkqG1>8=Ns?$>Nu)^jY1h+HJwnCgAkzIqyb**7}5`62g2KkIJnNW&%H--+HY!UG%| z7hh+*UDy-gdA$3kk&Pb2!H5t|iO8F@k!TdgbV)`>6nkH)N)XU9_cjq@p^f{IP_%#; zZdxwmwM{$^{)Z@6&F{~d-PEc~Nxmzj!QVK3C}S_S>fP~}?YK~9+q=cr)lYc3L+kC& z1RBal)wq=mv$>SEsM}|w+De=A&EKb5KiFFVI~HJwejs+cv&))=iXzvX>b-ZXtNSp0 zQN-6PH9*S`TxLBxHM{j+!42c_*-2V+H*x$@|I!1pck@+X^wzbmqf_T0Wxy5HMlZD_ z6L8Cni2O6N631?$2yzIx*ny=OQt_)Wd2cv<#XgK*gkzA$tE32pu<49@1G*=VDCey2 zbcrpAT6m2OifC}QJuCCS@(Hy6JooSAb$B{j<_{#`LgGIVU)tJ{6%kpbJ$kCL6|W+{3xCPwGuw%{=lrh8T6r4J2%M z5~V`0FpO>k23`aGpe7V%he!2E#@Id}!14SxnLXGW5dzz%^Md$@R`GgZc=BcoU2E}| zDryYtCm$gH!0fBDqbuv#EoEhk3|#@QF{Gfb)(hWwlNTEqS(cnXf5#T(rc5Ih;5)5* z-cDwMDs7CJ;`fy1Wa4S1u9#HZ=96F$KD-J02TyO;h2>Og|I_YTjkUI=EPiI8uF`>g z@s3)_*eKRg<_U2)@H0?l+0&123~0V!xZosr=3kCbB%{`sgyZ3o7~j4K6+ByH1RtSL zqn?z#OJ-!CC-B-5LYExJWb-2*dDv4Oqc=MjB3o-* zshvA=&oADrW@&0qrJX4-WlmICzU`bau((y>ZIZo>x+m%zUUmSFu$@1~w3_`UAiFR; zF}TcS^e*!PH%;%Yz{CcIOSZNIp_yK(UMKGSn4=AUU3Xwy$`5ufsRekh&c#34EV!2v z&oN%nZ$Lp!$F`Ewy=5J*bEh)uTc$|oSTr&uU0>_DHLM7m0?=2WvtfuOEWyZc_wk_t z9EtWg3YPRk0}s9D!CrHyEDw+C$3J&uwlgswC(JM^Y|{O%)Ow94Kb>iHI_&qBGN`EZ zY^Ow|Hs2IAPN8ErF&Mvto%5BF_PDh`w7dH70WrxR=M)cc81@b7CrYz|cih@KC1^P8 zw42^ZiKTc*457LP`;=oBdMflYy#LtF1rXIysAl$iy4tPkuzZ3LxzOFQkl^8(evh{9 zNlHPQmcZFN58sq+6!(4YvF~!uN*La77|GeEviGqWnE(6-L1_tW*^nKyyGNVRdgtC@ z<$YryZN%K`xZfjv=DJYT2LPr9JPIId;g9UXTka2-d(7tk9aVj#sKY?vJhLgoW+9I|RtT)fv<{XP%zVx0URgB9|bggWSC{C*1_4zK6fq&k>zyScy7nvZwf|DMRnqB2V{kuXY&!8Ob*1!rVh>adj~tUQDOOR_q+@pd zx(#5ZZvTO5iOT2VcH4Jf1!Wi(<>rfdd~XjS-{VaJL@YE_BtAoOUT1DLInaZX>rt{gg0m(QpZnv{V951Y#e{CSx!zIIe*um&Au-nn;wRFDHjW0o!qTW7mjcxa9s%un}* zB&u=ZLUMe?!f$;^BU8UH6@==vM#vw4dCQ>Jkqhy80&ViAQ1&pWeX&J!!unX7V!mtJ z-AfIhBwu@qsHjniCZ8v5(DR%tt$uO3HGOO`0u_UvNfJDhiCw+Wr!hW;(bpHi+3gjk z0pN`@^D|=dIpc!SU-J`5g81b?g%IB8wnr5+)oZQzlF};^t?#xzkCJtSdA&lyrOv0Q zZsV3e+_m!QHeLl!=@kzQ)V8#K7!MSh*mwN5 z0zVwhgeE&RDpnEI3&7o;H+W~8-t%pEDZW}?Tv3>W?hQMKrH(8oQDI=+}p!#$lB>aaVIc*K;>FVbZPFbxxQDSoAE#RUOqbH(}=R~ zlU~m^{0}r5W_g4zH_wY^c$xF+B;9p`50p&b!VHyXH)Zuo?6wQKUyu`16qQe za5c_o>8GMEO0^_htJ>EIJHcsWnTEJuPB{krbz-AyPOqdDlsh>7=B=cN9;leJ;OX7v zw+vyrBXe^IDC!ts^VmI>fBwF~Z0h%_L|gFX;_nTSzmgGJWp#u6nJD&$MO=&%`DA2q z>Pp!29HZ$)+@zyW$1l!{(=&E-N-<1(sAaB(z*~A|(Kt@NM~J`kW}bO!R=$e@tng8Q ziJtql$>8Jrk5n$HOJbUQJ0XmRmXD$4IrsF>3SEP-M!h@+ZsQ_F&0CZ2Q*6db(3;_@ zF{EP>hM||C`KU5n0voFHy0!h`knWky%b!tv2qiBsnY`|koz#u;p1)BYNaNgVFk2XM zFrwz@jA+EZa+JRZPCX*|5s?e0=bl97!~T$WeKkuX@&iN|AL7F>LU>JiHJ|g#dn(!o zUfPhcga1I^qb#Gplbb)Cz`=9QWY6=nJV6h|Lg64|4=hl^gAuhrMeVhzO;<+Pe%1`C zwnw}({hR#uyXGhNvuME(^xp-w_*v2DSbs+)-9U0iKDvhC93O+8e*PiC$p|zgWN`4pV0D0HAH>$!xll z0m?7)aG)gw_KAbQjO#SDjv>jPI|#@2vCdckE<7f=%-Ea))!NqBwaK9cFTk>xDluQO zNzN+b0YKNQ-hHKMO@B>svy=Upieu%^Yasmr3Z^EV+`cYQpAzuFw38y5O4Wii7PPBt z)2a{Mo^Tm1!*Pk;Xc8`%dv8>}u;BYxkJxDSuk`nO8ao@Z;&8&#k%vrB0|Ua$S3)|O zrH)Ex&7jnLkD^Hh_kUBB?PsaODhz2g#vsr-T5*uLdC%3|ofI5V$fCh~sx{tsZP-51 zNO75$WIyc#s09GvPUj}=TM##AqMIU)cx@6%MBbD`z zM||`j)|1dgZ)eTvG`Lb|87?V5jf?o!!8bmykSZU2@U<1&Y-I&Nd>xQ=Vgj^l>_Lc4 z*lki)bzAN0M#9JCO4oY|?snp+_x`NSA0*ARV{dxr{&gIngul#553R&t&Y@;xxJ+(g zP-PhKkkDj?g_=%JOz48-4(h_1AZ$r0f;r%+cD5P1P+SC~o(PuIp9=HJV?=xRr8)KP zk74Q(F{MD70mcj#41MFtKWRKWtKn`h_rdrlCeiTkfLZ0E{_Ne|fap zRUfl!wJszg<(1`Jv^1Y*zS}bX`qYC?e2h?s$mRb;-3k*=U9L$KCS)$4*jnVY2m?yr#XCukK??CMEES!gR55@;}fygx=FX8}8T=^QZt@7cxh z7Q#f9+=Bdg9arQE;SIA}gfT3x?=&wJ6XF&~+NNV_muJApUUl9u?Yv=w2{?*3m${oM zC}L;;T*Yc7_AXENwbZ8!X(LSWj-#H!c$SBOYREy~(2S(=xf$z7v)1#J)%pN^{rQ=8 zHt2B85|`N6{a+$A0>vL*x?!@F!Yg!z;KZ&}V?EWvxE1trdt8IVU;96i9_(@7S3J z+Q0jIVOp-80kE+Fh7Y|;tvUGLa{WG6e0B@xr zzD^Jo(Bdj=%eBdRRoN=7rtZDT)_8b`7pWntM?P4zs zg7kY@(7Ouw{u3}E9Y1{HK|oXWLT*I-%2UU+@o)i6t@4Q`4&4i7aJ3SuTi}b}v1}(N z6mM8vW)xpbsFcXOQuO>fvuWt^?Q)3!PniDKzN3YvQd3~hJ|%M zN2s&P`=MUbFO2=qt!v}rjdv2!>KF{g8HE z$smomURMiCzqXpqex|j=D6Or;A9?niXIXFG{9C!wz%z@(fY^a5hugl+&BO7meD12g zql#2J7#(B@P1by^|GHPwt<< zZ?#U>uePbbekXKDd6fqGiS z!fSr1&WrD)suf=9Tw-c*WV-SpDfc$Pd)bo}+07j= zC7jvIYKFYNPIy;IKwH=1<@#gtdt0FKMStY(^3~(_5`Jh*w5fWT%6?(I)%WHtllu3v z7bjt-CB>w*@B1Dxve?u=HZBPL6k9Atv3KKW?qKVD*9lF&`X4A8NmIQv5g{D*XhPiW z``8X#or36ttgmIv|3*w&q=5Tn&bEzA0jW%dU9oQUsQ$8Fa61V%0x78M|wwoPf_dfX5SFrmHaM zu5bV>otAK`e6|IgaCaq?;W8uGC2$k!@9$oWnT2qu4V-+xd#o)A$G;)*efONw-FFi==TC)B9e_!qlm8U2Lr!j$AmuEG`!=8Tey*=NMa2HliiLnk1PIY$UwXH9H6vc>d3%58Dp58p7Sk z%ep6R19=YP1bba)TgB`&txV;sMqEy@L%#3JCcrMkW-Tz_yxN=qm%mYEJKiKks2AEY zNXsT`u7O7Cg+HrN*c~hfcs+899JyzpSeb%`7@+IhL z>00vPL7j*qh@ww>-Ad0ptr_^l`Ef7epRE%(FR5hklgSgVgtsX{XDH!#`Ku3j{sRqp z@_CR;y&ZbAzH%+|Qz=q?Q*G{l3XCjXtUYOM^kZFFU_J)$+U@Nl7(cL2LLuHi$o%YI&I9`Yk2fyKvn!3tj8mrWqVvbzvis(R91}M# zQ7NKc^mF6FuTj;V|E9b;#j7^{yHQ&CC9VJ9e;}ountwKs=f?p7O&^vyAA-);-ztIp zNZw?LQ$Rpev;8DO53seh3wv~NA50z&>HnzqpqEq*K=5W+zktU)n!h;ccL9lMQRsc$|~O?yS05+wD{D*$ey4_s9C&;_HV!4 zAKj+qPm^@xk@!&xp>|8*0lXZ+>w3=v<3M-4B|YxRb_VqWf0jSjUWtsS6+Y0N(X2VH z8=>~m9V8luqek~J;LZp+Ty<#)q0%5~PyMpC%I2kku+4_yuf)H1!i_ye*!PHlE>N@# zQw37_e5w0!oAW$8Cv|gT^4=p`3_G+Q(F=`+(nJUb<$1=3Ty0-c|H#V*=>A+uIUPdQ zK@WyC+6W&P)vt$n|2~=np5Br|_m?(Ju5)p0d>Ch7A$WwYVTiUd#juVwNAof%r>+cU z3g2sJ6>Yz0wK}&Uf7NvkA_f|w;k$p@{VtHG-Tj%&lL5efUg0E!;Ci7Prb-xGLSm%D zY5M2s@lVwR@eDf?*dLOSWZE!!f;$djPHL}6*#_#;m9?o5SgEVb@h`tvfmyueyd z8wf~$GMjTmyjS(4G9+*39<9d3>W{#KZD4ZSV^hH|o+X^|8#B6~@`_&1v;?-97@N=N z&uE8(iD}o{t?p^)jq&%T6kOKjp>FdCbad>eWM5g1$1|ZP=EYS_{{#+bCh8O<4JFc1 zi@y9swfBDHhTr^dQ~KN>zq015^tt|#UpwT3UjvU?0{Ymr5bW_H3;A^g5qcjbuIg@i zg;$(4`#;=S4pj~y*N`H(<|Y79K)T$>?nEeg@&y{Vhn8|KDsjjd5@dnZ%Z_IZaI4$y;c69Sm{LSCoP z);IGPgRZdMNx}Nv`l1?PBV8am6KNpnuF~!qnqT}NX%}cZF6$6V1G1ul+4VvWvLUHc zRc}ov{{`<4&pvl%Eu26|@yd0HZ`_EeD&XC*L+d9ltG}`g;&Sstr-KpShBDMdrV54HvOK2@G}|)+*PAWC^kx4x`al>;*3&i_Cc zp4$V&GXNtZN{h{_kqRJ-5eXL>n^;=x6xVq#B%uJmBu&r`I}pP&f40;f+Hm{r8fb8(Z-a3_T#{cl&WTM>2(Eh zx4A-2kLqLR&B+j$DU>>YT7%4toh~tAd!ybU6Qi~dH3d%;~AQ;hTf6~ko=&SwKmB18Ij9Myb@Du4sAzY3D3sM%O=kYl3T?XOCm zxTKSz%&DuIR!tzo$Nxa$&HnmlFrod{DetN%0gsF0o{#f{d(j+Wx3k?RoqyS$u-8JVSJeDp{Rjqie-+6r}a|$92V#|E)t4^ zEf3ZIH69{+1Fx3%Z$cLPOaq;qpZS!6xa`$t**u>#$g~xT!lB#iqzFcoLaM8;&yAta zj{<$l+um!!+fsuaJCzkKce-&omH4>onUIPt#zXFnN*%2^M*#MQQ7l%o4W(v-cOM%g zA}kP|=B^OjM)*fO^8!OB@}sQ+Ubq{@L7sTfpmq=EQOJ|DBpS{MP^#mWXlTOqY!nP9 zufR*{N{Gg9B$g6qjAJ5qIT1buE9NUX>itB|o--j%^}(jsIrVKe3dX7Bc`r8xy9~Wr zKj3ux=Rc$ae#Wij_$AM4VR8#(zFu4-w2$R>?!sF6q{#uTyOnqLhu0G>+V@v8TNOJJ zN0db?4}S*(R+ZkY*9DHyPj8`(UaYNlcH9UxIupZl{rLgGC)gh$ zOy*xr?h|3Me(H2&*04JhL_I%V;3ek{b6?tZA$Q$@&^beEp?&I1`d8EKR2v{JvHjYF ze2Ut!oua0XJYj-uIvea|yl5)e&vrAE)b?FA|<=+4so2n3?wKu(O0o z?u#gvH@Tm{WM9lDrL3JhNkJSwzWq3qL~~gi<*nRXD5isW*Hg? z%%x+%t-PPTJwFl!yG)AXmkb3*58BuoQWBn;UtaernYb;IC{l$#Dj(^)k+yobA??n} zm@fRn|3YYfE{NX>2xw8hFu!=sEwt9X6Ot2<;+!(C8Cbe`9`Dm%A~&*<;WOx2CX(jt zfEkWICqby!j|g%6-A+CQxJjuSxtq-uIf*PT#;&<{@0E(UV^b6ioPAeS9xe2CS=%Kp z-hCC(s=`$+=~3Py^1U+ZTTFcVJ(G$}jNF8^jqWyEWsCNaE6#igmiMu+%fD>f%!)pn z_Ibl;2j2v2N4{F7!)u5AX4fo>Zs#VZ-DP@|l9EcyKu0^%JXpN79SYEm^G6-0d7Qr( zJnORCHp>pVt7S}L@R?Be$dAh7j@1trwo(&sZA@Cv_(}6gHp(r0bz<*{ZJ5j4vPKSm z7sr8(w-!$I)!4pK8Dn$1X8r^SBCcGqy^L@4S{Bo!iYhquC1jFXky!f`&)9t2GgT<~ z{Ss%mu`*|X_KZ`B-bsbM-H?%&l+N{t^+c_(voZ^&z5swXi>KgNTf$C zflQ;duM@L2x`w)Eb94CKo0@lFFn~wUsOFE`k0ReDLhv_3gx|KwRTF9~ zTGPbLFmk!Q+p9Bcfez0;#a1cEc!36cow{c!`&3MA!p-T-{~{{AL&HZT&FwdQ_hc6( zu5^amtM)!GyxHhu^8joENj}fT$&jzj;hB4rEr6DVhv?{v!y2_D3jymEkJ;+DopJk6 z$3x)d9}E3^`-kr~=%9vP(SN!n3k}&v1+&s$*9>x_Q`;NJ?ds`G*v-uMKl>~sXu4X) z&26V(%M2!|Xq>uv2M_rdv@UR`*xg+a5v`(75tMSRC)x(@P#ctF5xgu)PQLP?!|%DZ z2glI&WkvQ)NI8mp8yckuag7NQ6HT&gYE}*bp!^zb;wL8yxm%Jru?m_9Z zy-I2}9nh7?mGgXN^54e$l7ETU7b~-;({}Y+`)&n%G40TF9ABEUl9m;Ep{!rE%9mdM zsVebtfd82kTRh+t5g(=-a|0!QVA6gL8CEemD#WYDq~Qo5wOxx&zzoF<=H80lL!6NU zn4=U!LE{PP?pDf5$Z^0oaPo|9s`#6xw|E~cSiW2;HDEg~vpH=DNEwqWp?-+syFpdz z`4fLe_RKLqnVt;Ox>M}vTFcDv675Bgiz?8ftq)D3FS=)-d~^(DGn-QV;!4w}9iKbaKB|JQ6EMSQix)AXfY zla-|3wu;kPcbTyq`U851d78*1%dv3adSo5BalFKEQ%@?9waQtcD#tqHBpg}29m$fr z`sH$|S;GsWkw30x=OaF{_l^?0+jB9_%pagaBbcmNwt5QOaN#oJhvW~74BsN0Ec>dV zR7h^A(YiSF&q#3dN zmTHPqDWJ;VML*`HV1Jp5`HbFKU}aw%3bgWb^B8*SCi{=} zw=d@B2Kp#?iy>lW?H@xw*HgSZ^#4n}%oo4~q&O&>$hHIm21zyT(_ruU$9)`cjTgKa z_`MgL_Hsg@DZ1KV59M~rI*x~yCZEUZxE$XaYb^z%fbavDE?|P43D66W0|*;8BLwBJ z*nR2U_&uI)hojPpn^xko0&&9(L-OIE73ST@5#fsVzk}%<_pd+m3Z^{GYqIqL5oHX5 zft{%>@;7z*gB`}Y8vk7&kq2lL%}kUEIT${r?A_!%)|aer1c6r?caW3DkLQyRctO| zbrley1E}!U(uZ`;XUr+`H9&Ge>U+bxAshduN83;C#@|Verx;Y$<-?Dsrk;-lJg4h5 z86sB5=Uo^^d=a=|RIEn^i>m{-wn?$)(gnRP$TyF87#|KTwmBEIrn=^x_~l6H_=tlW zKn`K|dH8vgE}H%WP1i&9()M;Jf4-YJTtCk$xGBlS6)>v}sj<#KJQmAakeCPjuME9> zK->?U0*n^Pd=$Yd&p;F^i4l3g~VB3h|{k~_S);Bvtwz=ZqW{d;=S9l&X3 z2vt8sy{1wKyB5)z+PZyoRF-1)@2~8K(}SP$iZyY1HB*%=?n z-wS2p?MZ)k7p&2w3OAk~jAw}U+w2&KSrVPW(#!`zpO3LRPs}m97P|a^h&{XS6l#~B zcH>oAu@MWqpx=JD3UCD<59_J=e{pj}Y4X*uz-7;v`TH4)$J-R;^<`0)S}6N{Z;Hsz zRB!y2fAZu~e~MJ9ZT2_M0LCx`_N8Z~+DFn?Pck16JH4QO(wj6b&QB`*59Amwzeh7C z4iiUf!3h@&G%z7>lOSX9WZ|~dK%%|3C~`>GHhZy9#E+C$ahRBElZ657WOvUi56yE- ztl*^nGdFY6H;$QqLBb`M-(nl0ckh@^Ue;I#{3nFoSABaWx+WH1>_wp^V(y{o&e0?f zH_Ec{Cjc{~@s3-vIb*BdHj;n*$c-0m8B_B#>?`mejg3Fv>U&50o(5|;yLqzQL9nG@ zz*W!WrW;L@My{{1C!3^{fzrmT>&&7~HX}|j($N&C;y`W8bQB<_wMT+h;#%9Fu4hcE`0QCD&<&7QQS<{n=*iSZlBMp2g6{F z0NhB2c!d^GxGz>qEY`nD8fLn=XKW#oM|^jN68$q9cwaiR-7*vtQcobu_zqzKpDmsDje#yZ5qjBx57-D}8lMAz1d!W7J*F+MO6 zo)+rPI^x&5DV7QhAHHZZ?AtYeTyZdr{!~;@-p8}IpJiz7F8HhPdt5yN(}Hm2s0ce) z&p`&|xSbh0YtEwsTfzgjU2WHYHkMz$(eLP1*X8_1b{qWWwoUR(H)a22dHlDbZZ4?; z%`Fz~)yRM`(Ib-jz?8|-Dt_}c<*U8E31=N&N4CU=2Un!7P+wcYCkCx2@5utX2}p7k zUn)Y51T5`g77?EL1Aw3KQ_wK5qYBR4xO6CV zeNb?Q+5%*CU(56}NdBPdTTugew)arf8NkvTZW)!zz5GKV=f28 z{&~CcI+-PI|Lm3krmi~R$}=P0our4NKsh+|@A}Skx?E| z&DUD9YIYNg&AkQ&hZAFVo@A8E&7Mt;A{@lz43xUxF=@)x_cwE7C?cxoqvXwI;_>~9 zBcDz(*E%YJlW%ltqtNkk3UJquF#8FWz$I}j#iNFMn^7aFfN4qUjNTqB4sdM4#_%Q8emm{g1as+DkP@fMpoU9rBKoVZ7*20e=5 z@BA#UMBky=yJ8xlz_-ya=ic8Q-a5)&&6Jt`cOY!T74?iV4cE^>L^gQcA3sTkHxE?H zBXxftxy$H`-*)EFZX7?#R&?8041P^oNw~=LxL#DG2kpGngRU$;u=R{;p&ncvQ*6L1TB;{N0 zzM$o!Wuo$g&0Gsj200&HdOTCTLaDf&NTqtVo}4w2$qJWS-tO$@R+ngCvUrqn?n{R9 z9&S*`fo@X#_xt~h3WWH*mvg+2kGGKP#~?e>n@g-``u03+i86zy#|2j~#XcY^vjvT+v!^apKH*jJ)xQ0Pev;p2s>aHLq6Giw}Pp@)ZYOm>9dn3vJb z18!LjcNLeCh1pw)&>!IG- z%WQp;v|$!Fx*jttm2j>lp#Cf|!l_Fjq5M%X zhwjCEKKdB@Z4@)P5%%svnT(Pl|ADf@B`-mL27V(7;W9q}(a=_eZah_gNXEz2FFQzhnUZ~kUqg%YM ztUcMDVgq(Tw}vR=&C1GKhjp4QtuTW-a8>hV&z#|TZo}tI~ z7BD^%b;TX~(}~&;(sAq0l5Bq9`xE4NuLLE%fU*;1&=EI+kVZd#6SWImyinq>5#p1% z>o)Eg+jicv0_ktG?!j)QWXjJUSf zG=vqzSJ#|wFM<^t{4tc~v2f!$S0Yw#-5KorxFr-qMu?M~#utQ2d9J+0`X?|a`wswNm4zpe|= zYCv@+0VocTYmqIC`+j-V-(U&mUq#jR{dv#pL9cV}pBY#&g96r+oUoFp=9Z{P?{`}@ zdH5*Ig{%7U;3`I^tCat1EaNy8@$zb@8*p8p&B}c|P`7LtmGS9EI2Z_MDRI2J# zhq`ZGZ4Fr!0aY**oYEucAlUS&Dm$`cKbO{tf0c%2Xh`gw{0+}@0RLAs-8$S7r}7F;lW z%Lqza+c)mM`t8XaLh1H}eU{bfmTj)PgK5;CCn)}~-W0)1->=N~Ytr5;#)xo=T&I30 zoabwB2-XHpH*`??&d$y-rQzeH$KX(nl^S7Bi7}B+2RE9OuGF$~C8o=-%{J-wif$oq zNA(I=3=O1sJZ0|E@((bl^f2KnC-bAe6%_z;0^sfqSBC8UJ7D&@OZn`745hB!&ZJBz zxUDVhOK-%Nt~RIpXHL}Rv2jNu@Q4W>pF1)(eqlrI7wsC~bPUL|*i(9*{5w$*<#y&6 z`oB_qlWt}yR;GA7H?02KuyjMU6oO>IMZ3HP3IPPmeX!ph7Wz+iB|d7wldoZ_^x0SM zYLC=KEiKk+IFjh(pgavar$I;mfez5r!Spe>nI-j4ZB$G7F&L_MVdgNR z3IQ7IR7^nkg-9fxN4;CLF*2@;G;NITWwuc5JxPCqu^F3FooxgxNf2+Nn(}T8fRFDs zrjNBFA{uRuupToT5tK@(MFU~i?P(8^di8EZ9kh$ZF;OxW+VF9uNM{O5)4@6FXi)rt z7ne!Y$g^0qODVrIQ~i)nesT*0R9Z)a#$n2zwH?J!?6CFYFm9y6X~zk4V}0j8P}o=G zjj1f_Kf|?I=jOeQHOS!s5>pGIcd3Ta<;6D5Qm(mCEWYhRUsd^8*4XISufc5BAlTx| zgw>vI-})Z|ohfr5vPkBSVYa$rb_MtmBgxXZrv)tmAmVI~A%z?8!v4yQL&oupLLY8meO8PCI zLYoU61z>Le@2ohQ9{@uF2V3t%rkSl-j>SKF7BiNQI>Kbe@-GhI9G;#h93plqT za@%SQ?-aXXH$@}aJ6RYV8CGW;kR+QkR};P}L=F!LJCXe9!7(Bu^0m+DL-&#|bv3oW z@ReYn7a#A=iOT}~b|5<7`JeePlZhz{@_0D}qQ}V~NSZ~9#db=0i+AhL(8~aGI9_4y zzA%IAK@@KSOet_J5E@8i800n02!eJ8+puv-urX*|5C0-~Fb*+@&)$z$_$DB|MfIxu z*}OBKhqBZ`4huiX8+F)yook%?xi+0hx}dn6JNEn-fGf5&1cz$>c+ltAW8KwjwhNCX zKOnC{-#{@;=Xb*x7j``_m@HrEwwb~-bJYn;12kw?4N0K63~mMm$dx0Upbri{}iwA!=z=~>>^Nm>h>L1 zpk2Zp?1XS}l}GsTUWGiBcC{x+T$0tCTJmDq^ow7PDa#3ucRBv9$d8X>kR^&nogS=< zf2$0Amg9P~!6=<#cQ`bctc^!-g^Lh|RnuzQB-vL9N;k2J2O=O3I^U0BKkoB>(?eHy(w&1VvE1f;wKjVL`e!(YID_;PPx0yHaHz!qU7_3U=5&GvO2DQd}cOQI- zt&oEJ+5xB;NGE7gJ|nAWjF@3$$%w?X@Pt#SGZTQSh*Mwn(lNVeHui>0SaTd{pnhC2 zV$N=|E2zTCv_enzH)hn#IeO0wSro_Gt>PNd$58Ypu-`=jTUPt6*`j$Vyun)Sh54_B zhS%>g!ZU|uO|%}@KO1UAjzwadF^x*d%JYVg4 zEQBTI zAEoBEk)LVOjD+WMsc|y!I%zS+LWWX^>6y#q2nL6t+`MBNNx|9b1_q?CcRR(?N8lN@9Tt! zhF+q-@4I<43hl-hja|I`tTouQr=(iX0cKbg-9aYjkJeHp6v1Bh zJV9vg^Ag47moI($eYgLv{2p`p^;pD#H_g5jpb}H8=aBCGqisTMU*g#9S0U^1p&ucK z=e2CZT>{GjPO4{{`K|fIthLt%1y<+^FJFXu_eDe!AKsJ*VKUEa-rgOGM9&au__&8@ zSrqre&zE7KdmIC!!6a4nXyn;3Q{!7MvJx4&_>kIrv%l0ztR|vBnVm2Bb1)Di7xL`# z7cPLTwE6ekTj%o3(Q4Cj!FGR*5gAcQ;U%rhFU*fP6MD;U|JOS*PZcV8xC^KT9#SS9 zViUir9f2^QyC48N<9F((#IJKd+&su%f5@^js<;(|Iyf$TsWgLc$_J)E!MjO^=yF36 zca(SFp?cQu9O713BZ`)d0?qxXi;9@DDq;G4)>+ghe*i(`mgo0;2mSF>Z?s+m59v3* zcPh^gR7p0jUOJWx(ocnR^-do$JYCp)n)DQXIUwg(>}OsQf!s4s&qKrd(v1A51hh=PgWlVo9WupXuhs)=fSR@&Xl5T zr3kvqs04L*=I*_Pq|0D}gKJ|x$A2K#|3F;Z=nhG|L^kfQYn~P7^p30&_OKNn9ouHQ zWZ_4|L{gr=*W2A~L}0&r9&gn|{6W?U@6ug}5JJ22gb35cK@3{8c%wMDQS?b;2OS}~ zgm7U#rUG_c)L0%kLa|slhqxE1@!nd0_jCIeI6G!!Dp$bs4p{fjBZwz1jWmvCu=- zu(Q*kY~e=X3S5PL|LD>i(u*frTkP608jc5k_k;%;_mG~U-MtG_5gy4*4(dJ1BRC;UAJ>w)}Q(&yVm$PY1 z#5g5hO?aHxb|HA4{wu}9c^-={KPTZ3{D!qu*NMx8G};0 zkkn)qXCzC9qSfpsAU{X-&{00ACzw_Q@&8QOLpPj>zfK9v(uy-oFV*=XD;y@+7#3;Yp6fO zzs#KrD*cz)0({;4M1|rZ#0ao5(I2S1Xn0d>*Kk*Pko~MaZfMW>`f|>~xvyE(-1tAF z#6Q|Nb^a82OtSu+z>>D(lrZ$cVMQB3b?V-5)#B5u2f0-dMUA_Y*2V0|sNECBlb(m4 zuT9da_`1H^-Ca zE-Dos!m37Q)(rdI$_}#*DEj!!oN+|x)tjsgM}QM5r(lC(h` zK$)UY-w20#FYem(h%Cq(jZ@4zdr)`5hT(3OlyGv zysUY`pR=-T4N?EY;Q)U9|1tH}VNL$;`|uD22?+)1 zP`ag?p(qFlqdQbUy1O<|0hMm0rUC*|(#_};i4oG>IYtcF=I`eHd7k6={>K4qjC;GU z*L9uO8O^7`-n4U-3S96teE>%E?y1Z+ZSYciRy%`-O)be5Zac&8W0fbW4@oSy7w*(G zeW@YQ{0DMUK(*wWDwm+k)~>#5en<{u_<(iJNv}EkIAIA>;o>})-^T&HnRVpUUa#Yk zrZw(s2uCh-1kM0u4?~IKm0xK|_u%|j)xy`Od=6*aC?l*GQIh8! zT^P@miyAGp$49;G^sdb;#j_4MLg^Y6jSUkk_zC2X&(B;s7K|2=y!-|!6TZ6rJcE5p zNWYfDCQa3e$!MdJfmn?xk78Q-S=E+Z`B^pO7wh?*nxJB~JM4DxI_wo})8{TK#jB|w zpK~Mup3PIJGGlH$`kC;@|CSCVL(Eb8?WvUuY}GyYZmB!#J%R|-Q>UF?qJ-xbr?70h zNBO+Cg3^9l`}q)+8;HMYiA($Js!Bcdubw33`UUp)^_p4yIR^+1Fe|ktm~ZX_tNFUU z2VLHhRZEeE0slag9fJ+fkmOmwRJ1tri*o}7#2IG&QKI7gsIUPse`5-`iTT@5OkNW~ z5|FDr8`o@bSOAoGd`-T5liBlz!iTXM288mZdvu;XxbFk^I{D`7iTV^OnEi(=9BYn> zt2CbpoQikEe`!7Npjkd6*4~k_Gu5P+5B%1R>y;?_acwe)^Ea@NNodvhahqSsPvEb2 z1PFB==ZKarOXqtM%v1D;K%MjM*LP@w6st_Hzpvh^QWi+0WR4y{gq~jw0mlx$ai{Aa zh%=FHj)y-f{M@hnkfWcU$>T0-fKn7O(R{7&fTl4nba86ajz)Oxcoi)Tdfvv#ySdR3 z&Q8q3lX`N*C0>{=9e+kWmc!o z&I#=DjJTulo6$J=04}D=Ce8JwLS@P-uTCzf_>ek}gP+4t$x$G}Zy>9&jQDrv^UYQn z)``8Dc<>YbOuyIt4+Wn74u9u3<#fCM_0uwGTjpi$Al8DvD~zp?>1$do*1)Sbn=-6^ zQ^%!Y|AI5&v5GK}Si!5#P%p(OiBiDg3sJ5=^T&(}Fj|2biPtDT?ATRneZ8!Ku{LPz z@v!oA^?0B92WqD%yJUnhm=udW^Zf?2V!)-Hil;O3Y=6x)@oEQwE#TM|nbm)03Um4g znj!L7`-taM9{Rjyr`3AnNYG{Im(<8x(VR`C)C=o(KtJ$7w{u%wG98T5=mwAD(Ay7x z8lyTt(!9p~?pON<5E(b%Q^)i+SeFkC?UZG3d5hIpmXx_?`JTH8wWZWg~;9O)la1+vt^GSLd_0xF0nv zdW)S_EE6G)OK?)>$yUaZJ^jwh8~;Gvu+0<=0QKhL#o$2^M!oy z$McSdurs~DkB%{Ri`X&d)>OOybjWyvaH$w@wMl#7IMe*BXSgMmp-u9vS#gQT9&UHy z9m5zuE`Y9YXp-eMDAF*q+?VsR$~aXb`+!fJqwA3U!}DNBHa}yTMP~fH5NEaqO~oT) zC%Hz$?Ln=w$;}ySGK6jXy?}w|A_|r$(#{vv4y&my&GNT~Hgb6eO17qqi&^qB`(ji> z8c2A4(U&7DA-Ope*(Pd_iiA~9)kTIYFmRes@xl&CURzUVU&{+S!>b~nQK!>I{Zq9w zC@ukE4+kxnIO|~)o9)ZZpVv|EAgCmXQRE($QsiFSmtLW8NR7j=>Wpb<#qjK?_vm9Tv~``p}A=&Nn@=n}us%IEd7Cxtg1>Am4u`|ZOu#;gH}?Rb{8Q*q{=QW^DU z^~ku&WX-4PD#s=a&X3IDNs}<#Pyenv(6f{$`3{UAk1Z)C-&n-?CtnV0ukS zzEMkEQnUWC^`>{%sR-5frQ4y>>TrF}3ytoH&$y)}d+#LADNgwC#aN_y_GZnx5mnKL zF72SE`T2w7{d0W$wxvN4emyT~W^oce^<(i}GZV^srDe=KK)N%X16Unc_vIL7DeMQ5 zmnZXCc~J-Uh+B`$5uA9g#PJ*KPUiB{`1m{Z`=8nmZz!mQbt;*SeM*`fFhiunfejU; z2FeQUuwpsRZN(Inc zCT4R`(@FHINw%%`c=*K6u;YSN^YN?75=nlETx^9p4&Z-XV4>ooJ*z)QIZAw8*lm#0A2Z9u&P_-ip;GFv@pl`(5(E8Ol(eo&9 zEJ%QN?aD*W=LF|~4RbhM1%(oY5~Uj?vGvk`2L6Y# zk%FGI!9?(N7sOa)dg~E@vKRLCcK@&hftAq`I>!Udx_~8BlxBzsXd{vZp<~efge)ye z@a2@8I`g+M&&|fpepmL!hxeG}-x29?>T**xO3S{2H^n*2Wm*GmwpC!2X(@-x1@g=fRr|yhD)22I!Sl zPn3d(FI_&WOS=PFkJeCdoFmKy!4SfYd6$QU;4+{*0ny9gxcz2nk*MrC*kIaG0;}hHS&LK(!K;e$+STKdckDaC%upJ~ zv!fxR=25wUV)1brc%ON0ama}@hAae67c_27U7-JD z6g!N&O4I&aI5U@5{0GW=gCBv{((SWdK^zvSkIs95PwxF3(NR3x4qgnP6jB2Li4KhK zoLL2_rssC7*qcY+-!~h-B#NRuQ~fmP=yd59cj(MvQS~KUue^FpHv-u*Hf4^@u$1zv znVp+VB?T-nMf@6@07*0;+}w7h%o0jIfA}Q!9_=St^3o00)EBMJYHaCrDHgob41#UK zn#`!TRzZwK`Z?L)a>y>~voIHE-GuKpnVV=KTbF0-8uP82zI#Ce5~u(1jE<5%UDFo} zr|fRi^Tv>Q|LO-iv^tUB$F_Wi%xf=M9c2ox$MnhS`R6@n=dRbmo;Pd6T7LVJGq*R` zaHd#SKU8ivqP5)o?KqorZIauYYbbUnT%O5*=Kk5JFbD0DSEbd+hKNGU6bil{e+R`AF`#N zE+@FHy?pm6ZJ`Jl8{wzGVoEZKTy5ZmUH0wcs)uC? z-~WLcy=$pdcfCUDAzxD2lOqV4mS%Ko&j8R4W>i4xbnGx1`TEM>0gtV!FE3;#txA+JbUHA?4q?hSoApQ zwq*&C%+9z=HGl>H1~y9?eCKuWWgIkAh=w|Ha8HzkGp3SHw4asm$H*hSXC9&>aJP8F zjW=txv1Pz0hG+JH3skv)_!4+$F6PhPq_%Cf9k{riVaxdH4i1dD3@%EtT)fSCNf6CQ zV^_0NW!;hjPCjtLgS941!a3bo^&!vu)(689Q(_8Z7LShHel6$cEdNMzWa-g-t}fHh z^Xm!fjGX2?gTC;;j`qOb8P0q#Zc|}SlRfj-^6yN+XXy(9Y<<5m`zvLh_!pa# z^}7SQNkPZwaz~>z5{(Gp!R6ccp}a@CjwqA5k2wPde82Bj^2!GqTV`s@ws+g~-_OYK zuQ_x_;wk4`HkQiS03e%96-xpjmMw3FdjRJ}608a)ws4z`@uW$Mas}K8CJTr*jq0?% zdlD`G#cU8*KS%EWh*q7f{#+(vOHs$SPQT%kn!#-=(?jLure1LU*5xthH5J3RD33HW zKc5H@UphV8xjgasoBJ!I%h#6J+D-4r-uDQ4WU$x^^~Shd|0x&%|4MIqyen{B zJe|8L=%Ci*lp0Xho8@}*l7!Gt=YYw?jd&a9^WMg9B(-{SRO#cGjmJYnS%I2>H4iaJ z2>E7VDKiaIRcpTDL8JJD#Ct&wcH6ak^{e4;jS)ePW*XPI0=U3oIRqR4eFJ?D_ig4L z|M4KXc?ExQskffGKb|fHa936Q<~`rd%4{FVg>;<(3$s)8{0*(c9T&BpIe%un!GCZy z&^<@|N7)D1!111Uf@kW^zAHVrR%s7^ zPy!vLcOKrs^1SN>(RwL=wcC?zROFhFQXq{Mhva-L=$1jg{P`>>KqK^;553gtuE=N{{ zx)wrKwC=5>=CzVH9Ic<``SsiUfH|2c6)z7#tXf)3g>uLoKec;_@wo#^<^*4wD`Pm;4RGK@+` zjsyzv@!(Zs+OXOY@jI;HYB}}X^!83^F#AXdQ|_+W?DXG~qK!F0r5EPo@_asba(||{ zoy5)iUoanJBsaQ03%!I{!8f;H)L{Ggco^{sDW0NkQLs`t*?$VosyVP%MCpXb}Xw! zng^9@4n!Ov%@kq9IhH&rJS~;#(LW!DI#e#t+a5m%+aJy*h>tzp`@8W%B zR$t%XulSUtxf9v8p4GoFLGARK6RyJ9a_MWh2^@6Ldw}hby2TYYM~+G`AX3D;WfyCk z6#Q58V@+LpdWFaQ)<1U<^69AS*WX;82)7&N5rk#NmIpi7^Eh0jugv_eyyYE^COi%g zqx-RtQM3M3CvytS;kJn zv!!6bV(F-YrnEk?XPn>Ga_D^rz@;FRf0EcYtVqP4sjJewSa7`@GPZF*9lvXcn=~ez z_MrFp_IWcgYjkL+iBHDoX^z=lL;9i_nlzq`wk?|F#IQ4lUMT^Bs)t4p^(u4aJLZT7EeA8m3Tb5Jv%FsruAn zR1R2=*`ax^G1gst;8g4V)}%?3n@zdRM_0{pU&zza6D5R|J(gcU-zYB;?IMYmjSO~F z^Ps%iLLtEL1KIVKtIpQYF9_u!d3Ij?9f`e!t7B%*K96GURY4zaAG_KJzCz&MWx^A%7}4is5R*r zSQHl__q^{Jb#L>}_j#|E8T*KdiN!%YWfiavTjYyXgW%Mb6jb2Jgz>5z$4_;^B%Dk%=sANS7XXt|KFD zOG}FXl(ccqQ%1k!+nocy4@h`&l;DwK%shA2>RsO5G0J}-eD_|Ay>5Y?#i^4~O5QSk z&w($On@L`3YIPHKGa8f5&|_iw*)z>XBaV&fi&24|&sNbDeXyV~8;Q2Wgu1p9e;i|a zH}_ma{^a0U^it0EJ0(Eim&i9TDva8`2Qy0iAduH9PcQ@`{@5`JLhg?z^kNZaly5>?^6B!2QtC_Iwz%+yj+Ze5~Ap6-cWzr zVu1x1dU`S%7@fc?wpBQbT*Ks75kaG<&?}1B#6Vt3I~} z_zXI~tEn8V`|QR*5Au!)2S$f)3v4*nddT|;1=WXO)1F@QelzKXv&l0wSY)WamnFul zAi^zM$S7O)JTgAl-0{B7_DpC^4S-g<=s2GJnt2%W((TyLv{DgfwKzf_!a^=2sX}?X zBg?QP9jI{Ta1OqKT<^^0+4)nsn~{(->E!jBm7q@)%fr9h?km9HR>db<&j9WS0y|`4 zU9f2zA zWd`=QM-nlKFeJ z1r!7W56+=4bO^9jy_i)V27s8w3;}s~4kHyCDR-4g@DT7o*gb&n3Vy6iL4SAwj7g%{ zLV{@y&IIuE(!EP*;73%q7;LgaWw&>Gh}4Hb@<^U=4BIPZBJUHnZe+n&L>+KiT6;Y8 z%%Oa-mV@sE@~lqVsP4+1t+s+mL6A-?-WJCH|ASS$1bNcu2*}ab+aEYeL0oJ=vkhw_ zs$jRJ0$W_!Y(H_{xF!3M6h@dhb-b$_#C*Cd%5@{M{igR@NXS|YEAYEET=wp}Xu_x| zk5^)i;(}r&rHpSiALeMwZHNwk>$W$#0z|rH5uA+%xlwm8x?4`NiO4&$oi^hvGzYHVPCI?{k?|AE@o~&il;={sVnZ zR^Jc!Z+2Y9hHt|vDWgskMLtOGYhi_!yY34~%q)JWj+QOg8W8w%7Mw3usiaP?`d4nM zf_@@j>rc6WXWHaGpcule8qfOy9bgb3F>GQ@Jvv;f>jcatur8Qq_Dho!I*wpAm~Hf~ ztLl{@h3ecb(Hooecs+Ag(L**z{`UpA0O*@3$=Mm!W=+HWG*Tf^x3@ZMx-QU5LJ&}^~M%?^) zbUfq>uRc*diCwO0_|T`6Me2Y3xwH%(I5%(h!8d<0pR4dAx49KkZy<8eCM#<*C=VQR zHsgS*C3q{7-=eux-5iCx1B5SFV9Yg9(viOI3|roq%nn9KY%@t&0J2lcb4Dw01wrhP zBR+BprwdT!m1HWuBjy-lyqqb}B5Bi*!(^&7e&3$DN^BdVZWS^hwUvrDcC;S$ZJgk) z+(@38s;W7)Ry;wR&Yne^V61_+f9|M!p9w{G)_|hi*S})L>f+MgOe%2)^ghLX^l>G= zQd!lm4Y52r+vsgaknAb3>@dbgzFQ7H1O@EsMJ`zkl0JUf=%q14Sdx6FAiR6@QxQLG zuTCBE#koLCebLyt$!Wi|+NGm3K>N#(B6#qW>~!JyJZEDSE$y* zv%Ha#b)Mz?p+&$r3PIIa`}0A{;jBcoiz0t(Ppq`ePv**5wS9w()*_dhD!7P9<~*w1 zDC=UUBhSt+d#z+*rX{Tu{85M{qfvVcd-vTwn_b=UL8h*6T37K6 z$z}aVw{L2g5FE!CQ;H)}uYhO)BtyS|n`MpWg|HB|ViZzXSD7xC3Dy7pM?Z)F`wr+_BK>>#12 zM;!<_#lh0epRB_NZ$C+XNcbztCP$o|z3doBmnSYYNO3Q6`_C0Tbdt+BzW8C(B zwj6(_ta!z|?_1SdgNB9-X*B82V*c?}VMD0#@3NL%=zYZe<=mgUSwCf->^p}lTx}m8 zUSR6l_XTuEl!SI?xQ^BC=YGfduPl5l?08R~aj1H9&|m{2Leq+{ zJQsV62ozqNI>oqT=IfzrN|06sLok~tozasm+xTFvYQ3bPw?7}&f$sBrm{4eg8CSa> zPh>A6hatPa7gEm=lnA};A^yRVi?I!!PWM=_ zU(_^Iwbs{OX_e^bcXyqo53k3T6|C8>1$k?Gr&!9GHkkorNkB;wB}~gjVm4(Rb?r{M zu(`LsB88gjTqJdVw2hb^`nm0wkv-AeZn6Vm;W(G&_0G(4e_0zfOnSsykE=klLLB2QvQ*BXqt!p^^qHyQ*Kf$@u zhtXWoHrg+?E^Cdkh<%W%cLG>$5-yaM2F!EgJSchAFZmD4)5E+kyj0bD92br)5rBUr z=3%tGr*i`38=IscC{Ix@+hz-J=1ne6ttk3QmtN>5BI|MDfGRr^c#>WGjV&i`F;OId zxhO}IignJy(HNbZ;~*X4f5`s>N=b3D&c&lohcC`SuTC$sf`Tc{KxJxHbDPBR&@9_< zm07JeH-oeG-K?X4lRZz(>(9Pr5TV7APfsvv`1A+yaWvp%R)ZRjmH^K*b>i7Z6<(nz z+b+TJz{~=El6Kg>z>b2y9sW>`m0ww;0m5Xqc&v^hzvWp%q9N2z4haVaY!V(3_$NEx zVVKGL7AR6P?FVgvW0k6RRkO@$)=Qg0XW0N*$v*XxI~4}pMHfUA|6|e2#POEv!(U1A zAI9j}JD$-Nva3!y-@oC?besN+l2#+e%+tLJ0P00{PtZFWHOBkg`|jXfRNYR!Db}&9 z?)`o>5coRZSNnQpY9P{)er`_vW*>WviEXNOSAsiup(ixb$N7&*^phR9jYbG6ULtS( z9BS`*MY_XQ(~a2oUV4N3z?rsqmQaUO0FX5$S3v0PQtiA*x=oU|fI+LGAXx6pwDdeD zE9wcCu~A;HV~R(P>l>VO0UzWBNdDGWfOF7YMgTW zbiSBt26X#?RZ*E9{_lbuhVM!!VD;=BMr~Q-Z4L+%xC;NsMp|u6iZMSc1y{Fbu82gl z(Mpu+uk2#ls?X(87vG-DlXWN&O-hss&m8KsWQ-y8q>NY%-~Mv@t*@72r$@VOa9+;% z(dqD@zIq-ve~{~HxM=YRKVZm3DpsIKyG}bWQLSEPQZ8RSzjF#Eu{&;Wc1W|e9o5mW zwLri(pVpCoYOW9M_PPy@qV45!b@Ao=eo+IMn@>T}f9P=)@9uVXPR3VM(rsKl;H+Ac zVYl7yePLhm9%*d$ef;}GKD96nLk-bPSXop-0_5iXtNWX6OhK$PIRrzDJmses*XzBa zMZ>{su=uY=(*4x3kbD)vp1G%-H_giwYSIN4o7ZZW{LtOjB2qJNQ`~=-ST&+K@4u|L zgUjf7G)E6b3Sv@K(u{2rD@mBMY+1clY3fGbSq{W7xVk=#vHM)}TU=vSMLO+Qp_hRx zC8BVPFjPR+YY&KevYvYGm3;p468PdIGmI{~ImtMz>9g1``Ewh@GZB~p8ionClz*K zo0`_B==m&GiHQ*!db*a^7#p6c%(2yW(|^ZGojOc#eeEg_ejWfS;yi-z#4Vfzr%U=( zHSt6Sbkf+QDd+9$L88+|Mk1g3zt&Og9!s4Jf4#(b3b!kPHm#t zihQv~-G&usy!N%ZM0>77k1GLE9CE{2GvXCmpxVi+xfr3N`ncn50r5yi4bAC3&Y%0c z|N67MoJZaD?eeDRzP>i$+ys-&I@#3hRkCDl)HQf_sD&rDhOV-Sk;T=VwJ$$yOKcw!YDh~U*cX? zQ4HHruGWNtEbPi4M8{cVhH^zX+8!lfmad7(Kgw8qn|=ZZALp)O+Gi01pk?w z-z}emJ%tmt($8-P8UCnRkr`lk8S$;s-Vp3*!W2R11rlv%_uoWZtgpt8L8w1OK<_Uz z=4^_`>~J4c*T(wnU&8Z_&dFaDzM2$ZDmBL~f_JgFLt~U{T@VJWoh6s*nf1@tEgJ8Hme&-p&4a_$3er!T6jhe3+ac7L z13c0gCFoCf6GDKkb?jzw3q74QIpgJSAFZiP)_pN;^gTjr#8ZL5yq);08PZ$!5 z*OXlu2;kMEd{q+=iJ27Im z_P)cB3f7v#C!{pCyEpD3{{GoIB2MP!c?33Mvn}M>}S%KFIK6?Xz3SV!2UX|Sis4%B{ zp#7naq9q@E!N{91R`D&dz}3a6IcPOd9s!5}L~}PlX0>*2>C%Rft(5VEAeb470LVSe zOX2Sh)Gi)|(cnb)hflu}ldp!y>+dQP{gFfG1T4W;SK;UrkQBTTykw1R1?F_lGmr(4 zyNhIxgKWW6aR1*+l;GopLm#t*Hpb|H9usqhCm+skQL?3DK&*LG#PvL^i#{+pkmVN^ z)nLzFd?YUc>7(=Eum3=MnOJ<-ov*jH@i3gF1A(73P<_Bi@MPGXyfgeY0ccF#7yI9j zG{Pt?Hrb{W11`OlNx!n@0xjk4wlYZ)k#gIXQY)eh0zv;J5St@R5+8}vmc1MSUzg9N zh>v~XH1MC>fcaQkY6-V*( z1S#d0nmF8bZTWTOQ#Jp=-R(_v?d+}Jh}c7EMLFJuK^V`WbEvsFGbW1nYIOVlVh$Wo z3df5c#rHr!*c-S8urur<8L~>Dx zcg-BDWNcLUVebIX>Trte!Vvi}-(WI8O~lrvvvXf+C6rTDf~&4R#~@ApELr@_&nJ{LY2Gd5C$3k-;5A;ojGfi|ftv8I$*MMMNnHLU{p?0hUS!Yjr}1Wp_Fu~w80$TtY1eu(GYWVk9qNNnNfz@q}yP?b`gg9A$R__n*4QuyN)y+ z*{E!pC;@8t{;DbRi-@nh%=b^`ng%V>Nm_T=19FWGA6FC#HF+_Uu_-PJZMS_5Z)kp5YyzS(Unths|s>N4A&pHdN>=dtr zYLH%z!45MbX^xKmLqpDWZnJ?qC;RRLsgW#Fw}tjr0!m6t_xD`bW7ACbSHgw9SJyad zk~|fi=1+0Yjw1?6HuajmDun@FSLXsPN`LSG-vXv@Br9enK_S|Z4ptIBUVoQ(Oly(Y zwvG987XoyM#QoPu$^5yRTQK$7!fmhSN$Kz6 z`mDFizB;6Rq<2*b^$B@Uiq%9Bm9N0)=N;1T*8%p!cq*qE_bz#JFxeLL(NWOPfVih9$%qoU zp+DvJBGdZ}vE$!w-io)c%FxBFnXiwUDb{X4PtPlxqE9PB(B7%q0bHy}{{D5o$SM2X z($+Vlf(jz`SL#^p>Z3OeY#*EH+#OMA$WAC%(&ef?<3S>Eq{vFNq2-g~$AK{KpTle! zRaLTSvYN4jk!9*!#Yxq8T&S+jCoQ>jN1oP<^Q*JdzZdss{+4As^L#FQQ~gnWkoWF| z4v`9Cb71r4DshEmtUbWP@>?7}k^9xp%Ng%Fihax#{~lbaT%Y7FNZ;MWYxkuiT%6C& z<>9;PG820?>$~}KHR}PU9eCK(>A93WiG7Yi+g#Xg5w05lhw)i#UDV!QwXYp= zzjk)U%VTo1=R57I1aba^=XhT@M~dCR<<{aUAoW%so>3JI;y5AeF!N8Ta2wbk{`}>Z zzs(QXg}gI`QQq$QZb>L&3VV;(w?JiH;`4-lf*7rrRM<}v!mk{}=s(U+;nzv&yGGf` zjSX97uVgqWGC`~FE|Oz%7T20;HviJ5US^k;J-6&FBN?>ajLQN&{*kwE*_U>Tv~i>Q zYE#aJufX6Xzm_@jEa0s-xACFM|0hU&{Qsac(mP-{vR3x=>+N`EygiadW_L2|;p^L- zUgEKBHmF`0usbRP^~i9F{E>aYVX+2(LGhIm{TH!t)82FWSN`L^*I+?38VXw?z$9P8 zG=RaEqzUwoTtUa;M^6X2f1q9ntHYEu_?84&sOqp9syxb9Uh{LwGA7x+6hMcGHIC-@ zcJgz{XWqvN(Q=B>vILmR-9e z^`Rhzm_ch|-IzfR=&58tnn7$f{R;cHc<*j^b23x)A(;ZVS>WD;b3OkPr0+Bc@Z*=v zkHJa+Km@pKDajr|>+%8+g96Lo>eooMjNmV@ilLLcp{Y3=TY^&w5WasPvw=q#YY#z% z?c*LdB(TVjq~+lqbu16Q#Fyg0EJw!iA)ZT=G+S_LC@ZF}OX&`(E~?!9(1-0l#?Rat z&`twtA^p)BFvX7EW3K(|i4XBQBfh({dE`hum;@31|BAqm<-=m@);vA2)v;?GHy+mx`gEAQja7 z^UXM={Gkt!)s|kzf0&90wb>g}rCt4QW_`O||4c0nM`zg_YoVW%jHzu!94$s+NzW55 zlC0i`B2W;=b<$Ta@+0Cdq$+Ny_;VBymp$?}t~s~Wpfs587pB&n800qA3(ys%lYoxPJ>Qj3Y%l)f)UFv#Xd(nPUi3$ob|u zd?Q`jx)W$h#kh>z)o9Oww__P@PwuT=>(Z<f5CTdI09J6#LT|Q1}8Xow+yem~t7=t=3 z%~hYddRsX43>T7qiutSlw}DjCTlg{gPx++-nS|sdIiFo5ztj9(;Evzv#LXr9Rq@cV z-vF%}dnI{++Q`*@lXyT_;e`(dgFnhV+x`haAmu%C#q_ zu}%k!q@|2PbKma$_D(lulM?GC>s4$FMvu7*1ke5t8{zke)&h85z%vWdH43vBui<}Z zx%czDdNZGxqdxbz_ldm!kk@I@d*hY^fZw!xIr?_v_%3PpgS(CbM4&gvD>@~nYQN=# z>6pC_yBi!^;lSl|EYQlhu5r%Jr4Uv#gT%z@r7h10oH78=nCJPE0HwP&!s@^&f8(VN!DVT0?x<}t(qC>rZZYaH}gKmIXk1;0nt2&BD>*%SKNPI7Khzt_X9ox8G*ZEvQC)zJV z{MkcQ^*C7|0fA&o&{r+eB%tTh+t{+)!+fZ-x3^z5~HIz zg#las#D_K!g!zG~Yzhs44>%rjB;BE_4O@Rg&#jAA{LDSXJd z(*C^EI@cDVO<FKX{8JihtgPH&nt;P%a3HLc1>Wv{i@T+`yUcl=nY0mOTXrykM4TduE_&~JGHwKf z)K2aSA+8b7_`Smp@Qvi z{%KIeBiq#9T7HQgF83*w5^zW~6pa8e6J&*Yk2U?CZ9uBselVBOXhS&^LH=&H2WZs6g*VCTuYMA{oDQ=Eu>O?*g?ZK~HS}7$iQ^myPC#G% zWeH~yE8fZ!WQz&%uz*V&7Vxn4(p^_JWO>1w%-36OG$0rpjfY(>k@b!T2jQQD(XIEg zZvrN!I9`GPLitKH1i}sYQgwBFDVP!Dq5D?Mb1@wI3*c^$we{92;s8~@xAGl<$@l@Nn9Af6ZGOF5gfyWIqDc!s7UMW^ENeSpzXA3;4>L?JmR3*EoE zK^(r12T|Tk{-d@$h1!1>=5XtmI(xhuyby3Q^qh6^z0_?~dQP27Y`4{R6;>%~4Msm~FeWq|=?6&m7R z3;U@$h}%EVCQBPL4F!Z}4t6>O5~dr08i2;aPL^;o*g9eG@CpGn{Yn`9KhTS#K*iSV zDrH&=n+>*j%<1a!x1C#RvgE<6LH|IP4MU*UR^JE-L9E)^;_=Gr0FDJO@*x%pUH{%E z^@z)aSwyIp2grskD%s343q}B^XTogb_0>DXtAm%;zf{vJ-478(Oq4%Fib!P6`=L9P zT%_rU{(&qTz|-e)fps5$4ReQcb=tK)KNCQ`)t0b)K4H~c+vp?i7IGC_i-jyhx*4T= z0PaCw?PYR6v~|GJCwkTuO;=T>VE<0@C&KLxlk_8D-#)L>^OXAOdKJ#5*k(YZC$D9C zzu_(4p#=?C&<0e(-3{4XZ$VX^y_3Vsl6WjcQW36hwG%3{Rs+?^11*>qIun#s^M zqZuTgxwvWy-X2R;1dt)cAWLAGl7%j(F#efhV27>*oMo{J*436(lmLq_QB|j$ZD0IK zqm!Sy{wW9UtJ1^TLBG&SmOl|D33)}mWz6OifL$yeHs#HrtyMtNU}3!00xNF`%!&$0 zs+53XG^06?yP(+}n^FAO*v$B4@FI{$&mMlkSBR6l`B4Fab| z*>TsZ&!){AM@_XP9l4%$JHAw<*FAGAUtQlY@Kl{10)O+1*jYN#87K)8_~YyW@j$n- zHF^$aq6cAbIM!w7h<^n3?=BGE-**hL4u8j}MmY2VwIM3}M0B=^O`M&BgyR&n%8@f+ zW_DG{#UKr^fkXZbwk>dvhp??2l43eFe;sX<7YA5(Ln%=dsXqb`&!f7O$i`2F=(^1O zz7?1RbgI-h{;D3w^7#k4B<^?&db%^2R)=qV6z3nOT_5%F7de*f^{w2CfOt!jeSsG+VujTD+~J*$Tv}usiVf%BuZUF${7JoEX>HXT~w$W=YLpkH(!k!@`_YB#A1`(Iv z6FuW9dzGWZ%Tv0dhsEZDB$p#OEWz4O9($!e)rD)y$L_L*5OurF{Y1!gGQnDXa&Bur znqHLcuy8&mC+S91l<~mv?S?%>5HIWG9b4XFfEk~McUlY#=6iRdk~}6@&Ru!wf8KVm zB<*nb7~?hBfSn{e8=tWVo?tzHX5uO+%L`=1Z0tT9nB+8ii?lY?K4AG|P0;K7uf9v= zyz$1x=zA8ALbe6Xcz@`CV%kl-S86v#J4!Nzh2tG&!l!J7$hptj`|n2e!T4MsUXoF* z)Dik1mMs*o)ZN_YZei&vX@ddgq@d*0*U;s7;E69ZSSMt5->{3S{QmJDXyksz2CIl5 zE2~mf?%q=aiLPTkyQONOs>Ez$Ue=x-IVDn6$KD=ZK_xvVqaqp~7Od!dGToIba)Mk) z3Mg1nc@p&e@JXD@SVB^FDc|dnjQD_bJ+c>WciS~1yV?L~knGYg5U1}N=}|ad)dmsX zs9&K4>)D8kFNy^1y5)JD+FH6>TK*YvIl8X7;Iunde{K(%nx0bSr8l)bv;o-u6MxGP z0R7WjM{hqw{Qf9)rSZmuonhs}!!9P#A2_}_R(#F1pPjkSg+>?vpS=%zWFX#acuZ`E zHhd*b$)qjH9X=mj4LhemWgh9d`T4&O-E37K6D#JFy11$QcK5bpTf||29~*uG*2^s3 zQ3lrsh_D?KDmx811O80pZ&b*pzZ=c}LEc>`neur>;BJ%wQk>gIuTs&D-}=g&xJCz_ zq+C*GPaJdP)Jl@rhV`1IEj1Bsom>tSyc%)Sz>%?vL_k5+*HzjeEYaU?Eox7X3wDVc zF2sF2ZDIW@rm)s3-i;NqHDd8wUwDHEsNc|%_);}!BTkA0?Bu9rkzn*GO7jN&6q5~sfr^M4i$w1DJltkO)Vshq*Fl0*O@B!LIhu77iO*hSTR zp~_Dprof$TuFd|wb&@$llia-d_ew zDcBJl4G=H|mE;TD^S*mkka&OZxFZ_cTF>6mti;KY3|hLLkRI10p7q~B6r{|T7w=XB&#UL2R+^2MZDl+_=vVd z?ls2Lz{aIGTV@SIymF?A9q3>iVNAt~(&_;I8Tihmri1h5tGF`lp>3+Ov$5Pu0%k0J zkg+3CQ?nR7OF)#CT#!poOmcA3J#ed;vnLo@mX#;hRMt&sOy0q8v-Xi_^{C`>3%g45(2NtT1YK_OS?@;d!27Vp)@kyhZOZ+y#x{u4W zt5bL(>HWf{{gk~_f{Qxf4V3P%fcy!m&W|n3(RG|W-n3W8cnnIvTCa}Qa2^L9#U^LE3Zcx?V@)s{lv(jcn^^@wT@1+5<<|EJ%r<$gtvx8IcgJY`V zreF_?#?6N!V%qzWH615Xn1Fy;(r8-J|B@%5xxcTQhWcvg2)-v+1hI`hYmVZxOZd+f z1vrf9=#^l0=K+F1sjg|v$$V?8rKYA?kF9Z|`T7Nri0iwAP8O#ClwcEpxQ>Ucy@%i= zVALonO+iO^YPz+vteene--4-w5Z zwQ1CLx6ZwaxtW<|QJKEuJNK>faX=N!Dxc8?;q^{OqXwEnQpV ze^GiR!aQjW;0us#UYSDa0H<-}Wum2${IcwYn}N?A)ATd_zr42B4Am6#zKz^Bt@#81 za_jIX9XhXSXZ%Fx{4ag|V$1u5Z<;JtHxK-7ATnoAx~2>YJXB9fFg~jr+C|r!$6Ppv z$jhDh^{9~WK=r~B&PmtW?}FzyEN`Wz3eEd`>S<-=w(9vuJVpy;Ow!$wzFqtyI$d^; zqZY{j^MM>}to>?Tzb%Ab?F&bzs=u0S&07X&v>Ir;M#{%F`saDa26-^%SY+zw`hmd(xX&$ zP9MWLfuKf_IVczH@hp%iE7%OoPF7uKH>DVUZUmRmP%SnW1uoDZ=h^reSo1zPbcw!Q ziAYKDc9g6B zHlAv2(=%y$09>2qK9PqNw34|#@FDCWr65#Q=DSrXw#3m@4iknI@v&@WfHPW0F%NGy z4mE-)daVb~Oq0Nar4n+FD79&Fu3eEy5NXHOAw*9fF^SMU3E7Y`t*BqkM12iP;_>7p zi4WB@DQqqW_#S!(jtf*=?K*OwnZ&JmAD;1nQ6E%ce*AG(zeN`t@PLPi&P2mI|GQoO z%6(RVZ31!6YuIJe#o0xoRM`5_HT$}Imi0M0ICbH7PYX5hZV|y|^(#nAVY{-)b(quO z$bqhGew||;1)*QsIOuGRz*>Xtz|$z?4{XYGrbru#hjEwYDADNZn@5=P@o(LW6B7w} zS&y+eh3A@gwsz89SZ=%MhC|-Q^$Fyn2d^yEMoe(DCL#a6GHR`M=$&&N*isv`^xgb> z$lw9srM;1@tGvgKE2DG^2vx`B*(g%z%0`yFSN?%?lMsb-v9ZFZ_uWni;ga3l@!aaf zpH^yZwcnRGzh1C6b_C1~%tsG!B>YaVuB_Fj6U-$|3U`3?{tZFK;4rF>($wQ2RQfN$ z;a%+u%MyXkXnU8wI*42QqQ*~4eZU>m;TOtm=N09-4F3W29-g zYGHllD4=VxA|05_JqEC;hpf}3%pQk#9z44+JR#k0@L{`at882{Of_?||5?!86U&M# zQH-WOX`ZvS+#5*tHf~u^?UEWLcDsKkn>qXJ?-x6}B4o7yl|LX(DZ}jpAR-UM=cd?Y zXwVekv+@8q-hjpq^Nfywv|_(O!9IHb=z&o4^*X))=?BapfhB<7LNRJjJYWTONi_!$ zz?B?-YZm|;Ufaux%WBfJXD2t*n|$Z8nkqZ*0FIMr($CAT*SmkK>`=3ryE|pNHxuHB zCbgrb&2qSlRr2iu9?5dk6-!i2Z11M)hMQ@1Hk;}*~#@Kp{0-ejLf6L z6J9Z21b{XQ{=qrmFW>|LVeiLp9t`kn-$5BmHDD+?nvGn+(J zpcZewSo`zH@4)k5_ZxNMY#Fg_hwguH-j?!p@1@Cq#X;bM_Br$;pRRq`6XD)f8@Ahg zA8J*+vf91^J)-Soyg#u2;EhUll&oegU@THFmVtv`I(^vh&pzd zTELYNz3O)QurA)#qptg7gy_<13%Sv6-cI>~)~>Ook$RI9drS^>B-Eh0cm~V0f?k~+ zFA`8Pz=tS$RO6%caVm<|kWW8LQ=zcV7y@XG*9IXL?o`41GOEMMY2t+Ebnsn7pp z&)(+qX3&!)PI3kS%t5oW8u8cmd6^$U8X-BaYaD(QkIZzRo7(7h911LfL0!_7bLWiD zN?8ING+l*Gq%dhx!ajguv1jS`C`+y5C?>i#?IC54YEDjRhcXlTU)94e0>fnw=s-$K z{Ga~Yd4MsP%}p{s{BA*Yj3dWP%sQ9*x!eY2@|VxA9S^m~lX~O_R*DY~{TSEGa`bJa z&8#Z0$y4A_Tvk^K;4#O#YZ!y7fv@wDx7y5x=n7@40@rZwHn|+%uf9)T1SU9Vq$0r= z8y`B8`=3HFF9HfW)o*7m{;0I`wS`4GTB!bQO{EDu4cjLyN#xJh-B(85ab-Tn*=gr4eHhzO%z*_73)wPFd&b$uS?Np zV`O8Lt3D%-weNRkb#yX*VBEC0Y21ont;YW0Ib;3wgJvP#q|hsE+T)S7!p*Nfg)&}n zYwDMJ*qdr7e5(LF8$CERe-(~{_U(Q?c>l0&-$2px+?wG|iPuUo9f>B{)VeiHNf`jp zYgO-*7{8{ug(>+rr!I52g7>|nw6`8FrgTm{vg)*cRLiz)cTyR)?2>l}y&1>@+?XHF zOj$|KaeegW2;t2f3RZa(|Nac0WPqY*lh^S&Z-`77?Jj{40T{*y`}Y`9O1o(TMBT2lDKJUwM>!K9X~Q#p33R?`gIYRRfPx9|h#IhUaOf zsklLIX(bQ^*dsNxrQmkZ&9^ucTQN6RAi;HfY&PdT6T^aby zKz{Wz=W4I{vW@jXOQ^~I7ENJV-*y%kiRJTQY7G=8XMHTDRT>YjH7d-Z!>3e{p;-2z zHx)x~DA!Y>R81*7i>*41H@dk#OWhoXOsOOe6PQ11xC^~e%+WMevej_^ZC0@g6uSXU z>PH8+=gtimPP_!BVldlBp5U*J|3J3H@ygkngnS2qDnmM_d-K87kByfP#c4sCCbU;% zb80Cit8y;Dwi$eZ&VlwpxA7o9tMgf|roD-6_f_?9d6i;Au_?OJF;$-T8|$X%Kv1tL z-yshgf1`@v|4v8>jV@HHaIve3{|9PVlq6!&qg_Ip%b5DInH;F6NE^z=*DsO=6844g!!##}5fH-ol2%$4 z*u&r_Z)B2Dvxzor^%WGp`nOHf@T)%OTC*-t%t~i)JZx|0y0YXFtVU%~*Bn#4x046T zHsT~boQ+3MMcmoy(0U_je!;(Lq-vqT&n2s*-_kPg_u0w}Y5wl6EQzUAGfaY2A8DY3 z=x71omnQEnB4gD>)6J_G9ZeSMvc0|qEer1kJ-KDkS2}!iJKti`F0%!vTx$C-JM%-4 zNs!{YDF(KUv~eIs*)7jnsRIGKhAoaD^q-AhqUBx5`9gR~+fcu{=jFNwJ|}Eii?4Yg)FD5>!-k zU+@%0@p{t(x)LzXHg_t)0KgEybYgPuWELLSyjG5Q^Q%IICU7ct&LGLt%Q`JWADrfL zo~&~LWf*YKPOUVIJd**E=>Ns##Qp(1W@JxT*Tfjk zD`!yXxcu1Bca-2cS6O97E~uH!cj zY!6KQPtXJap!ee_g8q;q)sn#Y3uZ4{-?c_gE3{p=X`7X5%QP{r9C$@BZ(YB%wbXGH z(jVOT(1W=;EJjs&aYE-x>5xQO(fMc=T0TeZVEm_~+|oca05E)GojtV3A1RwHq>@#V z7eWB(Ah|KOZAP*pAFYPe^E;*Mr2}3<6BkK~tODYE?;nki^}S#PNg(hQovqNIvwyudD(VXN$B zRB5z^o8C_>?R7z=t`aLyUF@d-Q|P^`odP_xljB`E0K{Pr6ko=&{J@b5f*W1o)946( zNpjC$gaR#l>O5s+g8wo_D3EzHZa(>3vgD|DWz~trC!vNWY&@3=GXr&ub+8s9cj_ce z*M>$`>WLoJFJAK%Tv@Zu>*F1(B4BGAt-(pDn>ckvt19(tH#64W4caS=J;86W$ zyVMDU25p6Mc}70+tB>uBNT-BMTh)YsICDS zPg}bU3z@y0Qnc)ci%=D(o<``|9f-8SFZ(QZs&NJAwPlG8zD%B`X|$L6IxYmn3Acw! ze^8YQP&A2;)~v$ftp)VUq)K&z)k?yu7N#Wiq4|``$x;+upnj*HCg`4yCd_G2kn3zS zy*k+I^c&=rqx4;P*nq4uv;#>1Ce2#=KLh1LAV9g{I8r+O*wCNp?6c$0ARCVI5zl3b zS3gE(c-9j~D=jO}dDRZJ>spl#8OIzZ14^9*R&4$Rn7KwnNZn8|fj&WdYig`2lmiVL3bh71d7p@_Ji`-_MK+kCwMJ2cq+G zXl3I%E*U%{7LzvHJShdYi!^%fSEakv!@m2e5Z6V$At<3`fy%Cy!+)T^XAKFl*7ZmE zrRvg-&}yk5AYX-x#@=?|-ReqSdYsT6$W%=mDVu7o2gcz{Iteayxpax`sz|AIHGSuK z%5ZX#J0}FzeQAetEQoT#|0d(x#hCZBe z<_fvjkaBgcdR9e>5N26_l#X;ju?GHuRwbh;o!hN8d;>XTku^)QcN>x2vq@!kw)-PIM@Gr(A$~6ma(Gwnigx=ZYgSO3m&e1O~m%1>El(&rGsVFH< z(A~3H5^ur|0s+q>lIGWH_7j|X@}lw+Ax7_0#G4j;rj7&}?DIA^RV*wm0mBtOoEsKf$otOKWORA_64E9bF(SK4wpgUj6t} zpTpzh=UgXu)+>5yoo<+BDKQRnPA@Vq(M#rVE4jVCscQg{7_W}E@lpg|5B%v2FgKr& z6;k1J-fwhI+EBuL-g#(h(^>T*H_h2db zJ4JHBSM+-|#~~I@I~#+T9jp7CDBVL$5PA=P(8!w^3yOr?ijX9qTtEcW|G$ zaOV+^MM4|l`82o&&GUPHGIHk4GVb!Nf$HlAQ$H{3RgK;)n+paUtd!0SBCjhbnHb;~ zbft2t&>lx-nfh76kG|!vjjwx+MiYk&Qua~&zgk5tSgh8*adnv4nt8t9iOdo2Q-H2*Fh!_Ve(z`DaZ z#*Qt`0>k7yK5u(%BCUrJ>=aw7Z#``uA9!^rZ|JVMZlo#MxgBFJ_1?azTAF(+pzEQs?%s1|-nTF6{)EVCsIKF7LNk~;?R zxxLrLGxc>wFF@f*BW>GOGU2VNitD?e$*?kPTYcF>5jO(@W^f!3n#I)Vd3~fw`UC7JLM@;y_x^gdKdhnf_4!`{ zNW*z#uHm31YrC)8PgR8u0}J(=>WHU~qiw&RHRy}^d^Tz~iN?2?Wh$vnINSOAva%W^ z-)x*Zn+eem+)TS)RqC%~lDN|A>CLU+FW4>MbC5qfsLOwS{D#&B>)X`&!#odFir!AR zG7sLF&p>{~X&Iir|IX!c$XtfUtIxfZOGUemLi=wEM@vJCn(VC?qd37uOmg2b2 zbE=yhVMQjl^F&P&@224z>vFhD#`nM8X__LH0uG{70h;6OO7*0>1F~IxnAaA1&NubW z*Fm3MaPRI%3lMx99tF)u=<!Q(?M8cY~e?j-M3e z1xGq`vqqtpB6dZ`8d4S9*Hl#GB4nq}gQQ~(`(q|yMm)=3=3}$F42J(B5z#;@SvJ!zKFR@g?`RUF z`DPCsCUE2gGL!+FXC9n>v&<3@xVN=`X7j;?OIz*-08LzYqV2ZHd=e zX>$OxT1z$g^oapBh zNm?Eft-R$O z(SQdi%N|1l`qRt!c_wcRX4;UH$jQ3M{P!>b+;xtDe8zI*PRsc7|GxVF-UL8x+I9uwNeRxO7o~O^j7$<%bjhMH;KO zYD^6kQV`p>{>MnxRjo6%pyQQL`I|Bh$gbIqmiOFUHsh~I51%K2LnWoGy$1oE{dd!6 zi30Mtu4Z$q_Q-JPGuTtjE3?Z|?~=3$R6jJyL{U;t*`UvlKY?5_cO4arm7%LsTyTXx zUG1pL2**PWMjz$?7v5-6GzG)n#d{vI$4oJecoMltX&YZ9=Ii?y)jSZ$6PMdEnl+z` zRg<3B(6O8jgGM&SW$S-cscaX(5Gsde__C3gZ>bo@u?# zNKF5PX{7E39PV1eo$uPh9Sy`BW#_IskE}HS)M3bvMkwI<-__oG{gOa9?n-6USgb|#2X-Q zM(2cM*AEoa`sKGGUDy}+#p8$;TBkLPae zhF^6Mz{Z&F4>`7PY0hex+j0}>ipH*St8Z#{0R9VaVq-RBJici5->cE53xU6*io@=( zr;WFDZ{L%sI^5gMt697s^>TM{{9w%}{lpjPeXNzUO4`$-KWz@Y&tI}-M;SRv`~&?= zeXgroeyob5T{mXdGW!e)`E{di<}vSofp6SQS=eu4p@CIu)|>xJ#X0K+(fY$k!LkH) z<1PnEGTOoAQXy6B1SBBPQx`xyqvd$~16@H)2WgPIW|mqvKk;B%kWpBn+A7Lla zwO&Vkf2ijsvtteR=CG=_cafH>d*KmkZ6J01Mr=-UasIbr#g-0-ZwWBFO;~Th^RldZ z#{$*W)f;-rQ8ZymMGH@O}V6%D6&Z!hF8wH^7CdYhc9VQIa_g9Vi%ms>Xj3ijod zvtnL1Mz)$O)LXU(b>c0CLUM;J?gvim{>fPDZh`0}lahA5F{R%p8{_MS7XbPvAEQUn z-P|BqJ@4_l@S;qcV?J1;|Ay`LLz8FN#dH4uSwntC z-&skxFOd49fTK`6v+<&qP3kV`8>0SON>hPxf}SS~E|xiqC6eQkxo{YOmZPLLTEz*8pOT(Q?lMR{`%sHskz~1!bRpuiN?A;m^y$IzzBAv^Vrv>=w3~$L|B|cOB_A_h?~xBr*iDQlCVJ+eMuE zqvd^$Ta!ya=7Y>lF)#A-!0OgK^Q0oJi2%483S($vE|3PSPE-Zr>@Ze_7BSb(4^Vh> z0+GptrFImX-i!dxGQjsc&JkHGeTZ!`a)XvM+b(5fu);L3u1RAZ)6?$F*A`=39Bm9XUl;4DJUO`3k(6Z6YA_R|XnN|?uxmmr zkft3lvNr_WrAG=rE3hWQG241@A+hIlYu&1Xy^8N#{OWHau^ph#$ zaBlpMEj~}~+cpzLg>m-Np#ozBSz}gRh!CJ@QNS}xpRi{TvNY3NgbsjFgAmrf>DQ_nPCeV zqOt-!fjt6OWn)=LDGcRN1asM{7mqsHb%w}Id)$@+xjxxhV1Me{9fa$QczT~A1Wn-7 zlD4<_A$0y(sDf&1mcT@?r5QGzG^t*K-uY!0pRhi%t8RAmJ&==T24?Fod9eZ!bMoUV z;X>t*%<4bsFA=O(&)Ivr-l$H~mRfVU@vd|2?9KP2euEy<9GeuC`atBO{n}T~c(;)~ zKj08bS!!2yUL@7NuEy5$yh&mdd8$PxZRE-}31}NhmKU!sb`sp}XO8$MM=eVqA;o%r z-@c@OS7+NS#jG)3 zGCB-lAyIXYl&-3PrhR%aR25(|yQCQhFP+7t>4*&VOtuTvyt>z?uT#ynv*k5KP_ZD5 zG5knQ10frw{&4TWJ{!_v(t#TH&&k{P;j_MB_F=NWGQy0{S=`?1WdF6qec&l%*4XRs z_)2IGn>U{S?BK)e9@0$7`FYeAWHv|KkD4tz;czAl6T~ z%hJ_p3*^PQN0qcVa>DaJbojKAs!omohl60dSH1pJXk>|x$121MvXQDDUN)sATr&CS zJ37AkgVWGLyqDotV37qwoId+LYIf%Bw}S%vCIE(`oBYfHe(D{Rz%?|>7S`d=Xj{-n z;nh0&hR`~+)t~jxlzCBW4WG;0NDau(v}|WwM_$2%dg54@>sdyY7S3MODwM&k~V|fDqLIJm~ zHi0M}k*MD4= z0j7e&9)cC5!JblB!lzLJH1RG-={G0Hyh6Rtu%t`qxPOCBu=uI^LGPsoXHsc`b%yc6 z=B7(>T!pq#p62~Uh#arDFjC5wRPZKea&n3hN13B`9eoAnVf$V?!)MK7A7sJL(I1nA z7s5U|SI2^Aen1#Dy1oA*P274^opZ{^#DF5P6uQp1x{M;1dB7yZA6He?e7yTENlszJ z#iFcF^^MjQ&RwHK$Us}NzWR%fj;-~2XYAqBoI%v3di_b+^-XJQYh2Z?UlY3E@oy=0 zFyoJMY?!(zO`bG|?<_*_QYPQMqTy$HW5cJ!8iuf9(SnaF$(>)O2gFRX$FrQ}sWaPs%tJU8B zIq(cQcQoJm9wm&>8%r_q^xHrY? z-CxFP_|%iy-pRM(zZG?+FGiI$?JEkyknDzjdwct3v%}5>GJPF3kQKGH_=ep|q=XqG z6d0GT@s8eTd_ykj+(Vs2+6j7+1=`|i$Z7jf+1QU+H~wJx>36V5K2*3gt*tfi(hpkM zp6Ki_CCjCeisKq*PyQikO)$Hi=46nt6s`V(kUP>eWgal`ZPzMAFK$bI-4_zPaOTl^ ztNCIRddpGVve%Lxd#jdqIHyDxpcJ&Z`G9AH(unKqr9PFWv~J2HLuRKUig|}Lt$$XC zc-gb`0{#Vt;*1802KIlTR#TPJ*^wG?ITc1He+uk%^l~G>6$_dBWoTmq>7D$IgaPpa ze{l~p*RRG`uITf5Q61OuFZ5SLokvpV~vcz3=<7`)2G0q9H};?%xv+ zcQ<3ihk(H$n~>kRX->MmfAWO0x>S)RZ-gtZV6J+K`JAd%4SKJI)~zj3;}0q*Ar|xl z+7+Ho`NM3j?fDXq2Q$#XHG47lT~+F0zJHp5aRhcz6Z>=OI)%G6!-4HUFat z)R!pR>#Re#x6c#$-lM2jwE)Bp48m3mnq*1H!M&gf>Oea?DBUs5w155R&_d5OXE`N> zb#}5U(326JPc&Q*X~l(_2t9%|=w!aW)Ghe#w}J|PZUTL2N2k-);fP1^HmCTkXp3Ei zS2W~5bH<;p5`v`Ix)9nq-coQ=Rc9z#=IXUhLz3Eai*P`y0Eibe|4QO62GR)f8*kT67Uk93hiL$JNnt1uI*ik$w_hmZ|$6Gm95Xv%$Wn;yyiVftOKQYYHh`juUgF+|b2 zaJ#S6H!X1OYFlG^Qeq%CrT^2oG2oM-KIwa3hl;*L7fXps77F}DJR$M8gr(&gMz#EK z487C8JaR5TfM%TXV#Zx|9Zerr8ahJM3k10~`I^pIjjH%7|MfwuOy6^(&r|7}@Rc0u zX_~1c%(mdyXne)B^+wFwwy)=^_CJqDWMrJk`m}Xakrtfp{0`A2QMwoiq}Pb(#B{b! z$wh(63z<$K8nh56-TU*r^4`3*+vwMdb{)^Y2B7k1w{(x~!%t^S?@Ti>kY_=`Cw)%^ z83Kc%O(31>Fsr4%#{;3);Ew^9^Uxh|5=gQWNYOiye?I_u5?tn+&D7Jpf% z3W6uI!tr#)%?D>+Qw3K(0ZSko2~c6k7QcKThXnBRQjXW!r=C&;8sK27*xocyAZP`! zVgLUa#%D}5ak+IduL1ez|tUiU%+nczfbx z;s<*WdlA^1SlGW$2g&6Byv7gHw3YWB$nSFB<2}rARb1-q4UR_Blvyo?-yx(A)yGzb3}11T z`p@}`7k+4+>indi7&PNnp1T%&e#wX0=lQbeS;mBz(5hSkaeL*+Ybia-`&iIE+O@Ud zP8ONQgsxRZ1IE8aGdPwOv_xb5JM2w7ujZgjxP{J(H{0JZU!K-fte?OLNRZV{Vu}F( zZ?3C)(an;I!O7 z9A&TH#vSGT134B}^{E&)AZdYZ9T!g=XXR6 zg=z7gsg&`s%i2!EF;b?fc}7M=)I=sZ99_-B8TR*-Re?GFIzr?d3Vq-m%4Q#D?@Z0L zsoxxF6qyZRe@Ia^D!)vmnYSx<#@c@K$?svhdN6r^c0m|3oy2DiWlrA1$zj@#> zZjf6bs+H;tsKc6c(|g9Xu6c=Z0mDCvHzV~$-@eoqp4|Vrq~16<06%7Wlf4%X^)U;W zT@u5fXj@=uazOGlljDujK}0)Wz=Z9!7SeAe$(rRyvDHMNeqDpqoJ#*uds6R9@4|E0 zF#n`B#CQ2mDEOj$f-;|}T-`;+$!j67H*dJP&!a^Z6+!XYo}5xZ*^B!b@&fId^v3?9 z-OIdh@k$&)LI%x><8e)oMc*(ndsSq8SrT*xu05HEclog*KT&^wG{o_CgS+iF;bAlA z_>>?yC5&jQZJSh8OE;WllX_A+JRkA?$7Dyg<*Kv4aKoAoTe)$|i`sf4b99tK3XCk&~*zh0~r;iSE=_X2<4Pm@M{?R-|g9}t?0jQ%QPB0!M_DSAcm3Y zP(X>O(59pMgm{S|OqZ;ntYcB7H1SS;u?U#{W6k)U89r4GwRDTHBxPH5U70pQy}pWq zh|tl(?Qapc5?Y0Y67mF@uJtfursM_aX8)rG_G7LV>sSe`fFjz}23en|_yex$N&g z>I~iDO@34CXQTsEfH5FnF1MJM2h~>#&Ac12rC9`D@_gPlJ;&x`;^wkCatQ{HP#$ZF zPeQ#VRQ6mcSKn(es_m8ns7Mm;VVOLn+CLB)J}QblO2|{k@XA+Em9?ln*&pR$Ophy+ zBb}@Nfi&W5hp#YRe2#=qsJLc1^rpIlBR3h??RrlIonwXl%Fe~^3XUH)t>nGGRfL_8 z4i~t40xU1xDML)(bDq}?Q!sUFNftiK_cE;Ib<1<{m)XvnpQ^jpWQYV#l*aKb>+5ZN zEc0P}R~AqF=_oIABjls$_^mS-wsc@XzkYpU?(RKJncouIHoXVO3$1m+*i5hY01))a ziNxQsmyA2Pju_X(|9xy3Fa2LsloI#!g)jXqO}oP=FBP<3yZJLhe4s|0Ub0Y#`Lkq) zzf8;q7qowNUQjDe!VVqFfdBCA*9(rx_Kz*ilogS2%|LGfcBn}+oLR%Fjw1AO9H&@n z$*keK=!-2^KOqdAvsd?INM=0c1JjH@mOtNq=zSOWs3J!?iHWJv;WsReug2d-51Nu< ziqqd)qNWjCGs{LJRxIBhiqzv~hC<1qA9H=osj(FMP*pj((SmH67dV{oHq-sKWSNv~ z37B=&YrtyC_lD}v^*i==YWG7~Se}fv)b?5GBTMxRpUe*73W)mxcOiuFRUVDJoOU6H z=^$|w5lkW4 z^j~}|+-NzYM4^2KCveGEiGq%L&ktT4@sOYBo#J5qa%Do$^e$&A)voYV{J3lUdsaTv z-jq~}pXW?m|3cZYR-<|9AHPr}y;a2k^f?|A*&0sjz%{P9*EJ z2yhdlUY@oDYHu~5=?GrBagnb~;UyDe)cxQ+xPKVPjv*Zk-$GO*nTh$iT$_xFVR5?< zh&p}gs_2i~tg6fS4T<^-|A_$6h<&dSDphrHaAPtXbRNw#w2;VjnZ zt|_>RE-)xLphK$?fn36F;7<;tC{X%m)(DcdY4*WYpS~_rr6VO&G&#QOu+?Pg=UyCp z5~TRGBJ}hXW8t%LnkT1EL=dD4g!>+C?Zfv2^Z5s!r@=SYj{;efCQ0?Xd0Da9q{{B{ zgm{DkBhuRRm}l8x%k zw}GX=uKc2UGg@7V#$H5!MA2%7he6LWt|1=MD#=%8Z>LjKngyyc(LfiP9mE(&sYk6H z&Y?~r$M34o? zCtEdtBkwD{$1{xdkKJva9(n~E@d0M;^PL!FFUGQ|rH9ytGwY z);~Z47=d1@mjym|mlnX`nJLQs^W@wf5UXP>2p9Xs@$lSD4tob-CV7?z-35W;+`Xw_ z&q@hI?)h7;cVA83x_y)PehDVoP9y$FG#%Z@IW65e3lfG+G{{$*TPABiKcAg+;q;9< zC5e&$f;6SGJ}C)6yegZ1zK>Gx2b3|#>VY1`TYvEyOUY3Ag(coG?$>W`_@2$ymZ7y_%P93xHzxSOik)Alx!JjWr9uj2_+B=nTdbs4Szx2H}IW!nn z4E&#Q=v%qQ=1}~vh`|Bp(wrLK{CWrctE`2Qr7uBmh_`>vaUV8kc&-0_djwe8F_8Gh z=}dI-T_L0JBg#@y>I?EfQV@`R_*}OB|KaOR!=a4Zzj38f zsZI=|=nIX?@a`~wQhDAcR(bqSxxL&oQP=de+i3pxkmuh9Im zvd41!pkr(dV4rQ^ryt}$4;YCttAwI2iI2Qanw0UD^1t7)aa+9Q$Mo^0u6KH)XtT|h zF&QVVgyOMO@MX-lAMheb&E9}qzxskJ?OM-Bik4A^zw}1_V2Q#hV=bM)fA_Cz(VSwg zH$gpfqp6YsYgSTU`XQ!Y&s{0Z^ydc^S$s8}RdatR;ykLX<7BNWk^8 zC_t%GaHQhrRvd)1^jiglr!>ffWA*&!Ie#2}L~nyWN2#*T4%Wvy@WL?L!h|j7kATb@ zjhMWfF!j963R;X>mAxn3MCC?yq@kJ=IhiJm=&2H+7IJ%ZgXkf^caz{&67qaroE`U92vNtmHf@@bZ#3lLCXFU|OAm?i8n28lNfJE#WVf>};1%~GoGzLsF zgC1L`cGyEV*14E69*-R*;${hsPoQrCsTTlX7Qz;D8f8_sm6Dh2V38E#AgPa%TXo|n z6^6^?n8~cd3uBNb0R@iU_2U?xxW+kKQh9+`klgtCx1_4ntI7BM?!8E!Qte)?Tw(E# zOYxliWY+!S(R^W&$He!Mjs?J2T@LT5GMH6R@??26GkzWlw9G%y4e>`q?qV6Ahq7ep z;CCu9_{cXgTWutjcAvuoCZz8`-^o$zL^ z=}}?jRVf=sN$_G)=)ZncR%D-Y3hrKC?nf*?h{{Q~d7@ZF3J@v1h52Me4pk>OA`|N7qJ? z>F;6;$Wt-e+*r^%-G<>J6F@ex7}sySVhJ+a5C9l~;qU%(`02*rlC+OZ49YE-UN=CE zLRIVP0Z_qjS21>as%1FCnoT+Nmt(!{DB;dt6f4GGM6>Ho*}CQbBZEEgM{JCBjP3l- zr>hcdZc2hKKAa5WmsM^9p{Gq5$2m9;B!+R_iYEbVdr)EMKM#qm&xb#{yxe2!Yp^Xh z4=MrvSnvLSfQJ8~4{v)xrfvV)m!Aj2GZMEtbbQc^qipPfOpV0@yYZvj9KNOx4Va*x z6sHKOYM|J#Yc^oe?;kR!sxESxsgBt&9aQg7bv<%jtm@i7NI^Q)PPKtOk zES!I@qs^O|Z*m5)*inP~#Dt(4h|#LE(fil$cyi~|mCQAZ+-$%3XXECcc+&e*d^QF|5GLx$jueJ+Zgc9|R_!%^g+*!6O|MlchxKshJ{hwa^Bb zs&xSIIf5xS4i;FHv!Pl90i*u@6}B7o^apWJPjclxD<5A|HQw?ntExgDSg~% zHXh7hXu6jLge;(J_TO;(E@rL(b~(WTG-|xqnfj9<#wdIkBf?|RYK`~&BbjlI(Vd2Z;N*pc$B5}fMs@-R3 z1X9(XK4-GJP%=uk*(Ez>?hE5C=YFm5OdVPX(y{67Z8s%zZcozHR=CF%1w)hu>O~;B z=V?xP^u(XwbGrQVciO4}weDBOfo!-qAS|KPGG!P(qPU4s*>f~}bV;$qz!rB@;)A~& z1~r*_8L`@_QjYf2bQ?LOfxQvfDl~O$lXxvAA!aKfSSzT`s{|X!LNM*<3hk}L((g@G zpW1~-t~ZEcKD>-U%)RTFFBu>{d}UvQ0{9Q(L0}0?*i81PYc?z(HR?wD!<(qoIKR!! zq+I->VYH{w8Y_TJkh?DKU3o~2x6!KX$cy!ZO>2i6<4neC2NimmZ;)W$Z@_}Pz^^M6tz?chzN@cuNnEj&3Sw4;gdsMp;}%-=DLAT zD+DqQ3HuQIgpn< zAd{fsLd7ufpR)`^18k_mFE4sBbxPMeFZ`~3qjPjN2^h1xfegW&jZLwwa^94btyhzkkC*?wQDx+Q8TGPgilXHZ{@Jb(B#R>P8Lpahi2% z?n26%#CymKNU(#s$#}2!4Pg9DvM_o0dSmVp{>Q_c&vXu)o6Fq^uCGVU1`O9d#y+n- zHCls5(s*h!CT|dR0P!DauAF`fwvPgC4n6(edkeeq`=yC|9$?W#O5K`${(1L#;_SbN z#agfM;|O<23rq=54|pvjEp)5%>5(~5&W+MFU)SF5B5XXKErRSv1N^HdLZs+v+HCf| z3`2Pm*6hi1VzGY-b%qHMHt&Ygd2Hz-BVrz@CV@$wV@H429(@wmIs8CP4z>O`Z!NL# zbkn}50shy{;2KGP&oPjspOgpw6zC|QQ$wXy)aU(T9~M1R$NIb#-OE|hgC38pW+WHF zZxh+=-_UcWq;IEx)l>CFCP7p4fHF2&zhXw?hiRATwc1p@PmS zgnAJWX_3TcO^;=AD$EmYA4X{^~C>@`daiKg?QaLJX=SrxK!Fwoh z`~&fF5)63Hfsg6nH3xA{8&20UWN55*U>52YZ_$2N zjl#14#WkEWG_7nq_hin0y(h05v(GY=p0$njG5ez5_#iE@~^o4Ncc#_?kOgU2W)-wW=;Y5VtSx)vATKjO1H}(Yj_@1$@K)#rXdpE@|=w@=TWzQy- z&zq1zz_DDrXa79IzgNs;Y7ED_{)ZIfjJmYT10==@{s;(;$83DQyZJB2t?$3!1rK0Z zp}}`RX!FAOUZ~a%+y4M(={>~DpIb~n)=3T<-|M{#B$2-yy}KM|`~`+z{+V`L41Ris zjj$k1A5sF8r?7?lJWVKuJYhw3AH=X2zflCp#WyC#(&?xvu2vrIu1WA4w(y{rqC6HH zS>#;UlDmKwP!;31YwZUH1zq7GVdJm%wwfM-5u-JSWuPL>A2uK6X*d~FwiP)c!RReF z&wnE)8^;y|VBQOZCipK+ph*8ei59iB`>K1UB_sA!A$uRyt}g90?9=v=izBDzghiE0 zG_AxBo5VVK1@xgB*o0HI2u)a4#+ZHiI65A5yjE}A5qz6oO|^G)f9TNb?VpxBxXs7&5(ONmvP<88{#-=~A&q`2zKyCeO9)&fU^=n_#=%j#%CwU^Z?z4^ zLA*=4d_!C4Bk(4`qO2ghE|2W3EjLBE;@>O42wd6XHrhAB@W9LU@#pboA3tSD9Z`$Z z(>Ko6kcKmjI=nXO>da-Yo7<$-=mguWE9$-@9b7fe88axT2@M=_eAi!d3UJ;up z{Su5HJ4Iw)LOFvX(5-^uK zx0}T)*VO=9ZpHR^ZSZ9u-!0(RNV&XvKC{hVjeII*k3Bt`@@VR{*yb0kNUQmmA500> z3tpr2c8NtN5-v7Y=}4NFC0YMEPB5^H#>7=h?Hl{qB-UdFGdm;>twhfXmUk{5%e>`zQWRzuL2L`Md|8o2ulp9@im8|{UbUH;1 zuqnm;&Q?)6FZAJBV3F@VQ}w;G3F|hP{R^I%jS- z@1WZ-E@bJPy?Tz#8CA8zkxd=9)?4NM5N@alPyEtk-YsC$AKG&0I;xS*s!daOgXx)u zp~_#rm3-VzJPPo$K$NP1GicNPwJ&IvG|`CVK%3|Y2pU7|*e`NL%`<|eR-$^K0PY&tu26}|(v!3zl}=Y{Rh>A+Yu!HnQ|ckA z;>UMG24v;U3%E^F%-^UWDHqDqYD2|2H4q(-*vV2Bb~!bu$a14~M1 zYhrWIY{I{VTKAgN4{YuuYN7#dwPxGN=FYdWvBQUW2DF97nUt3yN*$GVqTC|00$%34 z-R?ap)AL4GTqL^HE~&6TN2BpfbE|NF-jNae8C-nEy&K+ez>>z#DWKXh{KiDno9|@u%P1>TkF1c*S$Ay{kd|J14q}Fta!98kk_xwYRP< zWAqgl-`_2IbBI0;sP->#edYu*%(AA1fJ#Fs`RC0w{*L2)Wt)f(gXi~bn7G@|=?woR zfF7a31pts>nu}5}&#%86+ecmktCS`lF7Y_j2^6U0;Q9ZJ;{fXY=aa>Haqxfpfd?-K z;(PfxsyHzlE&t=J^&f*R4)|O@bN~0@XWGI$Y(mPFgT=2m;tp^GF70i9KCx@|DzmU^ z`c*JnIL!nw(gLgpPx-Dql_(_^CHxUNrdx+VJK>_O`vJ5PW3y1zJ9czP#_!Uh@VZZ2 zokblStCSv8ug6@B4PYgBr*5qC-(Kto^Et38=+nJI#G+3kdj$_q3%;(d{|aQ>Z|Nw_ zcHHLn6tFNRDt@i3Op1E4?@N{S((1Zr8`k;CO4ShWUsB-rF7ycXw zie5qu?@XFh<`m<&?V}B>m7=9`3eO$=$;a7^)3_pVrHxZS6h{*DF&RP*?E^fbzZ^!W zEP%dayxwJrqwcwVh4W09#xT#(l_x9(Q$9mg<;AB!%YQk7AM*#lu2_@8(^DI7XsSFX zUDp@i^|Ld`48OkGIL+&*k}Ys=#dafasj$A)uc$VeR3kr_6+O39HH;jfxACtS?3*^{ z|3s7TOtmL~F1zbz=*ls0d1v&rRH9AQ=bU?* zl3GR?Bdw9vLN81X_30hiC{yYEWg&cUI$p`)Oc>vkz!TGhkF*cZLAG)b3uTp-NoTPDSPdrW2fh1F;9MP%xp;Ef zxbd`ohPU}Q?>)D;_|%GjJ}C_67QnXRA4S~!%6ZcYhX+K?vkotXoqcC!nq4K|GwbhO zR=P>qd8?a*)(pHKp&{*ggSv%Uq6vfyOW>V^k0!(Nxz{h`NFz;Pd~5O5I#uVE(<#7e z3i)ZhquxyjVE0u#rdU}VT@ycBSRXJP<9v|A@^B31;fn*S!Pcq6BV=VD`dvU_#jEsc zDRjl94)E~y-;cF7RX}#-&sPA~Slt%E?%N-F2RiNk-Plv5Q@h>V;_^(AMYM^5R{p3H zg<1NS!)h_YT)UuCR=YrFn^H*H+C~2%G=T+>Lpvxeu%T}eixd0a(weg`&p1o9qw_2W zO?KY_G8W39Z|W~0J8!%hH_i&rXV~A;t#`UPc(P&z6G@t`vpRR9-^+6ih@ECFo zW^t=;c9g^}SD5BIE~YtX`coHtA#ZHz-!Iywqmw|Fst z)`PgeH+b$wl_O<0qy!2|onf7Zcim(J04PFJV=C$#>M3YAybX;L1C$_7&<8QYB_MA! zzdIGzQw}WELbTp8dFg)UtPFqC$Z+GTP_ZW7`ogP|L*AwA*7{o;+}FV7xk4w+!<)_F zZzrFp$4dyibR!TWi`I5)hs!JQgu~h0)KPcEJUhS82i=FWDm{sKXL}P(0AMHK|=~E3Z-jF9vzU5Mk?VanswPC^& zzg{QzG*4eVbf9q~Eie&Q_cqDH&~RT7#1JFRAx}oCPtWQdAIILiag{5j%-gZ~>eGBq zb!jf>gWp3b^{)+D)r{yW&SA>3N@0_?eJ+l!tAkhH`&Lc65i!u`L7A-}{2!&qn9UMVuS6N*ZX}PAeGBgV8+QH%Vrx)x9 zk@d<=6D+4jV=X%(zyTJ6kXzGVP#4Y950t$^)w% zB&?8_hV}ZIKmd2G={~*hom1Xly8J9nD9Y<|YHw8Gigo0*6CcMTec>15XGJXQkLmp@ z6N^L4Q~CHV&!u`iu*%GIE+d9OOC5H*y(W!sOLaz8+<$5w74p4vJ-M+|2R?^^%I5Na z@WZ)-YoyHM6_tYbKn%atwLgfTpc5fRbi4r#-4<$N-KQ;tf=;(dWta6_P}Q$|>)cFrY2MP}sVKW~1V_POvlEXFIab%b~0y!7lskI#pd-}6<1H9#Na z1Sa`7X2s_Op70B6dZB$yo%8c_=sifMEGcSocy##iah|S>1oi1DQiAfXMYxxT(a5|P z?fy!yC<_GM*dpAlD$eFWjBl(l(hfP?RNfTB07tHF*#AhBi2t4b|L;ls_~;{-1YbXP z(C4ER^(j2a;o+f^c;QkLeckX)01-F_ooFM7=w^n2=H`Q5IwmCqkq>l<9&P&~eesCO ze@341Wh57>;U4=EvI)rzPSMQnZEE^r)KQf}r2Apy7U{0fjBv zzv_*l(UKhesuyktoA&JOL?yJASg4=eljESLIPT}w=Z=Pz)~AJZ&eYo1*Wo~~+E~RP zcfgt>FzXDB`c~VP1ed zh3~MfF3Vhfkcv%=Tn_3Vt2~^%tV|}y`cFac6qIYG>7VCbEPpKGFsf| z-raWl_lVe{SbOWlhqXlPyj%E#m!;2?jgFw9DtI0*=<{DzN~_kV`4VH$w$@2s1XNb2 zb*X?x+RAZmMZUA-pI2cQ*EX2pL!(YYTUJmLfadVDJzV)dozMt=hdf79j9&9%LJJ_s zGmL&%?yxD%twnG(l{VRHPQQnlsN=W)UbXM_l|1(6K>|+&#n@ZOGgcvx#b~g_&Z!<9 z^$OCFNA9l_1^ev>HE7)CO{^<9iZD>w4EZs}N*jdcnUmRl3d6f+EewKF-2iA%7pb(!pVY%dbLF0Vti zuc)lN!zTv06p(WwHzPD}aP~)<(>D(}oTt&q3mY%5Ac|h@&^ZIj@L++tW$-P+Xo+Zn z?QrgDPD$xzsD>%oVglW`_8KJ2gwZJDm^Klf?G%RDXXEjyadgZcM_*QdYl`S48rSPu zgHn4_>Bvdr<0m~E#*_weI-;vWK4l{diwWfp$6_B;P40SJDSSJ;UNMEJE2UUlTl*#g z=+f0mz_Rp(G1w6`K`@5tNN+3AccK8E$$dILYE$t~_5{z$pdkF3`yS~fQW5!!a25s8 zk#0QC9~@bg196i0&DB)o2oMKh$ZG?boF6sy^<~v>?7~fr?uS&#Py3|91va!@)y$Vh z9ahgLKt{=D0RgI!mdYlixvmy@JgXbf3I%%f>R;Je^Rk0gdoG9_XNoiAa~!(&?~LLb zF&B`1P6FUz%A_`$W|VFkP82%=kDdgzD3Zk|sZE4fYPkU87{se6#I}ys)&PDbdaA$H zV~n@LJ{D$NHgKr=o2jehtHNZ}^KIIwF)}MNA|wc?RNFd#|%$YM9TenZ1yMR zZ1pz$xOv{{ii}~lZ`o|f$ooLM%9d~0L*|1Tc_#kZ`yHBzjyu8IHWfRg^Ywt-fL5(5 z0&Me+ZxOiQ+1o*^mw*FiCU^q2+yY<*sc*DH_jQrIZWA^wrqL+=`txw{CS|zXHk{5C zwY4S&e|6FpDd$nWLUej$PgW>G1my;$+V8_8IgteY`{5+BNCPph@Y zVl}L$iw>F|aw~C9nl1@NVSoTVi@4fu-h9*K>sPFf`UqG*yX}WhtWfG4@zuwOIOmD{ zYqV$WlC0m}0N^raH9MKz2rQuIn7rlN5p)ssYk-KsL-Cu$EJsiB(*hGuB*NcJ^fuX> zzR~P$uEOmvh2CPS0=dM3;Am~G2|!o8vv;-P`of+KaAbysWP>#*K6{GwW-a?iMvKl9KVJbH!fWc+2IQicR+0=csXDRWgjW zCqCcm=GvZQWvhk?+2CFQOT-~8;V81(t|Gb6)-WQw_Iv$zhW8MuqWqGmecL5-9B%HH)7}U#MflXj$~Nv|!0_qvVhmN-IQLX13uu%f&QeF805yx?=CXd)HzP#-!Hc%p z4o)38#pM`_WER$oEyj?-C}n%LCK51Ap1vei0z-9f+nu%=UjUD87Qgf#0uS z69j_lRP&@u@xbKybG8_Gpvi<`MKjuK)LATuA;Z-Yt3NSf7chpGZZlMpu|& zKam|uKi+Ffn|s@nM*trV^#(Md!s2lMoe(B6jxy=kwaPPAFw4$92$k z9j>WJT%Z4{$0TJ&-(sSdligXN32uO%Wg4^?kP%Jv=F9@Yw0S;-kI{IhTP zw&!~8u4Qrhj>Z1+@_q?(tAgvN#YDGOD@;_fhKMy4e8k|lr_DuU9YL*Wnp6g=)!OMe zBLXrhbW*xCODKK012z#ax}bUDeA@QMZXu&wssowpHls^|4ekpunLpB z@+C*6#kBWMA8PzF2;ks8!H6zUkJsMXmt=~I9jS#(zMKL_i2*uFmR7_1yx6H)9=d*u z&7O7z^(6ZMcu^@6WyTPhc&b@DRHXf|>G0ryjEk^!7^Pu)oW|I*B)3{+KKr&JRpLsN zaa=C(#6K-5GYB+pA^6w=lltb`26}l$k)nO8z+eVQj;?Ss{pcJq8H7MC2=6rfT zL&3AtsKozg`2K%=-~X2{YQg^oDBwBcQ0bTlDgSc@IuPkJ%(;+=p1s0x6;%hA|6E}0 zAay`=pfrL$ALJ5Yuu$7p!1wtF*T7(6*vWqe@dwwq2y-nQ>SzD$>Xv>Vn#ux9T5r+1inf+c5>I4I9f=1&uEn z9R-yWp31a*4b6wgPr82FIig%`tnBvY*&~sjtx(eQYnAM)AAXkp;;QMbG33W*gGq~S zHtC-XfORE!=*{$Bj%DS2^#y9hTx$tzJT-!SV+mEB;dGYaHv#6OGNNxYuIGoide(V5 z(Vx}}^)pp{#xrlMnGBx636wnB7nyY64ycOx_T{CeXUo*+akB#J=p_5T#pTU;+>&?o zF4o1Ar^}ocXqp?%++xBP*1SXendZH#mv2@{pRt z@MyS(Y>%M)nF(MbNpL_gw3$$2?A6J?*d@GC7|0t(5 zE2~zogaNqV93f1^b22?yXrvU=f>;w}yVT>scVllOrMwl>~*k-+bC|8Al{qU5`S#K+e;)hNbz=e+R?!g?L{o9LktD#SIbXLo9QRdj)tJ%{QYFtpkB?rSH@u3dQf_;X^%oKFSN)PgYfg3@b#9Ta=? zAb*oO3R)-L=yYO8ferXFH)yv-=?WryvV>^Rl^XL65}%2472rGuSn52ItRe zSR77XxtWZ5#pYueu}^~|>(BSEYD<41L&%_)A*V@cA87bDEjh(7kc%4clhxTEHJ)o< zch^1)_~uqU9wnM=J7T`fTLicWStdDJ;vl}GTf|i=VmG7aF5q>1zhWl3EoxNQ1#MF7a$z@XXfrNXxPUQ#8$T<+6E}K zKPA<5By*@+EO*Cu)0ySIHMM0?)T~zfTX~0oLK_M{*W?X&D z(@POX@~;R?&Kff8#ypo_cj>-POO7khC9n6!8*1h& zOC|MdAjjThl}CXKd5Uk0xb?<9pImm)yLe^SMjE5OXCogR|49yP4U8+lH?P=TGs~<3 z_Vz%2U#P`6^)$n+A^4EBGWkz0#orKDr$j;pWP>}-WVOUy^YuCxu;;o zCpZ&aS{<^}zeg!b%IRHgO9#&R_PzZEYT5ZOQ>MdNZQJPIx=L_R%P-_*M}`3ER?FK;+(uhv z)@3twLIdrQ`flIz7dC40cPe7oeIQpJp3!;mDW=?)#jlXkO~=b!4_s6t?-`VMx!koC zi2W0$A32^8higY)bbS4T_*#KyK4#!7E^hDHOf1#;rQu^j@Rr}EqOn?p5c zOU4vBXT2!@GzKMzOc0VfDR8)YtCzr~p^F{IRcd(y&*GwaKo0;h z?#9zN!ouKlbYQVQ7=H8g53V0v8JjE(jkbxK=Q7+hbPPn9NZa=9eXEzP~ z<>0RuSQ5kaz6PeAukf{T=_V1A{uW(6x3K=M-b=UJ4?9 zxkD`)U^QS>i`yN)q@1c1f#2%P)caPwy^8|R`DA4OU>;$*(hhgG)(`QgXx>fWvwx}W zbg82H#)n;^rv1oh(9zD@A-|44W(XFzDcINPfH0EmN1cP`e~d7wt!nS#u(mY* z$S*I8>zm6>{d`NRk64vwJ$A0VWWMZj;i&*u+)491b9ptnMu6Ey+AXzj-GtrL?0aNO`g>Y=ux3ANQh6`F?H@BR9N6?-4Glt5!3)EzT z(!HGOzC28#_3u5SsWm2_bgLLPbs59e0Ez~k(w0WiD;Z4_;P_g^zA-$o_rY(~wOB!} zCd?s5f8*F09HVBUMqPe}TUQz#hU{wqzfSTzme{4|I`|%~VxwgU@m!*sGDL&XkJ-TT_jql< zz9F0+zz4y9z%2kgxkO+3Id*~dIRH%t%yFYZo+tgb?+|r0+_N+o<73jSloI(`+X*jU zFYsh0wSmepueJvvt}dHX?d{EA>eUvhxMzv9S<>WHF=Ei+|g@VtfiGT6DM~hYzrsfPZ(opg^3+Rx*%a+b3mRvNHE6*ow6% zGcQ1>>_GhNw!ICO2NH4E7rFE6c>dd+WL$yg zg5dP~*lk?oUk>EfEAG@Q8mfQ3<^h7rzcYthBG-5ANVqH%xf zF_1gvV2B$X3dkcpP(Vsf(_U%=APcxci;R_ztC?7l{%Kbcj`Bkl94OF5`-JG~%U&pt zxgIi7*%^>OKRTUY&ag9RH6I+aQ_ugFNOJWq5iFl+>O3d)Eh(8iW3m(cE!{D(rY>b0 z1+rtFqj;f&QC!{7 zM7Ye@kjxII=us`%CRCketqhJFBc+r(VMkb$cDJjXvKd=@JB8++d1KEf&H)*(n8i_K zD=R{kFkEEF%F{ml1xW&+Fn_8jvIl%teoGOE98maHJ5URnL`U$8omRklDK`>CYL88_ zjw6gc8`+l_ex>)sYbx<+62_cX1J9D9Dy(431w;8?q{g$d*6s}^E|Kol=KowMJM1}mI4APU zq&(NHG-D;i%WSwPaqiY{oN>yJ5o|E}Whqm`@5G66o^_+e+qs}a*@n0!=fUI^ zM2MVa@xrjQx0AbkvSju8O6t^83QqXWVrKeM4r^GehU}2Av?7v#3S~C|U9Tf*Sb95m zV1i*q&rt-qpvliV*-cG$d5we^{tZChFjQ-U@C4wFKlLZ+Lv?v@IN39m|DaU`ZRc%? zw$5a>@I6?6v%GNpU}TH_`KtU*r9{+mkA27WmF}nL8*f|3HqAYl>M`;Tyt4&s7G*=d zcekrO7FQN(offdcYs~Y2`4f@w6a^FuCy9ajf0X(z1RdRm=3#TWqqx{tDU1AI9=4o2 zQh5M~q)GqmQS>dcHbDy9wfzq5~*cALbV@#?e%uZp=5py>8BX6*hfn;yBMnc&rp^Y#M+wNiz z_T_+d3v{%qDIf4oh;b2If!zh3+!j|a&V0c5MoPx_ zcQf&q$s{9O#a=Y~7%*fX_NK?LyrGLvt~H3oAq5#h6W}PMY&8)n1?O_0>3%AOTlcr| zOk|2RX7SSNBJmTwyo}Ul{y?_MeJ||FL&^6zypetiPx&V=w@P$B)E9rsNG7i@MUC`kG;1oLA1TX)??}67^e*aRs$P5nJZn*J4^S zC@R+c;L}?|v8EH$pRwF#A5uW4L!Q#Da8q#4?#L@Mm5KLh^_k8A#fxQk%Y?j?O;c{_pFEbWNR$rUiNZHEF(PcLO%9#U02 z4ac;KN|Qn?CP922F%qPZJH-Icu$HbEt$nLxMCwmu(Ik|25oUuIz1?;?VJ1bw@?p_N zLXk{;P)Cnx;8-=%;CV`)fkbhF4#>GfZmElc|4^7VnqcSAClf2c@M!$iiVi4sA#6M| zhf}56gkKr7>KIF^gVV@h0u!{w2)r%dN|6H`elczQ&9J?YeuwH^@25onkFUn7AW!bc z{P@IIVsbBP<6DJj;MHyQ>+tsA;nhU>l~yPGY_xK0C4q(=KgqcyE_#+Muqo_q=y zYY^kXm2fra%F>M4B?0*%hP0Hb$!JA}K>+3~yT4*b>=`}j`X}dp^VKO&eXN5iDKhTV zwRr8>JOo74(_?j;l-8j`Cg=rzPb*oGyppp_MK@#1ASk)T6@=KqdG^KFEdsC8e6UL3 z4JW0cT76i~ypIv|WNIWf6WnZ9QI+RzW|UlEZ_I649oMPz?b4$ozYDOZWHW=TMk#=a zfB6rRK!Xu_Z$ox*>@;rh7sM~8jaOjWMUAq#VC8TGr2Gw#{b>oiBs!G(&iG^qRREkW z<{|g#RLcNx`DjEA{++h5=LvaUTifBLi|>;q$>XU`!LJ%_&K){IN{se3f0y(;a~Wd1 z^c3}wKr>kqyRl(-;NGG4&OTVLb^%Ul;f;(9qb!Jh;qio>1QZZ^hjIZHEiE6T@096W zKOvo~K|U~lYBiad*l#8VU2uDD7M|h7g?H(XSe6Z2n9`{cbwA+n{s31U$8D4ATTB)~ z696BtaCGRPTEqA;=Apa2<5vz)+86pqHvV#a#&IZq^yx=q#P$@zco7IBfL;$D=1}~! zvIlh71b>b%Z5mVbUUml?^`1jWIxf6GgSmI&Ss34qV1E%mmb$=aE;p6`kIL}%I4>LZ z;qxK+Hit7SHDd9Y-93(LRX~O(=blgeM%?(xj-PF&ri*?g=H@EL>$!m`Iw*(ZQv0$2 zGi>koL9ZUaxKJ)sb2w$d9ClENV-20RyYzs=OT++VLd_aOf#@72O6t-}j9?eBxv?-l zw>1|~JCc*K{`s&*d*{{y2|bW?<-pC=)5806>s;!yVWJ#uH+6on`3_ujI1}Rnust(2 z1psGv7zbR0>o+PZi38BJva;hJ@X)!oKD)d+KteZ(?JENy?P)$SQ{cRN2Hw~U6A$BP z115Jtj`#~)-xmOiqUh!U-YdcNxMK+uwVRt^j}e zlfg>KWy`>N=E}=G!hL+Kn_NzICan`5r6T z_Nzz%VIFsB;@k4-40UaT1?q8Pg8>~kK%L_Kz#b4gS1UOQ32~)$wSvy*@-V(4?qBr= zrX}h*Z9f{xw!S>lzuE}V4Q&uyi`_j3~?uM|;i=*=nTMKqMl)9m4Q^Fq0 zLxFoLmifNI?=87V_jF^#V0 z$(n0sOVRn?Lbnuo;pw){SFfp%EJh6uo%tFR7UZG%Vqo`dOe(Y1@vL1(;4a%u>N0f9 z)V^VB9YvZC20H4H52NfsG3*F0S>nAz2%J$-MyWme_>(j}4l}3n+xYC&ij6nz_ihHN zX-G>~6kE!wauuRT=&d}zqZ;c{tC_WbIf`~RbP?bCC(5u!_e+YGi>LH0E3lD5o(N0l zS;I^3hORijm8`nD7*#2;^L&mQJGi#9X{T6|yBAVS^cfmOjhEkDvAxaVSLtl>;sE(j zcie;5>)G0F=sRB%g8!rBv#xT@c0>WQu7E^i>)0c0?%2G7KW-22#H{dqhyg}fj66)u zgsk{FO@q4wR&!A(|ALUjb-zm-tMfh!3Hn1R>3Mj783cF{Xc&SO0WZEfPknKr{A23! z5SiP2!QHQvBh*FTNVrwD=)wVBJZ7nT!!pAg;4xvAtlW+aIsWk-vc5%@o_Le-;>FP` zuD!qRPeDboS=Ij}E|`8PN@{KKqu-nR-KG}b`!8NkAGJ3l`Xi1?J}L4m_O#2XPt3FT zj(ya0Vn^+LTVX9oYxTU$lQWru7UK+QyvdUxcSP&7lu_%zno%Y7NR z^mYzIkn6R3*vh1i>>0e*J^ww=by`3ro%gb>?cpC${Ny)BzqPtS-2NI~3mDmUuEjR3H(j0$@6S_;JMlHL1iSFrz zkJpBn&CSHBYreDFH0tv#B-n#PH$iEYUJCuUiHB0mApBpO?%0=zp8Q}xzj5+Z$11kV zofO=1Ds8$+K&Ybdz~)B3sg0205?g4mA9g+mSjF9#fT>{#up(rGcOW?@`dpu zVzSd=_g07JaOY=Sl>sX}sm#+pAuUqfhCQMxwfu&eQ z@oUvT9CPmY*--L?3>!^h&E=v2D;vjh2_nYpiSzmG%aRAa?S=pWBI|{3nN>Bk{bioHr~3J zRhF^y^5DReRZ^vLdJ+Be#hclKjk-x$hXFMFd`=461nzdJ^C2t6gD35)7_(&bs_A}a}t zyRz%p^3vfw#XwqPu4=lNn4D%j$^xQzwix~s13JlMKn#uo_d}yXo@hUs|1j)v=A$9j zJ1U{w_Vh*BTZiriCLG}cVdSq2dJNuRcIWmxe%NeVrl9D&)}*UU`SI90tx9(TphuU; zYmr{6#&-P=NKa{)DEY1Ki%Y?JB_o1?KcG2_=a*CtuF6=;{QSW2UgnH>lAD#Gbv4C= z0wS2*s&}#q{C5e&zZ`eLK$t?pMk7+VZpb;I*J4nm=;S?itN-;8+fhfmJMx3rc>_5W z^Xnr=Co6-JBqg?B0IM6A*Mfy+0D3C$(o#1$@5ag0R-HT8db}+E`KrawpKY$a4}5HU zv&1G{8~Jy#qW=$5Zypcj`$rFtBvI04$yy;hCHpp&BE*DHwyBV1vhNI2WZyz4+sKlv zQ`xePeL|LOlNpSC8^ersFf*U$?)!S4=lA=U8W;CLRGcCs#;0!_YUj`Fqd!?>?QqMoW-Imi+nsyP4)8R$VHhvP!p zLE-iZ+_^iunEFSd&i~FZ1_%OlJ`w+o{a?(W_`3E7P#-9=jrA`OAF#vlW@3J$&NQU` zABg_q4wtB^TASuBSl<29O6mURw^SCOJP4%cpr&`6;hUOHjaP)uEJ8vWF9V2dX1IaGdUHaVdnvo0iN_4Ps&XSp)o8KX66ipM-*L73vvGxc- zH8FtY>yfue5AvO@GIC+C&r?rb36oict!Wi_2+QCxfA5Vu--p~ZrL%52W*NjD zZOK|PIGm<5hdg10gHk)YTW?ZwC$h_)1zLCF#7ZMYn=-DPpSHo@0o~rTvKcvW=^iY( zUyqPRWz&6w3@*>3Oo{~oS&V21a4VYtocGbc3`78*o}qg52=mt@N9|`>#yOCo5nGj- zY!t{nYV-ytJdS@a{`9SAg45Rn zeI?*MD>>}&hNR>AfsI+NFgF`31dQjBO^Hnka(wvt<+iA+XsX`BdEfW%K;*%|#ozuG^R{vnfNA`~{r8;%; z6+O1*sl#geEtKan&!M6;bv({eejWKupiWf{tM>|)f8p(FNy`*NnMfDIn!p*EhtSRD z9@A)w7%wK&76oK;?Huod^}+K(1gg|#S|J7za4bcYe)ea6^hQje${p$unfRE(F@vNd z6+NBFRH#+Wzp#p&L3Yf3kdkBlWB+OrD~EdA#jw5~;ghNz6GX&}i~B@?ZKGIXr!l-0 zm$kX{yYk>cJp<}>s7Dc*!8rQ_|I$g7wue*grZCAjLu-RCXfX#89bS1M9URRwZ?NREO{>UiyCYQmp({02c4v~Hi#tAS}lidwmoM4{z%bNXtun0H^4=~P_Vmp z?3O;v=VafDpEXVOpX@ZUVP72_QFj!q-mTcPzQ!p0Ea zyGz=Jt`IG8NR0gCIS!t=gP1D60XrkhE;}`3misC6>`M#sq)QZc4{qw2eZ)kwppWnyP3zAyE{!tkfQX~nkit6epHo_j zjO4SSJVm&;+{VL1Y#Q=rhBmy}t}HC~%#qWOwO*eiNuL_C!Y^QFJRtibFJ_5)uoXUfNohh zRt0@#k6#5nT1>Hwl=Zcq4(M8GWAIZ3b4yx31<=#aOg(e4G{xaai8z(zqi)xf$CWB# z{D;ajl{?Y{P3t+u;(~>ah3iS&xopP1BZ<#8N7mER4CgFn`g-v*O=I*CD&Qkyv8E%@ zuD_HJS0>?1!{}EiVYm>`FtQCB2Up8?azT>0JGI-@#`c% zg7Cn#hBdk7NG}gM`Rve6#hxZe{vb7D09v9Y?g)e9;x%&4}p2iQw;0CiYj`Sxz_Zb4;>jIadBXOS>JTMbg&W%*}-AXIlsK*liS4L%gtyLc;9#CQ&ODwEo1p7A8;?^~{68A~q5FaV~EZ7%mx2QG1BstD3}){A|(Y zM8uDScY7ZEfjyYcV7UlCRA8F9(Is8rn2kbLTUnFzx`HRr-0?-L0C_UnliD8YQ)VO9 z+I#QNo&UE4SIkPc`4i`3cPHL%A84$o# z(M?|2N7j&eIuWteR?hVqM?%R}f2nu~V~`@0tzBKHsa}=x!v5tlOf*%}e8Dm<@RN@E zyOf=h_)cs@DFm6)?*zm3R%Tm$$=h$ienQC?}g=@-Ih?q)w*~FSm zl}5J;zQpbtub54%8FSzF&#$sAKlH+qxjK`4mz+*+05x+JKFrqj!{S5};Wr~5J)7gz z;h~5QTEO23WZQnBH;{%M4%NCjBUyO~=nls(djk|9k--VsFq@Tw`w|2L{5vg?REbgaX&~N(L}Q#?_1eiv+(0+9NT71M*KP%=&GO5~+F4Cs=KEhKvc& zi8p+f0x55?S7@0i#LgxY^NZNWs)Iq`Oo4-gd>8OK9zuLrxyn59 zBYhv;Xxd~AL>@GK3fPF}PtMfRRWOA2rv|!}uwsSsIvO+mjcS1M0bz&i-l7Qx`Dyha zk9nQ1D%@d+P;<*}iw?5%+dOmOyIGULqHX;}9^O53PV_D&xa{$V?qY&Y7A+p&73`<|9FRJ~n@z|-jgXzgvDz{W zObYI=OI^SF;4s`fU3T9{;M5t|M+>6L*>h`SrM(v-t70UzpU%sZf(k?3#xIx`8|$M3 z(n%$Hba#fWJ2191WC0Qn#6xFd{sWzY-y%n~EP#24$QtpUa$Ek6R=zjT^~{mAJavlr ze)I?NhVW_o=nd0;nKa1RTW2>NZP;gAr7T>3_2^v&%4wV132I9q5Vxc1uih&pvjVG3lb+t7_xDyvCek+szD3&C@E(A1S9Iq(s-@~Z z^=#~~)?OaZ0BG?;gf)APsSVbDCdJ*GsO_K#AOQ4QE`gTh*pMU-Qe;{6GJ68B>5SO(j7y}FQ(GeA4+|JOyU_MQ**}VvJtoGHlqx9D5c_Y1pQaoST=+>0eJnVKH z`}2WH%Sf6z4(#f}0 zJ@(2xi!te!D1^8^cbIqchl-3(Pf_|Pz&LZP0OK|(>Mm*$;wI0w%kiUV=nzFKU`{0- zF75So2ChWy1`;S2qC3Hn>Y3rqPUV<66caVAXGUyPQ-49@jD{W=5#>OYXuXPHwxxP> zAJKkb%3TM((2>S}u?me3dzNKi45=OOxOlH-r?vJ?K#XVwl~oCOPxU7;(;jx_{8f$h zs6O1Gb0F#0Pi1m;ZEX}K@6XorI+rT933?6QMUIr;;5-Lwdb%_f(|!I|p{l9pCEM|& zXdb~!1RyvI&2~NR;rI&~mGAy=mV|dcB2pWsZ50klEuKsRIzPtUAAKFmtC!JH?^*kF z$3s3tw&5w@auy0WCF-e0`}XWp51XL{;DbY0<9OJi7k;q3WHV<@s8%R@+r!j*==oQu zp|3FsU_b!kqqtYB7BdBH8$Da$M3*DJy7yg%k4roy;d}|m35XwRA^^eC*xeYscfY!( z*)6Fu&041iw(Ib}u|4#z^9l;y=ODFEqsKE%u0Rz@{Jg7+tYY*wvUU(o;R7S)oZ`bI z;C3IW<(62KtRIZ7a+hzTkv^Uor7bwKHgQ}G*qz#cDcu&!36NJ@KO=Jf&L7i~{)*Zk z{rpdci>P+L6q@g^!e2 zdRt@09Jf$>^2TDDr@O_q*+2|in95nhzTwQfh4h~NDWBV7%==#X(T9-<>?_vWHQ#t}DnCNWk zw%*|K$tY6$)xd8hCi;X7EO2S9xfW{Mg$RGq=FCz`8d3X5iUHk9dMeHyoWnO#yto1Q zW>7?<{9@JZay2lqp9XAH^*=h@447%m5BV2+ zYq6Vq{l2M~AM1s(eAbh(SgSx&VJ{DHEGpG$@d2=osGS2u>Ap1E~ zX-Yun0fDnQh+;N}X_rqRoRrlTre>Ox9WwldcqzgOyG8-s!Y<^z()kyKGwXH&6b@`u z?e+wbWjwNbsoLObfOEEeiEhQx5LeimHUX>iaO}xE-oUPfa}F`T(rF#D2i`!RaYj!n zD=U+&U91E+c)6`!<-V@lCtG(5X9`#hTi+>5`P!jdmhZ_DFkWJ$H*G-AORh&y5kq-? zrgj_FmdD9FsVio~ezMGZ6Pk-I%N@A>@JEPOpK{Fwf?QudewvcAAk@jO@~%c7(D2Oy ztu<(rA>m+pEJWo9Mh_D<3d7i)Cxhd(Z_x}#v?XYs6lmMfJAZVwIK~#Sz!|FzOq52L z1A)ARcSmyRbB8orG7K=4MKwd+LgqZU1DobwXIjW*nbR(H`ZyI$Yr4u^3%|cB+2hAw z!X~lvpj5xRmUr4mP0WA1@qzM@YXupA=#o29-q|Y_`o$z&wO8 zQ_W^GyCo5h1Uzg3O>&vD)mXr64CROY2}bvv0m^1nBs>J=ie`f&=235hk)1|}&KUuy zkSiauEw+--X*E#P_%6#h%OQjJk2U0iHOcm+y_((yU_Phrf1svCui6H`W1GH_!!I*y z-Dl0Ea!Tcl`0Ew3Gpdg4dP}e{-CpT0VfSzFR-DxlpGmS%yOkq6t*X}bpwTI1REzkj zcKm+_-`KPf%1;)7B6=HDi$8(L)QKf5I?xt1A9=UJgx+}`E*|wQwE#llHF}te#Gvs= z-3kdzJCE3h0RP=Z9*^!6y4Fe#=mh5A!Y=|bkn;2LabQ75YUNx!APG?y;={t#<`Jh> z!vyp2CRrTn_@2D08Ow~Lj`h2m>W+2s0a{&%=K7fhi6_W!={bttmUY1B3hT*d8^^Ye zP~33IajfdNd*1+Td}{>P+9W)@MQWK%rb_6=Ae<1B_@_W&e%a_tpwB)B1<}6zbGZ4+ z@h!l?wbg-46fyY;D=cySzK-U55SdXzUg+lIm{%&<*B_}ZcbVJCgZ@c>=5ZzP&tnA z3tX2O(|pU3d^~UYmLY0oXHC6`H63pDn@be##HqyWN)vdf5yuxH7uV(oD*Qt4jXoNy z+^Vb<(F|7qaBC~IJi+S^)e#2mrDwO|?io(G=od>oDW82=_Tpup;1+-PBy0;Ny;h(v zF5T)FSgId(Eezn>e_*;Gf6MpNsHMk>@JH8=?Wi6o5$754r!48nE^st%-3T$u8FS=T zR&>kSIR zi?WYMTs)tjzLv5!lH=$U;;e0KzL_fRd2VE`z5U?P2?LI@LXB3to19CgAM8+we;Mq0 zChK`CQ(!VA886;L_?AgBCu0^4A~!v%d^zMFLpb0zWWS0z*=7XUr&~o?nW0SHo!Hj% za`y`r;(w~t!fo=ydCyisLUYw^ORk@Iud&3$=h@xW1Kd%Q>{Ni2cB$*`a@X+FIJvyI zkP_gOXveRFx|NI*$j>;bk}8qFsa8Y~U~o~(=g^%5UbqI;maNfc2PX4GRl*Tvt18;k zl;W)<_=~yZ3+uqd!V&mw;HwO-a6@^PNxYSn*3vk!QzSdG&i8^wxm}`uld*B`eszNH z9}SgIlsil*V6%MEg7eH?uub)Zhs9QimM;z$q!ng~NWp9+sb~Z_pRabr=Sboj%%@b< zKq*7K6-A{gf%S<0&ADjtPE1d;Xb90cepR`^$w^hYU)M50bE{hC^Q(%OP3CwyLyhiX zTx-tQD>Ej;-u_!g10nRY>-xdJ9@cWlgGE(VXt~ zffag*_$Rn2%xRr9wv`|FvjEPe+0+bmo@7lOl_+fx0IO<~GJ%eG)CsH(MgC3LHJWKe zn|k_}%z5D}&W#fveP!>!WyaqFas6X8<^4bBn_svH?mT+&LVKb{cuP_=`%j;iY;l7_ z#W-q9ItW&*_M)t*$F<;HqjuwD&BXUQJh-9cP{lr!BPj!CUg3rROV7|!<_~d%%HjGt zJYVNO#D-m~Nt(QT!~dO)z=(n5>s?0X-sekMX`ujQIQm|p^avxCb6q1=PHupKqOXl3|X(8P=iU(z5-WD#VnvO^xLz|P!0y?n%&tt zI+DTXqMjfm2%!J?D)`;GT*Q4!zfH}-dkona!kJ8cRNGrsx#_;KncsA*g?^^-b?EXO zZ(mqnW_2?nU?8BffON(1Q|+ti)R67++TLd`K1_-84!Rq!^~%rh=smyL_~E26(j zZsIeb60it62Y#q93CaQ4&d=ZQtY z@dSMu`DCI02O##KimsvNfSUC!J%us!AE9>p-Ro?JEetlK*eGIxzDMA@%Q@|K?ZZ?SeiEO@}1VgAejq@=xN}*3uXV zb&!ql8WjkPX8~P%90L3dkBr;cWPpx)<;>J{F7)j$kQ2(?IwypY+kSLzvR8Bk4O!Xo zIedKWGpCw};G2^R_zdBd-BTLR7t%2GfX^C3yc3Dj(rN+IeL+8kA^^!1u$s#P7go<9 zhO9sz-)n(25s|{c9!IqO`wlzk-ou_#h@rVV7pfiXrx5b_tB9felQLaiNt~^md-7_WT&llSzU$M~kjMfF_H``HsK^Et z~JobN4JAnofTq2M0e*J_C16JS5on(0&rW<7|eba%+W!b#l zYf?tVa<7i?WH41H=2HQ*Ulpoxs_hpJH_ve%ur53;x9eTCnY(e= z$o{qBlZ5?m1r~ER{4J@or53`s&#q|gU^P=sYd7yL8ElV3k4W^;#gywoSftu@NqCX| zX@?kyr=4lj-L|Z|ISELwNnK)queSM(DZyrdMEwu+)`}}hjYOW)x&JQW+Jn@G-5qn` z@2e>9AB}gf=5p;2G&4_f%YNA~ zQnTjxQy=skb+L~3tin4F(E?oV0jcU>jTj1+@^;sfr^A4OY5hkM^isrZF8UnJXtv+u z5(6^SA#LBLBP@uO(qy*tt4*Nq` zs@aR8IZL{pk+Hl?diw1ncR&X5x0Gh5-1c1T^bOKvZxxSU80zSF3%!T(^)nbk zbdE8~o5jSUJCmtm!E3^G!U?nsrPMTxF!Rz+>ZPykWFB*B6F7pwMHCWx2tz%xNW3Qlj^t861n+r#mxjeWj|)H8+hpgCJ7Q%35|P#|LmWfY9o9=Q7x6V`2w~ ziOV&EPfJhdTzeQ%|67EeRqeH}ooklugMtycA%MKElyLP|`SUAoL^Y)-&r<9@TKnoN zi$&05<(Y=vK{W$|BY@1^KJJS~@>{&Eb!m?{95`9MV7P)Ya5U$Nfb?@v9erhT)KsHJ;mRlCQoTK(b~asv90t93mD8<~jDVwQjq+b;$I3Qfe_uYm+vE z+a=Q7#>m1TYB;tBQDgjhKAz*87CWX33qJ2x4&}76)%wjRpq~6rDRy%tSpqfWyp~t-en8b8CC4p(pFumsj<+1{V~YLUE}_Y zZAaP-VP^m>Gt?I1%8Gl%H?577X+|@&A)if7AWxMFjtv zN6A{)^_c8)`Z=NV$_xLvFsvVpEW&$t_E!-=GUyLf^zINFmA^AfH+4WTvM#My$7L)d zakt;{ePpl5Zv}xQ)rz8xmA*}6KS0J^Uy^fmm9#EBx;E$g;9-%-fW+)>$DA(HnH;W_ zUD`2vuKgQO!UL6NieQq<)=F{~z+) zlT{G;?ho3)utbBLO0O=Szm5M7RB5p9-w@qFTA~L4x##nP%x?w~D2YW2T6E>CS`C0x z&~fjtLIb-D`laS>QcD{^Srds2Bde=_lSh-#ng4;T<3M#0{CbCbd--R8Nw%#2P5d81 zj44TVs01K^z$>5&_Gm;2fDIf)PlTKe&dH;n?g3j}f&iQSaqX|uul*k1df&V`>on#h zoG9zzwQBMHQr;cFgH6zCTDk0Zf%*Vw``6GbXd<(Oh%CZ}3v9NZQwXk0|J=+P>Jxah z%hIet9%?t8(J#RTu3xJkLQ}eeyQ>BHRQYbf6ghlk%D$Hw{<)_B!9hK2!)Dh)Ip?E$ z{xy9}$^y%cYN2QPVLtGzLY!DsBAhbS31iwRuD2bM8NTKy&di_WO4Rl(zM@vXp7Ady z)=tl=pwVQ4zUQ=pBr%hdpOWQcHsDZtq1Vkir`n&Rj)`wZH|1VCh0jw3nAueTP$>XH|r3zGFC!?l~MQCR}e0pSHU>V$C{v z>-)tYr#?99{3um({L)Z(DxHoT#7@ju&JeUV@6{BcijV}4&ZFa;)u^SmFsBR6&iHy6 zD!5rp|BOIe+V)P)9`PB$sPP|>Ub7UD+zcR9;C4fW#JoMPBX#ZR)DPqHpF~&}FC11) zwViu-QsCBLP;aDA-B@q?13FOKFzTSA2eeBg5Ox|c8Y%oFqFp~sb6q`vCi)F-NzaGN zlH=zAO>)aTtWmtfI+}Wy9AXDMVL`Fz^YoRq@dpJi3uu&`` z80`JUG=F;Dd?U3R5DNUD=i}#Q5*ec ziDpGcbv1>Wn)nsDG$!y>)&lmgTGqh%YDWL~y!5@B{nFhM-3{{oY%>;3<`;os6msv= zXIoZyOVsr5JI}eA9(4%~5W-;lsd!tZ=^$CLL&&i{P%2;6zQXu}xZHY;fkl5ulDx>` zbIBXUfN*i)RVk(E8NGlr;XE8f#m_-etVx7f_s#ZX|NKZk}z6Z0yStyvfgPuy^4sw zNf-xjt7lf*SzFf|6J%S28D~o7pN1&}>M_^^k4;@?__8~Zmk`cdf0<1t!o-SqFUi$< zsk~EygyT@rvb94s4+Oh^H*y?wbA-N_Vitk^_EgE?jq5Wv1*WVOm-}_rE2dwWZ{mWalnW$Oucr47>SOM%E^)}ithW?a zESJ3gbtuqN=x_2HA`~44yD+733z#eh5r9jQd18DKthVrbSS4tjdQT}E#gtW1KPM*`b8KRxaZCw zpVch~J+C1fB4ZjeVm$-hz!ns_!jm!ny~~!4GG!GTf2&mp~~(%@qm`4$+mLk z$?x>`r$guq|GUT0NrD0d&40=wU z)mcc0PdB2(+Ng{gVKt_dUKh9VfGa(1Kr>O}_P51U&(McU)JKY35AX5V1_bN{Ad=$y zU+2Pg#lD(ndj(I*w~M(QyD*?De!$-4q*v7r;kWjSDNZD|QXMhWJ5fqqIeB3=IcoED zRfW5z8d;~au?sbO(DbeKf~`vyp-VIQ0#SKel;=DFDx2PsR&u|yr)whbdWquU%Yus3 z@t~%?<=QQ`2J;%XBi~XCr;(Z6K|sBwn`W9}Kvjz$P4lg^`C5Z;wpjsqujL8r4tqACq?fb%q)1uX;viM`x*t7^&YvXyOqtP zCoZBmHQzFpu`uScq+y=@X!9=RiI^LWG>4E&R(PKyBJ|3NU zG+&`dQ+C>0nJDr-BpwI_62UlujALk%qhsMgbLfjW8|y&WQ%Yn;v}|&?riRx-xt841 zn$_CRnvEZB>9}wHPz{&8SXEF&kg6To&+rGTZ0q%dHI%iJ+NfpjeZq~*#pP;VHPvFB-GcpWkShcE-k*C*@6W^FX|M(;A}>MTM0mZHsYc1 zw^K#mY*zaQ%epI*&9;-+dhTlOE=3#fy(>yvGW^#(G{{s!O06}}Q^S4-^!v==MVb+% z(SqkZZ~9WPAmCRxS^<6*lzhUZ3BLwlxbZmVyZ>j>--)+r z$vd=ekc3%60z;?dJ8=M{@ro5X90u+R2}PWnJ$)YFUMm5iS{#U77&^-OALyP3bmuSA zPwoFeZvYmn>WyIidp68^So4J>`YIFt?)pRKd<=vZLPK;h{p3B+Vp`QY$^)9&x&Mfs z(CNGW05=0M*4V+K(12L^>A!Q0aaxl3+i|mSiQT)$OvyHW0`Jcu9>sxgUQ+E{h42bS zqjb{loEh`UvH!xVx`Iv0E2P~yi!`3{qV--qYYLhTZ&=Lpyp4oH)*hYI&{Y*U;1wq( zFfkA!z+**GuPPj!3tmAPPd5&q;KJw-1d;&}(r5%D_{}v_aHjBF+8vJklWL@74Df5- zIc+T%sMVCbj!6HvT14BaP0bumpFGur`8WK{fDv$Sm2+$Xxw8vmc1U}FS}+vxap>?U z9o|$OTbLdglI8d0r8hGx`Ik`X*bp`dUje&@MesU_12C-{qunH%FSiWhTna>c7oM?Qt&A6-L|?@f<0{yR3d$zQ%zV70?&&O z7j@#2ELqozIn9yqP1L8xLEyk9JWw;BFuVNU7Ovzs3Ql=Z@6KzI+8}dNA^44|=>8hx zf~0uKKVDe>8SNM9W02gL+^=_-f<%*4d;G(Lmvc#V?d9NPPO7>!hSdNV#I`nT`RCeC zppmjkm=~j?V|del4kt&+H><$BTuORUnz#GQ<(f5rD_o1c@>C$M?1`gY<$^fZWqiF| zZgbD#h^LE2!*K_@_g`3 zoTpXQy!&ym!av{!Fp<0z_rZOMF5kR}Y44Y3qHeWMuvHS)Ev@9c(c#x;mSxpB<<{VO zl-r$a;+d~9Pd!}z0lUt#b>%Nf=gwMF==Lc9aaf zGNmSgKp5djt+xqL=_Ty zxGEsS6!)Y2fiG94vo~A41%IYw%JB09r<65ITQCr|N;8zyssOk?V*SHm_bf`>^Wxu+ zrZUf}g!|jW1itR}1c&@iZzOt;UHoI)^r0id=hbf}Xf>Bf4fpHj<~MEm_HAt|YM4@3 zuI#=DkkE@7d-- z5L*RW$K1pwYAQ9lg)WaPRr1PQ?5_$$+@;(||4Ovuj&*kopG3@w48N{YT#{Rl-_OYb z87XF^?^{}iSz;j&s^IUU{DSFGi(u_WmoVf+$rfi+m>d9KZ!@mY{G;2EXSG3rXSxs| zGz`j5dpM48O$?a_Z!}Z|23XVc;98;Ne9SC(GJduyCFrw@r6-Y_kMT*Uq`colsDNzi zYG7acw2FHkUpec7&nwKI9d)(o#qEzAc^|;1eQWVvDAm`wOF=r7~Jy9db|mhi%-NV&eZXh0Pk@f4xgzo%ths>gm|&1#_9AYQ304wU^pY zUK|YS8i!KGzxG*JO__Y1NRlD|zas3alciXByYlH!<+zpI^63Oq1h5n%pfJA?w{0Sy%THj}-8gX_zpDja0b5lg% zxmTRqjp#lSaCu?v@_Ofl|8~whbwQ)^_^H)jT+y5~FnOh`RgS_MuGr$yH6x>J^$AN; z`|8T~s?fO+G?FuvJ)lL)ufMhe$$|g8QK;(;|7O%577uBTx3lnoc5c-Z@H-S#L>6q7 zz_*(yHNV++STjLsMfxBLY!S|DnYVCM!>(9Ooa5q4rKazn=70ORJ^tl`F(?Z*Aclkz zu>G{pJrtYdEcqe7CBi0jX?q7CG2BOdKWRH}vgGEJiyB48`&HbRv2jRjn_YAwKAk9( z>RYSZ9E`h^UPDDxeVIun6T2o2+}*y5QpGK_+q9iC5R{0)%G{V8hCJn=I$-qNj> zYtgs=6HOjKkC!$Pe@71HP@T{OJE2BufBx-20Ir!1?+(@Xdhx_0Mf=Eoj#aw#ygm2x zsi$2Z<0kAc4PcWT5A?z7mOZy*Z7)ST`RHqe$Xu(F5W!p z-g%tjg~PMzw`IP$;d2CAbEP{I_L?&)s~c7eCMKNlt!LkeUZ_dZ-i|bX>7UUvesb}{ zVkivuKzEZyc$=5(K|I>kem64jpBQlSK^yO;S6;sNDX+aU_`nU^cS-N^O2Qufb+C47 zgyiw>>tzeC?rJFnN3_#mD%7|mV#72};r)4`JH2~XDSz`2JyjRt&m8=F;k29fsr;4^ ze;2S?ftp?;bvH=FzhlYhIlA*j`5P)sBp~K%!{|;pAeh4bU;I#op3amLje^zQWnx+l zSxG>oN}N#Ry~=!L(Nk?J32E01IQrjQ!}q>U*hx|cHsK5dN`DSONC0_9=$c`ryhd3| zwZ4bz-rl207R|IF)Cgn?R6L>DsWUkS&8G>bgv`pK0R|vJNQwTjRrtZNHY{z`LPf7# zNaDv>tK@@IH8T=T6Tb0VXV$W`TLN4{6|-FO)-7XiUw(Tp$twQxmuc<~Hm^}3lCbi+ zHI)40y7C9^2jDoUVAvF*7Wr28qQV*R&?&0X79y)%=4ntN`pnY@>? zliiHH-lc#1lL=O^_oR3O=M^G;6co_%D_2Q;K%zuGOOtaR+|!Rtz-GY$BOX4?_*)Yv=<{Z=3{LexLPZJGyl_i;`x4`S)+D`HbZLbT&3@a?D3*j7D=&CT)bhBbGF)wdhPWw zv3^;>&GgJr->@VsJ_JgH;s|C`#}Y=z3|FQVaJYH~688D%g<(oz!!sO|Q>d?#a3P9# zCwdaob>z_jJ{h>BPtk!h0}hKWeKU;kNk2|5e(DV@jeGx(^)!D-JkiDD+B5m$S{ZSb zn$M2XN`2#oz7qKqSx^g9k1+wsA8y#lMr$!U3vzho`$ z>gU*m#@wEVPXM*}!=lFq`C(7?c~AOvg^c`zuM|(Oon41;$B!}X98$tE(o$b@IJ&!{ z1CC~zS6Brxx~Tv-YhBPQ15gRV5}fZry$&oB%ue&AsvLVG+OIOM2G&qz7z8`egrD#m zZHci|9Pz=3w#u5&sk-6XmJ_Qsdd!_lTT#uzUtk#)Ycgpwx#DIQDqg=OIP7}HyBAEz zk(3VRyY!%JajRgs$1lA1j)E?A z=jnoS*bvdD5iatRB@3)w$^14pfy&^^)=%TNKycl- z3*nmNgDzRKP8@e`h<4o$CL zDXKewDwEhvMeLojf7_hp9`wx^(AX_7Gm=56@Cz9VB zG8*XplRPT5&xQfK@@Y-2V@2wX!Tl}$7GFwB(_fe{zxF^WHQ@1>Z|=*X`;=4J1%a;m zb9oQ=(2=z)y4$~8Jj>SlpiOp*zK~Wzsy4)9E-@P?OyHj1$AOK*Q}UcsP^cZ(&(fQ)SD%AW_yn`y6) zH1-YXMa@CSH^PR6PXY2nMD({AM29)KzB?mN^e4G*s?$R}9xjOx$kOW)j;=3)T0I*8 z8i4#k0rsGuA8`2fs6k5mu~f~I*eI;yFu3KFl5L{fl+i3OV3vo1EC8P!QrxLkV zH$WUmd>v}{NJMj>os%Pgp(Pq{amooIngehs>fEIeBK95z6pgOpNbdrM?;@B?lyd2@ z{^9F9o!wrS3ME9ib|2S^jV>E`{5dQc4-Ta>yglDp$}44!OlJ{_cNxv-JP1{Fh{4X{ zMDCnZjy-0fo_g|=`W6UFL>OTix7KfIMRu3G1HYnbnseuZBTySlA@RTVwvw$TQk1h< zbI;xcM{oGKy!dF-$*1xuxspfTeqx{nIaIZ_jq79Vw8qh&`Cl2dn^6c>f>p{N5Iu%` zs1+(@uf7K@{f?fO`|c-Fe&HIy=jG^%hQ0Qy(S#QbE6!~wabpg)uz!$`y03;JZvlvb zk)w;7-ccI(`qIRqwm!|>K|CmFbLq5f@@9T-Tkn26?0=@diAr1C8elI%m**iWrN9H1 zHO#*Rj@2puVs>-91G*P*7Ua#wD@ZYrvqnJUfL_L~JMhWC9si5&PuA;1U817*6{r^$ zP=a{IusT!pA~~0#ZNe8=M5$=~- zU~R2dlRK=V$7MYb{hk6Sx^&Ra`@>0KJ;^+m6Q1b@vs z#Lz5=F$LgCyrA>gN#+LPu)|_9CSe6A874qB2)n7hz2!G2^4~*L0Tmaa|36R#sOAkM z^P9lYIn_PP<+j@l;bf}M9gde;r$R9%d%yCTJ-6PrY5zY=eRn+7fBgLwg%Tw*v+Nz& z>q;SHR7Q41S=oEtTPd=OIz=j_G3YIlU~Zzo~TCTB*wy_j~_BatFZ0FV`^kde7#|kI$aO^4jy>ucMDU zhDPGj8ip|{ZAuJ^HQvas-=UG5;p@w#jTRJ&$k8+E0_-Gv>c9SBhHFV%r zA0;({lD%y&zxE?)!9?8q9D3w9bHBB1CaCYQDEa5l8E3nI)4cHjvgUxL9doyipYck% zb-4efu>Z2N`odO%fbr7Y<4d>1p)o(G%kys=sGP>AznD{U8E9?ImUH9TYZ-0EVkwfd z3fcKyC1cVV4URzJPmGwZ8S25u0f72pzuP{;pPH?Wi^~=kMB9|l7XA(TlJ(n1#6KUB ztE&9F0_IW_xwe&^j3!ab`mo+ZLzJiK<306Ji#)GZvbuJJabb6Cy!+16TshZMBjgn8_v|CCy*# ze8HX1M)Ja>E zYIO~}Vy?`!(KIW)y`R>zVL05OE|j1<9`16L22UMH9t`6u*%cUXM8D(rPZ#tVH!Rf~ zDU6!bPnn$DMB1Rr%h3a-+W8_i%{|mD>57QPO+dKbPwND3qoM30piaV6B}74;Z8%K9 z25Co~x=iTfI+Sb#kiZhavqrC1xvKHa*SrNJ*t?f|kDjYf zHzb5exe2|idI(x=lDwsjm6bE0MSJbLR~*ZF()iQ?rcZrJg)Ah1?^wXBhvRkT?59F+ zk}~(e#a>i+8>+v(u+`xYyV`))iN21niCIv2p0PMs8>?y&rkZ-wS)E~G#e;Brv2Mr1 ztj%pcUO1PPWmPgu!6=(`#lS|-JovzDTq47!!A8L(-_-OFRksxoHe1uu?CWn{gR0)b z^E>q$M~Gd1{8ISEQC?8CwL`H;D@3{#!X1bUcY%T<1mm)FuR5*zgJ`cvDqIs~8|Z!- zrx3AYf4_px;ib)x0*~P<-ANm8qR5RxB3hGEWO!K?qHObg=s-u^wdhCQRw>g6UREKY zfnLa%eBOF?L4{Wsc*D|PpXt)%8`*!we*X*ge_~TBQx);FpIh$o855!FniO-}MSGPt!A*^2Iyi8aLqUw zNT=)2N6AVA*;`W%Y@vKA zs_bD;&Kc;BWy0XX)?0tDLaX!zi6unRg}31e!Cfq~y?Is+5~|V2o0NaYa^EbyNflAj zQqh^zwF;BWbqs0rXgM%fB*hCdq0hTq4zF$gwbd}uXL&5pGHV7si>-@a+cIuS;<@Hg zt)_qfa(4#{)_817jw$?w%bUD2UW_R;-&n6{v?qu@2=E7GG|B_F4C}h;>@8H21%J42 zG>;-O-3Gj|wwynQ)}#+j94B&tyJnSy@Od{qz#9@m{ReSsHg8J>BD5(be^(?zx~9}W z&8czYOvBr?9n2GS8pfVRtSOQQB^tCl5tiiyBb*ucD!I0Hwf#C@f_EHsA6hA4@*F^ihlOER? z()KJ^0>yD44_NNJ>VfN>sGeZD%`ekp^YsxrVc>#dB4<5Bgp$`WF~?nIk^11QkYMxu zW07r5;Kd9B&V%Lc%9wbBOL-L73e$ar14p0;a{z02a6*b#^)yT=-(H7 zm^get^WEKI@wwhY{zv_bO2*$(GGg7Q&HMxgID7+w{p>z@<{B*)iTEhg;C7J5pyqMG z&|Ob?A&dT%Baspt0(%f!@yPP~55DK~)!GaIRkU7jamKWi7fi#=WK)*v?eSoZtK2Zh zo?yC+rn4HjN!5DmrH-|ul061NK!07G-jGB9>Cwx(AmkuQVedw51L7#}GHZ`hWj?0B zY>ful z;`CHbo+gzz0=0+<4Rg^}Kiq0^W_%=yNWLi$uyl%PpA}^9rGiTAT-m)cme8SwAi0Z_ za&qdAj5w4ZGkJG~(U4nam^B+hbIwadApR2E08=f0paD4l;5r6shmd>bS?an}z zKXOf9-RhT9S=O_vD>{hSc&3nS(QnEda=8H`e^wq^wzxHI{Re>%GP+PGTXsV7SLc|5 zfxOj`>M@L4=1?k<_eXj(0xd;PKzW%|%gtrZAb7w7F zU~KqdD_aPu#FF9#I{{<_|~q>iz}!{i9X&mL6qM8`I@}NYM(P*U?@-ovU4E z(aIjvY9qpArPBaA@6^nh4o5 ziX(TNqM0NWIjx7x^zT&Fg4nfr!gtz<9s8mv@L*2tT$v~IESV1sid!Oo8s`)Qq>NTU&r?_>k51i2HkHCYVkus#$jp} zP^`TY(PvYVDNUMJd|c?vd;FqJkqVFcje_cW0P?&6??z2A2+h3@uW$7KjG#NW&9P!l zY-`!PiHg7B8MZua-akb=bKl!s576aHqo{Cfp>B$2nW8ve%5QRv>D0wFN8Xp1g zvjLp+wOuZrmd(?7G@hIdp9{xqn@CZR2NASzXXqsMAOWAr%|$TXE^M1sB$dD}yEMGn zk?2FtHJmv1@VuGjj1cp07?(po>vVnv{ zbt8OGB6V<;t<0*~ZwLPe?kx8pJF3w_0;BU4hYG9t3y0=ZAvXBHhRW3NK@=hR4S!HRU?L@_94RW}f zmd*0MTi||%u^N_5c{sY(x<|UPwWr9@_fNUO$_uuz?v2^!+})`TexA9d&WG@&qqp=@ z_^4y3?{K;5@Yr6sOSjn%giyFqzM`BHqOM0D_s%WqJ#;g?rfc9y?5IanOlZHu^FBpI zl8By6Ozmxv-CAeC0pqo@M|~{e-Ey7}8c~>O^9Bal=Zboc|oHOEohk zwodVlvh+mP8#B~bly;(c`zM_XHD871B?iUa_WX6Tk(d6{O^2)zJ!9CKKe%tk7UTnP5yqA-_23?sZivA4wph9vtF%eKE*cnTrIN{p&HJCan zHk5iEb0$<_dovMVIOh=u?%b>xVFORuIm>=Et1zyb=Yq>bt+Lw+A^`t7s0HQJ9<*## zj8OK=N}MZyAQN3^a1!hlmz-&xKR5^vNfp)CIq=0*?+Fo#y7f+`@P=YPVcCdnxQgnv zVw*oMX{-~+HeGQw)o0QB1z8P>X@(=!YI?_qdetHC?))COm{MV7k`kaJrfFexy~$;8 zY`j=YrEJx=xiJ(>Ve~wvEcA@-G;EHJ6A#H%rNx9hE)B8$zJa4lZ4yIQmp+-iWn_@J z_yvCB>tX?|dUcO-oUWq2QPYGeBWy@yz+gPC{Pp3(o)W^(ew<+)vJmO;d;Z2una~Bf zj=K!}7vo>uRa)XHQ@z(V{$WdQvuv8nB-5Tdq>&6q?PE!|$ZZWJUx)SY#wambr9S8o zMFd41867vH1B-Jl^By z!K;;&$#|G<;u zOz9ySzF2I5itpjxXHCb+sGi@8O6xj48uV%}$<1oys#NeHNHAU?_k$) zIE8Z3Q27_vL3S&|*ycI;%{&Y3NPH-kY0yT1g7s=RYscpCWf zu#i>BVqx|(zCXG+c78NVSF^TlumI;*#F=0r1o9BMhRhFy94QxAin!1p!_6ua?pGw} zOvs`c?HK>os0)mSUz~zQ$)ZKc6R1vQwKo2~XMvSd13Bq8(`1LZ> z2Va@@K)2zp*=>8V++PCEv-Lk&_jV>3>sG+-+_#Z4Ef^iQLlObAps78J|7%wLLw)qd zSD=?SfgPMUKs4z-cdOu|KCA!9@gc|A>RM}>l*9KnLz>^dc?|wLi{Z#GT2|>(09u*o zL@FOe7u?Ndf4%kPyCIiJwif?Tp>#Q`&Oq2Ew#gTP;^_g9He~oQywi<*-sJVA za}0GAFWmcXbqB-6R-!d>g*J=-z31q7=P@jY(x}L8@{g7L(Z#|2@#d699qy|Z3h2J` zKeZW#ydkSS&jyt?ir3A5M(g%lCRq)*2GE(y2l%6E4z>8BSB4%*J;@e-F7mkU<$#-V zc4NxWR=HVG?Pj&(>BXuP)>%l917*V$YdTH)9TWqLV_ddy=IhZ;nwdL+eC|uU72P!5 zcbS%1nf5q?7|~#VZo6Y^Sw^=-P^MGz$s@upCEJEMUEEGCq>h@sJz>ZsW#Bjtx{JG+C` z6?n(qcVFL62Q&fT*?jE(jiEkB{W)N9d&&d{kBEq^$tF#l9v+m@?ysip^?8TD5d9ydYg9YQ`FBP2%t%l}?Bx_ruHK|Ns3h|3u>N*@nO5)vF>Jaaji%AxX;hoNQ(twxK_w{^maTwe1Y+=S?M{S9q052Lly z@mS^G0sHwt$@!6eH!J<7pP@F^9kS`x0RjtwzkXR}emOh%YudR~*5%lBX(Am;P|;K! z8a>tBdU&!;@RP(@J$lI_QKIqFUX)Szy(reJ{rgLm#oEF&QSY}_w_U;St@w@=8cIK~ ztlIF{RUg}SaD~KWr4$G->-ISeo!h^k@_b0zvfaA))6^CSeAmxkJgWSA@%lAhZODeT z!;Sfq)NaMT$63?a8LX58hSO5?sFuMZ@Sq>41+mhTYZQ64ME#Cx~@4 zP)Dm;lm;#s1a$fzr0;Ju=ab7+<>pNoZSGM|mbOK+Q)h|RRDB;Q6xwi~(yy-G`i?x_ zPt9!pQ;YyXYZ}~S}h+NVD;xGn{z)o$Om`n4xqhK8zn~d4pWGwm98TNaXFRu)1>4R z44Bgc8VwYlS2fgH&Gy;NpY44f_^~N(`HMJB9ft-Lo$!^eJ z{N|*zH!1bx=WN7|V6Nje8NDxpzXTMXv~+l$Q%-G#M%+XewPair>2VbR5`84njZ*p- zUuTL>>e#=`c;+w0_9lwy9;%{@Ut%c|U}Kx71|7SiTULdDVL!2j?H<)DXIZw^XjNgS z7Fs?VEq<@it8Woid z)Z?y#)6}uUoadWFlPV&p`7^an=g$u&>7TTGp&k}(kI%;zX&TB1Hv^6Da$Mgxp<=-P z1Iah&Q-Da@Q@!w=nz_3wCO^crZ?I+0_fgs$64)G{zGb`)L_f$$AHk8NPNXU|s_rXy1dcoHD) zyqM>%aZ0&k|FlWEBL0cE!SyI^v5#-wNnZ2U*(tci2U%nKW*`3ArT%&KKk7=UY+6HE zO@&&~v#}S~<$sOn`p}h&KbMWNk(`ef^T*U}raXFY^2F08x&Ub&0t%#G%Lh?LDK1;5 zH~k__seR&Jl@9; z2-eSB+R|A}&eeroq@cLEZzugbJ4zuZcPbNx5|jI*l^l)`<8RrW9cDG!zY~A;lm$}0 z(u}s72dCxuldbuBf>jeKmaIBm+g8M?6>Uc!`U0tX(I-DJ$0$r62x5U=XZJSzvNJHD z`9h!aEUbheW?O?4s7YK&AKdGS-w}#fGZv6W#*Q(4*Xq)DufOC7+g^)_7ig^lZ;T^uxPy7A)!c6;NnQ4)>9VaFqLl`B6uyGojo7#mw! z^!|esV3E*jq4g2`g#&fGUtu`Hd6*iw*7kI&J>9je{jI99fJ4*c9-#IR^rWOIY^O4; zaNbS-(TGQr5?p{N;TUkXgTIg0{L%8ot4DhGixdo5d|HZpn>WI0b*rmK{r`-L_HV&K zS}O~5NS*Ms?NLi^Q~p@>aWgMASO3P9J0rtqR+R(j({4|4 z&3MJKWtyi6^W$+Mw8BE4Imt}rq&s&&QTT4J+YIAfb@Y!n^;rv5Mo;ENLqzK9^3RpJ z*Upms;Hb2H#EHC(HJ9kn4T?@vAY8w2S z-rh1YUL-Z2bjU~d#aCN|5M#2!!eAwM=d zoRSzwf?kDqsBWTr3XO~k;k$qKAalOlg^8KLV9R*uB@>o?k&P-m*7u+d5QiYVwiH6_ zpU=G-Qp1yjjnAa?)OQ=bu*d(;9*GiVxornA{UT|bkrDW0MwO!y{-dO<=)e=`rK*|F4r*I>K1tU<|4wdMdn}g z{~!(-)+pGy4!6<)u9Wq3`kyW8fvO6nlamcxqIg*@cf3baA=I(a$}MR#T2lwcB0HTR zkty&!z$kyOCVl-=N`SNM_+ALv{3kq~)Ib6(%sHt}sVN@vd0qU#T)=C=-of_|S z%c&`sWB$_76ErT@U;F)QBXojcOPHO93{L_E?2pA^Dlr{K@BV|Zh3YRzK>~B<&0qVK zzftG;-4wQc_=sC*8_^kph-nc`Yrmv3N3vzNxAK}RHIub@uJYDdBU_qf{k_b$EG{vv z?ytdxi1NZ2rYt3AL*3H7>8)DaVNOoANr|3zQs1?>+-fn=H}U@69lX$;K8>fCU;Y`G zS&$z{L93#oM(H56Bg&EuBUH8ABiuHs?_C4^f9{;lnHNvp4n@SZ^&is(<^Uz!!I+lC^s5}yp<0_m10yuG%uW|X zkeuGI{8+;`P)(!dJKCWq%lslVQ>0&_n3m~uGp>J`fA=zU=N-qpS1GGK+VEtPPq>0kT1gM$*T<-|ap8KTINq%ZIn zTT$F+32J45yQWp+WiTpW|Hy%?0^LTSC5Mfe;qMLEAXS?MH}#|a4@pyfg6UX8=eWBDMjbu3av}6x5>0KI93WZJlQO zgQui#2*=^b^q#IkRxMH%+!_9^Hs?YU7k;>#MPBIswoa5}lh^_vWvv25_o`wK~N5<(Y0n&%QF6=kxryl z<64W}Ky_1jSo0PD1QVdtMAs82(VCF39kOsP@|3&98mfYi$jxpzGHF+!j4Me3#)Lt8{ZT34&%vBRL@nW*sWL<8H=h6KF)fTx{ zfsC_%%9fwEYo5`mpN7iD2KC8_)U3DdO7QFh^=vT%uHEi6y=!Tr(|SuAz7`t813!ND z21s%E?8_NK0~bcopys!Nr})>QeVEF`lZX3Fx)n66- z^O;Q#x&}OmIC3z;!{S(}4wv?Xu}kD2>#Akoju_pv?g|LOMob<8#U5*yYFW6ogUO_KVG3QNJHMm$K9f#D94Qqxy`Tb3QFo0DOM z-Ij7)1%P)~jgENhH6P#UMEf@y?tNw$CPF|N~k>7pMGr69s@zL#5l*!l3B2lip z)Uk_dxTI1)s#V3>vW$S!Qa7=gm93Cz+O;+(3vnB)a?*v0Z=0lZTET$mu27$5LI+dtU-GWCJlGX6XbS(bq?Umi{(aI8k(O0QeDf+YY z+-Xln3`$k2kXAu(v$Q~jzk<&3{U|$p}FZ|qNi}{k0+XyyL?Z(HCQVuJ|r|O?Q2#Ey)3U_HR z7`a-_f7+=5U{nrSK5ue%Zz&u{=6MS-_-Fq%`oF-FxFk;oPx$eSJun5K%*n_+1L;$r zJU-m(S=6|E_nc2=aQIN*>a<#zb1;Qf3cB~aF24gE!?@P zAJHPS4UJVbDj|e)%&JE5eUk7UGzrYB&b85gQEtOcOKZ>R?M8RKvrvL_k*l=9lDN?T z`l|D9bqqsC2#u!~7)O*NS`a)RS~UC|-IBO8Ew&&~AFm(QIPkKp^nHJ81l42z9zE}+ zLXNSOdkDLbssi%qwG|cj|-Af-R<9^({W~4wy;0)E=#=ay{Y$q>D#qNc%&YO2O zyUyh#07>l!BfeSk(6C4DQoRN_?6_yN;TLdn zDX_71RuQkTUb(;!Jrxi|N0=@^#3#dab@uKfzr`}|BmpWmM2<sWudLtrDPE|)JEch3B5LJ@0v!Ok zfzjLFtNP!b02i&J^t{oG%BMd?$&#NaV4Hk@X_rpsoW2a_IvFwsjE91&y_=Zw@lNb_ z2#4W~w;b?~x9>93szlAbdet55;I-u6lBa#s$fOxwNP>lU$|uP-n{mWAJB%;o+zFE* zNnxWoR00cH!u)BghDAy}@|&YJI=yxI-JI+ND33~Of?go?PYX!&Ro~x(-5uO#it}DQ z<9uuI(=jnCL!(tlHM#qSk5`7rY%?Gb;ObeD$at5rcbg@dkXXr$pB+Lj60M?dY8pp>K9+el26k4kA=>;&sBPV8T59uO{{tAn|kS5fDmMd zI%2S~IrzBv{tcsQx!|AfXDQ5d8$7A~D8`K0~UAToGG#h46HaP~aY02X4wG}s^*2@Ike3H~FK~Mv~*|$iP@E!Og=`LF= zlqeXO?IRX!B4SRKEgp%icU97qS=OEO9?%&bHpg3_SFuKy^-~1&JTO1KV)K$)N;gq9 zwrSNhI;{xcpFND+S1fDkTN#*dyzt-$Yt7FOJ<{!(Nj3H{fdW^A1`Kk442QqV<-8N* zYW3ZDeJi&ipdsvGOQbuCw<-TyfEQYy7CiD)Woaa?Z zxoi%#ZKwer`wqstM&=kP%O29*bK~jcmKod6xqSPp5_03flB4j|*@hQdZ9;>`RU#AB zXW9Cy%F2-*NfYSug2>zlRYGoz{x;(1lonWHZE>SpmQnkKdI$12a&~S;|HZNFL)Q0* z5B!a@-@1O@zk55rPCZL3=4!qkY*-&05u;DCYlYiWr)PE8=h%|;wp03#(^IXEsxP&4 zS)I&NFCE#seg6Ch5nt`rD{Mds?12Wmg_M6^*({{?6r?O7J%|1B?mm|LV%%9`*5SnK zra@sGAfocRcF_hOo3xaYd^#arLth`XXnwW~4rSV^PUQHV%MP33O%&rM^tYA{3oi(` zfoI?t$KW4)wsyuAq7uY*NEGdK+UOABLpL1AocC^zq&v!P+$O{;ox~!%}8-|pB-fRUy%D4 z6n+tz4)Oc{qkVvQ&}gXX93B6LFj3}^5n#EA2@-oV)*izLjU0V>`IXWUoRh3R^PAEu zzA@^6OQ$dx;ye_@MiPd!?jNepqJKI;R>^^fJsM6F!W4J;)O)yd3e~{(|AX|;(z}ipk!M?wiS|oX-ny3+=$8-$)tQi~Rv)Mu5>**h|r0H+LCLKy!iJo;%DV)?Rfj zN)wOCR=5-#ELCpp*F_sP?{7YE?y)(Y-r|b&TzvKH*D!bQW4HU&yGZF0Pruo^ zbjU*r%>xR<$3VU0*!tmV?6&h&=tn$DG(9hT;Vq?;qI&(3*Kxr5BLBV}1Nf<>n0g5r zR7-O>fpNDczZ14Ku_rQw05UVSCs1y~|Izg@nF(PaUhnuo*;+v=Di?6dN$LwLavIic zE?C96jkh0|mJK&dk_o8=sr z%c6dSBr6lr4Ww*G%C}_EMn<46d*gBEr?an{VYijow1Rx)u!q>4kqYh9oAtD4lyX^$ zxv;tgXd2M0-@8uMj5AikgOAqtkBYOe*e`5dZJQIzd22Q+il>8KlnOO)T+|TYBdHN82FeSU0L6fSw)`kep6+Td795gz$JS$9e8@(S`dx|)kwGC*(9vNi5; z)$Ui;uO;!J+x0gum1s6Hn!f68e;fUhfekVj=3?@U>vX!Y)_0QNHYgV_93UF^QdaNF z%l0nL?5Fcb5;vt4tsUq;`?0dCrGZIkchUqYw(hEI(_4L>84dgQJFF|aMnlsxDwqC) zNDq4q*(`rOh5AaFQpAMZL4rB*J7k#bnA_jlIEx>c7iuNRkQch`qF^_-Yr{7^O3f^! zUdYBYYlmQ%FjJ~dgIxQCZ>w;9ZjT}^&y>9Ac&s$yBi28qvv;H><+1v)KNlf>)nEgT z82Ad`4u(4dO8}rclUALcLz4jh1S_v_oRA#SE^ows`-)5RHWAqAmOg6^Cv58*CZ z9X1M6&2nfN&(W`Oa`!7|Ck&gkr0Qpo^ziA-&fK~MrgScUpJWS$jt4nE_)wi3EV#cm zu`0hYz2%qxKz-c?>(&y|Ok$ik5nB%g?v%OY^S4f1oQD^-VlY)KU>k<&gaBO-{vt0lZpIs3=~$P$V}T1+*rAW3Du5XjhiEN>oeO8*J~-epBVj)4!$?TC7j=*gez|zXy)FBtWlOIsrco*TQTXwhX(bSYezzBL1Qyk_Wobv{Nxc8gs zI~G0G!?vjpURL7Irp2ndo`@4Y2tZzp>Xjw2yOY{A+GbduK zRt3J>NG6+G!Z=EQyviAfmWdpRmOt zkz%Sw(eY{sqVy!&CB|8;=Emj=>^)_78jBicj#m4&v)YCiIPItLUs30BKo&Uyy8a9j z8wHOxFTN44>oqlH>+7InXC%XQg?{=nBLlm)*Eh_cz29cb=(7^v5Q<9wy_QR}Q&0nH z0>m*Z%kLc#S{7KSWyj)ll^j>7 z@gp!s_il`xR)Fu0ZsD&aYtHX+_4*7^fz_5*s)f;0gKE{bu!N#Vq@M1B5-_DU-sr6V8LG3pNA`l_v)4NOq3d6kTN9>$Q{CA7&Fn^>#r*F%+^<>@NN zr3BC=@VUz9%|gpPK#@_k&n3^Rnbp?Ux(RuaV0@RdkUBblMFH*XJrJMLZmc286NAZz2wdzf4|yta?z@Yzy+}20#aqQ5hPIa zGVSk(C z2dc>LuLm(qmzI1cBgZ^mR1G{_s;a$OI-~5KZDw)hsWp1m$m6QSkpG7G1(w#O=n=WI zzksIyKKZ$K-gJ}S7%DojTwAjuH<=YN8*KxI`^FQN=z@eG zAFfj5)Uanw03-jypZ)!XcZXuLj*`R5GHe^rp%ab8dwJi5CksHYy(@nE%0T5I1E0#9 zI5Q=I#J-0opTp@!?=tXo?PG=1%5q&VhO8=09f%LmR{Lvfr7T=7)?|~3^gDO=P2xIx zji2bB{>@&_=l?LoWc50g>l77jbnyRDokoa+Qy}9`|6FK7*pZn=-$=ou)f&EDu<^U zUan^v9UU&0Q!cX`^e<8-G$y{vhRaAdBH^dolSN_@9QvnKh|R0!^Y%PAg`%g8tg&w% z|H@AZ>V8DGKO`z32tqa>Mp~Ci)RsSawzKG{iBpU>GnGEq8MUH#Q!A0`_b6kJ zujI&~^X_EMH#XTl^-Hnx=QV2+pEOo@eZ#vjGZ{s7c{+Mry-Q^EyCvKv@{NqbuafVE zdc~U_ADAbz^0KL+woQ+P_-p@FUuXRfE8M5JQ1W$@*v8tkKe~1V<5U;aSk;tNkSlhAV%) zFMm)j-+UTn@;;beW5d7%)R6FxmJE(XR_hPX3W_i%@qQou=Dk}_ra@DPaOw!OxaS09 zjy}+BoM}{J{s;MPLd_E|a^^RJq7sxZ?wpZc8NGsV+BwI%n z*J6Ne#9!fC%`Y%OiVlb0AC7FGv%TJ!KD#24pNi6DmG`omu10sJUAz{nb@3-(Re|XX zh7YmX;VpiQDY>j}0kV1jK?1iN0BINXH<-$nDtqEM$glh&E>(I)+buV$ipH(b*z~4q zl_0b0h z`)k_DhdtHOS2G=ge^c433|l)KlCwawzd#{y+QOf~Qu8J3ZW=&@)pHeVf;?8v?2ZRuLBFky-e4&?slv%=_*Yy?*5*qGA4_6x9M>M80$L4PX%at7l| z)}ti~vQUlinJV1dqZYT;J!0TeIW_SF^89Y`%X6M8{=*2{m3)jzErU$WnD~u9VI6dy z=Bjkc+q%S-6p4YD%NX*NuekGHS9Z{y3l(J?(pNT<36`0mW zeKFT8j-G55LhSZm6FH|!}WiU=xFQYs}NAOg~xMGGhr zl2ZX`Cfy7rRYF>+sl)_?Nsin=N_8&J@5PbPtK9E@x*=KpX>MD{QVl`eRnDKRe?M*LBS}iPTzTsDFpP8}5+$I|-*%2v9*oJ4Tmzoh>3V zQX{yYPM*I#y7^?l%^stD<{#*BxvpL9!8=ol6O7*TW(E1WdG6mb4T0wrvPv!6M>|dY zUfRHLI89$1k=NOoP=7f%p-09xt-9g-3O%0>Q!U8??UUB+{7;0&>YnPk-k+Bj<}4xg zawt0(^oV4|hhIxlvSK1C@Zp$#d({`S-ZN(%}37)NNiMb)O| z?KZM*w*Iux`i@C;E1*KkhYR$tx8cv}l^8y&AOW7R9ddbw#a0q!&&S+5BKLOl12h%Q zFqlkODPT=y;H2N4R48S)U%s}6m`p379SZ#wq}&h$;zVb0YsI7wfDsUe2iU{&`0zq6 z_#=MNd26AuDrV90s{cT|*jTE1q4VBo4okm0;00ExcV#${R-5j(3`m!zD3 zUp72lB_+8+N5RcCdzzkpC)eUOLhNQr#>xhk4ak>|zjU+WmdJ0ZD%+1~N{;jItW%_0 zWh0HgDuHs88I)@^d{k;txZ{%f`Q@{3@9#-Z{`t`)%Sg-4GnBH`dZRH*m`7CwKZcjpI4im?@!n)x{6PQvynOfHy6%>efqQfS zC28jDUP@(gzI)mP@8?D+qxOuOO?0>>89p#s?JqVr7jy#t3mD=AJ4^4tRw=d+@Jt;7 zmq&x$j&H-?&>K%EQqh(6_P z`eS(z?VdsF9UY?cul!a}+U}9Z1VJk-oC#FcEC`hy*CH1>A|OG=QaRX(uinT{i&0R8 z&Unb$*E~wByWnYvT?u!a%glJCo@Ih4PInkAspF*hepiyn;IAdAzl`dFOWO-tW!|O5kb-?M5*}v!J&@shECLBV-;)z6!v2Q(YXsG-rYxC%ji#CH zzJb(AWso|oM0~_YLPI0yG7T40kYbBULz@n{XD9+dwe}Imhd^6F21oV8I&P zwY`?)^2>PBB}(!m2giMexA||zW8)75fLxaB)Qx&t%iNLLg*>B4g>klqKKUob9JY&R z`ZaA&nD`qYK>`MzM4uvHrmL2D_+$L$-d?%Z?Q+yb>cnN0BDDdDTf)h;!-qLl?q)WJ zJ0iMjjq>1ditW)2JoPbPszDSXpI=xCFBqi40*Ee#r_IM#1f)m_F=}#i-TVyqNs;Y| z@IbL6vsn2FV&S+=fap}o^JHPgG)wKrDa%I>=Tg^DA$}Mfe$=m`e(-QY*|ajtD0Fr8 z+dq)vKM=zvfK;@A1wJ%GD)VeE4DND{+LHF;gUx5B6phf@OKwKIZtShMG(>+#e6x&- z-uH}nB-ILgQ|0Ugad=WIA}N!!4IP@4Wp7Z16@~cH(|78FzXl=O{9K%BKNX!xxt%6` zPrpbpO!z1_=eE{rn~j{C0jECH5U8EF*^%h|7q8OO0bT&(hME`&0j;gHHsw`k-s*U* zBR0IVT6+no0ng6nC_gcEFuBTV0FYHXRJ;}pKeq?&DVV$*S;rC%1akp%G-zyw*;*~R zSN*9eX*9X?FZO~MY3Z$udoZM7C5J0#)y!WCRcVjWn%57h|9s)D+V0=c zJ+4T-VJx(3^^oR`6ko3*7_Kbs%aE!W6JJbH&M|sAqqs>Emp{A)ln8 zoPT-P=NQ3nLBJ@6zu&8Ry@~6NeG$dLkmPqUxpUo=C}yt+M7Y5%@}^{hioov%WA7Pj z&PI($CH^8Q@q1;xRW32MwM%O^a;wK6bDbjCZji$QZ3`cRVNZU8t1b;3yT7A!(J4})!s~l}8G(BG546HW-R(~{71}or z)9Uh?AjEo89R>B$hc?+d4jx~32HjxzH~c@)KrN$yQm0sgLBPDvT-epbH}=FVA2B3d z1!!T2yJyY{CwYavMk)y$2v7u<3jZ6)*pI&!ML`gB`f;n<0Whm{fYdcT`T_6VMYC}i zTJZZuAl(c2UY|Fw-Mq_s&iC(k)$qhk%8@ZXNR`3V?D$*={F165$pj$?Y%{)g{jZx6L+asr;`Oe$G^ z+6XS^-S`-ygw*jg)0wKrYy$i(-no^|&Y`MY;AI2M^!o`v0qk7eUvICO#9DhKOXVSH zbwEGV*(2h=4q`4-?+@)TkywjoVt#z9C6DaCuVTCC0_Go3W6%40<ZJ5i|@ zIRm7P2A2kqYZIY(L{%K3HiV#w9-qh^q!;Jp^XRJJ_EZR&-=JOVeh$@XqkXnJw)Atd zWH#b{LMTUQ+aBU_C=(@f2K-@m%7GY+Q6ee657s!k<)3Us!gde@xf`5j4H-K;j#Q-b z7ZYar*=AC%Z0=nopNdcSDsehJy0&CYy3%4Rjso0NE#}`k7AWq zn)`<~mTxcM%CcgR)!3-r_05@DYNV$J6V6-@ok~j}y_76`8S`ECM>#B_HZFKrM=MQ0 zyj?)7U8}o4IXPZ3V=5kfXUBKp_zr2}T3lQ$%W573kEz4N(z4lcX(=Vur5|D`{2tudCme$^`MjFqP*lTrut$$#44 z$*C?$Pt_m~7|Y|EC9ki)g5C*ulmzM7&-=7yo(F3|&S`j9s~^M8tC|PGdTM_L>3dMs zOUmOH--^7kMZbCTjOY_9CvC7Kyq!@D`Pf+OXQ2SQ$8u7q}1F|M{r?t=IxR(Cex?QvsAe=)bS?ZL? zytGo^u&??L1u(&Yxon?0H(l@j6Y-bC^Xe7E+4f@qZ`9g}9O)HF zvBbR!qdMqy($~mLEpaCeS^NVnWcw;Zh)u(AmLfhiFTXfFxonQ^%5ro%DyaB3P)ZitUCmIahIN{H0VCT=2yJHxl77i78B;aQ1KDNPAhS z%WBc&g#Sv1WrosBopjpf<#OTcCb0pPPm!iZM~chS(;>lo2iYc)!^M~LmGwpJL)_*O z?$sN?F2}C?0%H0GPP4|TrxW>G7*9N-m1G-s`3u2#dOhI+u12wy$R14LgzXJ4RG^y; zjSC>uK?cRv*kACreCxZe__kA6z`ss3fy5@(3Zpfj>{)_)RNe|)~CZnjI@^oa}0@tVf>odtN%CmnHi*L zi;<($KO39 z(;ScM4E>CBV9*v552PD{oCN}MKJ~+aC<}@)LDSWt;u-pSWk>Ke8G{&48psC4Fhh&PU{})Dn zO5YMSx)2~rn{2ZxK|>_u>;Es~MVzU7{X^LB!$%vpi)Fe0HdgC%h<$ z6Y?Nz^a1tkfBGG#C+(+$0&NKxN6;9C2+WA%=~Vic^Rlt84MGvL&tFcjUG?ijtA#p< zZGB-B;^qff-RixLpynN=RazjRvSIKg3j1^zgaaMdkY2;6uJq+h{yZC!her_C2y!rp z{@An-zX9TANb>lo)F!nHKrX9?wuZ?2KXh;FN+hvz`D*jQf6(~^ox9B95x6CquefI; z1O?zA?AP*)d%bGoJ-S&uTMEwhyqeIZ=^7mKWLvfxU3TulBxg#AZ_QwT0t981)Wx4> zVn1ap3>?$YsC7WN8l2?w&)V7b+c+!xT_tSs|KtBe4U*{wHQd|>yf+NmFl6*W%RZ@WWbCvMc-uM+T|wps>iQ%?M$j(bKG!nU)u zBQ0g7mSc#LI@;$`nmtmzIkXB`ls~1wW`Qyy)1gckU&cs~J6iN5i3!mgRHr-&)CMS% zK^>TD{e&58izK#e*+zUwMqZ)6Dw}g_aYU#Aoi=TqCbV><*Vqzx*3&GfJk|nCJV9}Htf2k=#l-4>j}1k^ ze~L6Iw7+aMoj$i&pJj!;W_qe~OvkEKe(P4ouSuM)f|?x7wuYx>K8vngX+|l|6Oz zysN0bbnNU%EiMG0(;^FL4pcAT6-W>5LtKH(d=OBkz-9;ne+ACdzBHJSqMNZN6cBH4 zS6WS{Zw);kMaiSi_!n$9*9DWuI_Dtg{()?}ebmf;o^bu0Bw1eR$+#MIqL2Nii@~!i zam6LVnbYb<&U=O?C3}wB$PZcKx{=xhE^b1q*p05PLuhJEW0g+5!q=m7N5=koL=FO# z-D{4k1u-t9(J&e+L&42NM`Cy>*Ia%0C3RIeP%-jxLM7DbOIvbj} z(>g-ePAD;CYhES`Q1f}!ujnoVoFAA2%-X%~Z*SHzauaM{Y!SE)!>mFZUqdR*5_bA1 zB23gv6;DRNoQ~BWimB%)`ZFj%adakFt^~OkpWp|)&V=VAhlqvIuTd`NA6UMl>V;NJ zv4O?iO)U3|lja~kPcKTOzRcILuJYk6#o-l?(mK_%EnXwJ3pRbq>v1Skg4zCIXlUpF zp^PcUNAL~wEY=D723p;>evU|($efdTPvsDNL#zQxM}Wgj-v@xXjgGRbC9}Ty7A#kV z`AG?yjU>U|vgUq2X5F>zS)P|RFHL)8mRSFd-1P$~a^rqhpp1`H@`6k1rX4=0wA!UN zdN?HZnt!iXvgN9{i)d|n=3WQ>QjpPZ_BxYuCHmTIOA~Q@@CRVIhXHxg|uAU7s=8<_N=`%yyk9JygmiJ4~Lz~^)#yaqZt%UfHiiv(}^)m@4^=yfTZw!eDz6lDnHKQ#$ zZawsxONPP*nk=yNZ20iUVG3B4@?g@6)XC2{pb$$-t}<@$QCFR7nojI9LvQN$(X%-Q*AIkFTX z%66Ecf%NyOznNuY8T!+-u-p&dz}PrGjTD`E&B*;bI>xhSaDm%K6$CAsH?VzZF!hn> zNORi4WMc~&u-%L2Z;!Z(4Y@f8%JB-nM#fFt?n9(6*e3V0*uI%at1SGk+__Q*g(v>) zcWVyPcy)Y{20{dVh>eO`LqF7*g3|_^JT>;xGMwz zkmAK?2Ywh$sDSy>zU5H&A$E74HanXz9yC*hUPF_3_p&HK8lh$yjIKi;I|k3xW6T7_rK-7ATpap zPP-Wh->v8|avt=+wqdRRfrP}2fO3mP)vrU(J)AptH-csTmGFkWQ6QR|n_p#E6IJg} zf-P-rH;c=!2S@eKC0>xbC1G;sThcjOrks4kFY_#B_tVw5WPnEs+ckx9s9jNcSv?HS z^ysz|Xs|o!@!o0NS)pX3Qni?S>=dzP!(RybeN|)V_>_~rOPSwSsrQHlZW1Ph$=x4V z(nPjR%IsfBbchx3B@gisc@D39J?7#7erEUlg;pSa&Y+xQkCT!A4e?Vy5Rce$zu#`|y-*Fa=UrS$9jdpRY#IKJ_Za|3QW0Oo z$IGIVKMX%H=)CEDeTHxEMUqGSXZpkctaDc#e1VtlkP1JCok1fiuxrb6h%iM$rDCfL zw-e$#SUy;NAfJT(weG$mIi&%X(wDDr9)+LU6+Aa)r3GZU<$H>xjqZ(|tu&SK5c&YE z6xy3b8fGSWct+1P(4nLCO4a#ZlskZ3G-Wp=^d3iK<=(z&`R%4Usd-7puuaG-g7@r8 z6aCt$?HteBk}63*roIMw57BuKsW0_!)LM(s0^!hvwoqaEAgQlShRqUc-d*4yY#8L7 z{v6SxG${9+OG>;9-; zexb^Bq#X2}q)?$?dCCWpOFO9T6ww7pE0G*u9tEqCN|x|*sczrMELYUa6iwI9uNOC! zFb*V59HmGJ28eA`?NdjwBZxrcowR_2wO{a_9rt$KxtN>ekj=@9cO>_`FG;Qm5E~9(5EEALD$IKLIk4}@x zvnETTxf(02*{n|O{988%N_HzRe5CZ(V8e|dWsNJx+)=sZZZ1_V~XBY{!W!59xot@v?PTX=J& z!(YYYM_1dp*n5JP`SW!6yLd`v@)L94bAK_BwtvOzJD}kDwA9Q zH)231B|%A;V~euDbxfUW4y;C!gqjH#fQ;buRzV)28qzZ9bR1a*&=h7CQXVv;(I}MY zPkdBWJ|)^PM>WRv)ewg}@sd?u{kOB7n$9^}9-c!cFq3aE@9a#|P0m$4bXDp)?(hKI zvC*2_?F8*P&LyU2l+msY4lFIB8HWsMaE0n&dGcb!wi?~r2Hf)z9ksc zrCW}6PZf)#<1gkJ!wDx(IkA9kdp2jYm0*6-F47zQ`qZRN_cwe7%s*;x7<(4iS;g4^ z2E3Mm(BB7&4``nNnom38G?g36_YY*RssmQ0@>EfXv#5(MSRTTCl1xh@Gw~r=`X>;~ za+^{BW3qvShbnh6MY!7v@VW3b6d!!84EkvGsH=pcWssiYdxXr44l~mW; zZ`0*dU=AC>w^yq#nNv%P*&4(y2d#;Ij#lzsAR%fqmt5wE4_mbFimPM8`1X;1ZMp{!@VkCIQ8^z*?UY;MFm5L z;m&;+bSQ+4pK49ET~$d2!l%P9eCGb1s)$R@rlTH>Q^OGVFmtD$ zR#TPnQh$ur%KvnFDfc_aa>?iWNt<|=4!*B01+wFOtJbnRxFS*-vtBJI(t4q7opfCQ za{d4u{K_}-W!j+J!4fr;?IR)lq(5ZOqlT6*qZS$p0YLS$(%#$+kOKciFuOTr3&JQ; zNvL$?3~a0Ko)r|5Z9N*@ddysUsby}K-$_UJ$SohgXyIIms~9}GQ)JpCt~tURf!C>m z!3}*U`}}|i8na-uPKd*iD7;xJ*!svQn2}`IPJz3k#-KA4a&TbYB?h0?l+hTUr{`1>eV2+|^tJ7%$Cf6E=58NC1l`Ts*=z4j5 z7w=~q=;%IKCV5F7SU9gt=b%tST!N$rGBNG9>Y(cY5sC57C=AmhHh$A=FUgI2+Dbm? zIa((^@kdOO4oJWuRa!1PZm_^xj*IKYivqw0a|wnW4^3D!_Mm{>4PCwwCP$~NYY%;4 zOB0I-JOlmA?on{)A375*RLOsTcJmj3CzzRJT~%5!f6r%ENID2>e7dyFDxcHUgM3%Y%HhXZH6ePtxg9Yj$iro&z>*qDr%Cr z(z#wM3%pdEbkCKqOmbI=e==h3ID(z|6z2rrb1@WqDW@X;OM4-u@#k%xmvP~d=#+90 z_tBBv`>g6R19IF*Ooq-^w}JMj*PgZCRZ`1hr@A6HVoAzNRc>VWcqfDU!BfAhyx4kf zAzps!G-l@c{4D+aenm|V{U0du=+#cS%Q3Ug8woIkWc(xvl&Cuq2ipE(5|oSE?ZE|; zYLn7lv0gicZk7L`(*=VFkpml~UI85k<{RJlPI zSO9o6q<1E)jR@IVEFW%H|!jQsbFD52>2u9#`mxq&^ zy;iQ|HneO;pR8=A%gBDb^p%T5lY*m8Lv zTTJ+^z&IxZ?7smCVF2k|ix%Z${?+;lOIP=`*sFxd=B_lxJLgy%b~@Zsv(I#;K3pmf z{0Fk2M|Eq!R;fUnt3SliK1(mDh@@u-D5Di|=2^iE!W;cfZs1RcV#hck`MXfc{GW(!q!5O#rAO*qL0NEY1!F z1{`uZVVm&tBtw!GG8ow2MelxLI;lkg{8!R$oOBJR!}CGXT0mw1bouTXZGNEm4TfE@ z^4$k`0b^G{PRZQM6hCk_xdSH;YXA5e;3=CD|0*#aCm-QJ53a|b?QCjdLb}W1RshD5 z=qFIN|8Ytu-_o0p%0%kXPti-_eQNuCkp9PvZ|D&THUvXp2MC1GoRSXlNN7O;pGrLh ziG~CyuNc7Dwt=lCNG?gyn=kZa7#G~SrsHQH;94V}wSAY#D#+t5^I3jK-|TeQNv{s1 zI}-o|{yz&`VPLNP4=_EoNrxLmh4ClV_B{>n{0CaI6kH;KUfWK-zQsn_0T4<|7%QUy zuoD85Z2ia9JODHc)LeQE2rjct85o@rRVC+iAhuMFnQkm&0nMwp1bR0>B-8!gBt-7J z47n;Kgt^6L;B}Y9zR!Sd=z!Wyhd(~UXLsT3a>66vsvD9)ec6T(Sz*#yM)GFzGVqxo zX6bs(2mDzxA^qA6VfU_*oWZ!p;}vUiz2))5y`(6r1yAim(l!=0e6WNB)4B?SyV{j65j=D1fkmxBbvn7NWA5Qd3?5hwa^MRfI zbazvcpf?wV{%|y^P#cCvYDHY8X?K=kxZOxG-U%;C5iVGn9Nn6vWBbGD?3~VAvVE&r znu=&Kulyx(?WKU=Bh^o>1Ck)W(gmhc*`X`oQECrnR3FgaWB&Sx?Tx#%W%#xBNCJeR z4>#3ZoW3vb5$`o%Mr_S1zYUFd)az>^}&Xih$VamX_7$Dx;L4?Jw% zXPT>g0fPRqokjutGysGC61+eMQT+CTX~lrLuX{E+p+RWQ8vcajx1LB6)9nXN7nUKa zZDuMVBa4}U*(thy7ka@$eX7BC-OZ_B#rLd(Jq>cV}Rq1MH z+zN)bc*?cxdzrCuzQJHPPG2~we*Eu|B>2_N!rRJBjL=w8=0%dM>R;E?zT=UC4%>lXqrM?*~ZtZDVoN(4sW#V2a%xKYn@9ekf z0&`X8*_Dx4i4ml!iIwXDXF0Wp zO~g%$>;50^ks2_}Rb}BV>1O2w^RX7GBRx2OCEeBV43pA~-B%;`6rzrlm?F34ozbnv zkz|6&x5km3)hI>QqILy)rYCE;fM01r+7>LgaV=D5GIWx_0I`EdV8kfmz__$KK$mc~ zfsnyfB^Lf@K;kui8Zf~_ws?I5r_V_u#`|VNTI=5Xi|l@No0po}`<#FFnq*-2ckmV6 z!&axf{HGHl-nju=_e!Kw(3lmxOVEyc7Kd(pMJ}^bXIzX z&(^_RM34KqrT-Vr&qU9TeM|5@lGtn-7O^}FtE-nZPfH)CaEJq-f(dUS&nfJcnf3N~HmO)#v~bMxjL z^?r6`WcJDR?-^PF!nfMLqR(oL?`;S<^xk@X-n1U@yn&ANTydvn9H)>LRN0rA)MwoB zo)Y@e`-LQ668p*S%rlgE1UUZ#T}sK&wdz(HKPrCN_Id2o zRYg&a7u!6FoZR#aUg5D_spve)RvH8(-L=sT(G{x{czPHzriS9j=`hs7FF3b>MVC^WU|z-Ix&@>{Ddfl-G& zl&-q|^tX@3r<)10*&(2^Uw+^`Lt?)z>U?j}j&mRI=g)4ZOeP!Y%F+?L=!4*+ z0Fm94G_SGChEpwkFY-i1wA1&WcXnPgTVSd|sq$!jF4Q9K&>IahJonw#g{O`g0`Mec zjE{c6XPEnrBR^BO@ZSElvFP@;7ZEqXHS`>>d>exvY=$K;r`QxECNI_>laxvzz?d-e z8GfRHjod*TiJ(JpU#ik)W9fWkhY0Tyv9*4Jf4E7-=-jXfy0X5(v;kc)BrRWTzF|5R zopO1trl>^cab6K50PO;E7(!ANmj<|cQ6m1pclk`i11^4`1DpW=HEUMAca;Ui`_VFsygXXirXdYq-R2{rWK3uQ z08}%Op(bK1C>PMwonu&f>y}E0i*~;Iv$c1=Q>!#!1VXh8RwjnkC#cz~{{sQEE1=9N z)w_(B&g8rA0p-uxZ#3jI8}SXIAb=6Ez47Be1y@6C?_1UuKt0cYpag(t@e?wDy~r*l zs`4sJh!&dI@Au_g_;(K_JW0&%as+)VtTbaQ!>f?Stp=oEeUZ zb4i-o9l^HX#=sEB;c{$V*PpYzVPcD7g4X~uhr$;2NjF|7_`N-{v=UGXOR!RO0 zAC-XP(yGYl)LptWWTu2rzSKd$Tkd^Bv>T;aPb8+%8ZB=1)%cZF`}S9-hyZ;kGhU0!}lNpapVia>6(jqgB` zH!p<_L(7w$>IACt{LMNP6$7IZTtrYYqK(zz`t?H!^3}sT#orrbg4`JK-eu;03JewE zS~y!yHJwaTfYU#MaT@)UW z0X(9pyUebuxHKtfG$ya3`1)zdi9&4VMwu;Lrb+HkblSYs-PdvpN<=sCI$}W>Yqii2&@a*)n%_P(wJ76P}Z8^JGc=X)m3aV9*+nLT!&c}72 zSb}+>5ut)f9ltC(VoHKVW(YCZ^FZ9s+0biL?X=ZLM-RZ6z_1;S)27nN$LgZfNAVTX4C7^)7XzepC7#B?ronW zcxbcSFCF2(O#Jrta@GvXg<-3Pe#ooFaiAaJ0LX^@;&0neTZL&IpK(jQO`4>@olgEb zjvqFAc0uwBJv@$qn@zB{P%elg_5%Q<2$5u(@W@v9`y91l3$}Cqn!j9JL~0ZCCB2HA z4;QQau`fv-;SI`;t9J^ECh3ayADUxTMRA4-ivz`VW}fBS zbPRMc1bqahO3{+xFKaL-{k8T2DB}Rd1<$aDr|6NhsCtxLvT2WN9_=%j*BNmhwowYq z@^3JVq?GFFL&NxBy;*3y08d5zu=|E)zIQdJneUZU()*RcRv)d5IMtCj@j|EW+$ZI6 z!#@u2E>j+L`nADQ!ug6OI&B6Q$8{|fOUZf<>s4(=r-~65{5$5*t@R0U?)~~D?v9)1&}@5xch0#%yUM|}+^Pz37m>F7BJNRN zC$S{g+WB-5nW;eoYFS;vl;7XXdL5AgJL&VIKXjjo}l4_)(qrFR*sT1<9QadFQql;q_XWHtf#_pmny9t=R1P{tin%2g6;H`Sg{C69o}o-*BSDGs;EZQV1{qrlo5V#`RiPD zlHPC8niMM?RY>>NTfVHc&Vso$po|_j(5}2B_d_?D3oX>MIe%Hj+sN9fjx`k)NN|XD zi_f-2_U@s%On)ut|GD+Bo00j$HG`x8XHf5?#@Z&Jk;WFQx_NFv!qFPQxN13Y^OfvE zGw*H1Z00p%LzUZG*LaE7q_4bYB`NtzWhFTerc|0$A3x^+vstO9FermyfU^d88%FAa zy2F_6!WE3bfaOycrEeK7Q!=_3Ow~g{^6cJzRgT%i&za1~?nwhCog~+we$MV8l48!ubr10B7$2-Mfjw+QrWFk@QoMd;fX{EIbrs;bx&-R82EM1a*C{sWoPa^)fM_-Zs! z20zgPmY@`qH3h>t35*bjP0nE1;b3JF{657R6@0s9cpbyxpF3w384U6Jf)6$(VWYi! zOjp$JHzk9MeO~unKSNEl?T|=W%w>Cf%ME{SuC4+r=j-16Y;E_6wKQ|3gOhdh#sqG` zes$chwmWo4une|-?uc)is!~Q-m`z}{@Q2OeB1(d-NvJuq76dmw*nlDjY}%4~rF0hw z&4`O@-s>E&-A3m26>%9?_cd4PM~}AgB~y7uQ^NOkJv_6No!jtFVAIx_mh#lhib2!G z$i2mU1%Dk~nIdZal;vRsx*Ncw(MqPzI%)Xt(sEl`apCT-@7`zQzE&>~Zxw&XY!TSG zEkn7CF2GV%*Nkfi)-7(eF>~BtSU1YsZGL4PMl4W47_20{^@RgOP`Q-J>>VZRz)mTK z@>y!TkC+f6Blu}+Q?cxgyz_*74%_n(Lts(0p;kU6DFX~*br|d{Vr@2$`j8B1>AAGJ z7fVZ*ijJ#NzdpFs5(sIRdSF5+E-1~rhtPpCPEi%39|_#4W`4{ zsN|O<==DH>P&5l_X=7j`hjvwWx3uv;Q0m0y3P3&EhOHHnD%!ADLL~tRPBH9KADtZ% zQ&$~5V|bUAX2O2Ck zrirL*>y&unq_aHo{colj&K~}2-B_x3df@1AdE#)D@E0{xcJ32|#AfZ~=@bxW+ zC?LIsC?#Y{7KpUXr7Qskd3p(~%eX_|90ivt_=C2Zs)h#46By&)^lK&`T60lc<-eX{ z%Mf)LbpYaQGhr>3zn(jdQ!MP}7TrjOK@Fxxi;e_1UKB59R81Fpe6!N`c!6#qw+XKl z{k~Q=6Ukh}lEj|#C7zx&R^&}okl&;^%h%#m0tM?4W#=0b;{>c@A9tQfNNr*%OTylm zneqOStt^WFi=x5xs5@o`_(^&(Fg>a3{P51ye&%53ArQJM{`i5Pk}B3_q(ng=0eUQN zmi1IphxyVsR~JKL{hwMp#GiWk=e6o{R`84VIlxJ}pje+l8)H(oZsDH4C~@KLZ$6f+ z3;tqCJ3E4NoesL`Jba0LhTEI;kT;hCnyT+935kg@fWORS^`Ckp4UZ8-F>E(|Vd&*q z5-im}aS-Fqbk`$3JMfS#G|-m(`z^knL1fZfANOA~$gihn3fz zl=G-qWbqofr_6VFL}w7}+^9Us?)~*cJs+#VbbuO)52$wFWd&eRgppy?OXSF_EvTJHsl`uz$ov`+m6j=&AmCj0dCw*UXktfIDp46G=uCe=6rUa9^ZTqkpa-l zO2*DUuN5Z4766^wZ4yM-PEhHBOOqfbAvIetmj2@kNRc%gn8V2(mqC?)yY_!3+d$I$ zZ$J)Ot1N~C(yf_6D$nDwPZPSs4-?wo&>w!SVN688NS$9E0KN&wp5gzgQhDCWz4aJ7 zk=$pa)VD;x%miFjD9QF}Jk|mf7M`RuGb3pG8$d+Gf6F3LWS5)zn1+z3DzR;C$DWj> z6Tc!Sr?l4*^+SCBK*>fsR^4X6Z_k@4>;(OXoscAc=nl$0Zo0UIx&5>n63xhlqO?wx zgm4|-y2?Qd4jE2Ci6@s>!pe%71zO{j-UVoiqnP{;>6EtZ37K7e6P^UH>(ZY0BI%#~3!kFQjJQYmVd zjhT{cRW}qY_31dPBM=cYKk75SP}@+M@QAdqfee(He4&HL{_a zW=f9dqx32XHlz5_ZHeNc@bJooBIut%_>uEb>TVEC4nTM=jD$)!3zj#MliLs{cL{H` zp3qViu&4bWG{dhn*pesape=o;2t9Ldg0p6AN1N|LZ$&ugNRkli*8-3VmFbEX?|DeI z8d%Kj#>UHVsrY0S-Izj$2K|zpcB%sMgp&O#lPgTiEjglI`=}#Zo=)p~cJ)=4j=K0} zZ0%AnrHS4?>6cuUf{{%z;=L;1yHJ1lW@cTG{2FlaU0>#(>wpDJj#`4VeDZcmHar*}r*spr_Q*Zd`W% z$uqmR#czJi(>BJ$I9znQkEu{UMKK_h}(d&~-g~GFz>=u=^ zMO{Yez7z0J0Enh>U>#0%)p=Wn;DwNIg%7OJ>lt646PcUF-Uz+sa?P4qq6F@Lw}5%6 zqKouJ?eJ;UUcS#7eBYX1k)PdAjFfn9c@D;RlmBx&aGFU(l7+MYS4}$G?gGx)Xdv3m zgtg4+t%(VPqjqM1{bbV}j~wa|>A>wj9A&l?@YvS_UQ!?c^rd8UoNmk%N9Id}0^&x% z%SaG|`)nWbucBMf`>m)$)GEM1W@>n*n^mpIcSjHWns8_6H@IepzeX}!=AKHAlsp}n zcYAAwwG(yA&bPkr+1HH}c&U?sIiYqzg~n?2YQG#9YD=TIJV)xUA37(_bRi_&jQ&12 zeTu8c98(GUW#Y{sf?UjXI zgL#vtarNT_lZBGX(Uo4jHP~To797wqy{NBRjNF`>#L12Q^EdXkRH9>-z<^%H#mahL z3#YA3nsi}Je(&z;>Ja^WCD0sFz`Ye6$QWB&Cd3(yk4f#~+@H#!UL0Gm4c0DsCFV#* zH4bNHr^J14m$mwUG+8)S_`PtlfW6tlo_=sd*;I1~kkGev+HcXV{~TD&%l;|H=n zXTvS*tLekX0W1buH$5)f|FFh~DA3MdFUTJc48;OEu37Y3jEKMG99Oeo3=YFUUW%r& z159wlEGFBDSV&c!V>|E2g~o5j%KOXz-qE+&>joZ$h!6V1`)VGO!0z8^sMJ{J#HTXZ zlu5~ZL;9A!b^CBX0wuE};|>-o1LzeyNyCO5mF5wkh0a$>%-z=`29Kkv9%(hB&tJJVp33mz+?&3s-%3p9l024o6_Sz4@JLogPowIXeH!ze z))~;%Sp(Mlk?pbrKToSOQO+vWv${cn(-^9LxH7x7bU{5H?CPN0;i*(|^8jc8z`AKW zZUrj^16G+;Qn4gPw*IAflZ0$Nj*-ad@IKRe!Uy=s(eGbY+8)S%W_~uqSGV*c2BSePUT!`2E5F%VQMCd9fau6tK^Mvl2|+RbR{$b!R2EZRfoy9{qDq-!HFcE zm3l!5t21`-8_Zut@bS5w zP8!OwDl@b@D9v!*Hx1kyFLmBV-Z<(lMXgD820HF+=F-dt5NL-s$XMo_Sac`{p5B8u zE%qUYYm8RKU~W;CW;Trp=DM>U(3x!j4;d*LBn z;^6k8z|a=v!#SMv?3*>Y0%eLk(g;j-reOlhOKay+>}E}U4djA*)#5!CbiDL*)P7bu z4h{U01sMDhw#s6Dn_Kw~)AZf747~^2rAoQAU9c!VE%BaqU7hQvC5noQ9$?e%gYLfc z_^1qqOIiq(DfOtT9&cU?dD<1Vmz_@XOO%UBYO9}(oa1lqI;;joW+&_ zHOZ}W4`=fMI5b3~Mfk0OE(W&@!IHf8-jny&EJ=qQt%M4}bsZ9<^$KAfOOl@W1vo{l z1Bxr-Q?+})a4@!G)24yEG8mgoC97a8jsUmeIjvXpxztms3Ac$ri)<4}#%?>tE>8^>Rl zNqDGqK_IN^mg1sgz#}2cFz%X=OV*=KCAD>1=HkaPX7uK9FY_f%>^iK%jrm!_j(_>m5Lj)75rr0tWGw@s%zDys(dnaFrP{ks)Z9t; z(tnn@q>zK(3)5OU^o`uxDgrEDnhRrSHNMpjW&Spc!8Q4dcDmo}U4ht-x0*WG!C*O0h6(;bpp+YdaC4(VnpU1D@X$Y8d062jkK-Ol?&dDosuRil~W8Uqdi>G%55mxptsKi>a6Wyoty)WLeL zX>XgaPT2jp5?%82EO^N?;q51N2Na`6l8TJZ zPTp=W(gyr-PO#%>$QH9YxD8TWNBqLDb{c^!m<<;UE7@N>#YJ z@kQ!2B`ow4OY}{&m2>?JAAdoO))FWTfVAUlO!vHsX01U7c=*-yQq!0dwKmheUQs0Y z12?6=$pspg%oT%-k-OJ~@cz$7>)6zzw)Hq`Mz#7+NYI5amp_@>RmVUKBfaaizaQae ziggAqp5q_@Gy*FHD`r#+)CYn0WOixL3%dT{wM^niK5wG;qwp+t9M7~Y;fHEhVZm&| z_eu+~omW!*t8!pPKk%q=Z3AYx`-&m|mvj*1d2OVYj+0#UC27c_`dA+QiG6##=^4ffmNOzsdyv5(sNKLm#S&Q+xP2YLLlan=%-NnCa&gnPK zytsCm0L+B*T%Gw!fN%beDhBibFNq7ph-8PUNC$qz9CkzPbrP+!b!ULw4`F~wsb=F-yR4#8waZpyYG0Shic! z<%J_)cYS!HqTYZ2KIIkN8B}ihzo^~0ENiSPUJs~=RD43(4+Ih728=T&&)qHoLpXHO zR!IO5b5l>Reel0p$@<0|>%uCk1j{U0f@NU?ax5G6a5rRKf~#p|-nsQ90*DS**&Xoe zcl5TCZ}t>}U4QoV+W74sF6D`szLoU`7q)EA6b?p(QVfT02OC1#P|)5jkRcQ_IX5CZj}t99HNN%Fs`M(%_h%30ee%8mazBwrGi-U|rrd%ZiK9!1pi+1`g#6;!Us zbZS8sq7h&5HPp6Ulz=^e+cstySp}3;ffWd*0!;bw2ojyjm#h7oMx_!J`y-p}8yUxK zMTSdPU$ygYB3t!`dLn|`ugl4}qY{+$FmEz^cb@x$S^~lxlfI;g5-Bt=`y3wB+a_qL z{y>y$#SQ?G4d^3`alQeBr^`9-d7hzzD?8pu`4Jm9;(mi|>SPWGB-3}IiNs^6Qhhj@YhrE3uIVBbCd0Go~dNLYBl)B`cJEO(7L;zj_FJ6i)$=S`RR4E9AVrxxMm8J{DVmbGmF}-(o9N zSvY0vg&(m;6R2|BGCSSR(mGLM0T`wh`kbAN#1Se+)=&JpD@3G3a0BpHxXm&?PrXf1 zkd!#<`aC3@{X~@hf9+4@~eU?v1GBF&^14SaY~%WZ`(*!C-yz~|X|DaZ~m1<=D@s5=R}FJ$?m%t@67 z|Ilg9HTqNTwBLbrz&)DnE}t6LN{Lj{f3Tg^Lb4vCHK=((d76mZ;u*edJcG+XCS?$? z%GK+j`qzXfA1wuUw9;dtE6ap{YX)C;EE(H-Um2U3??!a5LG8Pju&Q20*vd&m1gX2`Z_v-@e|gDr>0tmK|YX}qy>Re zxn(54x@TvzJ;Fv7*aXsJi+`J4?2AQlMBsPjIpAUNT8*OZA!08}1#l zw;jSw7K5E<{%oGUAg@9uy~%@YIl3M1dQN3x$h9n#Tfm@=Amo)R>NC(11vE*z&1rPu z>8H!RlmoOeharE)PqQhVB+7FOv>;a!flQT6mdd)cTDF-dK!c$?TE#BGY{V$zOmIBU z#xu{a33nC?LH*r2Gr~OlUC7)s?*d(RG40=lFO6>A6Y8=!i(iG^$4cr=!K9YS{d(AM zTVm5YE7V-r(qZ#~vXceVt?YA7PG|da)o2^or*nmm`bw|o2Ihn12n0-_`f`)Lrk1n& zbxp9iDF*f5Y1m{OeED$KPT2i>bQN{SFG_8A%HZDvQtpHn|FhFF+WpeMi)va{d5?P9 z<;nK)S#u)@^2juv6cQ<&G9tMiuI)ula#bNb$_nBcgDINeB(B|Igs+eLdsZ`ic8oUC zCOixhOk#l@Y~#JRA6&1+8n+*`cgNRlu~+5o3*z2zZlT0u8qvu4ooX@grc1cN zFg^_uy=PB!*O)rSLRe_6tOm%7<|m8#lt*)R$9<1Q2R_#Uhs#6oJ8C0Ib&{h3Nsf!i zdpU6>W-#4)_U|7jEc%@RUGJ-lv~gv2AR4jmKWBcUOY8r%1aHF39OGxt?ioLy({2l?3v{W%cE=?uU(@#NX^!*(1Ep5bfmJFWIBXe+;;}-%lT{G*2*Cce(%*CgBrIeF zD&H~pmzeuzyz%SN#=gNPxx)xk#7&Hf&d-Cd15f(FJbE)hy0a@?sZJ!R+V$CeI$N(6om%=pRWa;;xd^XAKiaG%7cj27%Hm zXvVSX@V%Xl#ZosHL#q`)TR;0x6;u22eo8oS>yJ|#r<;83 z@*S#C3O_3*ptS*aEw$%EttDT5wL-WU8dpuMs^4YHE(NJqE#wg-T4nB05;6rjl|9OV z?Oj1Yev7wh51Lf)ATcc8GjyKGq&HQx4dvu%(|ptQQx|9B=H`}0y}E_LKqWEg)2an= z0iFqJ3e7I$M~BB9n2FF*`5A+ZT3_I)>wBPlWS$L*)}YJ9Yvjni;)0~<=ub;pMzzU5 z>&fiNDat(5E&y9kx!#w@7_Y6V$(k$JjY-cBJ4$0xb|8<&r$o<0ZDkw6o5oN1dA$Kt z+1hU--}W&qWF=vKp5S=rJn}y= z*vq%ev#*{)4IQNcxLnJ$N?eL$Jon26m_CRcmQepI+1oGEiPZ4ajn90 zO`Lpb6FCnipv?FZb-L>g0G2|p&GNQ+Q*GPUYV`{l8Ior#F*y(_VfVB#iw#y5)`pXn zEPxmVoP>++{nXGUWrYx4{=J0X1!A{AqsfgdSfg5OE*q6l5C{mi@6 zUlnvw--LGBUESl8Pgu_Jzh)cE_pI|~7qdtCaCD<*NNhH`YzI+A)e&j9+TSW3DAIJ( zZyiovVY7>DS2%z{R=)w})=;|`2QL&9taul;&-(O*KWE(|A@60*6t*E{Du1KT`Q6Ti zA^pj629-WmRs9ebP!f)$RQAcpwf3G^^)?p7I4L8S{cBO!&Cf;AE0K;vx?6_sA`z5V}g#JZF{^F(~ z@+D347!j8_D$Hq67faT7F#+JP(?#7eQ*9G_oD5p5D>lkT8W_$_v)?9yrs?E$tf2?)d0SCs(QdgW6~L7bMIL%n|#4@O!J_%|}n}QMBm* z1GNjmx65%+6JN(>RSpI*pXpmUfB}Hv=)~^J<<7&1);k!W{=x32i*;NQMC$<#Dq}e9 z)nRo@ZOc{XqS;>`LQE2-w*-LUmzI&*KdtRT%^%r$W`LwzulQy!rT>PH#hhQ9U+lY~ zCX!-U=Oq~bDc*k~kVH&leP@oqm{IBeoii@Yfjd|I|H%xwW{ZTD^-#k%N&Jw^)0dw?}&d(_O%Ivf7b2r_?1?;>;X;D<+=HqrM}Kb zk`nVaqVGE7MzXytZVQ_Z@@R0N@9gxI!F?Y1S|~$+Ff<`L_acBljzFf9fnA71UOz_8 zUg+y!fY&igvYg3n+v7) zp_@$_!MS&nq2{dVkETts+%tS>F4F{5&hjTs}ztdG?Amuo4$E7 zO&xEo_Zz4Hw2*eQ@dA31!`Lhd?02+wuZ`GsDW1vCc^w{(Q${}p3NmwnOwF-R(KDU< zlB=p+2%`CgB}-tINvds*pUIN*u*8z%x-7MI-zG!hujV|R2}E@=gX2I(L%NQ2{dR+G zkd@7d<)FzQT3g=nRHcSAaA^~2?$V)d0+dqjWtneIt45yFa5cc}?8?AxOG;F~bJ#1X z_h0_mg0q}u0hdzLVG_j#!lDjFE}n!%H&@5WJQ6%$e{MNa| z!oe3$jd4jq1QeP%DL{T4H1n-#yWL;jhEL0yUVdn?%hf6rEiT@^jLEc99x|=yIIFgt z9~A7fjWB(o>s3&a;N!DDGqOAbt`>82p^Nqbl5ZSk-fDTI%bN4IXO5y!hVh){YHb0A z=FM~u<=k3x;$??#fj@;AY)LcHGV+wIq1PW3WOYHq=l{;kRhUpFGkmX`&@qL7cG9Bw zy|ALvLV>+^zPyLXI5hXC_>ybIypAF~g-N(az2Cg!)aVAF1Di}yQE1E7Tpdut2!+fn zE#JXPK1bV>uGOE^bHnjdlTwO1`>%3y>Li9hbQ_4DG`916xwt@_!P(Tq!n_^VM(1;g zO^|qGlwvvX3qSA(s%_IV=4Q>%xU%n^VO{S%tDX4L81_55+JA5npIj>OGN+qdF9vB0 zGj^s;CqMxFE4DMZQqX1KNTKJ)VrdAD6yu{Hl)XT!WM-q*I<7vj-{bp7jUF zlWPrEm~F9+ov}=w%=Cz^d+)OZ(-6r+yv!mzAfgMi>+WK>B`8FrCARQ+<7)yqdpsd= z5p@ZE1JZe2aY4o}p~bSQp)Rc1rV7G02RI-=sLO47Ei0t-VR#lPI=RUjTiw%2kKU|# zIdbI8wD~>ESU+Wfx86G6eKHoE?LvFQG9#ehebTjR0;4fRcyiAxa-6t1VpZU}K!u(8 zXJFejlSUFF8vCOJT?db{sdaic0JqhCirSU>U51;**vCLtR$~A0 zb*THD0JKL~t4w3K)o+JZ>ejl5pa!DBCWNI~3a{&a3>A3p*}dpeHt#`NAPKw$K$_LR z=&HyXB=NQB4rKB|wQCve32HCZ;sMBgh24bv+zN@4qHOoY-r7 z1LUy2m1;*oL3Hn`lgzefE7|Rfn@FhX2J7Pyzp=L!q6$W(0rR=CZ8a0$8nV-X22m77 zwk8%Uf4-ji4aHl%N=3N4N^gI8b!GNr=&nQwce@%}KCo3Ec~&5G08Z`Yu)nr zvv{Cc4>E%^+F9kHTiAeZ0O3!G72qO7aa5DdMM~P}W0Q%=@*cf)K?IoO8c-ERlBB_<%vpNB#u(0 zg%S6c`BMW4(+6MSx+s;KHqf(C>|#6<0gJ#_()sdcS4TiUgN5l3wusogWH<5Cz>~LJ z(fJL&n-8@5TXPmqb_>5I6!`rD&Mw!xd8icK#^QBa;#KJdFO)efNWFl7zE5<#v-Ng$ zfbQGw=#k^6LDjIxyzmoHBpX$;zgjB$yo^&Zn*=!?_lt7LjKKY3P0$3YZIOhe-2#%m zgHPK=-~5sEK$Z%qz0jxW?BUr|r^btgeuJGekMxAQtMIpNacaR!qkW9MZhv1WS$#Os zT?PV*b2fLAYCUSd){;4F-9c=xoXa-EO?9yki^$Sp4R3?z%0E2B8#uS|) zzz!>eNq6Lt#Gbn+)~t>lDFkaWY*4wO$EDwjFgNW3RoSCV8NfBf`%e9RD-z>@=>EQK z_npIR*Gtb{2d{PEx1%3#o-`seg@!6IU|1*d5M;oxNSRi}Q>|-qZPjVLD z_3Yyjdcc~Fs!v(9C-|mib!L~Ja6U$jIEp|S!t%y9$7xYZZJUa8{L9_{L}{;yi8m5& znrx*`RI-sf+Low_hnq_GN%@NT2ngqo*^y00L^7`#g4QgH3?%AL7w02JOk2*Fw0@+!pP=ZHG7@*tG!74xQe+aIEWS21vDt1M_kJ+Wq`VL7>(Eg@|7?bL@cJJ?FguBh6v`RK zjLN!?UJkF-dYrd?35$Z(?6{s+L(AtMf7;CZm2`VCbkH_Na!guY?uyCDXwIdz)UEAd zv7*+?{T3K-pRrkiM%bX0Xy#S+?qS_QtqB+JMXu*#QUF(-sc6uYz+FAZ z;Br*?L^ba0#PnE|r+GTA^^W~f@;l-S$GfSqo|@r_kHUxua=s!Q`xt4v_T9u#e^KAo zc}lDJqLbhI4X&p8+%4Jv_vM%Qmk$?>?pZ!a*ux}Xoc-m=osKl$NCXfK5fp>t?RWU! zhmm;C-8r^;vvQk==lpX2wJN!mM){_60W{Z%;f$(A>!_2>c;4SmqMwe2A^WcPt|H{wIdcmZA4U|F(HQ z5vOM#>6dwF{bJfY&K6}2%jcDvvkVvSKM<-0aHhT)g2vg%VU9{-S{nLvU+Qibj3g&~ ze$eE4OgRpf^nYKsmJl|w@-q2CS7We88|2nj~5Te8?eTlh) zdY-0fVxTkV4Xp0sVi!3s29r-lrJCP3qk^_$Z@;`Z+pFaD=XW~%^g3u6sgwb9Gy2ES zGgHnI2}beHH5W2EoM)D-CeCxIEX?c2bm`4$+f`r>bK^s9FRYZjIF?}{e)IdO5A}DV ze_1uMW6)O(1+4uW;)Bd_M(#Bmav$USIw@cCD?gFPk%jYZ8QBVej4!~2|3H*Vcds~5 zsw9E(CAgO}O0;$us(rj*kgJIEnosR&?EMAj@HO_zKxK53pX=N>pf@CN!ZV4u2b2hf z|89ulWp=-_tWCNvaP@vUz|p04S?AidaUbk&YfSO1z{G1xWoCL5meuIB*940`$;PVV zB(F4wWxqlXYGGs!Hc}YPza-y2OuI?5KJ@dou8mPGO^tRH!(G|Eb+ zF3V-h(Y#$9au8?S%D$af+^sVCQ6)!19h9Sp?|;DjUeL8002zTJs1Ts__WZAOP+51c z^Krsn5E3kr+F!hY6Wc><&>G;gB=jt?Lxt_f9(?)jxb!fyZp@Xb^Su|MwT#@2ypDAH z8^S(lQeKIu${LGI^#z->(__G%3{_(RZ_HfIJXNh_|2FHl8oWpOrK`I7&7;!W`U5d9 zH%<;?0?p@2MvnVzda1--r%J}$347Ns z3kzQO+HSM59VnM>By)VN`7(2zBatr#zffiy!C2FuZoNurbpyZ-Xmf|jaz$O+o-2wn z|8(Q%@#}=zSvr^b;$?G9pD)-4*%0eyJmlJ!b^gYocsgNi9dY^}HL6W2*N5b4Rmo~i z&WZkM$$+B*>3^MvU-W*u>-GPbys`hoSIs(e_Q#@^epirFwm^X9JO-i3a1zEC#8cF zbt^+I*91OtR2hDli>_`aGbXS`2(Iu?8`<{{CB45~bU9we--(P&tPz2v;)oK)ac_&T zaDxeG;4}V~luK;O@>!hY+`+SZQ(Z?xehFIK-oir~!xIR~Os%W;P#|8efd7aLzZ|}* z+Y55Pq6qW@CPm1AryBLT#UhqO{s!Jg_nfc(0I0-oOR^Z#@Ma;5YPSMg>YqT1i5jtc zYPQ$OXj79hu%LyNv)21MREeXn_+Y^yw}$LbCRHa&5641g(W;W7{7bD7tsa@_amc-M zi|Q<>(hEz&kgas5F{3FBk-a3bL+klPQ?2{ zLu|y2?&%ho3O@rOL^z1WveO-a#r+Q(TlD0eEhQS=c$7N=K`B;NTuF>ZzPDIYbd*3lj4k%1!qjc)~KK^Xy-5CTaj7q6*tN z;XCYCJh)+w(5P{z`%Mnh&)hq${W3(E$%n6V>5xRiD_t6YBxdFJV~U%A{{RSnGUY`K zfic02@jIB}rs#*IRJ@xH%QB+OtnDm?pOuuPoD-)t^$hB~0yUm~{x6&r+&r5F-1RP6olV+$ zsE3--x;^Eod;e}wm7o*QCl3feol1Dh@`}iyYtG?xwBhA1mFLC!?BgGq1@;qc^jC4e zw!}U;oN6?PygBkwy8b#ZEvTjR6)j&Dh5FHGiXgogx$iG1)DAZ`unT+CI3H#0N}`PS zYFe{_-}au5uZPn9uqu<~^d;MhwhJ|mbaFY~H&bqI2((*E_V__S^v{UD+qL%Qr%iTx z&Kxb_zynyC+ma0?JWtPi^ZnP4w3u=hYPjpPl5O56Qg@lGIhqU+G~n|Cni{05df|$& z*EajD?d`B>7}(4TM#fVL(QoVUk%31bAq$?!gL$E4t zN2rOT_St-*cMXXI8RGo35BE%n?p1tekSB5{osk^YSrh?Q^Dc0rI(ThDe1W$E6BENm z+PN;#VhAR=e+h?vFHfI!iBQ5=)W!Rs?L0{xgeSa*tG_395ee=p_oOySm9PNagx{fA z^&P$&6;Nl;CAjotevPE?%FzMA*!p05Zl+T&L`7m+NoQ5$j;cK(T%jN}EYKG4z@C~o z16L%1&;>ubf)u8ELFnl`sGmifjSbeb%Vgr;!mdKTuZ+Z?+r!_YKj)$ny2h{1FsM8o zFYP~dKGSDz&q6bq9=I9_4fJ1~MVB8|>kLe9uLtb>Zh~(e?ggx?5?~+nBJMTouOCv$ zhT|D_&Q&R0arUdsi}Kz-19i{`^VZ|8NVGG zVpg};c(dUVpTJXoL40(uULU?2g*t94bJhuD0p4W&gM}TMQ>QBZ_}rk%pxm_@z01l6!qexdEjztt^X!+*gRo?^N(o(EE}9lVq`}OJQ>QuNFR!&XVsw(MSQ#EF04T)ok#GuR@>ua%gt9n0FDWssscP*jn0yq~~=lu_6>F0;G ze+qiW8e(Q2_`ZrT?2xOyqpRx?@DYe>Ed_%52+1VqyqnPBHJCk1^&w=X3Q{}M_1NPQ zwl9JawW~kAyQ9KbUxEIUoDdZiuaWC`HlyED@}xKO%js4l7^eI6e5Y>N8dyzW5`(Vd zj+2!H8#n}VdWoZ6XP+Bf(~Gk3ol(+Q7o*cr=lN^|$Be=Ny;p7i1B z{;o1pNUR;uUVVAElxqWf6us93>0}cKz&z_Uy~4M@rJz&?Yrgk*djE$znRq=a?vt`} z@tXpL4BWWyvQF0pJhG{^hqw{eeQnjhG3t{$bBp;C*p7jjJWe-=M8{{m4;hx8EH?=+ z)xJFWJMtJdv@ySVGLOOOWQwgE?u)IRs^$4P_coU4L{~Y2S*H&lE%cJw&Y5d6di>+j zCGkH5sCo9Tqauq8FO=O4Q~xL4+YRVO1|r5+JUIOiq+M0jmFhtc%n@z4hA((<-J?f_ zaw^l}c>AaJb=SJ`<7L#a<)di9jKpMGRSXXv5JctjNNpv@jH#|90;A1e_kP_sQLT3C zHcze>p5y*Bq){AdiQORHctdezAC*)!M0CA?kqY{~LOZIoKUkN}~ zl5Vc*_pZLa5%5D0?h<(>HE>Co@Fa&iu5vMjdw*LZsAN6yt%&Hy4~!z`pAlkSwI-S8 zJ4oPM^UXqKSD5a{u3%G8R@a%WBIcdZD5Wf7%)`F^sqib-U%36p8i8R$^g)!QYRkI=Q-(_nbf1lJ^I~S1y>9st55QW@~wMIU-0Mr{{9UC^>A$?`Cb969U z(N`bzmNlYt=!QOiC3ycy(ewEc#Zt2DFx>{+#0~iyG~<43WU0uNTZ<|GNlV9SYF0Hr zda#i$#4)n=b?CyEdXyk`vr|~bUaj21U`y+enV#wAx3U87>(BTf?!R&Bh+4&y!!V}B z#Diz>eYm(pRRcjv_>s&RU*S=Y9=n{UQ6X=WBd{KjR;P~K1pd360FUq(i4IWRy#+H`cc;a z^{6+r8|tg>bs=aNs}N)h+z?E!0!Io&sMzbKKw;`yb_NX?0ao>6<(J9MvApEfHg68J zn$_nl&rS*z3z(x+wq=Wo1q2kCB1As#5#oXZ00^q`EISw|kszX&=o9I?*nc$g!kGbv zd|Fn*!n(J{}6xbP<`j+m2`J!dJ*KtPR`go2$IBp*_Dg}vt$i2!1ngJ8-bY^|05VQ zduwd2YR{d!WCAL_yoavFllxz>2b$28{th%8+h^Mu$p0L@;p1`9OwFF`!AZ2Wr>B1* zE36~^xxz7M%Uk@Ev$WdghKix8si6v2A;VZV`>L>FOu|drIcFcHq-B=1w;{_s#1~pF zy5-)z+Z;Fq$m@ALrBeBf=Y^^K;yn%N&fD=yyo@{+@`!UMyT~5)$!*%W^2xZXd zXI)(dk(>RGuK7JP2;AQ4An!`(oh-S9;EjZq-g0nFL%QkTz>?jL$WYthf?vTao=0bl z+y1=;APHv=rn*> zl-^4_^5#y^2G=>|BzwpNc{%wWg&2*8eD3B;i(21DJ}FQqfZc$0(8n})zrPK3@3ld) zhmG#M*ds0#gul90Wcw-K%Nm4eyQL?^LUD4KMHTp-UGI3CQ0%8N;t+=K2xei_96gp( z9S>%2&Wg^?1$b~kOuemI+zEh^>>MI^x#XpN_NW_sGJ*P#<<99SegJ_yC3wq0k$sHY zzQy-8>iBS!eXu+TaoILzpuzh1uf4LrvWGY+=y4Uzvb6AFADe?GA_l$Ap9ypg!(S9nz~4=TVOn zCpJfKd)(%q9kg697;}Y?g3w<3d63R`;NG;ff_5g=Hg?9B7W|#n(lgyKa)S9Myrwah zuOGw_h&0Iq)z%(C$qc$;=PC0=AZn?mvf5}!-?7+NZHFCe^e&^d#b)7W;OjCKcKp;5 z6?VPYiH!ui$QO&O!O~-Z1b9v3M4dr%UuLQf^cG*>#&4QH>0clV2G~8O+ z=d^P$&i(by>-e#Gs9;pC`nRB24fV1l>*a3fe!*VtOtpf5L6jq$&1if!JFM|C9Dh5| zuC8U~WWI@2W>9mYOgd7r;X}n_&9CxSP78CtubtEGx|Sw?rIlqKw$%E+9%fDM;-elo zs6COgXPUGf_G>7WSt?e!5>c8vmM<7)^nBqp2GK5`m)wWU{ph-+|Dn2)uga`sjS*^7 z(2ETe$irEp=}Om@LoZK!E@Qs0>oBR#POMCtvN2DlxS#n8OaJ7H{wmI&E#Pf;TTf4h zi6JdI;KaWs74+R}!v5M@+-TE~ivI2kSlSpO-3GLwb~C6I>%UGFoXw;{;U{~h2b@79 z);I%fJm6fRU>}Yr4OFT?s}%gfDz4hctYI>Ld~3FLr`_yo6=-ZR3efi^s|{DWu+E)p zXF}-_Dv(Rr8qm_hlh@y0WTlws)a}7O%r`Yj=IXJN#~AN+Rfb9dkeN3&X z0S#0Vh-0t)qRRLFg`6uPpA!ko`-~`0tJeJ*`)5&E(UzBh4*oHB_$QB|TL(|8f*;2f zdL$Ev^}TIUjAd0cYPEyA_uO|ncLoyiFV}&6E1jh}8Tpo99Fi*q`CWcX%@H-VJ}p<= zh;RX!UV|aUZi`N%Y8vU>CF8fFv0gMZnAzu@PJKogo}u~`+hG4*f`|;` zbY5at!x{HgOexF=C?zNlJGta#$8M7O;sR-ACnz9j?d^fmJpa}dqWk_A;9-_Bn936O zZ(FjL{i$ZRwC{}s)l|^4E?n#;hBR{;vGW3TE|a+1eGgvQQV0J#W{iKQw6X4fNpoRv zaw-v-jx`0M&BTUo?vU$9!I#ue>#nM^OJ)L}n3eS!pr)1XD33$28Uzf1>*H*aSR~^y zOD>EtjZD7he)g$onUgz8vt64~HcLxs+5q7xlQjb*`EO+YmR`X@ z&DPIsfT+_0k(W&q??+d4lg z!vmshYrOYg&y+Qi;aJ31r3|pQ%qzmlVj-)rANc#&x9Iedv1ZkEp#Z>s0h`!%=^Ngx z9kiZJgZk^lB-W*Q2xGdFGlgT!@xQdIEtQ;GuxzY+?EjYPT?%#Sz`arJ8~VYYJY!ST zau#$6U@a4+XYEUzbr{ILqV2k}q(<#u7u<_=WjE_;^kTZ;+|CgQt7j5%wlrwnx5h<*dIH}Ovj3*x4z+yc6qH(^_GD1 zogKNZG5o$i1Kx_^yFq4#iXtLSK-bW;`sVYPD61d#O#gUYJ?<^Qso-_LlbFO=^YBf? zi}>cnQo(qZsNpzMg7{_VCzDbO*=&(bmt_WP3Q6S>FAq~{dqjVsrM-6ZB&-PYT?Vr9Y+Jlt|RB?1~Jg9#+I@ZEvW6(-r~eW z+PuhgCIr@0c&3b=eD2FY`ERIv>BFb4>Wl`0`+w9~sq~ODddcehP(Vll{$3K^n_$fj zJgpv}!65C3iVxOO^(G@o%+jmx+yB~kzQ$LeK6X#U%17hxXP)#NQo<)jZKRZ)jEsiC z63Q3QT-oM2VDAp%{_Ipw))bu+=y4FvOs-E5F{mW}NdOMvzo`MIiYSJjv6x>lG;;8T^9)?L^Y`hGDHV~0Ft_Po(bu=XjH)1zb2k#$@&7}dlgRU- za7DN1=Mytd_6YY6pFCW4yW6vTc;B;$m07OQZ3Q2AA$XVx z_RXYceN7`=$<&u>F1rnyyU3cwiFFL}r0{fpwEw$qB2TZjS4x(;XZ?4Kpphj?=Ky|j zAt~RRCVC@IIR&OCVD5IzMNc<5o%8Mt)NzGsJKrDX4zqZQ+)xkJ`pe=zO55zLZhGc~ z0p~xZj`)m%0GbjYC&MgF_KZdWi!p` za7P~RGGEhXw??O(V}zr=Q<~}aJ|t}_5U~QyjsP*JNaB1jELrl{MU4HLeUB>bw*>y$ z(Xb_{X{A?lE;YXeT=$jabFCKDR^3P(&p%8tIqOjAPKfaOjb%O3Co^`JENYO?=1p^9 zE*SKtb@($rl@I$A!ZhpGypS&$9?7cQ0WSrp zT0b~Q)tNLhPU#`ZtChOqGoV%h20yj3rWwHQcNIy5v$i=L~c6Wggwb( zRT4a!Ob5|yjX;T$J?#Tp4iZ`f>H&uirYt}0~h9;uYz&^MYIPfGEL|*^(paUGFAyFp`UlFTRJ#Y0mB15wO1Kh+aDAbhW$v zE^FGS+MVKMV)pWd#GN}0@oQrDdHrG*XNB`lbtMBt?!k1-t@G4-=p~;C>+5tuSrb<`2yu9Qlm;ty_T>7P zl0AB+3qj_s`tQM+&)2ih(}A38$7eyFCKzNm7g{wU(0pCQva?6-pjmwB(YTig&F)Cg zYTA~fb6tWio5a*_0-zT4F` z)i%~PYR!0=(xuYD+@uWoglbpbLHkAmJTom)b-3J6h*PYJ1K=-k)xT&t2%Lqjti8S2 zF;xERI{IKS-1FKNZ0w)yG*Aq39QX8+!bW65Nq%)vwZn$Ba(d5;-)mobByu&AZMtV} zjSPBdFukb%$K{w&`mEL%Xj^HGoPgUoA0n4i}-yKMk;w@)?mkx$Nxzc|ZeamXj!qN^(Yb2&*YVm9Wgb*Hr zoMJFZXs*4XXBrpb9o9r$jjX-V`%2Glw=|#OAE8f7bUx5Rc`F`QbJtbhGBHbD&Vn{y zdL2EU{8OU-DH#Atuu~-7m&s|^>F@@VrXHH^6_gCSk)(xK=bn+(_5Gt{1RbQjuIwZr)cINYgy)b`wJ8n(#APCu?UPS1C&rhcc@}<{(kYjXQdggUbMy0=%PWA&HS*uuzXz08^iY^9+m#n>Jy-Nj&fyF1!s{bl{QR6&dt)#F-aYZn)u*U-ex>V39)WUF7GQXYQHKnm$vzJEP~ zN8Cx`u1Nt_KV0>#3I$Lx0&4Cxkcc;x&A_xI!2L&|>Q|@rGtpenH4$}&-etAhNhWd4 z>(~2*g$(^0W@Ue38?T{SV%!MUrvm=jMGy+rm08u<^yi@qxK~)j`u_-Mt@za&YSGZp z_*E4B+kSmdcW3|4bWfg)Tz8_P>$o+WX*Xz6tNr;V zsai>Jwrr{e>V1Kuxiz5BY^syT6ii|vIL^FwVn6l|f4#7@Mvp&=&ilA!APZmNtzrsH z<~$NF!k<1ixsfiHXId#3Ckck!6>=b3KbJv2$;(ozHG>Nfp)b$$mV8|hKh>#YJFJaf zzl?Gf?7YWfV8>W5I8V~E65>8l@c$9@-BC?_!PZeJN);5OqXN=b?l& z^1S>$?Mi3B6uUza#nh_OD=?=<6Rr3;(1*|z#aVw7^WDwiS+|nw&GA)70ul4TPw(SK zToYhu?E5U-`q6Kzy1~fzo9cGaD~r5IVY||$c0h2SIw~Nk)ddO-+o`ku0+MbGpZTC3!?@>EYeOh;G1qCy; z014i3FA#bxE7yE)8bPuyZf?tc2As)8PRTxwosm@dI*Y-nw?sr~)tLTTZpJ{>k; zhxp>Y|KtKjLE}OhFWvk>C43*}rw32}NI}+jpA*z4p3s7}_V#iedf!lN_Ok$J7sAlr z&IHQoM-HHI%1a;F_w^7gePcGkRAUn8uVP(C7J6UQjpGQqU*J*ZfxGQ{+w$ML7{{46 zN{7l%lA&MbU#I_?1+MSX>ddGMu@BMMxmR)dy;dJ*PGHIi{$e@RWoFbtvXdAtpDS{o zGd3mnubCl=WjIN_K#sPs(US{Ts)(pS`B*M^`Bfc~UhxJeVc}D}^8VZ?XhQ8*bM}Yi z$eq$n)XPKKVV|P1*jqzNFO-vD#}#zW+)?eL-hp#prEzoT7i$f5PES3Ll?<_PJTou$ z;z_gjtL4keMC}ctb5r*ZZ|UxDyzewfZRE8e@Iq~4n-y5=n#=!#9*j^6&H(lm z|Iu?FZAk*pUnqWYGIe5B@A-YmbKj~vzR2&iYDY1kAX9Vcc2|y7a|) z0c8vbcep>g&X1t*{|D-t<^KHkRm~(U`7i5?=w<3I(|oBN_iBaz@`ki?Rb*5796&c1 z*y>m}Z&r#^H@?swxKzcd0EHhFVS=67zOsH?K_lP4Vw5hN|5LD9(E`7A3CW6^fH2Uo z4xC=aD4`V01YL>c4=suVfW5Nfq+r7G1ZJ3ZA8B5XAeRJ~dzHDw(4}?i>)X9ANxNV- zI-De`e#~2MQk*8KF4_w1FIa(xs;U?mDCT3MH_pp7J2JA42+hD#=;xx4n2VG>7*wvU zg^HitTS~ywrJRW479h^v?$J!@Q9l;SnH)p_2Mui0z_W#+r9JY|3Z;7TWW`~&^iyw>Wd_xN~288AP1Oe9tz zv%xApf3dI9b9VGCM0;m70y8AOwHIHTc}0+$Dt5V>eQ~2#@uL;X5j(2q@D=YL>9-(O z9mmRDea;t-_|wdpxqjfvuO|cjNJ8C%gDEPq)#6@K=Ac+RMa}gZ&nt9LT<2i-^5+`p^m257tiKl9n+V@tv52ewK;&@0Ic-~cJDk)x;^U|nhVAzH{$Lg=HXPw_> zMeC)-plzDShTG_jH{J)2Sb{R%%e}7j(EoF;1*4x-e z^||(AyAic1n%LbqPhZ-CN13tSI_GF8_z16QmX8`9%2~{45{mIdpA}%qB!pQ?mPc23 zb0kC=7DWs_SbM%$Eu)M%UdC?t26=CMc4(ZR7>|QbT`4V@`Zof!xK>rAv@D=L51@(i zpE!t<$cH(}$SbI1S5XhYOB_9wyairtI-`ZSi!kaZJ&fQqh@@$UFdZDi@1Ko|FzXNY z&igN=BXV+q6HqirMp+ryY-QWEnGp{K-f0i7c9SVgr4tc$!O6&j&Sd27lE?H=>GM&Y zkSoY}bUDV^es|h#gU5H5VRndPiSM@hlD=($vFsdRuuW(TjWt~y!T{SBApV7`Fh%LO zC#w*Bm{yX~33>x#0Ah1QA%rI`79PAje-0qX`)j)Ln>-Q14ed$_D= zBG!G!DTU}=T@*`Po??)FR~}T%C}j-LE&$gGH>}*#m`92cFG@o!$kGHDn$)GMtN5ol z?G`JphJQf8-p=$vXdot#o*xLp(<>j!A^sGKnJ37Zw-a-<_YJfa_a5!dxR+`cYYSmh zpnd?KyZud)7K0p7Jt~c8e+!t$s_}(0@(4vLr+FdEA!9xLy&?=z)v9pe(Y35+7S#tk`r1lYJBVSNw z45e6bVW0U2qA46Z`W@WjqEq+F5kBGSb5m2a@S$=?lV6{de_%;Mz4ktMuCRW}9qoXW z8PDGiV$?a!oCD7xilE{{t#of1DcL^?Hm)VM}lJyt7r6$G1Yb#k;WfD|O*D5jiYtZ-gvz5EAoE>|GO8i7FW{$37wdz8 zj;Ch+8#8HfdC}5brl#HMfvXo@7t+JdzI9ER-DRVj!;`i+u7vQ=duU}wJ81MF=c2%f zBqiDDvS2*?ZAP%)RK56ci1&lXbV4wUV>IuJus==pHN>x))gLLFeB03CmgSefLh0qc z<;mg4VpFaJAB5@9dwKd!Zq-TaIxL3TDhwLjfpn~NpI&Jy9?m7TfAC0d-bF4Ppf5w2 zC#>oe$4B8tyX-_I58JA5D^GlDo6S$@CH80W0yJ7Q1sX%M+c_~nc5~4M7yJK8tfSD+ ziAjX2C7rRG53FNC zbIQ+I`0*JuX>mqw$7D#BgB7HN+ryb`>+Us-wB5b7O#))?kKIs?Bsymr$%>`gNa#5@ zI{p?UwsxJHmGtlP>wiiAjr}kFOwDo*%?$*Fou3~PLU^t>QKW6$K-NQrK>y>2?OfHZ zjT+_pzl2B5Od;`cUQ#J80cHAZSw1`|2EVH6*<8~S zLfEp`>N*oGdG08<^b!@(ZI30VO7d_I08SYIzOoUiL6weh-`=PqbRnri>2dIrJRD?6 zI95EEHFr66K9pw^uM4nirckh0WygdMV*%_l<&ffjpetKn?H}3fncONtdF^%mN87Kf z@SHb>;(We;`>`^oJ8%D%o94v?*B+(jmHO2g&oLGhX}>?gO2Dc+nk5pRj~^ z{km=}lzh8Y4EM1Nn0_o=5hMQdPYt ztI6ez7x%z9?^9llue&K?1sNKwq{>bovUSiqc?`RYvDJ;m=7rm;W;%ej<&UF8EDTvkI3Gl&wJh^HQ29Ykwly#EFpe?3bDqR}wS)1p`e<grG<~h3AeanU@ zMc<{t!defVKIP!j1FB+P9GFWwVBypH&`;KT!Ck(H08VfYM=rX)sTQbV2=_ybv@6l< zV&XySG~LnMx1ZnPQYLwfL^=9)WAr;fPYXEcx6j{Xc(kM~0J-A+Z~Bqmf*1>u&BEHa zN5*~{yb@q@#!%G?uXdxPxs1i5lmDiN^;g{SGWD=820h~W^ZNO1HzE?#?k@dIDyfI@ z4MQQC#i@Lr+ZExrn=tX@sNHjOhzb>U7u4T&gFGS*IrPKLtOoe#?FCyggt(?%Hjz zCf}`_KTy$id(Fs&mm{$$h6UeZR@LPs>;TCCrXfuYofJt!%;tlNI@l@R>{~kJ(uYa{ zz740vgu&;ybhCZ#Pr>f{s>&dz#)+OzwI4R~n>K*V@>47CAa(f0csZ=R8S|7uA#rwY zkXDOs$$W^CUm~+L*D+K7lIwI*Yc5Z6z3gc1)ZJx)D|Er8vE`1Xz64ufmCnib>ZqqKPAXh<-xH>aDYtg2%*_l;=na@vc)2IS`%{adphZP9sVHfmIY;}WYN49gjI4mHy3s}Fg^bbD)>G5E zT4 z9(LtC2q$ew7q#rPG~+Vf80?(%{+6|Kflq@08Lk+Letq2c0>Ka5ypNO6`t+TR72#=c zH-Qmnfkm|`vHcCbkKRLRO0u&5Zk3Peu?&p}Swinom@jBaM?uQGORY^QANyA#(U1Z>>f{`#?dYFQ{Tpgzj0e5vxkp7{Q95? z!I$a5NR;Vc4Wec744RajRKA=11IEx|Gif`OZe;V6SJ=siT_1gI)4pRK^f?8#ibw~o8Dq@j66RB zZ;Wyo4krsQ*q8#FieM{^m)-Y^3+2Nlcc|>wr2m_ET6S?E zX~t&HQ!TF^PGQ(zjl?{i)t5Zm{3RJ%^+iFFPA|iU4;eHge27=>ducSQ^;;ylJ{=II zRummyyO0K;YFVf~`^;!}KjC&lL@VorPm@m!8yD6gpN(U(i09fJEyeTr_&b}{U@H4d#fVY5bQ~Lbr_gOIbaoVKs{`Bnc7^b>HsN!JVtHg9Ns<+7A&-b>biAADg>J3iH7PB`)W515i37+ZeP6Pi%#X6}x zt$S~ui-8$8N#=7@UiWU`PbT}6MSR_X;0Hsfa{9R{`GG__{!&G-U`@W+%sxB-4`{v+ z*?5;S9?GyydWP2Sr9zin1;Uns7zWDT*%Gt)z#KUOF#Cr4LAJ5{+U;eP)i8}``vDwN z|3GCJ5eywZ74+U#N-he$xa3oAxe6{^7`J&Cf1sIQg+wY~g+x z(m`3cK4eZMkBu0+;ikp#52VQJ^PjlLP>*mG)=Q}_9>m7w1q`btOXai?_iT%9ZI)#` znnI}jAl2}-C-vLUinQ^69%=L^Bnz1kLH(*&+5?4oj-uWe}v z)$3ORmk(@G(ZM&QES1AHAddRwc$K3;u8OE_MbrG(1IN9q^`Jk0HsZ6d;Ss4j zU+tKxgTnQ|xi52@^=*QT`=l*HfvY|v5h_|P=QcArMvAH=UO9n&p* z9H_!+I7_}xcL8c`n}$Y%ly%42;SOj`%%um-mkQ!UU> zu0Fd#JBLjvJRR6PV=&W5#q1h0|xG6q_kUxAFyK74$M$c zJoDCtbFg6i?%}ij@}dL*h^Z50&j&V>>`}>iMpt){w_6dlnu8fXNBc#^qrclG>z^Ij zh9agG?HIaRZQR=c4Myq(H=uOX@sotb;K^5zl*2cwb1{P42DMhjL*u{RbUy1~|J{iy z@EPVTryKnEwwMj;1Z>8O5j`Oqh%HcF5t6Z``V4s0ef!>eltI`N-vr4*{f36XU0QqL zU&=NSooQ4R^oH*_c#wIPR=E%pjSOb|Ie~OK_lELPv2E=}TTrIKvTanWKxKVRwgZ!W zM#{FFj)?4oBaGTmthz@y2QT{QkZ*YteEKPc*P;->W}MI={!~o2Gn$(>wL5l>hg!6<6aLzg zDsj)wB5|ZE`jO4L#G~9ZmK|o5nf@MO?a96jL`UeYoNbvey$5|_F+dh1jAPWJbCNfS ziA{JJ?T|$N;BrRZQn%?;?9Z z)3$p4y3WZ0^44&o`swH0kP_c_kvFfAUF+7jVmTdD&Iv~>D(FFD@tq#Yq-sgi_R-FQ zu1BQ&M^}xtQeJwdt(W=>TE zXT1Ozr7}B@&f|MqB!K^nQ*?ktS$o?VPgupfm4_{f;a4(l%g3Y1H-{FA6#eh}?TYE2 z?WrA7U6JrByE4TCCW`R(E9rUb2)BL$sZ|M|$$gagftm^qf^}b!Zih1BHE_cFFzd-y zTD;U0teFzE$Kdb2oK}auC82*8j05Xoy=MIjPj#9?)E>KF$W6mB4mw8ePR?k7ZJzhsqheazl)Ez4%AYWeUVf8=!Ub6l@{j>8{92yeUO)n<4fW2X2}v~Q$uwj zw+cX~61_5~C+Bna;^eJmbMjXcbs?HWmiM6Zc*@ac_*!Z z#qsNRDvGz+Nc;_D_iy|MI(d(SI4wijanT~dvdgUM7bg&$Ocgp~`>78ogdVLIz0$WL znFClS`A-sDUwNVzR8343$D@O{!G5QvX=tBQw>r(0F8<|AUB2LwlPN!UjZ*!!(-7$k zTO6WWN%|6y4!wyZ??S+fc8)Ke>F)Qez}jRII)>lnk|CCD-* zm2b{(`%PdxlE7T;#==x-cd_d0Oq!YyBrhe~I+u>L;#>`#C{aR~*IINS46|korq6*s!FxKRShi+@llBF$v#k+B zd^~tDL_hFr6y+r;zLli<@yumm$hL3xC5u&TQlaLLcb@VbU-in>$XyB}!`fKXZ&JKV zxS!HOr!~Al;dkc%m}FD(p9nhSLVZsQ@Dz4KOf6|+u2&k|+vA|ccf~*P^Wc3^v`*^Y z*D`Dqcn!TEjP5@ILb0h1q_5o18}5mE6SIx9F_?cO5{9niwCo!Y99d6xI!utyR^H<2oWAY5S{M5LQ;cP>M8;)L zbow*gN7yX&T^p-GsMiX)Q!szYcBQisvhRRvZEZc%hsmlx&9+wHr|ffnNk%?=vdh=A z;C~>UqpgNA=Wa-EVT;_k?fKXq4#P3y^(|zN=gUY$#iWV#cNNOIN)o_vUb4#+VyP0Ru#%(Z!FtGUpj}F6*#xvuHK*B;&*%_*}ELCB?dRFv`fkv4Vk{lpK#)i`W^;Txt zW@DL@P^Q48T~;V81v8gyPu9Q1HMW%~KmrPw`+3$)BiAiHrdz7kF(rNu$ioCM*Io5U zbNfAb$0Ii40Pb`rVU@tBY6rg^-j${$28<7hS0|!c(D&*JFj3r6_ZR~+j~4Tl<~S7s zsRRs-(63f_RFMP*b?%aFz86buSfyB9rNKoPNzJ*hAlv~&c|vzi@9La#Ins;ZKl3PN zHU_B-`woNNs+^fFRgLTa|Uy{4Z(YCXVQ=e98pQBG$Y2i0Et zH~zmUvWqu5K6e=Sy*b}#SR5mAp@-3+id7-~#U5Bi;0wF^(A*bfap|rHVjkf)d)Yd$ zJuC)p1s0ZT(k%6NMM-luWO{CJa9&fh@#QQQoi8x4XRu!73scm3;Axy2no8qdstat& zGw;CMVF1pfS8i9XM})iLwJvl*2Y}v()ADenD4xD{Ul~LC4KKxX5C5p%k~C6M|F&}y zt~Dsc{pkculAWwQ&p-Nrc`U!BHShKNKhobHDHgwcI~|=h!QIbQ(Q{@XQ2_r_) z85QYDGP+O!hm7gbLoG$lkrgG{alvL@tl4il^F*r!!O1)U(cWf_yD@pr!pyxj>(*^q zWRsscFs?v$x`-yQpPxDMTcTkLn;~lZ)GNZj5jXK#*oloEVKV>I9w?a-M=&vNZ=a(x zgS~@eNecHaUj++Q8D& zW0v*daVs!A zHy!aMKON?WIjS!QZcfMkVnmVe%JzG%pH>WVmdxeZP5~5s_G;)${W-f8*bW`Gh(MnU zD0_rETiLLBAKAkQl7K0Ryk09gu7AIN{lKD*oy`Fhl5x6~g#dU`a2{=O3ReLIjl7N#H#bDD*J z3^pm6LuZ5*EWz$fI|K4f^(4P209d7Z>uj9{$&AuFK0sdH1y@ z66CcxnyjBTMX298OK0c}w&Wn)=|<|uTP%x|x8!C&T<%XIJ4<$re0xws47!#kgKG8B zrnR&IjKIYW)&C1jLbAU%ZIYlbbbu+1X-=P0yV^(xWYn8&kRXv@#wMp7b)5PWQ(rcrWv7&ZHSTB(HI_u;iytj^3ZX zy}yw%BzGuo5U7rBD3di>pC|=R+X=(~?5>svksnQGo955Hgu8z(tlUlP9jFm5ATwod zk8TPs_sE%eJw9n?z`E()G(&d1-1ZMiucZ3{|hCJjEHj5mbdX&@^^G{uaq zK5xpAwqLZ)8VOjZJOp(n5NQLvSoBaqcy7AR9Dt$3vF_& zfcxrXkdG>Kec$iI_p(5N*$Wb&-0mKCu2h`ww8-8x;`1k%5jMA- z*2=kmd|6Rcw0)8;C2BngDF<)+J_km7c(MNG|1dA6(Cq7&-kn7!cT}Q|k;q00!u_Iw z{*_uiyOwg^N+z6TA1Is}b6BBUhPJ+CP1uN~Q%nswa(JIN3HvQJt9|hGdo6c9ETAlzQ*?;W3p-Rril7pHwS}JUKs?4C%U~#yKA!sL5(* z!tX5W-_7o+&@vXruS;IB(I$>MXa>2zFpb&K=RUlL?Y|Dkj3Tn!{foOWTu@ppFe@H* z*XC?Cu4CvQ2pBxF)5~J_z?fgO?MCbiYVD)%7~TpCMTHas;?5SA8K8!Oq4o0+4%7e; zM2az3K?8R98Fas$UYWBSPgeY?8$CjkhLn2+1w5ja*?-R$H?$E(?H29xbIfK`S4L3q zwQ8;wSH+^^$;Oqq2Vhuv;5jdoj~2KMt4GT4YFJqaHUQ-^O%oTR%M^vdE8n39bEc9| zoe`WH_|x0tN@=m2qeaM0VX7+U=*^eGZ!M0cG*En#WS82u=2EC(g|XAm18>$&tMRsB7;asT^< zLc|{;T2eSbAD9GHv3?uU>_xvDl0lE95JJP~4d=7of=EFx0OkBY&;V2$lnqH>y~z?U zdZZAMwGsxn4%@+t@#hgat;ox_q&NMKIAe40q5gM4g%qofpoDMdfq+i_&$U){5>PKI zwUy&op)$u~$^+_pGx)Pyw{JO$Kd(_x$h2)!qmEAoZ=ip+lU%zW7QoK4>andS3!qB7 z8UInB0M(q|uba`R8=SXQWR#j|emOEK0FEIICVM4>mM34vSl-85Byh`KG}H9B+MOBI z9lbDf@$KzP8Mf_7!7E3K9MP4x&Gq)>kOcZICCXnwKM{%VG_XrA{&^J`dkpX?@r0JN z*2m&In^fv5GNj=FJAuhmp@^kfU1xy3Gljp-2vG?>m_|3Pqv!2eya*w5spSv=P&%KW zbEt}T%}?qadHM0PiM>kBSJOYMm&)B%uC)$Mp+zbF=q2gj%AZb*%>9we8z1m$?w*Ve zfJF3J-B(t9Lp9a*EL24JQ;2HoqxUdv&xET--0oSi3!I6UE@$^Ho&s3z4dqwDaZW#N z-YAhPQ%d&NNW=szm!{XkksRWLlL>?GiMPNCg&sXqQ+c_lE$fN3a`wGa1j5s*Ft^Fg z_Ns;^1R$JXI7u{W_`|LbtNxOER4w}_Ic@H*PDR^(9&Z{OxWK{Sle+v!lIzJyj#=kZ zMm?)ve({>U-!gSKxjP?f9eR;GJF_4aN)!wQHi}c|6tX5{rx!~K_yq&BKNqh@k~%uK zd~|sySi*n*1L@r}cv!C-d!Jx3Mo|&zGZ;~NtEjx9p+(T=RJbWG-V8BIXdaFy{s)S0 z=9Z=H3L*VGROG3d`MB*xe_Ky)xcFGaw!(aeV7DqSFwfY=QrQfcbKpca@s@x$LZm46 zFK=KXuwKgrmlXxewoEwK@2UD&`dbpZuYhmXEv-w)q$|U!JPgn6E>k?e@q5$M%qsD% z3m6R;hM?e6rJmajxjC&Z`V)Ka*!SN8qUQaS9g%swc1*YLZH9@mV7sD6-$oy4y~#MA zpBrQrd0F=-v5=JH*Y=CILqehnT&Ab-h`^T$K4fvK&tn}5W*ZTx%TR7iQQI(1&hNKn zR8=)@c|ZDu&fie>IN{cI+Ie)8-rZl-8S?Vg)K<$?V>$eEVX5-MF6>S-3!!O1Kkp){ z?=R#jKm`g5ZNW1EcNcKmY*$bc2Ae;<*EQWtS+b~|7^BQIy)7pjhfHFr9(a62L@t;z;Rz2X?&Y(&xY zL`{2YN9fV(q~NaW4|rc_SITVj)5R8GwYLEwAJjGtBD4DyO&rEZ^m6L0kA0G!9?59z z((1+Je(^0QR@XG?zF&qk)*RNNkmE3ZII9arvLr5N}Mfw0f&?t;dw z`5PeiW=+Ob_}P)}5ikM@efAI3CJQ#Zier=2B&nIsO)|#M)kR7gdLFj`7A_Sr2XOB) z(>TFhi$epdkzwWFrH~++w)4OFv+Gx3{tuHG{Hn25-6N&Xd8(){%W@b_%`sd0RoT!R z`5&}Atp!X9@!b`W={82in~euSfmS#)rm$wtd%og+( zHXvXF1uhawk`KB?s654o^}iEE92a|PDIu?hacC)jshIPMO_qL0*}<~vsjsw@HC8hQ z{Bmz{vDRy14PR%ZXGx!IISJxXP| zlfOFQBr%z;H`PM8ltg0wZz{1j!uK~m)p>m1y8V=KA~jEi_5t<1KQf^( z1&De{9bJe7`V=r;_s-@SJKZW0+=Jqv9eYa5SkeRmpS?)-yDMXJJB_EGjtXksDb?(P zd{~qi_9qiilzw2W^vRJvTc(2oQ~5+)p3_11*f49qJ~N++h|}0NfE%4o z#VyjXUvw~qHA7Dbe4x3t4?t^Ql6iWsWa=Iq&1_%Q0vml~DHs|?srzjDi5;h+QVc)7 zQ)y_)G zZ>(~jMG~lwr+<*A3*?0VQIJg*TiGaI}%T_ zOV?k1otQs7kiH+5ee;G=PC8F9Fjd^_7*`-<&Gz5gldTYcSkl!_P6Jwg=hw?Y2y7Cz z`E?@&tx&D60qhWO{tVi!y?cf;D)z|QNcXSC^-{@n9dD@~Z&QPE6s-%mUmrt(BgZD$ znm)hPbYA0KBBQ@unAyfzRa)Y05*dbL2^mS3D;w%9`I!Ye$g5xOwE`<#m+OMYx-ARZ z9Q28)zau|O-3{5fF}}pJU~{SEnQHWq1!kT92u}49MOOyg1Z- z6y^3~V#jr+G~e^cutxf`6~^yf_gW$mg%P(bg?^F2pWKjpK%pzeHwmbe_;1^H&jbv zWkoB^|IAL`KkV`OGY&Y2V+qYYy1j~1$A9yLVuvc!+e|9w>a&(_xId3>(k9s!Pde{P zu7d&4GN7<1(H3-ZIFP-_7TTRLryM9y2P~onxCO(CtL&9UUBkru+scy@tS`Q_&;Bbq`l-(NcBQ`Pe#}RY+NFeNY`5?(OjF@zle}Q)0ineg z{BpTp_bDPb{dgM?b_ol^S{I6*mNJ@{u;$gI_wq8F8Lx`P#a`=O^?`|%%S;scIUG(M zNfq(r1K}PvaES*ZPEfE9Zsy`?uo8~@LIxMp4rm9cJN9PmRuUqD?UtycL%Ak>POv?{ zZEtNEGWR1RY)JQaM0CCb1qc@k{L9pdD@R2zF`@t6+ji8tMTme97wQ2QCd2t;g1b>~ z4{&yIS2aoX7kZL+xBfDaeR8-%Ktk$0b+TqJQT>L1=eCsH#*2JM<#fybSy=@CDFLA- z^V`s>MZYGPAHvV|?X3APiM~2V1B(EHpjEo1`{k%9lP(ZhXT8W*`WlQtSOr_}khT zh^~8e2chD%xfM; zrSB#jE{3r_X8$+we?T$|)mO|E`^M3?t8^1^j-Z}OK@&pWTqjwo579Ts9g7B)ttLxh z`T+mE6lBF)(K+RG`^m<4>h9@6ckiSii%1p4H_371ryc=Jc{ckd2A&@MPjte5EjFYw}DymRp9@omHi`&%DIbYJB{& zt#SJCWpLDqC*<&FE(xH330WSda@OdwWL*_Ox3V`UcmD>{P#*auS_#xAH+`9|-J)yW z!D{Edo4Wt1Q6!Zmy*Wj9iyw&icX$ssEs ziNA(JV#QT(5B7)9D?;fg_BeKWg*)Hh0Erm|fmUOMJ(B5l6(HlK+$8WfHnjq}X~W7o zemB?e;3(Qf3y$0pzutk#BYyobE%cl1b$Cm*Sm|T?5_f4 zq&5)^m1a`Sf*#;Y68!^Knc_*c{{@IJ~l!R@(ajtfe#&> zKQj|ZnVtvu$e$#K$(?6S5z8%hru&43JZCAn!kF?ma@m9k*c;1=+_&i&Zm=INa*&Cf z?|EoBYfQ5rJ=}M+%L5|uW^=hsvOrQ!+@zvmWw+vUTKx95wt@2{Q_XgUST>z06|GZO zspSb`;dOI{i+dAhc&6rLbxetB3(BDI0K0LbdYKJS0TL+jLAaQF{1aRZih5S{qEjEc z+iw`rani~*kq%Te40>@WN;eD1&yjUJvpXu1tu=l>trZ6be@f5zd<3`wC%?XopLZ4r zhtfW;cCt{|>p+CA%!9(fJjTT0=6T%rZ;LSM zTvMeI&->J=CFy3I;-T{-S5mXb1THLQqaRXf+&*KjR%uJ}dN>#*ku5 z3Aey2d+%F$_D^@ZfW>!u`7@Lx*twOSw4MEKD^KY3`DrJD7-!veTs0wd?EY~d{{lOp zB=kT)cdYz=*GW z#wy1{-)xM+ASo!n51|i2TFHm6;U()P9c!C_uC>z5(M6p%uT@<0V_f1Bil4_J>od#@ zCvUY#t}RqpOCwhoissBRNAH$3X@dg}HCB#JgU?~cml>gtpzV^uclM#G`x_XKi#vn~ zXsuZfzs^FaJ8iHTPV&NPJC`_^9A-Yh4X0l2*P;I4fw$bxPX8!eYfaJa3_MW)c$Vg*~Rjj)wixX^G^ z#yrJ(5pGRj?<@`EP+cbc1HBTSWj?XT4LcQ2>;Ayo;+igW5#2~CjURE(tZ@;~rWEc0 z6^n3}5w6H=90IBz+jT>Ar_5S;F~G z5)0Gy)b|e80sQb?VcJ9hTi%NMjOs=gU_T?F543B$zb@$pE%okCwYif!Lu=ime1vK6 zk8l?xkp&j)F|ATqd%3TTxVk0&1Uj{#PzB)-j&{MI6{2<@z?2=tFh@9nUqK%f_G6MW?7ctJU zVzJ(45eB|u*%iLA?7GtsWNHOw4t8j@mFntQwDX-wh|R-l!7o=>x;&$PvVQR+5S6b1 z3;ILNI0ohoXr6{Kft>A!Zli zzHm8*$i4t3|B`q!{e_PLwHW@VJ$p6ihE%K9uU5uBF#0)5U6fO{I-%{$g72&(L|L*f zOkp?*{F#?>f5V7^WiP+QM-(~PkWSPBsZ|tHPdoL^O|y|j?vF~ec(o~{`h<5LZ1M8j zwx7{-FXv=BuM<-bWtq_Yn7_9BDb44#d%HvKi`H`!3%_PuxEIf7c#L5NT(X?yuYZ)~ z7B)h`t^u|&c(s*1R&+Hkx0}F=Wsk*c`Q&fO2@oD&)$5A=BTP~>_t%=!nAj416jfKY zPcOKi)_SJZU*LZkO#k@c_d4CM9J(@tPsW$k>sT+;AvEaJV`X`{>4J8zrhQXRuQGN0 zG5IqqBGRNcz&h94_Q05TgA~TlTh?$l1nunH(BPh@?!4plI_`ab$6GAzUj+mC&Z=Ee ziAa;b9~oXIYVPTFWZ;Xf=uFBS>|i)=QD8$SyHjX%!QNl9XjQ)!%7c3vy%e%OY%tqA z?`_#WrB8T=hHe$-a`jXiEm1x2vpvw=P(Cm2W@2ZnbEnn9x}z%Vupgspd+l%y*jZ-T zdtHlswPONo$Q8%9<>~-|ow`gNliDg8bzi=U&2iWbxM)I^fCL%Coamdp@2l8(BIeE za&KkoQ>(}9EZ~nsvwk?tn?&qn@qJbH&!1BUp_c*8Lij%luYJ9QX2REYRRK+#gEy zS_*-7g>p6S!#k;Os}(OOf53R#ifdFhwNCi(^9UXX4ccw|ik4ku_Wu)G+W0Jo3L1O< z!5Xvtu|vL&WI--awpe1+z!2iuTjZOf^R@QO_7FbW-^GN~fZnJPrp4)V{1I(f6L2HF zp)Hd|#XLQhCg(E>lQAsPE-=%U;6&+($2!P99e2xexOEwE;fiOy%u;?Gj>%5zh$SeQD0Pm{Dz+mxPklU^fv?I8L~v-bmOdp3|s=*qxe*M6f$sfd0} zV4aD%Y(CNJoXrj?yl2BagzS|yh@8S>sZ@j%7&09aA^?} zZmB$SuQp;GM=Q)v11Oe3cb$+Mhc(Z4M5pz zK8~A@YVwduovB97=T^gaCB1O$dLzy1D+?eU?BNgxPJQj8O5RPX#V45|y!u^JW-o90 zfAV7z?|c;od!4=A0!*nshjKzj3rAe0<_u$Mn%|?n-XYM?)`;WO3xI`%1xRt!jyW7y zXpG%=$Il}5g5Yur^tW4YxRFM^5YMqU}1e&|C1g%VYoV*w$ndaubGkJ)v^q* zQsIY}Zg`iXmEBK9ik5aN&kThHWPfZl zG({u*^-X~&pLhusOVY7;^&LcIukV#V)x>ubZ{=j&sHxjR-^-4s^OK3#Zr&g#gGSWx zIhnEb6;j}gq%FT?dgH#kWD}ad=qbotM-~m>3|@DTkQ-0D$ZfAb0!^Lya(I6itW>x; z9{rHl-i>3?MbURt_h}Xo4Z;3oIs$Y$A5a^d6q+P09M^x`>~??bwuJ_5%+y~W3o}7J zql0gZBwUs0i{#%Q>pVM5?CIHh!tj6;4gaxqo|W4d{E#w7m+W7XapDNjVHhL5xI0VC zy^w_E{w0}g&8;M1zdL&TjSN7AfmRxtk>ouXb_h&mVYzf5rLh?!f-k>*BR}X~cL$nX zyQoXUt91bsu8hUs$o_7Ciu-}$^?Z@$VCdWViahWut>8NOp*nSxj=(jZ+aTf)DCh7A z<(f_WW4dQ_;0qw5%^f2Vcl&FP&LiemlDzm!LZU>Ni8|eg)dQ9jO}L%VLz2dmo3}v^X~Io%@eje%rsX z!Z-7b!ys_(J=Bi)7lc(ym^3*FxvO18cre_oSYbsNakjpT)aJsz)ViDQmDJwQ-}>Px zS2tik5BjsEJ~f_M{_H}_(9ks%4)6tlwSl#ZP4g3JwXyLf$j01T~yW z=5({Vq;&iio>bAE`<&C=%jG^spH$+5g0`N>(Hy|{_|vjwm& z!+^O?txuJV*gk8%(x?QQk0w|$;;jmNcKPhgRG=wdYf7t?TV{KUD~8ftC}=;Q(xPs3`&bXW$Log{?q$CgjV%Bz7(C z0lrEe*y8SaW?{$R?hMX9%ydHV745?gRr_L>8<26Q00an*Iw!LaurIZE8ekLT=x6`<@Ihlu zefZwAp%)FDb^tNbW>mlF7SbtgED6P6)?Zjc?5|*lw6wnx*I#~eX&2z&?1*rBlv1J)u~*nJgiY^m48_E1@sL6>a{_`F~7dCA25?B}hm} zyD0aQ0)m6KG-OWhYAxsm_6&O;mUGZR6lr=RL+n|mbK<>b4qSMr8ho!w^0m{dLF2iF)ZCRbjso}4Wp_I`%=%8e z7N__0$d0v*lt_u0ue0$O2C=mfCo00WcdCP^ua5l9F8I|l`S#%M>x_w8*`DK^HW0qU z@rCo_76UzFJ&4Xlj^GN0`vvS{E@Hh^HLVctsKS7^D)#j!w*MpZ!O{Fy4NwoM(L!yT z>+0fXMSnDURhGtkw7$yx-v21nOHVV7OTEHHW*@C;i>YjyD#lA?Bp{l`%bgm*jf582 zAeElW@5I|q|B?Wtm&Fp$T_^?K+4%1fgo*G9Kd?ANiGO!tA}eFf`H6@=F~(agdz_?( znJ>kjgCqFk2gykb8pYM?A>!3kR%d!-Cv0aSw%)q%n3-}J|HHsrp z`ZB%fvPc>h*?N6U1OdC_tJuyZj<>S2Deqo^UjyTJI_Z54o*;2{$44jUQVP=x4>DVX z1m^b!vdSe>`y1F_uAS;7;#Vg0|DkNeN1+Wf4W~b^+Z?H*eXU5LF1~Y@mqwZ zDmaVe<^Du?cI_3-iWnq3SF(FbfIUlX))&i7c_1eLCKmCrx$_mTeR94U@8=D&EdQet z-4x^1mRj`rp2o(q>Z5qAm!-etXJ33F^#$`?`=rq&IXf=g!ZxN^i%b9>Lks4WgO}i0 z%%qJ`AU{P}DoM>*RC1DA*2bhWV`B?hj+n(&Z*d~HAxZFChr3*T%Ja3d8aXqXrRicqGHD_|Nlo0X41FDj3ZrQwD%I0hi_{sIkNU)1A^X>UpO~b-ScG_ZK~zG+xTJ zAr|tVVRO;JecZ8G8y{WV`ZR@3AXg%jYl3;vj&V(214~Kf|0?E}M$p?fO4O@+a*F}{ zgHLX*8ZE}*bZO@OS20^ra<(GVy__|HTgth1(zVxKK;qyVKS$OrMfZKqk^d}j*fo=) ze;Ur;eiHxePmQ?fpWm7S({agN&jsXJdslItw7ms0Z#Abo{T52^jkRgr0I$z~e-ZV! z>yz3;-FbTn7bThx9jl}>(u$6&cK~x?z&{FrxaQV6lm-rjcwYXJxN#`^595v5_BHZ5 z3-KxAIfc`OS5leAoGw%~v36OEj=+kWC|zz5Yj35*ce~)8Vw7||2TV+UVln#w_H}0~ zhaSwH4F3_F%!F~hrY}a4CUHk5fVN~s& zw8ajqRf@X3P5E5y*ms9^wUJIn$nB5$_gr}yMrRL(=ydcEE`N|Mh zL11uRK89sno;_Wn9y}%^F z_B>lJ#m`ly(<&n&Yk}2zjmO8t7RBRNC8dDV!-p&1EBL8Awzls1dn==Y4nPM@^`xyy zu=n0x@7Aa?&f0~}UuM4h%2;CjaAq8M>an`Dfg-*IGo?XU*UXr7U4G#X$$}~5Q~-_d z5__+3RDEevpzPMGk+deXn)PBeMEH$3|=9yVY*f7>r)0Oa_d0vcs_n!X7 z)8Fzvy?~1mp=4|QdG(c|f{2)oP@?nV;nv+sFd#ls?IZsu*E8T1Sqa&{6aU-Eh`aFj z0GKhsEN(N!cv$2&s%jhZ9Ci zdq#{4-+>*7_rOvUsot!>r%ZmsI9o-015V*Hb3^!#}?9@hZf7s7(YuE!L{gWD%YEX7*H_v^sZ!V>HxWNZ32s`D=^V$OOuz zMZ@(@U8NBU8gaHqu&Ku#59YhwYJodhKWwRiiPTcZ>|_ENYV8m4%pSh%niIdmXSgMk zo9%0y6!|8UzM@(JK??viTcDhe(%hgrdE^qtkc_pit#Vc%ek^ce7&!5BU5iV5b5NXW z0!@l2-JSFOQB1;Q|I%p`^dWSVNQE^C zKSoVMR3}^j76iL5Tx$%Nq_)o-2*N@zl(wxjb?sa&A;JD|Y8Mk*!gKQ0Zel z;U%!^QaR5K5n6&X-Q9FFN)>{R#J%h)@OI5bG}Sm!$t1a_R#a7vBhqqQ9CT9;RW-!| zns^)Qj-Y$z&Mpama{-}QJO~&|j^|#yp4-hmWef^o1BDUX$^eqU!d)mo!4z+UTRG{# zg~R<8gP<4Mc*up?4vP9{fafLlR%#_)NjBzajwx5)Mf=gcR*RJrlXyK{G8Um|X<*>{ zzNXYxsbZ_Esj7RqRLf2$%Fn&f`y`*$Af$MRRZRx*c6H1ZVUp<{aNO9E5g?2I`uJy> z8>2oqkL#gSN#sEuyR8k!i;!x4x1KXMbft%;p0gGbc#6mT)lBNLfg{I{wYtQNm9aGT zjb8N83q?sJ->*0OgOXYA8fL-MjX*VY>8uISmL@ibO;>G^X$URzHQXzGMH&=S{id(p zRnslO95Thf2YhA!`2kXB&zR&Qc_#q&; zl-D;?3&t|_#BsdiIkipwrRF{R-AFL5zQ?+Cc)+NsJg?Dw;VY0Gz)%%a+N+8-k2Ayi ztxoTrLuatRrhqQd8Dn!_jOIw z_vvuyT<4hEBXL?@qqIOvv!j$m%im2b#`0#LYB1^no4c~ceg_>#2Lp# zqZB`Nz{2ZP$~h?~N`d;gHu5KR_n4oHEW?cUf5ske+girwgq`*Bn0VqVD>g zo&QNN>vhWgcEnr$4GFO%GBIpi!{TDR;e2n?8L(bUlH=wDX_r8*{q49m>Yc;*Q-Q=k z-c^P%;rH{6H*JkAKdbDiJ=uKdsOp3uwt(PWeunT~pDX(UY@2FP_oJGbMwLxAnwP_I z-}>q2#1bDvMBfXC+8~9xIn{)j1dEFzT^YZ_`QSkIWL~|a8QjfR*t(HM=`#mPzknaqAkrdPLV!*q|Dv!Pjh6S2VGSwM`Fm+Hn^|e&V zoIeuWg5<=M9ujZQ5bxim=&Xc|?S}kIVmL{+Q+n=}k55>VO@PvFfofz!W}f4p;zGc9 zAcQl3Lwvv-t;&EY%uoeBL=9Vrj{b(k$13Szt2R0_T0+^Z@}0cBhbo@uZ<}kkX|SeE zzg$%blh@Pp+%)t#ECI~Iu}uiXxMXH8MBQT*j^}Mo zw1SSek~PJ^l6|l?%VC5Y4r%kc5BIv4j)oJdnz|aIm!L+xqK_%BwX(+wJzccvOU-^c zGctO144#O-{oK0p^c*Bv2xgt0LksahN^w2}gw^*g!R_*LzN#!z3EJZn&a zg|w~x{JorYZ%f`n<6;(=0&*V|U~Rkx@p>xitOD+X1}|vAuE{z7QbM)g0u4zJS(jr! z)rrbH|hbDu#dZ00H zg2SDA)_oLQS!1>c*yNU0#)xP7PVq79;6g0lTc{9{zkkD|a}XFau@qRR4vihc>Mg3r+b=7LPLLRDZ4viW2+#!Hf?Uu2MUat1w_0HTAQyb zK1oFV{xv;UzwLYPwYwZ>A~K-yrPCY?Kza_3vn9r=i`03Fm0r93B^x?BH;r#(C!u(c zoAkoue5C-u67m~aGCU-nWO8IYha_}|=Om8pE+0QB`0Nj%{v|Pm1z)d4k^xgh-V?2x z>43cEHRTwI8U=@a@l}p95zPPXS}?Eb{uvC|rJ5v3z$6s`65y@>`$9?;GIRdw+Iz4r z8h}ax;`Jr|-1}b=R0>Jk&ExK~{T+bgP5FdYI9IPr+4pqy6}by{oqEX*q4yir!0nw_ zV#E%RGJvrp<-GD6961VJLv=4ZNsN3+$Y0wYDF?uQ!HV(RKs5Bx~6Z;&~LpCdPH-KTZGA1{7 zq!e-zZM+|fq$y@E+0S~Q;UkDb<4RT!{p8qYAcG1P<~ihEDJI;JBvN8<%NBFbJ3!YF zaN6xt4M7*JHUsUv!I8cSYS1JtipSeyTjBhC%r{-3y?v^$z)63zm`T{*iVmC$1a~Mb z7RHHM90P}BVCx(3_i^c#*zw==QVNim-8U1D$QV+i#J-zCo@`Pk&X5&)X+=7`6)ai7 zVm-EmpgR|};Gj=vl!USU@@aQ2UPkO>8}FKacb*C$P2!%l&1KpX9yCr*Z-?FCbvMx* z`^bfoKXtY~r?Whw*MSy=I7Y_cGIA8gb7vPsu!Ny2x(b??xEM zIcN)ArFfN6fH-1ZYvBe#51Scz90W2Q<-OI*;q!UUu{xcV#T3p=;eJ!e2Hxs?H*uZz zP`?R02gX{VxDSPdejqYk{CI5C@r5gJ8V&m10N-AQPlO3T&(&2H2lP+`A02wzXS8uik=L@;OpEW zE4EBWr{NmQv}_^r>|Ms7B-_e+i7t}Od?d|}y$X5z8|#gg+{dRx?|FlSnZS{t8G!2j1QUT!FTZrg0+CNM$fmdPy4TiNBG7Oa!Uhm`lD(DCjRB)tOdb^uf?BZ3Y@(O_n1*e z_RAH*NoBsYa@`$UOM%xNpDj2Zvv$AdYSDg}vz6)v5${?Q?-~wX+?U|^Ou>U>98E=x znS)-*vbs+VYOIi4bIYM1`#7EHJ^w59WH!aJrurwlS%;5N9U0KXpxy!Wi`{P0yywFSGGi**;R6^71pQ;V{@WTV1b zNqj{G`4eC8^i4F|E%#=e`yJe#p^mY8;mzahYV9su6!EA;$K7!Ud))XhiDFiArdO)4 zqJ_yBwfy(BsIcs1yVTofUuLaE=~vtI8dr@qq|P$Z_680% z)0--%>jtX&euI>*y}M zViWrSwErbOtZa7Lve(&t;?2d2-UBVKq%pzxB$y%+pin!o|*2aHI9T z4^^68@_arZA8_lCmRLKHZVFU46zSDMeR6X7z1d(1^X%do8X!afkCN8_gYgKQ4>>MX zsfj)b!gG2Q&zo*PF4Lf0tB9^hD&dxK`|LNTJB3b}uh!QE+Kd)^m9_g&$7!f~Ph{FH1zOEF5Q7E^n=1BW!2y}?$6 zX6*~gRKDA{gT|zKgEz`i0|InLq|fP}$6iyLt2Y|@ljqS*ku!G?C*7QLg(l-|%sS_q ztbl~^xFW*6EV7*?x<}^vDt+kQBs**0f#1$ql4o))f=|sY;L3UpO^{o9ko?1ybjr5t z$s#i}sI9R+VJV;^FVI+EjowcU7*&<<-nz{RB|!Oe5AQoO){< zUfxkr+b&ZMH(xI6K;$kNHG5m7M1uSO=#k>cP#TOD) zk#+$vAjw~GE3M33emA>y2zeLtxzjZA*BQ&3r?1&>GJ5|SRPdo+H2hvB26)2&?TP+0 zi+)GSS08Sf4rLemrmLclF3e095hue>J!jPSeXljCmzc}_$_SoV@7fA&j}j+yc(m80i9z${GqlNhTIqLu@vAX0 zSKifr55E8p-jNSo>NX#fgoWH8RIYO4b z6LIY(k0&@aRJhi7jg(rb)vbpj<1kx8Kwj7b`fxjrxzf%SIv7ZcP2UYx;RBFCg+Mo~ zSO*vHxQd8xe)kVkg3oZE)$#zy2uBgt?2(7p?M!w`&*1`E@kLW+o2Z*gnt{b5Vy=7{ z$JQXB6$ZtR>*@^h6DJZe<7V4PG+5n5ftX6=7LIoP@A($n*;vZ@5-xk)jB4*m0cU^k zUCthIuE&&RVX~U$$AIBkU8YP>-V!r|I+VRK1+A~9Y8U*-Glkyl0Jxp7*jWdxVm0{{}n7(yZ=5t%=#s5H|qVZFT9sd$u7>ouJF7o1X0f$o2epEK0l!2 ziRE$|Qpvq^I+m2l<5WTQyt*`OUlU{FR zc_|0UpKMT!e4Nn*Y+Zns`CyIUpcd0FmV5NK{K=9O4f|b~y6pm(_!bw%r+VIPN-o^v z3KBd!W{R%v5$6#gl`wI;w{nlfkY3^zklUIkX-@p75Q-D@%N2r-FZ^8CJ-u)sC_=(v z2)Yn^+^zWJ!o8Sf?pr(l@DP=Ic(r3zn)G>EAc>9;tq9azYS{m7K-*K7O}{)hF9;w7 z{vVFF-(+u@&t>R?rS@|F@ac#x1BnBWm!l70#=r`@pcd2ae)7(3TR?0j1+`E*pFOY8-@J#2=_xcWA2XR@* zS{JQeP68Py#JSA}kC(V86ig zALo5qrvEl#x{cIJD&Fa7b+*{N6zvw0;*%Qj)>fVe3`rr+d!Rh9-}ebTeoI4~4qOi} zfda!Zmvs`LM|4@!;3Jls7MSM(h0$Jfkj@3#X7)0I5>^H2v8)A;aDgikxv(-nMH9)b zePb@hg>dLd5CT5mrH)f-e7Kn^Ce{D^k&W7j=VX6B=O|K$QKE!} zJS3aL%k1q^M3QBV{*-r2($3nJ>&fuj4`UOo&IEad9__vYBjAmnqO3 zm|Y5qQW0*!g4!{VPU8%4T=U!X>7bN(HtZ_aT6*v&#HV!1ddnL_`{zSmK;*+HvZPlh zCtI&KB1_pEr!;1Y39>-k>ctts;fG$n!a3!08cPp0yMvb>)vfPf@-GjOp5tepQ{#kKTADEOmS!RLk?d$}<96e$G*s zO7a>7PBa)WmxLm#tL*ggHc=;^Fds1hcoLfIc3)5gO5knWmO)deCuL);;(;&0jGJsh zs1ROUL~!loJ1l0R(#vj{?zXn$Qo_y6)8VQRJ977e826uhDU^3k?^$lIF|@VkPJ5V7 z2f(2NKte5*|5c|Vi%%<2VDl2=HDe`nM$FBo&YS!JQJSw|wvVH?ihV8|i|iFoC4C?J zrY_b$V>y+Q&sQ3rI8IfyujL3F;@EDNqCjpOFOjMVpA`tI*oM(b!5Gc)&pV(1)0pxR z!o|s1?l{0j%q)oxVdV?EF!<*)yL0&$=6Pe6vVr?|67?H5N^Rkg9ReKSk*o+Dn(urS z-i9U;`vGn-fdP3Eove+W_=&Sv*=W;^_NnQ7W4{Pv#>1CNM*~$oP8?@JpPF@`+#*#a z_Vsbs%xAyspYi3tHj1#Ksgs^7K_{oe?OBSN)71}9U*iIUH0cfJ1nOJ-l5#gZ(-wSI zj!rQEQ7|lSGc?~UPS%hfG7qdg`2>M^S@FS4kSha^ruNx9N36h#S_8E{ zcJo8lnYkhWx2PJlTk4EsU*Zo_vcr)r8%Hb+MWLuvIDL`2I8}5UfiKU|e<-S1ugZ6* z4JyIK&@vGyG~vGxegvc6oVGQ_z5u_<83Gclhp)@@dzY*=xhAyKg)i!mgEQtcvS^pR zB87t2+tVCn+I;(d=3CM&mtr&UQEtQnfkF7>)#VrBEng(SeI>lX#V?;~_(_2&H^o*U zw+eCua8-p6|5mo)H;)O58cd?a$U``Zx$MV*grR^hQ zCK}JO@m0_7d2{kjz@c^*He?HB&ZeJv@2sdHRm$5oXSg+Y1ehn^BDs{?u1($9i%YY5=b}GP7Xhvj>juZMIXnKbZD_)Y zwOuN<%QkXl29ee_X6$RWWLl+T#GmmrB)`3xZTflUZ`&v$s{sAT4`Ic$U+sEf-g~@I zbgQpLRxFrlsToi>1=9*-SkGEjYM`7;@b30We@m{6)7O8|N6?U}6 zi_xPE>|Sv>K^hgOBuf`#+k&I$o)bNRg%e2uqXDm%HqCx<6W{vn8EX3(t7_8*GZ8J* zNF4o6v`Ugb79AqZl=b$C6NGz-szyT~SbCrT{?g80Q+JH6` zBasQOs8PMZ!A!qNRKRXT)mG|Q>9<)J1ZH$1rgoD@2^ ziI@s!UCtkdIm-w0{aT+p5}Ey|FjQv2AjPkS9i#0!EJoap`q}2tlZjHDS3#cM$u<7` z?{*VAJL(_3vu~SfH3&AGe-qd1@kp9aCdJCqn2aH!ppd`d?Y2?02P92)JvE7;{Py-AQoI--p$3j z7#I_FC`N@d!ky`;r!5K@7Irp^=wzEMevk{~C~ISY%d1H%M=0ngLr=BSN9c)TFs54F zYrnBw`$Q@&N1sJS*!6^P+*UgG4^Z^Jl1?ris(JwsDTXQ%nK8g%A>pBTGEL$i50Z2u zJq%d^YO)ARSmRoIgqF@`qDWmz^$@yHNTmOV5i;w?lzv^*? z@C?LXGJ4c{8e~CqS+-Pqf&+y+e^9@R7k@Mwijxd2fAf>$O}mgpD*u3{UN(oe0%F@B z**#8ET5!NxZ~eq0iw{$m%MEjgK~mEZm;#JGhkRlGDmS#yu&67q|^bV2dph4tncG{FMQ_+VBKr@ zBwF2e1=r$>M}el;?5b=xH<5BDADIb%u8<{X@-axo>kGNo=1*&jVe@iRHfgrWRV@GL zScI1AUPvT$=!kf9vxfW2ArS6mM@=qjdadc>4^i$|Wc%@AHb-A>cq@f2Z}<8aAFVqU zbX}~>qF!(F&gsiq-&T-vGKgKzmoL>}T%(&vxaRm1pU`d1gZ9Kdnl^4& z4$?IlEq-kI#2(q)czFLyyMn6JBar7`hX2HeO3@Ooftc+>2_-8T=)(;2_53P zYgbn%#vXo0^)uj6EPh(k1(UQIv%6&`FXq=G{T~&9dpM|NGz@_{E%Y-3|b zA?OR0#0?7hJ!Od-k|F!52-Gv3aFzs)56Vxwb>kY` zIwznBPxv@&#{7@Yv)%^tpC3NCPQpm4fX&|`oSlBV{{P_U{|~C}Xte+F9Cp4*TBuC7 z4!TevdBY+{1g|a!vl#*kN|WQBZ#Vxyvl5 zBhsvsKY4l@-6ex0doRz_cYta$UKe$K#5T-0P}fNjH}y-dT@04;`KD5?zh&AHu|?er zsrzT3W%vlAVJ0oiuC*rc)MDqQ7>{Bmi}-B8B39YSL}L2Cn$KghECWRG?luqWudVYzqqwBC%T6t)+;&(JvAK6G)C;`_+{`(5 zNDe}(e7c?|~xp$!wwajXXhnd@d{d6zfeKqm3q-AxXbr{IeOwp$<7fYew9$MK5V2C^5 zG0)V8$Y|eeu4yCP2ix;6awhDAvpPMfmFNL5ndNUWWx)yxP7qhf`)+vl`?ZC$yYDZa zPjsgrF+{D}kCXPu`J@Am;nk%7$ZZDK^C?cWLKq+1NwpS%yWcFs`+co^$F(i0HLtzBkTa+Bq6G z6h^ZZBuiNu%7KWc-DFU70{#)CYoCTV0+k$H zMyp)&9bH+kT!PTzeKf{_)99mal|y4(?7X{^ERm(P4jTvWxHRt89<2?}kmM@lYqI>3 z@gj^wdUdhfM(CMbV|}wUWnYSIzW!s29fz`{Qw*#+x2X64YSLx>c%`1_!3xJrLZEz) zv%S0yJ1d(n;X9*YOADJyGsy0#nAN-VV~92Qc%~z|dbN0YAtYLhizmK{PakW|Gv?Eg7EVFZk3s-X%|1i9?ob{z z9b9a^d7+Ns_q43Dj_K2UL5r{3GmSdKXWKhO*193>`ia+g3fy@R{j3&e72F56Vv6|L zB2M?v_QJN6+WC66=y!(+ko=q_2j;^s7jDeim?5+#R6kkkav~?!6ShP+QMjKN#BZ-J zwbIqhmNKo;N)HQ4bEys}geh)8xmR>UrBD$ItSUmjbT2Ztj_Ano6D#fKlG_HA^Cjmt z4l3N^_wS-LIH*0mI2xO}?Cx~8Fwz&EGFLE}EmzOV$dp-6RPyt?RFxTq#}s|m4cd2k zls<+R?>s|BTHpSF;<7Ibm7LvpSRCD<7HcU`HdyPgfAY#bIZSppC55ACdB$?0+S-Xd zu0ro4NmZL+>P?v{!p~P8V~3Y}SxzJNTlD_!brm;%n~^B`e9rTA3;(^sju%;AWg!Up zz2D100g$qDMpA2L9?@3!zUvzDu}xfuoj3B2WgV$fR`Lw%fO~&y0zfbQmqfTJ!yhnH zC!(ky$Ov`R2tPLN6FLj^vLR^3=NDUYH6I9iw*cSfMIUFeQ^rpdUozQskQYB$N>jG_WZVF28dRy~`p6&QKf?+2O=MMSC!ohvB&5mZo^svF4u&l| z3%WahUb*;XJuJ?1LY^|~Ihv~!`-m2bv^h?sd7GFdgSDJLdZ$G>yNI`>jrtxkD^>fD zrE4MA4{2K z!W}891cE$W;ywKvek;hl$fa^Q^KFUUV<23mjU*+sH(a~{PP(}9RxUix%Jq#;N?@D( zejIh@0OLIA1kK;=<;m&akIuuxZj{!@WQ0!iZ-_k$L|UFy{JagPvcx%7H3D`RR-#)C zQn}OrMZn$krBC6}W159eO?!-fxgp+Ya0GL3LzSKTvehymMzf<|&3wS<++%!D>C(+* z)wn33mj#bLApv<@3)U>LQfkJDv={x3%$=6?set6fqaj)5LwB+@_CBF zmFz?$5j9w~AF%1q{KZ(DEv)MaKe@ZduY1QUTjniB=T|iU#l166#d1n_#tnX@6O~z) zA?}TNc+H+#+Mz;|_gw4>&po%;3nGH_C*{Tr;c5Qi9j9PEors+$bl>Ry{rkU2zD+zS zAQ>c7oM;U;lLHp~vRmb(;gYpA=FF)By}J$CwK&Cqon|FOAMQZU+e~{M3uj zrH7#jj{}B`JT|yl10Obz@g$P#D@aI4c2(SB2`2r=Cg*a;{6m5%P1;ki`D>(Q&6K3!;Y3#A_7bLr*`m+gutKTK>{XPcAcSICs`4w^ZR zngy9oWzfX)ZvTgcJZ+5xDx ztm(wJk@xF$@h1UdwRx?|5$^X=0_Zza*+63lOqR)E{d(F9hj$u1k z+}7Y7e6su11E{NxSG`aSw80-1?6ls)TLJuq=LLB8?XJG<11k^hkx{(~Y3iHO0U$aD zday1BTXE#xQA{LUDHsQULOjhOe_~Y-rRYrPpsX=a;?v^6$RZ`0TtqB9^LT@b`to+fD*#7gZ^)Dq|ZSe2O0zyn}!a(q2 zH*|qaTIHt2hyrFasPp0)bVO#M2G*@548P05k5|P#9Gv+Dx+~S9c@rXKlQ%zCkpYep z^V})Om|h{?QP%zgPw~FsIHew|^m-3rTwmjyVG<`j$m3PLC*Q6MHipvO=B`*QDR{o z>)hcAA4m&E2g<`xiQxXw-A5S!rqV9v%&ICgm!I!r+@$N}im~{P4suX9{&w~~g}yG$ zN}<~aT2}|R$Um6ij*_*O!a;%|P|&uD0)A)_cJrzIcT2p5J}xKEv0@I-YPH^o%}H1e zSPBZrf9`kR#P6eDmLSbiU88&dU4uIUmv6O46W%4)%un;dWZ^j(R8m-6^7rp$wVoNL zu1!=x3ae)3OwGjGs8{6YG;1C|+6Jv@=@$_WCwwX!w(MIJw8zN9&*rAe*@K26$5Jq$1eTaYUqc4S_WGY46d)*uU(zm{ld~71A{P-V<#R zYct%x!6YkG=WT*^5rg4fVhc43&4;yRHLSK!(&LD2B+9CC>qu3E0z!ZGd93LtAI>W+D1Gw{BLZ+OA3B`JMXM znSp;?nVu(>cL~p#BnY|i?hAVio=ocuw`LophI9;fG~!w^w2TB5g=cg>iSGNB_X=x( zeA1(9@$0}KU`#UzH`AU-Fc^7=^lHIv%)A3c)DFVOy0^LM9q)AFYK+n?P<11o4XD3q zV`evJ0DSNn``brdj_Y#%t;br{6U`iA)mn3o>S(Rw1-%N9m%m2~3Ys1k+7hi#y^k@~ z!#ntpl^|q%E87n27N(W``I6u<_w69~i;-3;YbWb#_&1_oWlD>kB>3ZrOk26r-hdyI zYT>^m_Gb!qN2j+R=DITSTBOwM7|@pupFl@bn;d=Xn_RpB@}lb0-hN@m?=i1@t3pxJ zTJP*}OkFeFsL4cQ%5{IM__qxp_4#?)fgq08k6V~rek0y+`e#3H+nh}x`4{+hadll( zZJ>si)VaZPF9D-?Eih>J@PRfvT9iNeLdEm!tQhm)$lP(>I#aYjucCB0CBxrC9U{Cx z9tgDe2q8E+jSvI8ONlv?BVPlKF7$NwwYL<*f?uSixWMg|M>iA>qw$2kf>Jg5maRkQ z!|Fq21uw>8AI~dx$mo%7@ItjRGGSt2=tuUvQ9|Uj-O}W`ns4tLu2~K*DJ5mrLCJ#M zeV`#&e2mXFNJ)WtCzqT6_<&z-<-a6Upv4p-Gn)C~7=peda*{N_J%pEr?9)sAuPaJi zExpqPPR~SSa-Bs$zz}Rrw_+;GagJ1H%-@TIb`(}^D3oF5x$@A*#kU_HA2>-4?yi!h zyy`2d+&Z*r^{ZI2u5ff8N(E`7#CG=lwr7Hr5CmP_QPkq++?$xfNcF``fx6pG#L;`A zzpjnA>WAJ{`TA=)qqWAv{0sz4+t^QIuLCd^_|EapjyWBHzI`d@%in(IB@qQNk@1tS z`}}Wzr$zyCgT9=nJruDMM*Pf`4=cC+C84_v+Fp^SwF$^I@MSom#BxXcQBjXr3`;5X zrWIWmnyJ>XNuqc<14;|rYM;7{&j1pj`4`3V{a@>XIv2&JE}mg`@2I=Hp?|O#Oggvo z$s!5r6vk4Oah0~7d8z-+(ETXlV)Sh08yWeByBywUeuD})UEM38_dUgOPAY+G#NBJk zO&kI7N2DXF4nKkGS?f7JD4!vm=K|?E>^JpWrWN_2GlIZ1)flqimq&8Ited}NKjW1J zNc$v$BF>H(Nu@~`NnVlX)sw{@9iOmnMUw$0|22-=}M0Jvd6+P zL79Zbpni+!HwXiI?UtnVJS9>jDI}RDf1##;<3Ko{JQvWa?#P`8z8~Plv$q=HMJx&y zQcimOYilSERHD1{g!N#n$K$iIvfEBKaMM6Ja%=DZ(DmL?O?B7Cf<(wo$%NEad?y#xy&(j+vc1*L-!=~6>SKx%+U4ZVdHN(dpzd$-^HopHW%#=ZY$ zBpEw9dp+w}bIxbZ$qkpj!odYD?cWWGDzcaK zHB-QQ;9#qKQ>#%9!zKFslC6z#i*v27s-J$QqGHm>=zgw z+V*oM ztX*V8etx@8%xMezDF06!V`SZP?`{imdC_`nCnp8!U>0PqIz0WB-JF7k0eYqLvEg*#d1})Db(ORCm4)W`_!xLo zEaP<@noV_Q=0<^#VDN(bmapp1?)t(>at4s)F_rjEVBZ(Iqqz9z=nR%9P#xWlOh_y9 zTDQQ9bU@fWu;@>sHR9?Iwyd$QW^m>i?1Yqt zYq=k43T;3V(=JS-HbRVW_MRk(MHZq8ErGVBx*i$}zJ&4^eruER`A{56<#2;tJ=*Af zD2hYS1K9|%MnY+)oJNw)Ch&-r%K_SKT&|jZr`F_hN^pXK)*XdxU}@P)tONKav?Gxy z0RX!k`h@$GM!xo=4;O)NVR9Cx*WOd8A zF^as1Gq8OyDd86;v-0%H3dHS%i*xKc>nmPC^$Vfo+@(|J@8nUcqjLkl)2HS2)b*dD zMDd}_lZ~a@dht(yw76`Y9{n}cLbyMm8L=1o6yApA$@H+3!3NU4e5p33PekiIxT^At zQKb^nIK>>tmITr6U?&7^JAX$_RR*`9<~$^X{0af40nP6otAL%C=M ztruY+4@E$5H5w}a-PPMe1(WDE%u4*w=~M#QGD}o6JS> zj@6n;P2E0PHG(wDZ1gMrF;B5s%a|*|I1RvBNeJ5Takf25Ays2V0k-Izw00W=?A-4a z+nu8HSve|qNLE8mhDJBrDsnm?q$CK5nhc2z<2Hva*(%XA9sUa{yIMC2Ygv{I)L4`4 z=8mKWaf=DQyH+y4qZ;~$wM^?O;`3_s^_7zlRf%vx!ilI6q~`HW21V@}_+`S-CElul z*X@Am16}>&(mUF77x+D112h=ri6Ahl>%5@Cr36yCv@6K>O5YK2zxQI5O$(zrpqoJc z&UiBY_*7WX6aInRt;)7yP}wls4sm3i(Y+8o(Bo@kPwpRY{P_G)+%Mt4h5JHDU6rg0 zj=xP#s$THXq307azBC3*p#WK7Bj=BPq&V83QJTH0l(vay%+xq7z}(_eze3zyL1n== z-qG@ze~+!h$`4b|Ffh#TFZYBayw|E_SEIIfMVsENCW}YsM9|^}^|CCdIp}XuCJGUg zSj>{cNA@3yGCEz6KzhP0rK#UZ+5=x0zdP=QHXI#)*4D58Ym9(d^<8T+fqh7R^nziq z|4sS95P(|WDDoE zP_6@vKY(e+Av0gx*B6?fi>60w3N593X6`4jqQoE1r08t@?n<3Obbdj}VxB)wf$0D3 zD9Flc(m&&5Ut0WjkNu%r%g!o%Xs=DKNu{^XJFlSB&@pC9I zo@>#DC~Gz@Z_l`thIA<-#%f_|z&sKywXO9`1n&yO_eU7^sqan}#`>bIcmiv!POD8> zNLkTFx~C+9tjK3=ZUMbS-RrjuIBZQjG+ghS=9~K$1Z?Zm>xTH$)}(+Usf1Qh51aC+ zEN=VRCw~UN;y6h@x$t&o26m?Dci4Sl!D%SqG=wZFzs5*^M2 z*of~8bEeld7s?)T%=*Mf3i@%uX+O+(o1arF?(32Md92|t>f>YP55pW|R|1UTD|&`Q z|ANqf)YKt7&vQxQmcG$;Z9_|4b$!$*G^c$zLVN87yLx|Bzpe~z8eOD--XbCOhFMMk zw17YXBYQ1$6@h3hL>ZzgdfOKdTTtBLIlD@>Cq{dIeL~b;4zCXT9;#eZjn~SoAigsn zlhhEvHBQtOm053wJGDkiG`}qIEt>r~US59(E^Ngly!N_M&s>nKNmn;{1pHkSO&-@6 zveIST`GAg>NJkLaA7r4U3Hz)r;j)TV@6XaJ&kWPXdD~Uy@r<@mR*tlCx(6VLV@g=> zbj}rv#O+Ss)*hM^{4w*e7@5*Eel`Epaz)dp5Ane5oV8%gw9%(HaXn>_0*x}mt9#2i zFg;9?7Cr<5$k)SW-e-(q|1R>QIcfW@$M>FkH>szCV>Z<92u(}?7t>233%ehwHgUA` zMhm^`x$6@gFeKgHZR&-2UfmjP=B^R3!msKAR{@U3Y5{I_&2O+J^_Py0`ILJ{mXjW9 zHiF<9%VeN1ZROJ6ru}#Hf5U}GWY=??i$fLgeqr6gSC zquise3OG*zE?9b!Q8RO?Pm;4sWej0ghzJO@r=VQ^xvVqYc~0C(#0p#T+aNv)iRvWG z9}59ePi#C-cy(mv}bzOE7C_m32hBd%MXSM}@Ei~+ESNRwG<$eWyV^=dwbhQUc4 z`|7}K1?G#<_A#UWU*CWG9J@4rf2%a1q$t3hEJ zi8hNO@7w`!vVnF}b0A;I0n=M5Inm{tq}|x!xlNnaq~a%A!5T%+UR6RiNb#xtc2C?n z1Nd!&0{r1UJONR03uR?uGKkUwQ*U_5#XO-Sz*%9BOwRboadXkcfyHkW*$HG8o3}EB zKF9A2x3MH3u4poeBP8Ko^kt-XLTXlfjjm#;)n_63V>qspM)4lO#^oHCY z`pb2H5_CPL_aGS%cD+eY>^gV~&cf^AAip2b1CGJ+P;YJsFv&q;9ccGk>T3O#k(`0i zmc*}kz_#%pw8Tz0H&NSQ!Y}*5*vXl;!6g4)S7T-uA^76^VIRGI$H2RJF}9Ad zAX_EUbvSVD*XEO;@5mersPloz*89{qiwHV5qnp&JCa6-#j64=+N|t;R4huNW?^Dk2 zL&$6%R0hrEbTff%yx-#Od8J>7-f+47w8-k;&R{UXzX++<H9(e+T@gYe_tOc{%lm`X~guqrGS`bJxAjG1%)OL z^(%|i7`N4VBE|?`@SUX5bZ!%)5?Pq(fAFXd6Tr23RWw3Y(Vx>N!!N_z#0_G;=ZP%R zpP#PSj%k!zzjlX;FC@JzKb*@ad7zQ2S+Bh4<4dc0x`)+3J`8&zubnkmUTKG-izmv% zJpT>?i06+Toj2uTdH3t(j~*K6{IfTw$)IO}%ZJ=OToVr1#5EMM%dD`*paGbZL+n#r z-jO|)u+h_Pc&P}o$# zl*7HTuIcM0Y4CmHwd99TwaV-VI=@*Ld(65H zz*|eiY%7v5r16DrvyPGIn%669N0z=51ZbxI5uhs<9LXf0i6;98hvxgU$y5xMPoDXf z+v~80y&7`F=mn{FR$NvJiY6B`4T&E4febj4eag2!_eY$;ZBZokuaai39BtGzB?I(o z-Q;ri3oh`U-l^~in%~1K3+mNADNR}UmSH%SZTJGAd;6^3#;p*!?B@!dGmoyfIDLAZOw&vsU`KI_uHJ)23D3tr)3DuMq02`SD2~+TsTet zqRz3r)xalv!Jra{S_Zu*Dxbcm_?_I~Dfe45(r%nou%x;j-#G%ELwrenw_pihz-n}Ykxo8u$2#s8&lZ?WbF(;BVIEQ$-Cx10Ry@$qKobe zTfu+|BQ=EY<_`6Nx6ueMP|<*rz4_QihnM>_fHj!ylvSslP~cqS`Gozi*C{5`;HzVN zmhX^yu)pA`H_i}qL~V}#s&BbJpIiY{H!W1Y+w@v`5L?vV*_*YjB*x%psLa*G+OM%qd+)+! z_g%VqFQw-2DY&lfLu2fiw(q-ysqdzGOU^oacHKi5p7nCQEtd*1Os76ZAyMSa>49+I z?jDoERmg6@)j+7@h>N?D-|(<@?1y0SSJjVB$`<)tOvlpP!T@9e+@@5Cv;ygX{H=jPOd>3_V`rzK8 zj?!7)yQ5*50kH?4Pln>k%2=3ru4$`3^Jbu2fERe2)MEuNsGPj{X zOwvnr9e8jlNe_OB32Zkhb|EIOH0$eMR}@|4+cT*(Xf&n}g*<8w=>`C#BNVe+wR`v- zqNeAwuN)@QXeoI+ZN9WhB z?ct#)Tij_FP~gvd;W>6NJHkLK!4j$j{}=R#=%U!M1GB~>-xt71VKTTUKuk}{ZZ%H^Lxb@WExBdAT6eFbje#ixAH#YS zH{195=st^EpjaPoNA@X+Q(2YWmn)nRz$K^H($C?Fc?YhOQsvLrvYzJPL zQ>++2`fZdR>RRM%>VI+DEdvw|QmY~Mz;eh_Gh}$}oM&;=I5src-;oIs|N zGO5=*2ycwCyog`KD@=Y2ATAPRef&L|8S{O(0uc7(Ljg#Z9N5>9-Or*x!75i4)-nvdS8ip|8pfQnx8+Vpzm z^UPU}`8mBxbAFq|q>reFZz6&=e;?j?Eg&L^L;-WnBreZqmu<}C+|EB(+ST@d(v~m@ z+H2JUR9@^Q)2h{;TleHL^gT5Pz3Q}gPqwRpXR(#Yfme4=msz?1|Y?Ig)wEmoiq`5zF#fpsgfpB2rgBNt^y+ zYJo>T#%jI3DP$upL+sFIy@jbX^kb^gvZ11Z>Wo2o0mgrVbk+jC*6h8Y9 z;&fX#z$?DR3+7k>!>=DFV{xD|>yNyswT{UwC%C-#bTas=$Wh>$OkB7k>p? zWbzmE>$PR6_`l~YB4b0Zf}p1IQ*E&7MN6#np%0`Jez~`eewXyatv%4koRz} zpgCC{hS`KmO3$i8UKw^T!&N}CJ=bbeKa?2S9{)#iHAKiRn!{Zy$Vqjf%`Dd=4H(wd z$6Wc{*gEdD^LmE&1=Gc~rsf8nPwX;7cbN^e^7JhD`xH;as+G*#^`tE4>UW3d=WMC; zM*Eg~gqIUF$Y>QzH)21%szpqyXNAjFAtvaYr9 ztisYp(tLL(WGhp9(V<~+$4Ga)c9?k!Uz<=;IOnc%v4qL+LU%SLYwXXQxFYwbULkg^ zb_o2vR<=&v5b?|}EQjyva|D0)~TT5~s zJAs9o=akL0bOl9ta5>jfq+U^rSH@X+u-0VeMOsgGT<*U5i2ND@RV{8t87 zOs&8)?V=O*jbzP}W(%jK?w{z2(EFYNVTDuNq3UI}4qF*Hh@xKg-xtE3*Sc1|78ptya6U`N_IgzXM3A**=gSm5J zYAZ?yf}h7N9GM;_Rs~d<#G_&J`Wbq2LPwiUuPIY6YWa8!-`O1Lu8&(HKmoO5^tFDfri)LfblwEw8mEbC!BER*L#l;K+IxvX8X?QWqbsWuuO zk|S7}-aM_n10-fZ4T#5hMIhQYkC?rzyG-;rlOpCB<6SxtG{XfOXnm3RQ0O8rg3iIc zylnGFCLyW$j;ihVbVc^kM_)NE>I*15aaR&0!}FI-3(x#;0OR$0D~?*pE8?GBKeGp< z=TTh9;%^t9*M;j}IMr2#AV61=Qw2e6IV{L~J|k~EbsebA^JKw(!Vwj*6jreC^Tlku zq?W(zF1NC=Oxps}6*Kv(DJ9jaL0e(M1)$NqE6Fu936Za4Xs#cyINTA9->soGqkh}i z&rkk+G9VAe>{uh}#zCNq+($$7N`Sv(i?V9SfWPqNL?}>9D*`e?N@zhZt_S-VnYD`u zZYEB~4ggY0poAI}14|#E&oGPQGe_KlMVNXo3M|z$K+AM?D)zcB0>htE(`B7YFSrK? z*8#gD@V{gKCr(9oRzyCzN@MddY1hX$E7%{PDM`fwD`v@pB5L@AmBYlx{sfXSi)lVw zN$t%i85Xmh9_ilGVJD{p7Fqcr?rON=^(;`h8Kyy5W8Bt&&P70m<_6PaNB5`;IwI$# za@EekhMTPPeiw;&0B?Fgt8!jtnzUValtiAh_(k#71FYTLO zq_wo9pgRK5jiCZ8%@X^09r(bP)|~;Im3WAC;*;i&o!YvR|D??ohV-0qXV6n-Z}GdK zp-H+1a_dzPb!5Ov?YAa}u%NLl_dCAw{YM6c6!B~T*|eX`4%o5C4HR4|N+feEVAz> zC8I4=7$QT`wXfDs!-#< z(PCNeLxd2bN0&wb84L@MIjEy&OSZ%BY~0BEbZUe709DhA_#79Kl=;NIH1|9mbbsYk zsnJX6W74~3^K1kTidzdFFW@pzB1@{s_8@3lbviW!C}t%$w8I7(d8%=W5+mj9^f6& zRb|HuWeAlUm2|1w_lm!eIuiNaYq#cK5b?_v{ST#aq_dWIrPlqJxQ23lqPMPQkYAW$ zKzN$H{72S`Z>tv61EUPxmq>zT`iW`naZ^*v_w;^n$g23wJ_&&@pLj*qSlZe}xYeW_ zRIOCj61ysPU$=Zep#o@J+m{p07`q1Edp?h0fnlBXJU61%mH4v_Li%=!j@PNMwTG#y zGbM6Q*=n|D%WKj)>Mszk@7x&Y{Pm3V(Z@og%Yp&}4tj-4=~55?zb1o$5yo<8hXBLB zAZM1h(>^CR)^HjpT3|x*puPs}pb-)SfVR z3tjIV65VYygzkPTkLRk_p}jDm@Ce0A>xe?b1*i3zs7YC3m$- z?fWCjHxB}%NG#J*Z4OMReZ%@&wS}8Dl<`)MF?rj;OTB6|&#em*-S@e$2{~>DCzQ!u$`$?A#pYXM#VMKMXsRc`3>c#U6mshh z=}upx?tnHFH*&D4Q2!qK?yL39NwTuwGYdy>Ym>H5M2@X%j|_-sVXf6x;eC-|22@i4 z#j@2~@Yc!QnNa z&(Mdb#^;RBEw-?%-n+;9Llf92b3IWR# zjheq(A&>`i+is@+xpYmOV`ungOrVY$hqOw~i@V!a0y%(Tn!Oc(RoF(y2BH=PIufsx z!8(Aj#>M)W7&?KO@C*BsxhwV8YkLrD8cRWa>!%xKmW4>e{FL(189XGlCzW6cz6SFG z69s!aP}A?a0T@=Q(@8zz|ETHa8;RT0 z=6ezX=O?~WFib|=sW#u2sUx$^GXU!eOF5|f-WX&@H9;*D3+z7zpdZAKBkJWJ#4l%$ z!Y2?lgD3Hl0u(Ml*&BIhfo{|@jc5K3){S~|_d{FFu=1Dw?F(787M<(T?s{pq7Po3rMQb@HQF~C2e2=)zd zw(E@pJ13qCRj$XQ$hQ#e8h3~P1<}t%CCV4=2qWFWoT0Y)#CLW%lfC!QJ2g8jc9r$D z9-A(AUQT{GC*+x5t>e3DsGO?iQuY27cetLvX{1Uzd~R-9Hg&F5{dKF=2)>Jxb;x?+JMWX>}}E+vbq7(U6B zb8Yen!RG;tsX_}SisICC&(si+t-Pa-c*CY=`PusIjVEOBalGNzVh;_DA7eZ5o$WX3 zqP7S+K28Z15U6NgmR44o!RnB_M1juI(ot)FN_O(0M@ubwqW2l~(@0l{+C{fTbOAH9 zKHd9Da&omDlJ4{EgMudC)R}tmAX~&z90puP{-(1s0(+@tWf|WYSWU1~jz7452avUZ z=>gt%T^%=JHkc>DX9bl$-LMngrhT=*yc*HI(?@N2 zRo!v|EOCnM5nsXYo^@Zof=k2P%1>dFUXPw$1Ixk;7x;r21R34S|KgFB>siPUvWVt4 zd+YnYLK*QzGcPssaS|zpH_|pQeT3Yw?t0Ui@8ZK&rPZMz`>FInXu@519Ck1qmiVAV z4<1goO$2JVL+=StyUw=}Th3&Fysw=c)K}MeuI6;}eLhTrXS3xkD_lfT``oDt~T79g06?b%3H5SSxVjcf(oepqU#g6a@lIYBpJ18{QJRXl&o4Dde>CmvGe*^{`lGBo>v46cHx(S{zz<>0b~RaW=yx+1S2of=U2|ee0K2!X zc;*=X3-B>iV@A5h+=_MtM>O9ET1w;$1O~N&)FebAL-mX6@>_x6#x85#?KG_cecfki ze{|M1JGw84gZM9AyPI$=o6F5A3(=U2lEtD))qjqqCp=6MKT3rA3|z<4N_Hl3==}{; zq`-9SQc<*qGIdNqfGQpMP(N8~AJMhCN4QDkRDK1paA5Y81k72_FD|O} z7r|lQLxi=Dj)Njo!rlBcU#qpTzix0y++Z!2b9U;l4(X1xx%%XT)z3cK{hc1?e#u5D zlY`u|8#gIINF07RO(w00<*B2E74{(RlT1JiW3ICrKi3-!9m-uj8=DSDc>yO^QL#CV z1xkdP%R(Y;_{coX1lhKDj_8FQ#M=X@wkpm3!J!Hny-||lT#uWpLxR|)VWPjvRetBb zW&OGso&9C3tK(f+WOR-DKpF-cfGW%$YGzh4FYhyT==W4L%IH%U&mkBmL1=-W9RS|(Yv9Ma<3 z_42o4yaV?QGohiY?DOvND%DRM9?hB>z$A{{jv<%#c+0ZlHJE;aWVQI*5PeQP}gSJKLSvA|LG#rTzdr-Q2r5RM(xnUchQ>al$|O z3oQ`+z-7f0@(b=Lh@MH5lFcA>i^ki}G@<8V7_*Uf^GH$Ik49hmvC(8jUy?D=&9gYu zL(b&j!g-bDz$f@#yO8yN5UX#$@*ZjpqHrYKmY@E-9$PS=U1y<$YfrUuCTxEPH@>hC z<9>GNHS_y@@-MNZ9_3-1j!CbR*+dtSAX`W5(TCl6IT2z1IM$1MB@C}*dr!BP3JEZv z#)ejUNo)seeSwO0AD+_(@v0H{GlLNTiIvl2ePytGXsJW_p4nSE-WVP_b?>43A{a2h z;QXh{dwcuu*eA{*+w+?u4`2mrcbF5*4@(8jdO86$U}CU1rbpYpIV_lE=&k-ZjZheH zy|{bq#&rLp{|h=IF z;{zy6hj^{>Fn`gi6_+0(NXzRl{J6o9x3c$Eu6Z^fZc2;)?0*}`Bc7X3&`JPi2GnVw z&2_DNzbdYtXP|Fa{Shq13xqC2_+kzU#b&gz!z5~}Q;Hz+n-pM!|srW<<{(wn#lB&g>_?o9X4h zJ4RLr)yyS6m@)ksFy3sk)Ra;)LRQV+#OoL1f{!<4ANkQfD`*#Nf5s>=^z~JV2cuX& zPdGd_rSMy3lT{e}7!81Y5kaY3RfX#zn^p6BP8d8{h59})oe)V$3bk02ibPzJ+oK^y z8AV|)9l33X3YUl4j;J{;UGb~Hks@({)xGue0>l9P746nBKZED0Z&YuiS8~MM3_c%> ztN9&O1ijeo$XdUnbi9_LSbKJCyPX#OdBgFUvQ>U=k%Wp~|4Hp!MNLb(d3}|tx|l5` zDV%|Pj~IqDfbDzjZs1t$>st1C!es(c7W+}zo}O2Lknk;=r~*8D&m>Q+&w-6@fqcvC zP?cU)yKw75w@O1eySq__%;cbjul|H^HQ7p^jbQ>er+28kIcO+7Q#Fr6d7Nl~DY>;+ z8nQ16pT5JEJLlHQh{wc)dISXk`c0126{M;iPVt0oBV38-{rcGloWu2Txuz#v)<0gQ zUsEXL!~Cw!;9<%BP_9>^~Lf=GZgj;M)OMt=Gan+K*~QICuMpWby{gz1f2tFSV6j_=l;C7OuSBVwMdE z>o7&9;qMG(CcMarbpXLP6R>;>amM0-`cXB6*#CZvim`zuxJ+hHcl-iF#XQA>Cor9w zwdStck;g_{U5)R5kL|d|PMtc~ayrz0i2m`a5YU}oTU{HSW(gz#h)w^r?d<9kkEK-S zJr1NKCjHRfW8DksKZ>uPD)15LS5}R$MN3MaHcLGNusA{f5S-j!J-}oIXT^_g zP>^Gvh2$GV+S7ZtrJKE0eQT1Bx*xn&QHLRAvKA(mLx8sA)a!|@(*w3|$(MNEK-1Hi zvwzen@M~BMjqVMZZ}o#2l7aq``beonVQd27OdSI7N~4%?j?f2`lvXjEF%T37VQtpT zCqE>b;bqMFDZYa<^gU^`C+a5Pq$iN*EBPpxZ^fNPED>Q)zs~j^{J$M+y9Z` zJ`Q&{K&KaFA8qB6o1{9*jVv*ty1-T-jORNdRkSSG`&!~T>q~!IXPN>Xi{2iPYebv= zjNNW49ga%-Zb5qilByX>z3F8zbdo%=33%;VsR#SX>6WKfocLQd9a39@e~QmFOO*;f z;;tyj)d^HO6>9kNrPFWTM~21AW3~EYf?RG|!X7ed<5|(*@A4Pr<>gq?MtE&_x1~wU zcb}hjk9abDPTyn(nkA;6XF3{Q^Iq#X{8lglrGz8UTN@eRJmg!;XHP4&pZ&vcSNept ztRaAvWlk`6bKJ^KyhK^Jyx-KlPar>>zV6o8Y#q&wV5S!*BAYv#w!*swc`)E7xhhsf z*SqaMz5Q!BivrGJ87tV;9n<6nc_-(nIvxwHed0>>elvRvY(qE%#0K;O#0MTe{Qq>e zddzbF)R^YY23Qp2_V|QC_b=!f#T7J#MxcSYvM?AWEaEy1AMvP{NOOcP;JqxsLUn)&Gp6l_9H>%5{Z4W(O-tqpB-&B0(mYtgz9O{u68Ta6$yS!M z?|?;3y4r4m?P593P5xT2m+|LU<=Dl$l6eQqD7UKCI59eZwg~&tfnx|rtc>w^XfzI zf6lY|bcHa>Ywd%qT)9acn~X} zI_mb!hf(vEwT^uH1p37J+t{w#j^$`0R2!J-o%lVdGAFP8oV%j-_RFEN(m8wg#)=~G zuMUT1891}?W8Slt>RG$3YuQJ8Ldn1Qb@wC{b-J^2Qt}F84q*;q^zH zaGyELpGoV%)knPd+Iv-PJp|Ubf|td@vYA%PYW)9pZkE53s$qEzY!y6e8|K^-T5T^* z<6czz#^G~XN|*avg@G@@_-(IDpn*XW|8v$JC*j6Fe~ywBzk6`nJgBMUvob-$S*kZZ zgy@ATFdB|OEqHFn|LRqGF3de;Vmm0ZQrkpDZqB|J7IE{V*2zv;vht@b=*O4n&$v5+(peGr+mCzLQVq-+flE8YjpY?743luc5idAA32?$xF?z42 zy}&2cqaid#rd`6>ma$wVstlN?VLCO0(NN^g@mfAv8?@jjTdZ4S!q-bVyK~V=zW-1T zl!W*wkqW2lml`wNPi(BMab9!uz9!AeS!O%yM0X#!ea%OW08kzr{%T54`5*6yt1EH* z!6f-Rz1oy;7-liErDd`wM&K=L$+K#3sCHsQ;!?X>azaa@r*LUY?cV9R|IFL$`#ZY& zmu2rLP^!vq$uza<(g=ZmoBOx*DsNh!4eqx0OZid41u)A#Q>%|m;2d`BN{mfVZZDa; z%WHjt7c;9S)U{Ibpnu0#4&)tQ%E&=$6n~w|iIk1}K9xyy8FFUBpxdu&tzoHqK#9l2%B2H?Alnn{I@ScZHpHKEFPJ1%cep{Qd^5L7l)7DhUvJ}(CRmr=?`qNE)*@5vFk7!~x z6mMC_s1og#Z~RolkDrY{&qO^qeL67`&qnJ?W39F3Ie3`x)p#Z9hLIY(EG9!Ct-c;u z)HaW7)^v*~VOY#^%o3JWDmqm9g&dX{;?YPzmMyq*p7=;+f7?tOc^|?%C!=b8E7M{E zDXc58K3}QHBw3*UL!P|^X`Ya3l=+{4uP~LSpwI#Cl}|V2$2y#KpFJ?nz2O-1tDjT+ z;Y+Xr=;cz)`_&>@4}HKb9axoVcgidFHp3D!yK)rqMR7HI^sYG)c%u)^_w$K#`VAwY z%=x(Bf}yX4L?hj%6#alAqECmZXH9HKUq|x}dyLENZ(2`3a7a1v{_IgqZgLZvISjLD z0{p)m(0W-zVjd`>z{(4o%7lL^dmdgK(%Ocz5sfn87Y%)ff=MF%gug3^Z_v0sEwq_+MAjZw2TcwO(*&AhOF(zXTa!Dn|dy?rJ7F3zRJIsdDH2p&Sx8nc-e z`wy&u#%0rLa^l#wc4pp|g5M{=8fCFK&85j=htY$-mgz{yi_x0j5qaKrcZ8!jT0X@c z1d?4F;U_OM06MjI*IFKEYysDNEriRpNZwZ<^$?P8T;&qn5-__m_2|nMx?2pAVo(VS zN0{uG$DD)?dc2?#RPa4oV1*5E_TALRYn2t3j)ep|(Iq?gaxyqw*@VJ+PXWy==0E4k z@&A3UT;Io$j&d3HM#5arH68H*59qP+1zpvnKGMo7>FwLR0hXf5yxv(0FOqubclM|- zkb>-ttFvl@$uKwf(50Orma(@fX10IpZwam9E2VAe#HTF5=kz`P6RA7W2%+Hk#? z%F4YUkPgae0e79B1J1-$)TJ2OHA$W23ffmb>V|>6u>Fhqdlj7n7mfXse8pf;^*9c#(&bHKOd1V;FyyYha3lZ9!_`@a2IjIif8~&14PVgXVlA9qqUyC z1P3BBG~dP>B8Ar!V{4!_vecv)oLZOa5fI|(_PUN4di{+8rO=$|mEl#l z@hAP<*~)kN^8#8ZTfT4W4OWn05+NRrn!h&8-&v)kygakYDK1Cw4S4TS_ipW zBEZo8@gu}D^0g(zETECX4sY|?HrWCTJGB4d0kZO~fC- zJyMU$CxR#8qVn+5a6;xF zu2ZGI9}OFL{z*MUhXL{YDnpN-t=+DPoC!K@I>>_(Fq@BM_RD-^R1;{{jaOKIai$en z+|iJvp>rrvbHnGiA(q;D)1rL0;XW7-CBnXB{TPD->>mHdA`@nZVwgBBEPu)j8!p6GZ=c;nvNc=NI$ag`>P@ z5)H3)_lV-%sgFM_dN%!SM_-o1UQBD5T1&{^oVxHv-_K(H71Ptl)>_(g>;5Y51|8K# zZTfeDzZGanw0cmwAX5ZwMhc>|^qc6eX6*{?FWy3?zS?{3BFufvSosgh#3BI+prQ|x z(<}8YLg=RCQl$~wgXZUa?xsCl8K7$mfvaS_0dj|Wy*@9cD{N7}kD^;9zQ=H4bfD6v z15Zvn%iwkT|AB7(cHSJil45M`zVAwA(Y z_7gItL0^~%4!oGx16D3VY2G}~{|FroTU@@;Wo%bdYHnONZM)jiYDu{q{3ZOdPxEGp zBC@0QIDotxg!~}BR~saSymn&OFtJy7WC_jL~ zdxW7s^r56za5EZ_v$qD^n4U9=O=hCFZCtQ~cnkX|cPn2F<_5FZJP$s&NB6$>tw>lf z?Ulo%Rq;aY)QDbCMX-x}{9_WkUAYhnDTO<1eBy3w>9s+CFvK=xgKb7DYRY})A4(<{ zGsbHhhRMu@5BmJtPx-0Y5aa~#7Yz3pf-eJN)_BtIXV>(0^iCRUGXQic-JZKc2CB_P z2|`o~R1PI9?(mrHQa)*2uNI1^=kH4DJEG+%_1G%W#Q6bMVYi@4KWjPau~h9N<$dd` z_nlJO_-%aa0|vPJBu@0+p%eQXSFhGs5}<&~pl}HMuf;EFl_apx0D8-o1xUu;N~7O> zGBkp89uCf_s;2}0UsJM3Sa8nFvj{qH$kA|7cq^9T-2{K_4P#lxpd3O>&n;bE$0Q!k zM+p7@yZPS!e@SV#r(hD63V;vb+;dTMC;-R+>^`h3+i+ymL(1)QqM+L}?Y~X{S~-E2 zOpRcU~Ti5C}0`T1_-{ErZGNsG)YOm<8|3BTmc{r5q|2KY(kwKQELWWT) zDqE@ShPtDay&?)V3dz2cnL*KFNs1CiAxUV#*oVYe%Gk264UK&t%ox*iPWSKg{oJ45 z^BliFe#i41&vQKg+}*>tX0G!(&-e0rzuvERY|tcS`HT6){Pouf1MIy(`-1AGGg~Fk zlCSi0AR8qQl#lUPx*aBOw$`f-XCMEOn1#I1ZD-$^V)-!o(sT}sa*wwEk!W<|y`kUG z5dowU*5bX_P-X65zX$k0;!l_F6P2BQ(mNND9B_eZw-uij4HD;+G^r^xM#-GZdYI3;AmYJD+AbPcGYob_eg1joL>VMQ(FpE9Nm;fu`1cFr=+Dag2z~dRtM_Nsd!AFO%a(_At2Xvo7RwQ>V5U)m#|f%_HsL z?{>GoK!(zk?Q;FDa)-{lXSW{R@G^MT5%38Z{ow{rb;ZM592=yq_kXfVlsq%IWUU3~;>lNne_d6&=sQ>6d98pz z9|lQ%SmFKh0G_W8A70wibW|#f+Y8e7AfUd6daG=&wG=(oEl)-HOp??d%WcCU;=-+Nx^m} z%@QZ8-h)GB<>Q3~js>BmZf?GAxmsD}`Dd4WdY9}0HZ#c>_Rw{p*3GMEOokT zoox>HUl|DXbUkfy;G^Hr+Q;itb3~L?TWVB+My!_qU#6dzg`O1O^kA@ zuzfwH$vw2EeO9Jz&f_>rIL4@N!1a>9iffmt=W2m+Zz2<>me^juTlP|nVW5d3VDvVW z_1rer@~Npi=bE>v>C!*{G2ZdQyC8zhlb_Zwn56H}IraOFanBV_mp#Vu_gZ~gv*`9w zvULdvncP$b2b#^>?@Vx9PumDD#L6$MxQ7{NXD<}J4SjF;E!u~o*E?~hV5=%E_kNTs zRt(ogySYmQgqfgkRYwswy@bv|NBXxZR`94)eAF#H9P>g>;);LPrGa;c)Fm?W4^4U!o%F!SpA zkhnz@l^p_SH5m@4VMzq-5pxb8!rC?1{o-=0X7q-%mKVr?(T~ncS^*Pxwdtkqb^l0i z8aDxpIAp4$N~WLmxOzh7#)OvB+#I5{&l6X}k_Wt1EbSlaDiSsrY#p`sg@k$|Meolt`(Oz2i+gU%hC-IE{BUWC1?j{9Yh zSln~45cRP)wRD8Y3ZactsLA;$UoL4o)$K}NS!hHCXg*OEi97TwkP3rcfNeh=BRk>= zQL^8M9M}Z*3uHL6-d=wO>|)04B?3k30&+ABg>n^yuHeYuzbLopDe%4slq=TXTU2R! zGe5~fF)yuKSALODJ$yeoWvOEK{*Jh#dhgmb74EAR8^}rO%Lon-rY!Fn8g&j}4iAG( z!MeCfC@bJ_4}Mg+ED~m(ErwjWY}2h*QsyMkynXmt^mapq&mSJ(uPk=QH_T?8M|b7T zK6w=PhSW{RKHTndtmCupE zWo7q03uWKIWEBkaFFw3fS?bmSoccUZH}Kl2_JygnJEN)<#FT(okMrg2EmqE#_B!yv zb$H2AW%1RGxt&jl^hx$judm-vqz+>q#j*MFHjJB`bodT+|=Ri-@d7K^ZOV( zyq%Sp-V6X0Kz5LtZ?`h2r`yNgMK7Ee?sGq_bw>gdbv@whyOW|4O*7Z=_XGkN`Z}Ap z?D&&yOqxM6EB2<%lrQ#XuQ1 z+yvWxH$f?4^e)32_cL@yLs-j6(4ECS68nu8o$p<(Px4C$vi)nu8UQ`#*zL0^F1nI2 zL0VQe&7Zc6q!w?8v(g`<3AT~;#&;}8S04^K7l94hUD*Sc@yT%EoAZ&iwfC&xEF2^FzlGZUyt&6Vw;*1DjEq$i zxrmgOR`fC6->W>mLO*ySvF{K1nmsW;v%J9zMv1r;z35CbHmkCByqqr(|CsEl*Hybu zBtAYO+5SRy2p|w|k~m;?V$sLrhfnX{@x;CZZOumBkzPCy`7x7y>dZ@xEziRWc>*l% z!-ekpze^aulEgxzrrG@W_sjXO=vFV(M}^)%dKpgEUsB!%qO1oL#~QzLN0zL97nBfJA%vSUCd|(ZSk4vY*1_Wmf*X z$eYWnaU`S_7SA>r^oZ) zU!nB2AS6d@1Ued|&cqY|4y#^$Afj&?H$m9{^Y-k9GsCL!k~Z= z=8fJBCI5@cy1Q0p!-pMg#&h*2kHwi;I@=dEhL!siX+19RF3`PaBxSK4;(F~rb?aG~ zFW8KexNW2b@4B)Ysz(I>Yi)*2@*H))&0v2>e9F!nTjQq=pD!X$f36yMw5;JJd0>Ok z3_3V`CFggzGL@rz@7m^_v+wf#jxa7t{-q_Je_Zh9s-SNB;JjmW))QkN&v!R(9Ny+O zwoNej^Aj^~*S`n_^tBgXjy%oSvF6Wyk8>t$A&sP}p+4u$hhq`za`k=gAM@^LSFCIN zB<*&!*{j2I$mU?&o6lEwo z+b*>VjC-zfY9BppkrCyaY~(@=L09Iw_PVVRUJw?%5Hlg8_Px2Qk?WU#dTg}|3@SoB z(iQD4VBIRak@x0h-jtneyHJD_>Aqj8=C`2znV%l_y~O8~nJVu|v#|QnjIns8W@NG$ zlea$GH*{%!a_pv1;$E*@!@;s!=W<;WTc$&mUJg2!xw58@&b+9VcbGAMR=?9)fXnba zk3_xZvfbDHp=jVBR+dt1{6#SzEHYf5)hIvX7Oa++`UJHY+UX`}=oB80-Y>>^+qa;< zZf`#+-(Q6F{#Ii$$(2(rbb-G;#r6^y&9{lw=zKQD5(`*tJ;5ga>*vI z*`~kY{ejAZzLf1{WjFW^8R${-Y%*Ple&eA9w60;VAG^I)uu0&d#FaA*0g ztB$^Sj~*3k^Ef7m(<6TLdoo(RrKx{lMxhre8e5wDWd?2khm< zhl9;q_%3?%*`1xPOnXw4bjaoHRDXpdvo}b+)ZDK>`?U+&VBWX9AN$BwF^=+hw_;OH zVuK$49O}fc{+V*04sG`Fwr0UUvY|wl(7E!G+{-+5C#xN1`isu`3zuu>V&L5I6!Z0K z2l|VFTix`%lizKcO&?~m6o81A-0;Z@4!H-Q$;gIgOf(WsEQw{(-Kk* zHxSP$F?Zkfix}cNF!AbC-&uLB$`iAlYyj-uMD?I7)@v5JYq6qWFk6V5Yc*N~i&}p@ zh?Oo5+Y)!T(1U;7vDRfY^qj@#hZ@I>(H1{E z^8fjRy|Q_Sl2!2FbM-`ZJ z>7m-ugNk#qW!5ak_kGsu5r!ReccS9mlveK34L+%SE@xbtJY0OEni*YL)??)3R+duy z>_?GtK6BCuyGGab*m=>Q;;Go&{2cQ#)@1tKCzEN+cwzj`7Xe&f@4~_cSSegqURw-; zxSe!DH6@80H~ymW`}gdV?Zqd#t{@MFK8PqJ>FHyXc=Rnhq`c0aV1{JXr|g=y&=*>9 z`#N_?=ush0W8Z}j76IGNQcPx2SiLj;@1~*sy_K-MgS0_p=}xyS=mMQnCh1tzalH{M+~Rfm_TInL|=- zm>(fE4Gi*p(nk@SbDW&Z8 zPSWl$kEmp=5UHC=q@Ljz(g>)IpjHp9lUx_ezuFi+Iv#@K8w{NKLNjZ3S8}V^|5GZY zHrwLvx{o!<{OA-GwcW;G1F>$_&^;pVu?B~n-aMt zR=69LtybvP>o%ojV+Rs;W&qRn%#|%SW#G#vU~7}9U*mv!Y+goDYJShY#B#vw+Z48J z@AZ;Cl3LoxO^d4tZCrbAxmHlZ2+9a@k8SCUdn}r=8AyIBK|#~H=6wfO_6~}a?rLLc z&}SLm2eUY+sv{%WoEjY*ONwFuknF=TjCwtySks9Cayni7E_v8wH&7#ShX3yRulz@z zOKdED9W*Wissj4{76Z!$Dr1ehQ3;lqIl=-77n7df7S`i4XULe=d)Sh(FuRpXynna0>~#Nln=6qR~!urPB+Mbcw}xO!$ePfA6?ra zWlV(G5et55-%bBz)5K}&O7Ao~@|fR20NyAQS`Xg`pH4pIdfJWi(QUl@K1$em3tths z>r0Vg`)()b)zl(W$^1u;8m>i|s8lW*W491jNx9&1T{Xq0*1~9V`!KPY)DqBY^7_lT zo88|*+e0CMx$W+)`^X54}zec+=hszVIB@hMqr+52t>R4B;l#(Val4`IhPl3ey zvo-vx(LPgw4P-3N+$!$*z*XX3=!Lt1U@lTPm&u8xqr!+Bowz(S7{q!u;l^k2A!wl- zmU>|LjgD$;Fe?+ITQzJo>$J4Ry<8CVhh~H5_-~1%aJ<1{WsM?_u zM>P||YtdQKU02--IIWOdk~pDv`B@;nV0Eva<(#6TIfMYB?! zmM*e6NMpO*^NbTfUPa`|%QoB$0*~l!UToB_L(i`Z1xK)t&)!^<17UQ*Iv=>> z)#%dRH$7qH(fzM<(0AX~K%2OFTeo4*1N~>iM%>boHP*lPsp!1)BLN5Ih{_f4M1+jz zR(2*RoyKtA;)+=~jjePZoZ3}-G$pB@MeLH@+=yCj=^ zY8_`lX0V|B0>VTrjtue`9f)fzI979+?WM<8o)#s|-b8CcTVbFj3!vp{j7>;15FB`{ z{lPj2wi$>DW0!6MfSgX>l!u0@XyB~&+5+rcU|HDV2*506z)wQ}6PCjT1*zRSr2O2c z6{A~8nh(-9;MUg zaFldNQhj8Z9f~L*QhOjJ)d&KGI5vQlWkE=BBoYJGjgSQ?1x~j3r2K|b%-}vPD%i@m zuwHajwnr0QAdR%?u?%|T?u)aZLbK$_9*5tMX%ewC9pO%mHLb!~sJ3XfLX!DjH8Vab zSg9lQbOb!ja2-5PNM3ymM_5ef<4((1LT`qpBO(zXD`kHEn`Q+Q)eQuktqoaJDs;?K ze+8Iayd1bsTHe1T#*eokK!KwsT_CsXi%1$duC`mY5()KUn^^Hn}V1Iy_;F|e| zlKm@6SMPJ^)0ph9QxJb*i;zc-~PZMA@E?65s-3HpN}W_wVNoV6bEAw zYFg0=GuRd^g|J{X4}_yx8m^g@L)n?Gt2PCZ)VTU8siIG$t{V#}7W!fjE6~T^@yu3EE)+>BE8G9NYqoE$`_uB&h1?SZ?dHGy&%F*E zzBC)~x`^RdG`{$>W-XG(LZI~^)m4vM~jiF>In?4Fq1F8`wG=%-VO13V4f zXQm|+QciRv_83CjGh(r;*ryrXY{fsvy3OFwVG!`3rx%bPw|z4(X}@pMUh879TR*aI zr#~K%f9vNHhKOtM!^T4V3r4C5{LpLwp}UJ83(Pxx+Y?MrXS%b>T-)qf zBr#o8)`i8WdO!)a7hxY^ogx)>-U(Pl*Qu_P>yl$q-?=2JG2eG3?lvyGl$fjV8Vu)c zEez2*=iHllgIFA`RnA2le0B0jc(#-qUY7+DN=gN1V^ChmX<$N;*Gw#5KDH_K8yf9OjT^v43@_La9t{grC{pP$tW$4Y`yyYa z+pbI2pj^|sNBtr{y7|`HchNhEq(?U84{z}K>`X4Tec>Yzz4xXUwX^wtjzU|8e}>XQadF?Z#eO+_Bo3B3u4~iRi7$%kj!9-;+%=?K?3(w7RJ~ z-!K+Eni(td;oM%6hNBw_Mgd;-}k>Wdjv(OW-7ms^`(>-{cPgyo^X<@Mk?KoC+_3cBH=Txx#e7yz@z#u=8y^SZc>FqTK*udkm zuZC=O>_c3M_G#!(;{&;Xj@GnO5lDdwrpEGEF@a~Lj(YQWAJw2qr~KgWW9&9h(~7+t z5*j)ok|9Bz?C9>+LHMvkAlr0Aw*43UelXLl`ycrOyiu<64r6A@6lzUbAO8iGJpKkUTM_Pl=jqOBLJ!Ty@>y@uNN>t zCPP*(+(6BfcjZ@Djuzi%WIR!P%$H(!Btq|M`VtBQ+uMbW+FB;pWb73dnn^B5M`=CEwZg}IIx)u2@`uuScESt>)&@H~ z<>IU5oPT9<_crny(KOU)Z;s%H^CUS}>&}zA;S?fd=G7@xN=7D34?H1dag~S6$e5_6 zd_)Hdl#m_Hwg}-ieT8x6f5~#cOH@$d(SU?99YtdY+OXl}r~X2#G_BNVh|Bn^H++ZY zJEbn9%vRT*42u{}nHAR{=br_z zu_$Px1i3v}_`C%ycUMQr5ee!5J{XgNBYg45D}x;4=O+tal7F-> zCFrx!i*z7VTMe7~x|sGG8btrx0%>panXQAgyl4p&-KSul z3m6B300B3e26*%k822KBi0{wQsuHb4N`=&%NRuF+btu2v2xF??Wxbkj$Vr+x(pbe@RsS*DmSZGpsfmKoRouvN?{cS3O# z2HSxTe1wwe3X2H{`nrUIW6;Rg01Y|?m4pT{wi#`jiJQp-P&@)5O$8xzuN8}(E-XAT z9O=abY7oSNNj<@q;52OMPYzJdb=s3h*nKmQi2;c=9WPZGiZg=zK;SAGMlfBT*V{SB zOdulz*pC2rU*J)(g~l2MM_yv$?(h=8WR_T zld`PV-M4NzV(dhIfC<`iZ<845yOC#qvBO<9a%AhvLEXL+slJR|r!PKJ+kzDrDhfQa z^fNTmhNw&@(V3@DzbQvG<(F=3#dcPS3zSi63Zy34Mu{&9v=wu|Uc_AeMn3WWK4xqD zlT2Z|!#|imw6a1yJl4_es^$-4vN*fmr^!PXap$iNxsZ@y;o-i)cZ?Vh#nd4S4UOja zi9Iq2^&$Q(UQZXzip!Y%7lJuMbPAOGr$?(uH}h8S?n=M&;`y13gtc9lqPL~f#>v=V zACdZc%{na{aCXYMP2FIOM0YcDBke+(K*i7}zS|2bTRr@R2JjbO0IuI{r|jcfk7l4A zZUCGUM3gn^r;R9cYyzF}U}RIjx1aLyy5xAjLKHHmNBG$?oRUM$(eb?;Bla=(F48UQ zk>W_+Ntx0oKcKJ=qk-=(A)8{n85DJ~T#6HI#;ICakNIOl+@HOtSsV(oApCls}}|57%a1k{6gZpcj>mKLBZhKO$MTpOB%gq(S^_T#i1v#xxm?>s?yz0 z+Rp40x;TH%@)D&cd8XrC|Kw+*8SA~Lo&5I2kP7Cy-4WK~_uWI_syfT;88}1e zWvSQWLF!AO|DFxVugWZu+EMrNk%B1cqd$&sNWPSe6I*YowJa$j<(%)b&TT2Q(`m}NvlE=ukIs%` z31Y^1_f2_bhMNi?AV;T^V8?Eh+T0w65WngAG^fd!NTQF0(4*xA93m*+?`>>+?uo{D zOixZ;`91+8Bt$Z8s`7AlPU$WURuTA#o_qY-D2*UO=qWwT9T*t=ud^3p7feb zAakX~S-5|H{xroaVsajk)oJHX_jGd$cn3|BrQ+m>#Pz>vBv3gDSIcbO^075^3v}jR z#FT#zi#_Sdx022)4|{)9T?dU?!f8TLa3*#K>}uz7KbkuG5W4>g8QZ(kxF)NZV#a+^ zHBDo>KV^~d(|r)v0)04k8S>@6?v{l|f1t(>6YQVkG!Y@bt=c3uvALhU zK~3f!r0@7E#nV&+El<~BUkC7*#tfJ6K7nPThK!#$B6|qAv9_8Wst6ttsX1>yCpWO~ zHW#psJli0pKE{Mpqx?I(yr>M36jq3gGa;vpt$R4Gbk0)b3f`{1dG__NEOPWgLk-2mRGkHZSl0HDo?OyBnMiJtLWdOi+I>c> z;F+0CZhmzLIVXb@E!VA#6wU#x8vL`tvPa{y+OWob)KZ-@6wCS3^EYe3U1c7$H?^c! zQ>Dmo7BhM$lYg5KgN&#OrR)p#s)L`cL555M?>>oE?!k%UJJ_;kc!0l=hNBg@;!oo2hZ83_FKbgP!yhb1+PHYO~raZUS; zAVl`T@4ze|M^Z$7LtLorUx;#!ha>1?u8Z@?X((3r8ECYe9ZQ&IAJb9WmMg6RU({i& zG?J&;g0^pkE{yDg2<|Gvr=DoMVon`<*(M4ZF4IU$nR^UITTxB;{oFvaTdo@)xH1g_ zcWw9CG}8i0)`Oq;{SxzxU|bBO_%9R-%**2nOG7Y#5)}xUxJH=ZuQ@tYhaeSG%wz}a z=bu-~z~@1dwykXYcD#VvE7n`6HW<870Cgu+9;#WG(B~b{OKZ@7maU%71M-IDE<7+a!DcWvj$#9u1TvQirqx2u zFlSilYKx8#?k)ONI=7Gxxzh=qUI!`71V{yvQ7>o=9KBljm=g*O*aLyy>R=A*=3ft? zr|RVFVpR_GIod4?+A2$e<67`izd|DZAb!WQ5INLVPsA@FXRgdoaZ9G_I6NCKAtoyD z7?E!hq+2=}cDAqxbG9=2a&gK2uzI1RJ^Q4OG)xk1Nq#EdiU!c!OwihW?L8iOhI_YT zmQ}W9>~s&3ljVlR)!#Q7Y%`&R^s}m#X{KV>M&0d;;or&viS#*vk|DO)zL3sUT}G2pifv1H2bHc+^OiBY>;(~gWkKxxTF$2agA zuGGH~6+9f$VIRi;GZ>yG<8EA89`s=I1}qvdZbUZMfJc{?q5QmUXfkb=rXS0_Msv$jKtc1_-}kXGNhsT4FVc=MfASO;enX=o__FWJQYsL-+icCk2|S<+tpewmGSt7 zj2nEPC$DUKu`6%CNAh44Mfxg1ZFCdhNIAI();3EkjpYijgV>UDww`7=V<}MYwhx0 ze8Sc6&`-mg7r)-kO^GZlR_Vy)SQnw`x;0^m z4AD|k*0~EuWb<*s-^7Dga=p@5Z23aY3;{(8QvNsG`X03hZFf)AnV;c-mT!wZV8(ot z(whQyefs<)XlEo0o!@h{us=>Nn}wRDygmyc428x0g;xU8_?~SOj4=Ak!62~S(JVdo zIrEZIj9TWEC%}A#ZDK=p8;>vU^DYBrQj4kXX3eBLHPi!u-@^g_3v%Ig|nzx)5mx)NZ^r3dz<$R8JXlf;H6p$ry3&Bkp-SK5$t}54d zH5s(-7#QJUZwL7uqed!_CFqJgt~K08(g6nJmyy+v{$C;UUkcXuqw7dQw>+mbGs|{< zMu?vaRLV|hMt#l7o9!GUm>HJ*%+JV{Q1sv~$JK(Hxz}j!IhG?1J_$~LIf|b7_|qQI z+t+_}z)&Gx!6DxLW8_7MI%eU?M@Nswm|l~cds6^*T=qr25VSwKmSd~v8+nJSd0%w#!b(j-zv|aMu@ZFwnfnZ<4o8jds1(EE8-uc zvs^bj)bwpb-DB0|h-PT10U*3AYzi(;IuT^p zp)uRy9ULAIzzKq&`NQyRoio~WsaRYVm+aDF4R;DHjdb2Ag?$VfMZv=8)iiM`adeW= z3dfH~Wg}7`pV<@|iq;pFNqF1E?I1cE)}lJy6_z^#){wbmT*;#%j2wv|+i9eW7IO;U z%o0m5bdd#PeO^gd1aO9Z_g}qf4|PDP(C#-x8`w4y)e%89A?uWqdBS+jO<|@8?qyb_ zGi=BPFSOOCBcA;0Oghh}$YwWkhdLzSRj& z#(i~!MT76doY?lWvSe#_wstHlR-b7GBjQ0-y_%+5iOYldGXq9Kf;YVprnoQoee&K% zOUc;`?N+YY36v*y2Z2LI+4yfGl3Jw$=#Sw2&i69pFht4K| zSN`i2ceRcl>$4t@SS$7dbPond6ztb{$?**~frABMyoMJh>5Le7M|wN&3{dtA=03nX z&E`a04kEF`903PGc`d({S;icQr6fOA8jk-#l}=_l^)s2?K6(PO0}*V)(ApJXyCIcG zDPAUwG7%nUHtbdY$nhD{4-{p4TD6XsL`g-Wk*#~spqj47<7t@Ff)-{I+wo#vQj}$| z?Lmvn|(SRmJ=y*3*0!(#BvS>_~T(k0EdG1N%BM7DD5NpN_?6y_Ry1!uYDe4N3PdM z*zw6})Q3hQWS5y1#7kD1Mentmw1@$d;p(U;*?q#nxhrB?!8m(>lZ$^nZ{qEfP$;lG zf%qmyEXne+KgWMv<_;N=u0F0$g%~~X0%vp9B<{hdl~B`1 zoTjJQII(MQRQl(%qf@TgZoN0B0iKG5)Eu3|&i&?X8`JAxpg~!Sn=(ZiDRt#~{&M{e z4m92OH*_$N>WLJH4WvqKw10LiJ#p-0U6i<8O59f=3Wc$ zh)_Cs-g~o(*Gd(M9GftT>WweC!O)}1h^DNdLL^vdyR8lGl<)TyMjLKEkZ9Z(vPh)G znj+%+S@*sJPXQe6%ivxeXmT~Hl!zY@`atfMQqiC6m~dG(b_MWG8FOp$bbz<=%=CE& z8~xZ**q_?SXqteq1S)DdAS7;(_8pSZ$zSPi%X_T?-?R$Er@J(IzdM5~evzWb@f*9z2EIl@DUErY5EAN_5__ z#F*_S@w9CB5(zX@3{|k+`sm^FF`$86ti`IwE6GS8q-os*igq%>+mlb7tP@Joeaf5S z39X<&p?`lIX>`+>%Lw|1%Du2QFi(VA&?5{k4ZVud6O=`w7Sp-O?t_5!aA6ey&2Ip} zD-^S%23iCJxDOcA$ldcnY4Qy;85i3jGWiJYC#y16abGpI>Sy5fo6rrsP5#V+BZH_)W?>OD0bqNT}wVf}9hGg^HS+3qjqr}gmn zX5&E4_g+;`=t4_~!wMOknyMs#U31RHZwNNZyTU5lG%yCY85+X${|%8+f%wg299fnw zfTK+Dq@LbdjgayV-dJs1O-BG5zWvZ*!!-Go^k&c|x*FCm)&Z^p+C}et1f#Ej(cK{< z6@;c0bI2~j{~i7PpQf7&|DUgfX?lD`p@{LgF1$Eq4M;X0(c?7(5BxWDxeh@8n&5xI z(@qD2w?IvS&QZ$g0IE3CbAWd8J!+#O_?_A<$v{(YIK%2gr&fOCl8iGTE`q=%s*;oJ|DwR&_2{a?=;?q;u=P2;h4eHA1 zQk!JrV7lY&7vxt{nslANqma)X-A~X-$DmgK*DTs!Bs6GDAWr#u=qyko^K zUDn`ktZKbFaw$~TJl=qW<^*-peFDz+>tQn6v6I^V+;h+!k`3b)nzTo=Mldue_DKI;QH> z9!$1AJ0x~f>YfJ)oZ7sT_%Q+S(fW;)oO&Hxi=g3as}N2zq%Qux60A{2$Us9n6T^)? zmdf0!zk6G7sEH3*M^7r4$-a87Ghj)y35rz-R0z}w(pUralJ2+0_TX;|>N9Q@{f1|B3*DL00uE z4J2L&f)mGh(4r=N10lDFQsa<;sY$hy6xoDCn?B1|ULI@xNx!r#=zGd4`JZ!&VhEPp4B)! zB&C5e(K%8N_87AkcV97Jzld<_wqPW+LmTU)JJ=p7{Zm-MQNSxDwwF$odxJw-LL%XT zBR=&oIjNut1cQ0dt`8cIM#c^viS}<1cE_O>Fs#Nqk5xO;KnTQSy#6UI3s2Ko-_%`X z+iyDXVN871SE^aM1X>T*&$rbY6kPM71nVAj9v?Xo>^HlTzExf`Z4gaq2ff?>82IsT z)kY8i@jOKk?QxTJKpu*7SZ+XjP9l(;;d4$bHYE559DWr$g{)HqxgBhomi} zbAzdY#AA@7nbr}{UneWhn+DRr@m$zJI>6lJVsQ*9I<@$G&_y0B(|7ke5RDpeXP4Gx(zf9sNzI!Ci zlm8S2;k-3u2D=czYVGN93qL_^@Lxh&Uou0{l+rrLz}%GBiaTGx*wovNSwREGG5eHD z_Q(h_w(`v6da%#Dp1={jx`r-k3>c2CFnag3s=qzJO=m%#V~#10u@NaaO>PiROJgQd4En5AWbupc|1U;MT zYoIQpjSWiYUiw&%mM&!p={Uo<<%So?bjmGAzT(-C=FRZc@MgaGPAdu?SHt9yO8S}rPP+Sbxwo}my zp}Lc^)5|!54NuP-g~b*xN^>V}7=y~=5^dB?31Fa=sLWQa0sF(9+tCA)%w)yRlR}P7hXZ8 zn(WTYD)ZBk=Q7T2Wy{7*>xshRa@g32e%7X*R8b`uod`JB+eA_}0)Y6vE@(dew@l4{ z?lBe3H6|FY^G6VltCh<^2#>W+hdYDa>uosR`X_?{JyD#xHs8G!)H6ujo}(Pcaausl zKNM{Polwr6CbZ)Pb0^ujEJzag#&q~~CKx+#+nzIB;1NhMH^IOGd(&mmuLTKh`41GB zQ{w(}@&AASaBUOzSf* z2L6Ux$-&SmR6ZKW>4HLehsbnVPc<2J{uf?Yo;pWeLQ^ENsw&aI7Iz9C-XxIGqvyGo z$ZMu-9X;Ob2-LxmF+c6NJV-eaU4}Dfy@gd-%SE$oNvqdD&I?IfOPBtJID;*!NMx3t zSo10x#9ZKG(yZ4gZ_pd)NxiM(8)_g`n@)!}OW$Rq3M};y&t`_fyWZhN9q1l4IOe<_ zPaU-YMcWu!0fLroCF+w*;cUh#{ExLeP)Fxn(h>cFr4{knHY%}-Bd`YmC(07Hw9N*v z(Jw$$5ri4${FIajX*I8EuyBv5ET9XxMCwHY0&YHjhasCnBTVZdlGv1KwlU{T_Dy)0 z#7gxlc||r0I`?N^2-U2C`)d*kLOln(f7nE63pUjYU?rS~jr&Iz^nY%||6Q-ZaEd(W zSUO-#Y#asgRwpcr7dV&In_$DF!;RuWqQ$YM4$`FNW6k%jbEI~S$xbzp-+gwj7K2NO>o^d$^#k~TGHiJ)D2y1#OadnK3_7lZk-7qL z1H1-2&71PDJD&kb1MGa`D0DZfBLD=Z(-4npPuy1=n6WC>tV;q&_3ezm9p1ycbZSRj zN1_c+yX}#3R6pT1_{zhhdNbv*J;R&sgnTNYDO_(4u+HfGMb3uX1lxW#tq=-wk_uvi z$Uj3~I`uRk$Xg6iZ>WS8y#EA@W0Sgr(ofzq2RsIeO>d43xUdSglAC3$CN9ks1g;PQ zSdXodE9hsCQrC0@aIjpb#ZhBG?D;7)#qq4d|7;EUFP!85+XMcmKm1?xij!l3TS>G2 zb9S77Ne7P|MCY#2W?Vto-wELJ$|VMCkQ?pr4j zUg-3{ncV=MJ1~0rA}>Z$dZSJJZh05uUX2r_;pzr9`vz6dtxUv$O2n;J6>Zo*8M2e%O> zEW$eRk{1!3xhPBV&s>$HdFHN4)4dATWf)$C{=Y1<)NgpOczDG8f89zyjccb8(8WE3 zeepN#|9SjUt@NNi?WCQKPQfVBp9Tx74QybljeUsx`G5#-T5DEhZ*;H=xjp} zY6)U+(afm6b@gQM{BQm%ZZbK~#_W?}fSnzbk5+KAiA+76hi@9hQj$&+Tun^XVJ76>#hCU%doj$0sxH>k)f)Nt#(4lB7!CgEQ2R4kGM zCofDPu3_Sy|H~i~(9fsg^(F#Tu^)vY2(yQk-Wl+6HwauKa$O}krh>(vk+Bs#a zZ9xI-1M&v`EhM0Wj z%eMn(iU$`R4}g;vx42L}CCCl15{xjGrOC2WbKG(H>^O2;AOgJm>Z(A@wR5FS~gg=iS6;b`FMa>E8?v8(HIA2J1*@QP& zV0Z3GU^xDWjI=7`+2C{a=yKI<4$0O{$o-uT>ixN_ga07o^valWm- z?g+>QtIA^usIJ`=U|2sfaBo#+qAiS}2WRFD^w%lG|yV znd9nz=)Sun=A1qs%({71N}Hm-RCCZ+83W)__ohk!JJYYcKd`6sgDgfY z4n6$MUbW-Jyi!p;n9JyV1?+QexqoE0t8R|(Z5<#L9PQO16ukSLYV6kU0=$iOU4{X4W9UAFmdQ1!z)`52!Nb1E_^q4(82 zS_?Ds-YpqMXNn9xjK9Mw(hd?k!jV&;QwO|m+U?0pFx=5onT0Idmt_BzErRtg!qoG< zwf(^E>VrWUu%Fc;J>4@r?DKDDb3#ef%FoykOKgFqoa;GlO<|A=g}S+>S$~g zdiAtWp72nBpZxj6cWi7w;|-aA#^yxp{>tm!8KTQ-^w73>CLl2`dze+2XWjEQq-l$c zNhTk4Nc>#FzE7{Ik?-J14eXrP%UF|YxzjUYe&vT1=`2T|*Pic`>M9^av)bu>Tkh@* z@7PLXc^n}D^El0WH>wA8yMF^Je}9b*L1%xaDPIIG`$i|mXM92mydv+VAnm+JQLN*8 z&CEP<)LVD$y=bVqPP`79^UfzrH-s%6@#Ta>tU*b7mtKT&jc}UG2raXVAqUvi@7#rU z|B+G~7>R^PKAoK|>W z0p0ljm%46Q0jm%0%F)Ip1&XPuRJ(2NU8XB4@2WAH?B|jS}4Hcr7SXN^@72yGi&vHA5dUX$_RQ5KrKlAf({y0AvQ=QnGNZ8_Ijm zv#DcnlC6@hq|h3-*FcP{onL4|lqrl{hHUiS@6`rS_dRm5V8alPb$gkCk)J{xGRDlr zGgqN^58AAk!$81wPaTpD1)1ipU8ry($x>bi%4o5uP!=Ykhg%^q<~@Fj2JN|UegO7= zs2~*KaSTmR=2{*PH)({nTmt(}_%At|j5RT%_le7sS2}Gj=^UA4=skr6N;yot%R>lL ztUlnKVp4{&OY}`!IokF`E^zGqF%cBE)x(;g-I~sxLd7t=t;avXU2fd{so1vfIyK3I zB^g=XyyGbCDUgZ5{yDy@(&w`<)fc2|zp?0l;E-x&D=mi8KjKR+QL(f1N74hvR(xTM zb;*#9d>rdl+3r!0*iZnrYA_2!>nZ^x5?3Di%&ob7saI2DV4s>@=Gh9TlyWSBk^bQi zzh=o{=}&`uw6YgRB{SG&f{3AAOAAwn0!+w%K0&?xVZc6iU*-KL(GC9#2T^Tzu8{9W zo(g&V9gvIm%5$B9Q!pAqGG%)B-HnB`uNRLp+`g&aj-7I*Twn-vsek;hVD6vXvTA8k zHL?_Jew?OMKAQs_5qRkD=Kllkz%D;RV7LVO^A`s9^ls-iJzW$|YwqkXHkh`jJp!b! zCJCSMfXf!RN9~;%_`2k!OjfUR0!h3ucHfxNYIOi3*$nH>zE03f3_D_3`v=mvpHWo1NtL>7$J`@?5J4iOB_vMRu9t_PvhH@X(&mmn=Rme zZ}0soDS%wV-@l{V0@TQ@)hYRKegrY-*vj%+Q1J=E!3Nz$(Eyx!`jShto~sPJ{Oehz zLK+jg`2#L?&a>NvWg|%e3|^Lc8m^OElx2QgRHu8;Qc*L7moTRUau6J%*^xKgCdZWB z4%Oes;mM*@UA;_BXL@3;_N!h5QXN%a#+f_cJh@yi8}>i$F3ep8{U)bZrz9_K))p~8y|Q}ky+V*g4+~KLz#|paK1#U zac0S$5S*=(y^4iU?1|mW_7JLbM!Dr4eg#T(fg&c@V^ElXG;9cerbFB3a_fNx>Os)I zPD$>Miss7t)P(w$jg5=oa~*1GB?4h)l1RusMVKQ1gK#jr+GSI@q(8(>7Id9io!p4O z)M*%{??MGnG{l!-1c8c4^T`!>QQw7D|DvV!B+kU=a^h6jgFrWM1WZHd#(S7WgL7_e z`z}r9^KW#PR^4twSpalPhFBfyV(dN6B_6kl8)6|%A-V*@oh)5AGig5D z*zM!GxiVgj`E%^09j3KAiqr3R{>kqN`uiHXFrkSmzU-yP4Wo|Ndx}wy6#KYilOu*f z69LM}>`Cb-k3o841s?fR=(9(y71*o4qnwI<8*2gXdl@sab&Y+p6eg>lrFkp;?wgXr z`)x4P`if3jBi#~sZANQxp0gCn$#p+!0k=z%Dl*)G7a*Ylp%h&dk*5#$Zgd0akM z>$)EuNzD5=pO$ED`w<2HurR2exh_hrOn~&?ABMCMV;|FC#eYW<$lKyy@3EmcKg6Oc z81PX2pS_PS8vDJ9mcd!h6+SYC0+UH`K!20u6CqN3ByUs#&3SL< zRaqK<;brTOsLjcaR4MT$;81~Xs2d1olcPRAJa;pWiYCwc3G3u6nzc#ywJhpV+g@B6-TYvOkjW*KT(rS$KoyO<+pd0k93 zh+v+((2}!D)l1qs(K;i7a5Dk(iQk^Z>#yUrg> ziSpFBd?*dbnS!dvRzP9`#Io8;0!~TO6$El9bF5came!_fr z(`ZSn+kl)6*hiKHFC6cCtC1GILOk>d^izQ1Z7}Pn^Q|H0=y=)v?IDtXLp{ShDjBP6 z$S9C%$tJ9_6BNpz)lhspHa*VEA!&e&BSIA%!+qPp2S9~2@6h8m;2-EA9N>Rr{o{WV ze9c|5N?#^eei%0@>IOklK_6oP7U6h#t42Go^w$m%HvmlFQJL{V)M!kO#A z6)a_cuhNkNc+(*H4WUe=!IBlx&LHB3`$*~vfuOzwJwr>ZA|Q~h(n((N@gjAmv7!rM z9tecxpyCHyP6+>j+q=77ZiObwZ|8t1z7Y@Z)P3li2zm@UcAiw^D{Fo-r1v#lj+??N z3(QW?X=UC}k?q9inGBUalm!|pJ0j?1!(`jYac{%SBNffSuh$#FHhQG!XA>WB+&8 z{`k1<)2Y@h>_%J*cc}7TEJ4Z`F$O`gp6_c35a&~D`|<(%q@s{Min@0LDJZC;S2Uf< z>j~XyHu-4>6w_HV*PLxZ&?p@#^ZFNdv%carBoLO}4oYhB1KXIZld>L(oGj&@i}|Q@ z%d&(sJPHy&fjSDqPU2RN;BlPjSf@vq0h);e6Q4URg0S`}oM@o6DH?xr-y{@f6MD7E z3=#vZlzdNwex{Th@XVZZK8~3d<&ZoYQ+F+JkfSM>_zI5Y^bZh5&s48=ZUxp4;FwZFO`< zOu=Sy|Hc|bq-*NhVr669-`SFWpxQ-{aM34xDPAXd;3Rbrw@!Dru@4RFM*Px&(qvDN0^N%|4Lm`fNA*&2KiE<-vq_fIaL z>p&H5wId*C16%bu_+u&Q4yxybd@`DQLQ0L;HwM>@7pMldwGqrH7N1_!Jj73PI1S2A zq=GU5oA1OX91rl(P%H<)Q_;)m#veC=-4G2O$|3NxnG%1Jt+Yjw@-nQx94b^`hY;#hSJ1Vxch&cqvA*AOoHb&7=wb~%~*Ma zg1Ac-*{cdu&{z7m^#dElh+mJsxcV2CYhW`fp6}W#vDFdJ zy(hN<1JOnaiH8}{Xm2!m&j2~l-#0V88*C|R0&DXj8}UKD)#=}>-9N$D(Y2S@d782^ z`D!R~J!*`Mrb3WeMXIXgX_|US-PCglUuT?pMoJ^pt=q|R2tNMEtJZ|^*rx|AWAC>1 zE}qCx$ZLFSz!{GLDqP^+&TGt)`HP3tJA!kH@!Ea@cqZwEoxi5tlLprL$nSk5)EmCC1LD>yAkc2nbb@ zdeC5{`^7EG5^B6n!;+k#-6X!awOze?{S!KhSusZ4Mo)lf?)?bl`JR$Jk_ccq{?yZQK98i zG4W<3`@bIiYq+0xtmq6?uaM5{_YDVBpk8oW^F(wCt6$_obCME{q*@U)PvM}X`NrHF z>w=^V`^}nycXn!yM_n*8pJRhR_Hf2;95Jzok)<)kFu%*_7mrIOQf7x|TE>;f5yhVJ z%jEWf4Zm znQ5{z>z|yz3^D8xLWg5c_$kAyT6VmGyb-STB8d28RPeMB1IIWcjWK-Wx~`xGy}56! z@V2qjxE{p+hGV&Wnm%xhE%rPe8q6ER;#iDgIgLLDHs6587TunD(W1XoyzJ0~*bcEC zDwRji)2)gdaY{P&EYv$B?#&%P)kUpwy1;sA)3Ig6!A*Zb9|3QLj78NrT7KT86K7Z{ zQ)d^%cO6AJ5gGHyR#!YNWmP;{-kVp%4AW*wHeWX|76$KVSi>tqc4TQYDTB+~dmDQh z{KF}QHbx3<#bitRiLs}W>?-=Q)1h7wmM46(aNF^%zkkTyGfYRd&8I-h=BAAlbsAdM zspH;r)x|l2Ay`hB(EM4bJ&{N!+mFoRN_p^It!Lj&lBE{PeZ@Vxg#E~mna8IX2}W8W!yp!DQ?JPv4TUHqmw`YDs&6*2j%?`(q#Mdes* z3z!CtqPNh|`D3Z$pF|+RA&U-q^Bb|c?4kotEqFk@X&V)~FO_Z`Ao>G8g3@0RHb8@} z!&^qYD32f*2@_!EA6&vlE08~XfWAfnU2z6KNlU&5Xx#QNd0r!9dXAu6$-31@+a^&- zo$&$vt1qaDXH-%Hj;%c?g7sSzV_{xg7Npv zSw<&afx%GsA#`P?Y_8!%o0Ay$!Kt)6bZe_jey3-wL*O-hc|#ZWz=;=8+Lgkw#aHkG zr7h-ra>KGa&lm=+E}IFBQ1&uk)maB2JL-^7cdNn!Es`E>>GTjwX$U9d=~|HS4Q$A% zp1g#_oX7E%AV8Rq?z(nOG8u4B&uhi`lBM<=1RET2%GVKt5YGd{v`4h|yU^88=!A!?laI1XQ}srD{2UM9;wHK@_`nbT99 zjXVRbmnhlf3ON#&_swlD)p398U9Sk}qabU{wB&a5%4`wg$|S)%yY7*4r+i#dP2jXQ zvR-X4pk})j0eO4l1}#T%?W@WKsC7i4Ctl2+O5LD{6HCqJm|9+u=N9exf=HUc81tlT zSVwry#Xm_fiOJ<-t{^PoY;p0a4wgRC0}$UA)&+^27|EZiFBE4dyJN6Tqoxa+L0wtC zJ&h0Q^H9c+8L&*B?#D`*e!4ewUJ{EGGEt}Hw3CcYQTTif75&5n1e-n=1u6;=>=)3{ zG(bOY{uK%s-$R*(;02xzR|s5VrL3#o3)h(rm#di0*zc_ML{Z%D)mCQ;EQSU>XIPAG z7Q0FzJD8yqaAH*zCJFK@z?$V)n4jEHXx})(STq5VAvhi(xGK%n zZ;1SV^GW$mmM9J7wlqm{xA?NMQBQ8ypMCw?3=-(T6McDES(%22d5uM+ z2fA1pQE$2^MoNzLTybIOzd0=QZt+P#*8q$jvy$}Bp;(Q(_Qy6RXTXLqJ5>ADaDL3% zKr9gn$vh9wk~=PQKw_ua_HTHc&X1#3^EpT^Im?xR&`}q*L24YKsL4p4F;&Ww_7*4@ z5#sEURKjuuh=8l-DNHi4k;<^KpLjd|Xv^~JTfY7n9lGbIls7n&$+0mVcO0+^-0QEM zjt^$0Hur8Df_=R~AEJ3c@m1;4{?8S!j~Lz7sPYk-yEsGUSs#L1J2>YcPn*ls5)yRM zSSN%}QYBn~!^#b_&DXKK8iq6`FPZpD zSm4o2QJ4qmH6X4Ps}(rp5}lr4)(JV0z1p-P3q&6QY_-%`a<^FmK`n5HEQ>&2tUQzGv^#eG>w$)S#vpg1tC`(@5~UX;-qY~fkcCr~0v&b*z6dMIx9bgbU=Rdj zRY^2X$)|YQ!fxH{!+83fuyB^evOWhMeU2j&5bDye-r+ehU{HF^EnXj--etjU2vrs> zblGm+2fI za^|xzCoWmD(n#G855MY=BVif9WRnn)`ozI9+1s5iQ~m5TWxotNz`t_&0$98@wUPfy z;0xe`@X20sxk(UOO4R^)x>#{v^49`D=6BIb*{Ur{zW4hE;n23?5+0KU^>j)F)Td`6D>yyQ2pE4m5?%n@Z7z#T9 ztahQpZ~n@Tg5*LoH(BtsxT8L3RE=mH_V5@!mV_hor5x|!XCzz?-<8pJJLU|D-8~qA z@XBOQj|b!N{Nr6K!H}F>NAOX)BdZ$_CPz>$)4TVj$TBVUGZMnFridTS#Yyg!*y~#( zaJ_29>A3~^q#X|h!K=8SHmw~_UNG=D`X-oXxL$A}9aZk$z&4Scti_nX8dSTZ(-}=} zU%SHO?HOh=prW#ZR}D@?5oiK@6iH|^@sn#gY)9n8ePl`NdMHt2~2$WoR++*>W%$}Gb~8yXGOsKG8WE?kgo z>7-4mp+$E)iy$%ZX$YI?-X@ffaeHLRTiEv0M+>+4J0#QP*DXS7;MAS{X`Zg>xxTQP@J4H7PV^%H(W6Dcwe5^fl&ce z;{s~-vVC_0WoojG0w|dVtmY74A||0DbJ91Z(oWYDB!T;*^@*nXP-VCVUo$6`SE5eN ztpZG_R3(Sd60pd#*d~*ziO#N8YfIC(4lvycEypuO<&%ths>S$PIxXKP$TUKmZgBvK z!=3a4#H#`zP5v82xTg%PHV7VHMymJgmi*OZL;6FV6kXTrcj>~H4TZO8hQlbkTfZLXL{axLIdw4t^Ak!BmE|k@ukT(RG z-s8o)0y-Emp>*PYGs7~1GU`Zy8JBKu_0ad|&yOFIP@->7j2hwl7>*mn_tUd5e@tP$ME zr&@<7Bgryp-?Pqu*huo^C7nzL9ko8-SvMG9dYO6W4ta}9wk^8Gvkaow&8vnml!BGG{g zLZ?@jisA9~CQ7)L;fjXi-OZM}j^0EVnbYhENT*4ZhDQeL>F2#oZqjpGbT9-Zk=0q> z8rY_o;2F|0AY?4~aYuD8fe^3->{Nkb)d=IxZiN&<`w2rV#%%Y9dHE4U-x(>E)&kW@ zQx(7)ummV{mngDu|E%K8z-?Ed2rHIAiZ}y}@OYJY=vUyfwA`FB{mZQjKd!Lh&N6J~ z64v4(YIRjg%7EQ-kgk>TW@Lw_U5JJ#0I1?eGc2Q&^T?c!P z=Ss`CTwQMvB2E!T6|Q=P9}X~EhR)S3t=0#h##=N&cqvn(&Z#ouvj@1xCFI$S1;m8Z za3wDVr_;1gRc!6mh+PAeY3IDij)_JU(i~_CVANvU&s1X;^ri=*fg;@Wi_Te1K$Ii` zu4|aRFIkXJKgUkhUkC^(GDy{;2NST`hURi5YK=_!?-ST)V3T^kw8d6D3 zs?G2%aojDQ%jf$bXsYZssbF}1z_k7O^!LDO2OKqG-oODOB+n=Cj0Ble|CDQMP1m!M z+#w4C{+wN*`c9E`GGCQZyvkpU{ZPfhX!Q|708mVVb#vGf*#ec}G?sy#HZ$asQSEte z0$%H--)Nhb8}@Tvc4H`2yJ8&0)-BrwzzIN%^VE>qvTu^;W;KR8bt% zEq64^wG=Qz?qe;xhdX+Qf8j|y2r?4XA^Vrhg=FJSBcIhz`l@!S!7k>G>!v0lBd<{i z^Eg`7!-$k$pw1j-xz#V;w3%)=zm%;)TH+xpE_xAfoC7^&DGLtwe$N|~D1Utm0arkf z3#-;v+{!MhJ4&N~@#WhrU^y}(s!E2^!89uofvM)lKQwO5BF@azs4Fy$RdMWQP}%-$ zC)`CgK#9;>;9FyV<3ohknqC=xyw%{eYZ)?^$02RIc&M(K@$Qy>*hUj-J`=vVpGT?5 zYisSHJG1b6&&5%M&c?8%FRHujx1$Q&RI|5JN@WHzTmb!Ere0)^NPEx=fq04*{A1*N zTeEj6=1|k!GK^2sW?wcZ$`QU~PNl@{M=qg>fb~4u^>KuU)~qkj>hbHZeNwp5#$&{c znAvH%-vNgoo$Wlw7ie;3w=ORCB+DWce{Z|oXC@1myL>;(s+<&M*vmpqW|%$j3Rxjd zy$M>x-l(7`(&)JmaY#zNa6C==nV`N3*T6X20Ky;CrgYZ7vD6g1Z82p)Zm8$pl($f* zD>;T0?V&2%5*4jHJg$3fIBsr|%DFxbl*q;7Fa#T5RVwJHagiRMtk*WETNdzl!*m$- zST-N)+92OM{Mj9lmgvQ(t-IX8#c|ZT^eCY!cc%l&+`RJAT;?h&u#T(r>D&}&dnZ8Z zG5QHIG^7lNc1(6U?wlCCm>b{TWO-NPwe*8~{_hRB>xQ)nsblMM{qxee*w5|aw5CDk z8Tfp_n^%Z}Tl*OKmCmA8ti)~$12q7$Udg-`Z zIeXW)f#CNc&w=^n{RR<;+)F9{9merf~@>6#< zJam$4(kgj*!qRF^MO^yusAG>_DHE-w?(sZu!dU)x24bxAg{BPwCVvMIJBscN5*GY= z&f(V&I}=F+{{m`%!ESPUb>>pTr=5}$%#vS{T!wyi)N~Mm(EPbj=W%!rs(x{Doa8to zdl-0mx|5k8zF4co&HQQ${>&f7JU$vHSCJAb2nWhDx{{J$u!=ibsZd&mp?-1fro5IA z&Z6q$@`=}!hK%NS;SFxQ`UZ=c(CU7aIoYHcc(Y&LRO8t2K*oixV$2gHc0WrqG7k6` zODe*(0q`?AC~*`y0E03!V1y3-W?o^4y|`2E65*Ypp={cB5=2@^uePzV=gH2L8xHd- z8-KY`3wquTAng{i^&ORG(|vbzh5UfH{YHJ~ zceTd|cb_7f(G4sj?fi~7bf-#f5 zqr#|@zD-LMHg3MZd4EB!PjN&wH#TI%&329yQA99Flg?i%_1ro$9ur58)HXatWx`$a zGE*+`K^Hmx4Y(oT5!S4=B_d;+3M4iLhBjt&nUC?D*g#0?5iHcRTj zbRvi3UX{IREctyH;Vvle>=!fyPFWKAI0LD&5yC>+-OGjm%I?)Pqpy(Y!t)m9;0{FW7&5--T;>S-JTXe3DrkpI;xcEA19t##9s3BKSl%=~A(VAe zGd0$R5=;=hAYfiC4_VIUiu)^yG1p#f=o~1nN!12Uxv?T&f+Q~^3SEE#tYXWDe9Aof znuyfjE@|FdcyLpbptgkb0dA`1T8Ff;OhrgPL8JOKLUq}ZhAt8x_x^EjjK{tNlg_WY zOi5SV2(Gw$gqJuDXDb|W5UM|-UNQ8J-D#19vRaA)(^VQ^$omBXuqL_w&XCDo=>%wS z&agO zY2lesAb&_XsJJ(g?e{__F>uf9$S5pw+CK-c)>$If0b6Y4?0hum6;(x#d(rqM^9^w( zyvk$zut0}?|8}~nTdA!fH@Q}>T8^MDje(89B-f<_`>L9k_LU!GXo05{Zu%RYPrU3u!kD(KEk!3qN|dE@E~b?kY5E%d2n*-B(F z+}j{zlZb`4DpI8dd}NaWvt!Fl$9T1dq%}kyF+T=3I7Mk!{&$Sw8t6zeWN1${^OXDj zZZN8-#dK~_YY;eLzK4kn$*tL-*ce9W(AS0liBYY8~9?IWq6Ue?;tstre&4$NWZQuia?6 z6};6@wYP1VQw)*!%M;c|H&ZpWBx&n%A2Pq>3Kdh0{QnD?`l;1_j#W{d(Ld^v_5$Txn)5yoVJACyWX2TCH! z4P#mcY*Dqs8J#L>`fJ!xNqt#-8mPTFA>BLP-Vp1Qpj8@WdLDC*;y4r^H~e(ogAo2F zNCK<2JP24o5-f3OtyoeA{E(W6Q%=h(wU|-HXEu9~p4*8m@7cQzq{330ESFeU9e!{2 z5il6L=G>(NLpj_X3>agR^ts)cVi*T*?-0B5znnVUc#>J)a$IULPztDYhH3a~F}Gz# zD(+9OZA3#2SgVgy?q|@_q~{HL{y;-sAK%E-Kt-zI3g^PFa6jx~_iHwBn{zlQZ4xnA z6bX-@>5X;kBi&sWXpfdrE0${Qr}Hl#LUs3VhUOJctSZ_!$&#jES*6-rp1jCtspm~} zcTT~E%9RZY3X}VhduXh$_@3DnNbLAK;mCo`2j{RU%HHh228L0@7cyM?AM)F$K(|Xg ztx%Hs4X@f|Nsm@kI-Dzr*qIrLxpF*E5NO?^l=8yi0)?2C70-^Ft3~({e$^!2JNQSz zJpFGp(J0?`*&ffKvBo_X>^~Ki)tiomkH(p%e`feD0#XIiN?YeZ7}`1OQ(9qYs#_XC z$I2)9rT60w4aolb7qJ z{SQ`05iDR_w$K{nz~l8~OH*E_R#|ccb5nNNj>a3!){AYv2Bgh&b1|92K`_}V+^|f zz7ap&b?uuIm>^6l%H_{}>cI4=Lx+V7!kazJMuI>!{38xD5X1QZN`PyDiV%G&V8;WTxadN(HI@MT-lJKlCSW?AUtL`9=H9mX1cfhNkUf* zSIf4irh(_tpyFs+KqXHM)?X9)V~U@xR*Ou}LVTQ8vKu(h4Cb(*P-N4sz+#@t(e1+b zr!?G4<~8KiIH3Ir&PzBN#H$*j0lE-PId>oZ$0q_?mhkGsGm7{~(}vt;+lo}WUy3k9 z;U5jI^B3%nJy8kHmZ=+kJ@W0WJ7d-2Tgn%hzb7PWA_md4B(6AHP=QoWCt^;nZ^# zZkAJhik!hQ2ClBpxJL@kk$ah<*>XP|H}9X5xxMJc(Sa@7|9;~dv@IqvA?>llj~?O9 z`(QRRvYqV5v(Wg1&PAS=gN_oor@T0;X0}0GF9_``0pTs{F}VNegGRYRf+bxOxwsq= zB*YAc6cG^x5k6GS76PYe*P*N%ra#(GGz`kbW)Xd|V;XBTsiWHTB$4`7ncVu(`i#*A2iu1<=305h9}zyWsKP}`cH-1>pppOB zY>eTQ_gka#aTe`-fiMowGY^5BzQf+|*hXEcZ(q{f^ld_b1=pJ&Vq@jK5G<3s{}5EJxDRf@lVxuejYlup}K#94{UX!1OaHcBouSl&ghrGn{Ef9^pc1VEnm@SN;ksMy6}`k zDn4c>=s)%24!OmuHU^q*xG0wH@za!A}AZlK`-ap3V9AdlTZYG#A;no7ka z4o%Z6e^lu|2Q{Hho?ry6YL~*eeQLlqt*+>C#5m3;vzMlZrpFkz9M_P4x%FUK(T%17 z%+Zcd0bq(UjSexWx>$;1q)iKRmW8kzJoI^2tY84+F`9f!fx`vs3_ni3qm%>Sku1gB zPD97xG=k|ld!Dz3JI&H*wQl8bV?&e@U->-WZyDnmPQcDC=Dk^bts3JgJ%hh7Mc%qQ zHA1IA8mIvwGq?~hM4?A>KeuK4{$6Qnk6M8Kks~PN(Ib5_UF|qn%nJ=gq6z&CAXSPI zxLo@v^<44!3C=N{T{Xqwp*Dokd%QwtG1m2HR@)NJ91Gn2fMTar?E{zln{^R?LWEplindOrlbI z#k!j8jCnq3O(ulKe5+{CkuvP_xsP`*EkipxAmg-Pw0t~f^kLudN4hmVTVft z@QR4iN9EY5&g!i0vtQG`AWTC07rS*+ptd`hE?xneiVY*^6y)S6dq0}A0Qw8z6N;#w zZ6fQnnC<6iVt)FKOR&{@?T_fSITs1+;fBv3J>E=?=h7H3_M{qKM5fuP(d;RRGk{Nmd$y-t z;acv-A)^uHL>v)Sk7(u~OjoD`-L-QCF{zN4+DWp(SW>E|3l2AcDa0VmmDrggx`OJP zS-#G@oQz7EBlgf7&nYKAh0>2NSf3EAR+&e1-ia_;)?9)MPx{7-6USr3YHsfuN`$>} zpYqYVHJAv6IPJrSdqoXJg6p1RkjpOH6W5c0)%jz)M2lWXG{B7lMbO1{l~u!bGDXA% zvn&LhXL^|SntoU-B1N+Jvl-6usfuX(qw@gmo7jZs0(Fk$*+#3d z_N)WJA{g;;gKG=OIr1*{1tlLInb7FXSzR!P_LC7s8t7JlSQani7&o%>dkFb{>Pj#e z&oa15laoUsJM88I=P&iVf4;N;joK}1`|hW8`NND zvUsh#xqhb=D%&zsu;k!^VN0+!m^{mSE`Ad~4Hn-=U0=Q;51{L zH1Vi?L`^?eR2%hBQ z+?}Oo#eWciwPqCTBgUy4W}8nq-79ylATZ0U*H2dpcDSo3_b{O7J_UgX>=Z%X2mPP? zVUC^(r8nU_v+&nyA_GKS-v3gW-X1A)*k>2yJCH#FA>(>5&K)A!k&By(0E5CqF}73mux@Au=lti@i~Z4>*(s z*PA5Z6Nt%~fD~H--nzSpcosNGbq7OVK3=KAhoQ}(FmDs0=C|d%UZV z*pN(ZOK+6BAzT9eDP*YO9%R%%hhSqnc)U6Jbp={jAts~E=-V~r3xP9K$gb-FD9tn0 zd=_>k70>PHs3YI#=@0n=fhLv8fX`kbL7AR`J-lbx&NE9yDxmx}LQ5P5xTaJ?Epo%G z72C`5!>m#dN&qYws2IWTajfjR0{iI@MN{tRK;-k?5u_63vV>)%M)n&ovn;}Rh1R*XgB%7(xXUU(*&Va>zeb2UnCOxV z@*1kG#yakQ&qU7ZSw>NE##lVijb~^nNn}j79M^6gmD5GX($N5ZRZrafrA8`Z;MJ~B z6I_x5N&@LN`qMiwCjyL2L!ez+lfC8R`Tveh9tXm?c_2yW|HFoSVXLh$u4w5iqNGqv`)_&C<_KakqRhXYsr^ zU1sgm)K-(OUE4p<$bnJ($7#=xdb0l76wH(RAkc^Yk|Pz$x>WvHOB=A@NW9?MI<{3^ zGLDnOYbW)Jf3e*oPRg0YN%l`R))j!jCh!C2gQblDRhfEeMSMNpKdws73BtU19LgHT zPPp4&((Qg26e(wQXAVu#NRq)B;2CakXiV|Ub-vWY=x=IrbK*_emcr&g_`Qv2SN{4I zseyzcHh(X-WXM_6af0E4PM96m!T|_IaR!IW7>q!YhpV_`M-xo)g_d#uMG zUANcKp=o6}Nm>2bpg@o!YgF2fW~$e2g=k<%I-S?0;2r6P;ggt3%p0bU-|ymD6*ewa zu>Pokl)fv>SRlIItyk!0kg4{`jGvH=mOz>Hjr2+TKQQ8TrpS%+p_b&k@)kcuE6Fk< zS~cVqNQy)&M;}a58yB~@4)h0`i{d*UO)3UlgWRfm>Y1zJ?Oijpq1%&A#oMWoUGGmW zjgp8rI5mz*NkAs(XZ}XH5DH3oXOgkz2RYyn58WM=m9Y1!x!AZp0fx&i0;6&TL&vr- z!bhVT-zEjmqlP74oH*$$8dC8wqToNIgj#84#IVJGapS&ZGR(|Xc`%{7?ak_f^JN!l zXZx45=XzaMOez=gX$5_fxeEH#8EB9Gel?2v-K>0Rd-~BvFv}*Et^IC6h{OZSB>k|0 zBOMKK8Y%d$2E7Uo+2{5B@N5{!-As8mt8mPL93!F}(_+sCkt1*Q2bgU6s8v)u*Enah zPJBi^+x5nK$03Sne$Ly2Fv&2~0aI(D(mite-dO;|I05XjVA@#~LOS_*4XqLQ;~4KV z3@ke4vz#kM3;;lvf#a2Fl6w|ir2fdD|0ouX92Lz;C2=`SdnJB#-bkYZ&{)kFNPZ%Y zEQGofqu6a$)+GMJ4Ikteb{iH#EXT|@n<2BaQ=a(>4W|z*m{dk6dwRWP7;Z6jvkjT0 zw6I|*S+_t6?ct8V&Y-UjOBog={4ne!CmNgcSas!?+p1<=V``&`@?XTr|<@ZSZ}-nb;>pn(^Q= zm=38<_)q@U+T>mjnMXvew!ZMAf4sDcD=kkAAmLjuci* zQvj+7DlssHXBeM{)FI2C)0H8X+#2NyGa~Q9-?rH4B4idd8#vRDVdnQu5s4Jg@=^QNJ+V0I#j$*xz->k znk|rna1Dt#migkC;6Xj{+1E6ko z+zDaF`pkXf&z2Y`Za-XT2z|&bdM~V9w2UKxS~P;Pi&5{QTRQM1Xb{0;Ns!m}I{jeP`NTYWn}xpkAj8gTJ(t@n*%`x#|Q)v}^dO1aNjE*qfiYv7OI2{+ak zriK^S?ax-2q|oepRdI)Km?UhwXCgHwF90+t1In`O6V*z6Sx~MLt`j;Dr&V%hZCg^M z|Nr4vWw|xo1lY_Mea`mLmuXU^Mw{KkDa=dPwdom?;X=M;5naM7x(94FpC|1(KoGwM zpoeUUZ3%Cw4$1T|u~)wxV#@vxt%a8|<<`qYF34o{02u5qrzjQH`JRWo@E>TNIEE>O z1Hut+H&lQ(Oz~fAV8>1fxCx~&^`?7_oM_Z%G$F1Ps$6b>go7q^$AJ?*w5J)^%w|1RlS&bw-SiTbyCbB ztJGOtJs%bMk6$|n``g!&HhoEX{*wnJjgWh>LgL)FhNr|US-k72nU~J3`&Uyj#*LYz z7Wj;r1{jy06>)44<67tZZhvxF%<^-kPK`-|8+Q;2+*gU;yPy zT^-W*Gn#$CZ+1c?;*-=0rHOJ^a#wXb!;Jhiy#OER$avSNVCs-J4o-6p_asaj@-jSZpkM!i+jJLg6kv;_J%Jqfr^b}#6!LX77?xo2w( z9#KxhL1;Q)5d)cYi(v}7A<`mn5ao-an0N<|Tq9+>(;4YB3b^ICpw0lyHjtxDiF|s(OL=!AI|7?<|hgODRAbw_FADz%$fx-`g%ODe&s+BzvQ3PyahJ zyo|Xl=jtcW0l}KZudH@Jrh{RKvo_1Gq82`4Xq>^P1`6%n8L>YElqyR}xT_n&anHVo z!@p$YTyx`ZnDz^Qw5%*Cc+>#|dpn$D@7v7~&jFzK#gr@G$#l7S6*y9Z^(_q=F%;($ z6Yzj`SzlMGgbMa`nW?bmR`%2NRr`F?i7N9BFrely>cAP7%8&YYsvNA9XZ&8uJ(=x+aGcKQ!%R9H+=rq?2|~fJ^E5OqV(DT;yo{%iOXlV!$%oW)`?! zm0}0n%WG=E*rhHHgZGc=iS?Di7Q8z>iX6yfX*g(MG%k;M2zNRm4F9K}rO8FeM89Qy zdC>pELa_d!PD&;^*&QLW9X2_jx+(rs*=Vi$h9)3n8e*SUNEVj1{4&|nr=%huKAd)n z6X%|UmkyNS^4-=q5rqo)*)CAuPSCnQjYT88a3qL`9|7N>j48pZvR*;PvKS(1Kve{6jJ#e$1!b0 zOGf)m(SOL9EhkrNO9qB%QlVKK)R%!>Uc@FHiCDUfZ;)RMR%HtwLWA^Z0Ops=DKyeT zS7+|y|8TMcp|5jA10>>Rvs)KDpii)SWyvo;$-EW~+LG$0XexQAG6WaaH2Lzlu%te< z2OM>qZI8ir^i(*+J--e)>dg#Ewi~;C(F)rxnC2VkN-6`Z;`L1WF``B=l(+ef(x!ee z8UVXB0QcupbsbdAgbe-{Xo7?huBO{@s&{2OE*j-S76Gpa3mCiUJ=j42YWa%hgL?P5 zL(~*oTq5sztwOrP6b|Z0ewNgu$dd+U#;Bcp z4b)`h!90mFdgVxW1#=g#V{Z-e7Otod$;E52n8Jn%qrCyP-3>D%unq+OQmdJ~NvMn> zBpMmld>)br;420Xs-qdWsydXkdH3w4JX~(KxBSN6gw-cI(b{rkJ3-iV|AD{N?`@>5 zah1~GGs2T5eP}8HJ^(c>J&Ih6H-bSa9#8c})t-dw^vIf?&?Qv__@k-VzwjnziOjDU zqH{0BF1B2MCEr+%_UGe27&38Lpa@R0D?A6-peOU|kl&VO-q)rbl9aA%upGhePI z#oR}nQ-6N_dhH>UdkBTVQ{(%E=RbN>rf}sviS$y2Uk_nfULviY+jjN!7%!N)Fq#j8 zxT%!HZ&7rf+mtd=ef7VLJ>>>cktuBIHj!Le>ux1D@W>)MmTxt}reQ47ApOWZI2v}l zu&Ary-ol>38v7I&*xl!$H>F5i8*9fsb8$#(Y1WJ^lu-7_ReY>rj$Sz==Q}1fS$u#c zVQ>}JAyr*gW!R+s?!1F#zs)1+XBP>;xdNm`uJEFeP_=~L!_238ww<)P&+Se^F<aWDkaB^c$kImj=}FR z?^t3$NY15y8GYT1`y|Qi{)1cZWTH+{gGY-f+Hr&zSTiW&EKWSvrI#>32o!v(ezJ!zE#c~r!)HS z6uG4m3rlDZH-?;OQ*Fe_y)KfYo9n(({E!`H2bn4ziEp_B(Zi;MTaLmWJ&*-jh~?hC zBh}ExmmBC>I0*BN%ZBM)rj9JJRGOH*^d(2gh@kd#L>#lSV<`o!EB=~{cGndopoaI% zz6cut3$L{f0~JX6l+8-YvPnBGGeIxNlm9k>L7vS0Qe4H&%~a=RLn=kCHWXL!=?D5R zdsnmB=&A*JO5pgbF~C6ZjIj(BrHyI>d!4l4$}|v5$-=UA^MJv0omUw5m#&9B=)^zY zYMT5+`)X>qAzwQIHxDW{GAOKwWE+Jm09|5EoHw{ucj{R(txhlHlTjA}BB2<@q9tz3 zJ=AUW0U9Oh6UuiEmUEGq>R_iAXi`*nYqfZQd+@kv52P}>tA)`ry4O@75o_?3$1;Q7 z+~>;aNl~H=0!tgP|7AB{r{rRGI3Xd4s^=jMT`~qt?xiS9NI=Cv^asIKkyTY-ERCuo z@(a}B8+Sz+8w!$bVC$@cNs2Kh`6ug9PdF+)*L`3OsxYM7adpmL$*Mt>Z4?GUF;fO@ zgj0EyQ+r@^ai+}LqfVLOR9;*F0QX%lK0)Ma?k7q`coE6OP%p!HRI-j}6tt6Dv$|oK zsGZAp=Hs$^vms!b2Nru~MvB6wsXYLBA}QG~=ykUxHd$)Uq}ZHH*9)v;nwt9PNA%|gT%wR(^0*+_ z-^IHmwPG6NtbT#o1GYb|8gUBL+l44kd1{f?O1~sE*(4u@Qpw%WTR&6QY~lXJ z>b1WNVZnBT!@TotI3xsd-ngD*ZO(dX4{ahCj%aabe)IX_r%;DF!CYz};`>S5SHn_U zP9(A!8R045Nv5D2dgMOvFOUHWu8Las>9uf(Y06SO}9D}MBcY4cPRXoMD9FLR@ z7EW2Z^%CjqAm*c|2CA{q><%PUsP}RFCKi^HbtpLU5i%Qb3heb8tbQKnPfuB@YZEtay8zOpMj2%*CO3xktgacKd!V|V23$1R1M*z8V zbe<964n3~{jCKP?Oln`E`@QlnH5oC9#dk`-MuTugV+#FIhi|N(ThB(Va}OZ@BVB-s zW2sM71sTe;<1Q5CYp&FAZF`E9#vx~`2pS`?cHMIX<%HW*G%P%_#(PtQaH80&1$IX$ z^3{F+LIIJV8#`rmK`=#KbFB+M5itlMv;~ck6!5idTk2g^w>fz`Bu(ud5X{187e^RJ z9rJh&DRxV44o<8LL`?1n;@B`U!4Aqj_bvnA0Qd%$6az@b914cs;_j4>ECuia_()NC zB=#K$7Izh$AGzQbPY@PV$;OyIM+LBUz<2ic2=LMY(3k8n4izUSpsnLj`3=A;5du9p zp+gV=H`5oDRykb^PKpaOVVNq8>=QbJ$3m5mj*`k3E^(Xlsrd6>^}4{kgVr$V%HuUm z{Hz9Yhf@bD-+?&W+%#AL;XBqhBa1gu|KGADcu22-SQJRlN57HPe##3=ZzwdKHTX!P zW(PdC5cncgJwqIp$TdEBfq8CI#NSkYyoA~jQRw#s zG9b;ou{gq4nc&P9be&e!%lUzBiK*@r@X!jKiMF^|A$!=(X!4?~F{WTP;)|dOg4V^X z2A;lz`+lEKi?_2nmPg#=r+w0qRoTR%6i8Rr4|i7Uns_QUl)Xn^vuNFY!fUe=lLv-a zm#GvbPj=EC(XN6}{_(t##dCIVwI9w@6X%@n;7BwaYTL}F%Ay2{?}S*XzQ|ZQmC$O#XUAW{8w;jHFRD_nS1T*_-JJD~CLLp+2RXa+tVvJ8qcDcdo+*z(k5-Y{6p zTcK!yj@ja|?L|H`9_=psu=V;ZFlWw=)RFE+$!_5b%0}gy`dk+gi$K`q>hnrNq40e+ z>%AO-6jb*9YN@h9dPwOSWOTF<=972HexUA8@|DV|S2(=WiXEBY=)xm)E`%V;M z%2<%K1XB0dtMc=}b{bE*r7p0E&}1M|X_F8sVZ-q}vc;1kO944cxPHI6gCXHSgfk8w zB$SJWkwkys_Ypej08wAzs|}nl1q0Sy?A-@(x|!?`E|mS2$C$JOI?%nX?!auaH`>nN zA;f^We||~ws+Q%~X79b9+vqA1drTPc`IZL8A8LaX^ltD+&jy zju60N1M`UAbo39>^BD)>@_^Zr~&D+zEP1aPoQzW3JlOhK^?4zwUW0(K?KS9z+^ErI>x2`*tSp)9Te0pi_PGRq7`lDgg2f0gPT{LY57%II^f>gio~U!w0hNys!Rj;wM-D84(R}_q8W#Mb zBR55)1o@HufVZavI_>fP_N3&ONQ3|eK9!!m0Fi_M4&mhsa7ihAlWNH7`~#yLh-9=O zCf>AYUVcS;yL5)3YKpj_-<8d+%`vdaStA?^oJbjzo=KuhQPth9_}QZe9t@1D=EAP1 zDtO4sFq<+xs~2yjymi%QKi5e$KuE|QDc3SI4cchXs_?N~%#)UAa85h7wM($5;An>- zh^gDmE_V+M0a{$JXD2v%CVNc$cgSwx4{$L=`9XluUw-gRIiA}{ShaI) z)`0MB0(_}@3&OkM2ilupqJidn_tA!BhCdN+nQNc|2<# zCAnAlztN?>&c#t-0~t;Jt)HikHm+w>W_CFEWIk;*tcE{AG zTNLBI!!D=rytAB3@0PA40Z{Oa0s4>69}on1PVqt|k4jo6Yl1}R{dz*2789wW!D{sX z6^v`!b*m;2mfy_#>R&toP-G>XFef94_@*UmYNL~;JPS)_+fY7Kn^21)a}{&73(a7g z|7&PndG6!|5d4{NqeCvdyqP~MFOVX8f23mXQ)3=(c5H&D3%UV<7jb~U?N3*F^LE;w zjdS#i=j6kyjGZle0;e>1FsB-d_iy3s+OAF2hSli<#{u_G(5t|w_#tu-H;|d1>VN}< zxm}6MHrG~j+8@vZYrG?2v&xt)DuJLr4Pxs9iyx%HanBFTM^N24xEKS?fpB%(gSvbD zW?hh9W5Sa9?sPn74=dNORhQj}5t#{bQ8=vlW3n6DU4%!?BGbW~3D~mzATl(tPr%)n zWumDqek*ddsQe5g4I}(r0>q#Sa~QVDN7N@lwU}bHN-1@INzj%pSPajdypeIBOVrlQ zx@sklGE((Xwf&g!Yk}7r;N!LCW7_u8NSUtB|4X|h) z+f9jI8`A|S34{&1qqE zNnEcq6Fc7|zl(K3gS=3@nZrv9X)wgnwa#~T5PeWaqVU+K;l3hGJiv6C>#lJeC+FT6 zdx{8O0=kZh4m`$z zn$xm1Bn36Z=1-Deb^7?o6J()yiFJOW68;$0d9V0Cc?YDw{Qzp5yFA2Ibv4vUzoF|d zhD&vCyXqbcG-8Fmx_ zJv!zPd!0}T^hk2HzWE~zU5JqV5ILhDcsvVr<26I5y2=l)2zdify(GWT9N!nOrpujS zDhc|yogw+I_BZNuD=>?1i4S4y?A#FpsdGAjYxv#7tqU-oQxC0TUxQNIOt z`yx4K*$Ud~c4|cAP`oAG1OEbF{k&b0I9!==1(c!In1T-Mp z?Zy4HBtvdDflz+RfU00!$&^^_#2A!91^mqAx;qG=0Z5DHIW0@W0PfyRq==@WvgE>S z3?Rve{b-%}!SZGfgMv1~Cjs>_&oP~HF|DeLYeL!xm_kiS=e;AJ$zfYg*dM=PoLQr#{AFM}C@%c*DFxz(ABPAE1kcq=Hw{a2 zB95sz5%pCe)dA7*m|P(suv5yLLtQ(7$!Cfro+`=98@Zgi^V%~(|JUy`wdYVaXo(Tk z7IaXRrpN^-$=~H2lvRLo%8r45CP4etLQaVc+OkY?U4wbweg--*lBUDmxI& zk&VWu9* zjj_||WLI(8-q|NOe3vGYUjcrW_yjBtN`jOim^>eF|5S?fDyk)a)l5LmnMn|`;kZ4x zN2u?UT4`gw3ASE|7 z=cugMDQ3bJ=!Q)#fN$DZ>)I%`g|)(#fR<3_sSwHUrLQ4ka*mKQ%4nMCFM(Ubs@k|j ze;EMu>N3=M!s?eaR+B9m_P~{ssP9veATg<< zCy)63yJm1LB-rBY!dE2%hf?yly-f`++Fu3dM8sdNg<3XA*#