From c2a5cc679b5b97dfbe050455321d2b9295209e1f Mon Sep 17 00:00:00 2001 From: WangXuan95 <629708558@qq.com> Date: Wed, 7 Jun 2023 20:54:14 +0800 Subject: [PATCH] change to Verilog2001 --- README.md | 345 ++++++------ RTL/{hard_png.sv => hard_png.v} | 507 ++++++++++-------- RTL/{huffman_builder.sv => huffman_builder.v} | 155 +++--- RTL/{huffman_decoder.sv => huffman_decoder.v} | 40 +- SIM/{tb_hard_png.sv => tb_hard_png.v} | 26 +- SIM/tb_hard_png_run_iverilog.bat | 2 +- figures/diagram.png | Bin 13048 -> 8367 bytes figures/interface.png | Bin 27038 -> 10876 bytes figures/wave1.png | Bin 15430 -> 5734 bytes figures/wave2.png | Bin 33393 -> 12517 bytes 10 files changed, 580 insertions(+), 495 deletions(-) rename RTL/{hard_png.sv => hard_png.v} (84%) rename RTL/{huffman_builder.sv => huffman_builder.v} (54%) rename RTL/{huffman_decoder.sv => huffman_decoder.v} (65%) rename SIM/{tb_hard_png.sv => tb_hard_png.v} (88%) diff --git a/README.md b/README.md index afdc4bc..4a21957 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,168 @@ -![语言](https://img.shields.io/badge/语言-systemverilog_(IEEE1800_2005)-CAD09D.svg) ![仿真](https://img.shields.io/badge/仿真-iverilog-green.svg) ![部署](https://img.shields.io/badge/部署-quartus-blue.svg) ![部署](https://img.shields.io/badge/部署-vivado-FF1010.svg) +![语言](https://img.shields.io/badge/语言-verilog_(IEEE1364_2001)-9A90FD.svg) ![仿真](https://img.shields.io/badge/仿真-iverilog-green.svg) ![部署](https://img.shields.io/badge/部署-quartus-blue.svg) ![部署](https://img.shields.io/badge/部署-vivado-FF1010.svg) -中文 | [English](#en) +[English](#en) | [中文](#cn) -Hard-PNG +  + +Hard-PNG +=========================== + +FPGA-based streaming **png** image decoder, input png stream, output original pixels. + +* Support image width less than 4000, height unlimited. +* **Supports all color types** : Grayscale, Grayscale+A, RGB, Indexed RGB, and RGB+A. +* Only 8bit depth is supported (actually most png images are 8bit depth). + +| ![diagram](./figures/diagram.png) | +| :--------------------------------: | +| **Figure1** : diagram of Hard-PNG. | + +  + +# Background + +**png** is the second most common compressed image compression format after **jpg** . + +png image files have the **.png** suffix name. + +Take [SIM/test_image/img01.png](./SIM/test_image) in this repository as an example, it contains 98 bytes, which are called png stream. We can use [WinHex software](http://www.x-ways.net/winhex/) to view these bytes: + +``` +0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, ...... , 0xAE, 0x42, 0x60, 0x82 +``` + +After the png stream is decompressed, the original pixels will be generated. This is a small image with only 4 columns and 2 rows, and a total of 8 pixels. The hexadecimal representation of these pixels is as follows. where R, G, B, A represent the red, green, blue and transparent channels of the pixel, respectively. + +| | 列 1 | 列 2 | 列 3 | 列 4 | +| :--: | :-----------------: | :-----------------: | :-----------------: | :-----------------: | +| 行 1 | R:FF G:F2 B:00 A:FF | R:ED G:1C B:24 A:FF | R:00 G:00 B:00 A:FF | R:3F G:48 B:CC A:FF | +| 行 2 | R:7F G:7F B:7F A:FF | R:ED G:1C B:24 A:FF | R:FF G:FF B:FF A:FF | R:FF G:AE B:CC A:FF | + +  + +# Hard-PNG Usage + +[hard_png.v](./RTL) in [RTL](./RTL) directory is a module that can input png stream and output decompressed original pixels. Its interface is shown in **Figure2**. + +| ![接口图](./figures/interface.png) | +| :--------------------------------: | +| **Figure2** : ports of hard_png. | + +## Input png stream + +It's easy to use hard_png module. Take the image [SIM/test_image/img01.png](./SIM/test_image) as an example again, such as **Figure3**, before inputting the png stream, a high level pulse must be generated on `istart` (with a width of at least one clock cycle), and then input the png stream through `ivalid` and `ibyte` signals (the png stream of this image has 98 bytes, these 98 bytes must be input to hard_png one by one), among which `ivalid` and `iready` constitutes handshake signals: `ivalid=1` indicates that the user wants to send a byte to hard_png. `iready=1` indicates that hard_png is ready to accept a byte. Only when `ivalid` and `iready` both = 1 at the same time, the handshake is successful, and `ibyte` is successfully input into hard_png. + +| ![输入时序图](./figures/wave1.png) | +| :---------------------------------------: | +| **Figure3** : input waveform of hard_png. | + +When it finish to input one png image, the next png image can be input immediately or later (that is, pulse the `istart` again, and then input the next png stream). + +## Output image information and pixels + +At the same time of inputting the png stream, the decompression result of this image (including the basic information of this image and the original pixels) will be output from the module, as shown in **Figure4**, first of all, `ostart` signal will appear A high-level pulse for one cycle, and `colortype`, `width`, and `height` will be valid simutinously, where: + +- `width`, `height` are the width and height of the image. +- `colortype` is the color type of the png image, with the meaning in the table below. + +| colortype | 3'd0 | 3'd1 | 3'd2 | 3'd3 | 3‘d4 | +| :-------: | :-----------: | :---------: | :-----------: | :-----: | :-----------: | +| meaning | grayscale | grayscale+A | RGB | RGB+A | indexed RGB | +| remark | R=G=B,A=0xFF | R=G=B≠A | R≠G≠B,A=0xFF | R≠G≠B≠A | R≠G≠B,A=0xFF | + +Then, `ovalid=1` means that there is a pixel output in this cycle, meanwhile, the R, G, B, A channels of this pixel will appear on `opixelr`, `opixelg`, `opixelb`, and `opixela` signals respectively. + +| ![输出时序图](./figures/wave2.png) | +| :----------------------------------------: | +| **Figure4** : output waveform of hard_png. | + +  + +# RTL Simulation + +Simulation related files are in the [SIM](./SIM) folder, where: + +- 14 png image files of different sizes and different color types are provided in [test_image](./SIM/test_image) folder. +- tb_hard_png.v is the testbench code that compresses these images in sequence and writes the result (raw pixels) to txt files. +- tb_hard_png_run_iverilog.bat is the command script to run iverilog simulation. +- validation.py (a Python code) compares the simulation output with the result of the software png decoding to verify the correctness. + +Before using iverilog for simulation, you need to install iverilog , see: [iverilog_usage](https://github.com/WangXuan95/WangXuan95/blob/main/iverilog_usage/iverilog_usage.md) + +Then double-click tb_hard_png_run_iverilog.bat to run the simulation, which will run for about 30 minutes (it can be forced to close halfway, but the generated simulation waveform is incomplete). + +After the simulation runs, you can open the generated dump.vcd file to view the waveform. + +In addition, each png image will generate a corresponding .txt file, which contains the decoding result. For example, img01.png generates out01.txt, which contains the decoded 8 pixel values: + +``` +decode result: colortype:3 width:4 height:2 +fff200ff ed1c24ff 000000ff 3f48ccff 7f7f7fff ed1c24ff ffffffff ffaec9ff +``` + +## Correctness verification + +In order to verify that the decompression results are correct, I provide a Python program [validation.py](./SIM), which can decompress the .png file and compares it with each pixel in the .txt file generated by the simulation. If the comparison results are the same, the validation passed. + +In order to run validation.py , you need to install Python3 and its [numpy](https://pypi.org/project/numpy/) and [PIL](https://pypi.org/project/Pillow/) libraries. + +Then, run validation.py by this command: + +``` +python validation.py test_image/img03.png out03.txt +``` + +The meaning of this command is: Compare each pixel in [out03.txt]() to see if it matches [test_image/img03.png](). The print is as follows (indicating that the verification passed): + +``` +size1= (400, 4) +size2= (400, 4) +total 400 pixels validation successful!! +``` + +  + +# FPGA Deployment + +## FPGA resource usage + +| FPGA chip | Logic | Logic (%) | BRAM | BRAM (%) | max clk freq. (under timing closure) | +| :----------------------------: | :------: | :-------: | :--------: | :------: | :----------------------------------: | +| Xilinx Artix-7 XC7A35T | 2662×LUT | 13% | 22×BRAM36K | 44% | 66.6 Mhz | +| Altera Cyclone IV EP4CE40F23C6 | 5277×LE | 13% | 427kbit | 37% | 56 MHz | + +## Performance + +When running at 50MHz, according to the number of clock cycles consumed by each image during simulation, we can calculate the performance. + +For example, for some of the test files I provided, performance examples are shown below. + +| png file | color type | image size | pixel count | png stream size | cycle count | time | +| :-------: | :---------: | :--------: | :---------: | :-------------: | :---------: | :---: | +| img05.png | RGB | 300x256 | 76800 | 96536 | 1105702 | 23ms | +| img06.png | Grayscale | 300x263 | 78900 | 37283 | 395335 | 8ms | +| img09.png | RGBA | 300x263 | 78900 | 125218 | 1382303 | 28ms | +| img10.png | Indexed RGB | 631x742 | 468202 | 193489 | 2374224 | 48ms | +| img14.png | Indexed RGB | 1920x1080 | 2073600 | 818885 | 10177644 | 204ms | + +  + + +# Reference + +* [upng](https://github.com/elanthis/upng): A lightweight C language png decoding library. +* [TinyPNG](https://tinypng.com/): A lossy compression tool using png's indexed RGB. +* [PNG Specification](https://www.w3.org/TR/REC-png.pdf). + +  + +  + +  + +  + +Hard-PNG =========================== 基于FPGA的流式的 **png** 图象解码器,输入 png 码流,输出原始像素 @@ -15,29 +175,29 @@ Hard-PNG | :----: | | **图1** : Hard-PNG 原理框图 | - +  # 背景知识 -png 是仅次于jpg的第二常见的图象压缩格式。png支持透明通道(A通道),支持无损压缩,支持索引RGB(基于调色板的有损压缩)。在色彩丰富的数码照片中,png只能获得1~4倍的压缩比。在人工合成图(例如平面设计)中,png能获得10倍以上的压缩比。 +png 是仅次于jpg的第二常见的图象压缩格式。png支持透明通道(A通道),支持无损压缩,支持索引RGB(基于调色板的有损压缩)。png 图像文件的扩展名为 .png 。 -png 图像文件的扩展名为 .png 。以本库中的 SIM/test_image/img01.png 为例,它包含98字节,这98字节就称为 png 码流。我们可以用 [WinHex软件](http://www.x-ways.net/winhex/) 查看到这些字节: +以本库中的 SIM/test_image/img01.png 为例,它包含98字节,这98字节就称为 png 码流。我们可以用 [WinHex软件](http://www.x-ways.net/winhex/) (Windows上) 或用 hexdump 命令 (linux上) 查看到这些字节: ``` 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, ...... , 0xAE, 0x42, 0x60, 0x82 ``` -该png码流解码后会产生原始像素,这是个小图像,只有4列2行,共8个像素,这些像素的十六进制表示如下表。其中R, G, B, A分别代表像素的红、绿、蓝、透明通道。 +该png码流解码后会产生原始像素,该图像只有4列2行,共8个像素,这些像素的十六进制表示如下表。其中R, G, B, A分别代表像素的红、绿、蓝、透明通道。 | | 列 1 | 列 2 | 列 3 | 列 4 | | :---: | :---: | :---: | :---: | :---: | | 行 1 | R:FF G:F2 B:00 A:FF | R:ED G:1C B:24 A:FF | R:00 G:00 B:00 A:FF | R:3F G:48 B:CC A:FF | | 行 2 | R:7F G:7F B:7F A:FF | R:ED G:1C B:24 A:FF | R:FF G:FF B:FF A:FF | R:FF G:AE B:CC A:FF | - +  # 使用 Hard-PNG -RTL 目录中的 hard_png.sv 是一个能够输入 png 码流,输出解压后的像素的模块,它的接口如**图2**所示。 +RTL 目录中的 hard_png.v 是一个能够输入 png 码流,输出解压后的像素的模块,它的接口如**图2**所示。 | ![接口图](./figures/interface.png) | | :----: | @@ -71,14 +231,14 @@ hard_png 的使用方法很简单,以 SIM/test_image/img01.png 这张图像为 | :----: | | **图4** : hard_png 的输出波形图 | - +  # 仿真 仿真相关的东西都在 SIM 文件夹中,其中: - test_image 中提供 14 张不同尺寸,不同颜色类型的 png 图像文件。 -- tb_hard_png.sv 是仿真代码,它会依次进行这些图像的压缩,然后把结果(原始像素)写入 txt 文件中。 +- tb_hard_png.v 是仿真代码,它会依次进行这些图像的压缩,然后把结果(原始像素)写入 txt 文件中。 - tb_hard_png_run_iverilog.bat 包含了运行 iverilog 仿真的命令。 - validation.py (Python代码)对仿真输出和软件 png 解码的结果进行比对,验证正确性。 @@ -116,30 +276,30 @@ size2= (400, 4) total 400 pixels validation successful!! ``` - +  # 部署信息 ## FPGA 资源消耗 -| FPGA 型号 | LUT | LUT(%) | FF | FF(%) | Logic | Logic(%) | BRAM | BRAM(%) | -| :----------------------------: | :--: | :----: | :--: | :---: | :---: | :------: | :-----: | :-----: | -| Xilinx Artix-7 XC7A35T | 2581 | 13% | 2253 | 5% | - | - | 792kbit | 44% | -| Altera Cyclone IV EP4CE40F23C6 | - | - | - | - | 4682 | 11% | 427kbit | 37% | +| FPGA 型号 | Logic | Logic (%) | BRAM | BRAM (%) | 最高频率 (刚好时序收敛) | +| :----------------------------: | :------: | :-------: | :--------: | :------: | :---------------------: | +| Xilinx Artix-7 XC7A35T | 2662×LUT | 13% | 22×BRAM36K | 44% | 66.6 MHz | +| Altera Cyclone IV EP4CE40F23C6 | 5277×LE | 13% | 427kbit | 37% | 56 MHz | ## 性能 -在 Altera Cyclone IV EP4CE40F23C6 上部署 hard_png ,时钟频率= 50MHz (正好时序收敛)。根据仿真时每个图像消耗的时钟周期数,可以算出压缩图像时的性能,举例如下表。 +当运行在 50MHz 时,根据仿真时每个图像消耗的时钟周期数,可以算出压缩图像时的性能。例如,对于部分我提供的测试文件,性能举例如下表。 | 文件名 | 颜色类型 | 图象长宽 | 像素数 | png 码流大小 (字节) | 时钟周期数 | 消耗时间 | -| :-----------: | :----------: | :----------: | :--------------: | :---------------: | :---------------: | ------------- | +| :-----------: | :----------: | :----------: | :--------------: | :---------------: | :---------------: | :-----------: | | img05.png | RGB | 300x256 | 76800 | 96536 | 1105702 | 23ms | | img06.png | 灰度 | 300x263 | 78900 | 37283 | 395335 | 8ms | | img09.png | RGBA | 300x263 | 78900 | 125218 | 1382303 | 28ms | | img10.png | 索引RGB | 631x742 | 468202 | 193489 | 2374224 | 48ms | | img14.png | 索引RGB | 1920x1080 | 2073600 | 818885 | 10177644 | 204ms | - +  # 参考链接 @@ -150,150 +310,3 @@ total 400 pixels validation successful!! - - -Hard-PNG -=========================== - -FPGA-based streaming **png** image decoder, input png stream, output original pixels. - -* Support image width less than 4000, height unlimited. -* **Supports all color types** : Grayscale, Grayscale+A, RGB, Indexed RGB, and RGB+A. -* Only 8bit depth is supported (actually most png images are 8bit depth). - -| ![diagram](./figures/diagram.png) | -| :---------------------------------------: | -| **Figure1** : Hard-PNG schematic diagram. | - - - -# Background - -**png** is the second most common compressed image format after **jpg** . png supports transparency channel (A channel), lossless compression, and indexed RGB (palette-based lossy compression). In colorful digital photos, png can only get 1 to 4 times the lossless compression ratio. In synthetic images (such as graphic design), png can achieve more than 10 times the lossless compression ratio. - -png image files have the **.png** suffix name. Take [SIM/test_image/img01.png](./SIM/test_image) in this repository as an example, it contains 98 bytes, which are called png stream. We can use [WinHex software](http://www.x-ways.net/winhex/) to view these bytes: - -``` -0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, ...... , 0xAE, 0x42, 0x60, 0x82 -``` - -After the png stream is decompressed, the original pixels will be generated. This is a small image with only 4 columns and 2 rows, and a total of 8 pixels. The hexadecimal representation of these pixels is as follows. where R, G, B, A represent the red, green, blue and transparent channels of the pixel, respectively. - -| | 列 1 | 列 2 | 列 3 | 列 4 | -| :--: | :-----------------: | :-----------------: | :-----------------: | :-----------------: | -| 行 1 | R:FF G:F2 B:00 A:FF | R:ED G:1C B:24 A:FF | R:00 G:00 B:00 A:FF | R:3F G:48 B:CC A:FF | -| 行 2 | R:7F G:7F B:7F A:FF | R:ED G:1C B:24 A:FF | R:FF G:FF B:FF A:FF | R:FF G:AE B:CC A:FF | - - - -# Hard-PNG Usage - -[hard_png.sv](./RTL) in [RTL](./RTL) directory is a module that can input png stream and output decompressed original pixels. Its interface is shown in **Figure2**. - -| ![接口图](./figures/interface.png) | -| :----------------------------------: | -| **Figure2** : interface of hard_png. | - -## Input png stream - -It's easy to use hard_png module. Take the image [SIM/test_image/img01.png](./SIM/test_image) as an example again, such as **Figure3**, before inputting the png stream, a high level pulse must be generated on `istart` (with a width of at least one clock cycle), and then input the png stream through `ivalid` and `ibyte` signals (the png stream of this image has 98 bytes, these 98 bytes must be input to hard_png one by one), among which `ivalid` and `iready` constitutes handshake signals: `ivalid=1` indicates that the user wants to send a byte to hard_png. `iready=1` indicates that hard_png is ready to accept a byte. Only when `ivalid` and `iready` both = 1 at the same time, the handshake is successful, and `ibyte` is successfully input into hard_png. - -| ![输入时序图](./figures/wave1.png) | -| :---------------------------------------: | -| **Figure3** : input waveform of hard_png. | - -When it finish to input one png image, the next png image can be input immediately or later (that is, pulse the `istart` again, and then input the next png stream). - -## Output image information and pixels - -At the same time of inputting the png stream, the decompression result of this image (including the basic information of this image and the original pixels) will be output from the module, as shown in **Figure4**, first of all, `ostart` signal will appear A high-level pulse for one cycle, and `colortype`, `width`, and `height` will be valid simutinously, where: - -- `width`, `height` are the width and height of the image. -- `colortype` is the color type of the png image, with the meaning in the table below. - -| colortype | 3'd0 | 3'd1 | 3'd2 | 3'd3 | 3‘d4 | -| :-------: | :-----------: | :---------: | :-----------: | :-----: | :-----------: | -| meaning | grayscale | grayscale+A | RGB | RGB+A | indexed RGB | -| remark | R=G=B,A=0xFF | R=G=B≠A | R≠G≠B,A=0xFF | R≠G≠B≠A | R≠G≠B,A=0xFF | - -Then, `ovalid=1` means that there is a pixel output in this cycle, meanwhile, the R, G, B, A channels of this pixel will appear on `opixelr`, `opixelg`, `opixelb`, and `opixela` signals respectively. - -| ![输出时序图](./figures/wave2.png) | -| :----------------------------------------: | -| **Figure4** : output waveform of hard_png. | - - - -# RTL Simulation - -Simulation related files are in the [SIM](./SIM) folder, where: - -- 14 png image files of different sizes and different color types are provided in [test_image](./SIM/test_image) folder. -- tb_hard_png.sv is the testbench code that compresses these images in sequence and writes the result (raw pixels) to txt files. -- tb_hard_png_run_iverilog.bat is the command script to run iverilog simulation. -- validation.py (Python code) compares the simulation output with the result of the software png decoding to verify the correctness. - -Before using iverilog for simulation, you need to install iverilog , see: [iverilog_usage](https://github.com/WangXuan95/WangXuan95/blob/main/iverilog_usage/iverilog_usage.md) - -Then double-click tb_hard_png_run_iverilog.bat to run the simulation, which will run for about 30 minutes (it can be forced to close halfway, but the generated simulation waveform is incomplete). - -After the simulation runs, you can open the generated dump.vcd file to view the waveform. - -In addition, each png image will generate a corresponding .txt file, which contains the decoding result. For example, img01.png generates out01.txt, which contains the decoded 8 pixel values: - -``` -decode result: colortype:3 width:4 height:2 -fff200ff ed1c24ff 000000ff 3f48ccff 7f7f7fff ed1c24ff ffffffff ffaec9ff -``` - -## Correctness verification - -In order to verify that the decompression results are correct, I provide a Python program [validation.py](./SIM), which can decompress the .png file and compares it with each pixel in the .txt file generated by the simulation. If the comparison results are the same, the validation passed. - -In order to run validation.py , you need to install Python3 and its [numpy](https://pypi.org/project/numpy/) and [PIL](https://pypi.org/project/Pillow/) libraries. - -Then, run validation.py by this command: - -``` -python validation.py test_image/img03.png out03.txt -``` - -The meaning of this command is: Compare each pixel in [out03.txt]() to see if it matches [test_image/img03.png](). The print is as follows (indicating that the verification passed): - -``` -size1= (400, 4) -size2= (400, 4) -total 400 pixels validation successful!! -``` - - - -# FPGA Deployment - -## FPGA resource usage - -| FPGA part | LUT | LUT(%) | FF | FF(%) | Logic | Logic(%) | BRAM | BRAM(%) | -| :----------------------------: | :--: | :----: | :--: | :---: | :---: | :------: | :-----: | :-----: | -| Xilinx Artix-7 XC7A35T | 2581 | 13% | 2253 | 5% | - | - | 792kbit | 44% | -| Altera Cyclone IV EP4CE40F23C6 | - | - | - | - | 4682 | 11% | 427kbit | 37% | - -## Performance - -I deploy hard_png on Altera Cyclone IV EP4CE40F23C6 and get clock frequency = 50MHz (just reach timing closure). According to the number of clock cycles consumed by each image during simulation, we can calculate the performance as shown in the following table. - -| png file | color type | image size | pixel count | png stream size | cycle count | time | -| :-------: | :---------: | :--------: | :---------: | :-------------: | :---------: | ----- | -| img05.png | RGB | 300x256 | 76800 | 96536 | 1105702 | 23ms | -| img06.png | Grayscale | 300x263 | 78900 | 37283 | 395335 | 8ms | -| img09.png | RGBA | 300x263 | 78900 | 125218 | 1382303 | 28ms | -| img10.png | Indexed RGB | 631x742 | 468202 | 193489 | 2374224 | 48ms | -| img14.png | Indexed RGB | 1920x1080 | 2073600 | 818885 | 10177644 | 204ms | - - - - -# Reference - -* [upng](https://github.com/elanthis/upng): A lightweight C language png decoding library. -* [TinyPNG](https://tinypng.com/): A lossy compression tool using png's indexed RGB. -* [PNG Specification](https://www.w3.org/TR/REC-png.pdf). diff --git a/RTL/hard_png.sv b/RTL/hard_png.v similarity index 84% rename from RTL/hard_png.sv rename to RTL/hard_png.v index 9fe6bcb..da1156f 100644 --- a/RTL/hard_png.sv +++ b/RTL/hard_png.v @@ -2,7 +2,7 @@ //-------------------------------------------------------------------------------------------------------- // Module : hard_png // Type : synthesizable, IP's top -// Standard: SystemVerilog 2005 (IEEE1800-2005) +// Standard: Verilog 2001 (IEEE1364-2001) // Function: png image decoder //-------------------------------------------------------------------------------------------------------- @@ -24,15 +24,17 @@ module hard_png ( output wire [ 7:0] opixelr, opixelg, opixelb, opixela ); + + initial ostart = 1'b0; initial ovalid = 1'b0; -reg isplte = '0; +reg isplte = 1'b0; -reg [ 1:0] bpp = '0; // bytes per pixel -reg [13:0] ppr = '0; // pixel per row -reg [13:0] bpr = '0; // bytes per row -reg [31:0] rpf = '0; // rows per frame +reg [ 1:0] bpp = 0; // bytes per pixel +reg [13:0] ppr = 0; // pixel per row +reg [13:0] bpr = 0; // bytes per row +reg [31:0] rpf = 0; // rows per frame assign colortype = isplte ? 3'd4 : {1'b0,bpp}; @@ -43,15 +45,15 @@ reg pvalid; reg pready; reg [ 7:0] pbyte; -reg mvalid = '0; -reg [ 7:0] mbyte = '0; +reg mvalid = 0; +reg [ 7:0] mbyte = 0; -reg bvalid = '0; -reg [ 7:0] bbyte = '0; +reg bvalid = 0; +reg [ 7:0] bbyte = 0; -reg plte_wen = '0; -reg [ 7:0] plte_waddr = '0; -reg [23:0] plte_wdata = '0; +reg plte_wen = 0; +reg [ 7:0] plte_waddr = 0; +reg [23:0] plte_wdata = 0; reg [23:0] plte_rdata; @@ -61,8 +63,8 @@ reg [23:0] plte_rdata; // png parser //----------------------------------------------------------------------------------------------------------------------- -wire ispltes [8]; assign ispltes[0]=1'b0; assign ispltes[1]=1'b0; assign ispltes[2]=1'b0; assign ispltes[3]=1'b1; assign ispltes[4]=1'b0; assign ispltes[5]=1'b0; assign ispltes[6]=1'b0; assign ispltes[7]=1'b0; -wire [ 1:0] bpps [8]; assign bpps[0]=2'd0; assign bpps[1]=2'd0; assign bpps[2]=2'd2; assign bpps[3]=2'd0; assign bpps[4]=2'd1; assign bpps[5]=2'd0; assign bpps[6]=2'd3; assign bpps[7]=2'd0; +wire ispltes [0:7]; assign ispltes[0]=1'b0; assign ispltes[1]=1'b0; assign ispltes[2]=1'b0; assign ispltes[3]=1'b1; assign ispltes[4]=1'b0; assign ispltes[5]=1'b0; assign ispltes[6]=1'b0; assign ispltes[7]=1'b0; +wire [ 1:0] bpps [0:7]; assign bpps[0]=2'd0; assign bpps[1]=2'd0; assign bpps[2]=2'd2; assign bpps[3]=2'd0; assign bpps[4]=2'd1; assign bpps[5]=2'd0; assign bpps[6]=2'd3; assign bpps[7]=2'd0; wire [63:0] png_precode = 64'h89504e470d0a1a0a; wire [31:0] ihdr_name = 32'h49484452; @@ -70,25 +72,25 @@ wire [31:0] plte_name = 32'h504C5445; wire [31:0] idat_name = 32'h49444154; wire [31:0] iend_name = 32'h49454e44; -reg [ 7:0] latchbytes [7]; -wire [ 7:0] lastbytes [8]; +reg [ 7:0] latchbytes [0:6]; +wire [ 7:0] lastbytes [0:7]; wire [63:0] lastlbytes; wire [31:0] h32bit = lastlbytes[63:32]; wire [31:0] l32bit = lastlbytes[31: 0]; assign lastbytes[7] = ibyte; -initial {latchbytes[0],latchbytes[1],latchbytes[2],latchbytes[3],latchbytes[4],latchbytes[5],latchbytes[6]} = '0; +initial {latchbytes[0],latchbytes[1],latchbytes[2],latchbytes[3],latchbytes[4],latchbytes[5],latchbytes[6]} = 0; generate genvar ii; for(ii=0; ii<7; ii=ii+1) begin : generate_latchbytes_connect assign lastbytes[ii] = latchbytes[ii]; always @ (posedge clk or negedge rstn) if(~rstn) - latchbytes[ii] <= '0; + latchbytes[ii] <= 0; else begin if(istart) - latchbytes[ii] <= '0; + latchbytes[ii] <= 0; else if(ivalid) latchbytes[ii] <= lastbytes[ii+1]; end @@ -104,23 +106,29 @@ assign lastlbytes[47:40] = lastbytes[2]; assign lastlbytes[55:48] = lastbytes[1]; assign lastlbytes[63:56] = lastbytes[0]; -reg [ 2:0] bcnt= '0; -reg [31:0] cnt = '0; -reg [ 2:0] crccnt = '0; -reg [ 2:0] gapcnt = '0; +reg [ 2:0] bcnt= 0; +reg [31:0] cnt = 0; +reg [ 2:0] crccnt = 0; +reg [ 2:0] gapcnt = 0; + +localparam [2:0] NONE = 3'd0, + IHDR = 3'd1, + PLTE = 3'd2, + IDAT = 3'd3, + IEND = 3'd4; +reg [2:0] curr_name = NONE; -enum {NONE, IHDR, PLTE, IDAT, IEND} curr_name = NONE; reg busy = 1'b0; reg sizevalid = 1'b0; reg ispltetmp = 1'b0; -reg [ 1:0] bpptmp = '0; // bytes per pixel -reg [13:0] pprtmp = '0; // pixel per row -reg [15:0] bprtmp = '0; // bytes per row -reg [31:0] rpftmp = '0; // rows per frame +reg [ 1:0] bpptmp = 0; // bytes per pixel +reg [13:0] pprtmp = 0; // pixel per row +reg [15:0] bprtmp = 0; // bytes per row +reg [31:0] rpftmp = 0; // rows per frame -reg [ 1:0] plte_bytecnt = '0; -reg [ 7:0] plte_pixcnt = '0; +reg [ 1:0] plte_bytecnt = 0; +reg [ 7:0] plte_pixcnt = 0; wire parametervalid = ( lastbytes[7]==8'h0 && lastbytes[6]==8'h0 && @@ -134,7 +142,7 @@ wire parametervalid = ( lastbytes[7]==8'h0 && ) ); -always_comb +always @ (*) if(cnt>0 && curr_name==IDAT && gapcnt==2'd0) begin iready = pready; pvalid = ivalid; @@ -142,81 +150,81 @@ always_comb end else begin iready = 1'b1; pvalid = 1'b0; - pbyte = '0; + pbyte = 0; end always @ (posedge clk or negedge rstn) if(~rstn) begin - bcnt <= '0; - cnt <= '0; - crccnt <= '0; - gapcnt <= '0; + bcnt <= 0; + cnt <= 0; + crccnt <= 0; + gapcnt <= 0; busy <= 1'b0; sizevalid <= 1'b0; curr_name <= NONE; ispltetmp <= 1'b0; - bpptmp <= '0; - pprtmp <= '0; - bprtmp <= '0; - rpftmp <= '0; + bpptmp <= 0; + pprtmp <= 0; + bprtmp <= 0; + rpftmp <= 0; isplte <= 1'b0; - bpp <= '0; - ppr <= '0; - bpr <= '0; - rpf <= '0; + bpp <= 0; + ppr <= 0; + bpr <= 0; + rpf <= 0; ostart <= 1'b0; plte_wen <= 1'b0; - plte_waddr <= '0; - plte_wdata <= '0; - plte_bytecnt <= '0; - plte_pixcnt <= '0; + plte_waddr <= 0; + plte_wdata <= 0; + plte_bytecnt <= 0; + plte_pixcnt <= 0; end else begin ostart <= 1'b0; plte_wen <= 1'b0; - plte_waddr <= '0; - plte_wdata <= '0; + plte_waddr <= 0; + plte_wdata <= 0; if(istart) begin - bcnt <= '0; - cnt <= '0; - crccnt <= '0; - gapcnt <= '0; + bcnt <= 0; + cnt <= 0; + crccnt <= 0; + gapcnt <= 0; busy <= 1'b0; sizevalid <= 1'b0; curr_name <= NONE; ispltetmp <= 1'b0; - bpptmp <= '0; - pprtmp <= '0; - bprtmp <= '0; - rpftmp <= '0; + bpptmp <= 0; + pprtmp <= 0; + bprtmp <= 0; + rpftmp <= 0; isplte <= 1'b0; - bpp <= '0; - ppr <= '0; - bpr <= '0; - rpf <= '0; - plte_bytecnt <= '0; - plte_pixcnt <= '0; + bpp <= 0; + ppr <= 0; + bpr <= 0; + rpf <= 0; + plte_bytecnt <= 0; + plte_pixcnt <= 0; end else if(ivalid) begin - plte_bytecnt <= '0; - plte_pixcnt <= '0; + plte_bytecnt <= 0; + plte_pixcnt <= 0; if(~busy) begin - bcnt <= '0; - cnt <= '0; - crccnt <= '0; + bcnt <= 0; + cnt <= 0; + crccnt <= 0; busy <= (lastlbytes==png_precode); end else begin if(cnt>0) begin - bcnt <= '0; + bcnt <= 0; if(curr_name==IHDR) begin cnt <= cnt - 1; gapcnt <= 2'd2; if(cnt==6) begin rpftmp <= l32bit; - if(h32bit[31:14]=='0) begin + if(h32bit[31:14] == 18'h0) begin sizevalid <= 1'b1; pprtmp <= h32bit[13:0]; end else begin sizevalid <= 1'b0; - pprtmp <= '1; + pprtmp <= 14'h3fff; end end else if(cnt==3) begin ispltetmp <= ispltes[lastlbytes[10:8]]; @@ -238,10 +246,10 @@ always @ (posedge clk or negedge rstn) rpf <= rpftmp; end else begin isplte <= 1'b0; - bpp <= '0; - ppr <= '0; - bpr <= '0; - rpf <= '0; + bpp <= 0; + ppr <= 0; + bpr <= 0; + rpf <= 0; end end end else if(curr_name==IDAT) begin @@ -271,8 +279,8 @@ always @ (posedge clk or negedge rstn) cnt <= cnt - 1; end end else if(crccnt>3'd0) begin - bcnt <= '0; - cnt <= '0; + bcnt <= 0; + cnt <= 0; crccnt <= crccnt - 3'd1; if(crccnt==3'd1) begin if(curr_name==IEND) begin @@ -308,13 +316,13 @@ always @ (posedge clk or negedge rstn) // uz_inflate //----------------------------------------------------------------------------------------------------------------------- -reg end_stream = '0; +reg end_stream = 0; wire huffman_ovalid; wire [7:0] huffman_obyte; -reg [ 2:0] uz_cnt = '0; -reg [ 7:0] rbyte = '0; +reg [ 2:0] uz_cnt = 0; +reg [ 7:0] rbyte = 0; reg tvalid; wire tready; @@ -323,18 +331,18 @@ reg tbit; always @ (posedge clk or negedge rstn) if(~rstn) begin mvalid <= 1'b0; - mbyte <= '0; + mbyte <= 0; end else begin if(istart) begin mvalid <= 1'b0; - mbyte <= '0; + mbyte <= 0; end else begin mvalid <= huffman_ovalid; mbyte <= huffman_obyte; end end -always_comb +always @ (*) if(uz_cnt==3'h0) begin pready = tready; tvalid = pvalid; @@ -347,12 +355,12 @@ always_comb always @ (posedge clk or negedge rstn) if(~rstn) begin - uz_cnt <= '0; - rbyte <= '0; + uz_cnt <= 0; + rbyte <= 0; end else begin if(istart) begin - uz_cnt <= '0; - rbyte <= '0; + uz_cnt <= 0; + rbyte <= 0; end else begin if(uz_cnt==3'h0) begin if(pvalid & tready) begin @@ -370,34 +378,34 @@ always @ (posedge clk or negedge rstn) //-------------------------------------------------------------------------------------------------------------------- // huffman inflate //-------------------------------------------------------------------------------------------------------------------- -wire [ 4:0] CLCL [19]; assign CLCL[0]=5'd16; assign CLCL[1]=5'd17; assign CLCL[2]=5'd18; assign CLCL[3]=5'd0; assign CLCL[4]=5'd8; assign CLCL[5]=5'd7; assign CLCL[6]=5'd9; assign CLCL[7]=5'd6; assign CLCL[8]=5'd10; assign CLCL[9]=5'd5; assign CLCL[10]=5'd11; assign CLCL[11]=5'd4; assign CLCL[12]=5'd12; assign CLCL[13]=5'd3; assign CLCL[14]=5'd13; assign CLCL[15]=5'd2; assign CLCL[16]=5'd14; assign CLCL[17]=5'd1; assign CLCL[18]=5'd15; -wire [ 8:0] LENGTH_BASE [30]; assign LENGTH_BASE[0]=9'd0; assign LENGTH_BASE[1]=9'd3; assign LENGTH_BASE[2]=9'd4; assign LENGTH_BASE[3]=9'd5; assign LENGTH_BASE[4]=9'd6; assign LENGTH_BASE[5]=9'd7; assign LENGTH_BASE[6]=9'd8; assign LENGTH_BASE[7]=9'd9; assign LENGTH_BASE[8]=9'd10; assign LENGTH_BASE[9]=9'd11; assign LENGTH_BASE[10]=9'd13; assign LENGTH_BASE[11]=9'd15; assign LENGTH_BASE[12]=9'd17; assign LENGTH_BASE[13]=9'd19; assign LENGTH_BASE[14]=9'd23; assign LENGTH_BASE[15]=9'd27; assign LENGTH_BASE[16]=9'd31; assign LENGTH_BASE[17]=9'd35; assign LENGTH_BASE[18]=9'd43; assign LENGTH_BASE[19]=9'd51; assign LENGTH_BASE[20]=9'd59; assign LENGTH_BASE[21]=9'd67; assign LENGTH_BASE[22]=9'd83; assign LENGTH_BASE[23]=9'd99; assign LENGTH_BASE[24]=9'd115; assign LENGTH_BASE[25]=9'd131; assign LENGTH_BASE[26]=9'd163; assign LENGTH_BASE[27]=9'd195; assign LENGTH_BASE[28]=9'd227; assign LENGTH_BASE[29]=9'd258; -wire [ 2:0] LENGTH_EXTRA [30]; assign LENGTH_EXTRA[0]=3'd0; assign LENGTH_EXTRA[1]=3'd0; assign LENGTH_EXTRA[2]=3'd0; assign LENGTH_EXTRA[3]=3'd0; assign LENGTH_EXTRA[4]=3'd0; assign LENGTH_EXTRA[5]=3'd0; assign LENGTH_EXTRA[6]=3'd0; assign LENGTH_EXTRA[7]=3'd0; assign LENGTH_EXTRA[8]=3'd0; assign LENGTH_EXTRA[9]=3'd1; assign LENGTH_EXTRA[10]=3'd1; assign LENGTH_EXTRA[11]=3'd1; assign LENGTH_EXTRA[12]=3'd1; assign LENGTH_EXTRA[13]=3'd2; assign LENGTH_EXTRA[14]=3'd2; assign LENGTH_EXTRA[15]=3'd2; assign LENGTH_EXTRA[16]=3'd2; assign LENGTH_EXTRA[17]=3'd3; assign LENGTH_EXTRA[18]=3'd3; assign LENGTH_EXTRA[19]=3'd3; assign LENGTH_EXTRA[20]=3'd3; assign LENGTH_EXTRA[21]=3'd4; assign LENGTH_EXTRA[22]=3'd4; assign LENGTH_EXTRA[23]=3'd4; assign LENGTH_EXTRA[24]=3'd4; assign LENGTH_EXTRA[25]=3'd5; assign LENGTH_EXTRA[26]=3'd5; assign LENGTH_EXTRA[27]=3'd5; assign LENGTH_EXTRA[28]=3'd5; assign LENGTH_EXTRA[29]=3'd0; -wire [14:0] DISTANCE_BASE [30]; assign DISTANCE_BASE[0]=15'd1; assign DISTANCE_BASE[1]=15'd2; assign DISTANCE_BASE[2]=15'd3; assign DISTANCE_BASE[3]=15'd4; assign DISTANCE_BASE[4]=15'd5; assign DISTANCE_BASE[5]=15'd7; assign DISTANCE_BASE[6]=15'd9; assign DISTANCE_BASE[7]=15'd13; assign DISTANCE_BASE[8]=15'd17; assign DISTANCE_BASE[9]=15'd25; assign DISTANCE_BASE[10]=15'd33; assign DISTANCE_BASE[11]=15'd49; assign DISTANCE_BASE[12]=15'd65; assign DISTANCE_BASE[13]=15'd97; assign DISTANCE_BASE[14]=15'd129; assign DISTANCE_BASE[15]=15'd193; assign DISTANCE_BASE[16]=15'd257; assign DISTANCE_BASE[17]=15'd385; assign DISTANCE_BASE[18]=15'd513; assign DISTANCE_BASE[19]=15'd769; assign DISTANCE_BASE[20]=15'd1025; assign DISTANCE_BASE[21]=15'd1537; assign DISTANCE_BASE[22]=15'd2049; assign DISTANCE_BASE[23]=15'd3073; assign DISTANCE_BASE[24]=15'd4097; assign DISTANCE_BASE[25]=15'd6145; assign DISTANCE_BASE[26]=15'd8193; assign DISTANCE_BASE[27]=15'd12289; assign DISTANCE_BASE[28]=15'd16385; assign DISTANCE_BASE[29]=15'd24577; -wire [ 3:0] DISTANCE_EXTRA [30]; assign DISTANCE_EXTRA[0]=4'd0; assign DISTANCE_EXTRA[1]=4'd0; assign DISTANCE_EXTRA[2]=4'd0; assign DISTANCE_EXTRA[3]=4'd0; assign DISTANCE_EXTRA[4]=4'd1; assign DISTANCE_EXTRA[5]=4'd1; assign DISTANCE_EXTRA[6]=4'd2; assign DISTANCE_EXTRA[7]=4'd2; assign DISTANCE_EXTRA[8]=4'd3; assign DISTANCE_EXTRA[9]=4'd3; assign DISTANCE_EXTRA[10]=4'd4; assign DISTANCE_EXTRA[11]=4'd4; assign DISTANCE_EXTRA[12]=4'd5; assign DISTANCE_EXTRA[13]=4'd5; assign DISTANCE_EXTRA[14]=4'd6; assign DISTANCE_EXTRA[15]=4'd6; assign DISTANCE_EXTRA[16]=4'd7; assign DISTANCE_EXTRA[17]=4'd7; assign DISTANCE_EXTRA[18]=4'd8; assign DISTANCE_EXTRA[19]=4'd8; assign DISTANCE_EXTRA[20]=4'd9; assign DISTANCE_EXTRA[21]=4'd9; assign DISTANCE_EXTRA[22]=4'd10; assign DISTANCE_EXTRA[23]=4'd10; assign DISTANCE_EXTRA[24]=4'd11; assign DISTANCE_EXTRA[25]=4'd11; assign DISTANCE_EXTRA[26]=4'd12; assign DISTANCE_EXTRA[27]=4'd12; assign DISTANCE_EXTRA[28]=4'd13; assign DISTANCE_EXTRA[29]=4'd13; +wire [ 4:0] CLCL [0:18]; assign CLCL[0]=5'd16; assign CLCL[1]=5'd17; assign CLCL[2]=5'd18; assign CLCL[3]=5'd0; assign CLCL[4]=5'd8; assign CLCL[5]=5'd7; assign CLCL[6]=5'd9; assign CLCL[7]=5'd6; assign CLCL[8]=5'd10; assign CLCL[9]=5'd5; assign CLCL[10]=5'd11; assign CLCL[11]=5'd4; assign CLCL[12]=5'd12; assign CLCL[13]=5'd3; assign CLCL[14]=5'd13; assign CLCL[15]=5'd2; assign CLCL[16]=5'd14; assign CLCL[17]=5'd1; assign CLCL[18]=5'd15; +wire [ 8:0] LENGTH_BASE [0:29]; assign LENGTH_BASE[0]=9'd0; assign LENGTH_BASE[1]=9'd3; assign LENGTH_BASE[2]=9'd4; assign LENGTH_BASE[3]=9'd5; assign LENGTH_BASE[4]=9'd6; assign LENGTH_BASE[5]=9'd7; assign LENGTH_BASE[6]=9'd8; assign LENGTH_BASE[7]=9'd9; assign LENGTH_BASE[8]=9'd10; assign LENGTH_BASE[9]=9'd11; assign LENGTH_BASE[10]=9'd13; assign LENGTH_BASE[11]=9'd15; assign LENGTH_BASE[12]=9'd17; assign LENGTH_BASE[13]=9'd19; assign LENGTH_BASE[14]=9'd23; assign LENGTH_BASE[15]=9'd27; assign LENGTH_BASE[16]=9'd31; assign LENGTH_BASE[17]=9'd35; assign LENGTH_BASE[18]=9'd43; assign LENGTH_BASE[19]=9'd51; assign LENGTH_BASE[20]=9'd59; assign LENGTH_BASE[21]=9'd67; assign LENGTH_BASE[22]=9'd83; assign LENGTH_BASE[23]=9'd99; assign LENGTH_BASE[24]=9'd115; assign LENGTH_BASE[25]=9'd131; assign LENGTH_BASE[26]=9'd163; assign LENGTH_BASE[27]=9'd195; assign LENGTH_BASE[28]=9'd227; assign LENGTH_BASE[29]=9'd258; +wire [ 2:0] LENGTH_EXTRA [0:29]; assign LENGTH_EXTRA[0]=3'd0; assign LENGTH_EXTRA[1]=3'd0; assign LENGTH_EXTRA[2]=3'd0; assign LENGTH_EXTRA[3]=3'd0; assign LENGTH_EXTRA[4]=3'd0; assign LENGTH_EXTRA[5]=3'd0; assign LENGTH_EXTRA[6]=3'd0; assign LENGTH_EXTRA[7]=3'd0; assign LENGTH_EXTRA[8]=3'd0; assign LENGTH_EXTRA[9]=3'd1; assign LENGTH_EXTRA[10]=3'd1; assign LENGTH_EXTRA[11]=3'd1; assign LENGTH_EXTRA[12]=3'd1; assign LENGTH_EXTRA[13]=3'd2; assign LENGTH_EXTRA[14]=3'd2; assign LENGTH_EXTRA[15]=3'd2; assign LENGTH_EXTRA[16]=3'd2; assign LENGTH_EXTRA[17]=3'd3; assign LENGTH_EXTRA[18]=3'd3; assign LENGTH_EXTRA[19]=3'd3; assign LENGTH_EXTRA[20]=3'd3; assign LENGTH_EXTRA[21]=3'd4; assign LENGTH_EXTRA[22]=3'd4; assign LENGTH_EXTRA[23]=3'd4; assign LENGTH_EXTRA[24]=3'd4; assign LENGTH_EXTRA[25]=3'd5; assign LENGTH_EXTRA[26]=3'd5; assign LENGTH_EXTRA[27]=3'd5; assign LENGTH_EXTRA[28]=3'd5; assign LENGTH_EXTRA[29]=3'd0; +wire [14:0] DISTANCE_BASE [0:29]; assign DISTANCE_BASE[0]=15'd1; assign DISTANCE_BASE[1]=15'd2; assign DISTANCE_BASE[2]=15'd3; assign DISTANCE_BASE[3]=15'd4; assign DISTANCE_BASE[4]=15'd5; assign DISTANCE_BASE[5]=15'd7; assign DISTANCE_BASE[6]=15'd9; assign DISTANCE_BASE[7]=15'd13; assign DISTANCE_BASE[8]=15'd17; assign DISTANCE_BASE[9]=15'd25; assign DISTANCE_BASE[10]=15'd33; assign DISTANCE_BASE[11]=15'd49; assign DISTANCE_BASE[12]=15'd65; assign DISTANCE_BASE[13]=15'd97; assign DISTANCE_BASE[14]=15'd129; assign DISTANCE_BASE[15]=15'd193; assign DISTANCE_BASE[16]=15'd257; assign DISTANCE_BASE[17]=15'd385; assign DISTANCE_BASE[18]=15'd513; assign DISTANCE_BASE[19]=15'd769; assign DISTANCE_BASE[20]=15'd1025; assign DISTANCE_BASE[21]=15'd1537; assign DISTANCE_BASE[22]=15'd2049; assign DISTANCE_BASE[23]=15'd3073; assign DISTANCE_BASE[24]=15'd4097; assign DISTANCE_BASE[25]=15'd6145; assign DISTANCE_BASE[26]=15'd8193; assign DISTANCE_BASE[27]=15'd12289; assign DISTANCE_BASE[28]=15'd16385; assign DISTANCE_BASE[29]=15'd24577; +wire [ 3:0] DISTANCE_EXTRA [0:29]; assign DISTANCE_EXTRA[0]=4'd0; assign DISTANCE_EXTRA[1]=4'd0; assign DISTANCE_EXTRA[2]=4'd0; assign DISTANCE_EXTRA[3]=4'd0; assign DISTANCE_EXTRA[4]=4'd1; assign DISTANCE_EXTRA[5]=4'd1; assign DISTANCE_EXTRA[6]=4'd2; assign DISTANCE_EXTRA[7]=4'd2; assign DISTANCE_EXTRA[8]=4'd3; assign DISTANCE_EXTRA[9]=4'd3; assign DISTANCE_EXTRA[10]=4'd4; assign DISTANCE_EXTRA[11]=4'd4; assign DISTANCE_EXTRA[12]=4'd5; assign DISTANCE_EXTRA[13]=4'd5; assign DISTANCE_EXTRA[14]=4'd6; assign DISTANCE_EXTRA[15]=4'd6; assign DISTANCE_EXTRA[16]=4'd7; assign DISTANCE_EXTRA[17]=4'd7; assign DISTANCE_EXTRA[18]=4'd8; assign DISTANCE_EXTRA[19]=4'd8; assign DISTANCE_EXTRA[20]=4'd9; assign DISTANCE_EXTRA[21]=4'd9; assign DISTANCE_EXTRA[22]=4'd10; assign DISTANCE_EXTRA[23]=4'd10; assign DISTANCE_EXTRA[24]=4'd11; assign DISTANCE_EXTRA[25]=4'd11; assign DISTANCE_EXTRA[26]=4'd12; assign DISTANCE_EXTRA[27]=4'd12; assign DISTANCE_EXTRA[28]=4'd13; assign DISTANCE_EXTRA[29]=4'd13; reg irepeat = 1'b0; reg srepeat = 1'b0; reg symbol_valid = 1'b0; -reg [7:0] symbol = '0; +reg [7:0] symbol = 0; -reg [ 1:0] iword = '0; -reg [ 1:0] ibcnt = '0; -reg [ 4:0] precode_wpt = '0; +reg [ 1:0] iword = 0; +reg [ 1:0] ibcnt = 0; +reg [ 4:0] precode_wpt = 0; /* */ reg bfin = 1'b0; reg bfix = 1'b0; reg fixed_tree = 1'b0; -reg [13:0] precode_reg = '0; +reg [13:0] precode_reg = 0; wire [ 4:0] hclen = 5'd4 + {1'b0, precode_reg[13:10]}; wire [ 8:0] hlit = 9'd257 + precode_reg[ 4: 0]; wire [ 8:0] hdist = 9'd1 + {4'h0, precode_reg[ 9: 5]}; wire [ 8:0] hmax = hlit + hdist; wire [ 8:0] hend = (hlit+9'd32>9'd288) ? hlit+9'd32 : 9'd288; -reg [ 4:0] lentree_wpt = '0; -reg [ 8:0] tree_wpt = '0; +reg [ 4:0] lentree_wpt = 0; +reg [ 8:0] tree_wpt = 0; wire lentree_codeen; wire [ 5:0] lentree_code; @@ -406,11 +414,17 @@ wire [ 9:0] codetree_code; wire distree_codeen; wire [ 9:0] distree_code; -reg [ 2:0] repeat_code_pt = '0; -enum {REPEAT_NONE, REPEAT_PREVIOUS, REPEAT_ZERO_FEW, REPEAT_ZERO_MANY} repeat_mode = REPEAT_NONE; -reg [ 6:0] repeat_code='0; -reg [ 7:0] repeat_len ='0; -reg [ 5:0] repeat_val = '0; +reg [ 2:0] repeat_code_pt = 0; + +localparam [1:0] REPEAT_NONE = 2'd0, + REPEAT_PREVIOUS = 2'd1, + REPEAT_ZERO_FEW = 2'd2, + REPEAT_ZERO_MANY = 2'd3; +reg [ 1:0] repeat_mode = REPEAT_NONE; + +reg [ 6:0] repeat_code=0; +reg [ 7:0] repeat_len =0; +reg [ 5:0] repeat_val = 0; reg lentree_run = 1'b0; wire lentree_done; @@ -422,7 +436,11 @@ wire tree_done = (codetree_done & distree_done) | fixed_tree; reg [ 2:0] tcnt =3'h0, tmax =3'h0; reg [ 3:0] dscnt=4'h0, dsmax=4'h0; -enum {T, D, R, S} huffman_status = T; +localparam [1:0] T = 2'd0, + D = 2'd1, + R = 2'd2, + S = 2'd3; +reg [1:0] huffman_status = T; wire lentree_ien = ~end_stream & tvalid & lentree_done & ~lentree_codeen & (repeat_mode==REPEAT_NONE && repeat_len==8'd0) & (tree_wpt3'd0) & (tree_wpt4'd0)) ) ); -reg [ 8:0] lengthb= '0; -reg [ 5:0] lengthe= '0; +reg [ 8:0] lengthb= 0; +reg [ 5:0] lengthe= 0; wire [ 8:0] length = lengthb + lengthe; -reg [ 8:0] len_last = '0; +reg [ 8:0] len_last = 0; -reg [15:0] distanceb='0; -reg [15:0] distancee='0; +reg [15:0] distanceb=0; +reg [15:0] distancee=0; wire [15:0] distance = distanceb + distancee; reg lentree_wen = 1'b0; -reg [ 4:0] lentree_waddr = '0; -reg [ 2:0] lentree_wdata = '0; +reg [ 4:0] lentree_waddr = 0; +reg [ 2:0] lentree_wdata = 0; reg codetree_wen = 1'b0; -reg [ 8:0] codetree_waddr = '0; -reg [ 5:0] codetree_wdata = '0; +reg [ 8:0] codetree_waddr = 0; +reg [ 5:0] codetree_wdata = 0; reg distree_wen = 1'b0; -reg [ 4:0] distree_waddr = '0; -reg [ 5:0] distree_wdata = '0; +reg [ 4:0] distree_waddr = 0; +reg [ 5:0] distree_wdata = 0; wire [ 5:0] lentree_raddr; wire [ 5:0] lentree_rdata; @@ -461,74 +479,94 @@ wire [ 5:0] distree_raddr; wire [ 9:0] distree_rdata; reg [ 9:0] distree_rdata_fixed; -task automatic lentree_write(input wen=1'b0, input [4:0] waddr='0, input [2:0] wdata='0); +task lentree_write; + input wen; + input [4:0] waddr; + input [2:0] wdata; +//task automatic lentree_write(input wen=1'b0, input [4:0] waddr='0, input [2:0] wdata='0); +begin lentree_wen <= wen; lentree_waddr <= waddr; lentree_wdata <= wdata; +end endtask -task automatic codetree_write(input wen=1'b0, input [8:0] waddr='0, input [5:0] wdata='0); +task codetree_write; + input wen; + input [8:0] waddr; + input [5:0] wdata; +//task automatic codetree_write(input wen=1'b0, input [8:0] waddr='0, input [5:0] wdata='0); +begin codetree_wen <= wen; codetree_waddr <= waddr; codetree_wdata <= wdata; +end endtask -task automatic distree_write(input wen=1'b0, input [4:0] waddr='0, input [5:0] wdata='0); +task distree_write; + input wen; + input [4:0] waddr; + input [5:0] wdata; +//task automatic distree_write(input wen=1'b0, input [4:0] waddr='0, input [5:0] wdata='0); +begin distree_wen <= wen; distree_waddr <= waddr; distree_wdata <= wdata; +end endtask -task automatic reset_all_regs; - {bfin, bfix, fixed_tree} <= '0; - iword <= '0; - ibcnt <= '0; - precode_wpt <= '0; - precode_reg <= '0; - lentree_wpt <= '0; +task reset_all_regs; +begin + {bfin, bfix, fixed_tree} <= 0; + iword <= 0; + ibcnt <= 0; + precode_wpt <= 0; + precode_reg <= 0; + lentree_wpt <= 0; lentree_run <= 1'b0; tree_run <= 1'b0; - lentree_write(); - codetree_write(); - distree_write(); - repeat_code_pt <= '0; + lentree_write(0,0,0); + codetree_write(0,0,0); + distree_write(0,0,0); + repeat_code_pt <= 0; repeat_mode <= REPEAT_NONE; - repeat_code <= '0; - repeat_len <= '0; - repeat_val <= '0; - tree_wpt <= '0; - tcnt <= '0; - tmax <= '0; - lengthb <= '0; - lengthe <= '0; - distanceb<= '0; - distancee<= '0; - dscnt <= '0; - dsmax <= '0; + repeat_code <= 0; + repeat_len <= 0; + repeat_val <= 0; + tree_wpt <= 0; + tcnt <= 0; + tmax <= 0; + lengthb <= 0; + lengthe <= 0; + distanceb<= 0; + distancee<= 0; + dscnt <= 0; + dsmax <= 0; huffman_status <= T; symbol_valid <= 1'b0; - symbol <= '0; + symbol <= 0; irepeat <= 1'b0; srepeat <= 1'b0; - len_last <= '0; + len_last <= 0; +end endtask always @ (posedge clk or negedge rstn) if(~rstn) begin - end_stream <= '0; + end_stream <= 0; reset_all_regs; end else begin if(istart) begin - end_stream <= '0; + end_stream <= 0; reset_all_regs; end else begin symbol_valid <= 1'b0; - symbol <= '0; + symbol <= 0; irepeat <= 1'b0; srepeat <= 1'b0; - lentree_write(); - codetree_write(); - distree_write(); + lentree_write(0,0,0); + codetree_write(0,0,0); + distree_write(0,0,0); if(precode_wpt<=2) begin lentree_run <= 1'b0; tree_run <= 1'b0; @@ -540,9 +578,9 @@ always @ (posedge clk or negedge rstn) bfix <= tbit; end else begin if( {tbit,bfix} == 2'b01 ) begin - precode_wpt <= '1; - lentree_wpt <= '1; - tree_wpt <= '1; + precode_wpt <= 5'h1F; + lentree_wpt <= 5'h1F; + tree_wpt <= 9'h1FF; fixed_tree <= 1'b1; end end @@ -570,7 +608,7 @@ always @ (posedge clk or negedge rstn) end else if(lentree_wpt<19) begin lentree_run <= 1'b0; tree_run <= 1'b0; - lentree_write(1'b1, CLCL[lentree_wpt], '0); + lentree_write(1'b1, CLCL[lentree_wpt], 0); lentree_wpt <= lentree_wpt + 5'd1; end else if(~ (lentree_done | fixed_tree)) begin lentree_run <= ~fixed_tree; @@ -603,9 +641,9 @@ always @ (posedge clk or negedge rstn) repeat_len <= repeat_len - 8'd1; tree_wpt <= tree_wpt + 9'd1; if(tree_wpt<288) - codetree_write(1'b1, tree_wpt, (tree_wpt=hlit && tree_wpt<(hlit+9'd32)) - distree_write(1'b1, tree_wpt - hlit, (tree_wpt=hlit && tree_wpt<(hlit+9'd32)) - distree_write(1'b1, tree_wpt - hlit, (tree_wpt=hlit && tree_wpt<(hlit+9'd32)) - distree_write(1'b1, tree_wpt - hlit, '0); + distree_write(1'b1, tree_wpt - hlit, 0); tree_wpt <= tree_wpt + 9'd1; end else if(tree_wpt sb ? p - sb : sb - p; pc = p > sc ? p - sc : sc - p; if (pa <= pb && pa <= pc) - return a; + paeth = a; else if (pb <= pc) - return b; + paeth = b; else - return c; + paeth = c; +end endfunction reg nfirstrow = 1'b0; -reg [13:0] col = '0; -reg [ 2:0] mode = '0; +reg [13:0] col = 0; +reg [ 2:0] mode = 0; reg [ 7:0] fdata; wire [ 7:0] LLdata, UUdata, ULdata; wire nfirstcol = col > (14'h1+bpp); @@ -937,32 +979,32 @@ wire [ 8:0] SSdata = (nfirstcol ? {1'b0,LLdata} : 9'h0) + (nfirstrow ? {1'b0,UUd always @ (posedge clk or negedge rstn) if(~rstn) begin nfirstrow <= 1'b0; - col <= '0; + col <= 0; end else begin if(istart) begin nfirstrow <= 1'b0; - col <= '0; + col <= 0; end else if(mvalid) begin if(col0; clogb2=clogb2+1) valtmp = valtmp>>1; + for (clogb2=0; valtmp>0; clogb2=clogb2+1) + valtmp = valtmp>>1; +end endfunction input rstn; @@ -46,46 +53,48 @@ wire done; wire [clogb2(2*NUMCODES-1)-1:0] rdaddr; reg [ OUTWIDTH-1:0] rddata; -reg [clogb2(NUMCODES)-1:0] blcount [BITLENGTH]; -reg [ (1<0; treepos <= ntreepos; @@ -97,131 +106,139 @@ always @ (posedge clk or negedge rstn) always @ (posedge clk or negedge rstn) if(~rstn) - blen <= '0; + blen <= 0; else begin if(istart) - blen <= '0; + blen <= 0; else if(islast) blen <= blenn; end always @ (posedge clk or negedge rstn) if(~rstn) begin - for(int i=0; i= (clogb2(2*NUMCODES-1))'(2*NUMCODES-1) ) + if ( clearidx >= (2*NUMCODES-1) ) clear_tree2d <= 1'b1; - clearidx <= clearidx + (clogb2(2*NUMCODES-1))'(1); + clearidx <= clearidx + 1; end else if(build_tree2d) begin if(nn < NUMCODES) begin if(islast) begin - ii <= blenn - (CODEBITS)'(1); + ii <= blenn - 1; if(blen>0) - nextcode[blen] <= tree1d + (1<0) - nodefilled <= nodefilled + (clogb2(2*NUMCODES-1))'(1); + nodefilled <= nodefilled + 1; end -reg [CODEBITS-1:0] mem_huffman_bitlens [NUMCODES]; +reg [CODEBITS-1:0] mem_huffman_bitlens [0 : NUMCODES-1]; always @ (posedge clk) if(wren) mem_huffman_bitlens[wraddr] <= wrdata; -wire [clogb2(NUMCODES-1)-1:0] mem_rdaddr = (clogb2(NUMCODES-1))'(nnn) + (clogb2(NUMCODES-1))'(1); +wire [clogb2(NUMCODES-1)-1:0] mem_rdaddr = nnn + 1; always @ (posedge clk) blenn <= mem_huffman_bitlens[mem_rdaddr]; -reg [OUTWIDTH:0] mem_tree2d [2*NUMCODES]; +reg [OUTWIDTH:0] mem_tree2d [0 : 2*NUMCODES-1]; always @ (posedge clk) if( ~clear_tree2d | (valid & rdfilled) ) - mem_tree2d[ (clogb2(2*NUMCODES-1))'(~clear_tree2d ? clearidx : tpos ) ] <= ~clear_tree2d ? {1'b1, (OUTWIDTH)'(0)} : {1'b0, wrtree2d}; + mem_tree2d[ (~clear_tree2d ? clearidx : tpos ) ] <= ~clear_tree2d ? {1'b1, {(OUTWIDTH){1'b0}}} : {1'b0, wrtree2d}; always @ (posedge clk) - {rdfilled, rddata} <= mem_tree2d[ (clogb2(2*NUMCODES-1))'(alldone ? rdaddr : ntpos ) ]; + {rdfilled, rddata} <= mem_tree2d[ (alldone ? rdaddr : ntpos ) ]; endmodule diff --git a/RTL/huffman_decoder.sv b/RTL/huffman_decoder.v similarity index 65% rename from RTL/huffman_decoder.sv rename to RTL/huffman_decoder.v index 706ef31..50c2b39 100644 --- a/RTL/huffman_decoder.sv +++ b/RTL/huffman_decoder.v @@ -2,7 +2,7 @@ //-------------------------------------------------------------------------------------------------------- // Module : huffman_decoder // Type : synthesizable, IP's sub module -// Standard: SystemVerilog 2005 (IEEE1800-2005) +// Standard: Verilog 2001 (IEEE1364-2001) //-------------------------------------------------------------------------------------------------------- module huffman_decoder #( @@ -10,18 +10,24 @@ module huffman_decoder #( parameter OUTWIDTH = 10 )( rstn, clk, - istart, - ien, ibit, + istart, ien, ibit, oen, ocode, rdaddr, rddata ); -function automatic integer clogb2(input integer val); + +function integer clogb2; + input integer val; +//function automatic integer clogb2(input integer val); integer valtmp; +begin valtmp = val; - for(clogb2=0; valtmp>0; clogb2=clogb2+1) valtmp = valtmp>>1; + for (clogb2=0; valtmp>0; clogb2=clogb2+1) + valtmp = valtmp>>1; +end endfunction + input rstn, clk; input istart, ien, ibit; output oen; @@ -32,37 +38,41 @@ input [ OUTWIDTH-1:0] rddata; wire rstn, clk; wire istart, ien, ibit; reg oen = 1'b0; -reg [ OUTWIDTH-1:0] ocode = '0; +reg [ OUTWIDTH-1:0] ocode = 0; wire [clogb2(2*NUMCODES-1)-1:0] rdaddr; wire [ OUTWIDTH-1:0] rddata; -reg [clogb2(2*NUMCODES-1)-2:0] tpos = '0; +reg [clogb2(2*NUMCODES-1)-2:0] tpos = 0; wire [clogb2(2*NUMCODES-1)-2:0] ntpos; reg ienl = 1'b0; assign rdaddr = {ntpos, ibit}; -assign ntpos = ienl ? (clogb2(2*NUMCODES-1)-1)'(rddata<(OUTWIDTH)'(NUMCODES) ? '0 : rddata-(OUTWIDTH)'(NUMCODES)) : tpos; +assign ntpos = ienl ? ((rddatavZ_d@X;cP+YVFZCH0hCRMqmU6SMCa4;_whVq>OWzZZ8h zE+|laExV+4ZGFCN=&f+&b)w{k_?kk+aS}~(^D#YPX%Ue@3ETfY-aJ<;BFM?*L!6B} z{Z4TS$6wOprgy)<8)av=t`}WH6e?uckfBs0aRnDH636fh$q%C5qQ6>aPABqMdN?l6 znJB{-=sySdjFEL_II{Gp0@GgO4Seh#pVksq(um>jsevi|JR%p~z_aL;G7Uc&wa(RT z0tZPo5z#e1YcTCseiY05&ir(FBMHg~JpW(R*m$O6H$)nI=-07v&C7Jy^84-dAok1F zc)aQTL-CDhM?5h4cQ-CiJh9>Yg?7ED_m7b7te)WD8Ujy>-!s%5Uu}DS|8R4YSqPW* zA6&;*b`xDAM0`76%SzRuKq)ue5!|E7qvDav`zn8})bliYMHG{8*|{Ng!DJSZ70E%% zcT^?m^Ib+=HY}>6C3$61|8hm6;Bz~~@Y?GM~ zkyk&U(qVJq_fC`jKsgEhaA9`RkM^=mgI)aHRH6*c((pvbdQ5z1IzDcMPccb|p7{C-lX-~<`f#2zl;qjdpxo_{f=> zLAt=(F#CEKLOYTg$_&RlIUKRQpuC9gaqRhL8<8q)N1XOZ^l-JY<)Ib!Pp*uozVR4O zfECGGfE+x48*19pqczfh&mpFu2wC#|xuVR_TNE){y!}j?KE3;XAd9 zzOi!@FaSw`f^gV_(yZmRU@>QD61a{ykTyU^>w#8kU#Fx61t{>=+Npvi~M1Wgt&TNB4bk z+uh--@D)rGdFx4)8aCGB-=ER-khYuENX9b_yVR0AsG#wxj<=@d5(0RFL)x3is+6k%NvY6i$*v*%xjc>>)*o1+mqHUeQ(w#KEC#fEKJnhaOenjpn&4~q`9x1PG zp)?}Ph>4`+5bNg4bFrK+{q7UIJxs9ZJ}T(6YWLZS3%yJG`A47aP?W8kVvs-CllD&0 z1AaPYN}y&Z)7q=@V-wwMwR%qH=k08qdBY2Fm!kA3rYCi;#PjMt;3M8l4X!7;IoU(8 zv5Zi0zX+N*Yl%V@C##|Sl;^!0Ag?~(GxGB@UB_m(v-&pzhxC<*g)T)P^7pWW699?b z5&iaxG>%jDFD$!nC4&M-CjV=!;p2TJhaT8AdrZ#p^UvgVduSG%7qp*JSQV3e-!&OS zhI}13uYs89)H1Sdr5;FZ@G*>_Mn2f%EhPUU;Np7v>vcT-(0$MA%ECa<-6q4?5u0GW zoDW_-4MNEnJ5iLU zy>M8uB9jfiNYG#^Znt!y!Zp155Xl;z81Q9Su=gg-S=%&4pVP;FA6!*stq=Z0PV`~n z+ufU=VJ#)3KV%Jn6hz4frt11SXslp+;&mB3vePfXjD*47C?>a9mT8M5t2hQz4Yt#VbAZLvllXCAAE6M5=~)khI=j?F1Q4aFlag1 zSZZ@Q;8E>}uG>=rv@=Hd+g36NQtUG=BM{#sev%2?b<9-)6XT~IL#g!p;xZF#7<353n@LZzk&e-vr%G*LPQbrFOJuRa?o>U3m zRWs?o_AboFZhR@a>EC9Xx zfGHDNb?8#Y3@;?Tf4*x-dBd%YxAxGwaAr>}iKR|{C!zeK$ZxF6{pc-%iRYg;a`>i3 z8{?jyr?Zm1MwRR$lNy8uMF_VWOd@mZeGXcl5Ipn$s&k?l4v<^Np>Xutv$NdcA9XhO zv^kNq544nWtHpZF%$;Kq0p%hf!PEsou9j^k;lmo(xomcF!pfj~*c0TunsYuh(}k5!Fp0piRC z@l@vRTUF%|nKnEif#9up=KZC_fKy$w#MT@dWeiHBK<=ygA;A7awaJ#AbzAyogDa*HL5+^vPl#zE0zE`5rTEIc-H&3qS86!5UyNXnJ{qptIPT? zDFx&>Aw&>BkFkxZVxsmRmY0}8lQ6rq9MnT9jaHC=vLV1DHjAN^+yEE7zg_K!F>=TL z@AJiM~)&ZU`LE;6!pq&`=A-W zKaUSJ)p(cge=NcVTcsz1-6I11p!Un_Spmgq_$9yTTk#HHR6$RXIi=dmI)e_ppheK&HG>`94yy#p{ z{7zC#>h&(JTJ@33h$-d8AMRa z?$KKFAii;J)TM(COmC@bcatSsT^J5Im_noWa1|9Xq4auH<87kSwi5`C*2c%4=Vu-6H0q%ESAB5*>%_g$mW>zOZUC^`Lsxn`)-k=iBT&zT+ zl3iE(<-k^{69bGR>n9ak)68}J8M5tm2?>o1mYa73$At0nTorYmMUOdsn65OT#DtZy zW)Jhf?Kp!{emO~kM}J3T&xAa@%m@%S@ph8vaEGg;jiUhz^D-tgd;m|ji(B%8-z!9K zNzu%Fnbi#IA#AEZw=?YqdE(9Yn&WIEuD;Hkpy((K%6=q33sA1g;D~ZuKzn^xS^t6- z6tY?7Ec%vWC%pFpMY)HjWzk+t9;%QCVT}G*C;^Jf=8;~LxN|@ZVs$L{;$?we2G3s$ z`%%$NG_*-61ZqKDIH^tYvXmU{8|p|czvTxG+~ToxdZyRcR;hzlhj07C`0~hCla6<& zWXr-PqOS62ob|vwrPFLm;fP!YEB~_YrNW^yIZ%iflh7M;SNi2A<8Ib7c?}h~3!{9` z?)Q~p{#MemmgPEtk^PijwV790Drvd;jvqwX0G`KmgkjFn&cUZNn z%7-Bs`@{b^A!0Mbe&@-jddGG=KF1EA10g!4ptua zg~an-r{&Ny4Ap7oSc{M=2}z*1tGhzB^j$I5D^J@+&O4VAyAhWc%2c=~T-xb3xz7ee zEj5>>pIrV0>uz+M`)Q8Dn@FDrXt29KtI*$C>e0|Js!Zv-kqPHs1v{ZO9-#f~Md#*2 z5~RBJ(s}N7`QxrfkLD)#Pmj7yj5LhKS-g}$-&KN@q-EWF@e!!a0BC$Eqc{2vKZf==NFe=B9c%Zqz3aGV$Dg>BC^_&hS&{qqM}ov2u?3lFC&e4?Bmb+nmL z?msRC&aonlfmn3&K^tMt5EHXOElz%Y5viy86$f zGj+;*VLEjZuGE64BRx*!R}cmkuR2KRqbEr^UE+Kv6N2L~50#;dS0P=&P}G>ge!IWC ziT+UHz4NzxISFznC9=WI2@~Bh+AcJ;^wTHENIHm*&XM}_MHN>W@utMlnX8**q$Azkd?&dMQxSy zc4z*|@KKzEL;2vs__{sjfdAN>N%&aqf=v8}0Xp0HlW}l=%O8Ve=a?Tg0l;}*SR|RK zcI0)i^!vh#Ds5$^UyUicP&eaglY1^2-ZH7-x5&Jqv>2rHUifN`(_jW@lf!D&MR2DJ^Zh%&kYG?hg^W?@7T4h-(VUslwaI;V`0 zlZNw1-^FL9=+`j99o+}cg(e$XFvB-#I3QZHXgPQSjvR3wMc{apB4R48GpRLebYd@M zcq#*Ai7{vz%`w{WZME3~(*I3`p65*OG$VC>aZqCUbh{kN1}BI&b(#mW>U}U}eM-l2 zdkYevE1il7+Jq_>c8gJ?z;`Fp99N-vbz5Xe=RzWB3MVn}#Rl1n7nIyz;Rjp zLqlWujy8I6J&Sd3%*&tKVyL&XYFiDp{36$VrU_BL@ayWsaW_OmH2ri3$lQT2EfHzh z>SQHH8mu@0e^d?3pupg}NLt|c!kndEC94C_s4LFxefeINk=AgpTr4wP+MP=ZPvre7C2e?z*SC8V8$@eR%Rp3AlXwvV|oMe}ehy}$CH z|9dey%oBR-x1Jk4^_~=|cPi2Dzq@c8|Dv=Y2~FiJ0M_d(0+Oa0)5dm`KcAEKr?F3K z`ijKoBrZ}Hkb0SXiA$@q3%+(_kG7gq!Nc;sq)a>{0}Ay`KcuLzTPRE%I%Qt!}q)ApV3!Pt}^0{y1h*zG*iqUsfsabJ+=z1bh zSW09*$K6R4KPJVS)jz=yUB;I{>W|}02X0d#sIDvHp4QrNfj;tK+M7`B?#j1^i48KK zhoXR>Vi+#s22u74QU+5lIGe*RA8lG>6C^PAjS73CExzc-RobIDHT8+fi>Q26ldI%* zyIxc<=c$RI8yj-4ZO!^pNw%Nw)o5`Q{RLtgz0eLV z#;5GZ=4ZQqNtYe`Zi1+oc)5+Q&$$OeZ7orp!2IyZdk)<0$pmylTR4%$WR=saf&dGf zX__f4`gt6{+~(r-w@j^&8fD5K>CPZdj_s>vcLkQRdXMtQUKhs$f$Fx$Q8};%pW> zWjuHt$*Ru?S}RQ&aLi;n>)S8KVi2*`BZe%VPE6xf-DfnBu*vpq24qm8cZngIQ77MI zw#XbC^n39MZ|Vm%;4Ykge<1sp@LP#x!8g_uS8v{9WP2UvRjxOHAX}0hRrBT^Vr_do zENj_gnTKB)vK@&ON~z9?aMcUcC&SPuGhO4pkPR`PjkxM4M`%@fbx=4gLEwTO&3M9y zu#+`Y@6!_b1*C*)m|er6v~w|&@62fGsowfY4BS|Fmv=}1sDT4yRB{t|pvF4cRwb5o zYokO7Gq=O?kW?uu8~Q|KYDAs(IMPmh?4%HP1BS8#;6X-zCfx@9p3yU7Fh=?n;#%VP zHsEUpYlub#rZ(d&LDEijZK zu=0jsVLCw5r~%QIl7jTQPL%q1SnNn{GpP$1jP( zQIdfrDvs)JiIHz;R)xKlp5s?GV@#C11bEuwIv3s1@JKsgB};}a{SE;b$l9^A-6VC; zQNmVg{tiu}Epp(M+#~unS9Hoh?Dlnm7$$!c4#huKU3da~HNIM8`Rgg=^$Lb% z85@po?dp43a8~-5NyHWC?vJ^~KXJ3nPlk!c8vW$&V9V>us3Yt3&*vZ#C=2I)BvJAz zeoEw-`%Ybij5`9+@4Er-Lp(IxIgG21`7s$7yacStW+rW!X zVnJCF{f7#(>Nbhi#~XPH$|Cw1p|z0K4+{awW&@;AH{{l#<#6jX9uj~TC|1NbC>z0R zUTiJvuS^+LumnU)7hvW_RIg3>^gPXi)V$td4aH+#6TI4YqJjj%rSBD*5o3R{z+a02 zRtf^S9|X|b2A7u9*N-c8w%5|H5{MV~cC-HDKfuL-vO1^3XqOaRWjMrW&qB)oXmjzk&oX@6AVE)A-}}1|&FRim^4i)kS|rCK#*n zU~fLzyCOfCG&YH>v?y;(D*^|%o;X|XbXxavp!$wG9u$=PwUXxD#QKbULV&9<4ZdZwdc@kN_t%Z|9TimJnhwj~NyRgI@ zXdCCjeI7IaQO=B@tv2Mdb>Fq%b|fCibJcsx02;iUs;f7)7a!}rX9-}h3tw#tQA&5X znJW@R;|VK8=GErBs@zjd*mW*q=y+Bz-LGTb=P30Sn+1*y4V~ng;>mjVh?yeyJgpUy zS`9VXnLJW#?-_EneBBVbkMZ;@dW@Fk3#Xq;oO<(KbS$)&4mcMc);k3 zz{hjn_uhZsy8WY9pYE>OyQ=H-s&l%d)m7ziu_&-WAP}yCytD=ggbqBlhn}N7)enlO zO&}1;xVo~I%;V$Z$YUlqH}}@o)}y5*=rJfW^HIZ4?rB;^Mn>oHSGz#nnwpya>(r*E zrlOHRpJY>MMTxI9&Q?A;0qGXd<*4u9zw15~3+36_+5AC&VPWCH!9h7Wxxm06XJ=sE?1&_deg6g-8<<69WT-#|BGqb|YZ$ z#l=OEFsSQsH85}#27{GPhq=4ECnqO6hU#x`KN{MqpB2&Ngp_QB6-NKfZwP1zl=;i0j zu53!8mX^W|4NJmFPiU})hNOijk%gp&q$i1m$A;8~q^Dv@r=HaCxF8I&wCc(T0fFAH zD@cFT@|s8HEW{Fgq8h-T9DZd^gG*jdG0M;*s|)s!w~{g(nZx|?%KZ8rJE>F)@~W12 zJltXIUh=*v$8~!r0cKZ}9nP@=m)haqp?Yz9av%U$l08Mm|CCNtQxO~xsI#@k46~k> zll!SRFm{PALcT(LhZM?NYnmehf9j+9N^w0$>odb*r+6s7^W3|NJxNr@QUAkmmn}2ckSW#i%7OLF ztDF^)rItrK>=|pz-_lpMb<4eaq6Z=ij$_%F9z43MtqPn?lyXi6dVFeTFf zfg@|A?~Fq!vipl~8VZOcmPl0O3;Zm$@vc#{>Gl-q>a98KC13jvo&YPIj0U@BkmRDT zdZEB!cdcEO>icx8Ha{23OVWwTbwv^U`7?eiqb+zJ~roAclzD3R~xD`dFmW4+N{yquN zCP2wWH{J^dcK#4^Fx9?nGtB(n=IvWzsL%;z5mU-#fDhf7MFA+f0jr2dweSx9l~1>q z`@RD=8t1uG`eyf8yd2&Q9ER9%)arko(8pBujm z2)u31bFX*rA_V)U34f_PoV4xW-x9GNiBxl11_hacM14nso^S+L5oQ=qBHbu(8lF`! zhy>5;s-$-V893?mpCK>3uA+Dq3o)?Q-!9-@HA{{fw$eA&rw;qdujI-<7oJu1 zAfRDSr_PKTC!cId@f2+m+eZ)raNdU;;7cYxH1ZlB^rS*+CHA({K39>F}o|{rH zDJ{k1dt#g*TE$=zPvP^|XjY!KVvH6GXQE1OIQJ{w{3>|?&#%?a+tHhCuBcH2D?6c+ z#VQ-f>r*>k#89Go4gzYvUtOUu8&@N1GyST}C!1Gm-c$_p$(>Z4P)!%pdKJD#>dSNJ zxR$t6EX&y2McLiO55HjqdZu$Z!U{C@w(L#5bODw*lfq9va{<9sqXT1yRmjJG0EFoy zi?pJY`m^WuQj?W^zuZj^>MZLF)yj*C$ZHIKZ6=SHjl2m2a~y9m>$zN)%HKA88xNy9 zHmu(2hJx78PmsLoehQl-N-yA0*nVlxvu|e@3wphxEp7ff`tBtbvWgKTrw-0J?JtE~ zncY3a)FR0uDY9nGH>Fb&nqL-_1KvMg-Ow&1ncL7L7+$Dhgs zAD!5!U-3~5TSGH@CC%~mK9V$zZBt)AAuZxXhu!jJJ~>VNkTQxmDX)}~`sk{q)cHT8 z+|2nKv=M_!+-|gN8|XFhe@@Fu^S5CP8?~v)?H+1>>^>;Ra&gWIU)VXc9i|ps%G%_! zRF-GmBmw$*ZneO@rp{HiVSpM8?%Xo0e3`95&&d*X6Y%yIqe={uPdbzCBCB!8XdBAgH&jEfkAYbM`^Sv(6@m8>Ss;2|m7Ue(3-C*Xe| z)*x7X{IL{^dDOurv0Gg8!qNMX8t$`2@kQjXvb6IQ)S|h%`i2r7P=Fnye73Y+chcph zqKbD!W>oZNFFmnJpDFo~JuAV9jE(;U`L=u9O#EX3FMBfG**7uDOV+8gp?|kF5y=FY zxuex&Y2EfM6Ho`Ek2}oU2H&T-o6LAE?du_fC*p;#$f>uj@3jz{S*IugPO^_ul>o7Q+XI$(u|qs|=$Y8}S%}l5@trgA+t6y-MQ|fPBr-zj3!Gaz14{El+;q zzhe+yBdNID*-qL&(=UR&pcTzd!}eCHta;CCsAV;OEhek?_RGY-)dX>~bcBlbi>d>) zNTADY-R@qw#pC ziGc#wP~<0rGf-ox6beTV?s+IIvA)5J28v;F%#o~i{$s49$CIT zRdM%9hFoYkn{@sz+1t43MSG?n9=v_Kt8ymIuzvM_d~+V#=6a_>AJr`gCV(=GiZe&B z&DEA2=;bSEOjM6cM|*wTK#L}e_aE1xh|>#cw@Rh!AC{`PKKOC~K{%2(NHMdjJQMj6 zGQ0>&YWOGWyFG%OwksNPF#@(-Uef|h_1e1*5`Zh+r78CiVxOEHRF6VRyw^mLHt-Bk zaB1&4lZT*(1btTL2`h8r{WQuaDy|>$+C(Gw(;RW>_pW{>Z&?IRz&)?y6h}mv8+zd{ zbv9UThhMoFS%1zsXSpwtNy}`@qb=TMIpEh=jtecsv~lQ800Cf5+3L*1`I|lC<=hR) z4LY3Ss->c?i*}&R!KLX(Q|f6)SUm#z8mo*4kspvG(E>3vsC4L1d!4f_z4b@Go+pJH z8@6uqOsM|BlorTTQGrfy1CJbmBz7r6*t{Jww!DYKi^c_Ks- z4+DE8TCf#CTu|pipsOs?ETPU)u^*b_A&|A>|O{Gdtm(y;kq;O)ONbT zVh=I+8qGd}Gz#LENjG=k5YZ&wq0}NLg!X@cP4I{DGO{$4Jm(66{>~j4wbt{nq=8h7 zQcaI&#gB5AS;zjmF@YH7wj}-i3>o!|Q-{GIhEB|4D3%+pBzbDiI@U47p-|lWl;c2; z&;BbYue!k1qy|gTPSU$oTSnz>8WRq`$rp03!V^4DfTpCt_fJ|T})QSuSp8I+@;nW8%{Pj{$M8k=n z7DF$Vi1Bhp;3QHa4jQ0^hsk&yx$pBDr*S?6ihQSq^Ap5+O{So$fsELOk@)PVPu<`cHgWdCR3mOPH{*{f_Xt+ubOt#yV3$ciiuIbIov2x}6i{wbVv z*<`H!_bm)>vb-W9eWwq89$4wLtT{bOT(_u-pXSgBB(0k z`@q#N3`6pAcbQ4bgSfiDEEDg<0j2T3<-Gak7#VU8c2f>+zlZX)v+UwWz|Sm(7b`As zbk4r!2**K-ab8PqZUn$QR$+J>Y&xS>M-i&)u|_9l%gqpIcE6nXxUh2?j?z5ws?PNr z^OsURLcYDtNuolIY!jK7HCl$kJb7e^P&e>KM}p^xowZz#zmAa{U1a>K8SUcOonY+k zT^BRvtjBt}e3<{9tPm@liL<#<_)YR(Ik=^5cPQ?Ftt8b%Rw{wVe=o4(;znS1t-U7ybb@Sx{ zRgObjTJUb@`9-*Fk0@|R!j6>M3ibV{_U5(L-hS2K>>dI3RkG|RTQn^Ws48u9`d3Ea z?#qVGk2W0>X_)l3R(^gT>+!UUjzoG|r5#@3cl?^^N?|ZK74&`AwSj@& zKy;Z#Qe5tDVw8^T2+20Iz6f_Z-+dm`J zL!(VLwSO8KSq6O@cDb!{X+|eUZ#%(3nocB$3X^*$n8p^v&7Y9rT|MOw&oMQWGK#ec zAcZjzEgpegVjk*ozsend`&9pxq>zxdg=C1bA9}+AB=17Xx}l2SD!vL~-=6;dxHBHp zC#LVZMbWT;m7I3TswL^n2pcMWVhB2CQy15`&}t&tAC1 zvk9^1rgr|?32=Ic&Y_Ej&8u8DZJ-8~?fc%1ww$vER$Vys*h4&h-8<*D-M`!g_bKqW z1eNAY-R`I7x)B6QZmkYq`7et4F5^VXCzyR+12=y-uTfzkRjb@N?OQ=m5PK>U^I8iJ z(@GFi3rW9&(wDEKibCmsJELV|uZWppEX>S(V-o9ZPD~Ai(E~*!2v&NVGYW>w1#4<$ zJ60ARy!7YMh3^Z?S}EcV`mp))DapLZu3t%&cBnE%h-Nd6ihDh)<{=_Yl_)DHAd-5F zgDzj+{i~fycZcdG3_UtXmh+&m3{OMSg)~r&bQj@%)%TLK~_K#bstTgQA0wiL(6oJW6lK!PKB_`i%|cem+;PY zU~qA}Gvz4PNZzW)w7EzRv3bQ-TD>w%9NC_W4JMJ5{!IV=pw2?P5B#psI>o2bOBuH9 zBCTXv)U_%vs(h+f`dpFOMID!Z&o0YZ%k8i}%+R~ad|O?X?BnOsw`6iVnh$hD*3ab|0*A&w$9=<+%p*AUdd0(%_;wD{hYzF*>ih1S zZyrzBIt9C+m_8mH0{EL}P(44};YtPXhO5-}diItg@n>*UvS;vhFlY`HZs{Zn=dk&@ z0~{l~r=YGYda(fOi?w!?AcYgQYXHR9LURUbyA)rMs>! z{RPCuk@G3CBtA3tT?*yAkcnuvzc}!tW3ZT9k&WcLILKEMUK8PX8re6*(-gGMp#ZL< z>;Y>Z)XO6j(!|G|BgbzUImmOD7@G5vatb9~IrMwmAzE3ibe{|d*sO$W!W&4jf#%t!tvaVf2H2VUHoIMVdI>JhieC3^bEm5hY#->$l`9y^W|596w zvj2_WwI*Q-0QZ-v@0a6T1-E36-zxs+Qhz_ayrbkALA38dx_Uod@xW^K?G+I zWnH=CTR)uU@HUhXWrCNgr)CjmsV;4(e_4UH(U+9~tkbt6%Qvm9FG8ImV((E&tnbIy z!ajOj|D+4)qiG%dK4pp@DmjbmL5Ad=s~Vp3e!Tp7%wsm1?CD?&7`8{Y&Gb6vbLACs zoqmn@J-&fK=n$tVp*aeE2S@}w(AOSpWeZ$)AKZU)^h=!5IxOYaZoy+MrOBgC=LL#A zin5?XHyC*mLs5ed=s{{y+mum7HlOQ%&AaP+D2 zo`gyt*bd$VB)zK1h(1XKf>i1Z^$lTxvz~b{_a|8zEcp zbio!1hv{3EKf@zI(*T6y$yu;(w7cpqV5muHLKJSswEpXP3oqWo3)4A1$)qh znf`r7qxO;J=EEyB6evpw_xG|Bf6`U9$$8YdHR^5e-%A6^vc45#RR5?(+;;!T3fi8( z@x^s%hKx!M&bCE+%2ngF*)6=B&=16GsO#k70|th{e(ofR#dPt0bcw}dmZ|6#tCii? zhCxte5fEp;2pjh6#Tdxa+bD41_RAs%xnJQG6k^Ho+elp@%9m8)`-7yJHo`b;4D+n4^=^#ntQ$ zlZ|+FI%?z_$5qqF(~b@+S`RF+WHu^}3-OITZ}wux*)IQckjXj&X`=_W95>TCcJAb6 z2Do7^v#ib@OHP=_)j^;+f0%>I_r9ufOte;( zL&-aErhH(p+&vMB4&r)n64Oo69scT^=4pDe*>cVRsqgdMQVBV%`u^${4bf{}EFSX- zEOoaPSZ8(miz7EV7(ylF@#|GH)b>@|p6)F3^LpkPREE<%>!MK7XZQ`iuCx3!-z{4k zDMvsL5Gb6;r*Z;2Joi@tZ(CGZvqq$=PTYU%7zEzhz*xM*g7n!FoM#gTe)JH^4jF63 zxCXFKxbv)+Kn>hDZ+axm*30W8T0rvW(=bj&EGI~$TbjjDso|Un+NGUGKV#?V;Vo!3 zAKJaL1F9qA1M=Uf&VJ@59{06{9L`8qNyI`@uK+ZBx|O>JhiL;^-sNcl8SW&gp8vh$ z2K4lWahD^k$k8m%d4|oIZOwB47|$P<9Q4G6Sz^rU41xRpB7f$bS!#YanG15wLEEk$ z-aq06K-Rt=0=$AM>Ujr75FwHT|H6Jn=6(09J8*ahA+`-pgkwRrB26t!)AJRBEHkon zRljMvUfDoW<;0T)G_9aRg2RSY-C!Q{>X}38hzf@up#|Gqu8AQk{uN`&kUoOpz#c?y zKq7SRQ@ofJW5*$=%ghb-t=9`QI=^$J!)FT95hAG<2tFWtv9#>u>k2uX?gqguiCVue ziOPEZx)dJ;PiYIXCi;DkdGc`~WUDfL%Z~iLUS;-*rpFFmk9cMn)DK)FX645(jEWb; z1-pu{b_|CmAiDWhj2HUa3{XCv%S`&Odr@)%2e(F1QZGL6ylN}-c73vKEdYj}u_W$9;J>d{TWM+q5(qfN%1sJa!F`Q<2Z7huaf#XG=6pWvs@_|U%0+%v7_O6Ov zfAE2n0CT(+$Lo(Ybavq0h00sctBW{{X)!I(2 zmB~b-S8Ta@zAkWBD%q?b1h|hAqoH}Alg{~F1KgMFrr5$8M&o|ADPX%rR^02I`5KW< zW+}50T_7ozVk9mY1Rbl>a{aMjTYjN0?>kE{csTbE76xKc)tb5Xk{l}aXqBYiY3b+9 zSUwHZD=n|G7X%`gSZ8}9Em}W3hpTQIQ;w+l2N^aqnc&5|%LNt^FOgjsjlaak+(Kz5 z938dy5THFo;2GQ1k1gS~HuLMrG3Z}4iF($O3}C>rY$-nS;~+j;|K)gU3B)wIgqyq#T6_HUQvW=6acZ)lm%k3`LZpqX5FnXDEpx}X?V@4 zUaAzoK5^TA8-((q&nv+Be=s)#+Ikw^jg(c5F~+&}JlG=R&G?!@#*VNNXhZTUomjTC zPXh#C776lYJVOeyDGXk-Imgu&<)j(SSasR+b`-Y%ss%hjLz`;^U7~j<5-i=yecU_^ zz&2t-2z3vk$xS`wy|H607AsR9u!*CDLbm0b=EFC}=0hS8m8h|~2$dy=3;UduF#ZH` z7Dh&G(qi8czwiKw!;dRW^q}PcBfAs(9^$c2ZWaHyF1OETmdhPuJHvj{SLagYcVji} zh6N$%$k)CKpt0h2w~1JAY4gBAcamU=!qF5K{+dgJ83dx&UNUg(Q$Aue-XY{N9@WCjqKAg5vt zxPxsywOTH&V2?erVypHk9O@;JA(?XVT zGZ(|#VAEr@IOTv)r2t)>7@gN)cJdw3Oe5&xxzo`BE`h3j53T5eWuihIQ8hlqH_du< zJ+}|t@Ok6GXEYg{yuB5Z20_phTRm6 zDT@C7wSV`<7HdmTwW+NAED9e z&v(HINx2nlyNLV1pP9+aDs#-g<$@=3i-Bu63$~9(wVna? zl$?JbCnSaJ=>X0mnJfL?!k^Qtpii_#kG*uVZf6fswesb&cKt4b8Kg|g`RpkFF)f7$ z77AMd8 zI9YA*kaHZkqvX6y{6=+(nLJ|?lxoamO8ZU$oKlufk5P&SQ7AC^maEb!EKgswL^=Vb zq8G~!#r!T#inoX0VSq!?%qh6den0=M_7PN&O6S$FGt{c|Kw)C#9CcC zm8x&7FgH;kZ$(eiNaE_VKWf4sCkhGQl2I!?E>$_w%PQ{RVmMQntQUNHwx?~X_#Ay= zpo2@&BvULTmiKcY@Ykw+drZx=AEB^~+q)&;3rrrA;D(zxH&;uWzrsmnTKcV#ZujA5 ziS$?uF6A?#DU~Uv*oVi*F{kwtuD6Q?b;%0_|tIaEqG46drk!pdDO`nQ66GGc2B`PQ|eR+O)8|qJ< zpErX7ZVn=GMYPYG#g&gGs%*^;h&VJ3h}u_?@8oWJ8gfeAv1p5~zZ9SBY|pZlx;JXx zpPp|&^)}KLd4?l9%HMozwhlBXn6I^poyH2;`?Fova-puDhU0EN)_*?l;vY&{;ZT$? zA~+H5V$nZ48-=HLg$>%Ci-)71)qUGb+~;z9f; z_89~Zawe8%x{lNs83_IO=&z5qf6E3gPB<#Ux&G6U2$jL8Z(!1M9~=>q9yn#tJUkqu zH`~G&q}&Z3M!IgN6F7T}_iKfV=#bmRLs`oe2f&Fz8`0IZ!B7*=7B=dHG{J03b#H7) z4oN;M=ZY>qEoC19e@YS7@RImTYNm|&wm21m3e(P~(l10Xmf>1QLCW6WVu>_YW6+6-N| zcb!ffxL}nvEVKY0WhaeKO(enEaEq&?vR{U)PRW*&Q@YSXa}L4I5CW|y(Yr|S?yKGa zf`Y*m8#0|he$eyp1IJl#*lY>O=iO&(P zpvj}`AG4Gwtxg(t+@(cy*!np+e8)RNWl0@9|(>YeekosfPKzSEv$HhiKp83l0BP<8Ztuv(Fdn0ym=#^vHL_e}A{AT=fOkV#V8! z|6{`Cij}ft_1P)%mnI|S29lzz)+LQ%LkNX9qlR5;xpIs|khPb_fnJeazIOw%Y8U-q z$iSy!A-K(BHFWK*;no-)uRg|SR7m&7?ys<5OkB`PR-lhu%22J?_(h1IJD3u^=(_k~ z_C=a*e!=5VVHiQj>q)#HC|A@nzxm>m?#! z7Mz+1{kXU9AGJOpnQc3xat)CZe_?NPdEw@N?j`o^RZ8F%TjKjyRL*^f#Ho%|Y`=A}+u)S3WqA;jzpZVm(Us}fcGTGuOb$~uYwZ_=n`vl7Jr z0%fohw^B_|1&iZ6MF$>mj&_o}>zIBzOoOQ2Kxl*ai)8b8w{^ zOXq-$QJ@rrOW8)U1L|m3de_}vZmoAEHd~{7MrQt{AMjw}CU4dPg!ZQ+@3D0J^&y59 z+QKk?z~w8k_-6Sy0Iu(MZuLFrdLE>Cas8<(Bn@$uIY*&lX}C_`Z6vm_%4@T97`g8b zi@@tlT;#odPY3I5aDPsIEe7&5BZic`URsWZt|$) zr~WoFR;O?S$@f|D;uUb6D0pyNo##q&Zf;yOh{)=pV~yX5PA<6f2;+aL=6uC-DGVsl z(lvYx;y1?JCEBW^Wu|0BPT=%!=)~sCYQEpHyM9AY=;6i#X#;vL<=#yB&Y|B=t*W?Q z@s*u9H}* z`D)`r7%+PT`BH3*Am|c7UjF5v&ctER!lpDyTQ6gF!#u|kx1bxRukv9H`1pC}kbeo6 zgh*JE@(qI1K5W_^(r(+!_41Bof_i$nL9k`0)BtkW+rCvUg9*a}#xfljaXVeI^4uK* zHQ)9wr1ug55~`f84TBJBBwuq`eUb%8bf)F6%PRd5nJdia*}R;qlSv|WbjE?6aZ?T! zRS}G;x&*hKl@Ca_e;*)}*daI$+@F=qkpQ2;OYebtUbKN0+8{I_G)EpXE(QtNL-zNE zWt`Gxibt`)0w6})cDQ_3=BQ=^D1R$|*Z0Msy;R%8r9iD1q#VOqFDxGOxC->gamFFR zg|8BEyLybve(QQJ{!v+$J9u|t9m!J0?b>i?(+25Ms2&`KKq)q=^M@fh|Kc|%--eHh zs4jFKs88qJ8@CN1=y@jFyu6;Zb23C%DTCZ6_@1j8j}KJvyV3Q$omoq3Ve#+i735SP z7ans6f$~uDo1cR6e$5pL-DPS25fYh(Ky@`3GBN3LGV<&3OQa~{D5L|nK_d5hE5j?r zF;LpF&q51gWQIJh3ccNk-s2ZQxDDO%hEDcLdBzkdpG1pj!@v*DASeP|6N+nN1djFm z^B8LOb_Tjtky<#%q-u3=R%`zo|cg{Zb?ZL+_Kf_0Rh(aA; zh-Y|vJvy-m>x>m?&bb%P%Na>_!BAI9y&vqI#XqyRkOw-2TjlC_51+Dkfb@NOeunB( z?c5$jK|4DOG5{F7xk2j0Jm{Tu|_NV~OE8!{}HFwvfs3%zif9$;1wc(8u|G3_)A8 zIyEGkp3D0>1rD50Q8A5jf2%hVZG@GvckLzLNwcrye|ICD{2vJT^)oSUlv(;Pj1h+k(Kj_if z{or4*r6R@N*=%v^CxM<5^}8r-9Vxf}xM8RNbi}!C>2pK(P|~j+AIyH85Fw~0C}6&Y zB;_YbPMex117>wov!Q+DblK^Br?3sOk3sH@Q`Dk5XL*N0y;kaDk0Ur=Zdq_e2W## zYkwzhdd5f}e^K4L=J$7{%(!|uKa@M<%xiQ&Q)$hepGDS%0_^+*tZdckPr>&7X(7c; z%yR4Ol!K&tQDAEkf-N(p=8(~v^`LgNAl84TcR#6{m=#n;$lsDL5}(#Rqf>xZ5+=#z zbdYqml6+uumN~Kue4kTt-zBckDrB2%v^{}Cb5G$(eAxKeYK^|bVAbwhSHjQ`A~POX zB_#MDv*P&c0jXG4JDrCMf5uZ=iFUmire_zMaQG*zX}|K(hQA3;_;%lY4yUg#9(wQK zZko29|6jOBz~JIqop`gdaxz3Mg@W^yJuWM(y@Cj6WavXQ@|6qTHE2MVvWS3{ znd&DEivM?kN9*DQ`gb)FrRIq}rx z&>FXf|7%0s&0_^#d&w*n!I8)**gG++fJxrEYggKsBR0xjG5MKG>R1F5d4^>ZqMT~=)FRi5tn#IO4r9_SUW)Sx&gi|KD`W?=(5_F1f)r39~PrZqo$RbP_^Ip**=}o_FTH-w*H1`{~R%v(Gwv?X&jY>;GFj%1~eHG7~Qo2n4#U z{TTWb1fmZFfoNaQ(ovsi*r|k5FD!;nOf=8W&sSGh(=#(vLq-j7PF>!6Enu-6^ z&Md}#zx9gYpUHo=!Fa`RH?wHknEAq4pR-th%iO->`|-|rnqb@#IGv^7ICH7SajA20#S`7)!}h|kioB$X6hR^iXx<8#OKGubzxeTEmw8+ z?69WKi5?BtGaEqwbG~22G85`cuwQ+^xf19eP~dHbyy?CD0v!LEV)tX9-{EGNP6VT;v{xe!`H<*yIK2H8sVV0@hIr@Erfs&tN+ ziREuK7NvUQC6gr65Mw(XubWK=S_uEoXUL);EFAfN2jKtn#^wKM_B|aeTta_ERh1J7 zgGK(LqX%6X`pxL{Y5iE8aX~Q0EVo6PElMv6lr_A5qa;TD#L3v0v%yO-UkbVxex>co z(9gCT%r`(l8IPX`ry^+or^89^kmvi6p7Ea!Rb;gib=Wf5p3m{O8 zb9X&=(AbW@1k7!zTIi$gJ0+lihs&`e&3EQ1a34=2b5b&m_f#PUcFj+Q4U{q;>WtM- z@55wdIldWRyYtM*{rtJ(WTMisMVq-<^QrybedTV_jfwJ8*K3f&)S0VL1&GzYfB>yy=&sX zyD2cJ!h-`a)RwhgX}%eC?)IaeIO#VDOO=~L3?)RHcF%Lbt<3RPB)16m0e%xO3l3PV zmj^IF<7*>h7F3rY<$NNO)9Bo?{SpRCp8r55)Wl()@A)phJ{+p1K2Cqt1V*Zn5c3m& zR|ALCH}Ey8jSF-Bs0>zLn<1I)rcgvpA5f~~(t_hfA$2ALx*~@&%yhTx=V#YHl@a3q z%mxT?J@4JN50IB?Lm;x6Xz$Ggbamz*$>bcV!(JL%E#L>fQD4}}bu9dZi#H}dc7_q} zQWgSgFG7k#%T{*7l@|5C7bul42)b&+(_gUxtcFr-_31%Ib+&JRvHtdOLaQDUFh znaRN$1K*S;%jAV299&Cu!3;PAZyN&VzEyslGRnxcBKwXS`5e0Wmr&XfOpCHZh@k2- zpr3mW=kRrA>Bn*X>~2ZVRe+!MGxQqBQx4ZC> z!t!&gFPN8W_YaC;V${fgL@^-*4h52L1`wE@I&aE$HAFPG16NKTC}Z|n@cYI8^vF-3 zTkc+j5_;P1{I!BCi*;YU+tGhmPX=9Ww}PNdkL#CAXNT?k;XWmX#3z9&`M6Y*P<7&y zZMN6c*)@|xqq{qSRV6;ze^HOCkHX+$W45~)-;bjm-%nzP-NMJKh)*nkH5x;L@4=q9 zzk!XC_w^s)*-0}5@&G*~SzHDbauQ6?JNP?`*rBsi0KLW0P>^TsG;L>yZBWRKwr4EQ z@z0n*SxuX6Ss1#W_H6s)P7R$G25{Yc@YAVh+H^@ZrQ9n&TdWP=sZ6OtBD|tRUMoB> z>9D~i_sBo?RLc5n#OmJFHZp}C0=({H&_idB_4EH-{Z6kntuz923cIc(V~~HM)^If} zT}Pov>Oq!U77~oR6E4-8&&g@_kO5*6i-;3nRenW!#sYdS`rww2TEGuaK!VZG%Bk8a z?gOHP0T7Y$yAiuO6OmBL4O-zg@sow;ajK4~!V?J<*iLIrXS#F|DdKaPgWc7lra063D;ppAF zL~f&|z!74tjdoT)S7xlY1u{zy!Fydi|dRDVq8i zk=f`M2oXl%>-SsRcgKV^Mw~Zdk!RENY$~YU{OilGS32#tQ&w@GUry2)>QMjD^wkhO z^bZ535+%1F7vUx}Isbf;wAsOkf<_Vp9!`)8{qCL9wH;CS?JevJ23*qk&-YwLe45td%t|Bta4_JyPI+QcJ9qeY`dj1HdHRy*ruL0sS^)ur@~w$rf|F=e%T<(z?BhTDcshmCKoykY~0=5xjRdgt}{fSp^wBf-1>vT;qP_OFkLJR(Bh zMQrj(f8i&9)Jh8FN?}DN-V+7|@TZRCcl7 zBYiEzB++>(l{bK%?=7fQ&$}o2aR=WSq2RIa1#)`I>Q0|IK?CJ`gzpOcV#&}KrmoFJ z_{tjsCA)2ifpQ{I4|aC?ET|CRA|MpmjNXNFQv-=T_9C+&@1nhCWU7sT@B71Vf1TzC zf5_f06B)K=E)5i+P;o{dKbs3bz~Xho@Ao(K%6Ru4%E`(JDBqB2fBQ(@C^;3Ip+8o? zVtkz3O`O>e3MrQ+!F(8~9i-7)9;q)jsFUqL2R+T&i9Nm)S@oUEKUDE#)bGofi2de- zB)nw#1?t9d?c4{A)$vAWxSO)>NFQW#UW*F|j5spWgqQC{zDM>?T(va1b~3r)Yhy*E z=MhN0%_elb+$k~_h!%4dLw$97@4f~;tm6V)pA6;|9r4JV+--forSRo6!A$E5MbQa@wT`pWDmHdXrqZ!1)w~yd!6?+Gs=hcA$e@C=b64sn`Ld8ZN3adl6$0u|Z*HSJ` zo#hc_v3O0@O6a+ciCZ&W&@8dH2iFo!s#R_78_Z*IZT5>SlWV3`anD56Q(|~g4F6?w ztC=vVh^xP$Srhn008Ai3r!RC^K!?@! z;f6q3)W+YrX0nxW92YhWA>j;4p4Ro%=9Ri2MA#C$K$ zahol+$pdFdZju7DIbZ9)XeQkr5&v3LHUAIPWYU~6>9E2*f7@@lT4|>TG&I5dNoD1= z)?){gmmdQ|yE)1;AzPH|yyc%7@g%2YaT>0but=V%2p$C+6}9ycgXx&Tn4SpAAW0pz zNpeh3?yY8OY^lxN(}1SBKXTGUxz!qczOb^9I?|YH--fLm>bvCXaH_*SGomE|8^x7;t1FNdT4czpmqZ9)c2xO)5fZ2RP-EnVh_ zJ_Q9*Uk4az?4EyB8TO()fDZityk@qgS6=Mdi77EWm|+Ax7){%Wa^B!zkyMJsFK$#A zd=9-%TSyD~M+e={Qii}RRQ0T29UJ$&8GJ9E=v@GT=To+}34aH7+!B@ynBxKg;Wp85 z70~nrLu;+&tu0yDjj>m#qX^{wZF*4G1*fphvJA{Z$!F8KHf$j(T<<{%IKQmcfO!bd zx+S;qNDd~}{$(`Sf%k;IHkDzTA~_B$+!_ZUzi)v&{P^@k5Z`u}kFUA&K?J}0!fv5G zXy1FWsEsX|;N3;&LpVV7Wwx7KBwk{A&KaQbu$>k;7zu2p`zaR&-+B8llCzrqXvJJ$ zU%~W5GM^48DF})WyI$U4@WJ6}R=nK@d0rz`=uiaa*GW>biJETQs)j2i5H?rZ=BrpHf>NdH;iafv2TghI4w?-j(E(k7#PujO=xa>juq^y7#P)2{ND5st?mRCI1JSuk z!eV{}>AoIAs+gz!sR1ONB?Hjlo(FC!?MHslIf;J5BgPVcn1RXU9ond7hScc(+E_z(6VpqRz?P4EqUnHZ znsxgYb%%bvk@}TI_h$nh<&BJNK09>oaEmcL6jhAHa0KdIcq$i+;=4U)&4jA6Fg)KH z=OF*fTDmSHuv8sDp1DIqU?*PR3|@tg+sckLFQNweu@0A-QsAfX-`G9j7O!(&6rWIt zttjf;vzM?}hD&YYv*Do1^U-qWWpBqLbtt|8?KspjpN;7`0`H+6-=VpVm#Z6=sXHjm z|Io57pAEcw&p+UJg0Pn7iL@&GmD>#)K-~1Pk@})6p2P-l=p@{BIfeNmI=88XIT=(;30}jS0(@*FarWtRdS?v6R1v4Q9 zV}P_bNQoYFsCQ;pgCuLSMDu+XN6)-gt84-K?GxnZUy7c@y!&8$5#(Ar-K*hG$_P#m zB}ayu$JL7)|Ih|NJ8Pfoz_s#oj>rfvG4#x;4Ca21)>sf(`(m4yA)2JzlijbXv-+j6 zM7%T`lS>yul>xllyXWEgjg-FbZbvZiS!43GsK_oiq@NKIG6wKI*MNMI^AL+gNQmg0 zUt75wKmN`3CSvf+|6c=UebCvR6#L!Ui7INE`-(GMIk8yr1=hrxNCbIZ96*cWDgoEz zP(9~u?{0gABzt}!CSc$(bB)bOz-PMOx3;xqa31MMvS;5q`reV}Y9iukkH%P%*R#+m z!lIAWF<6)^g8JpvGd`)6@U-i-0@yTmRf4f=hmx+h*cr^W@6iu8iCtB8p-X2W-)TRiNLUwK}KK0Jo z+qIiN7Li+Pof;tp=Ogb;%$azL-oY3kQ&}@E&ZCyZ-=dT>gw9C?-jl|hsr8jLNFiL% zgP+8=BgodJykatjPn}pU581>=eB0*VP!ZTBcDZYy$c+G@wNXk<^F%Lr2mba#=EEznT0Eu*qabb zNc|!YHvh2!aEz=)VI94un#5lVq99b!@3_Q=D#uj+Adpy({9aH%c76~$zw=job`%HT zBjQo5F97t?^%u)UiP@=n=KLJYoJ9-t^wC#Zu|Ynz6=;8DT&VUAgsO>{t@M~=;8-nX z$=uL+w%37C{tW_vSl7PX8v+P+bjC~#d<$cBenL7TL>tzBLER(c$493YJB|qCH~SFq)A1YoZgf&2$hueQ-blc zhN*phqD?(lK%#-Fv~0qFxEvFrr3B6@>3(lB<+?$tJh;tKVbo%|@2CE}V3#q`Ji_K? zz?HP9B=bx*o=XCXM1LWe|HWt}y{V>dgoqi7OSs6U=nK#30V?Z=>)>~y?x#Tb}`f4I~#130(eCk5s6{AA)L~#FF?th*7 z2KT?1^;YM5!_zA#?hb@(9cjsgqLSd2BCM9Md-suZT1~(YWO`M(=|o%-@x_&<@V`so zw1*Jco)gW7z@vNi=Z+=+wSaPp9{_7686oMNPj<{g9p2npVhd_`45|K7dcNIB_3ACe z<2PK@wmW7xp`AsL1Ab5yhw&+^lYqM9wi=>by763366DK8rx`&P-}%~%){g9;N|O;KZorbl5-068s`Be< zB!<9?ntKJSWZI$3tlf9J16W6#Eec?4V|Z-WI~<*0X}6w5770g2UX${&?YK)`=h+O8 zd^ALS^3cJ?4@Ev628d z({=H^K4qYoq0h(+m5TriEZLqACoV9=BDC{YdH$4;`YLWes77vB9NLJ;YRDDe5%e~N zksBMo!tELJ#0EScA_DP|=Vlj_mb>{Wm{Y z@$PJ;>}-;w&GKdI1dj9zP??bZmUI-xh?#9jqXrJGc_JX--nC?~>`mL~6b_0TzW}H} zKCwSk^O^d#N7rTzf|$6v0j0^BDoy&V)A9nANW6?dSs5~iCOu?npucb$UUH68R6CFa z4~bPY9srG$Ho4J-PS?vo_zv8#2K?n2WxHLz7rVhRI6YN(heNKY?d4ziKP4fp1>7+H zs_UUloUR6!ol)0{kWUvDXJEhVI@ph@|NxiUH=1G6@*caZL;SJpTSDYWuhcFs=5*x{%Aier2e{D5l6Nz+`w(kWp4 z-(zs&%|hi1T7-6N*-}qsPBHo&Ecqqq%>Yn)*11K01AGI@>{^qed`7&PugqXd$S!?b zayvh|;O!5jvLC87tL}i>sxi_x{2D{=T(E;eMU%p{!rB*L2DtwNcT|YYFu0tf8Ct_$ zGbqtJhF?^80Hp(>mE2MKy~C}+|9;`gG0KVHe)V&dU>^o}O%b>6oobkV4L+$nfEuJ< zWV=*KJ{T(@;;v6cQn-NkhLoR#Lm75;s1G}He~;+1oS@<~@LR4akjLUknQd0z7@Byd z`BXr_a{gcKC^hlHpa`y=i7ezi(TQ+y$;SAAh0W-`_&2Bzjz?f~?q9NxT3i5=HEt2= zdG)voOsu%yO1cb#5qW&ctwW3Z<1}la`Y?I84lKRu*!6x?E~clnRpp;y z;&Yw$6noL6C@Glvm4%;7t6#STjc88z6d7zUSqy~g@a-GjOYP7*`e1$8f3mg9{eA1P z1^kX1ALvCcy!(bLpYj6{>NflxP*Y^hok3kf^#YDzz-A>bl?aHtdcz9>P(CeZKpi*T zl$?jEn>E}mAPDQcC`$riDyhYsoS-P8#ME&jqeLip=aA2SW;We`7IXVP&ctBNMHcgr_(_E+KiE@7gXKs3#R zuDfrzz@TQR$_FIm~S_=+otoXL0u@^E^ zCfA{*m>})`#*T41k`aVkpwiH@yQDABtCrAYN5O0E&1IQ-wyoTzX(z2B5y{uX!20=~ zDMsb%BGYZ~i%IGxG$F=s^c$W4*VwYP$Ji|6ZOkV-wyX6EH%E6)?g8l{ ziSve+Bt;$TO)gM#cawX7#06{u8!#M!L8QR)#5{IZ_tk3HPIKLaf5&v}Q>kUka@Cg( ztxEx7W~@$XTnM^Wo`Lfn}NJ>ZlPx0kOWE`tz{B z#bBo+5O0s= zN#ju*k^@}r>eEA)YE^$&Y1)hWO&>P8UHRR=AlLzkwCg$Da+7mXM_aYjVx`ybqpPv2y5_A1ik;oq!a!5* z)Hy!uCp#Rqs#0n~J@s41a1+-WBxi4Hfh>RM{=Z%qd%6*g`>73iz@K8hmBr$WMBi|% zZIXjrE;7*;|2M1>n13pY&YDW>y;}bRne(T(r2P;3xU`_COAfukpYLK&mZsZS!oi`g zl$z!Y-e!A^BXv zAO<)L#QiroZk2OXOSH!PO37_1^Zv#kFOh<@g?zs9uOO9#j_G1AUJlfT&eiOg%{aH3 zaD_CwuK(B*rrNeTj8Y>BAUKjc`5$}kiKVX|R`NoGvkRSAjZ6#sn!3?Lc_stxLzaU} z+3d6)6GJOa!EKk!uaph}Wf-qy4Zb|ikjBH_6b$-tH0_XtGpYwhFb(G?J3S$sh}=T1 zM!(DM@*>3)ZaeRmWIv@m7Hwnmu>d-R>33`M6UQ9aXnsC-{QO)I)e#*H8oKfp);d+a*5gjX+WrN*w-g!qP1iHz>LEbeNfuS*fG;w2C0m zVVo<6O62x$F|`$O5lTSssa@DV=G6FvUeHjL@)OeGMR8|cPLIbyISwo2|tpR`mkKa{y!qa-b$Twoqu*XCSAgDgF-*K_Z~Q=z;&L5n$Qrleu3j?elnLZfL|)WxusGudHY;+ zZ|DjR|7s{*KMGJi!V97562nYrAJjkLJc6y52n;{#)&e`-bZx5v#H?pofF>2I=+y~M zT5+1u^b1K0ZPt@?pY1(#%y}RQ4AowJ$1s}l1bY{|Ge!_~a!`@Q2ivVQg6IS><^k&N z7q0-^MPd(;TcbF9EvV&9#mllh@RDvC3X??e48vvy+`F@GeFN2AbDwbZw{~_2INBt# z9D=b{tt+Af%972P1!9iYyUEmgdMGJy7t<7U@=goODCC*|b5K$FX(~~OL0zG|BH&X` zPZq9aNQNQV4y$ejL{6$7>~&xnu#9z))T$RcW>A6=p5BP#;kB?byHe9#IGo&u)=*Ma zR_`6*aM{R6$-pwO-P;h@YjaFaZ2WXwsl08;Upusa!1DYyTaxawMh%V>kTVgHdI)Ry z4|LbZ+eyEhEubv)4vavh`5<4bws@#Ep=5aMo2P%FrVo`>=-m2zrROD6jJxx)1%(oIhzdB1mLH< zW%oAw%HD?=B3=VD@Ipt8V!h~&pK*%7h0?hjxeJf zi7cK{7y}HVwcMO_uHs+Gpx_QtKrifVp!tNf@DOv8>B$B)t&-Z53E5OkYiaIsn&CHXE8^`epmNBBH$HqDu5;bH7!{*c84zH zbO%295kATA@n)A-q~&t1({x(vCLme87bfXq|2~<#Iw;c{#-6C9P?V;QKAhX5Vw%Kd zj?c?UM|cDbcHoGMk9_K@pC@X`HO1Pb{OvgCK0sY>6>MEmDV&2LNSprA;AG?CS1Tpi zImJ_=;(1MTlv!dr==|jmYMJ>XZ1BulJ`B^z+VGv0Up#GJlYEn*b&gVcIFL#E+!KYh z=so#H1IZ9b4+?tXncc7R*MJjIgQPBVOT>wB~-$`$L9s1rq(x z66||x;9ufozFwy3+;7GPk1ljZ3R3?Q;Z4Hd?U$n49e-GLXFF}Y@;0`(1Y@=Q2e(fd zCciP3N-&a+PBn5ON>hOMCsx68=bQM|)!1U#O3=xNc4F>Z(4CYs!UFJn)iM~BbJ{~) zU67Rbtu#lQQmn)_cNHMtMH8-$v$&vBg2q%H~8%m}>PS@FrZ&H!YcDk6M9At{saBll_mn3ql(90X%c01*& z+LazO^`Gf@Rv+`(l`GIn5B+7JRKV>5&Ic5I2d62s^p19*#)@_z%nxd%_)%s_@e(zg zDmXNfZs}hSW5g3mU)&n(yJGV$$__OK!#M(*Q?u?KfURJgy8Bw3H)zL5{?O^c4m=I@V?GH zCB?MfSnj(}deD*XBrxd@x!1HJI3gYSn9lHzsSf_+=Q1qx<~4v$sUQ%zrJ+pw*-IfJ z8CSna2a*ISIMm~Kb~-n&E1xk??$8te43gSw+{#v1RdrsV+-s3~x6&V66|qgsYGAsd z`v$(~lF=ANE#Dulk?-Vi25GK{x$#XcH0kA=l+o55EoPgDQ88KJ_wWVtOIOXtV9%oU^7CY(^18-z zoh_)N*W`8loD;-!i}KiAomy#kSRP>qctxfzRhW44)TbBy`_x}M78yJbkgLhdgb#ZU zA*cUR2%gTUIa2!pO>;5aJZK&`)JrJ>&ul&Ds_6W+{}+2ui5ij_O7Z2^v)6J=x-;=DZ^yaVywYM zkXPSu|6#nhC}P3<-PbeOllnxlY)cA`)m&=TtEnD{S!W5-%oBCnJF)B8Xu^A{iQUTb z_%Eio^h0SArM;*K|D|Zs`UG`UXnWO4Yc3zXU<3(sVHw##c6BPj7c0Onklj9XU#NN^ z%TNK!P>wrOGc0u_j~3wIV<^{E-h)u(jG(+0 z0hiTUXKQ^VvVkP9u` zTZTGtd=k0K+;<1J%^u61(aqSObHvV%>{N?OX>b%%CBFEr zs8W?|4f}V9c(rQtu=uEMuIg#re}d<}QjkmpGAV2M0)JXWl3aHEpl`dBK5bw_n& zzkbCu5prj9k=3-o7`_AMqgWSVAa^|&*MSxpnp-EYW-I(b_mz>?y^o^`{7*l~7o0YX z5S6RoR316nl5&{)W1Lzhw%2kJdiL>Iw%I*)>myGAC3W$wLonZ?X1N}vJxIqAnVQ`v zWpktoDPCZoim-Xfx>!gDTzL9Q%jpQsWjZ@Cu6w$R<{D|jDDm3L0S<@Z%3+y?9}?*! zY;ugh{8fdOJ&E4FxRr7zsGf>Y9Stof^Y|8~XseLuI67Cx>^J`)?TcGbzBikc6N zv%RTcn7-x+sIwfd7@tKq&d%-xR;&SI96D>&oVB+Bd82y^vY+Xn5^oA9Lgf}X2GgIJ zbdl8lxAv^|fLLZ%fgrDwU^A5CMe$$Wok9{uP`3ZhXR^I+?mcH@PMWUbMm{j19w!B9 MYwAPG)a^q54-J0*c>n+a literal 27038 zcmc$FRajJE*XRfcf;0$HLx)IrZKS(FxAxKFHNDPgn(#(J; zFr$RP8Ncs8x98?O=Q%gC_v(1pTKnBG2?l!VBt-N?5D0`sQ$xiF0>J|z5FCd)xL6F~ z6gMXpATrP~QQg_uxw*L!5fQ=S8yg#KZEgSj`7=5?IzB%B^XE?&7nicKva74BZ{NPP zw6r)mIVmeEgCO|s-Mi19KWk`cNJvO%Yinm@WQdB2A`l2s2xMqy2M&iXE-peK*2~Mw z@SPnb61latwX-v{GZYDdh+1PUiAG|%K79CadV1Q~*(ob4I}|AzDGGV?=#ja(xoG6j z)2B}p6BB!Td#&L+Gcz*-0|V97)sg>HTf?m(v9YnQUcHKlhK)}t-N}CI0<>uy}Wtp@z8OY8M96q$;(sl!Z$Ut1$ ztVJPkYf%{pByHse9%;2RIOqa_+}yN@Vokw^hTzsiLpzc1e=?%Bui9>IBCWBxa={Wr zMIoZ1wl^zjSgy!oxJ=rLbtL?z&1D5^LsWDK9%(Hq3NMWq#!5z7TSpFATfeln7Il$< zq_(cYce=!EY_MpocPlGxGA?bRk#LBN3^qqMD=QEgm)49YQ3C_(P07}gkxw#OA|v7X z_V#HmGVn-I85syx2Hx}5rEO&ho9xI)85x(j0EskgnE$N1xX8$0U5m4hYjcrl!$#hg zhIKGL-eF}0dnywnE{;9AgtW=Xq(x%YiAJVjJ%@;XYDBa{Ag=nFDvBmS%ZICd9#o3d zkv`v&mpr#B>oVdA2!Bja-if!QcvePPrB-Dh9sj%h4t^={)Nd;30Tiz6Do@a&{J;vqXs75%%mir!*_%7a|=BQD+ArVk`h8MGX`pHhWz&*-&=o$f2O1 zk@|GHB~S0IU*9&@?K^jnhOf~qCZ+1)Gf@WV(0L6qB~{Rb9k_Gve-q#x2R?GbNYe7* z30*yrC+c@JQstZf+~xB5X%B8DTJVnEpOfzmdfHkl4K_2A`-Q#6 zs!RK(jF$~_i2z+r%7Y9)mn@mH0{0n_hQq_;fus*aF`0TPednvCW#?zJKcO5~>C5nE;7rcU*!;CCs3 zG8=&6%inZIevx-cdB`RC5I$BueA#|Jw9t^C4hnH#UGEZ>EPa>{4eW6|5fyo_1HQHD z5kwjQ7Mf(SD&Sm4$cvwTk0pRjJ(}@1(<_;p2-N8$#A8jKq9GHuyvH;X^)d|_wtKfc z2$Q1Wk6GMEbP3NjQ3)JRd&iy}bbDzIr^dEo8rGa1lI4dVP~kDApn0~dgEP&O|5R`@Mdn%k z^}xqb0L2okeF7#&&xSrH-M&wWH2k4(|9T)W(zH}vcqYm_9Xg~z)~^auW6OyaX_$;= zvHpKec=p#JS7<#Nf=zgJIy5>7&7%gA3(UapBNf{6+3svf z$s?LQvszl4Cfe|bA9lp>sn8peEwoV>UcP$uKxHm}la&Q*i@$gL+L0oLjfj``I)74U zX3Z( zJE!N2+S0*7Y7k)-VBzg1P(A`l{qyS%3x4UaB~{ljUY^08LLp>R0X%H|^zycdV>WIx z9y!5`li;aCd;iOa|2c19BS>@}JR=SqPo`2}#JbQgl*TH4R7s)0hXrUloYILOc&opJ zI4XjCF7m`%!3!tm&lPpBG|D>zstW>?3UV5$6XS6k_eEi)kvA{VU&ll53+$PHvEhmg zN`vOV{xBe%ycWxzq=Vf~ zofO9M^K**$J-HqNRcB>TE>Gnce1ew7kPtvw^ksbIDF#OEE+9v5CI5z;UX+NpD9E%nRKESyxB6~Jc!va5u0 zR3co13>BVfAU2f2XU*fH@ewVd;TEr_Q z{ip1*V7nt@|4DQW=dCJjHlSg>D_)p`L?bmOR9+C|dH>M<4o4d7P5va9%<8TH@|oEG zR>_$mzSbSM^-r2%!q3#7ZmS^DArj4_k^08hn&z@#z;{gOr_zsY>kQ=5>h*WAzjfkI zt%A2CnQpG#OH3tJ{B2#DmsU_e0_}Dh3rS{roIfnUo?pr`53oK^1Zz$FJ9tW5&R#+M zi2MY!HOtfymdo@-8t&puo`w5Ovpz}t>a*@4ieIYzwh%VK69{h&tu(0Ye2|ff^&Z`= zU6bnZgz`NY@yKNChx76Wr^SdTQF1>ge}n!Dr(c7w7EUFKP=+!I$-H$xj zfoB$M9Xi>qu?Qlx>S5-fDbpU+1H?}mGUky%6)vHT*9FWB991H9fdU?t%inDg-_u~Q z#CofEz7J}6xy|F_M`ccWdd57-= z8&jfyXpxq0oc15JSt@$qz`_oma#Y`CIq%1A`GcAWNyj)dYgILAraCMJqZdEm6)n>7 z_p`}SnI`FID!-O_P1~!H@Z!m7_v&WG_U(-TjeoAlC-#KMwIBN_MJj5Khsv*^r@pkY z{|M#gJk&aN$-W)3N|@ zBuL}|F@gxm7fvB+eiAL`{UUTnW<-IG!i;#Q! z41^vO^4850lgfT58mQl=GrWW#rJrf&M;JeK@__B(sW4rkS7*QNrn7l8d_MqWq&I57 zUReMo1Zbqrb9I<*$YonyVtFdFyVhAO(w_e~N96DqzD0Z#+Tgl)dN~_7;Rg1zR$&Xn zbiBjd3*(EPg=d@U4cvU+Z`+^E>G>vY{3K&&={m^6L;gz>7Eq6$@Ff>q9w82v~AfNY?oL8k?yJw>!+5OVi zS=RNYV6wl0Z!w&CM9$Myayq9uLjRF5#GJC_C_;nm>eKW5q*k&&7%wTxp5y7d@4FZ9 zgX6LBe#y`<^apz|9F?3TKgf;*%o?Ej4^g%ygm%P5-58GnBp-lLB(qIpgYk7c1 ziuC(pgyjURItb`a@v<=$DhjE1XSP{A*qaXig_Az+f1qFYw|bP!ure11NaVKCn<>M0 z%WG%qbzhwgRXqcu%t+j{Ied7s>OTgil3hfFC#7NFbJ zVbJBp>gY%R)qTe6o@Io^=fa9Uq3yw`zKe#Lfz5(@KO&pzKlUd(1og+H{Vb}efPb7+ z!|%7QysW)9B>p1OdvDR2rp3V6<030p`xW%vWqMp%^Rta7F44bsF9g3&1n7{-c;`Yx zOUaAv2GEBPyV6hScTq9OzD4zBPBMZsyGvcj35Syq&^drEU84NN5?5Z>SELt?+XYuKR_eXiX4ZzD6Yr+^P?gdaz0~>jx16+$F@m zlkJAd5gmz3lG2cVXt346<;gRsM{{VGq=&-@!nq~+M@Sf*+{q5qgdgP|>1V35 zP$tpNRekj5phPO!VtR4*l+S#sOUL?m*Y?DQgYVsFtmnEHGnt|gVhf4l&tt}pkaE5c zw_HrKU~ZCsnhWpF%=+4k1C}v;X+&S{WD^z1Su4oq4izGBbK$eZ=9;Nx>b0&gx!=8V z`sU~}tA-B3el$x9R{*lf#U6^xLJd)p=`d_}$QqSOY$Mc>2`^+tg0ob>kLP7|9uxbP zso8sdgo&K;u9F7Gq=6SAMdJAI24nD?Sm&@6Ef>U8wrAQt6HHr|a5TlDlM9VrDCGyd z6vt&q+-&yAzaS~29I~K0I3{~pTLB*{lM<%p7X(Df`YJE&T-tJpGXzM@@ZH*bKirok zS{6&5p$dG>Jz|Ia)v#e<{*?vW!yYr)u$Q<`3h_<2l(rh|%M**B$16%?h%%YIZZzX` zE86_A6wM`HFzl?h%Z@t)AFdsm(aUG_S;%w~nP7LCU<%|TJA9aCqYSK z#lN$QPGBmpxUEy>;8yTb12LFVq3&F@LapdGnP{JY6D+)Gbx25ES%LpPI~TjWnYK0L zIYB}|o>{HcpzA%&!8X49+LTMqH_t=`TN63*n3z6)xzP7tcLi1Ko%!i8gFGnBTo?}X znF-`^srrIrr|-Sb`EceWoP^OP z{qUYNZmb%rtk) zVFy~qjA-utH$RY7f#yligq?lsdnVs^dkWE!7f;8+bl*QiAn6*)_h#Hys`rAN<}(YR zSNBi69KMcYBVQ%=IC-djo4@pV`QF6AN+@GgPM&D>{3(BJG@9Dp`MG}TQ&T?*VU%}ybIFI3vj%&q_@skIO$A3!=h7nmIp< z*lEsdg5gIYVQ5_??O(f~=^HrTv+`k?iPDcXxoJ>g7_kPM2jQ442TXF_-*O|xSb{f$ zc*PG)fy9cLIBaN)otokyo2pB=rpvas(eZVyry?~5j{t2>DUnBd&3A)6MFB(Gt}N^B zGbZK-gXk;=OW!xIOVPx1cXqbXVk`oyOGkbB^&8aR{k!c>Y&y(OTHaf{11k1T+>fK} zzvkPQYO`Fh&afxWOrBHt*lTPdr7bO}S{1TY?7BvEX0GCLhorw6{C)Xu-w-T0IkP+B z=+$8LjS@6+jvh&_{IXhoNh9>)5r5Bqo`1VT@4!Uvqa!LsEj=>9RG<2m`i>y2aO@#`u1sLOBy=#mhJA)hczOm%D zB+OYeLTt`!NwCmcn0%(v%O=6NjTO>=wkO*V`&Tzc4BEc$V$;!V4Y7Ml3ydD7V)Qax5 zSRjV4Kk<9NB`X_W_Me{Ghkl9mP=3lbt0y1uWm<>UoiXG+;y25=&k8w_wHc2m9x-IC zT?Gidt4mbjgR7}n0WA{c{xBcZNkUWQUf=YWc@pf`rG4EFT|LLSqY1nz&jx`BOG z$wW@bq#FR#=roX$vaN%7x475%L!j3OeaM%G=FV;NvnO_?XAe%>%=<2xO>Juz{zBTwmO#M(g((Zuzxw^|0&PBn4nbK=Ijz`gq)s=2I3ai~wI?aLnjWu-K3WcBCq zEQbaUSU&zT@8{bNekrGZp(t+}2lB3%Xn*lR(HSMx8Wyp9tCXS{eUcSFRos#Z#>T}- znh0?pd1DF~>!CB_zORH+jEOQSYdu=4hHuYke%5K9+svZ6JrA!_wo@`oZF75KePAZ^ z?c?=qv0`7$4@ubjhKi$zV0E573#39N%cfK{i+GD);@sA4_yhfx1TdT^Olb|XB0s)* zFv@5V^ecyZXABh7c8c^)e^@!$jYW z{HN-bh-KxJS2Y!iD8+zJkuEmcQJO`USxVe!8e;$#xW&K7MD=Xf%*DM1`f^SgCL&U= z(Bg2ups~93xpgs5&*GQ$rQx9SulMtQq6x_>eoe`%`%PR*MB_F@s*k|jLEP1*=U6a>WGt;PIbJyjzdF8SjR)kGd zkQ{t5myy&LGgk+VeJ{61#e_ZCyGWi#XB4c zXGTAsF*yUZSfx2tP)6))r;`fgvBh zPqMuZw0m--qW;m=1J~uy!qY1fqtqKWw)xx|r6ZotshnZdYxO}MYB)*b<$*e4QWkT5 zf0*XyPkWBvB(LNZw}Vg1&rz(0it}`@l*~V9-6?(2D&*n0DRxDUqmCm4%iD(z~R``T**VMKh~tpciapSW8`h%5b_ zv3-mnbC;?MwsETkf7gDTC~Gf<5(iu7y%03W*IRm>yBZZ$*BsV7V%@zS_Bu*k&Kk%` zmDwUmbX-Fzz6m{Y2)zl(GlPZT881;5)i-tY z2!W%g;9nY7*TT7G16bm5^w_%?N`cL`Ug7qpZb#E1D+3_-Hu;X&bHS}j%s%sSVhoGN z7@i5GW&p;`uS0ybM_P{dm0M(entOjb26~T0hVb2P&Mv#=gsHyQ7o}UOk8+=pV(TkH2fW+hS%sr~I}fCZL_>FgVJDfDKd1M*2J7`hZX>fob9y zorfOf8;(>?YxcJfUuABzH>oW|-~MKA%xcs!}J%X^AjWlyH043HtAWjBBy`5r3 z-x6_;=xXTHmTeo@xy{sCVI|tD-p3*5 z(S_MK76|6aomqPl((-58ql%YCU*w{hIqhl3Xg%8(!FI5IH>d%1cVR~QciRblBERAgbL=IQVVMhjTCU?`R?-ihtKSIUOzITkV_VVy)G*APi_wy*uQm66fdkBKj)-xr*`-C;6W9} z8)MxXL!IT`oj)2hB1XN_cpCDv^o>p6lcS*>DpHKOay^P(;1MJmPtWSp^{a@N>*xMy zdU;`!A@yOe=aj9TO=Y^?b;gxntSSW*@aDcL44LAtg!28$J)#Tt_Z|dL8>k0m;@PS1 zf9$4{+1?8XhkNBLSwHH6*N*Eb*I%C)-nQ5J-g4XAM5@Cq`MnwkK#P zHi(}dB4Fg*G62npSC_MLNnetiX|5-%{+kAl7?TkW%7;)iV62(&n!MH{9$r1xJl<{l zklg%d_A=-@4v9Odcr`Z}`8_GmmvmNLXBwk+fkp^u$9Hdaji%kpU_=z{W@RxYgN}il za{fuO6pe+B0a_U)tanUXRRXm=a2N6X%_Q(#iLXKp6Aht$IZKmODqfZJ$Bs=r4Q%uc zJ!@|&aEwbRt_9xomwq`Ji=WO8tc>+Cym+$C=rgwH<#Q;PeX+;Y*Y#Q;lng=w!VJ_hFNB zJY7F*R;M`4=`}5^B-CHi#=F)!f-oRjNqF8VPT${AYzsN{g6v*p2S~3ZTOC)-XR#)O z)f5Nwwh6WU__=`o>|HVJhp35DIb>M$^;Y8(y`yufl<*EarAdZ+yA}9NQvU4C_XFm% z^VEtO7fsE`CKO7Q6VrLt;Cw&T>S3S1o9MqA9TZ5FGv^uGl27lO_d_*$06g!sQ{V9< zSGsQIRs7Bif(_KuycYfA&L!A>NRa(8jwz+fncwcF|1_nw?x~8D5+JrW{1FCjaS;cP zsKO+I$SO`mNdpoo;U$fYaO0L+xU{NzE_s$uTX z{Oks5dJ*n}DUfKauptz0c+orXbW)UzuJgX$!DAMqbl5X#N&x^VV+tHS*(IbV@uGf? zZ@eP8&-pGcxPNGVVBU|n>RL6C(8&@3oq)C&6#?w0zFUXKDC}0D0@j^?`jWC!`8SFB zjv1MLyB;@tJ7rBl(nS|+0Jo2FsIvKcCxegEO(`Mm%K%Q}XoS$-W5wJ1JE#sh%$XH~ zt;-Rfk+Og^NgYG0x)78WHF$LZUwJ+?%w3zhd!HNgoggxx9(I9!Vn({>yM!0%g$3Ny zF~1(f6lAlJv@4|5RLC#u0imq7D_W=Cf7;(fRb@&TliA6Cac2_K)h6D)l^$(sn0iQ6 zhvm&N&R)qvrf=XQ z7L?;srjy0J`_u6{f-dNV`-VOkZz*m^$TNIPHDH77nMnfZ%u8MqMJb{GLOz3jb)hd4=p2@33~M?YR3@xlWo*SA)Jr<;vlohBDr2H` z^kt4QGO!=7t~r?Slyx+%0c(IMX=|Y5Zv7bG-W`IeaEoY^(Zpd7d@|omPkb?6KbJdi zm!Xnp_iCQ{nW$BBy7M?rI-jo4q|Bp_m84hPp$a zVV;pu{2BfLdlwaVJn6S+a^j|HPK_J6<5DvW{8d=wAtW+!F;FW9w@L2Jb(utu-jl>6 zKSX7fLR2yXs?>j1UlCsE#|7|Wf_^k@{mVw7CNHJM{jfWKMp;gSy!h4z3*}!Nnvngt z?NZ}f;tOXERpb<)v%qKZkMRI($VrS}(n59v2&!&b0e-yE{Xyb*0TuXiijQw+&gi1x=@Q`LVT&kh%n zB18Y+sR5 zS&Z(Ni$<&4`Gdp%vS0PA*%`@KruB2p$%|d$)i)wJBS3PcM{6xAz@5G;zc`<8L!g5Fqf zqo;}Ruc~Soh2}?U<}e#D*r3-jyr_GAp8cB^g|@;Ez${W)WURd|(yI88MR$i6;jmQ= zSQ#O4h^QuijqM(c_ZRc~-R^P4Fik@a|2y7n7S`g_!&myJ`f$MIv670_zPhuT+N5i}Tz(2b1rhtg`@m2$)%o)!>TP#mp;e)Fsq1?o z;Q5Q!e_nJW9SGhzJoNn*_|*`<`Y{@LJS=_I*sGPgc4ykyb92jvApdbm-2T$|_Mc1; zeVFqNcR$T<*`Xi4w_!j%%<<>T5jntY3vx4t2MXRq-KKr`M|JlZf9mC>1$?14c3%_M zUsF+ymt!j8E2|2KAo?2SKvJ>Fha@kjB9L8P67KIWtygJc$au~dA(mtc26;S)BE;& zRd7#cy1Dq=&Jqlf0Tj)cH)mm?Ot7odZ;Y5m4)az4^~X=Mh5FII#vlpQu5XQgvaq!C zjnNmF(U!QnHjL11RYBW}RI+KZH|m>JjGX>zFbVkl3w&z(4-TjfSnYsMqhU2M6;x*%r=2w;=-@hPf3t!rt&xv5MnQm*OE$hYxGWJK^dPK83fIM1Nrzi)q_O%CK2sFMk_yOgNMqVXiZ z@7y$gf16=CqrLapOWMVkX5L>)%xZD$x=`-P=>`)m`u*u5IkqO$_NGobPyH!CgL~(4 zf42G^6%aVAj7ch3eGIGX{SPr$rWJ^zT330{Tjy%?_l=*#X)OhCs){y93Um8>o%#*- zu^HB}uh{7&r3|ymQ=aTYe4g1VefunZKcqb#rtA5w(^Wqrc@l)KeG?T0z7`Ir*q%5^ zgo0d&q5y$O#lyR^&B_5NN~|mR5)v-i6RL>$xS(x+k5qlcwGI47iYQQ%ykER&f(KLp zU|UL8I!?puX}`w;?Z3aNg~R0525&FEH%jr5fKDq9Jt%_d?4~JC=0A^N=mfwL8NRqN z!RJZG!Vx$-Jx_bOu1e^>bdpFZhS_U&=!3LB8oJ4FWJ zBLF>9hUG6FyNB4(9;HOs*l%1zOI*Fcg4*UhKfZXZKXdE)2qw@=?&jp9H*+BmHSGGj zk1kn)>lbQF=-5G?#C?l^ zl8Rg`3pSDzYy(xcChzA_^0)J7wc(@pH$=jRuTr9Agp4>%mbDZ1RVug5Z!e|vr#R4d z3tZX|ElXPlmYP7cofG=E@9(Sdm(9J*)5=$;@v!s!C}_BnztJd+x~;6&GQb%-E&o?! zp3%`*jb$0Gi1r36h~swn1E*kF0$b#*ttA9;??q>fDLUrxfY_uNy}#CdeJ>)Zj!2N6 zkW6&x#Z+@)NGC+|$jd<*?Pm6uxeKRN?pi7Ub0~3(jY(C%8rQz+DHEuRbWj!om!0GkCeg^vM4N=L=t-Hi zP~pTwdCP~=VfGpaS7EXH_s$2o4)OhMN_lw(D3K5TboW+g#U#qH)R0ERFE?p|ybvOF z#!PI_Et=|+=}Vu^+uOvPn&!vFzP}&1S1T2a+3$;^FAr(Ri+;8~7DTmt)qy;GIaFMz& zV6i%RF*hPzbL%^_@0T{qi80df)96QMb-il#7YBu7<#G4;r36yLsGkp2>`K3-Qq;F4 z2TcB2i37t?i>*F6vKvK+{NMl8&~EP&H-NO*R}8`TP)>bu+j5osO2kjA1TN(Qdq;5N zpV09b*#+gTugivRvqf$}%!lmR4u4j@a0;EI=Tq{QEYwPMdE2&5nKssN7pTQ4G@<<% zx~+DbZD07YMlSK#;=fX=1IOj=%w|Tj6v5)9AAT%GXy_Yg#>4`5fv(n2@Jra)&^ps0 z2dV0<`;)*+B}|Ew(VbCp9NA(*e3C{3^7zfOYcjFcY|Fgt+U$^e$IN6p%3FfoXS|9O@yzOXMWGE%zMpYu0+Q)E!&l|I|b{Y>w0Muieu$yu2 zLadV39j^x~*B_kL>YW2-iM3OE=n~A6%9D@iM7KGIH&lF46vJ5d$Dqw!+gNwQH(VFXhSo+BO2K5{XXR_EPmEaA+683boYFZE;F6T@jO;TDFkgUMhy_OlcYxV~V?N`X--P(Y_N&0l? zmhPbCn~6qr{0M4+GM$?pB+Ka>9Sd%uqaR-76~Quv^BW&XCpf7q2bF>{jI?(}hxk;PhE^e8rM!Fj^d#Pi~#Hh;NW*rvIV{di!J5&%_Gf zCnk2Pn>VyEX(ejPgg(fap6|vIL(g^eZO6;54J>MyV)Rl6!aM2Gpd2dTb=mpw<1cdt zilqcBK;Bz|2BXjzJu+JBk+^LnAzhfBHKIPH;!@R9Jz^|mYdwWFhfe4hon4*Has{ay z^skwNl)(nFYMa5yW!rEQO}+QLt96X@zUTbS+^;1{XFWkg|5Fj1cZ=Z1cfGvMN5P^L|zYVtyPtYc>>cfn`g?$p*=lbqgL+wc8-LtjV$^0nd znWtQ@e76_&?&o4t;5+O7@vK(p!p^xu7>_xa#RiNpd)0IIcIbhS87j^J&X|9Z2*3ZT zq4*EMp7aC$523CAM$Wx0d z0tr}RcTBu>fTli9DS^gw9@3E2x9PB-Y`~{maw7yYr#7VoQqdNLXbvSXGAbzCCJlzC zLFUcV`a269N{hTj`ie8=p8AH_=DnVWqF{r~gh-3sgYta}g&^FUX|O;qmvGy)DzuX{cNr$LN<|4@gP zh}3Ssb6vLhEvdiRHs&%sM0aD_Ox>DZ@yI_cBeSoo`)yxBpeyDcHZ-T^v}v`qwLLl* zbX-ZBdYyUw`@^h-NZ;4T7RBRxETYYKQwZeGC!f1CQ6|x75*U%6HwQI|Vsd>VfsJ|| z3=j1H_DvE#+nJ;D#`c$Q5yOGGpunp-qg18hIVw_G&qiOx$~gNsej7*sc$LebPK29) z2GC=OGUSQX0`9Arn^#qQKxwX>Eax=+$f?rzV~uglsUjfM17h7p)C0@iqb*q9ddujs z)AJh``y&F!KP5}&thv*j=^+PRj6{~fsyrBMU2SE(g-Q*0F#Zm%sL@wmC%v8T@w{9` zNJ%~a;3oTKejL5CsO3;}d&KBvxp;as4b{q%B>CN?Zz$=%{wCgm!~|YXmkANd!!0{$ zO4Ge42UTL?Oq0&irnv>&8o=MT)Pk=J^ntqyg>EE#Vbl2D`hN!@PcJrY@74lG zV$&*`HVulG9Az-^sk;trX01jWg|l%e=}?U=#vpCo96A%S4p$}yfmu6AB_h?{>f!j( zzT!6KiH+?jzCf+%&*cT&*f;57MqPK5fF$HG(Zl;2nhcx!jM>c&ecp4K(qjd(DaxxI z%`^BlDO+l5IB!kq+P&|GWs_Z40_$LPG5@KWZGK0UW+fWF{|IwG31Vve+_I7kx6@;@ z#v=Bq-WRG2ur!Dw610B=*A)EZBRQnP0wf4Nd?WPJ)YTn@y@`C?j(V`~O+--H^rb(1 zzX^n;MlfF;Z&*UF8ZnV-5{2na`G0)2n{q50Q=b7{>Ywu_5y{8kBpnFw(pbK3@Oy0- z7wT@(2sPrl&;|~1KJ^nxn9@K5g#Mlw$$S5J@1hZ`WRyxRh+{xT7-t#K1X1B6a;YKr zbKzbvi`f$6UwGvroLtIh@`f3#g;gEsi`Qi>ws}1-F&QBjwDnjnt645v$sbnPad~R{ z(9@nGuRd#cN^GpFAd0CN`hf9`Z7g+S_+!K~5{}cDftFbx_ zrkC3)xk3RWiOX}_OQ!R}hE1b4BY;kBjknxOjQ26QAOAeD-f*=`77u-G@xpMD>ixgg$pzgK zB~k@zl_bUPwuC3cL7sLCiqA0`v%cI?>#@FHxvz?0RUykxBugK4;XzDSuTXvE?@lR* zz)t({T`i5K8Vfv#2djj_6PE>?CcNS+*EkU|D*pejYx<_D0*ck>v6~v*h&MQw524bh4>ln!gVsvPp^~4!we4yCz8ae=KZ2U*#4`UGh0O`|Fz)$yF~|2E9V!; zg$!>;roUX?@J()VHW*vs5nLvp{!i*P0qkHg0&2Z(%@r8WrR_8~r>xlLtXY|N#Ntj6 z&*^ni?cCHpdLTkj4$UGo^$oXh30Ghj3;HwF2I6fRZ0yLELO;+0@HtV&TAWWkeaqGr zv*SPT2F|AN4{GC;z>l8x+W*sNS>PR-dF@(*!8E2M{zoV6J7Nj z+x>wfV&9Tbwk~RF-@+J&Poux}_!}d-YGC-`Z;cR*)A*5dkyUZ9jsCyiOQV70)H1$z z1oukiSZmZ1X>Z+_+!u9)@9FMh97~jO9||+3U6)0eI3IO`BcyC-|2mBI08rPp>+MeZ ze7_pnL(o=hgqSMEox?xWDE?zCX&Uk>;4dxti*!q0Y~gGTCCOjCQA!CC8GMB8%FYnZ zmIN}_4p`o2M*ogOKVwyOb1CH{OjpJRj|cfkD`RRNWJ zMBVA8JV_!VH|X+@2*K&_(C)(@IewFY3<2hV;+%t{#q$SYcT5q>=@}=TG`N+|?e>hyE$k;iBp^fImMRhes|TjPmD{J7^vk=267XQ`JJ9OL|JrFL39n zv^{Zn9^ByKR#o8Ie-3BpiLT*VG@K%(%Q?MIH##hY^S1Zi9uT6&V5;8;KI6?NJ3pM& z2ax={kmM|o6ekjTX){HX@D=W{hN12DEI>H8w9@`LOph%I+uUMACrdFHBd$wzk7TP! zxjV--h`wbWX-})xjyU#BJ>occ}qd! zcVKS*?sRQs6DvjqXZDs{R{mDX)8LRhWmra?Hkq#O~65Hv`jd*$sR*Y(hEk1dsANP;~OJb8!H+4sGW!hP;~er z8;M!q6aY99i;jylAF*#aj83pJ-~HA+Jlvk7BBb6`dLg>@Bq`}d>MT?*c!ce8ZCz7p zJ;9_urujM7r`Y)c7P)q4|2HPb_d2SXzvY-Ls=O}D= z86I=KBN(T=zMMBKLFH)*r=-L3x- zC}QU2Sb7@1ynAYs3?5cYKY+v11( zFqwBfKc__*hq?(qv3Q{xKTl<3Rr0O}QegwU@e(SdfUarbN58FFYz44LeeucjnD8IH_&@+Te z5W>n2x|{3XyajoymyfGln@Tl&jqOv!DxjYjNXZ*q|7X#?cr6pB9%mIp>BC}LBE&iRwIb}8*I^izUR8k7XKL0D?~6>8I~~{ES{OOzozM0; za>1v>)lgb|F4_v%rhFf#41 z^Qs9jTGVf|Miu9C7Q4+?)6_zLNbz~hX_Ox;$7pIu=j9L$Th+o0FoT`~x2xi~s59ij zumj2c)|Katx<;Fo+$Y3VfMq8RP3Bgc{`+_IL#hhnZ!!)IRcHz>bijFuxa<;IZp!{L zsHdnUyTfLxJ!bpM8{VrO8S~eiLJ#muNayV_(VW&&`BMpCtpyNV1UgS`5tob!ls?Zp z7pmbdA+`XT-RS&!KN3MIqS@)g?wQWV5*jR)f>{>#Xh=E@W_gxjkqHw?_k{HCHh?r= z$ZMfQV9M-s<=gi^c)pcP z{mNzz`j2cw_{nqt_ABjdb}e1mwQAD>+C_=JMDH4cDEM~~(Xev%2(9KN4s!svW-nk@ zFA{v3t1`Mbr4)`~gv*C?3YqFh)0KcD)cFeqzoC(wRzL`~QcJP*8?Se42%7XpKeqH% zJk^4d6(iuc*{gZu+`*sCV0hWWsX-Wxy6w3K@V?sbQ+L)ui9V1Uv(`Jry1IRS2cje%<;VJz za;Peg8N6@|d55nghn7CJ6l*DJVYhkqsL3j<*{$W;uZ^*PL91_h_`f>)%CM-u=v_*X z2I(3=Q9`=wAl=1GgSBt<#~1r-Jf!8`u$|9-gN?sLD) zInOhDuU%{J^{#iXz0WDb-$}l-Bs1Vhg3I?l=Q4cyIXcZ5og|Bq()KM8ltpP=-Q%z0 zFNI7a$QbVlHG&pnuA5c4J~doYUr$_M1%*a>qzy;TH+u@7>r(g9w16YiL9y`oGrwyx zPOG<$aj4=A#}Shwjkhii6lp&)vsDH?lFYtYq$p6OJjAVueTO8QV|DcLv{A>{PzT{_ zeW{eMo3qiGpo{zzIcfXJ^w*Sa$D3W#gg}1J(xupWep5YVhU2?tm1bvO7HHmNAAS+F zLUF?sOH`G(#}u2n3oB4Si2VKqsoDS2yO>hZ@RqZp@+67{$eA#I zuO?S&Wjmmpxe0f&QDum$AxalXU_rmjbuD&@Pbep>hP;i?oWFN3i@2S0Izz0sNlk|w zRxp1bvFrIsoXJ%NZZSicLs$101}OyTN9|e>O75Mu&-&y49)2;X0BEvYY~jYUV#mgH zOGd9S(_@#X2CK2Ae#<_xCe}^MGqA$ZEclFQj#ZQ@0y%`T!=V>Kb6L3Eqc{yRcv~`| z4Fy=t$h{se>13qQ$m|L?Kk8k|qufOOOwOKoNMj^|$YH=OdrL`F8;cym!(bi*>ZVMD zvt#5+L?73)IMFkW+x5?g;uRpG9fEjx50n8l{52iT|s{gm8k-sS)d@`&D) zyta~{Humy)d<2*}Acq2C-DSDo$u)xXF-Q?CVxD=1i&9HthY>?PmPeWB%q>iLf*7cw z!IBz(l_qfc3@tc)w?^%;tKy|ZRiuvNDSJnlIY4sy8(FFrr;_?kX8YmDYfP5#rvL?X zQfEvK28p>GU0=Rw^;E%@m5cu_X=VOVGKnJdj;fjB%A7vV_5+T&m_en7LG*@?J^k}5 z+AU0~zss?<#{xPFWg6)fz;`?HkgV3fK4W9&0~&-JTBi5Fm*gXT=WT>F;nKhJLRbvo z?jzhIygF3qyAf6Uyvjfcq&S=sJ^o4y@t}3!PA#WgkoK*a+otGgPg(YzO<}sl>$}|b ziC`3!GT_N>M5F>JhCe__u|UbXB>#9fH+;D{7*Cv#sA0S zxoivhgW>ntL$uC4b59sN(BJ4+x~f+9Jj;88^g#RYN@JA+);LUl_7IB@a)8ayIq6PrglM zkJuJJ)jA`{WspaI!!}N;M-DyZb~~iFPur(Dip{}b)G3mO!%?4~T&32@ySDIj^LxXC zyTQ>9a@t({y9~6<_T;?(zQJF+d!?-B82kf4C2;--mHn!$-i!&ky+&gFjF3&LMrNb) zIGg)05hDZPcL+`Co5X;Hy7Ywzofn_@gj492m@5sGhdp90d9Pe!f(3(6pGcIB-hhvS zI8+eti!v9pD90E?=A@*P^o%0Q6G3I*eF0itl;8<#U(T!@VUtBC>!=WcnYy}v(B-dP zFm=6}bNVc30Fjk<{Iu9As^%U#4qT`Btf#7(CGPcN%-8Q-oy$vYq-v1A3~|B+Y;sp-Bw1 z1kV@S%p7e$bJt-qnj8|h${Sm)nJlL@%oNO> z!nZ!qMr+e1IIfI$#ps)uPrE9U5bb&)?6u{qlb>wAx`CG;HRmxFd~G}0Y|g7vJJ1GN zz8-boN?zsbhKeAw@VaTTdyl2|8R_PQCR&)Kt~Re^3hhhwKcTx=zp$FE7cv%Mzwge+ zqH}%{5n>EYs5Ylet?Qh>Ae^oEGn}-7YZ#O8+@PPdRsoo-*mEF}8Mdg6jmRa9JnkfY zs3qcNrIzb&TgHT*_J|Z&ZU?)0r>cW^E=0Vcx`+q<6%gtP!q+x^^Zh#T!z(S>Su*Hv zTqX|%bWz&DTI~+=)d189Y;qAO=Qy zqvJkYU02aN`jbuI1!$SvBJ{Eyd_)|rG1LFj&Aj#~ls-KAOMOWJ5ywg*Xv|R`V3esu zo3Md!(_r&4{I4qY5W~Bbp@Vn$5wkvL#|;cS5;v9-`1hwSP{mdIj2T^AC|9WE*y*(v z;6&*k$k_b)weJ0W;P+~@$&h>S<1@T{_f~h~B8Om>$DOrawANHj;H1hD&-TkO>J4o) zeJe z@|VRx@m(_UgXypJCu0jXK%7T0|9Y9u&(0YW-Y)UzLs=WB?q0j{w+xce@hbtj{rSY{ z-J(aeJ`21tCcu0vg2oIj%{Arv=wpJa!b86J$8bK&!~_8>JFy6V8Q;WKbiqJd#hEIs&P*=%NMGHUbNpK-b7I zLa9Ho0kWNpt3J`YOd%=Ggtuo;dZ#utLsxsbCbF5?Mp$gR4@Qr%0=PlO0X3i`GV*WF zT=sLW=3okTH1m_>Ss+(&zvqcqNXnSG86Da=J67Bx-Xi&@%h&2LdQbfnk>GYPiAdfg zm_^SFuAGaScyGJlVhYdKheN8J%W*XLzdDXZzS8|3QQ)qx$Nzd|Idlr!S-I_Lrjf}U zU!NN3=!Lb%v8^*r91>4gkXvDQ8m$r1$_t^7) zy=*i-oW9~pmR=Q@+RS%TJ<#LE6#JU4=xNxYV{lIroJtR9@p_BWv-qHk^lNyT{Gn&` z+4oX{Alj9KUQwpRpfh1qMbMI0kY-`E+6UZi=*q_7aPdKDeeA+CHN)C+RGJD)F2n%h zO*6?zj2Z41O(9yuWSaw!>PlOJ2|EdkCYH(RPNq&KQ+UKS3~$iN^8@c#V2KFEnvVSl z5n56tdFb1j`EuyVLm1>q=cT{f`Q6^3edf;Ig14Xs;_B_?O!q~D|KZdz z6AXfSO{#EVBs9xA6%R(O4+t>GN|GS#V`FvHoNM-P4H#pg^vF)PO{E^3Z7HXSwKfL5 zFC(@m%;)bxSk#mFY^TSojMZcD+)u`r3ka*n_-!4EMtj)JbYqqIxww8R(RbU32gHCC z>4J!!6+b7YhL67w--6FbvGaaK)@AdZJ*pjZrzc|Anf`B$f4JxZ3iHk1N9#v$`co5F z*CG7SMCE=qWxa;iZEX3We~WKE%EecCcwoXbzm`A(4Sn5I?3kPPKc@Xc7;%k~=#VaA z#dNCb1XLy{%yL5=c+|BYuXS1{MneWE3ECfJRG1o8E4rh3^;K6ZkIVCr6!KyX)f1jQ zdJPDBd>t{j$>emuy$N|3#E?A_-xYHK2n^E3fl-R6JS9`;*wUC0T&QbrhYtv^EbXYU zPzFwlgUICka0|uOa(k1VeOvt>=))PWs{is>-R3-YethS4BZ^kkxba~;pH|E$N=W=q z@Z{s<4&M?YER8VA53xvlUOPWZOR7Bv*F8dAw0Be7sI>o6qDs)jio7;{NwafMjAtaE_`wB@ZC33j_9EkqoRh#OhQ)}0qNioKzJQwXP6;4OwOvru zjc#gyqw~2_6sX8z@bNto_M2I_2I-{&(QhgS$(Gg7giq07_Nesv}(xzOYBZ_`;Fq>RJ7t@?UYm)~^f#N3^l+)of9C1SH; zvxgUlrred&sLi%t+A@w(5UEkAur{`q?C9i3i01sO&9;ckDC5Uj>Uf#=*D=(C7mu6L`3dLq5XdM0%JQ&gnA39OeZBgHe* z$AbYe= z6`;vxsC|F)wD(STSwya1b@YX=82^>CaZu{XY)wfagr z-s&D25gDO3`Wk8U^kVV$Vj88uBO#y(YNg~WR%G+MbLiU4{AzI&BY`3gyCeDQchqT(Z5qVo-trN+>TFHK*f{L3%^z;O zl4QeERP^2+6xh97E&y{n2}8E}^yI(!I88q+T<=+COv9x-S6*hZ<5fOU6d63YM+Di9 z{+XJNT}cbQ3vHM;%u4VUoorHZQrN0zxak#b`G|L!H-~@6l>D?`1NY-61qLft!A#5# z|CtU9;xw1#jlF`QN3sniLs3xNWz%HjkpF;zS6*m%8^3j;)mL@CF*XRc) zR%i5|2hzy&^9gPQuI_~g5qAyj*x~-m?hc3bv1G&KY_um9`*jKoqPmZB3uCw)DD9BnUY7o@X33y+8~+i z_hx##P`Ud_w?s<~MEZqd4Z(Ao19tJb2`AGOf?9%VdW^rlM%j(sKz_AKV>A0(pFCd) zgm=AQdXP_kr?BC7Z&fV9Z^WQ$67};RK|o*FvIJexurBZDWar5l3xsF;P1WrGC~0W7 zS$fI!gWB^(7d7yLnydxn2)6=oVhE4Dg%T~61X3QaZ=8~*koM+1RRvZ_wntQDp=ZH1 zqYABEvbFmslnoHA5olS{ICeC^^MPiR0}RYDP?h11N(yl(b=?E>>#v)^nPMgH*@Pz45U8}iyNNf1 zSHNT{(DJ~q7MY4S@1h$^vruNJ8K*A-zxu^1103m*L&V(lcY+IOs|my+ZTn(o$CeWd z%L>S-(Xw9}-#KFhaKCar?La>0_|i-oSERPe)%nW7zZkvr!ua^;*XoN<_# zm3M%`s+Ugpgh5J06PTsjzA3vicG0o%?KH0$b1Z&ektoT}D+X13obh$^Txr4>6YaTD zXaEP7)9>$97FmDhu&{BGMdcG;5oFN&TjnCh{j zgi_`=2iQryS^EFb(?7&;NY3RH?~fE(m@&}4f$VE9|H3r=U)i;d@U8x#a)@0eU#(4M zVEZAd81yshhl?+xi*R+`@z7%-JE-f2T(F0hQ<)sS!!vM5@sOB_k}r$bHHs`l8pCb1 z7~VxFvDDup9_*vXajuw~$=*u};XsaEuf!H6#uOWHgwttrS~Y~2IGl#L*&O4}NRTpa z0wyV48#so!aYlOdYs_MYZ(8(Q#9H{qKKb$|HG$^9<2%N1%l-9+s#sVAI^z3aj27^0 z`p!5bez#LQeN|-_mdVgKmT{d5`Yy{F@G=H}G&=Ak!qPHVW#pYPTC{@w0aKEhUcKRj ztHSj%a;0YzAp0JehT-s_gdTjd;x;hF^>Hh`zo?%J2=WG!eGjKvqEW)vsJU7}!(ZXQ zTQVvR-@~%sqdrY~c8gUOJ6+RM{xoH-Dv75?PdktW-8r)6jWLHx2`w047eFSX^X~lnA_og)a4QK z^6xsG*rMOHYTt7-h1p3_uXir#GnaNEtq+M$E+}1c%U)5+#K}2rE?HGUG=EKNPdB{w zQJ_)s+p&_MGf81?pETKUfPu=yPlr&43S?NH%d#9=IA)UmE6d&7nB=-+bS-b#uC%M|uVMa}X+eRrKV$c0E+ zEba0vhXoZt4F?S~q%)k$s3~Z%iFLoGnTLM~8Cux9XJk9Rq{K<8ac8`;3^G`aWqdSH zdbbATof-46H^>8X1Z5~I3+6d$W0#DuUs)w+h#LaQE#w)eXTY%)X4ILkdv|^*J!d&w zUUa#yCmWm)R<$a|ixOJoLHYPi)sE%iyAbw2>jCG(sw%BYUuM@7M8`#&1JzrKG+0U0 z>E4Ry(60xV!*sJg;qVLH>TQ&jCg<0ysJLluMiLeX)eI#!!s@lTXDleK+Mis~v7Oc^T;&z!Pw!HgwDA&p1&H0sTf?WxR zI^m9Fy;)mnh}6-6dEq7{=mVn1qMm7fZsOTQs^Ww_lAk`CppAR*RlZ<} zswaWx`l>Rv>v~d&2Cqz^R9(2C9&O9R#^;hXnnseToth}!`q;*hnjCzc$_!V=|=W9)t&&R(ktrNH>NkqKH zZHYkx+ME-HIOM>x2zt2D5~Rsq8_VEf4*dL~NEAbek*pMS$u$(!2;yU5D%}X)O2G)+O-;6xnVEr-i6}86^k|PGg zGpO?Ji_P?U0f%C!lrJ9Qj`XH*dQ8*=Nv$)<|K8TX$LvsGf;VvgYfcjOf5nbsVbsSQ zuz&SmKMMUD18)5kdxjhC)zeHN9!w6AOVqM+_iFN|6e&TY7zpRC-DN)^+Nug^VeNT& zyD~hr0>cQ*4n^nTwN84YG_u*$8ME(4Wf3M;?nJP?KZ_EgifOn`W zN8kL%8#7E`h;~-B5xEcyq&9sA)ftJp$z*pCv-@I)`GeXN{#9SkjiEh1HSXigHi0|o zG=`|QE78sa-S}1u-mYrs@|pONaN4i(C5l(_uKAVptC0TDZ}R-GRfQ_{4nz3elQtnq z%WfKm2S^$TrE-W`U>X-MY=^2o?%WXi@G9Km+O9uf22Vl6^OEcpM}3?=S&&(U*WJmM zjix367{u8Qcc{zEu-`<_jh3t^-zmp?L>NZuLg17e$o{W+T9}rtquG5V{L?-xPuEm#<&p1H(-Rnl$rfrL@3EPqV z9rj=SuTlmm?!e;C`$=0c>SD`tq|ta=hw_9N72|n5nCG|A^|1>(zvip==WD;dque+| zi}h)V)$7q7T|n|sp^lJeY6iBwt3CxaC)mS`GL>T*;sLcmrxROyM_UwXp!ZRDi|b4p zN`W)(%a7;?%dr^Wn~W&MU^Bo}CHunx!YHumEuNpg4n~R2o~0quxhI!n?dk}#i$KOx z5{7sH^YScW(a%*L9PXvCU@B09@blhAd* zZRj@Ls}dzK%@<`{Tr*a)bV%09R|oDfd9B<2+roRD#eptUA}Dvla?%H6<{2KBaKNH{ zDL>W`kOmqc?DL;`;WR(3g*dY~8A+p!XB)wDxkAnIv2ORo^7#cNp>6#eyX(O}&Zul7 zWI8&q(;wyI_3CUsPZh{;#NwKrt($d2Mh3oV&mSKYa9}ruL!5v5-}g}n{CO}iy!k)~ z*WiD$FDFlf>HsQ&c*5WHa|>zo<-6hgXmd}OM|`+L2S}r_&KNM*Gri!b2?~TTo5CFg zRnZRE9+ArFmh#S7+!k~JHK^W#wxg1}Og!goXx<&R?-w1}Xw%I$P^w?_!D{T?M`u>YUYM8r>t!p+$|zk7DUH5Gg-J9~We#-mzqirr~id zRHlTz);VPel}$2Q0{Nx0Af6hEYwACWVO!1 z^w$jh2QRQ~yY9oi%dNQ*?zP4lr}$wp1}in{e|-491%)H3(?TeZ`spk)2W)q{&UiXa z%XfeWBy{WQI34M@S#|XPN7Cs8T8s`ax>bd9(OmBr~Pd zI(e0@MD68dIexD6Xc^>Li(ALRjdY)g_|%JK;j4`@i*vE%)W*pd8I$)>@y!{8Zc}Bj zf^hgJ@*k-2t=`CZVS_eIth#U`%^v6P{_tGwiG|9&ylWvgjb2FF-PomwenU?PpH&eNiCjYK~0BV z@OX00koUu-!13pM+=4!30^N<34)1c+z@2V&lWK=<)8{Zu$k;&=}1y*Y_5e_o!#s*K~o z;}CbL!p}?S7N*UyJ}^KGT$PX}X4sTm`*$I1FG`TijlxC^{0=Bm{VV|OV56!wO zwKMB${*$R;1W)F!ViI!Aj@YgF6thMXBI28k6ln!r7=1ON3m1j_mnx!uQcT8WgHufi zKMf1wC(q<`oEsq)@}nWl382a6l0TpNs;WrUBhE&+%{b_5o#zp!v8@WJ?hWQ{Lbc8= zXs)TM+DUP-Th(~BO7BKPb}>{fghUNzNI1;-odceR)?sCZz}rUScn8KA8p2W3<=0z= z+5TcuxtW{&p>sPl3GU2u7gIll3<4XIqh|n5nJS2$d!BZu{d1tIh)nli1}$oCm#Y$T zt&Ebc`xr_EL@)KHk~iJk>e0M0)8%mp)NnI5(fD1&AtmoYB{674E=1?}r4m=!-oDKV z4-?NA1(Sb}vZFx!&{5QoN?7A5dP95YU881Bi&YTFA=V!L(we($jyT9E98FMeIJo z1JOyEz}4zB!r{m2bYyMp4#q`V=ecS;dwAA$A@0YFp2nN5ZN;g-!%MOIbo{KSJ5k%@ zaDX;#MUxw0*k%p8n~SX*we&-YeY8F&K{gcI^+@qeZdO>0IoV>|#+8krtq<7T(sqlq?0eQ?2?NAlLNKuX2 z>U$S+5=9Hdj$x$EdoTgZ*&O(zZpW%x31K{mP?5D}NBWv%67rAdm_?>0fG$6#6mGWF zJMY zUc%0xt+5_nE)SX)x6=`GdimmlOGp~cmO}Q3!yk=@`O3=aV^6&JJ#4!B&Ygn|ee}ve z=MHfvW7iDqL`(FW+7+X78)k+qv<fZsF;uZcz^9|3aSn6pl}H7eyZuG}Ynme=B+ZiX1X1fEQL^d&jKMpYC-_^09?rP5@VfoK+j% z4Wxd>T>kB~(ZG}QJYc%qnf`Ed#`nolH@|B6etG@R&*`3fLS?Zz^LUet402URUB&p>)MieLJJ;io zu6ZsEwXjPm*IeA&!uw!!WtEjaYb}A3FDS~`w3$o{#is8}Yza{bD&THDfj)sk0@usa zDZIk1AN)tv8L5F3;P%3YYwzbZQ*6#b7Q!1G8ly+U|I^|7w*M)E?>-~xM}Hqzuk^@K z77csmQrh+>Ci{@4`K(1H)tgwlA563<3YK!_>=7G|YBhF65&_~+=^b==^DkdJ27Ped z8hZcap%+B}$1|0?JEun(vJN<};mD#Zumu9-sS=&ilP@JL7Cs7cme6JjpqYggY$-63 z?Ft0=2>8J(CT+crYnNg(cQH!$1nTHX{J>S|nZ#&&i=l!(c89T-Gfx*;Z1_%uqz&K>vwQdrz4YI{f^qJ|%oJ|S z8+1n6O^?*c7jL6cL7}ho#byXY(rQ^Le3Z;Mdf)J$$Lroq#1qy-!MEa`Pi-$&*ktQd zSfv;j*lTUun-m1NGms`1>i|QVPwJZw&_O>Cq;XowriJ}hZa>Tl2q*0fZB1&q>46*Q zQM`$pm$Bo5^~`j$K_pZ{Zl7HnWMXRNuK7~-RT$NsZ#~xwV~Zj*I`!`_flEcwyktmH z%|k(w({Sw%DQ^`danb%66SwiUG(L;4952gv@^xWOD(fa;e@96o{$9!3SfDFB%*6$uwI2UQWs z0Mm9aZg?fT`DZdnM36N(#JYzc_t%uyBHaPq!02}pFbN4qZmr?Op^;Cq1ast$rwZ`y6 zY%>MM5fKihLFZRRK7Xl44{AnV;y|B||3$q^y?`iug_24v)ui$9Ly3$oUE3bTxx|Cr z*s^%fEIkxPP?`*KQD25QaQTwT-z6mR92Qgw}-eP7y1RTx?-^ZOe9(^#(X9vz6KCnjfG^EL6;cttJ4DG zdcd?*Rd=&aSTXE=^ByaIi&W-387vbn6NTDJ$sUlw1(%a#uMq zs%XZTQu$VB;`@Xq3&1NZC zK=_@UucFeDb92(w{`b4htI^eoVLk&XQ9*xD`l_GfQIHB&Y#7QmngU{7*9fnEevSCh zy3PTZ?%#KnR3 zFRqL5{cm%lp{r8PE){L`r)nELEbQG3=M-9#0UuscT{OR84V1O5m;#LdHwBBWEuxP5 zN`DX&ywcwAwp^G{AV}`i$H%b7R#%Jam(jry1|N9qz?i{k*imIi{o!1zLZQLdCuX3D z(X!rh6e@n#8Ammc-D?gvJYH>+Q;D3i8PJ4x%FaN=`%TiQ2GoE5t{mEx_*3X2pe{B= z1NIA08-$jJDK<;ld04sOi$~BjNHT!brn-IXo}br$4M#Qng$>s~zWsM;82IM9A?E{($hX9n(-Y*<(?e*n05 zw0ns)>VQi?qBetvM1D+BpLIpa7&`J2yn^TQpPo}zFTa6~R-Po1$cJduEt3pZKy0O8 zWO%^w(@%sAQ;a8slBoGCnL?Urm!T-W1IMu%3tvLsQemRqG;H`Pqjv;7O!#9JmkS-X z`~7QZ*$)MB)KMZd0f9e#I^uD0;rZD?`sHYol6v@U+F%|5);A0$09)0Ky_Hs`B!p>@ z8l1-nCTE3o?B~aIoZ6TUmF~YiI)?Ad!=Lu_Ze$iZB;a~mr9wqpY2Miol5G5~?X>?J~_BBq$tdh=u^dZAN#Xnm#O$x|HwBQgu*S*l@4e^L2I_{HmpqPI}BTHCFu2 z+gwY)HL7ER%X;v2TJn&z`nU*bEn2EmB!q=HzvuhpL0*Y=t&u#U527GksBRjHs1nxje|Z*-HUG zu_yfU(t#l8VV4x=2nN)`@kLOah8HsdkFDg**C0hsi)mo0Dp@@@LS#1QCnDoj42Qh? zgeC`Mv-X4?&;PumTDC{I-U-_~v$FZ-Co}1`|MjzkhoNFK3%M4{`d13UX>_m<`U{#9 zI3X9XtIneJ=-<$tp8yw%q@9o$V`F@-E&r=g5%pBeTp8@=3A9odlEsG*V8xK*$-wl6 zH5c#~n_GwJ(Zj97&V@0*N~1^d++MwFDr00>(&GST*E_jl?=agk@f!i3d782A&s zi>~jw96&NtOLS8dXC#T1)jVaE`}~C+vgUMHP!=UL=yXVHcFP>TGPe)bt<`Vq`*epylFcG&wO2$Qsr#cybgiNjvuF%6w3zVD+Sa8DF>@j)qkz>t)(6wZ8@bJP)`P-+?#JltV) zd;=Cqw7VlzU7I^%LOhkq;DJE&tM4;m&rAZC&1bD2ATG-yPGHsd`4AFsl|X86-3_r{ zg}i&Fp0vPZvk`ukvuiKm8tYVs2EcVpJhd5gnGL8qKFHY|WlauAE}Sq*xinHtoRk3n zf}0Z}53d9SZ`v9t2dVyEBKmH6ytg=+D)7bO`*dQ9?bP#*B4>?q99{HZjf?5OUBWBi zd3|)=9la|&x_#fNpC1xRwUcd~VcbFv0};Mqbg zlqD#~E%)`Y;08+{BwO*l3Oukqeym;K@lsO|ptgk&zILis5DJt^dO^Ns@Ln|JMbUyn za}sT&)k{ti%Qv)WeZ`Z9S?N}SX+~H_8)g*Z3Oo$;$e1xFcv71jJ5|=%85yrFtQxYo z8}K~tb#=aAnR$1c&sFZiyC8)YmSeTHZsp+pw>O6Wu6A0KZ+wRae%tp!>G=wFE;<@WqrU>k}qzYWBreD6;0u&2UHO2mi+(AhMr?j39(i| zpB5ElZ1Y`58K8zcp|%Ej1}Ga@?FU*9OJ0GESVMqf)20d?|0u@6r2=ddrFc^R2vjLB-eMc!TN%yR{8znTFLl z418JysN{*@1nAOYZxC7RCyhdkfSC0Ot)juMy+@~hCpoj8WvUGb|MTqk)XWS&nDpvb zZhBf)Or8!pV|twL|LrDxj9Uz02D=*B`xjg9D`8%HxF?QDgVCY$Qv#ve+zu0vSr%R| z9>JDM*P(m3rsv#y%7-6P>W6&^7K`Vzy6-?=hc9}6YAuQIK3o0RvNRg!n^S>}?0_NJ ziSYJA`gT66`WyQGUTpgTX(Nv(d*3++!B$F{Sss8{B2US2P1u(m+pL?j_l`7E-3RBQ zR~}@I@TSa?KaNA8(toN0r{2f#M^i5S^9d>s+WA+}EuU$4AfHk4aSGx9mkz*fkAOh_j?4=v&Q%S8)iBA$h9f*SD_O! z#M>wDyC8$JFH-$dtdN7|smcnF`5RT*g`AQvMdLk!`zVwZHJx)>wji;EsM8)t=05-h zF5#W7|4n%gtf`Zd+2+iwca46ZkyyX+7kQEWc%RZC)3q)9oBFMGv)7{r$E38J>Kk#x zKgDq{HvL|~gD~%`>kRxs-8J1;@K4vgrw|&HZIv2~-y%-WB8C_h(-U;Dxxd68 zX>Aw_=wF}R_8uKrGh5ymj@y#|tN8RvHj_06du^UW75utc-KKE2 z`e^mHmv9Vjy0Nb;k)*F24?{@;JfJ)BHOGCXEBy>s9Pkdd)KK$ z+-$%gp+(U*6v|BEa=0OP6m)6<1HH2r)i#dr>W|4>>%0Cv0N40y~vzH->;aeg6T?m?u_RMkPcdS%1smL z>BP^Lw~?etkElP}$z4OiG1y2EHJgldduWA7TB~_6c(0gs*x{luH6@1krac7qYOIjm ztL>E&{w$3w7mDDSVbxsGpco6o!MIihC} z8SDlPc}ATgV;g5Lb*KrWpT;%n%XH+>7Auqf;nU@O6{>(356)}zR*?HHgUhE(8Z3mC z_;d2L3?WF3Zev)^$2++(E8lI=UP%cE`sr)`wVTuoe@-72hoT82bdRUe!<^;>SMULJR1llyw9Or@>mBU&G$(cb#YDNhV}C#Y33tmCAe9G5U`9ZZQ)(!NTp z`1mb4=(FqU4epFA$@QXZ@X~R6;ek9?RV5Q%p3Twk;4KqCNxH4=6TMT z5CqXf=uQebw^(Y9h9FS=N0~uuSd@_4By%YJP*+kKtc{v46mpY+8e&0^kkVcr^6*4w zPl_Fy*hVOeH$k-A@( l>a@@L!hZa}xUO~_$}N~m^Ee{0YiDO? zVqy{=9{%COhuhoR($Z2CD+UGzQc}|T`ufbw%*)G5Zf>bk$b zkBfs-Sy@Rduxw*OJ<>j57o%a#%&(6+5LPC(p%S$A(^5^E(XqCLY{3a5) zvAKb~K0UcZX}8(k-A#>;Nn)Az#gaHRHAU;WmX)O?HZJki^^KRO=i$X&QE{=GELVSj z|J~mB+%>Ycww9R2&B@7W>fi>6Jnq`L__BJykA{DDv5%ZfyE@#^a!cpNc-V;IeKOBU zO(=+*+DT;O%M;?ba;5=N4i5xyeT@)BSLazT3T8pa#m0^VW%UI4#0;*HouRG z#3p3eJifV`sWvb)c=A|4gB)xaP=#EtT;97Npntk?ahKUS7uPUlo8CQ%@EhK~L2maR ztQN*b#SGpeIi;QYBV>Lp9(b1yQ>drRe29t0he5N(-Jr zB2&7zkjR}HacDmEG2@A)LZZB3322u#n6s&~^ zvupdXB>XD;EwOk^!4&MZrIVS9Elnr5fK*- zo|(m3m?i^qW=6!ab|%hpCQd{o4s{2_)#f5=;|u`T`v8D2fs(AWw)^x>`h@KZ6RK|G zudF@9PhRUO*hLk!ImPQNg)_%=%8p{wNINfw6t1S(%asDcSr7SdZ^M^_fzVy~?s&jgQ{>qZ^PE zqCi+^=wKK25sn{{Cf?}SdBoug-dJF%Rw;jz0RPx5aT%LKCoi915~@fpH+c@iPz)gU zU7b|=bialyL)VWpY_KAWHP$Oc|8m$EkGO^ej-=5|RtyOo2Jv5z#DlWduJlthEBH$> zNsA85dM}U6ebne@SHE2A8|5W@0mR2c2meJi=F@>5jeAqSNHR!GIOlRSL(xk`W%=D* zFvyZ=lGXm@fQ3&xBL*cC@vsrRSL0w!9Hse{$zjSXjh9c{{LvNTu5o;cA_wRpXvyg9 zVRBZFKEfU+h5zmMyk0<`Eh#>`E{mph|Uy z87x*2&{lrqvVnL6`|7B%GNF<5#z8JkyR=LbzM+i!00~(*tWPG?j4~@1tUWA82wSBI zel6G;t?NyM%P{^IL6!yV-gDep6iw!0zNFPYk2)ABC`+si8yt_yDUxN8 z0#cK>@E%~sPb~D$pphIX#tB04-l@IbU+!k4bu<#Lv=y<46)PAk+NZeYmwjr#+OfRJbYM=d!nChQ)tt7BBTIle?2i+z^Z&u zLd}`;>~oAI0|kxi zw$5$|qY}9aA$KWHkd4Ll6r2LQ3DaP;=J+t0DVD~(cO zOQQY&pak#9`%-3myB7@qg3LJDlCgg0L=LqO^ycV=NKRqh19E#0!I7*i_h^ z%>P7Qbj{J1C=#PPQ)SL6najd-Mo2B;MCc|mAQ1V=qxm+4gWIH6-l!`T)RNXXRt zLLD6)9f_OaH~OlF1579VPoxq0df4WNu($uZ*2h$(P=zlJGQ2ADuZ4QE0sseoXVIuQ z#vcxm&bYzA1foh{wnNCO?LCeZ909&B)ttR=4YBVFCdpr_|6M7-xxY+nULtLk3N(Lm zsCq~@5;?rwsRP@BuK8Q=K__qU!t{JFpZ9Ux9t3EqZ<5(yup-gJY*1)-Iu#*oWG~5b z9wQi!`}w4J>zoSJd?ZP`;ruXsiXe+Zfl>Gmq9oUh5`vmcnspc4w;~}Nyy53noC z0Fn11KHpJK&0f}i(P>C^oy9jl7ulR5< zuAL?N7rCG`@IiV=oD83xnMv8$7OpgLWSk758bPXE9hvn7EzP!5nX9d@T?S`8bF5qS zAvI;L`yQ*PfaKi7*R@b5A<>5U)w5lR{}_zAi-F{f*{@_qDc?6Mx@u={;K><>(~8FP zR5ugO#?mHlSCx}b5DPtQN-}&}#NV>q4aVyPR?yin$yQ9*snbqdE%N9@wC2zIZ?-EFx{2RXY?U}dHOQS|xCrxJ?c7_fD&}DdUCSuUw1L|Hs zZhun4?cktegAX`h3@@D6emS-}UgVFqASexfBu53W0Rk!js4I@=(DVWSVAJCl4v8ET zu_|Ofx_%%spVWwpFqr0voG*9ohHcTIJO{H0bLy*Duu$zCW;kuyJ@jDG`^c8s*(@Bx z)OiJ7?I#}u`#ed2{`-+q1-{X#u3k!r9gtV>tPQWeiJ;=bmv34!R~o9mg9)@v&4FRY zdYpq)@LoXkVyRWqpUNnc`CJ;sn75eNgpd+b;=OO~Ew^|tXH3cHbeExe2Vn%uh=)*&TQqJOXZRkGBpqaz{6UJTIrKwi~ZE`pVmq&v0Wi(jF)+N1u9j z89j2e<$^Lf?7Wj5^Br>SBIQRGGBHJbpo}%b6g*is-yXHhSQKKF%y10GtyDwnD1X()(09l^UwEVp{r#2) zz|tDNT0$YO3XROIhBb4ul0U?#ij0b@MN@xKV&_0H6Wnpq>c^(E2x* z;R?!S12M7=XP7c914Jud&npTU7p*7#f+|n<;S!OA8o{0j6^ko4C5NqD!0e;u+sgfh zfL1-r`bSMlG4GZi^f^=-EK)%f2sS-D zyI&P5W=xL?3N+k)s8HKIgKAGa@~J4C(T&m^&}m|zjC5A7G=0EI!6xDy2$nOROJbgK zOi{LA%8TlR+63nC7Tczpj!q1a8#}1Vy~(;UG3{Dw{%D(yQL*trsqlx}HU3+)m-*=a z{heJvf5`#IxRp#?j56^YM#{6IW8W+E3Ww~DefrKW62|zAP}5g2#IuY5IxJH(-yB2d zh7R&~<$Qxa>EN`k=**L4%KhbM5DLJO6co@o$yjG}mTJP6aqHM}T02a^_w0_eqJp^B zd+x&)@R!F21;)r^dWy41sh=s~-(Vv>GOpYSJ7!ABs!a?y?|@{FNPtCrya|ubmK9&C z${IiwLvGFYW1i212l4@8Ykn3xIhhz>L#1)0Ns>9nQvFBxwP)7Hn`E@8f_kSdO{~r? zuL%!weMCja#2%Oaev?qw9!d?xR2hurZ^@;GvKl=D)z~4T+$0zrnz>fLWf$LMGJT(Iityi=_Bp2fD@Ip2CL)F~C6BEX@ z#QnE-C)-Cj-$#w!*KgQf(ACVQ6WP<5=GE&@d=IY?Pxt&bLa<%%#;+wZ{Mr2csir}m zF1HQ0w8!NBE2nJ6+E1Ow$73z~7H_KpuYgoqOL&zVcyku1%?qzDIa_neFL@OD=J}p< z<&^haY#%Df!cKnKalf**DbmnfpimCMBg3m}KXUxJVyvJniCx!DQ?!b!#=YjlHSllG z{Zf=+ji5qV{y{{!9E92hfB1#Ce$u0YZtlZP5G#IBm-O7X5d0*0n|hfSksd@zhF5_F zf3^XU&6W*x9DW_zSJEhniuV$iGyiT+?kWLYGURSc2D&F7TmBCU|FN9$W?jH6E|)V7 zOB3NN?prP>lKl5;8~%NL6U<1|o=XK)JCzM$^+VV-l#NRyB`R!GGCnv0{oGzyC0q9b z&j9Dm?rg2IlDHn%L}a$2Y_ReDzbaDPt8u{sy{g>k&nb^(43;zIo_G_IPjPH?g7H^H zR3+u*YlH)aNcsDR0*_Xa$@u^@AUby8F;*95RmTkh{=tdg~RJH{y+}T=+t;ikjS($dML!xiFLSKp};N8OObL;0{HsAOOA2;ux{8-8Gf}lcK zY!?O_0jfbbnGZ5KxxD_=?@^0 zbFdbu^?|r*9(3Z+}IJ z&N|Tjq1DeTu?_d@bGL#~TR@v5`ojn^7Se~$Hw1AfFrK4yU&IRd^FTmXy78HyHvz<& z*cub>zoEt;LiyAJ=|_7rsg7uYAz?gJ`^YxG?vJ0w7j=CMabABgKK!~pNj7KO+QxqT zSh3qj^cWicwt#?zDfTfz0=p9}#*U1pVyVdWg(o3~)KMvxMlo|3tBt`nXXADL@K@&` z56Q*LhOA^Z?x-KQp()~^C?gPdHF{;o+)V{W0{a`+ephZuR@2~BB z78Lz=UE?NrH3_sGk{XV&g(Q%OLokOZ*lqq1A^D*D{!3;X%NCLEcQDej_ zG=%%pKxxoPph_SPJ{jHv#W7eZL`3k9%?XWE7H)MAN<|l1jBOc&;t;R%-E)MsVF@PQ zJ}s3VYLFLkRY`0BXf+z|ekjXU93Jwg$Og=?!zcr#k5-1xt{%H$Rg~w?ZTtA~hH%m( zma}rmdORWMi{0UUtB;|QX8Y3n<$mK_vKlr;8|IG%N2?5sc%?r_G_HsVz_zO6G!F zgD3uwEO;Bs`&s!9-@)&%56hZ9T2Yif$kDg5O=i(NtB9x*Vg*}hv{ZOFY)d+L+0QL; zSZ%%U{b>A~eW(o4G83L%uEtlHEtKmt)cW`x-E+zYFYH_VhtK^EMnW{v@mOOeB^GI( z+a$Q!0Y~Tb8I#xIj_lhG=dt?prX1OJi0vCHqTnV*psbKT59-F4RdenZvhg0^P)rPx zmfJ>9cx_|)T?5AWIm+_0vzz(-HK1HvRy_Knf9;rs#+5$TReiNUZ}yI+2@`Dnf!yL_ zT4q}h3+}AE^LKEu!VAt^2P@c_uI-Ol)|UKDlhfom@wz(+*u(O4y-&=OZe|V7x^Yv= z0YLIyP=|{o*3PR|BZv#Z;~)#;(~xKmjNi5^J#}KoyT?mj=nWJEX6Z;bR25iZxQ%W zF+z$yW7$V_YpWY z4Rq*ic|FEKVi>OYy)geVi3zhHNoE!?Mc~Jf(wCI7re+TmVN5!9d5o=ragSLP?Y!{? z=ve|kQ8^FSAK(1m<*i>A-c=Jg&(O+>4+KW-)6-NX=!v$My(`^mwj-ZWU^@*x zbT|HF!_6BrrQg$hy>!%f(sM2!i52$gc{6vZ@t=%A;>?2`?8kqPp5?>WWld zyxRMAzUj@Qa038k>*l1C;|EM^pKr(x@jp@w5I(X6}T z6vfC_iHp6#8UFJm|0ARl-S8O!q_DeXYBBuUfHJ-Jsr(TK_Fix10bTTTsj4~7_fQ%s z&1i!`B=LDYkH`n-sFfFBsV|`AIa;MZH2#@`uF`D9SUe|A`2xQcSCfsWFIC=Z6zYQx zd^G8cwDlUX(hDIU$pFJR!yiQYS*n7AEih3o=I-GhtG+_Vd`h+yD0)Q17p#?}WQpU( zjDdpnN|J}F=RH8YfY+m6_Lid+>2&u{1MQ$IFEsD20kn~R(v}aWWGr!p(zmiE06<(? zJdqE9tx5sQBr6Gy;g`(YuQbbX{9MNGa$2h~O@Cp_5I`>C*Vr>t5jsr%QhA>`YQT^NeHMg`=ZvHDc$Qtiv@@p4B2TL6c4AGOK0Xq2bp?>2b zCN<~4gJ(&0n1F%5$&)Nx#dsE__&&Vh`+$KjjR;lyb0Qr5{$^I(q4&Loz-v8b)VDDJ z;ORXs>dLTgIY4DQ0D!8?`x=FCCUoCueHCl*e<1hhc}ML63zctsWC5*w_@K)w9{l=x zN`J;ma{&}h${^M~CFjV*{5=Z*1KxeD6VU9tNPXY3JZAkXGY`2%nSqAtfD1C-_m@Z+ z|5Ng_C-k=cp3{Gs1SgNX*OHr8?B0e}yT2(D6u-OsQ3M>IzW4zE2;7rXyy4jN>(};7 z;T=!!s&!MR^25`lRC#juY-k0ak605Zk|E;C;+{ua zzk-C?C>I%~Ww4Z|?M-~Ej=f`qy{9fo*Ww2GS^*$@zE<1g2-H`>4b$H=#L6W;U}9oJ zAZdB7HolZ>yQ90MKN>I4?BiL$7t_jxT`(0k%R4Qna9XrJ>Nn=>PLR5&j+fGj@4VyKOzwRbqG>iMf&wYOI5WmZCB z0uZK=fvA)Rd8x#L5gymCX!f&|2g@qz@==;?D{a?Z?2(|mcgzMHTv2BRtjyN`xX zgy5TK%5s||xO*dltNtm?i`JjZi^cmcGrKtYqobb(f=`nhUa8#+t`4kL+KDbO1VnmL z44`zup8cy!Q)bKFZr1mAnf*asRkRt@am0MOoaWei(sL{fx9*JhnBlWnzUXU(?g()D z{9sAuEYg@VtR=4h?N*!C*h?pkHHm{4wuyD_h&Wp1XTS%sCaGI50Y9$0X`s^heiG`z z@Z6^P88O(#SDQ;UiX*Bd14@AB?qn-T=fV22?2XmFf$^u9_NR9)W>tfIO|K~o+1V>L zxf`Snd3l*kkDy4-D;VR&mvWLsU+sw z;9C&AZ(4o(lqd1}rTzM~CEf6i)6lWlwa=gZqj2p|nqQs;7jC>ly@?Hj{c{Xznn_U# zM(nkK54FP&D2z8whWZm(V+1QMUcL}>|FT<19x3pht`nB{tH{)Oxo){Hy=J9GI;^on z00c+F4)!;}GpD8sVkf&`D8-J2j$lDbK}LX^FL9Ca^i~Z`>Lwo>azCFt>U++v9ga5T zqsNh-Ii5lJ@(abjL;$Y(iU%30rgmrpP5pj_ku8q^!xE?>=YIR0>)Jm1bZ06z6On%* zwj#vG2cT%h%}%_dNWz|A$;MyeHNy!*$;!Hyb(iS4&}uG;7A3drHALETWoy4mAMG-U zMFVA_VPi=7;H}iMf0kw$p6daw3?!Ek2K`4EkQ%Rm#%nuJ#lxwL*%<5U>pSXX|K5*H zL9nn|%dBtyQN2@T0@r}AW#5}FeJ5b%8g$0WXkgn;R? za>>w`$~-^<;7EUf#@AGlH|IDEijys2jY}1sP9>BLX{eo`^fzkw5zqG;I(@`k@bfkb z!(6U^8jVm%bot`f!!)!)U@$PN8RLzVG)<>*HwmV07E!A{mN(#Ll~zUNDwyA#e3xAv zlp{{>YU~)GS}|+0?L5iM>_B36ICMpew~{ZW5#IkX1O4Gc30HfCSq^c_5C{&$Gglec zkA0<5$~b)6KlbVmOuKIEVf3o}a^s-v@#mS)egN6g9g&P#Vuj!v8#Cb*Dq(wT3UMHc z$tg!c3-Dq+)MSw?2w=+JTDlpvy0!%RtW6*?`G$W+_^A0D;cB%z-d!1{s{Kjw%V8GE zix$wFlJj4eL3+d-g{L9$1xs%MtaJUB zQY_A=I+2JU4v_W#G5|}dfB+!npcDVB=&l9j(>VwHb!Fw_v&3=No}givX_D>N| zs}P04wHbmM~^MDJYl{?)Iin<~^4p zMOhYOP!>ZA(dxasm4kKwejJq&??cNB&ch`>7PY~*Nh}m<36;zByoa=4UyksV<@O2_ zX#Bn8tQ6+LWoe_9hki>RQ9RrG*2g}*uvaHZ+dtt^-nT=;142zs&E2#4cYF)W=Zh5K z^PRP^x}k5Z&)TQ1Rt^!tB>ZubqrRqR6l&e(ioTtLT*hg5Bmof-8kw(eu*fW-FT(95#qz$=*(h#p z&r#(PlYDPb3}SaDV|I z+y6Ii?;?#7KG61~^OWlTuT#xIpbvm?3n09J?2TJRc&U0vpn(>Ed}cUhv!R^(kbkj)y__|drt0410wUtZLJYDMz`Y&q< zKHZ>o!sH;RsP2c2mm^p*JD_6#e0{L3^2d#FPeFU&SNR|TtcB}#!o$$^=v4+Q!hW1# z^a0@Dc^`(th^lg(ZqS5Kl5BaP1lWu*1?%L5h!5<9mpJBnThUT{r;eO|O^~s%*7WO? z^yV*;DdRU3lC4xLx28H9umjtXy?@Zu=@wmbv?Po2e*kx^GG|t+_IEf7p19l1mJRzI z?=~x*ac+Rn&H{X-G$a>O0Rij*GekZZ5*WZ1FaX@cZ<}t>^EYn>2v@p?-zUQ+V+UhT z0igRPSaGX}@0R91Uj_)sbAVoD7)euJfVsF2R`_&%;1A@5E87tuZa8+LBs zuJr#WhHL&8cRn_{46(Ww^Dk(WdId4QBe;J)&|6#Mz-*T@UU~UVs^1tFwL$v#_RBQeJU!euWJy8}{9Pd59 zC^YEs{OOJp{W&Qh6HSpOZ*bA2eA>vNB%Wn+^{fgxU)*)IU%;Z|+4RR*qDW7z<%XPF ze6r!Jpm2-bw}$4oY`FcCNe&lXuc+NV@CZdEf+MclUX901nQ!+l zz4y;Q?^Et&9@u?v^?rqAT9yD}!W!m%<0B&7-)2XNzrd_7de<|gNXGDV3B#!4kN`g) z?_$7XY#HYP?kOCTl9CNemauWPElQ!a2XEvJ#8vvs$8(wV552BJxZQY-q07Rpyofg) zKRpO(+f>iH@IKQ4uxgo}ID#Uc5E{r*Nv$kJ$(A)dXE$09qC=fne9=BcGAkgY_jXrW z`vPKT(^>*Laj|4goaLF;|FDC34`^c~7j>cC&!#>w`#)Y<@lVmdq*eUtBt=GH#qwq@ z8h8lg3NQAszp!LD8wbct1xN*~xI2Y_91v{)sMA5C%EdG#QUwT*&=aY$M;6O;%X?a6H-b0W@8k~4cLh(DJmiT_G?~KT6dOMY zaN!c(gLgtVp#L3>{8(Iem_G{CtiUuzd|_MOjJ@blB^6Xq|5l*t5g+ns*)Qs1ibtvv z6y86&-nD@v<&N9P_c6S9hmmWb0}O1rau9Dqrfe*JQ(&Smc4D(A}@EKi67D| z68dN!AA->Wm?D&LS-zH*a>vLzOvy4S*4?9LPMF zSeENu_whkRbbp`bG%Z>wf^QviHYW0t=0br@Wh%XZju)DT$KJdjt5J)K_a+zPz#FlQ z@d#_jCFD?)ggOTBc;&!1W$%X|K@?M0@2%l&zl_~f!M3kn%cvV#CH>m3XbsYYMV!`k z#lUl*U=7&IBLtp6mUQD)@H6BAbgs&WJ%|;t8veDS+P>}6nQ7u{_IS=I!oZgwD{p5o zo`iLb6X^PWCSnmGJV@i;>aK+H}b%bg=JUf4#5na zE;fyL36sz}Jp}S{$?z2*5DXDtqal*~-DKH6oE11iLhQnxoawvab>Vmb12H z%&tO;kFZ`UYuw%}YAl`394C&qlNf!m-SMXFQOqZqo1Tt5E!kS1*Kg+8-8Mr@SO#p3 z**R&xXs~r1#-ge4lhG2p0O9oK{~>D!cDoikx96Bo;h7V{NGXi&Jp+BM{iM9g*J+>l zrCCvCybP?@?NaHx`EqI9C}~{d7JFypLX*E5_e~83-a`)PA4>JlKfv7;moC|jYgt>j zc4SILN)112S01!Y-sK7xUF{LL>QAS>JiwgdDLx9_+0hY8erSiuQR#)p!?gDX?CWm$ zh7O7b<(g(RV{hv^wJrHZq5xQFrPLY!{8it6K%LT-OWN-3(ZepZn>JjmMNt>6z0%wfu^Xb?$Gn--pg77&)c=%E4O<^#(LqC zO$J+-oI^Mp+n33IiAQnj`aXXZ+cBS;syCmSe6>O#ec+n5nH||>?`R3X0huHVG$9`E z#-OLhJ=2p>avkd$vpDemD)d_+ei!0X)Hd|_Ck^gq!S-4u6olxL_KmlZb3^xa+>ZNp z)oe>Tu_w(wF%g@`EGoB3WOLDu%PuPYNT{5&o$>_!5bCdlhj*lE_ltg6=%GpdjW-{+v|kJ4{p@G$C0&~A!(+?)IoEKyc_ZpYE?!ctVj>)8a?_&6 z(2~PKN;00&E+$sA)xYvgi~Y9>VIsSdTTy*Oyh`pM#`}xz&)6~Ndt=UkoFWIl2+O6i z>OUTkvbO_E-?uDDl>0)zrKLW+y(n@yN!=XF{4uhCbH)3z1-}W@xlUk~uT2115K@sFeM)lXj=2HBm;&0i1?EHu@ z7^(E5aF2A%BC>#;zlIJTYw%I727CeE_`W1LJqt;lo~G3#jnR~_30vDp5=!DE9|(KO zpjb_}!q)Y5L+a0 z#?u^aJ%r)vzaTh_!t0-Y6oCV-Fc(#fHXY!AY7iRdAfjA(f=#V<-)KjMrd|w%vFleG z_`en$|sDgDstDlE$h6(votJ%52LoeMuwFmF*|Dy$KT$T%nPV>L66oLm7o6S z69e8Dw$HFUD}{bD%d?1JId0mm0Gq8C3K1Fp#-OQYqjMto1I>5lBd>>Eafdk-uUjDP zDs|RH3wH2Kec)h{|LFHQT=o6o!;kcUd`5z`1L8``1t1hxh0e$!R&vF2JdVOJM9*?{n%tY=Uql1 z2@wyJrNN>GS$xtRnIT(b=ieFy3w; zhRk+&cVe?{C0pc$diCmPIzE=f+w3>}Lsfv9kKd_F7c!fv*~7rW79p=A2Zw)sLs)b9 zF>VF4vf)PFRW@L>31bXo$Yaud#V7Qn-)%#Bv*!LazPqh5iS`kWjN_1e6g#w=M1^%I zMa?3NPK*S(9{JCG4*`bw;@fA%J}d%x z_^nJ>cQ_HQM^o_pF~+Bf*(~q3g=C#iOC7{*r^~clK>26pCKba0vuR%vnmgWg_Ainf zP*1+mOZF}{y~$}%gWdSdtS_jf7{}W{p&3uqhtV!u`Q-n)^eM10o@|+0NW^DYCwlTB zbY#+G$g?C`SKIAw@nzQ!`4o*$5I8TN{K!fOMn)rPSoOMrtl4bdztX!{0wmp!BbV278nY<=8-gVeV z4J{Z|wEysj-f=v4rCpfi&iSs$*aMQ_jcRO_;pdzU2gR->!%47mUX;F}7yQAj#f95_ zKWtCY$Q+@kj>|Bu*1B50Mt0?p)=m+3B%-n5YwuaEVlnB|>xS~?+q1sp{t`H2)<8Q|<`tDeIGhJ)&J->1-BRg8~_xU1fS((ojOcXH~TEKjArycPsRqyP9~pY)Eh z@LUtS|A$+uC-$$ci7oTjrQL)rMSHkr?ExN=XC*oHRG)wr9zLVQ&ZD)h zghpj47L&RC-rX>8A9t=9S z&Nep{ZzVCcJQUGhs}RguD@uC0{YRQJc=#vt6EV@nOI-~;lPT1JO05`y{G8J*Q#p2( zle>ymA*TQr{eG(tu6IfSH7vb<8XnlxPfpWruZ-;A4w^8hIk> zw6BCACwpuQDh6b9t#7g}zu|TLa4W2U5UPevv3t)*n?CGlJFXI&Hw^-X+Z|vr%RQh8-7i}!Mx+SC)nFI&5vmG^dUZ#mmU&`JVe0@W z)V!fp?=kNKN*s*skRr0ANqW&m0ODcM_Ua!R*~1{peb>|aq3^z2!&*!G>a#!P5#_T} z)1H@l7)(+IFFZ_)OSUKfT#50|Kg|*^q}{7DP7(}uv+K~gt_5(KJecC>yLNs3tgKAS zL$Bkv%XQrX(-IFBLXvfGT)F85R@fOwQP&g9y8d#WhFG^SS=QMR>fh@e9dA3dqv?qg zmH>C~5YSUwg#!7z)a*cC#=*Sckj7(%k%X>JJXK-$Kcw@%$e&*?HJ$=}?@uS*H2J^F z%ds_s+0KeaMxDsoWhzCd%53S_HBDKtf8$M#x6Pk_!-`48ljh2?k)LB{6x(+u=ESg+ zeUiyoH}plEa;3tZrS&HJG6U<;+C0v%8{yV(9iy$ZAVItRO?0Ee;1Ij@ms25xlIq*h zL4#Yfk`L2jf-K}r9^GcZ>lP&Fr)$-JNUQY|%sLn!(mi|4624toTq%q>Sz#Pn8^ccT zX(thUen~2V^VEFDK}ST;q=EkP04a%J~CP#lpyXm;FTBHrdSMZlzG5gtVS zv-1f>yrGS0x-1c+Gjx!{i6KqWLK8|$m#*VMKv9H&{b_Ij;Cy*Fqd9o{k^R&A8$2RR zrh~js-_Or#tXE~-2EC9j?^?V{+KH+nF(TI=xqpJKXNkSb)DDS%vwd1h6IJ|Y(grI{ zMl^s#cC1!HES0v5S-f%>tzDj;vOgqolv|baRS6O_A&! z1~18IJ=hEoN;iTR>2n}KlFDRK9;qIh?^jy*BqHZeiaFMd-cH6AGav7b2B7<0w;|oo z+6=?To(pa&!jQVzLuc6@X~p9&q=?M3qnhVSi~0pUOM;w-Io7Y{Pjk^8wqZ0>JXN8` z6v08tA|12TgsBP9C#{r#&j{C+Yj&MaZwoj{Qf0hOYfH4hpVjGObiTFh=*ApqKl%Z) zdi-OrgQtj~)Jnc00`i#mMsno0Z^0J*!u-D8q7?fvYn-*PzuKvP9Qg1eQ+Msox?g-$ zU6t<0p-pR$7UkIU*VpT0P9v}fU5y`53f1vtfmU zjy)C|30Qs$r^KWU;Q5$D2$0lo$(y(btUHNet<486_7XR8oV&dN(80FHZU|VCo2;9o6vKC&)@ueyFM^aLQqIjs>T0M@FE3Bgtz4b+ymypk;2Y@({O;P_8(~c zMMpw$uqA&ebVzaKD=o$n23v~%x7?}c2QKTKI8z3TfcaNJW)xyoRL;y-lzQJ z2OsJigmGblPkYPbs;!oOUTnvF8O zvxKp{c_Xy~pVR7QURcMtv)w0j1_TGN<7S`*vCU@^=f1Z63uKq@WisC*6005v;d@ZX90FZnI z0B%&>AR^4%+wqwuyilsEXv4}MLe`q_#@0;#iHXqi$50T~~`9mNtSw@GY^1(Rp@ zH$(n3L_7#hMi70cl=b`7W-n`bP5!{lb@fJ`849XG{UC5O_jG%a2a~Ja^19-rI+<#Mf>>Q9A@~aq%!tBbxm)X9;htc4K(ekMd8Y_90jjudY_wo+o<~P{Y z>}amhuh6z2jmH@0FC{k~e|Ev3b;t}95n5;imM^kU$F%juOLa`tZb5%dhr%m#pYTdx zn5L8bOKfI4;q80yGpjHOs|wH+!V(mQH!P+trK5!!A8=c>HSH2Fkhj2f6-6L$t{W&QWU$VfI^XuKKOnj%oT8qe}JX}Xx2uoGZ zr8tC+ATy&rxl6d9stWeTTPuM9(g>|Q6gRX+4lz>TyKo140O^Avzh!JOm|f|RYrLuI z>aoX=5O%8a<4{rclB30r!bAMXj!kstJSbzp1=cXt@O*oQ26@8RA%b@C5yts3wrqy2 ziO~ylu`9E!TuB8Vx~qOQ*W*0R9tQGKlED9RCCn*;TSV~FYvZpKlyFZck&dz{-~bT# z>uU~LyNVC66Jd)sOr28!5ia~XJit>}O7 zOQ)+9FZakl>v}c7NZ3X8?Nf~kse}g_k3nt{iiGnS$Wf82uRd#kT&3Nc=LGZK7vAvA zx9?lr!}l{Pe|H=6hM7cwkgKk&DIJ|4nNzqqWL$5KvF9ngs>M*&>wz3!VO=@NpJbn? zMJ@lkTu|i8TbP>m3>O_*Y>}J9xD0EG57QxOiNE1u2%V10h?x1~7kxJFI(Q+%L(t1N zwV6GBwz3Si zW5R-obB_6T(@(GDGjxd2w&dwdP>XkQSrys8Wf<}5^jPXRo%a`snD)t~XM)i(Uhr7- zi{IrDvcIo|te%N;SWW}d_#no`()qpIZLB$_Ty)JsEwL-_;^^m-vzkae`7gPZp|!un zvQVBst@W+s^=p5_q!Bs1Q>?Pan^kAu&KV`Ja%-@Q+bNR3%$x|`qad&XPob%NX-DQj zUDq!J1F{Q@#&5Y@uspHl4@v6z(3NEr^Praq`SOIV3}LKkjB`60Witsf-iD!4v+HdX zn!h(Y3>ui0r9@;=1r|B0Yx5vPJN?P|KCW!o}3+V57%*NZx6lr7rKe(DXgY z^u=LPG&w|}S^P^?W9I2*#L^XiZ)VN@e(m~H2E6O@XxOdBtbQxg3vDMQe<_55P`y=8 zwF$XKbM6rG`p!?}MIVm{cFp5h94Z}kr%uG8UQYAk;p$h4eMRl4w$wi9$=%kMfSJLA z&fgkcF;+c5WCp(Fi-DG|U%4c(XIk!0G}>`pwbVxCwDdEwKMee&RNlIo+azC$7De^Y z`FgiIeXS*3%|!77L_`*vmW=P0xo|OUft@2vP2gBo;o3U5OL`nR3CM;EJiGL_^B>T}|P8NrJI88spbhDhLCapv+tE$n~jR1KeUAxeQM9mJHlRfDS#M zCA!uOU4&ITJ%|BxS7}j;Ozb@?tL8)X`*rk|hVPl-4YWo<4P>}Zh8FIY7vJd`+pE$Y z8MsTe-pL%cXZUGVkOEXL(@Gqoz-ilm{~dLY?!fRi-}~0h1zK(wP};SP);kbtuyg*k z3>{{OA;P8k7Qp#ZVT5J!Sm@UZ>a$#SV+7Ai1^c^jA@iHtsG#Y6S$K_9sCCwudkUKvE&~Rm5~EevE63IKbtTP{lhT(%tBu>65-%NuK_^6nc5+ zlf9cp77UF-Sw_a4sSDTmg!2Y4=Feoy=NS^L(@bV*|I*W&jdT<_MxKE}ZP$5=EKf)2 zg=MxKGF|eSkGqZf7iB_Q4Y=Th@XCCkIuoc=(B-MH#?;~8&0=zK&z5hm!9A9s7iZ5C z3mYmZQen?B*DxyX1(-Ji9&u}r1V-uNpd1cj|)u``$N$$A6?i(!t zYrKQhPBvI;3U5AFcobK9*sPqlweMJc#|nAjn59C9?A%UTM?yB7PUnJF4o3nveB%ka z7j92ky!=^Eqgld=kRKlLBo?v}wrFxH2&W22rK|m$(}XDA`f=3JgO8Pp$7+1`<8&vtZh`&b{U#J#UBC%THLTdlT>q5hmOBa?6glfFX$jtX4W^a3-e zq9F21X-#_a4q&eRIB>SYJ~Cxn%I*L#_CS45c#APDQ%`W|KKrBSn|)G~8$cB*ujGvM zUmahU4vO(#L7YrXvKr%2cB%CHkaF)bxBc%_xYPsz-AjYSK3uQByVd4_koRM_g~7`g z7^AriGHh1*57$*HWr+j8Cd#Ua#hvHL!aSSov9&?ZM`j|S4$`M~ZU<_^scIW1VS4$aZmzWs3(Kb)h(PX>h+3a~_Jz(#HAeOWtf znS>_<1eup;hccw%()%1v_5iuVA6f3Q_zp7ukj3KZj*h^1LP0BYSY^ze~+jGU| z*ut9b;Yb_GzKesRe0WNxL{!zO7iU$vfcysbmZ95ufPz-Ek(y28nSqkul9uj9+C*ae zOHK12kS%N7;4)%9LjWtD*9?q~TgP!`{io)2yCF3%5hAl4T3MuX!;+nhD-|%GcWQ$t z$jkaJGnl5yovJ+4h!T(ahxp}0UiEnSD^_2O{4GNR0h1_!>CrtP_BShvx^hpb>qcHX z>LQrfHFl4Jh2{NIA}g80q$oi?WqqZ}u$Du!M$A!P(p{y;grx8qI(@P9SCiU_)F!1h z->@y;02qLw#!N5u|EPjv7J-2%K>6u7=t?a@gfAfR_bpTXfnXP|fd!fYxv_DFXOfnL zvD}p~as%c(I4`eK+T(DEdz6W3fCn6rMcD?(+Ij69B&)4Hn>n)9ypk|v!F-q&U32mv z#MjwaxYJ>tQZ)E$)X^!&f7PWBht&E1R}B8ING9y^zY0*&!hOYm(JfNebz7t`UU@#> zLzEp;G*w&M^b(PzTa&yW+8FeGKnWWhpySiSx$v!>-^ij z^TUuEw^Zv2&n$p?Eepoy6Wcef&_37!+PswQDE(>Yn+`2@4wy0jXDgYW5!0?&4}5l9kx%q@EwHNzPh}xBK8NFQ3(Ow_P5)4fIx-pmXq4Br zB2B2#Pj1`-pbCJ=d2;y|$I1HzyV}#Iz&~1+`QRa6j-$Ux?<*WqIRdn0=R(+)aZTN-y#@%Ne%ID{f~jpIM+IPONF9hUN3Sk2usL#m;>3N~NS%5@h}c zldlrS+c!QctG%A*98pMA%fRm|S^`7%&D?y&MtLkWUZ? zBvG#=t0839lrI-%jHa9^o`SK==AQ*1&UdiO0}Bz`)3vH7A&)pt zcWeKi6Jbu*?yD?Rc~2||PED4s5NuzXs-_kV<||D+cKUsMK!N5Dj-;Jcr>gf^rOH;R zDGAk+B*4g#Ri;_DqQmA5~qQ@CxWZ0m`v45z* zMi~t|_jpn}es=mBrNTxtlbXT9gjE#YFiF%A5;-DTnvU1Ff~V#@!Q7JZ8p*7ml%Et283nap-J>d4>>X4G62U$;o~~ibWhHJ=_k*wB z0EEmwjLd3-okOO+6-_?K$ckUOtKnX%)k}Zjn!=nX4jYwm+|;U~!Ye%@s}me{Fl_0H z{Mc@0BBA7S_&rRbQiAY#+R44>LDQB&hkz>ZxnE>Rt}pB!g5ACJsmj30YJ%+Mk!4nw zP=sLe@Q^=Q$l z=Z-qs6`fqrI>D^|2kr;*>SMrw2&okDuKUF*@7lJ2R(ywl_$>BfzC?gV63xaXcpu-t zu1#^r-6VN0#;xz}Bb8F4Szwe27r#H^p4REqE^haGG&$n&zS-wjx@J{SG0ann@#6w( z!*J(X`p3Q`^O>LUF~pm*>CD(34?JcRP7YS{_NovBViPjkJux!if?wUADLqY6Qllno ze%rl{oV_xmrU;S@W@`rzJX zm0)ZMyI@F__`p&JGzT2%w9KqjI z>`)z@z1xv2Ly4B%?)SW^PAIj^ts982X9w_bZ~(J=b)&t&0-NRlkls%+Z5ZV3GY<@LF4g+R+}DUXzHwXv1Fb$qpl*8;CCXk z0auN)KjD&BV;P!$vX+cgaQ?xx_JG;a%_+`t$1hTbw3suLZz0DqCCE&v$jJoqhqM?R z$+Fe&wiUX`B1+X-j*A!y*u_D;pSW|AV1pKezQ1E<)D3;DTl8>yK0#!766AR)N5N0e$ zq#B#4!ToKvJ3|D+gB#;NORoqd3nV{B;6rU9V=_niSRIL|Mo@$=*1GF98$#=s4IuUy zbx&XGt&8QMVR!{w&Kba=HC8SUVN7fG#K@AuN%R|keDqQJL&;ar z)-FrjSlE@=ye5m8CyJn@f@RvKl;D^LTS54V={NL7VVQMq?xyX#=*};jfl%-RXP=6w za>c`Tmh3-VXCRy%#%5TU(I$)*$LMA7VU{S{CQ{0fn^hz}sRLn%^ZbNI*ZNl5*w#96 zy2P@X*Rm$iRF+NLsg=#Yx=S!Q+8$WaWW0cA2@lfbsh#$Vw`R<%N9Ms5bEuAJy`a@+ zBvaom3?5-ndq^@y+HTZNy&c|L%=g89S~{^WhoW-S)!}}Di&xb zW2%Im-xzy z$c$l$tPE3FpaoNmy#pnI3$nNXqqk+DT<^+6lLbU`_FV>Vp*vR-)>hs&hr|b(!;%FB z)t1+WLszixwSWp>P`n?O<)ItKIV`hJ1Ipt)WdGg5GY7F#6Xa<0b6alqMxd`@W?vF` zlN&d#07AZWO78E8tbk0$1?a>}SoN)>12Bda2(^;L>-uBWD$Oa8H1~2IyEDM?Dpm?p z_V0cid@*HuEiG=l5h)tH=wSQE!hEE)HQ4IB%nZ}-&?D>v@aZ+tlAx;K?BOQF*_gI*>%Ta? z(3`j~KBd0uic9{wg$Md{GQT6|Ee3zie0X?&2?hc(*JcU%|ugMze6O+BaQy{rr}{O3Z=Ew!b995E#9e* zt;hk>LjdhI?3Y^b!wVBj1P?Lc0V-#^2t{RfWA)DB4VI@vkrmZ%S;^m>+~cy_?fC&8 zd>trLj@(yD{YvTbzS=s}&cPeaA%?CRDYt2~Au9McODEB9I8w!#{eUItr==&Nqh$TA zB8<5-Y%0=o+MeY5M9*2wvnpB(Wdub|=6fQ8iZ2w&cBu(EBhP`tmE(N`_4}s8OR$Qn zD)Ph9@qJGZjvz+qp%d|1Xm2p)K3C6qgEs`|PA6@k^3g?j%Wv;cSS>Lu21C}fk^5*4 z0VtpPQuY21gM`&KFmWToj38Szmz=+vl}>GHsajt!G@8&E1TvqeC=CZk=D&PS?l{Cz z#xa7UvDslPCVMDt68?Uy+AZiNB~8keGYw~Hl3x1|jiHWxr->> zSVwO#x~-uN&7sH11K@v~@f70L3a2tn+TlhH1-|gZSg~XE>Nan41Z;ldjE^#9oe^n$SgN_=I0jO`5=nW4r7Jy* z2?ZOLsUxKFbJ#td=q%viaNkX5eVIc!r}>U(fN+rGgP0}K6o#uh920U(+a(#_O}Ky` zlkZD)>c<)Q{b%p1N8h(pVU_u${>FiCZy3j{JB(O5rsY%0`GHAw8W~I!!rmsBakMQ- zo^#Kp3~=ep)LPcqfJCX%0q;f~QEl4JYb+HwrYY%#zK-Q}J=a9O?BY7wOow0(9v_MP z&M{*BRo|IvquNlI^a)9|&=kkX-AcNIG7lE=x12O%v6sLCKuI-Aq(wuD{{G;P;$AK3 zlCCuBF0%!}%+t@9=LV+o_GM@~8_FOGl!Ua<$aY#4Y8ghGd8IJ2B1%s>HW_zK_I;(= zZHP4RqKLCCwUQ&^e1#OC45)3py6s4$=NFjHFB9a&0HPq9e9QfweK-k+Dk4_DyW``P zcZSTJmi}9F!|chic-AsjbOPd`F(aaS2io({5fD<@F|_TyK-=hdE2NTWB@oIgz6(hj z9kn8ovVP%1_|XeEBP!Sm&R(rnQ)*CG|G>W|TBmNLEexNzX(d@EtC+>{%-DC(Ta^B} zcP#L%Y7Sdppk*G4SE_wVId^jsF^E;36f^TCTc2>P^Q;IvyNLx%-@BGUx=y}m+5rkJ zH(nIkAuUrAfL3GLJXstDN$FX8srckoL7zyWm7R$}YAzxSG$jiv_MS?M46yV^?r8AY z$R}POvLu#8VVu!2kaD2!qi~ahDdM0J{(9~ZLi2}l;-1vXg*h3Re9VeZLq@~&UQi5q z7&BEK4P0-R(V<9d49GBMdqlmxiFqu1w?83^nicHl45Pn|v`g27t}WBGQR%wZWGw$wu$R}2{Lt$tjrZjdATw$~GCP9333%$| zO6al#TV&J2WcG0C&H3Nf8^X+)=ZO)_0RBN!Pd$k1BETy~=s6ZCI|owFcu1d*d1=h& zsv$@Jop6%NU^<7$$db)Da}1R+d#A_Vyq@1)YUQ;-Z!W@(!PGRt2zenq2ApeH9cN6W znuBa_zV(J<9IV2c{yM%3r+=?N_w!yd5jtQ(DaFN!!{NC`Xz&}Y+in}JNfmC1x zDneZL)8R&mpQ)Pb_ES6~QK{0r&9F5zD$yY<0)Pibpa985Hj%{hbT^&NO-cp+R(TM# z7Yg{E573o!?;tj_Rvkg9oTz>bY^2SJcPw~)Dy_ojB1(W=_H&dB>+dLmp7I zq3zxSYsx+I_A(3Op{^~%_ra0ds_Ab83EP=2zu!`*%Cv|QNONX?{F*pwy{g#G9~76O zcir;m`6l+W(?%DaW6iU@(}TrJr8`$<#qdPcy>zwThlhUXmxy&;(_aLcPJusnB&;;} z9slJ&g?{rtzRmy0^Z(Y`A^5~Xq&hBy^$Mn$g5k2MHN;KkBMc5DPlwEs&{eT_CG|5T zx_+0Q)f`Zr&(A59E`+Y19>5JnTiIMTa7 z09SCT9cwF!Wqn<*g-u)jGZ4wcZ<0Fg{KL&(j`yOrJ}e7s9=ctbmjB{!gwj2-|o zCve_jDUS$&`1yhF#@(#i+>C+R8i3X`@sn^`8XdK)tTREESb?$&p>ZE-C*9vD0SPp) zbwdxo72k71wd?eQJh1!_73W}jVe7>pMxXyWMM!75U`E>!2jOGF#&4V=c>aLkU|${#Q=TOw z)?zw7)uoi|dz5_VnrfKKSlfA#<`pqOaDHaT7L($9O5(fvmAw7iye*>y6sr}z0PwgwpJ zQRz>2bH~yrg=Mo-N70+6IkYgrr%pI_-CQkef~t!1O-Qd#T_7$!(wNL_oif#tjFWtB zz{^ZXprkSW14QpIE$q;xB>q%oc?y^8^Ggg(fX#}#2n?TV!E}NO87J^N$eR0S!StF{ zzpa&MsBy#bQv_abfaNKW&_2rILXy_KKuGRGSod|;$Nj|SyH@Lj-Tyjp18|Iac#Z8C zOy3LeByQO%d0>b;Jf63gbW+Su;MHmPPr13Ujfhl$Sx>F><5B@@nUorXn7(+;twvd% zc|4Jc1tfFf%_+D*n?|a4@Sq(Mk&7^78oKRc|J;YHy2tjhYzo}Ii@Q|=q78iJp3}(P z5Tccb9_5ZSSFP!2lQk2ArC&r!EIV{UR>}YZ+{sPvt{c$w99B{Rgc#LK9`%o5x}#)U zXeuuwaOtk&^qk{vfX8T4Es5Uy9SC+(rr+)7g}$+VdB>)Mqax~HNix@1S5Iy$%*4n? z?nXnzL~ma%g6aCt7H)dT9Z<$7oIQZL&IqRtuMq7X5Et)hv1#R zclLK9q`CS_GxdJ2Y>iq|GQV4Nc7(@hHVedWfXqh5A3cZl;w9s6QcctrYH>4Hk8zEAh7_mcqg0}WIa1*huskQE0DjklwYIVimN2Pt+ zUvn~e=)|wL#-<871ZFnW_k9p6FJV$JFijw~*;(_RR8x>Pc}qCb7C3gI$C*>a{|{4h zC1H(QEvN2*@jdSQv_B%g$JcV>BFS>{AoI9Kt6^uPQ?c3Bc^+8^oC92LsSGHNY8H|+P1XY*&| zH0&`xHv%(~h#bQq(LEc{8`IX;uYYPZJHT$Qe{-;Lz`~5u@QJ3d52b{>VhEtjgR7ptHNN2sp=5+UZ&=~nJ%vRIn-_elT~c_4FfL8{plBD*huwJoqusF>R&Mefe`LHr#b&@hy z@&)!qz16xkL7xkIr>_2^%R~`w>9)foVpU_PP>MO;3N-d&5b#0{|zL*NJbf#jE6w`Qif2!Z2%}Yv+ zF|l;3K~`@GtX{qWMBRJAq;;L`jrJWk1<7i)AzR#-Psq<057B=0$AOdhkAyA1X@6T`#N^ntS^dDkU^B_Qp6aEt8bw%A48Wf+RrdCfp*aegY~`C%*TY z_<-WMo7l~~_G&?9nbA~x4*Jl`D&p4b1drr$Z<^_jef)$MCyJ}mTBqDGynV#6t@uVi zP*{tj#P#e#JFO~T{1w!<_cuDV{3lWAjI%t1Y=ZWK#G#zgoX`A{#m)u)L;6r56VE^_ zRxfS~9fdBzf?rXLQ%yxVO7_xeNP z$slH-2H{)U;bgIOz%G#@(;Ns8Af>t-y03Kc)Hoj!(GSK}m~3Yr@{Sv)Q*?Zz(!Ok@ zt+Ocbo= z?KDtaFr`G&Bn%}$&^mW@CiRuS78{D$U4=w}@9h;c@y|wN9p`5NyDSXD!VWEL&#_a@ zbp#vzhNJg*bD{Kx7j)cb;^>(6-_0KlPz8p!FaRj|d?@uLF&{!5B0m$DF^ZXLH9>m< zhWZFKo7|#<1dsy~2}ZF?yVABY0LAu{e6EZ6j$ZGgE>0pd^lGQzrCGOo`k2*g-3BGE z8KrF(lirFt_GBVB%hbA?1S_C5dLjKg!kG@~h$3STbjkWxTQTNJJW&p6BDVJou;kmr zODaeGSQ%m@I1yBWyS6!AoIyf5ru<|mkMTEU2pfNOO!w<3@Hc-5P%AiqqD(p#(2T?sV(vt*_AMk$H~ zEHt|fTw5SF>?6sw2qk)}r`!B3r4WN-N$$G0u*h@@EkbLR-Z@wq^;r!05KV9rwhC0B z1&Br^FCpIPSxrBqyhZ|O`hWS$iIE(sD*MBr2QG^yu=)Q5Fy|1q#lp`1aTd{tLPE2O zrBqW`HZqEvkMJGy0I~D{GhI`oJm2Mj&?ex+G`W!QTRzJViDJ4`+TN)0kI?1wbNAEn z4^TYo13}Odn*cK>z=V{pB?-W_mVwC}W=k81z9DSNhwO+cjrRLYff0s71b21(-d z*4+PT)(uRY-`KB*Iqe)}&~y7Sgk1 l&3Vm$Ji);wKez_6-}78~`ebvG@V^CsqTCzV(pP3d{|C%+SGoWI literal 33393 zcmYJZ1z23Y6ED0JD=qF6w_Tt(6fK1om*P^~7I!GF#U0AxPSN5l#obw);_gt~-R|=K z?{~jE`|OiUCNp!AoXqcJCQMOY664LgHvj+tLt08q82~_r006J5Un9aPI{L;Q@W!K} zoT~Wq^Yg^S#LCJF5+dUK!u;v!sj;!KrKM$0PmhCxLu+fRj*bo%Cg#r0&cVUK-Q67v z3rkj3mXMGT5C|L^8j6XDDJUpVP*5NxCH3?3OH52WKR@T@<}NEM^YHM{P}hJ$q0f&O z&(C+y&;P2%c5j}acgL$Q@1IY$@?GBHF2dD6&r3*1tXw=_U0qE;{r){aV-m^Zn&gLv zg_9$&JYTFF-8|)+;8go-Ie&Tobba)^lBNSds;R9#ei=LT@9ggND=xFt?$p#&Bs9Dq z-3NU~&)fi1Ndycjo3!^|T;z!`{i?>}zw*9Dr>vTP&gxmAMny@tm8{x+PF;EKN;IB2 zeG+qr=5L)GbO+#&x^%5wKR>r%5HWEhk=>r|JRkP?eZpWM#?bb!0=}Yn-l@Wr3K{+P zaIw;jMlQfB2MG!adfuNh^?@P*^oE|FuXjdQx{_j>=31Vgm-a887ocdGITSpKmm zWTDT81W6&_YWrOy3xg)j8pN=&NuQTdani8-Zw*2NA5WAaSz%Uj1} zAR{?-{kg?W&zo(k#$ zs{U7bPKxP|=#(fIQgq>LyKk#4p>?@owWa_xkn#8Lv5?^>IbOvdVB=c&j%alU2*fVL z3W$(PR@EoMs{nw2DZHcB^zON~c3}bDiZul+#G1kza}BXz0Kk_`TI{o`+x)@8u`Heg zpzrip>n$yL{@hYg3UA>TIhD`vMM=beJjPQ@A_fdo;c{Z5Ay!vT28#X8t{lUsDWZ~6 zI@3T3HoOy&$@}+NxUwI09CC-~=#*VOym~V7=;llDFXL>zYbgLLpb72EYwFD`;?g}_ zQBs>fN8!c3;% z_mtwsMMer!aR!aZESMM_W#Y%&JB(ak2^7n1c`ZrOPjlkgl`wW<^a7#5*({C*F}wyiIYkPT>dwF_m!zU@;`OZdF!JqeU-#& zTB`!BzX8_JI2Yzt_g}M&+|tl-qKNSKx&KX05l>o)PiYCKZ2d7tjS12mSoEKT!E zu5~;e{L{K0WXM$lKAF~5RSDrD-^3!~X)@SF0Iq9DkZ@d3*FM{lEp>H!gLY6HnNjRHLQ!?JJ z=c5-vk^f1=NM84$o0@wY!!6`pAzSf4*Hop z+=nff+7{=5HSL+KXM?5`%?-K`CZ>5dv$h(+9fCCUfDVKC%Ci&>O&=ZA10jbGmjlZ> z=1$?g(bSr)XB@H*^<4K!X7uO5|Eab~W|;uM|)nsm%Sk!3}}pO&t`+g6)< zD~a4a=e6;ExDx~<^Wt-+$N^==2`Pn4I8zQ}jeRB)0ha1hLyVx3qg04EP=XS^^M zo~Ref0U_=sDnJOVoGZ=Xg=Y?VbaPJvPJkaG06^Z=dIp?jE9tA#@fSFe^>SI95S0er zYYK(aVcY*3+&qN_XSRQ1=R5${0@neRt6sm^F&hSMeI39Z0VcyZ=NdGp7KO#oAD39y zz78ml6ugWS1eLUXRLAM++5p0daU*^+PP0Tfr-u{6eE>bxbu9l+D0{FRI>o||<1y+YQ9AW+0^?yMKcJFoT-R^& z%HkEqYGe}$70*Lnsd+a9YDE3TWxn+Sj@pTkHDsMR`b&b2E^*={w88H)CK{y71+3ya zHI~zjWXQPYWOm|P()PQJq_cyHgtYZ)Hh)y~ihr5V^i%})os^Fl843M9SjuD@6(0A6 zvlNa4+Z~))aZ`KeyEyrM7+OA5C3}ZgXK40~g2`_DcZ=$l&&!wkW4>HXUe$YFgjdB` zcsz`859^+8RkJ<)(NdFd{6Kp9n5cU%t+L+ZtI%%zWGf;W9wzQk%D%IHrEY)xN#n1O zsec?O_R-c;Q8ainaVa^w;wh@(+MAL}de>piWBv$TfWu3_Fjj~(oLs78rHo1{;3+^*&__MC4AKFla-=Ov8nw$hDtPX9Cf z6crIj*f71Va};x3cbi5T(BfeCmoj3sB=@x)X3deU*F7uqjOyZ6Rcr09>o}3Oy1A&5 z-&t|By0u_UvXg_K-|0s~U6fY`FdX$v9YMV<_Gz{f4nNHRq5(v|I1NhW01+gGVyk4juQ4(A3ax11k~DH~meN`U?G< zcdl)xoqa@kk}5{78igB7Y=0dt^>EGCtS;EIM#R6U{Q8;&D;-<^RFh=s-nMC2r^S%4|9iok_w!U>o#g^v1IO)g6O&^~jkGkm><1BTwMpk0U{fH{+23H;4X zeDirNV-a((J>R__4CWL82C(lsE$0wMj?B(wq3g_xMkoMH9Gj2!betUD%S7ZMQs^cj zrQ$|$YVOeFh?nTX%E9vpD(cq^5sZ*~FJ{P=Y}H;XzbX!7>i)29$_%lPvELq$z>e$qLk}vpx-GqsZ$HME-x!;=j;NBO zX~}i^IYu)v8(WRYT3^oDp&cXPkH@hW<*^ohwqfSQP0yDQFH_$|(mYF&{^F?Lca4zKAOQRo@tM_+eRb{pj5h{bTZ2T5+?b9~ zae@uM5x$2)IMBNe!026-RR_Q8^)rZr4K?NB=%nGlM~W>&;$Ua6^ARgMdY4a2Qz-H4 zV8hwijAo)>Lt@|yOI)5U{~|DTeuAUV^$gze?wwZkTG1)^}}8_JNkKv$_po^ zpld0F9Y5IchNvT(5qm<4k#6j*!T!PKmfLfa+LdzP*u>e#w-agULBi;pi2pkOa{zOD z@h~tnWJs$X2KN*^>uDcDb3VeoNcDfG`dHIv^eq_tSTB=@(;ziYkQWc~HSuN0@JQtp zBitF(3LpT=|D+!LsyZP>%l3_U;CdHw>^F&F#Gn9d0;Um7aT>Ybq|!Y|X%5WsKe#A})hI?X_X090+S__8m)))G`VyyI9mx?0-EnW~lI3 z-b9!E9$yH0pQ~ibZyZNZD_~bRFJ}fPa?6gMeuudu}x^^q5)9U5V+ox%qh z?)I{u$@+M|FflRZ(BwD%g0r2^k7#Ft8Uheb6+>XyMF|oFSi~q)CpE(JwWdlY}|e;*99}za9|tx zlFPOBBoA$lj@lq&YtC=0P0J>N;=;dpRE$`@d;f?9vwm7I_XY6-RmSOu2-&qiq$pD# zm6Q&8o}83DOv)*1O6}+teV{&x9olY-x^j&(<|NSVwEj`exW|KgtyW7APqwh)ZE3u0 zF|gv>yZPL`-JGM$0(FukDE=b&{A!Nk!eT_@@<7?#OwP16)(mRfl6SR$Q}$pA^*Qd? zrXGtq>QS8(rmMcKOv#e^+3Fs%aGibePEgK@JY@hr-jhLt9(1xDTe`j_>QALz@2lk%}X;15IL*)r&4 zV72CJ?v*^6(kx`?ikGKG!td)xpuU?RJB}h-kg_@{dr-aNx5!^xc8g&pe*NGi{Em0J zB-}j%#%YL(3qthW`07y0Vl?}(9&lQRk(*hW^;Z`B}8GS?8I_#)Mr znISs%+nK+C^?%K8!^%%Rb|hup2f(ozR=F)@_k)oqih^7D%|E6*_}4R*`i(i;R4FyyIc@%H z-;I&UJtbWlEQ?`4wKlf@0HG>m7(C%DWaa=N8c^wuc!gYcTyVZ0v+b*w2!O-cOY$N%3eA z3jN7UYu&VPWD57uF6}WU;^_-1rMqeH?%U-Ku(7s1-gg}_A;#4z&Cp()*F8SO8$+~n z<{8fZBlhN}R&p88*s*?==krM>CqibuT!h!_?UH78{!p6|92}NYx&OOQ7%Fh4*=t7$Fo^@KNZSlHMFQun^7+dUh?{O?!qL`T|Ar3legxvl zke?SU1@d5B9>y zNLYS!Q$*YtiHHFw@#Lz*N8-E#1U{g#-4#09@-TACXaS;d&lziSr9BU_`!d#!ZnjE? zoP2M@?d((ZT4B2nY<-MKI>P81TbRaqvK*7M7`m7(Cqz=8_1Ml+wQvOsXnZ`|Bl>2% z-mUv*PFjztBYjEw({oGbW+BsRIChqt1dh{5zEX8E)j{55cQ7VoxPjhNT|A5TXNuP! zL%KNYHE>nkRsh%Pq}{82>rd7jf~ocbL0G`FCD~gBb5gw_Nfiao1^v0ncL+Rf$)ywT zmU8jTvG~?!k=rJDAsy*aWy__~$bnUFRgZnElJKe@Nz-o8`gB9J^*3Ow{WeVVSH^3v z#o{%842F(d@q~Z)CU;ia0eG2^{*DXY259boBY<4j}PNB&@z`HFquuR2MHwQ zs~^UW((Dr2K;93dnF@CzR=ze#$pvCa*Kk1*0VzTMyrPG8h0&^dEgrCDi+_Yn=2@4O zEGK?w({L0b;C^&u-6%*OW$ajC(l2O0mp)m2XvMpta_q6w*loY8A2avLrmMp~Ns#>9 zGw#dkmC({H3^P6}a!iL#w9(E;&Xi|hL(t}m_41)N!_TEF-)y(+ht0u+Bd<%{N2Xn5 zEO)u>1l;70JD17MWq9jGf6@Ob64jwalRL?=>T^}&T`bGn9_VpFsm?}XJi6R{g-qY3 zN7ef}ju)Ms|+}bD60pqQK7bJ@mE>Hg4%wVtsG~TZB=@Q zWF9x`gA^2wGj}c+7pm))JSoFbNSbQJZ{nS?yaR2Cs|kXzKC~{_j~L;lxgPwHmtAqb zADt6XQHUjHi$xmUXkxojrVT%o>`UwmONP0UNA|=kdd)c0s^SaRrDmm(TV3sU#GLoW zpOD?EZ`Axc5NNUS@@!&Ro0T3C#ld+{I0oE~hMD^&J~ylx(d2aqH@0 z>30q7J6>{Xf8UaHJ)1w+8C}n_{8HUJFwlER?o~m#^n0(*J)BOCt&B+Ra!(;XySm0H zvTAA?B;))y%B2UzpJf-ee2ddt@#73LmusWUVJVA!c;$DS4Mr(wL*V}SuKa?rP;Pd} zd1U@_>cS42XM_gtJp3VA1%BUMGRfw%A&4=r7#RTvy`;P84j+ecd^M{mFr!I%uS!3C zN4|1Ncl6RIzTRg9-d|#i4q2DhiqhwaF#e9ejSJ0>E4t>@I2zZWpI1Q7+^*0+2+B;q z{0lz^Aj8?A)TTV@YRd!KY}U&9xK-9hHR`Fbxa)oDVB$sroN85c0Q$c@BtX9)auDHd zAHmBPcupcsFtJgnH`FPF4-hDVjr9C%#ZCP=``_0ZHYcOupB+AooV;)}SX=e`m=%{2 zsf&H+YcCuvF3TS5!;$4w@_#Th?n|{794w;lTRT79U*mSMm-ewXz~GbsJ4Yi1EbW8E z92@{UI%3sh-4Tkd=15d`);ldAI$vMO0 zX5ZA;U3^cIZzk2|Ep1AEEq>nb6!=w?jEi3vx(aY5AVP^UCsQhQz!GslzAnN;Wx`y< z`(TNG9r@OEk{It1v3dEkXPGJ^p@*IKCt)4pQQm8ct)2=F&J?daWDJTO7GLF ztG#aGUY+n;bFp@83+yv04&W-WKb0+5BF_#3;4P95fY0vdj}fZnMJS5ezlzXb`%{I6 zNGtCmv}Y6gNU|fH%H@6xd-Zt$>&g_W11!%KX%20iEt&AHYA=45FKfQX#Lphgkz~w? z!EO%rr=aWAp%>dK+h_f_3jX<5f$8S6(U6r9(+G^|GZwCKIn6c3m}enGXpBK2m&PEL z_&oL7PYAM*RAd90N^yx{g*YKU z4=aWUXnY3I`WB`NV8i9abS=34vp(LucSa!;NQv9NClY9|FipZ~2|bvya8Hpr3FuBH zpKRnQh<1_ZkxwVkeg&H0adOTS;>j=I1hDU9EN=))M>cQ)FIB<^yzEpxMroBC4Eo}A z#pP|iY`hL>+J$d)@k9({(k4%?7<>ZRSP79PYA?Q|1kE>= zc!MK}I^2Y{uyA;gyGnk0#{FWpUKad6 zsa3+=+)TVjQJlhwgIt#Q>}lcmn`h^@T1?~ECk4~BQ;K4eZCJ+z0|i z77Me~+WTrsCNabEtLZ}(=jH8ucu@CE)~X0Idp~k$UZ&@H5`sX5lRxQIqsmz!y3bl!&Sy*KSx5cFA&WxALB5}v zm=qrDKjZ#9NtdhBGM~R?{*?j8-bzAEkzaN3WXh}|EQDP0wNq#vutZs~PVjC5Qt|tU zMZ_j_-E4nwb7o|#rg^O42DI(-gi`GL?j2#kXnETYt8x!$Ph6iQK|9UU zuiBq3OYTA-)kmGH8Z(mcS8LYppi+RpD$8Q0mc!s!OQ7NMq9>ysD*)=j4%fvgmM9QY z(NyV~5;KI>{_T`Qbg6&dcAnI1iBid7cQ7}Le93jooNon|UX_*=eGh^3T|<46$UquW z${Ki2R2zsChnreeMe!1rPuBHLdBItyD)zW*~9xH z48PdmOOlm`S|d_&jh;a53J8(!mf&2~$oYF78+nQ5V2^jc_Mkr;W!irWZvK>AE-#@! z>ZcEVLXec|+TLvFX-L$&|9N$3%2x$=OJs&MO`JG0GaQ&sG z$!XIj3#H*$1!TTwVA_?$}xBo7A=AvFd;H*S0wcE)Tyh9&N!GH7J zv8_SFczqACt8a+V_)k3lu{mGEKI^QWJQ6ytG3Gw&(*anZXt?xW1}Yat%N;xS^fnlw ztZ9`$r5irGw-?EIq-MWII7n9rPMRPc$-ny13IYfh-|V^x6+7kl3Vt9_XI~Ckt+D?H zrZFB#x87I}DG$1i#!7=9rL>bU5jIs9Bc7U8!ezbI(pY-*pNyCGAf(TsX!GF9RYY6GjOn`E48ryy?<3U;dzj~pZc!cT!#T* z3A7!s3f#Qd+q~PyVV8p$1+c<0SYy) z7I>M0^po#jSF}<1$KyBnJ3tjooLO+zF$`Ap-*)a- zgiz6o=c57wh))Tdr(v1@DnJQRGE@3k#>DS!747YG7J3F}61aPj~Dlx%LsUdNo5Em`?D8x&+F3Jm5&F+)*N0<{z%=y^%VAd_Gz{$x8 zjr2O|3`P9{Pg3ZW1Jc5aAbPcnbKK9LKS>f^kQ@L&r8oqEH-GMSh9+f#;f3UOF$f1M zFfuZdnU-rVRNVcAc<>)S1OTMcaU#z8;bnG88ZK0#;D2I`fiE&lcmx4W0k67U5<%NH7n)7-*~kBGHtAIv(}^3;#6| zLN~#uVgQ#eJ`!%L?G;^kP7UK8!B2*P!AjK|!!FW!n?u*!pXgFX<`7;~5mH;t98AzO zgjwosh{joDV6!&7Nb#{YQg9>kazw*T5l#r538KrXdI z&NlHUux4^(6NzwZn6fOsMwm|1k`t5+i=Galizrrhk~!FmWIQKB#FS1|Xp^`mkyX!g3@0IFtEXX1PQ8vRO`Ax}H?ZtwU`I9TR;gZK_FFNEEHH|zKDn5utr$LioduHAhH$bu*Knyu2r3B<-!+yk4J$K_2Go8`pFm#nmWNsj*Jf|* zf@>Xj!7dqn*!}bX_O>KSJr>25*t<}VhK7ndbN;PsdG)>){yIhdk%KdBl`nqx@Uw~C z%joakzx*5yK=5t=jpXpy@1%;%I&d>T0DZcs^5jXB5p-;TaXk+%a@8XvEc z4KrlR~r&!Et=e%DDlJpgG^6Y0jsED}&e&hS? z&fkzC27f?(O+f<8OZGbBcI4F55cSK5H2&xWy;{2V7--%Q$PQgnD^gvS*Oj{Glio~H zIez$338`U`{5|yP+G+6U2T+}dl|MF=P%B=>WO-&=r#1Qw8zrN#El+fnu_nD?@1Uu@ z-?F^iw}gmz?eia*WU;m+{I>@QT6MJ52@c5&(1LoMwgHQWR4ASXZr>t)uB7eK z{w4@ZkO7}Eyqoj_kWJB~qWmz%tN&oazN@CDZaf##b66vio0`BDckffr<`MVo7#x;B z4*4sq^xXsFZnc;nz$CU&us*P=){y)+26f?VE!pXypHq5dTr|wW!yY^BBb#|MnssDU zIJ(Sau;0KP^XJfXIo}U(W9EA)G_N3@PcrMt+Qv`IG`uN;+nY&YJ3ONHcTrbd2$LN! zN*7i)LugoyCa4KA)$vwOehxh~kCct}fp`C#W}J&Q)8$d8{skNL37wMOFIyMp z`2{!gH%^3#C*@qd1YC^)Q8yaBb6UkKdJ*Ab@-D^abk6kTUVdb_o%e$3Tn|BC#g96+ zHxY=wgY8&T+=>PH1u~LlosXz_ot&9LD$h-X0FUpi^@V0;hw|G`I($J%B5#P7a|EDY zzwa1z#e`upl3rnQpy;wEXf-YIZD4Z6n!7lQ%bU)q5jNW+ZKMi7+Zz>;oz_ebDL;G( z36}B!U*!0rkv;MS?}AOMOy{Dys1KNZ(<4D)XN12e8_U?bYECQeQ0DF#r#QH}WSb5- zb{b{iJLUF#(uq+u0|H{H=dUE7(kgUqv3@#qg35xNe0*C3S~2$RpXnS*hmxsHnyw3e z2rRt*F5i{^-Z+&jgKV-1qYL(ZNN?w~cIpqy_S@3IAMeAAkHTS(OcW)45DjgYoiH46 z*I%y5gC1GwjU?O?ZDv?DN1ZUQJu zK$M>o+}6m3_ltsajm``b!y=i2KJWYn8o4^4z%C?o)!me}5aWMh10M6RV(lPRa?t$t zx1qjjQa|HzV;{#NEzra9I2$*N6YSG7NJPYsY#r?g!97oPiHa4UQPg=j83%BjV* zu2y=8$+W*SW7=}w6v3dBDaK0Z9@d(-JExg##{Xj_NLe5)+ z(!n?W;WaiQLN3A{m`C(YC2q21Wwm-qTWrf3%uT7&={iD7YkLAeMlYLgkuNd(_)KuB zMqBAWd9AFvvUipK!hP2d{gq6%VLapB zY?Cj)y@b)up>hB8X7PTiTpS0fYW6KPr zb+r>=Rbh2py|+%^ZI$waYl%BiM2jb?^Uy(LGT?iY~DL_V!^$@W10|f>WW%$p)FGM-EWNfZcNZIyCC!cFjGP6!YOS0X-Iwm z$uI1X)^nva%!udX3eUl&C1J@Q$dcHie?*uTxgRk9WDEr_9*wd*x4kww{2UZ!JjD{6 zq0?d%UhqjdMqnZ8lV!#Pp#F0dUn@Z zY&#P}}ODvgWbThWv3w}>{1wn@+M8BlKdk=VvFe$1U9xsN0otBzH-KgP||79{A z;H~|a%EZk0lKe~c&&&yaC#l^J&lQTvgfrE~!fQk?c}j0nU|23k#K?wJue1N&52ETy?; z-JZz|5t`$lSt0(#9@$1PpkC{uDfea3^c{FQS_NG(w35N&R8Q!Dm*ViTs@|o_}Dd$(P zkxc#_HWMfkddP6(?bkT;8adU;@a%aHZH?Xk{BT=$88U*mpI%f506W18*5NQhibA4^x>S!d73KxB!nvj@@! z=t@6i&DH;t_E)68(n!*oW)J2qO)0JCChT<*BSwC5e5;{50RF_0Nvoz~dp>S9yi+U^ z)jn=!L3EB&@s3EeKn~>WQPawpNwLY&nCbzHn59?Z9O=bKU?v>d7_OtdrbxjwTyze} zlpl$XJS^4L&r9NR!XDKNr-slA6{px>o)NOBjDo3~kUH&oZHvHF_UceMy(T73i0}xh z{O}j6&eG=|2K&ICx-{v11!@fp!|{i*Ejb# z6V7!(05v$SRON#-&`t^JW+f4L5a+^2#w*7;C8wS%1PMd>>!5w69qMEU4YYq1PQp!t zQX`%+#H+JSSR41OD&^c3p=$E#4HgOpTfqF^RM<%S<5N6r_8*VEs{UAr1C)G{+74&b zoDom)+iP8E+Fy~RGn=N1XScT2`Urq!Z@UD_b3=!SQP)}~%JznepvT>TO9Bqg6!PzR zEr%N4klRkCp(?t*xnRz9@?)gfs%I~F%pAU4$}GQ|yg&GHBG4Np1+F?SUL-X*%3kY3 zzp-+2n;=?KEc2OkhB@&oD%+$TvXSncnWm%jKyxp9<~TU#ntm7V#M!8M+^8lD{N79Y z_-lt1_q~cs;AB~9hS0jq@??p)L^d6Kfv9iDc$Z9;D{Qp25M)XgjNmFR$J;jCoT%I_2RM4l)Jn-m^5bhf~1m0PPf?LG41Da^`} z${%c|Jm~4~0of(ixK*ty9Oum%S}HCw8B`etvJpI6D?*hzI3x1+6&q?4(O1ex+HBq z=o6#<8H1*zrf|JGiUVC)ClRgDvY4|g>MG9D;j0IrhZjZu_E+I*x;%0CZ*YJKVv;7 z9u_9qz(1X!8Z(7XF0vfUN~Tnv_rq`_c$Mb4P)?8XLSc}(P97Qgc+GfaZ?O2)*5?7R zZMGVjxh%~9xT~UMb;=-8F0-laPsIx?zOAU0Y;evQBEO@Fk3V#GK)fkaq8#+jm~kg?hrvAMfi zdp$SK>Aw1BH_U-)Y?P;abE;@1SUCm#4eWDPJgQRjxJsIZCnzRnag(LyW9g79V;)Z*o)f?;=H9yV-AITXR zKkf1QWzUDche(2%NE%NiG;GwTILW=+e_fW2iE)L7*0z2nv5s^ncRK%$@-&rHJHVXv zrw&CUC6e7TH$2W|Uz2M0%GQ6nRk=nw&5lCyp~`>yPROOHZ)xj@AN>7eFcL||VIE(V#UyV23t z;CZoWdu7hDyiQe=F6fUbxdrC!R9zDAK;j!Ba7>9pV7 z?74GFXNPQ(L;}ID#YqwY8^ynfQk7XXHdO2Na)&^|bsHqPlZNIU8qAinf^w*S5O>(@ z>)K*Xl0L{HcLzlsB7M+1@k3T-jDNOY7g*bP$u8xLXM$oUbM+h8mqKs7AtAbrTNNrS z)&ISCeCEu73uA_1^$_inU$@^Plv}pGclc+dV#E)A)Wnl-b&eQro|TpF2L0V3Ivd;J zf#||Ju=ilzl#7IC-8Xi2%Xepsh&4&4rf8$}b4lY_pz50xL=rHnr)wl407*>ggo5c> zIKLYK|JSUY+1-px>{cNh5IB&WOef#}qj^A7fMbYECX6(=*VgPgP@Wwwg-0Dtz^KzN z!OMHMuhFx7FYp6W{q_ZI4A7vE5(&CmBeB0m;;4KsXZ(ThP~wI6%Jjhxp1CKntPa8y zdZ`@g(h)7V#6fjga#M=xJNEx9p(*KbA%Karw3FlYdt9(WY>Sb&@s%1Q7?q==8 z)YrcXXk0oJWPrYsoRwG5Gc?oluUiQJu{^y{;Eqvz#(_yq9sX z|5rju>e1qQ+U)d)ZU9Y2=MZw^2F)V z2Zx#{#Swvq3R@`MsB%24+k=5TP)V!~bB{+RN9^?_>8DDwy689r?^(NudAnb@R;b{W zpwONNI!6Lf{}z+y>b~gr{ZQNQ1e$9T!@1o{GlLBeK&C1l5kAdLBcIkIOwF%rqTij2 zjdGsNMPI_I9a}8}t^Ner)IA*(Y}yqq#+HMC2$F zux&Z=vtYd!fJM`rlzcgarFk#Kl)$6*`5@%5*<iZk}tj)IZUqV>b`1AEhzPYCUk_v8go;Rs2>zz$cCTY2 z@2&F9VNi-uJj*zEG{Z^daKH0BM#?oc&+;|Ig;W>0mgOP-LRfh1L51pHMp~3qYpSC> z9rJg-2LhExtr@XF7pOCKd1Rwrm}d9aOfb zTO0h@`e*sdMp|)2uT4CfA|g3kosuiQczbSJd>3+v7xzi9U?YM4^W)W{1Yd)Ic{oM-n;VCj2!6nQJdfu1Jf4fSlDqC1p^p`?Dm~A%~TbZ{V>l89F+I5GVDAz8>>1z0Q zNv!{H(XuGIH=c;zB@m({^$?e5ry?lM8x+$3qn~C#kd3zIssbB4APvR!xGu_Pa93}x zrdkDnHJG^gtLbc{ZvvWDtSf-Q$@tH$Z#!YHBBGQBbmrH=T}yoUwR=P3bw41Z`sL;J zxgNfnQDFjt{F=Xs>9cM9VskuclkP(-zi<{UEJ8XMz!oaj*dvF#(jiW)=x27H_?edl6(Mo;{s82pD&XqVvw$Vd)R1 zo*!_!^F-1Q_}d|fAjo`Bw$WqRVyH#Z`n)*9BbO&07LJJ*MJZT37>x zp~m4WTR_kxhN2h9bM~g#jC6TuL|ST!8ZdGw9i0Bx_$?;Id}fBvKvCDgP@D4HsQ(J* zTzc~#%y%>y*`$j!qE#w+O8!6VoL)_`c4lUML?&|hlDU{>jwJuo(wSuW2m?t^M~yp_ z16QHQtc+rFhjsm1YJV1JTRkE)?a0r zIGq)uwtsopM_JM1#$ZTGBzwpp&F$-}%&TAE}@R8Y1JyR8_e_M5W|COGFpwou8B_8;yx_^u`GU9Y5f zCO~dy%0M5wgJXp-7*Mr1-EA_6u3W>tZW9%OvIQVT-rUqp*QAzo%0jac1B9JW5;Gb3A35qOTTxa^J1lE#LYmzw)8F zuG-rqK_!%Bk2_O9;o|4d*xN8Ln&+{dCB_5Q{bF_zs9Xb)&}{+qoDl=TWTPVjIg!P; znweag1-Sp@dUoy88u{yJWAvh-tBW)x=?^Jwd46$M>2YD?HRt0J#bB}Xk7Cz~a@01&j_-(M0_==dSHJA@mUwUNH|JE5vR&;jFS4DQ9w}CG4n;s2 zc?%~#H$b(m_X7+aW91pm-&$pvAnI;giNHOQ#K`CgE@l{JL?XnwJol}p()zw_;Yz)l zjCora|5uyvluU}N#NN++HJfQ)CDIed6>Ivn`PUXy-_x(V`YwOyH7>l?-c}0S0_AXU z-agzJyrXNE8(!EMxytl zop-)F{#urh@mB|-Esx?4@_LDvRz(n!?zx^%(7!D|ZW*eZmQ2gHQy>JN;GTt}f#?j< zQR(7zHf9mbhNrzZjm)27B3*k|i4Y_yAMD{M=(EwB`r0VYm*cWEYWpn3^w5>dxa$Wb zO&@BZ?qnV~(-RhqdEO?S@tD!pmgUc zDuGP0d%HpU?X02vbh%C&f$rgo;XB44Y!m;uknSc3V3pi-d7|J zSR1jcJSMFEY7|wQIo+CZuc>_GPY(YL!K7YcI}Ad8KXGHd^pBugn! z2o;ol^^d=`_7T3A9Nl!se)GudicN}GPq{@$otdG8HRgadutU2{EkWCQt?&1OXrl~N zXWKLo%6UI5^D$4U->}ksSv;JsuIOw|pMs5Nv%R`5YB89<)y(4J{Y7`Wb;ER}P1r(Z zAiqFKqjOaU&NOefTOj72t_~u6Bj*#ldcpw3nC;T4`V1{NeHNsu0$o zJlX5d^-ZyD^q~|=w1@V$5AYlmNyn9rBV^8#)6(Cd(~zb!KUE8qRiKo~hM}WtFI zVw1elT6%lE+5l;+On^3ZoD8x|$a$_6E!k@OTiZil7xp&QCMSI6xLib>L;2{kwPnh1 zg0*F_f?SGn%9dvfxIFT;IxXtrm5do{VkH5|xx_+@2P#wvf?djOx&KdLZy6L<(?yLE zf`s7i5@e9zZh_!7g9Zz3LvRc3!JRM!7~FzOaCaTtgS)%CT=Kl%S9R~Nd;WBHO`kry z`t+RY-FvOI=_AENQy!>;p}IoSA7gG`yO zFdabya3@qd@nlkC_|;_wipTVWluI)HdcPOt&bID~`RR)W+uTZluuMxaOW9raV}K+` zzpI~dTq>e-xN2J7%y-M<)1&4#=7!c^0?{w}`%TA{l|^F>XzP#0Gm1=$9#;I*;p(Y6 z-Ju)J!T#GTveVCJ)fNg2&rwtUGLbAMzV=s9vs5X?cUOrG@5)GDipT%$t!s_shG#PH z+}2}%*52}|rtH7-YDM*DU5KeES%9D$!0U-%`@DKIl#7vEP! z-Ii58u(Uw^4XgG0pbS0DwEFUNhpR|=d~#Al!2nq)Uw(HZ==(nh)(Boi%2)?qFfsJR zfC%~KI7{7nO<3J=nXOLuAbt*~n3(p44?iZkQpCRFn#3r*Q|N3Xp!$f__NowKf9~k` zTu~+QdKYiNESq8Y_EP=st5+MC6Nr3$ zSf(=Jl*x4uVm5XW2QDeRy4I3(fMln&&?L3+nm3)Wf9|y+z&H>RMuhETSwV5EtakKa z|DS995lr9hxK57!5R)b}V?*)|j{Q*bGh0xuq~m5_I8*7D3R7?>g7~`FJ)9ob84fd= z+2Nw=S^tG0PVhSgMHQNxk>}Pdb&@AXuV}@nqf{W^;0w~fFvp<*Z{lnCg})Mf+!Xs- zDO+~^+5Jk-;?!2!-lP@z?~p`kMDMjLTsL!A(D`c+Wa#UEArULE;%nfB)9D||`-;~J z{2xECN`wBjXM2v;e=!lk#$_oS!hcNk68alGT8@8A^cjeNKo};*e>EqSmNIRuh0$Q>#S65yvmjF`K{ILGoRglKWoCStaWhWFt zUCg|*!AxS#VzCU~>_d-UyR=bItduxh7=amUJ$c=DV2!4pk*BN+*wUC6^_#8DtWFF-qenV6Rv;(GwiP^Rg3%B+FE8M%oO!Q4OPsHK7= zabUcBlJq~eHL>vCjRU#O-rpkPvv`f2dqVF_?^-AZ)6?^PGjGzXIxKdKxu8un%Lb;) zo-QX3={H`-4X*`P414Gf_XfF*>9Yiq@7fDZ$~ZAmCF997H610Y7~jv!t_qJ}qk)5} zdZi8n_9}vi+))|PhihbJ=bB9V^uQcF)j4Qtrcu%vDd>kn2}LpLiCG{?bic0 zK!Qh;H9R@tbbROrR@}mWZ5E8h&*XXWD-7+!30<&i!lnu5o_3(xL?iaj*#o0H&nQve zjku|pgvimOM;}U-)y&_NtnYCFn^UPlmwn^+%n77!3enovVUi)dOCFwyarMdHdp_ET zELGx?|4ML13ux0Zil5NDIQN-dIBE=&RJq7;Mhj(X+MAB`H94QBO_W2^%Yo)Y`TIUy|x3FO*m_5)7B#`>p436@@<_FD?M!#mi)DjF@Ww_(T#E| zg3B&=u9!#pGypbqr(HfJqCD3RVmf@@iFn&X(1~Cx^HQ4hpQzq_O|8pln7*o}T)gBP zy~&N4VHYo#l<)Z{u)>z*N4z$!>^-@J1E$!QvbUo(((7z-yQrp4QxV9<5Qg9 z{zTHWs$`+xD2F=tIv19_g=7)C+sYB398!LznvlcxK>l|RxrYN+D7TRv`uLYy&4P-HATNZRv{S zXtt!~e*b0b-_;;Qc|$~-8A$b*pv%o`^!TMgTu`Vdv!8A|m*0wL;u^Pc;F|>27ITqsZKw*zJ>yqG*xW(WcH&P<&TZ=(aHYM* zcD(^V;NKraWQqCN$gXIg+dS(Stjn-7{Zj z%VgVh)y+}v`?h>2OYe{^o2orqa4~S*ZySt_EzwL-tmg;&_=nFwKtgP z(U&iM!gF3Nm)-==Zqzgor#=e`ya5*f-zT6 zRYB!Pe}B*G9Vd~8!kZf@iJ4~-q80sI$>0USiJOD|diC1%o=P|VD(c@5n|(cO6FX$QRm^}4m&$pDg&e?}iO)F|} z-uwY8yiFW(7v;2`F8aIfO8T&!z3o%(xZ!&KrT8R#oGM#q!;TMFaeF zCK}mHNmZYNBjJxU;GpK>H^^b+;5vW+{Xl80mK(B`GMZsS!LdGL_j6|SW~tS_>jk^~ zg_`CeMPT6bGK#q1rV{f)i;v=rmBQA*F`qhm4ogDFAefn>z+9a{MTAuG;A=P?wW-wk zWr{+VTOAo09kJ9>h?R2=BxzbO7ra&}qZRTgy|EFqB}!mX&_7g8(X&H4V~xk`jM&N(_El9GSKA#q}!05;%p za>8d5t3?ok>%bsw1w$p=icf;3oU+Mt7jFX?od|YM7bud2xXBMEdVQyr&F?|7UDbWy z+CL*KtQF&bwh0iNCIX7}MZB)^t78}OE*AAZ;DI|DP%->Kt&u>~4$6b;p!NTzC1ta6 z{304efzOE9;{6=3m#B}kJPsgDGyW`71EC6%U?&cu8H*%dmLlI5;iI5xGx8_??R#sA z=cE)k6O}0)jMSBR$%EKoDrx*^e1rheD<=hWZusoM;<)6|ZV@)7G*J$yaZHGo1t6Zf z8suLlf3&s3Um(Q6;AkHSk10|cYV=ael(ySQHlWlvS%!*ds)%saYr!aaVk+oL$?Fows0C`Qu3HPKc94xjxh|46PVEpuU5@fc28r+=^2u`IIr zDbv71=GAlkeiY=FL#Lq4uWD9*- z&|v%%1`2z=eiMG<8W;4(wzGPHF=r+T62O z?Yj-GaIK4(>N3s8a}}6byIx8{=_Q4m_6y%eY0j%TOs`f<;};NE9PV(p`(JapI^}@` z5ZPj%9PPSA9Zw~M&o(zaG5}g7E_om!0k+8g%A7cpI2hD9-`mFVPpDSYV|X`S2+0Je z<7t2XT}-_`A2T|kKkcFjzt!KAnuCc{!%EyUQ~5fPY9n){1YIl^M$mw{8Ape@2LtfH zAEvl<`%R%2^YX=9xM5(G?=IKQD@5C>DC0Bx9nEL%yZ+Rf?6j1gAEazk62Flm>^2xG zB9$pR7wjmQDp&V^xv$mIUg`^=&bJEnTsxGd{)RHAIW<34c<9v7p9q&Y{pBp2RYR-=6wKR97*|u>r6aB;zc2URjaFPO=w2%R!%6qhs zy_8%huRpr;m^h;)+&9hI#_nN7RtQCg00lL){d3uVG9=oAsa+Du=+PsQxrgCQMG6kQ zalB??j)n)C9@EQoH{1m@`3oAwlNvlR(phP}PDVfYM^ zo!OPjO15s^>!I{~?S`1&P+gu1bHE^zmCl#E?kNge$M(|>+evf<JO_6ZXaXo(Nkkn}|DvqDTz@gZ@yH_T2KDr=Q}>^Fdx#`Mf8{s71?(gc!NKJ7uL*N{ zt{RO7W=M!=m_?he)w3GCEJ`5Ggl+~FRf<*(Bv@EuM$?7Bhzq^nq{F5+@7w4wqo%n4 ze|l@aMb%o!_b*NBjR^(xV$x43hJ<(*>UIn;v6YY8MCNS3Zm%#{%X&q^xR8s?H<`he zpS>z?=)Sc!T&Xf^eH)2_-IiurIEbK9LZXDPV3mvI3-s*~!<3K-JcfuHJ?d0u1<@NT zDI#ab`&r&L>=?>t*2*Qy@T7+=eUztdf|}2xL=iWh&bFLfUkftq(_w%5Se%?{>If64 zgBG4LCWc$vzjXQ)(C+pzq?&T-(;8jjZp4Qg=so3Rzo0@q|IjikV9`k2^N4v>{!JRH z%WwJKs-DC0X?N?%3YFO`nR?$J7V9Qu=c46v7wA6>4s-T$={r;a2IuZ{B`8RQB#^h& z==w*#Y9e~>PMY<-G-5?qqlds%eOnRsJ871S7{{_rX;iQ<=)3u@3_>n5BeN7D&Pdbu zbbP2+A&Ha2=H)L@gy{ksuwl_hdX0Mt7BEzY`RN zI7>1qH5v~wk_Y(2utgZui42;GDCD_1&S3q0`Yt{d0qjlaW>n-$ z(%ssWh)X|6>obtC>iC9Rp*F>?X1I6Jcb!-|*tK{ja29U-oa8%B3S-~rw8MiD1)y07UPLWgGe(G4Up1ZJ_cBsZ8K*tO_E*5Q~# z^)5u;e`}yrQxB;(T+3p)Or@+3b&a)fPEPw)al>cXC1d0+;tQA>`Nrt|MYFb55e!k5E%G%JOX} z7Ex}#dGtN{#{x$JWS8YTYiEAxZ%k{y*rjFB(%f>|c;i2O2g{sxzuWqJwz>##&2)%T z%b9*frhW2f;Yx#ByA<8$qiq*0V3j8ijotj!9#8Rj#vA+D0m-elEBb4m*fy%XbcCtk zTMcQ!H=WZ@1uL;|O|<>WjJCaE4naGg18GGG_Btr-;9QPp5#X?bvsXk)Bt!6#O ztjk6bX+qraaBxOcwJ$T)eynt7c32D;uLqj({}_|8x35}f5ZHO;t47;Dz;{a%KL^%p z#j_G(LirC!t}XlTyp{d`BeWr>JzA3aDZWMMSiy$!LyEB%@_v?J8sPN%m3t|iW z{EbxRbK+Kd2I$+sdm9@YlNa5TV>{_h9YLNy5i9g|TYZ&l(?&<`yhe7KU0g+WqBTY7 zsvSO46@TxJAY{{TW-c{iRa-R>J;Qlz|K(xuVTj?|7``{T{s9?&=e7hJ_wNeW9Im&X zNx5|*Y$mn?H$t0An<&NEzA7o~oKm@SDW-gq5rzoZ@($e@$aD5Ku*Cs4yt&5tlpcL} z6?!9Y4a{M?76I0;$mN-c+m-#zKT!I$ZBvYfQ1=z!C5Ty!D(u!bo$i`7`h)f5&)Xo!Rh1uR1`7 zI<9_XPA@f`Prv#8<3*X*=rUW4+Y0}H>4i)jvD(~3lQ|-M$JRFkgn7PEK^Q9RD@E3|?745FtA9qdzC$i}y_PmLW8W;{10J zt`bW_kkX;7<(sPFsw$I<_jK^?qPCG5)D5l&X$l?j#8yJF-}eM$%+3GW)fLZrcy_pS zvJXDY*u*lr>Lr$c-k(B_l6o^6Nr6zn!Q8BbU(IQc!F z;WMCZ<%+TYBbe4EL00;^+(3NgMi_#aDS2_E`ezLvDQ5kc+;XMl+vmP;)>at&iD+|r zVNhQ3ufFJB;$gd5{c`#v9_^h7R|bm~^kB1jOu3Di=69%52r$*rnmT>Efp$#z7D`!LIUIHqtSVyxVEp>1@W3LTO>|`Y3);?M(aXGhX_h{9@QtB=ADyT=F zsdo8LPnhMHG%oMaF_>5OCGb?KMS1l{zq%Zy^B&9d;xVd=q#Hvu>fX@Ts~?MJ7v4y{ zd;o|*8eN{WqvaUz2f$7JdV~}k0TinlDa*N-_`6JQa(6Lx5$DJ;uegx|dYr=C+WbL< zhFT#mThiF<=)L71L=KB&l~dX~r29MKqLF2!F3zKnUJ?0s=qdid*v55vZ*+mM+~#8H z&^wjXOY6{-ie-jt{m6v&_oZnaui=oIHJ8i^dN!n7h=e`|4P(3;RpaI$PAGj1Y$BmZc4=ME zY!sN#_86|w_JO4A_w+OekL1i6mg9P+0%$F@(U8`Lv6#N|rhD9D6aP}|8W^X5`1U;QmCo;hX? zp135~M*hPDiyUAykNzE3+>m`O!dy!W*;q{PNW|2ltaOu4jn(~p`{s`j_zLIcx{n3L zH{D~oPp!ggeF5zFX<-uMJsW<}W zWWbpu80R{w@GqMpEn8}=wWUS(K*pEdaq#e-X*jKO)4X1qUW~r#n&za2t;&Z9=md8T z*SVP;vty?x;oGByc#cVF8dEbNf7CkEOPaVAE+`{z5>TH$zs#ipKLjegP?OsmO?9~w z1EA^eTv%Jkek&Mv*M7`fAe?7i?WwvqdA3 z5Mb8}eD=a&78u%Gzs6zM-+dneF%s)3FB5P}s?>r&o#g#RMyF3Yw%GspwedUU6@8SG z=MKii$YibmrB~F19U6(5_Zlz~x&M^hf;n*mp$FU2*q!JttN!pL=Df z=xj5&Yx`gDA0*UwTn(+k?Gt2*NPw4Qq;6hiGFFN= z`kNE9zx1*nsuhi3r1`VnT~~urc5V1@`Xu$Ia#(P0A(HWO%GsJJd%%RBzGh0DK#FfG zdG%;rK$p5lk6lgLhi=nM+Kb6|-?F?NKiYnGwxDHcpwg~Eu$DyVGgq6|bbt1loij{m zFl3gv0=Fi(_eo`UuA`j?Sj{Dw|B`w}&z3lm2tv+%UNq5d*_}o+5$Fcd&U>01WUPcP zDsE7*u(T=8RdUT8Jmde|^)iF2^EtC+NV&3iO7JkrYqbbrIvoceLB3MDS!a}Ws$bh1 zo2mYsZb+&=?HTWwm@3ENfSh&0DZ`4XUn`DjuQ6h@xFQ|x2|n6V*)itUo#L|KY$df4 zcqWl92|QZ4cjEDXt*<1|@R*el$8I_B_f?dBO{GV-7GgAok9~gN?d;t{4D5%;)2!<5 zmc1S^-KLs@mRz%v|0dZoH>~*lc%I;qjFt8Y>)@rWmY^x&c-v-ccKOd zFYmw;N+Z$Dhr73@9y;+jh!ph%?&p=oIVJ~O2VawLX+hBSXZF9Lb8aVKY9xojh8TNbo!C+7S_?g>Gvuy%vzeVPc>-=zyKcK3Gg3o7>bZt4+mSm93u zc}qp2w8nX1W)%y9k}dSLtGn6p*J+Qxjn zqFW_xkDtd%w>yw-iiis7aUWwHYulu1o_5+|{c{vi;$C&^cwkghIz0LtBbtEqMv5B{ zqSmud(_}6ltR_TSy@av99&%li@ag5Kgm{BJ-!8Tk9bsnRkCr4&*is{ClgbW!(q~JY zTgK|ZC@h6T?+l{Vl0^sd2G}WB_ru4hpuWEFYFQVdjK~w&T@MjrjIW$DutnCNgx#j$ z*U{DF?nYA`x%}#{f^)?t>|KN_-X@$*%ltJ!Pwt%c7Rp#OOGcq;x&(y1LxB!AbeVL; z<7n-%9}%AULSLHkg0NWEcf6xM&-p&rGx`O=1dK%L8}}Xgp$ctoeDT9%r8a?~AD~{^ za#15uCCR44H>%@F&EW$F-e!=8PE+CjOABMPioOVWhmZ?q^qBeRqp zw$9WI1Gd7g*3oQAV;wSaKVjh0VK**HzN+p^S$Mjxs#G+RI{EZ-OzmbsmxpdzGESuaZuvt15c<*d8Cl9}n7(>}6*#04W`Om@v^p zy*njbF+6>}v-cE?I0eY{)8S$rAN7+Adx}&luyN(k3T4j3t%QHz;CH|6ekdzNPA39Q zP2rw}_Hu=viK`ehEz5{=1D@ZudMnIz=!KW&EwNlYWh&p-rp@go?s=X(0Q89w3w)Dd zFB%)T4~!bE9ZS40*t*mbk4QFS7JAo{_Qpmgl#1b=wLaTMp|SI{q7I=*xF5D&{+df- zm;&!rvrT>VVyl0Lp}nW!*GbU9k4wch!hYZRJZs%XCPp<(rh+cgiUm+QBug#23o4DCKxQk5Bw?*Q!0jfvs~R?0BBL^fRN}SZr^58Fu5R_1Fhv*j5Wp$;ITl zdl4Y6uN}Rf+7}5>xtZyEm25I)OFiAJO{~Oy*$t}Nb{6)`aaFeGY#?7|bmV+y+A{sz z*=f<=UEjxx8uq*!L4cV$q@s9DlYnkFuV{(EGgg_Eo7ak%HgKL=;)I6hx#ng?qUy?r zD1}#?*fvgNIQJwql8YFV9%n{T6fZicIQFATIs~dluljEIU6p+bHg6ni0vjDSO*4|c zd1ZRNT~W|Y>Z0%3g~6T+AHBp63hWw&NiO=2urt>BF4_fb;N#y{XgR;Tn1}|@P_)Ip zsU7An(5Fw&X;tx4)9_E^M%*}<@>ZqAKtU+uAQ=Jl-5yOhO@&r6e*==X3Ta(vC^R6~oiP#(ob?fZp9w^8-VjI4_Np~WYcRYW0%oQmIH@d2`Wj8W6kPV0Mo zOwuL^5R(_NoY$=~jTqpDpU)#2-r@TWy6l>jlLg!z>hwrW7O@~n_jzKKE+h-Uc~`6)gCA(~!*4)mlxi_N zt>U z8ZnL9#yC#}?msC9fZjEY!HFGLk*`*u09>Km7$q6oCl_scP6|ck$Q0G!+PkoT!4Knws2W`=S`j(DT2I>{$sg(6w1F$hUAhEA!(%PC!np5a8s2O zl+L?LkmSa}eG}yW(;R2E?&CL`(JsgFwl-8=cOk#S@vKRyAIL6h3Z zTSQJ`LSHapZ~ zTjY!_kkznfdxo>d&S)y;ZY5+QjZnxpYSYKoO6;^CVDK4Cp?Ez z&c;&9Dh9KkWj8)c1-Xtv&9r9dc1&(a53WlOzcQpheXr$gLO-*#yiM{LU|6vsz^5p) z(J&)yt!hl~aJNUW;AElH*opA zt!@*Dn72Qb_?){nPsJ2mcTomgr6hD2Fg_x>=Xa`Qc$`P95V^b~N8fs2b#wHIP*_QF zcJWG8p74(ED!Ev&s7K}tp8Wru@ud=R#`???-4@RK(q|h0IcHMD9 zL>xFrXjRr}yU6Nx#3R}vq)nlHc_Jl_z3WP!n2t3xG))Eio^QP(5WXjSbgD03a+JK zm|TSf>23*#_jVoG^X_SAz1OVe!t)9Aa?RVAj!7p0N#fsak=yQ)x$+pDe#nxX@SW6m z)30W+`8>>#FrGQ>F~g(Sv7bCeWQxM0tLy*=g_YIIfVE6DrX(Gd=e z^CbUUxx*WkC>B!u3|h$|>uU-oC9uB%3f6iEG#Hh|VXSHv4LlIkvs;xrG1}<;%Dgxy z4lmT_-TX6R9hkW6|H=E(E7#=0(wfRFVAw+FPpNfgajtr8uK8Q5c}ViC72^jBHi_k2we@V^(oVv@b&I-b`pYIZ^EJ^ ztpELzlM4LTA;*aOkWa|f5&`a2^y8KHx<|#Hq}%jNEQxpVGOgYGiomQCBmRfc>O!-kMn;yh4#MwzmrAuEdFEL{+BVr+Q!A`KP0EM z^XnNZoN&eeNgVNt4Yf8Qu!oq1v{=1_7ln6fBE#pu0m7%+cM=ozBZq!~fCQqXlf`kh zCIUh~zm;R63kPERdj(QM3vPWhTHpC2fDrJkvXFv)C4KZVo2j&}NqBm5)O6CmxV9La z)Z5^C>LvOIJd!rt;+b*c<8(Y{o{?!tYAu9YFFN+ixLbqh+%KXm^LQcqoAPU7)-OFxDNF4sg!?DXnLyq=3Par?jkq;zZ zyFBxNmDY+^*CE36a5AhA$jyzE>qCi1*YP5N3c$(@+#MyP*HxySW)waeZ>>Y&LGHHktd=orTB3Sxa zR%n#Dl!nMG%>Z_%X1iQ~0%C$}99}ySycadRv$am9vwi;<_LSIL>NwMIH7-xNEFfSo zqd^31`S&CL%LY=gyYqbsVMdH8^E)3y$sa@TxMbu!+bYDExCWjIgQBETf9s%$I)hNC z4O&oA`*&3(Q$0bHy%;qiNHz17CK;2!0DGTk!`1u+(#L&K^%JWOeSVT==RmeLi~ST0 zCW>7F;0Ql%u3hrRPVw46(K;tldoU$3p#gZRymq;=RrQUiw9QApl@8~#H8ey0omC}5&hZGPn|Bz*g2N_%5AHy0;26Bn+?A!brCT_HmLisx zjvYnzA>TODOWVrfFfqtqBzU`vT?g zfYowkiYUK%od#JuN}5V?6;IkFH1nTbG*5;>J>LhqCcZPrHAJ;8<$UQdxO=)ml>bG?U$hVG zUp(g6UC`>O#zYGQxMoD5kr%_DL{m1#`5WLi05T(u zyN{*ev5J^_FjyRbDB$Sl<*s%f-{dMPnEIQFCmYsYq@X zfB`8(x8X+LQHEGL&P)W7La4R3hZW4i3JsF$9x*S>biX23*+A7cYHC9nMd%9wYE{ca zkHPLpoCsHwwm=e#ES~{*)GM9YR7E+xoTcQ$-?Ftmqff7u@=hTvM0+)IgA1p%6Yr&fr2<-v z3vED+>k!j`ptf#KB;QGe*jT<=*=2zW{5N5Kbvk{e?&;H;eS!w8a2&#akd4C!8ps{7 zljN45t}i1?2=&7U4Un0|U(hgi@-IIG8Xj8u;T?4==eZ0P1;P(%6RySvaAXvicd zAHC&ETGG1H`E`<1`6CO{et!kob$Z&TEP>4y^tL;1wT7|wVaa<@A8GeLkz%=r*8xhw z2nGVUTZDGqa`#We-#!+=_Q$rlR8&^D!R&Y=@Y<<8zg2r#LTb3~mnQQggW|*QkNQY) zRUq^lXhJ-ppx7Vdy6F1z=1}a*}X!9LBr^0reoZvuT`!#x}?E>Tw`7hocVQqC8z=E zLofAvJu$fQ(mpe@G2kK2Lc_Y}ooF)&u1hba;57BrqwD6kI>>mX<)n!U+;1x#eGrU<$|yU3 z{i_<@pnyr&9bckiV_!Cop-J0nKIc@WpfxL6yI?UeQ<%ck`gv#o4Q$LIIkib`d1+IkM5saGTcYZ4 z<(d29{ibme*BbWZRBU%kGW`0A$*kOZ|UP{W}-H1pG#fS z!Lqx?r`AHP!uN47yli+H#>mxQY40OtFKvon`i_qAcUDY-JXpv1A!;ln@i{wPG zfn2Ug%T0`vlbc?%@pT-X{l8@J%aGTlL0Gj#S{OAPQ8$|Njn0c zCsjW9)0)__O#v{4e~t6E1pNiKJM&*yj7_y2|N2(%l1+N{9a3Z|X!U#M?D=k_{3Eg> zUauXU%eV8Rvm;y4Yf8_^1b_nEU@c4BhjTXJuD_G08(Qxrv{5@By16 z%+3qGt?WoM^g3)Wa9rtt(V}oyu8mJQ?y98)O@%|U*D3LKlfFC~c{H|1sgW%ldG-cK z2ai+g_4lSjtOZ51lP;7tWJ~tPmbk%eZfAQna!KEa+Y<5YpZpn^$I$d09Wzu^=LVmx z0hF6-EbJMJUpeacLtmz=u3(dmR-7DtuKaQNu$e8@DC-xULTBYo~ z`B~~PbgfGJ14*PJ02^KmmWY;|YskwdxDnAwI$x3~9h&Vrd%WUIQC5Fl1X&;+#p)Da z4YMSdY?VhR4W%EES#lB!Dnc%r3McV!q@~Z(n~u#q46kEQ5Um!fBR%?lf0a68vH~G- zMF4J+cc~sg19gQgT%cWmmVEcGQ?Fa8P=Zw7CyR>(*Y%oQK=Dou!D1WkG|81P_LY|$ z^R56##^JVJYumgbt6yVsVFjxwiCoQwfON#rS^v!FGhqGZW zB|*3&XBHYh1#Y%2+6ohfza2Apw7nDsXVK_*@p(x>`prrAnd|@ocdqmbrh4DI=;KWhf*+xvzoxw%gnNxX)nx946qbsN*!X%JBMW zC(CR$5MJRnQRN^F+%J)h`TO4DoI54?5N)O3SY)pPAyd2J-7lhPfx8Yg8%)sk{0cG% zK)pwP=@wIrp3Vm^803o~!qHKp2_ndVTqg^tLU^(=yr)ZH@1Z{=D*XWY%#6+Iga!#e zoCsgP^4O$P=0rjTO2RQhh`Dwh3N9T%7fknuW2WZ!y!7pQBu#S0v|+&0bgfYQ z4AM`sxYi*6nm{Y*KdPI)*lO^p)wt19n;Rzk6s)a_udHsJ{oW7sL-G&@Sq+uHyT30` z@{$jMt4q?#ZEcpEy7dYcoH|4FVN0}f3HB9^d4P>YDUVuh1)R*OcuP*cj8u$?kHQ&b z)a)6;MO*2&HgBYqoQfhERM!MWt_Cm_Dz#Z&hm(wTCA~Id0w~uvplTWJe+KogGn@Ng zf?7-y_afpgiGn?X_89hAm?d5IkN$gwcUp8)A_hC6mhsF2Mg9;uq ziQtj_F0I~(a%D&hO($*jzfC6%YR@c)iZfzXayI%RsPb|UsZW`56zQh6p!MiD-a8Wd zFs4M%)1KLh0dfic=V`>y`Q4y`=za-&Ww=S!_m>);Nj}tHCIkUok$UjxDH;F7a@gQjqzqOqE$Mu<6UpidfuuP95;(n{L8Pe^ z8uQ*VKk05l7O&?K*+MN^?<5-jNP3W=Fi|m8zU0H**WxvlxOf=Yde9~KWhbx^%k{*` z924Es{-q*_6&LF-AB`(h;3q6IGIrtvc2Msp%APBm>u_%35M8RQw>-rEyp718w21@* z{Dy1k0o=qi7IF?>P5Pi7S~P#^SkuiP_OB9~xbGlZTpYfPui%QoTv*&{?#8fcS!&P{ ziPHgz|2V&^gQ-c&$#PLWnbT7G$yi`gR_j9B-ww|Dd+wfd`cuAY;BA1;{TR!1>*<>H zpPmf&4H4a{xzM&l=j11|@&N@;eO8#__cXuyW@zF$Yc@ouwZstrE`K1E9odre_>Q5> zZvQ+QQo?j11uvuw8L#sxfzc|!-IM!ffcr{$j`|`oCQT!A>3S^CDNk+;!`eTyrKx9N zc(I|esX{pIGcnS;r-hI_be^1qjnN8xRxeO_5Z*@e-=7&CRjPJUBFL+e{EwDwJOgf0hTCI{kn8NtB z|N0GXrb)1l4K<#(qBFB@#HYHp2FAA(e%V4_e$O!dULIeZ%B!l`$=PlFok}`_QysNK zqA)%o%W5|buZZJwn(7k%Z-K|rQT^OXw|6Suw2{`&+;-uvA=cuuqkV@hsE}$SgR|rs zZ-=wKX~QD{(jQf>=j~qj1VOk0#T~FphSMHv%C{rlgM@ea9tj>MrEV2-?JfAN@;jS6 z*^GX-o^hO>QT5k*Vq#+XVwyQn@9}(B9PKI_v!h-=I%8jXMis)9SsO^ow8#08wEWq7 z