From 2bbbbeb2f858a3f30bd535159541a230c118b212 Mon Sep 17 00:00:00 2001 From: Linshen Xiao Date: Tue, 19 Sep 2017 19:37:17 -0400 Subject: [PATCH 1/4] Basically done, editing README.md --- README.md | 88 +++++++++++++++- src/main.cpp | 5 +- stream_compaction/common.cu | 22 ++++ stream_compaction/common.h | 2 + stream_compaction/cpu.cu | 61 ++++++++++- stream_compaction/efficient.cu | 187 ++++++++++++++++++++++++++++++++- stream_compaction/naive.cu | 41 +++++++- stream_compaction/thrust.cu | 8 +- 8 files changed, 397 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index b71c458..c74c27a 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,89 @@ CUDA Stream Compaction **University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** -* (TODO) YOUR NAME HERE -* Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) +* LINSHEN XIAO +* Tested on: Windows 10, Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, 16.0GB, NVIDIA GeForce GTX 970M (Personal computer) -### (TODO: Your README) +## Features -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +* CPU Scan +* CPU Stream Compaction +* Naive GPU Scan Algorithm +* Work-Efficient GPU Scan +* Work-Efficient GPU Stream Compaction +* Thrust's Implementation + +## Performance analysis + +* Comparision of GPU Scan(Naive, Work-Efficient、) for different block size. + +| Block size | naive scan, power-of-two | naive scan, non-power-of-two | work-efficient scan, power-of-two | work-efficient scan, non-power-of-two | +|--------------|----------------------------|--------------------------------|-------------------------------------|-----------------------------------------| +| 32 | 2.31232 | 2.30061 | 1.0649 | 1.03421 | +| 64 | 1.75728 | 1.75683 | 1.02925 | 1.06506 | +| 128 | 1.76538 | 1.77981 | 1.02992 | 1.04938 | +| 256 | 1.79238 | 1.76445 | 1.03142 | 1.03942 | +| 512 | 1.75421 | 1.75085 | 1.10819 | 1.03946 | +| 1024 | 1.75885 | 1.75379 | 1.06323 | 1.05293 | + +* Comparision of GPU Scan(Naive, Work-Efficient & Thrust) and CPU version. + +| Array size | cpu scan, power-of-two | cpu scan, non-power-of-two | naive scan, power-of-two | naive scan, non-power-of-two | work-efficient scan, power-of-two | work-efficient scan, non-power-of-two | thrust scan, power-of-two | thrust scan, non-power-of-two | +|------------|------------------------|----------------------------|--------------------------|------------------------------|-----------------------------------|---------------------------------------|---------------------------|-------------------------------| +| 2^8 | 0.00079 | 0.000395 | 0.046112 | 0.035296 | 0.106176 | 0.074688 | 0.03664 | 0.013728 | +| 2^10 | 0.001975 | 0.001975 | 0.047552 | 0.055584 | 0.106112 | 0.098848 | 0.023136 | 0.013696 | +| 2^12 | 0.007111 | 0.007506 | 0.067552 | 0.065088 | 0.120032 | 0.182144 | 0.029984 | 0.020512 | +| 2^14 | 0.030419 | 0.061234 | 0.074976 | 0.064032 | 0.145696 | 0.140928 | 0.05952 | 0.047424 | +| 2^16 | 0.118124 | 0.120889 | 0.116256 | 0.115424 | 0.185984 | 0.18752 | 0.153856 | 0.163648 | +| 2^18 | 1.34716 | 0.503309 | 0.408064 | 0.397536 | 0.313952 | 0.298272 | 0.228928 | 0.36768 | +| 2^20 | 2.25462 | 2.55684 | 1.7671 | 1.75427 | 1.08269 | 1.07862 | 0.310208 | 0.406784 | +| 2^22 | 8.39032 | 8.32909 | 7.86064 | 7.81309 | 3.96986 | 3.93744 | 0.865472 | 0.864512 | +| 2^24 | 37.5455 | 35.584 | 34.8642 | 34.8712 | 15.5057 | 15.5434 | 2.62048 | 2.70346 | + +* Comparision of GPU Stream compaction(Naive, Work-Efficient & Thrust) and CPU version. + +| Array size | cpu compact without scan, power-of-two | cpu compact without scan, non-power-of-two | cpu compact with scan | work-efficient compact, power-of-two | work-efficient compact, non-power-of-two | +|------------|----------------------------------------|--------------------------------------------|-----------------------|--------------------------------------|------------------------------------------| +| 2^8 | 0.001185 | 0.001186 | 0.003951 | 0.094752 | 0.093824 | +| 2^10 | 0.00395 | 0.00316 | 0.024493 | 0.176832 | 0.10768 | +| 2^12 | 0.011851 | 0.012247 | 0.076246 | 0.174656 | 0.202976 | +| 2^14 | 0.047407 | 0.063605 | 0.126025 | 0.20528 | 0.160288 | +| 2^16 | 0.193975 | 0.185284 | 0.463013 | 0.211744 | 0.243264 | +| 2^18 | 1.04138 | 0.776692 | 2.61413 | 0.368416 | 0.360832 | +| 2^20 | 3.66025 | 3.52553 | 8.02608 | 1.46659 | 1.40083 | +| 2^22 | 18.9922 | 12.979 | 39.1909 | 5.3247 | 5.31274 | +| 2^24 | 50.8401 | 57.8019 | 135.726 | 20.4587 | 20.4935 | + +## Questions + +* Roughly optimize the block sizes of each of your implementations for minimal + run time on your GPU. + + * (You shouldn't compare unoptimized implementations to each other!) + +* Compare all of these GPU Scan implementations (Naive, Work-Efficient, and + Thrust) to the serial CPU version of Scan. Plot a graph of the comparison + (with array size on the independent axis). + + * We wrapped up both CPU and GPU timing functions as a performance timer class for you to conveniently measure the time cost. + * We use `std::chrono` to provide CPU high-precision timing and CUDA event to measure the CUDA performance. + * For CPU, put your CPU code between `timer().startCpuTimer()` and `timer().endCpuTimer()`. + * For GPU, put your CUDA code between `timer().startGpuTimer()` and `timer().endGpuTimer()`. Be sure **not** to include any *initial/final* memory operations (`cudaMalloc`, `cudaMemcpy`) in your performance measurements, for comparability. + * Don't mix up `CpuTimer` and `GpuTimer`. + * To guess at what might be happening inside the Thrust implementation (e.g. + allocation, memory copy), take a look at the Nsight timeline for its + execution. Your analysis here doesn't have to be detailed, since you aren't + even looking at the code for the implementation. + +* Write a brief explanation of the phenomena you see here. + * Can you find the performance bottlenecks? Is it memory I/O? Computation? Is + it different for each implementation? + +* Paste the output of the test program into a triple-backtick block in your + README. + * If you add your own tests (e.g. for radix sort or to test additional corner + cases), be sure to mention it explicitly. + +These questions should help guide you in performance analysis on future +assignments, as well. diff --git a/src/main.cpp b/src/main.cpp index 7305641..b70a7bd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 8; // feel free to change the size of array +const int SIZE = 1 << 18; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int a[SIZE], b[SIZE], c[SIZE]; @@ -79,6 +79,9 @@ int main(int argc, char* argv[]) { printElapsedTime(StreamCompaction::Thrust::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); //printArray(SIZE, c, true); printCmpResult(SIZE, b, c); + //std::cout << "a[0]=" << b[0] << ",b[0]=" << c[0] << std::endl; + //std::cout << "a[1]=" << b[1] << ",b[1]=" << c[1] << std::endl; + //std::cout << "a[2]=" << b[2] << ",b[2]=" << c[2] << std::endl; zeroArray(SIZE, c); printDesc("thrust scan, non-power-of-two"); diff --git a/stream_compaction/common.cu b/stream_compaction/common.cu index 8fc0211..c1c7d66 100644 --- a/stream_compaction/common.cu +++ b/stream_compaction/common.cu @@ -24,6 +24,19 @@ namespace StreamCompaction { */ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { // TODO + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + { + return; + } + if (idata[index]) + { + bools[index] = 1; + } + else + { + bools[index] = 0; + } } /** @@ -33,6 +46,15 @@ namespace StreamCompaction { __global__ void kernScatter(int n, int *odata, const int *idata, const int *bools, const int *indices) { // TODO + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + { + return; + } + if (bools[index]) + { + odata[indices[index]] = idata[index]; + } } } diff --git a/stream_compaction/common.h b/stream_compaction/common.h index 55f1b38..e1d1e6f 100644 --- a/stream_compaction/common.h +++ b/stream_compaction/common.h @@ -13,6 +13,8 @@ #define FILENAME (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) #define checkCUDAError(msg) checkCUDAErrorFn(msg, FILENAME, __LINE__) +#define blockSize 1024 + /** * Check for CUDA errors; print and exit if there was a problem. */ diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 05ce667..ca3d992 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -18,11 +18,33 @@ namespace StreamCompaction { * (Optional) For better understanding before starting moving to GPU, you can simulate your GPU scan in this function first. */ void scan(int n, int *odata, const int *idata) { + if (n == 0) + { + return; + } timer().startCpuTimer(); // TODO + odata[0] = 0; + for (int i = 1; i < n; i++) + { + odata[i] = idata[i-1] + odata[i-1]; + } + timer().endCpuTimer(); } + void scannotimer(int n, int *odata, const int *idata) { + if (n == 0) + { + return; + } + odata[0] = 0; + for (int i = 1; i < n; i++) + { + odata[i] = idata[i - 1] + odata[i - 1]; + } + } + /** * CPU stream compaction without using the scan function. * @@ -31,8 +53,17 @@ namespace StreamCompaction { int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + int num = 0; + for (int i = 0; i < n; i++) + { + if (idata[i]) + { + odata[num] = idata[i]; + num++; + } + } timer().endCpuTimer(); - return -1; + return num; } /** @@ -43,8 +74,34 @@ namespace StreamCompaction { int compactWithScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + //map + int *mapped = (int*)malloc(n * sizeof(int)); + for (int i = 0; i < n; i++) + { + if (idata[i]) + { + mapped[i] = 1; + } + else + { + mapped[i] = 0; + } + } + //scan + int *scanned = (int*)malloc(n * sizeof(int)); + scannotimer(n, scanned, mapped); + //scatter + int num = 0; + for (int i = 0; i < n; i++) + { + if (mapped[i]) + { + odata[scanned[i]] = idata[i]; + num++; + } + } timer().endCpuTimer(); - return -1; + return num; } } } diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 36c5ef2..7e1e5bf 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -12,13 +12,140 @@ namespace StreamCompaction { return timer; } + __global__ void kernScanUp(int n, int i, int* dev_idata) + { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + { + return; + } + int p = 1 << (i); + int p2 = 1 << (i+1); + if (index % p2 == 0) + { + dev_idata[index + p2 - 1] += dev_idata[index + p - 1]; + } + } + + __global__ void kernScanDown(int n, int i, int* dev_idata) + { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + { + return; + } + int p = 1 << (i); + int p2 = 1 << (i + 1); + //index = index - 1; + if (index % p2 == 0) + { + int t = dev_idata[index + p -1]; + dev_idata[index + p - 1] = dev_idata[index + p2 - 1]; + dev_idata[index + p2 - 1] += t; + } + } + + void kernScan(int m, int o, int* dev_idata) + { + dim3 fullBlocksPerGrid((o + blockSize - 1) / blockSize); + for (int i = 0; i < m; i++) + { + kernScanUp << > >(o, i, dev_idata); + } + cudaMemset(dev_idata+o - 1, 0, sizeof(int)); + for (int i = m - 1; i > -1; i--) + { + kernScanDown << > >(o, i, dev_idata); + } + } + + __global__ void newkernScanUp(int n, int i, int* dev_idata) + { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + { + return; + } + int p = 1 << (i); + int p2 = 1 << (i + 1); + dev_idata[index*p2 + p2 - 1] += dev_idata[index*p2 + p - 1]; + } + + __global__ void newkernScanDown(int n, int i, int* dev_idata) + { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + { + return; + } + int p = 1 << (i); + int p2 = 1 << (i + 1); + int t = dev_idata[index*p2 + p - 1]; + dev_idata[index*p2 + p - 1] = dev_idata[index*p2 + p2 - 1]; + dev_idata[index*p2 + p2 - 1] += t; + } + + void newkernScan(int m, int o, int* dev_idata) + { + dim3 fullBlocksPerGrid;//((o + blockSize - 1) / blockSize); + int inter; + for (int i = 0; i < m; i++) + { + inter = 1 << (i + 1); + fullBlocksPerGrid = ((o / inter + blockSize - 1) / blockSize); + newkernScanUp << > >(o / inter, i, dev_idata); + } + cudaMemset(dev_idata + o - 1, 0, sizeof(int)); + for (int i = m - 1; i > -1; i--) + { + inter = 1 << (i + 1); + fullBlocksPerGrid = ((o / inter + blockSize - 1) / blockSize); + newkernScanDown << > >(o / inter, i, dev_idata); + } + } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); + // TODO - timer().endGpuTimer(); + int *dev_idata, *idataall; + int m = ilog2ceil(n); + int o = 1 << (m); + idataall = (int*)malloc(o * sizeof(int)); + for (int i = 0; i < n; i++) + { + idataall[i] = idata[i]; + } + for (int i = n; i < o; i++) + { + idataall[i] = 0; + } + cudaMalloc((void**)&dev_idata, o * sizeof(int)); + checkCUDAError("cudaMalloc dev_idata failed!"); + cudaMemcpy(dev_idata, idataall, o * sizeof(int), cudaMemcpyHostToDevice); + + timer().startGpuTimer(); + + newkernScan(m, o, dev_idata); + + timer().endGpuTimer(); + cudaMemcpy(odata, dev_idata, o * sizeof(int), cudaMemcpyDeviceToHost); + //exclusive->inclusive + /*for (int i = 1; i < n; i++) { + odata[i-1] = idataall[i]; + } + if (n != o) + { + odata[n - 1] = idataall[n]; + } + else + { + odata[n - 1] = idataall[n - 1] + idata[n - 1]; + }*/ + free(idataall); + cudaFree(dev_idata); } /** @@ -31,10 +158,60 @@ namespace StreamCompaction { * @returns The number of elements remaining after compaction. */ int compact(int n, int *odata, const int *idata) { - timer().startGpuTimer(); + + // TODO - timer().endGpuTimer(); - return -1; + int *dev_idata, *dev_bools, *dev_odata, *dev_indices, *idataall; + int m = ilog2ceil(n); + int o = 1 << (m); + idataall = (int*)malloc(o * sizeof(int)); + for (int i = 0; i < n; i++) + { + idataall[i] = idata[i]; + } + for (int i = n; i < o; i++) + { + idataall[i] = 0; + } + cudaMalloc((void**)&dev_idata, o * sizeof(int)); + checkCUDAError("cudaMalloc dev_idata failed!"); + cudaMalloc((void**)&dev_bools, o * sizeof(int)); + checkCUDAError("cudaMalloc dev_bools failed!"); + cudaMalloc((void**)&dev_odata, o * sizeof(int)); + checkCUDAError("cudaMalloc dev_odata failed!"); + cudaMalloc((void**)&dev_indices, o * sizeof(int)); + checkCUDAError("cudaMalloc dev_indices failed!"); + + cudaMemcpy(dev_idata, idataall, o * sizeof(int), cudaMemcpyHostToDevice); + timer().startGpuTimer(); + dim3 fullBlocksPerGrid((o + blockSize - 1) / blockSize); + StreamCompaction::Common::kernMapToBoolean << > >(o, dev_bools, dev_idata); + cudaMemcpy(dev_indices, dev_bools, o * sizeof(int), cudaMemcpyDeviceToDevice); + newkernScan(m, o, dev_indices); + StreamCompaction::Common::kernScatter << > >(o, dev_odata, dev_idata, dev_bools, dev_indices); + timer().endGpuTimer(); + cudaMemcpy(odata, dev_odata, o * sizeof(int), cudaMemcpyDeviceToHost); + + int num = 0; + for (int i = 0; i < n; i++) + { + if (odata[i]) + { + num++; + } + else + { + break; + } + } + + free(idataall); + cudaFree(dev_idata); + cudaFree(dev_bools); + cudaFree(dev_odata); + cudaFree(dev_indices); + return num; + //return -1; } } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 9218f8e..a53b8e0 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -12,14 +12,51 @@ namespace StreamCompaction { return timer; } // TODO: __global__ + __global__ void kernNaiveScan(int n, int i, int* dev_idata, int* dev_odata) + { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + { + return; + } + int p = 1 << (i - 1); + if (index >= p) + { + dev_odata[index] = dev_idata[index - p] + dev_idata[index]; + } + else + { + dev_odata[index] = dev_idata[index]; + } + } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); + // TODO - timer().endGpuTimer(); + int *dev_idata, *dev_odata; + int m = ilog2ceil(n); + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + checkCUDAError("cudaMalloc dev_idata failed!"); + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + checkCUDAError("cudaMalloc dev_odata failed!"); + cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); + timer().startGpuTimer(); + dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + for (int i = 1; i <= m; i++) + { + kernNaiveScan << > >(n, i, dev_idata, dev_odata); + std::swap(dev_idata, dev_odata); + } + std::swap(dev_idata, dev_odata); + timer().endGpuTimer(); + //inclusive->exclusive + cudaMemcpy(odata + 1, dev_odata, (n - 1) * sizeof(int), cudaMemcpyDeviceToHost); + odata[0] = 0; + cudaFree(dev_idata); + cudaFree(dev_odata); } } } diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 36b732d..ed6ad6b 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -18,11 +18,15 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); // TODO use `thrust::exclusive_scan` // example: for device_vectors dv_in and dv_out: // thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); - timer().endGpuTimer(); + thrust::device_vector dv_in(idata, idata + n); + thrust::device_vector dv_out(odata, odata + n); + timer().startGpuTimer(); + thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); + timer().endGpuTimer(); + thrust::copy(dv_out.begin(), dv_out.end(), odata); } } } From 0348908594a67a7c80475db3326279bdebb37890 Mon Sep 17 00:00:00 2001 From: Linshen Xiao Date: Tue, 19 Sep 2017 22:10:51 -0400 Subject: [PATCH 2/4] Editing README.md 2 --- README.md | 149 ++++++++++++++++++++++++--------- img/compactarraysize.png | Bin 0 -> 65353 bytes img/scanarraysize.png | Bin 0 -> 90764 bytes img/scanblocksize.png | Bin 0 -> 46007 bytes src/main.cpp | 2 +- stream_compaction/efficient.cu | 14 ++-- 6 files changed, 118 insertions(+), 47 deletions(-) create mode 100644 img/compactarraysize.png create mode 100644 img/scanarraysize.png create mode 100644 img/scanblocksize.png diff --git a/README.md b/README.md index c74c27a..f835add 100644 --- a/README.md +++ b/README.md @@ -8,19 +8,29 @@ CUDA Stream Compaction ## Features +Part 1 ~ 4, includes: + * CPU Scan * CPU Stream Compaction -* Naive GPU Scan Algorithm +* Naive GPU Scan * Work-Efficient GPU Scan * Work-Efficient GPU Stream Compaction * Thrust's Implementation +Extra Credit: + +* Part 5 implemented. After testing the Work-Efficient method with other ones, I find that it's even slower than the CPU one, that's because There are lots of threads that are not used due to the branches, which I have removed in new functions. Check **newkernScanUp**, **newkernScanDown** and **newkernScan** (compared with **kernScanUp**, **kernScanDown** and **kernScan**) in efficient.cu for more details. +* I use the new Work-Efficient method without branches in the following analysis to show its "efficiency" better. + + ## Performance analysis -* Comparision of GPU Scan(Naive, Work-Efficient、) for different block size. +### Comparison of GPU Scan (Naive, Work-Efficient) for different block size. -| Block size | naive scan, power-of-two | naive scan, non-power-of-two | work-efficient scan, power-of-two | work-efficient scan, non-power-of-two | -|--------------|----------------------------|--------------------------------|-------------------------------------|-----------------------------------------| +![](img/scanblocksize.png) + +| Block size | Naive scan, power-of-two | Naive scan, non-power-of-two | Work-efficient scan, power-of-two | Work-efficient scan, non-power-of-two | +|:--------------|:----------------------------|:--------------------------------|:-------------------------------------|:-----------------------------------------| | 32 | 2.31232 | 2.30061 | 1.0649 | 1.03421 | | 64 | 1.75728 | 1.75683 | 1.02925 | 1.06506 | | 128 | 1.76538 | 1.77981 | 1.02992 | 1.04938 | @@ -28,10 +38,14 @@ CUDA Stream Compaction | 512 | 1.75421 | 1.75085 | 1.10819 | 1.03946 | | 1024 | 1.75885 | 1.75379 | 1.06323 | 1.05293 | -* Comparision of GPU Scan(Naive, Work-Efficient & Thrust) and CPU version. +The array size is 2^20 in the test above. We can tell from the data that after the blocksize is larger than 32, there is no major performance difference between different blocksize. I use 1024 as the blocksize in my following tests. + +### Comparison of GPU Scan (Naive, Work-Efficient & Thrust) and CPU version. -| Array size | cpu scan, power-of-two | cpu scan, non-power-of-two | naive scan, power-of-two | naive scan, non-power-of-two | work-efficient scan, power-of-two | work-efficient scan, non-power-of-two | thrust scan, power-of-two | thrust scan, non-power-of-two | -|------------|------------------------|----------------------------|--------------------------|------------------------------|-----------------------------------|---------------------------------------|---------------------------|-------------------------------| +![](img/scanarraysize.png) + +| Array size | Cpu scan, power-of-two | Cpu scan, non-power-of-two | Naive scan, power-of-two | Naive scan, non-power-of-two | Work-efficient scan, power-of-two | Work-efficient scan, non-power-of-two | Thrust scan, power-of-two | Thrust scan, non-power-of-two | +|:------------|:------------------------|:----------------------------|:--------------------------|:------------------------------|:-----------------------------------|:---------------------------------------|:---------------------------|:-------------------------------| | 2^8 | 0.00079 | 0.000395 | 0.046112 | 0.035296 | 0.106176 | 0.074688 | 0.03664 | 0.013728 | | 2^10 | 0.001975 | 0.001975 | 0.047552 | 0.055584 | 0.106112 | 0.098848 | 0.023136 | 0.013696 | | 2^12 | 0.007111 | 0.007506 | 0.067552 | 0.065088 | 0.120032 | 0.182144 | 0.029984 | 0.020512 | @@ -42,10 +56,12 @@ CUDA Stream Compaction | 2^22 | 8.39032 | 8.32909 | 7.86064 | 7.81309 | 3.96986 | 3.93744 | 0.865472 | 0.864512 | | 2^24 | 37.5455 | 35.584 | 34.8642 | 34.8712 | 15.5057 | 15.5434 | 2.62048 | 2.70346 | -* Comparision of GPU Stream compaction(Naive, Work-Efficient & Thrust) and CPU version. +### Comparison of GPU Stream compaction (Naive, Work-Efficient & Thrust) and CPU version. + +![](img/compactarraysize.png) -| Array size | cpu compact without scan, power-of-two | cpu compact without scan, non-power-of-two | cpu compact with scan | work-efficient compact, power-of-two | work-efficient compact, non-power-of-two | -|------------|----------------------------------------|--------------------------------------------|-----------------------|--------------------------------------|------------------------------------------| +| Array size | Cpu compact without scan, power-of-two | Cpu compact without scan, non-power-of-two | Cpu compact with scan | Work-efficient compact, power-of-two | Work-efficient compact, non-power-of-two | +|:------------|:----------------------------------------|:--------------------------------------------|:-----------------------|:--------------------------------------|:------------------------------------------| | 2^8 | 0.001185 | 0.001186 | 0.003951 | 0.094752 | 0.093824 | | 2^10 | 0.00395 | 0.00316 | 0.024493 | 0.176832 | 0.10768 | | 2^12 | 0.011851 | 0.012247 | 0.076246 | 0.174656 | 0.202976 | @@ -56,36 +72,91 @@ CUDA Stream Compaction | 2^22 | 18.9922 | 12.979 | 39.1909 | 5.3247 | 5.31274 | | 2^24 | 50.8401 | 57.8019 | 135.726 | 20.4587 | 20.4935 | -## Questions - -* Roughly optimize the block sizes of each of your implementations for minimal - run time on your GPU. +We can tell from the data above that in both scan and stream compaction: - * (You shouldn't compare unoptimized implementations to each other!) +* When the array size < 2^16, CPU method is still faster than GPU version. Elapsed time used: Cpu < Thrust < Naive < Work-efficient; +* When the array size > 2^16, parallel computation in GPU is better when the number of elements is very large. Elapsed time used: Thrust < Work-efficient < Naive < Cpu; -* Compare all of these GPU Scan implementations (Naive, Work-Efficient, and - Thrust) to the serial CPU version of Scan. Plot a graph of the comparison - (with array size on the independent axis). - - * We wrapped up both CPU and GPU timing functions as a performance timer class for you to conveniently measure the time cost. - * We use `std::chrono` to provide CPU high-precision timing and CUDA event to measure the CUDA performance. - * For CPU, put your CPU code between `timer().startCpuTimer()` and `timer().endCpuTimer()`. - * For GPU, put your CUDA code between `timer().startGpuTimer()` and `timer().endGpuTimer()`. Be sure **not** to include any *initial/final* memory operations (`cudaMalloc`, `cudaMemcpy`) in your performance measurements, for comparability. - * Don't mix up `CpuTimer` and `GpuTimer`. - * To guess at what might be happening inside the Thrust implementation (e.g. - allocation, memory copy), take a look at the Nsight timeline for its - execution. Your analysis here doesn't have to be detailed, since you aren't - even looking at the code for the implementation. +## Questions +* Roughly optimize the block sizes of each of your implementations for minimal run time on your GPU. + + Check [**Performance analysis**](##Performance analysis) for graph comparison. + + As I mentioned above, there is no major performance difference between different blocksize. + +* Compare all of these GPU Scan implementations (Naive, Work-Efficient, and Thrust) to the serial CPU version of Scan. Plot a graph of the comparison (with array size on the independent axis). + + Check [**Performance analysis**](##Performance analysis) for graph comparison. + + In conclusion, when the array size is not to huge, CPU implementation is always better than GPU versions. However, if the array size is very huge, the parallel computation in GPU is faster. Also, Thrust method is always very stable no matter how the size of array changes. + + As for Thrust implementation, I guess that share memory may be used , so it's more efficient than other GPU methods as the memory access is faster. + * Write a brief explanation of the phenomena you see here. - * Can you find the performance bottlenecks? Is it memory I/O? Computation? Is - it different for each implementation? - -* Paste the output of the test program into a triple-backtick block in your - README. - * If you add your own tests (e.g. for radix sort or to test additional corner - cases), be sure to mention it explicitly. - -These questions should help guide you in performance analysis on future -assignments, as well. - + + The performance bottlenecks may be different for different methods. For CPU implementation, it doesn't have memory issues, so it is faster when the array size is not too huge, but will have worse performance than GPU versions if the size of array is too large, for it can only compute on one single process. + + As for GPU implementations, compared to Naive method, Work-Efficient method use more time on computation, so it may be slower when the array size is not huge. Due to the branch which leads to numbers of unused threads, old Work-Efficient method is way slower, not until the branches are removed to improve its performance. Also, compared to Thrust implementation, I did not use any shared memory for other GPU methods, which is better to improve performance. + +* Paste the output of the test program into a triple-backtick block in your README. + + Check [**Output**](#Output). + +## Output + +Array size: 2 ^ 20; Block size: 1024; +``` +**************** +** SCAN TESTS ** +**************** + [ 25 26 46 21 5 19 20 6 5 10 15 2 47 ... 13 0 ] +==== cpu scan, power-of-two ==== + elapsed time: 2.19694ms (std::chrono Measured) + [ 0 25 51 97 118 123 142 162 168 173 183 198 200 ... 25692588 25692601 ] +==== cpu scan, non-power-of-two ==== + elapsed time: 2.12583ms (std::chrono Measured) + [ 0 25 51 97 118 123 142 162 168 173 183 198 200 ... 25692495 25692534 ] + passed +==== naive scan, power-of-two ==== + elapsed time: 1.75926ms (CUDA Measured) + passed +==== naive scan, non-power-of-two ==== + elapsed time: 1.74765ms (CUDA Measured) + passed +==== work-efficient scan, power-of-two ==== + elapsed time: 1.07485ms (CUDA Measured) + passed +==== work-efficient scan, non-power-of-two ==== + elapsed time: 1.09978ms (CUDA Measured) + passed +==== thrust scan, power-of-two ==== + elapsed time: 0.440448ms (CUDA Measured) + passed +==== thrust scan, non-power-of-two ==== + elapsed time: 0.343456ms (CUDA Measured) + passed + +***************************** +** STREAM COMPACTION TESTS ** +***************************** + [ 0 2 0 0 0 3 3 0 1 0 1 2 2 ... 2 0 ] +==== cpu compact without scan, power-of-two ==== + elapsed time: 4.24494ms (std::chrono Measured) + [ 2 3 3 1 1 2 2 2 2 2 2 3 3 ... 3 2 ] + passed +==== cpu compact without scan, non-power-of-two ==== + elapsed time: 3.14983ms (std::chrono Measured) + [ 2 3 3 1 1 2 2 2 2 2 2 3 3 ... 1 3 ] + passed +==== cpu compact with scan ==== + elapsed time: 9.90341ms (std::chrono Measured) + [ 2 3 3 1 1 2 2 2 2 2 2 3 3 ... 3 2 ] + passed +==== work-efficient compact, power-of-two ==== + elapsed time: 1.45267ms (CUDA Measured) + passed +==== work-efficient compact, non-power-of-two ==== + elapsed time: 1.38931ms (CUDA Measured) + passed +``` diff --git a/img/compactarraysize.png b/img/compactarraysize.png new file mode 100644 index 0000000000000000000000000000000000000000..072755219bd91a60f952fe8c9c67228a3726f7b8 GIT binary patch literal 65353 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 literal 0 HcmV?d00001 diff --git a/img/scanarraysize.png b/img/scanarraysize.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc2aac6d635f52fdfe65931ed6789a3b0e695a7 GIT binary patch literal 90764 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

b;~_R90<_I}gx@%Z>S@nO#zx&6Y+)U;#w zoH8hpw4b2^KkWYkz5n~2|8G*<@|f7zP_*E`oO$)w!q#>V1e4p#LpQ-paD;}%9zV*+ z$ZXG7i(j7oT{H|e1n#nmiepgzNnh-_dKnuV1FE<^?;`PkUJ(j#9*K}^hTsS5@j|7y zZ{LE)0MgJKY@gW)lMVwZA|@<+*T+=W(cK-YQ-txW=pXck2pW2V3TSk6w6n9bq@)CV z1UKu&tE(#zCG73(RaDRsawkiI|1K|O%h9%$cmMJ+k*3XM`EVJ!2-2}uK-=}bPxi3I z51pc|P~LU`d;iP5(6e5$i?d5V)}-u}ttU{vj%RDf;|WrTBAA$%h=_;)+1vn7GdK_J zD*#A#jeSN(yo13e*UlK+8^5qM_m?IMt9gZN{R+{w#5IIv48x=J%IY}z|v9`L} z<^JXzTqG>&^XHj>Ap;3}rt`xZmnG5Ach{+IC{qZ;^iQp=t$@$AwMoF!a0w{+&F$0X z6c(Br8v0ekveQG;ws%w#4w)h%IQ;zl+3fOQp&>)Wi`OVKGt+cvaPV_hMh0=>x;{C@ zRGGn2v#+nVwziMY!|_@-Aqt&QpUq^cys|P{C!9qe4us+NtnJT%0Y&rHHxO<1A12)~ z6{0p%-_2-1YV6Sim{vQPMj;vUBMlbW1)S4HuS+a!5)$t}6AYYO^(QAMpO`e2?_jC$ zBRe^uQ8Tl$hDP*+LP$wS%dGi^RhxR2%BeIok~%ue_|X}%v7{Rle|~=jXN~B^3xQieW0pSPF{5}C`wP3)XTlX- zH8coYo7nZXSDsy7s^LcV>c&+4{{1_5NE~bzufxV}Y3e9GNdWt>KOT4Dt7MCMgVPO^ zd5AP^6e>=810y3NukEy9a%NNW-3A-s_C|_{3XT)zIWdS3u}8dTl5n6RObR!NCF87h{ovGrLsqh%W?Y22T_GzJF(> zhSgo>XJ80_E{LS7t6PEgOmPMR6%8~5suGlt4`VL%YBWL~_V)AfT=Op<1T#%@NIXoe zbFB~HuNgKw!m(W}RvS8GRC#_;6smjdC0 z5jkajCskEdhb=SCS27#Si0`yiKF0nwY+@#oJWXI{9nTW+!m#DyHX6uGtwcj4fZl9- zO@|-++Opa6oRO;y{j~w3k&$Bq3<6r5!)TuL75eUJD+1X_q#DS@IKwBLtj?|M+OV5W zJ7Y9``RuG5SkhnQ`8KxuM-H1GMUh{@f5*?q9)1z!53;C7FEIlIMVwti_syFCSf}3- z3;_>Go5z5uvdku zGRIl8CFbJcV&j^h`d^rMY0`ZpTXg#?BOfkxG#&4=X%W2ZoLbgs;clbvef_=I?N|Ty zdiaU1(ARC23senfNh$U%$!`(?g3Lf)v-pJ5f!$B)4NL^S| zTd;|gOs>veJc^Q!3krYB>QJ_r3ZYApx^Nt>ZiO)%ewy2}XgMC1QeL>YxVpG(lw$xw zD^Fm_2O3l)J|pDvo@5AnB(O3^dbF2I4TOE#BI#^6V&Xg{C3go21eV-TuU0jJydhqd zXL6(gH~Zs>JZ+B@zxe^qa6{ONlKb`uMbf96x`Waxk4xi%{$!T5R~66ZYV0ivQDF!A znGp|J2QHM=?juH*{x(`+k5F%fZe#?)Vk;~P6;TFXyf{M55?NiiZ7TaVIyG~H@u(w1 zWQ`ExE$n{tlD@O?`1bxP&=JPAbzY^vx7WyR$d&l3(F-L4FPquuyz)d|=)GLWtcwfR z#6MiEyqWiWy3Tt;^Z8V#Kt8-y$`7_}ohdcJ0R&+s38@7E6i)=0!TD<-9yZ@D9FCz7 zlKZU+^nYL2J?CWO!oYi#sgT0DQCgC5C-Ygc<-Qdm%)*R5;b0q?)t@sp{WWTkGJD6D zw_o|CpQ{Hv=gjC{6Sr+MQ)OujS&s`+2T)-`5*6YnWJIZmpiN2F2!VSRGQF%rPdNn# zEg7v91OhD=w^jHG4qE%jG)|)y6K#Kz_M2ohGV{0g3%{gMlFi<;ydj`kZ6Uz%Q1v`j zUZ%4d>dTj3d6RkwP&z}D>zQrBW(D*6n)GL@tE=p$i<;|3ePMzrl{Gaf6o@9SAWTiD zxXpiB6Z#OTR@#gNgBG^lq9?oPg)`tV5M#0k&pZUWg*!bH1N&-taVFd^pv@geY#DRS zH>Ei;%s8~6|Ifi~TP1tphJJM`BKkA=7|l!OGL86V14$L+Kl%)IRS6;=+hX z47Ph**IBSRj5tpe%dWv54ja5d$JS$c?1yp z;ZNDaAC-r7m4`Ex$0vTAOI7d7g*?(97UUssZr(9m9=Je8i5cSH1}|;cqvGa6DP|dh ziLOS?PK+#WXNkLOLe$%Cx--NPFJl;oq0!XT^f3H*H(au$xDtpiN-Tc8@s*IvCP^qbC zEMj*n=t?30KBD`a<&%v{$g=0N<9|;|MH#yVs3z6$Dzf5f!f&!&V8#~R3?z&Q}4;p%JX(JO21U& zWxZF4{_f_{AF&3s$FDw6{FUD2?x9_RH?l_}vWhQHDfhE~rLvn<%$8#MH}~HtYT5DH ztOt5kpqrNsbfvIdb)+-e7S7NF&WtP}wGzOk`&^9V77jnNikDYRxW5E|1GIn7-Fz?I z5~#MJu1~32YPOrV3bxDMbcS1 zSBivJ^t~C+e<-)$kiEhQnh6H1Zt(*FGtBXjIFX|QajbSyN(z-bqJzCX+ZRF&p;J5> z3Q1UO*kuSG`=>ik`(-waza|f<<^1$aZ~uDen_03Ju z+r26_*cp%<5@-|-?ue=4@aT*NwK1w_-O!%9tGin|pFV#p=>uTrYoR@&63IsgMpz`O zHYmsDa^-PA9_jQ{ARsduI?|d`mR#IeQX) zEe-$@sF}Ciiefxh9t+_1{`|>X7!pQV>|(()(mXVz3~#J&p6fT-eo5U9QK9wS@A+Gc zu!|VT_MF*jk9VDwx_T*g=AAumpkrs>>d*fvBE7R;sFGj0)3kcr6q6qQg8aFb&-QqR zvWnthcNfKX0>ixy=wi^m6UrP?9WOGPiV-UxwHO}kKT5u#FiP~kIonC3Qz80cSkwfV zc}BDvpo^&15Aup$3@v>sMKK}}(FW5nWEi=)`+H{J z41>(8B|jOl!k_->(}%UL=-FAFB=mc#1fUB{6Z}(JoqVLP*3uH$8zsbBZ{&May7mta z3KLZIj(mx>x3`z=5)%?QkM)niliI9NV0w||*kAcK%-~b9CNuX586y)LO4}+`-l(vB4Ogmz&J2o_wmrVd7;`Ng- z?VQ`U$L(NVfYnT2pEO#I{HFWY?}-UWx(WBH1izNJI5hq-=&3d!Si+(~767P}x6wI3 zH#z=J&%i(-Ml#qomQoE&DEVI^B9M(0kJ=@(!Y^SwLJi&Y>Z>e<3qOCR_|BboQ(Wp{ zk>{aDLPQwJhc({dx~~IBc)1(-3*H`ubwGBGcO{l8|MMFemDmu@J2qHYnwB#2UG$oj z9LLl@BF*3g?ORI)vG6Y9WnV4(IwJAPX8e9oMUSC#R9DBjHRtX2JLKWvsqm6P9SH}$ zit^|#j_>-7v!r*(wOw6Z$;o&_#w4~WU%!4mCUgn-CJbHkej!f?*$tq|pXVKG=ny19 z9HK*B7bDA`v#5QO89kuiPYxdyj08C(eJR(|6*CXJ90a>82A*bSWTfOu(*)pDJEtuW z0UawAy}XkSDY30pF0vP_Z)i%C!X+qWoHp0jK?KZ~sdqb+F`;)FBcV2zrM`BA&*H|bFHa&l;cd; zlB&v6eeLcue6@+mPaCyE?xkmp^{h8lR3P3CFZ4jqY_sh}PGzOj>bM4ND@LgRez2o9 z-Yd#>fJGge&48ZNsSbl`(}MlZAXWlh!RJjUZiM=ZkXguPY-*}|o2ev zQqezq-E?q}N?r*?p*1}f&VrC3i|-ml-zY3G5T}Dun+)*((vGm57+>3Yu4OmR`@KFa zLQbNMMbWgU%R>eglEX zGIL1z`vt+$SP}uOo@7A)e1S*l@>hv;83;97Szg}@3Senon#4)M`ekS#TjZ9P#}O67 z`sRND6#{VA*n>`YqESk$*K#U&LRxeBmLGLAz#a#B#y-jyU=TOla^kg=ZPn5lnHYuVx8{etiHdj-9y z`%a#n$AeETWccB1$m*dYB6F7Op-KW?X11-i0gnH-_7xs_QE>6c7|ED6j0L1gdFmZhRJYJwi>19p)#84^%*9~ zGqr24%1g_ylwismDUt~_s)bm|N-uhBktiaWn8LMTo9b!s;J9^c&bV}8oT!*j0x80qH^w{v({ zq_atiR!C6T(l&;r+@G_Ov2q#iPrWHI67MMj1yYE%_ z&B5ltp)K0{42A)8*V(j1Gbjx=L&hfj2;bE?nE`4YiN`Wq>$sL*zQY%!RQBb|AFxZ% ze?%}uh&D1jSy6UkEJl29ThlK}Cx$Pe*(nY><}sLKS{`FT}b^xT2vZIt; zriEcZ`ug>202Eb3&edPNdQ~hRRz?hP?^FACJkxvY#&?U1NKb$1OJBj`)qUQ8sYv_= zQ`_AqoVnLgmSanz;cPI;o|cw9J1&C6F$Dz$s$U^_+gbnFYzukvn;eU#wg`{r>?S+- zy>#+Eu6>262fe`Io}Rc(Zyv~2u&ITG!f7E4r^pj&SF~x6d>DEdtvGg+t!5EnKwd)0 z1eerJ_&0qP@~nuBDL715sh!m+QFP#l|7YwCvr;;0P4_?i8RIt1bN38 zeg+_$9KnAbzQ#Ihq(?R9PXsfpB;+sh98bYqa&PYDW8bTpDMfO;ScesXeuKy%{qHw! zR!Pp>E@Go%bytmTQ+qv+3NeiTkpCypJI>5j1No}XWIZLq7=r%yZsF*Q17YW}^R


d1kxgdf0QGHoE!Z;k#?3k{2~a$6E9Q6YbNDw(0|{He2Xuc@VLlhe4FmXkd5O zGH(Gdn;`y^y)o$Bb4dSNpI6JR>E8LR2==pF2~;flTbAh@jRifnU{P0(W&XV;!os1H z3S7#?K&_*%!4zc5tYXF%N&aV&3pUmN^|{pM1Dl4H$#yyg_IBbWn}#&{ry(K^l4UK{ zQ<}wM5?A*R0NDbDKVrjyyTWMD>~l{icHL`m*J*H6Ra8XhB60WY-?mpm`q(MqyWM}r zNr~W1GDtj!l|bo)9I(|%a6^*Jx6%=$Qmh36L+NpW%CYG@>X`t&Iw!MJ8la*Nh) zAJ|}lP?NtUga5aQsTL`GHJ9YJThry^@nWmoiqG4FlOI)G&xdUu`s-dC2CsHZDFObk zqobp&tgNW0SS+u|($(EPm~9LgH0V~Ve!ZI4I)3&{5r?O6_+IW0-+?bMbN0zI4ygN2G=e0eO3kr4s;KAzha&upOY)VQ> z0?02pB_&;~!wnglA@FfBD?s)YjHg$;R+!D#tiB zFO%c_$`)`AxdWCG@V)RlY6*B4%ih)V0%1r73Mpp&27q0AJ5&PPL&zThp6M_lf`fwt zF|2Q3pjzh}HjK564FWto`!JvjpuhY~F$6R^`?LyJX3Zp<5 z5*Vhdn5ltxO0UAWv+)bEO z4@?VIMoo%$fY1<2NlU-x3Uq=KkXHVVq8Xi`*zoyt@YCKjx6a6fMN!BCm!B9~L69Uo zGcz;MH5VvsD4LTVAKzNQ-|s~}aeYBEUFS?^57XwJ`stH2pdO;VAM03w3yT40z66hB z-rMc`So7hmrzYk}dJ~z?6-5y+c-8@{q|VLltx5)e>jxvLO&*i3D9~hZ=tJc*D{sD- zwaJxy3YuY7lFm~{i&gjEM5yX^Ms1K~$L)!Kjk?~fy_x%lsH@>}GI{s=v-a=Y5r*O7 z{xRptG3VCR(jWZ02baU%5t@2VnHi%F62K zkkShf;fo1+2f9zlufwCG&9(;LlRCd7h(cP1CwSHvC+X>kcljlw z_v=?1&~U+L)g#A6I)2G}78UmHh*N#WPSI_(f;=PQV4b1~z~&WGoM+pSm=sQh5>dX@=!H}MW z4PBwhkBgv@){JA43TA(^zfhm@!Eg{83#**y89_`SpmWc(Ebs`WO$nn7jM@;XpSsPF zm4k1dy67jWj$hh}R@W+H*PxGdv*jXl{^+cZ_mT1xYs8DQS_a@Jk89+4;TT&Kur{Qt{1f=>B%mY2Qy zMNLJL<1CEjs0loVF+O{w%EfWtasbBQ=yAKd1$x2)T+K zK*a&xSqk0S+8P5L+pj&x4xAnX&{dYkvXU_^RP-0_p{wlc$7Rwe)vhW82m95wgwR@= zuIXhPJx2SA4mfuDzg$XoVwgA`QNQKnw8-J}LO?InZjN`-12|&BFx1+uG0a0=Vrt`A z7fRrfaR~X`@uSK6P;#(7i<8tyXnLufgk<#n`}f6KM=GY?&*DL~T2hr)n-a^}J#$>c z!tE1^P`kv8B4NGl(njC3jPT;vzf*BZv_KF~DPf3Yeyp1^%gCP6-e;1sy|$s1Am|1$ zXhWp^(<+X$g{tT1(A*}Naj;~uM~$FH7l;=$))Lf6_XEAW*Sz=vZitccA}*$@4ethT z$D{b+M*h-s<5>>UD^3w#3*Y7bGf=psjt1su4zkw&Xn${#l17}8nEmioB}U0iMkM)X zVDe42&W-i6zRMQhAwh*p?f!3WEZ=S=2uWehJK?>-owlvy;^I0zIhj^mv)}7rU~{suW8UYSEFIjN*VG^$5o7L&!gWe~JFEybfT#FE0p zPZOc`aH@0~+$-w1OVOJ`L$QIqP|>Is4?m?%3xjo#I=;&Z3?jjm`+e0c<3;H~jtfQU zkmgS4TE%GDSR-)zOua~ui&L|LqhQxY5DY^pP$)sGzzA=QH-N^`MHk-uVHc024%VH- zn=sR})|#2^(%D4>@ebM?3wIQo7b!jcQn>p3}b-nu&(bK0KG ztfsRqhcw@OZT1ASDjd*JG5Wd8HLdhVu*faez@|M21|4#9OeK3kdQtK?lh_(TIz#fv zK@oeM270}lFP5(05qjW{A=3a9`Che?ajrf&IPHMaLY(ekfTXU{ZPGMqVGpfp7H&MS z)9>P4kcH&iV!dH`)kT?OXO1}_2y=Xe%E4TCJ)d89I|bVL5|}C`Ak>7kKQn%xVQpt; z#?TYRnfj^VQ0!q%EbY_!*wci?XR3Yzefbcs@hu1gmm@Z6X&2~V^um;q>X_kS9I={y zN&ueTId0{kE_AUw_M~mLhgJK>3;XDw3rOSZ_kM9yR!M_;1aQ$(D+HMd^q;;Ce`gCH0ETe?k=Tn49l)fi0XMYX14k&gsu%5 zE=VG9*?*nl#WR5t-myxlP21x0am803%FYWinfg`CJ9H82+ZnYV$Hv~wqiaitc!aX6 zoz{ebRwR|rN~OOE*KWP_)>`Dhng-3Sf5dU~?9a>&TtzPo+j=>eV7L3Z? zc?m3pzmsd{NBTpl1%D?r@w?nz6A%#ru_##Y3=5Em9k5bp|FHfIdUrFfp_B(L^HP1i zy*sF)69shwM=W7`YwfgtV}?}20Fj?!lV8vNusOWreBVOpz-4-PyYwh(qz-f|u#Gge zhoYOP=H?)Yav|9t^=8+?c0SF~O*DfM!l!8ooOCuA>lY*>pBdF4j#c549UL4+AB+~X z0C-fNd|q$9qdK3IgrkvwE2)vnlM?tDMTq5HSe-KspWUp>6iP=@3X3jYgx7LH7;RvJI%Achz zp>Ck^E|!_A*`C4uru8u*t7_nyFS+w^CgHdfLQ2{uL;M3G;A{^5fw>hgm(X_1#iXTA zz`-*S(*y?W>}+iML18fXyoa%}o8bl+?@Foe$H`&b7V(XJeGlgA05Z+Pt8Lv|&cEif zo%TxxCYxV+-)Z#A1^8Qi@c8 ze&i#r>VTSDg=u)Y0GA51+?+EPjX*~$BOU@A8epv9`LsKPyPh}ik&kIjZfEd{ zY>P(d5PjLIadW!}M9Y_NY&Cpl8w@AT$OQ$K?SD7hXkP~+JnBAlCrdw$zA68WbsQ`b zm1TE%bmZXXRx{&aLJMk3f+PViO^3kJQs#yYP(|z=&TOm+R8u+8Lw8LtF2*!h?C>3H z4FdK!eWuc|VP+V)G&}1FTIHwHSQj@1uauN%aCrj=mS3zN?(DS2CW;D>XI*-HPgYvfg_XE&d&c3G@XvgfvgSm;2Qc zBP;m`rp=7v9}9i>gY!03EQGri9o<7KZX|N~7P`KjIu&1SxzXqh{ga)gSLCj#^&l}Xo2 zODXovq0D|2<^XS31qB5)HSF|5pzc$Jl#AuS$Y#3J$B;omB1x=^V`?KZ^z~dSp(`-& z5;~Wkm&g9{;&KGkfup0XSr1poYj>u*vFI4s#e2L2Bs8hsVmvtxQ8DC3HmI7fUyDmb z*xK55z#_gBKPFxe{X&4B@{+U|PiTXgD&f!3N;@F+#`=n>sHpy17;&Iw>5}RgZG;t) zYlP1{(M{$XRZOl~k^S&OS_6H-Sd}}L=Fi@qDG$A$e_X}WXq4BdftXpXxT8{S`49+b z41h8*^;ro-D3K=Qv&lRtrpHFZ@T$yZo|>tHFp)Mt@>EJ$`sL!I`f;}1&$eGP8U=%E zcVuBS8tLonyPZciK}_ss&e1kHVJ`u7ur+%P0^$8?XCyNbkKt6|A$4)YZ$oQTYf@>G z_XKGHWnjdV^Q6#tPzfcGhE8D+d3|du9hDg_=f^-~uyLJ(`DEgb?ZU55HsVo)?~!x7 z{^me^_t3jc?|jimcg1QJo>o$hbtg}q`Zv$`7_e+F8hWM?y$p4ko1Tq?gVAr>+3N6n z!E}3d3wL+O!XudDojEgc%dHh6C$$4vwh!57_hm89RgrOR-_wL)V8y3ydf?aL0(HN- z`rEe)b>XsHVIOaHihvGP1s#Z(^26@ulYn0KIN~9LQ4!BS3?Y)XBXm*Eg7Z;A0=vk~ z!F;biu=hF1-DiB}{Z#}SJfs*zJ54!+#W<^&P3QthYVcgr?~0)vS7~^H#FBahkFb>5 z3K3sw0DJ(_OZzOPKP}QY->?2kFryPUe%49g?BsMr=0tQ1Q`prf3?{N`DGR&%awO>~ z6U{it^h0|B&7KC+`lXBND1k>^dU{}qyHX>!HZ+h@vsA0~!`6ZX>0O*mL@u2CCNsQE z;Y%u;fB+}|s7*qM5dJ|hzWy?$QzHaFC93>sJ|Q)vNQ?)u=l!IfL#j2Y`?&_(3&Dq&m`J5@;Ale*v zrO@I2zBH8OI-P};_#X%1p~`a$6lE085Pyd#H^*eW)plb;&-lkJY zsW7IYsA7vZ12`}LLdqTKcc;rs4NJc+^?c=(2kbRsS-w8bj8ggDZ!y`@8B^j>uRmM_ z_%`OA7z9fMU!8EU)_}kQ7}nEle_n(5^x5Wc_T#+saIj9WJL1`n(tpgEO*ru30#MsM zTi2Oy-(LGGy-uJK5i`?Ze-&1S*t{gh&K{SNQe!!qC!a>wvGorv??_+upRJng?_k1E zWh&jrC!?hg61g9lE9>8U#HQ`glvGz&mzM4Xs3#RP39YeKBmZ54RnV~5!O2YqY4&ex zd538=JAF3;6O~H1)5sq>Rr$swqnCF>?zrnWI6?Aq8AoJ5^Cb*v~X0Ov{n_hAm871;nH6~P*}ahxq3Y(*fY?Ka=C z*mh(Fd_3TvmPEYtD`UCZQF2zX&nc^8YhA6-p<+%>f~-#jNniu69V_&YfaA-^bl=Q3 z`BOA6yjP0&K^Ik*d5}D0+F#q5U|F>#+a)udCy@)h`4FnVFy5t=YyHqACgwj-zr#T_ z*@RYOS4+j=z$n1^lbx1^fCl{i59oiN6~$j{j0=6yMaonLHO7^@o|46`qP4q1iUw>U zgnV#*8UG=EmsV_WSC3-PBw|gh{_c-`RVP~+pT1JVB+#&c`?pA}cYj*bfuU-BSx&Qx zYi!J_N(ZJeB{79}I0y-JD*ku#Tir*_1Op8UQ!s3Xqt1Ta5dBJI$;Y$F0EOaCSUB24 zC+M3fBK><$Fy0<}UMmwS+m%OY+dI0(5qQs;nTH-n@o^c)#B?WC@Tw9T z12=UVg{HG$lP(4R>GC7~U4C^7*D{wu1qPYTa2UbS4?Y3ANewSUwj``<-J}Zo|CSW? z-;%-|i2GVR?jzXCpt|3t-C!~6f92^jmXCb(Dx#mqXce>L@DjMYqkuPFABBSS*}vZs z3Ex7_f?03lyCi<=osmpM({eKtUuKiqVloa>gBDMm)G3vtc)y- zuQ@}IyWGFky{SdG+usx#e>%ermQK<-b0q#{Z{;GCS>@;vWx{3SgMxy<$Z+#X9}^f! z1*fh<^53FNAdK&_7vkShHI81Gr!3535l$o0{6A!Ubx_u6_qQkw(%oIs-3UlG7$8b_ z2nZ_D-Hp;Af`9=?qjZC`ASGP_5+dF2xp&#$JTtE|`^V0p-0{7xbIzxZ82?{AE419U zTxEdn0Z=nF&1s!S7s7zI`thRb9-=7dWeGgXqOBY9de>}tkK$5>XtsBH$8+1j&gX?e z(14kD&eHqFsUu_aw**iUB6CYhw#Q4&b8~Z{Ergj5v?M-_GGbyc;Vy$j3}M5jiit=Z zY-|WiD5|O&{k{LNXtbh2Z~>~b`n70C4Y74{GOqV{2KEEca6IB31A!xmf&&BfSA75z z|I1@g7F5Bs=Pn7|_WO?r9eG4}cryVhr+!=t*;&OFHQoRo0CU1SK+*VLfpr>Wpf-Ansnqi7VSsbS>({~d^iQG3K$sE$hy(&>)dv(?Kz#s0+@FAyE$Oxz zH@tR-4r6tF{RDDWTx2S4=DZC7ypbT#a{A?iL83q4QKC!iSO~M`OwgvGu==|_U3&=q zeZHJvLeTs*!IGjPN6@TvanRUT{~VGVDF%T10h3<`xG`aH9hQ?gUJIzuDo1&B$DVh%v9I*GJ15E+%!RFain*sO7z*fb7I(;q zomyX>|DD~mJz7f4ug@0TtQ}~Kr99lS7aLsJOi90wPl!*b>f+>_1;E!^T`@5+N@0gW z5I5es)f&wE4$KlT^K-63z=^)WlP6n*T9SN#%)&&&;J>m(js(OIIwcNfOG+1nGT>`E5%s)%bI|~sX z6Sy|>#DFlrZpzYwY5`;VI?j6KGh?T?1XMd{ACjc1y7)8z0%1esGL zR)%VfDqGY5hN6a2UG5E~pRt!`la#+|xkvYmiq`6%U-~}qD9N&s*`JBVjj5u>dgqR} zs`2pQByd1@Om4+BHDt-HvmTzFE=+fC26}9L`6cW)*(M7e5h$1PU!|n1KCgAD(@y$n zqHO_V_Ugt4(+w^r+0;Rqj0guo(AE(I>ZNL_@iTak(9+J1kBjp1n*0sQ$?aTho*3+L z_ImaVa(O4fSmfle zM{PN=VG^)5K=VpS9(T~vip9WNz*73R4`PpDJrhlW(!JzYQr}H%Y8#HT5s*N=7Tmqu zT)5Wt#_0|GVv#9Yk8`}J=-7SigOPn>T#z|B=RjtRt3Y%%PADS>2PR5Ou6y_hy%k(8 zjYsV~K4eRX{Dvh_EEajPk3T3#NkgON9a1Qf+#kY>cFf0CadY@L%qF(BFL(PyE#Wn4>m-Oya4*6FMu{A8-pw-JtX z>Qh%&fW+hF37uIpz6}g0k@86`-K=bF8;vEFsA`(z03tFD`8kkG)`+JXz-P zeF=dD9Spd61qF#>MBeFtKHXIGhCXyqLj9lnAH2Ps$Xgk064#CMf2}#KtCV3Ie8TxC zbW2>i8Q&vdL6C`0+{MVl^1g%B>V9iHRpz7DI^-TZ$7D1#4L;`{AZ;@>od<@Z9JIVY zK0biE49Hb>A{R6=5N=?;{Q>MFqzruj9$-xW*fetSO=00G1Vs2exsCwV;J^|Pu*jGa zpUP1nlzhPZ_$*S+jsqRDFb4WiK-UlgJ{eDpL`kmRrlxB#W7E?R`0yPxr@Y_bq=Jb} zWC%O>=;0Oa60u0}r!pO!j7iwFonlkN_+H402~zwr9Q}5g4L@^~4K1FHE?ib@T)NwK z>{9+6lln8e(h@zJd0yn(xa#{bg-_-c3_fchR2z4wnkcvawY-c_xw5c8O__Nq@4$fk z=J{Sd1TB;$CnYHwPp$=5#XCAX^Kx_JP-dW;zL*(?n)Q_|C_})i7cMxtA9(#xs?yRZ zs((@wx2?H()X!+sMh2h3b9Octh|5MZ+$zRi`}Qrvty_^dyb}1gEJMJYc-1?-Ca0nP z?Rr`#?^8QXA+r^I=vKqvwb^Va(H-xCQaXGXl0`2hZfUqyerei$xqWGL>ROI7 zEdPt2pC7&}u)yJ65Q;Kwo*nN(VU4nU*n&4aHRbhZt{GS{R}x}%n6-O*mzsX&zxoJkG2prD|M zHuMrMUmk&B0UR#f-QCJ}j|@q4_4HKa`fg)UtJFG7@FNdYtIV-|H2mOaku+N+o6G zN-*vzosq={!kDMSyZcs{e=hr#&VvV`nSezMM@1?Ext~xDwdlR*M2UY3$@dhxRx3rEsON%*KZ`W*{c+J)+LuZ49-!p5joqLL?g#Ze4)s^}odwX- zm9lJvDXL>6W3^BFx6ZS1aHvA+9JE5;zF}6P5}Mf{R8&u%a6f%^^vCoQw&TZ7pO`k8 z`U1nk&>bAXJD!@F3VPB|9O}0rU|j@dGPiL9RVU+{ni_Y|L_)Pjr^kS9s)-HEQEhcE zcSR#p?mc+G^Z08;Nl9!&1~Zp;yzbe}-rI+0JFNtz!}0M=p7+9df|~Tg%! zy_?Su_xA9t`dOHm{vJM7EW&CMluAY~&3e`B zTgE(ke$lLz{_tx^a(~372zi0h?8U5)wEdA&B!iygfiK^0%1hJp?4X69qqHVm5TR6o zof1?oaDUBtf*IaR`oD?apre!PNl9a^%%AWY_utMP`XxQ$BQ$lE2?XSZOX$)8dSNBR zjk7=~K7INW4Dw8UgvNANufhOEj?DAi*4#xtohpluB4yR>#J0APH_uA%KXrR5E0=>o zxM0u3!C?nXGzdH}e5>@rc>WuaIGeZCac2gxe5}8gI? z`;wr2&diirE4djAkLWoQLf*lyHjdzg$?*?Fvd-LTwXD9q{QytT53&-g zf7bh6UO-x6XG!D537il))}X6P8WRL>m4~Pr1O96-Gy6mOiFyj#DV!>o724bHpfuio z9M+lS@9*C#3m#HXn0rebuLj{=y;ajkH!iBO-mEE{lsRY?%uXj!*=WUtafgkTZ?rE) z&u(vTY}C1}>6)1>^zbyEjp%9JyF0ZkEQIQQcC>@2myo}Z!@?(Z^+N3U*D1FTkK&{N zClOiEpxSU#h^g*O?JQ*?XY6(&C@tmtH~s-i?){I%ebDME!5_%-;IlEZuwb%|jELA9 zWP-V70YB%x>(Ta$sz%Qm30AIkO0np4yNkcxhdY;b{AOKd)A#F^c}6c~c5tLdE_#Bw zhG9N~$jMtA9OD{7A|j_=4NFT)fcPXNB>X83?|=pq%p4HJS9ViPT^&L`RzMg5n2@L% zLj44G*J7}IaB*!yTd7%)s0Z>Y_;GdRnjTuinCNJT0pxRoM!$`FV``Our-L*eP&aH1 zBq|B27?5>*fU(jNO*sKB(B-8iPUD8DLZX*8IeCa&9%kmD0DGX$V8V244nP@E$D#)J zHhWD$LFn3N&kO-;O)zPYr`YQ04MV^rdsOKvF)eK)Xz)jwwEGJ94i~!QgO|c1BX9BW z6bM&k=5HW$R+thJ5^I|A8xMhpx;?3VY2xT+ee(G6V@Rcx9UdM|jr_UU05>f_-x|#p zj2MQ-Rka8PUx1p7OcVyR&P9VpA8&9ibIHrg_f}L@J$H7FO98$nzxT~X^o_u9CEQc{ zl6n$x;P$2J?Z>!hnj!8Y4P4(B9Zp1ztY>f2(B`thP7a7RC`<~Ai&q-;&iWsLw${QT z$ecm`pB#go%J1KW>b4*Gx{f&;dF(|TC5=xWYQ6i4Yc+0OG)kPho6YTOATh#2S+@!- z1Qc#`6-XHkxP$d=Y-}u)CHNeP7-&f?n_tY_K`bs&nxD7LtQFMcw^2&`tR(z6 zjNBR0Q@8u4N!J4ysYRWeR+%4@O^*02#f`4wO@r0r3-HDuoJp6<{;aw%lmcSK4fI>N zSSv7QITGPC%4LuxQ`4!`8S!i>tpN8~_8?E#EsRWc`DTZjCK9Du$2;Ch7mjb{x)$cz zXE$fDNG@)zy2Bh2D}54%`O@}NEcZ%z8VG-hqR7fs@AjxJ)F08@BbO46%UB4{QTBOC zlAJ3+qSV)G11=CE6^@L=4`I#cDWcS06dw_FWWwmu8Xu~XDgG?tc?jJNtoAx^*vK}j z#dy~TQ;%{T zR|y0BpK%&iMNyNE2Cd=WN6fB88f{^i*Hw}gK$rOVs~hwVHFzslAuB2Ts|}D<;1=lz zg*qY0;cmb|TplE5WgpR>C{08K;6obKIgr{*oqdJbOxSL4=LZELM|6sHD{9&y)I~q| zsa4yByIbElu$Q)h$73+Q<$lpa1=E!8ccgB(Cf+QUi<)pwNS%biFCN0U#PwvdLgo;m zTK4V480JNB72%XR>3tmsLX3=o3_~q&D4j8Sx%$AsWRWoRK9!xZ;t_g>kZ_k`a`LZ% zY-@o>FgFtjDCK3Um0R|Z2zRqFV71)Qry}9t=I)PTqha6EX{~MA=4b>TY-;*g)6dLm zX`bWdd65WXVxRis$3l&2XCZ%X$x1X{vKS#I7Gs`8K$t@sgs1uA=C_|uDEmf-#F2&} z2<>fJl;u`We4JglwYbCCA9Y3R$T07hk~DWoewvDOxy8{^#m@J-rSR}7orGYu5&(wK zpT^6rC$MQs7BAUFqe8;{NcrYS$0$*cr9{Nu*XbuXg~L~vH%Q2(mvDM^A)=z91NlP6vy8Eb?)^wmc*(UYmGSrq(H%lDSz*YPs?7(@4-;l^ zlUGYitHJJsvLrGkUv${bB!Y`qjI}~W3H~=hVKN4B&Zmd6K4*)xFvLyo@n_wb=Z0Bu zucgl~Mjw-Wd@gu+!311ttI_ea<*a!$5qEZNEI66a~W#kh@g>1Q3c(A*jAw7u@(*5s}3Pra(nVDp%PupwuH*a3-8}4Ci zF$SvaCuW~nK!^RJ9=BOnK&g&s>>VlLyd02$@!2H86?Y@oO3CwsCv?OD%lIFWmP@U$ zTH~8XcaO?@i`gJ9vvGiF{&4rk;#4`aH-&@-G+Q5#CzF?Sx%(B%Ij-BnHNSnLxJ4-=6f_t51|2p*$H{6XjAPr+k8GV& zTT59fzs}3Bhgy=$_^>^UEdGmvqOr%2875W|p9NM#X_yPwLLrqp*=nS)=z zZM?&u-8tIXyko(k@SddV>O}hCBHSn|zT?2gv!qo6SP9yd>YwMWv=@jX59!fXN4}O~ zcuOGNf~#5JXqhjXaK1Y1QqZOnGH1d{LPGk7e9!WHXJ2ahcr4xOPELM&(#%6W=IiTY z5!C+IY+kRicH?lfO6%NmWDH#b%{Bejo(Cr2emg+-%~L|isqX#zBwTDrMzV}JtsUWy z5ozH)G~w3{9_Eum7vcj+9grte0pofpGeWqGNC&f2TP?ZOC!jDF&YFdY#quFYqP$d>(o8Dd-=- zc*>*yc`nsDD<`v$US2e_Kirh6ZhzEpb@^jSLj*&bo}VAz7C`#%k>>A|7J}$1bEKP7 zxjiJ2qBkV*@A&)tyu8nKy?ZcHbz2hYw5 z6u=3aRHF^e2_aLz8VCleOUTIZ@*OrTvj_*nUkny?nuSN6qpfXon{v+}k@Mc_5YY4x zCQk4UV|(_qtiy+*qMI*UBk{W6!`~V&y>SeaeeZR~w+`YEVe%YU2!u>0^!_J(*@xHv zaMz)8339Pmla*<}r5JF!Ia7ZM4JnA}E!>}v#GcmgbWl2IH=b`g{aRVkWjd}k5vuXR0brOM>0vi zyX`M8)!4T1{fbc1UW^SOOKnLG?xhH!25jV5Xvv%la?3_RT*Q1_9Q5U6)F=Du+kGOl z00_84s1Bpt&ziJU`s_2f zV*uG=l>45d1LAk@FVEHe>7ia~yjVipmutn7b2W@L%voj_X)%#FvsJCVlPx(*JU>o!?DT?7byd@4NZ zgI!3?WONJOzel;SNs25zd&^)7FTD=gNa`{f_a$}VjBzL2)a>7T2H;iFKleQ z?3B51f#$7|9SWGeR3XwHBBGE@Ga-htHId{IK{;9^Tg@aSwY z9TV-cpm38_>!L5as3J2aqEM6LY%}W1lfwUe=!?uvA$Cx}e~&Ank5{Hg#AzXwl# zi1a_%aeb^WQ`~EONY(-Ebhxt?MrIg@8{|ti%(ww&WyOL%5tX<&`nZbhi@kz8%X~yi zb-Ga!7UR2kA#2L0(KO;Y%(ARk8rOC$)zmdt`m<8Q@vNj>IB102()YQUSXp;H-N6M9 zWYDg05a4OvXFHu|NeDl}rTCwi5=bg^*q*6BD<1vvV<(&D0y=4xqt*<>6njLmgA@Ji zAUfuxgL>$|;^Wxp^g@N9A;XQISxe)e0xFs=X-Q+Rud3SFtpnFkDm2yYl|c{;Ug`;O zvXr@v#i~j%J+B3;H}$)=+VK(a5;C*1+d>eGV&XNakHy6h&ByBFf~2QH@8#_UB$Mz%JOlY{#>NGkOCK^$m0O%)xeH8iUtL0|&+?_D!6nZ9Hr z9%IllHl`IJk{Me^Ok;=D{2<0k*ka%5yZ1+6sA*H84*>;98a%*iGWi;>0msFS~G_ba}0n`D*`0lM{ z9@I;*IT`ZKSlVBH$qNLn) zmrS84a1Xbdqhw3uyV)S_SkK$hXFYI;?!ea_?4O zQ^po+eUB%mn|kEwVohW9&Dj)*k&;IFnvj;qwO*$2PtV=lKI825ef!3LtAnU88+-3v zmNV0XQ2e0{70ga{k_`9q6h-fMFJt-PCT=ZDx%8TQTDPRp>tqgIGX13^9@55lD>9g8 zhXJ$X7eDFy5HWu=D8<4!XZxN-q1@uuOJWVwzF(KRoEi<5PRhx3!i9gzWFJS537^ps zvF5WO;sEcE(C1U;T&mnwzitgWHkk0UDZ%^MHt(!X^aVUvh{X~SnEeF#wJ-mf>jEW? zEIp{06pzY^&inaZ7(Si5)L>O=BWjb}U3NKS9U6ewRLP6$h}ys zG^4w^vR-qP#ld)H->$?SugommJ`F7I;+$*>+h+`HI#-D^a&isH4!h=&G9{<;@&$u? z5m;;33bFvwJl2c$OuS*tE6o8>7DB1eHD1HqZ>m-9c|HyLoza6ic~0Ghr&!;A{qwg` zX*uCSSKkfR&$&;ZPww#>Q7+6>=PCYFAEM9{CXs=DJ} zLw5hYMutD4Ni%bc`foeRHnuL}vtpVayfH}F7(&tUcT&TwgJ$i0%)hD_Jxox=FuH5; zH1o#^jc!(){v^1*$*zNe;$q;>2nr9>E0*FJ87;1tM|rJ`vlh?jFHIU7SH*`9&975t zStva;{TuaY&Jb2Yx@wf4?7rHO>`?ES?qb#XoHkO?J=k zY6Gqq{OZ;plTOvb3dqkT-n$&Pdr(El zRw@{9uJLuh-#N|^{htq30bSZ%;0QQXL#v?b+3BfNe(4T1&pSpIpQcG{5nrnKmG*XF5j2vMEgk)=$l7M{s1qX1RMWm(+ltro3s=x^{_Ymcf)K>Z2dLO8a=Gk6X$hd&1Bm|^k@3j_Rj0G&Bx zKlc9G4Sv{&4l8Z!?SI2^l%ruNL+6LH0K{5+nwgn_jG9Xr+j4inUbYN~T)mM~VXOS@ z5MZBnnyMu+cb5On^lZCp;@k$B8)~Y5EGtLTi^VGqqH5Vctg7{Osn-ltEOSKpmYdQ* zGXhjodRp3_LhawbI&5YjE=@CAx(`V_R1v(j!%vU?%)_`2G!~>2KxVP2i3#1vFIj9{ zT*6pdBUr>S!qk?0<+9d8I`nH~JR0glhCG0l-)=(B-szu_sJ-pWA|)mzp63M=mPy|L zJaGr2V9ta%Hy<$Sf{z#oo&r9=$zDG&I_?l@KxCYOr7i71I~&bE>|k#Xu*tqPw~#bx zk)<}7S?|MX`A{71(rUr>#s7|$|DQmS#9YPQ4FrarMFbdj6jziA4i(0Z0mMVWYL)P? zu%xVq%3(gw!)5C!gnf$(SMF zo`ZvPho`WL>go#>a`yDz^lqhMGN=<hVmiCpCB9;#>=OZrl)9NLOSQ|Lv-h$w`_E9m|L@g{V27zRJ3Tc$k zzyqe`3jbB4XwhVeKLb1n7F}3Er#OBW2t`1*5E1M7W(Gjov{6noWF3Ih7P#1g{Cq@X z0CWbV=|%nBs@*0yhRrC$3%kca7(je;VoFNaDgfgC0b3?EHV9P-;LRWp!pFx400PpG z@~Ek)>%lb)Jw7~0arFTK*GFR9*Kw;YtgQOeMR-_Qe?h)tl;(~bYe*WvW>%^`BQXb` zCsTWSV;X=&^k)d5C1g(d0-IUX@5&-4{D6&8rVS87y!6FwEn#?#DZ~X7OL(-j0}la2 z^~(n2ANa&i*DAS;8#2~XmQ3}(g3}KGaXj^SWZ;ouQ-}mV|DIH$pzbw!K@kx>g3Ty? z-wQ8+7j*K*#(VKkgu7`cEeVcXP_3(L&OCw6-_F3 zP65JZ#TaUdkODqrO9%pGR7=5*2!77shwSRbHGB3`8kM-cCTKhCoAeg!CSKe&0;&ULma}hO-(%1lL4Z0m`;n15q~; z-zp)RdUm*g&~=-o6z)&Bztv6AQ~D0x<8J8)*jHK)&=jK!r7!{4eYYj}&C`e}ple{1 zDfF+X0})2E>KmjUJ*Q3 zb)3fYkYQY*VIw9 zx9ESZt?mBoJm2!inuitQ0lfCt?^PhH8Gy+fc6UM3ginw_Cv!KQsI3MM>6KD5z|`mo zwyBVA-kKu<9I<-&+qc(67&pOCuM&v~@$@r!@1AzNB_$_I>t2uv;~s8KPMHKg0WSw& z;kcmZm=N|HrZk??1Z99^B>6jO~Aw_M=_=7M=9R8$Hh}UQ||sY{+J3ZALeoeY28S z3_30y)5Vx}Ai0D9y}xF{yYm$g^d4;o2Sy|C7tp z7yTYatm^9OVXTRok1O~q&uhUk5s=7>N6>P6iJrz#J`~c*85wxHFp6Kt#rcgiw~faq{BAhtQU8=J&pti@re(wv`4sBm}pGW)F0GxfFpx*~CV_ z5MTLzLhv%tJssS8rXTLMn`wTRL~Wro@CsOaVzS07z7ZdTtWAj}XRO$~Ko(P)#Qiu8 zm=I&*0evQGMTk2&CV#8(B5)lG8QJzhuoVjlg+&R_RT^L`VR3`(Ke4o zM18zjn?T)ltnUvit*QZPmX)~U7Ycl$WcxAVzcT`<19Qf3n`?Z%-gv*+RyAJTujf+? zs`xyl^gU|CR2wS6qBV@WC;r#w$RG)Nr7B@aCMYz91!Khz8IXirDL0X5i;mmcCE=>( zcYedY47aHbc7rK)oQ`u!_RLCA^^Ew7Evk6fE3*V<_UvOEH=nJUdP-YzDyln8>iq*j zeARGz@&m)tCfSImy&06&UQ;7eOhCsmlYHY-LjutHQHk^Nr!$1=$+Q*qt1JCyiTvkq(nMyx z5_M*r{$dlW%e! z#^$#-YJXTLS;>CuH3_T18f|)V_MmJpIB=+RTS-}4v<~H7D>HCOpCdtDvxkcTITS6C zVQpxl!W06f98@>DWm&alho6q6c}vs&1u2$LOP4&)a18!XfEL9c@}N+YTopy3o9+}h zfX1fKIsU{OH$=0-&ll*D2O~urv;b)Vcv|Fac*CjssGaVdX2LsJ^LgyKra8HxHx|Lt zyaT`){tz@WjLa$ zPrr>mgntO!DP%xfd3&Ej|FEho@m2TX!;?M7EcXSBk>KZwcSK*3i@T)5E7f!5T`uXq z^W!BQGKh#_NEZ`4b3{zZo@}eGtrq2FW%o;r&Ns>jo`C6ySuOsA*E1a^GI_*AmIM+8_j5Y3zEDEw!qRZ_!KBz1NmOy{vsoiadGJ^TIIg_R71%!ulEWME{}0M--ugr7{+;3E~^lw*#vto{j` zdRj#^{TJck_x;<=s#)L)k>`bGa1r97Z?3POuKf{mAEU4_o8c*e;|0u3tW?-@r`*aohLHGPfNk9_~{s1GjGl zG>T7o2CwZ_5Hl4tG|-4No$zAj`a)iYjgynoZWuk;FIjp#VTM-Ugiwd6ug|dP+xW`L z%G4JhH?IyNY^n)#0yMF|K+f*%{o>eD?nBEbkYw`FQaM0yRD}SExCa!+%ODv^PxlsE zPY;hlR#&C?Y=9z<2of`y6o{hOP2G-ufJU(OY1omDqJ~DFHCNzKc!(sv~u)Y{pO7|FU2Ju_c(QIU2);;)(J;(@h@>9JZ!crf9q(A^}X!Ah14Ho zc$i*&Vb|%-o*x+RrIy@?;gWuCdT}2FrJXjiG>}Ey%X;ltWf7|UP$R<240yeV#b>UlprBxG&gdbqbCA}|HUXP6@id9-!Ftbz2kWyIb7Q4j1Y|y% zkw=Y!pFo@n$8H9mh@o7i!_A*cnrC*<&d)1-2x{I-A^jfdtlI&}dg@AF=OS>86+wo`0yP?bUiAS|(S zKxPG*4ZrD%R?naU;Y;7B@j2F-o0B(Qa1h!B&Bs-Nf)zM^>>$hOx|fOEg)8znZmjA_ z6$oT-1)BPe*~Uwtjoil&LV$s6r=aHy71~Vz-L3^s&fEIgl|6!*=h?-tuS-SXV)+J6 zi@>bPj3tQ$z?C3RUfbAcvt^I^Tf=}I-H6{B&!HFh4H9ozP+2OETU^#eC^3W_e8W1%N}<0cXv`7W*d7}9m?e$Kw+#qi378};Ky ztQ+)A^Ul0@t*Is(!5KucQG8TfK|;d9GmY(n3FQzYO_4%J5z?oKMw=Jz%Fj^V)7N)X z#yOZDy`x#3yhaaf<#1UMl4JQ?%0hp@lUfpv%Sz9MGAx&3fTSo`y|z`MN;nLr+rMRI zpIF8C49h>GVwwz*#V2&#z9vV5!@HQ^uhVOg-?1mged|{4!xMh|BnGd;1a7#l&Ai#d zm)~vwE@|w?^!)`q*V_wBohh`d+uIyWUNaKkcSB_ym)z@@r<`t{{V-IizQ~T~BKx>s zyUcSw-yu_Ju#dq)-{A8Zu>;oUPcs@KP5@jl_)mAm&w>}`uWk!I)ZyQ&SdupxUQQ*-%q&NJ zu4qH1ts_soA9ojl19_dBctGtuJV{sCvAjZ#%%ggKLsvXC97+A`9d_lu(s){+7N>gj zz^#6LJZ$`ho_0xs6(AWPifje8)4GB;We|hD;r_qKm-{1fN^rMV-vZ}npysKwno~>7 zPrK+ceg3zJdW-S{97GFh?Z5YFWPHvbumZ*hPkUCw4hIshICDY3>D4;B$@HT2m_x5 zVi!$rE+YckiTW43jJ?HO(pbd$Cv)w6d~0yL_xa)t$8i6HS6wv$`cnI{Uc?YEwzc)7 z`e$Z#HVCiIAV~AotGPvEnZDIk8@T`ER-b;6(~$G({ue~qsac@-^9Js^#xI8W=ptK z0l1jA<~=#T07wmx6R?52RmTa<1%)o~?Esl<+=c27vO`Kz(g%+pM{D3iZX8hHt8U`p zF3QNt(v19K{v56iknh3Tr^Is5Nkfhn$aj-fR8#=cfDB&Y^uAxal@%3n^tWz-><>XU z!CDr$kyO;NXYelsS6WjoSa935QC)MYKsl`Xt_tQE5fPEu&!Ztntv`iHT-_1c-;QWG0Er&?>^z2n1>X%cy_&#QBHQpnvA; zGa!7PK*R6_7%6xo5+WiGa4U#jy#3cF?*7Qd!+T{oT}QsZFn)9fIda%8vO@nmwe4DX zJBy-MG&T;7nJBEJh5E+&E!3DEu`zU__65&ZGl&q1!4Q4Ep%2@())uDfiVH$h|wSPzkwE44O}Z&EfDd`Fr?Wq1$4fFr*1`MoSOKPY zL~j&?l5-DWmJ9{-A*QKt#n{f_u`z({LXPR&R}$YY8Pqt_2SQHa01U`Wg8Uim*v5cm zDxv@ec)O`>z>tCrfk8$Ed+7@BjVRLCnYV$BVzHFT^tp?Ri#lO*>&YM&5%((wbRG<4 z6%|u-b8ojC#-y<4W!Lq&O|e1M#hPacf>Iq`sXWqprq-sWCTQ-%jRDKHOu>!U#a8=P zhxedy)=815<-coPWlmx^5Y)uwFC#Xm!3ds&fPBq#u@d)&`jk+J(BG*jE6@2QKd+^x z?HL&8G~|_X6~T^_|JqWW_nD3}hD;JIIT8?P?7mEKkNF3ntU-qR7VW)!1n9rgLaz_O zI#R;S)^ogekkb5$rb8I6eunY+R-xs!H^gzrbPs|l7H4G+^4PHN(6r!jD2mi~#b(hX zRxr)qC6ukkt8)H;P)vhRbqO~!%P*BBvX!VXH6WF)1AxX2z&Kbmd5B`Nqrw;nnjY%# z#&q&0G_NwFM#}4QsHj`fV_!9VNj0cv9eV^FQw9w&KDCu%44+F?qIn{GM6d2X;Ytk_C{W3u)A*FfW@ z+vcl#$ZW5BZ}TQDu%ej1?xHCGlvIIcgd6_w@Wi?+BCmIDsiV>nV72d|k4j1LU4^gH zs6i7z%3GgeT3}vLB+~!gx^jX~O3A}Y_kB2iES=2&6Kf92GFCl$i`play#O^T!bGq| zL_sa3m#KL35-x9m=s*A%%#x!%{w5qP$_BbfE$=iqs{?gE$I^1s#z)}btCOKYnC?o$ zL}uj>e`%G<;4Q$oi{G=DZguf--=BaKnKFKj70WF_e!X52SxenI?0t;l-aAf$%hUT= zIalI)Ngr_apGq|tjTOFjJbB}4QS(mVM}QR5B*Wjg3%Lw(*_DK`bdaC`VQp1&#-DQZ zp?ri9eh}6%f#Gzg8g8ckzX>OIX!vO;RW`KmbAMM9&`@$_V(7)hz1OC;KZrm zsLE)-Qehfms(C%S$0?>RE~OZY*Bbc`w+7WXFxpZ2>|iAiTI;u7=foNT;$Xgs!8I-O zE%}6UXhVyNqLuSWC@Iy3!9qefj2SNKOS?wMzRVp6pc* zbM^-`4EwPFm=kWa8Z6dxM;1sODH*+wFKv$*F$r^L;mSp6Z_hn7Lz6f}fF&3_Vl=W&BqDz{*oq4laZq{`m_X#*KBBL?I`eN+6aboKi8@*o}1#c%=nrwz*kDP2w}5eVg^gm zXCXFDPNogepS20_2o9h#?c+TM)0V4Ve7S!1aRkbz1Qb5oVBS?jl79r9M?*hkJdP4} z?G|r839|pOnyS;YtflJU_}tLItG{Z2OJVI^j_6M1!oCOS86%zmq(bx#goPTAKgziv z2tWvMy)AB)K2d_7{c-XkPS2#yI!wOeG6&Ub(1|=~xA?(hksEwne!bdzc zi>I*nsEZ~z#{zsAQLnSJjg5?G*1gck7%k&4Rc?r<6^sNG#Jze|0SSCo)+}mRn}wW- z@30>Z%HgD?r^8M^_K<`yQ@-wS^6!Vmhh*(;SB!mU?8;XB`LC1ouOX2RkL^QaD)lL= zNPnVz8vU|HJe#rKmp9%NO}A4SxR#?|gQq((G7_{x&sz7W#(Dm&LZmb0C)5cw4Go2# z&SZHg(akVG?^?kN-I0F%Wh^;06&S&2`&7jcI#(T?ArR*ENl86TLqrt#ShvC@?7&uU)ki{S0 zD2Eg0)?<@}0iUD%_(Ma($K0fbdK)NIw_a*1d^koB&m34sBIDF zWh)Nr$M0ShOrU*lZp22_V3&WpAA0Yny1ZuO8`J@oOLw6!n?Sb`LVr^ts5KRS)xp!& zYVDuTXi-4=cIAxxEcr>I$Tvw}J*rfP$RpD7#$(^&(_HPiqpy7Vp&501-_=%lwm>{b z?!gd==$>c^$E3PniyN8c~Q-ZGO5RC9=Qi`+(GF7A=n`h^)MmAFa1QN z@@1rhRKK#C{iC^Ddv-qdV2ofEMbHC?T@@Rv8dNXpdjD;8tdjjF@uTj=P4ChqqmO-0O7l9cR+wgY z=R+4hcFsHZW=VkyG$0VxPcD3vyMlJ2+M&-hS9 znvavuJFTf#VHKEA-<>$R>6xx;q3Vb~_ zP&0*TT?ud&o4Z!Q+V_iQuQS$Dz-zi++1K6+qFfMs{9g^kn+Uvm{?SB@lxDle$KByg zm~5_BhthN=P$WOj+g2z2pMTDOnDT_NKF{SvRZ*@?$9H_#p~S>eOB`IBZV%Uh_77%kn506)C6NKDg&FY- zyPjl0P5$b63~ZuZL($-Q-bOApGx^$ryi9-bQ&q-lo4&W>i6E-|`tRQoAWs6JC<}?* z`BWTc-zg+k#8Qdr8XEqbnURJxa*#tFZT^dog(1`+E=57}XOMS+D8uMUT{l?F;=7Oas6!Vx;VS=d4V zOa&+?KnJ@ADPXlAR)>-cYXCrB7Co>??FpXv8f_MmADX()9F)4tD?p zhq;c7lCsvMIRIdivkxUDC6MwWc>xkTA|fJ4ErGBvJS{ayYute)?5m>yQ8F+x0-ONU z0O(*Iw`BQV977-Y>QiOqK737}r2%P(mg?8jF)kcjToC{V>t4Dd+B=A}c=G{bG1mc% z7xg|7e8=Dk`7%)olAZG;cOAjg1T!mutB3BAL|QM*Qt*+MEb^)1gr%gs0S?Mr=1e6o zEiR5};FNn4Hb=XiYMFywJFR&JY_WRXOD62yzW)CFOiNR#aMMo!Uzgc@`hi#}bW4-Z zKpb*WzyKfTqVboP^D$@%9t2gsRURz|hgEnGqix=`zYv_SL$GNTlXnwsFnQq%@+V#- zbzgvJSp1Rznck5;opP*>UKVTu>!D-RZbsMW~J% zUL8tL3-hWwkc1oP0;La&#)m+q9Uom+R|nX5LV5y=Tqlh5+Su#udr*8`aPE%pMR)HjocUUZ~IGDCAC&g*KRa0*P=NjTAwzAr>i?{CyAesp)z zSeAz5IjD|7%}+1Z9Q7Tvsq9nm`HJ_B60Aprpl{t7UcbsAw-*b5-RAtLh08y zOc?<6F)ianCq&wNoxLi)?H}5>%ih3tb&F%y%<$Lzx|`i8B{=N)#m#FreqpD_<=~TY zC!yGnA1IXavJ2(I;=F%z?K6E}6xlz}yJRiuKfV0L9CliA zdb)kWqpxllB~8}q*u?=(WW(~LfZeGCV8Qkw8xTm$4;X0%Z7tnV1Md%HzY0S_<*v0m zldP?%@FBKJz*vz{y~lh@Fp)and=e;*bDvY0r;k&h>?Twc64~+xgO!st93EOy80%COtuJ@{i zfaV0XqtbSm<@>_p#EJ;aQc1kpJn)nS?Jrl2l{ zuzgH?6Ht?Inh@9zzs()=REnPdN)z@%q(k$D-2h%CO!Lf_lyPw{gFoOK6Q4-@vs*=S zJt`KhLA|8hsZBDbop|0p8rQ)>&ny9RabGmaI9qmhJRaxJw|@L!t7t}wt3Q@z&*_Eh zC8dZ5=rk7Z6tKQpnE70;#5!09%j48<5UxVN>CMmAjjAdu@gXn1%^>8rGb4QSbd&Q86-g%_3e! zQ>slHxARj6Q(rFcXjN`*pvl)(sNAU=AQdiEQe^d;EDXZ_BuNn2r6YE))bA+g*zHy` zc&*!?^66gJmPRZp*QFo}h_PS^DUWL5Py0<1foDvA)q$>K#~gv~Hn7!PWpQh&wEqI# zzWgOsB;!ZrSo32lcdv_&-hq8HP1QuwObw+wB->rVGya3WJt6!8BB}TV1o#9Y?nO}; zux&mhABJZzx{|0pts?fZ%+;G?ryjTy7yA+E~D~9`V zso z)@KNIIWWy4r1zCSNIL(_K*3GrKYBUWg!JtV-y_srg?WAEU4k_^6mlFbVXni_dvZ+> zCKfIOwiC!3fK??nog72L+<31)*WG@<(!p*`{%R4{RJEiClU}b~l!LL)3w&d*zCt7e zkT|*>ZD>BaU}+xG4p>PVGT6#S@ABB%rB=h&3~^(R#p6T+)&h8 zeEN5o1FnuSlPUg#iR?ZRX_}+|$JBoZQvJXG<9H-H4$02mdu4COiZZjy%!tScA$uHq z%btZ$$SNb*WFAx`37ILgY`)id_Im$*pMUzJXU~%!=W)O8*LAzyuG?)qb}aVT#`ROt zLx2rU5T#MYOdiyi_&&w8- zGQr#RS5=Tg!Vsx)ksTc&vQ??OT2?kxi|&t#`Uu8W?qGm!^A?sdq0O>!HW7Fsd5@=K zA5siyq$fE|4gom_z|!g!Ndsn03RrQ&{`3Wpn#jG&s(8%I;df8Wp2r9x_}l&)t{&yy zwKRA8p0AiYO5@=C^F|}FS(Uqy`7LezRu!GulRuiM*Q1*5&w2tHS6DdIrg`-l*6Due za!e)^WNHI469jvIf$}U-XOCs`Gcqzjo?{oR)-vnbY(>HqB_&QB2C5H<@FKNLO+ZLt z4nszaD|QvR!q~smI~h10%v3=z z@?YJtmB^*x!9jCahz1M{WKJ<^-j5z#llH>@`SbU0l1sDmPSz%x$WwqR0g|c)cQCW5 z8tX0?>AR?I$%g)q`YB)BIg;^HXX$;i-Svd^)3?9hIgj;OY-5VA{FxjcRf(HzWZ|8k z8y=j_eOfQZdKPkSWY?=;p1C9F;2<#2Iyl!pOF)~Hn;R!-?FZTfMe42i%=K*z!U_+hv4J*btOA%KT?52ImWS6?NO6@S zJe9PJj5EJ`U!xBnE`xTXrU7H4dbf>sscYg5CGhXc(J#V99^QI7cwJVOex0)F1YU_{ z_w0)oFG6<<9W?~CzY+VXHVmy@^Synp5@*b)hf>cAOsszCAo*$YW)=*XldEGZU|~&;cufqWJ}1J;%j`5G$q_NwrT;+8^X5kVJ(UV$38c`Bq`tfX*lKinJV7 z1xs87Lc@@ALmYJz3=Kfu!#QghpwXGi&aW9)l@jxoNelJqSv?1X%=1YYal!}RKjIEs zI;y${%pyjx@naV_&a{xh+Os%wL&NYjbc8{DrWTOP?y!h95rGD$Muef^SnJ-UBH6nl zV^&*(`wYw8&eVRj{XT)q1_7G?dsQ?%KiH-V}g#~@K64967%q#_sMTfvZ zj3L+GTwdq3OF`n(>(k|2;l zt~9RAe_!MjDsGfu*H^9X33&P3K?=iaYdxeG7n&(di0$(3AR)_x*(3+i+z%xJL>dNUraSZouRJdt!?W z_yO&m7{&%R9nKuJqWHl@?rjm%c6n&XGnhZh%1Q|5+xub@5@4F`l@mhjjUpH5>Vdzh zhc3&hLt^U{;AJegV0g_Fbx2q{R_y$il9AyJdzoo#BRRG|kZl0V0&4dd{3U-7Rx+os z41V~);87@J{TisIN~4!73d*Wx+STpt1)BWO_}3M^naMnWSEvpjlM|G0TB36xwDhF( z5Ojh*Fq$OVNc&_n*tY;A%C`p}ZEszB1MCnwDXFNgsIXJd!lv4q)-cZ2l?c(f7mDmv zLpw`@ru0V94V@R!#<$$LIiD==$|Jm``kxX0KROLA&$dTfQ8P2%1?%R&<^EpVEZF2( zJDS+(_pSUT;n030^YdIIsBC{#R7fb;3c5`z!SZYT8wzp^qcCIXq96#ur2~m=1fo(< z7UkaJwC1`Zl97`$7$T*04F48)W%_|P2BYfQwUlYKRgiZl?6`XWNIA{+t&lBr^K7!9WeP+>!PyAG|4+ieIt&zP!Mj;~&$gf^=lNx)L4S_|&gp29Bf!nN;O*S`)4}s< z-6X^U8uw=lxaWXP{n4Lz?_Uo6gy?GbRMng+Prx>xoDCSg8>N{ z7=_xPio#q3oVn9C<1i!B|Ng8%$=SAiBI&f&UWcBg}FJ@P)>usTa`qxJ8(Q7#R%)) zyYS|LqtyQn7MHEIpv~8(lH)S8=+CriEou1b)?UT=&D`C<&4C5tP!k6xT&$%<#!DIh ze{k46i@OS?RCEFKvB$=McL-?rOJFH$n}eu9w*^$4<}W|pRDwc7BP|gE-~f=AL3?O* zsL}s_N2LX_d;g(%Gg8^#eeC1v_f<`DN-@ zv?#_m5)?6$Jlzk#BI!TS1L?E|pvSAfO{Cs}`}Bv6E2G}&`)8)6cA>+6N8vDiX;v7Y zTa!ETmBoalK^h;ZKN2tn=2ikEbluR>^7QoV8nqJJF9k>ogNjc;zFa4hcS{}sY2c>{ z0FM9+yTZcTM}L0at){9S7#f0A7JCQ;)D$860qUm}Xxf3r0eTLu{6g~ASpq*udoHo& z-QrX+xS#?KO<+`zo|g8|N}f*h6s}h2Y_InS?LnRgmlJ?U9HX$V2wpLeE!3|)%)wb= zAe8l(2KGtzG@a|FGr5228W^Zp0|CFMJg(7`jgTVP0TTpR%1Vj)g2EWNUiDnL7Zh|3 zpho{gP@92)7ue^6umU6@nIBY6!y5E(b*;gq18xqKodDeMe2Z|;fVt66xK(|ATY$kI zhS+#I3u0?nq6+DUCbM><9=51NEkGTESB2Z5omCK$+|3&O|E`_fz+fA4pXa`AJ&o@yQ=3>-b>`ka2dQb{L+%{5fPRicp6djnae=JnZ#gXd4yjnI=#HfY#sWv^H z%Djn*ND{pX-q3@E`$D-{WUo+ft$P5;tfFoMj8%*3es9x&W(9~Xt-q`?{_17R;$8&J z$=e*ATH?CS@MTljt70$wN=D$zlbdTRCm9Dr<455vaq-BZsUq zfx&~;y5iL<4qPJT7{`vEFleAU(x@-7c521oyO{ht^s%6wAqWhEt79z zeg$YsnkKM(=H`w*WbvmMt!im*PEyoI=e-r01Hq*1Vn*J;8FB5Fn?eyQ!qymm{o!8}er?C2`E7e`6LNl1a#qU*g znl%RbEVtN5y!unn=mhp~3(Bg?#=?n((Cnd$qLJT z5jE-1L|cLlbNChQQ>t*QP}+C$U-lwg`6w4K%Vy$-85g>7jGEZlxvK%=kaU4kiOm}J z$WYzy-v?`k8e368)A3x!8e})~&u4!17HYrGoBH(^1UBO-@dEG@l@Z%5L+kadC%Hzl zo8Zu*&i=CUZ9P5f^=GntWc)}MNv&i@QUa+$BJl_Z55)*B1n$zduaG_td62DiZf62` z4i8vRQ(d(4e#85PQXsA#Tsl~BvGNa`^uzRSEa*wzXC-Jz#^a*<_$-hThaF@jQnIPo zx{|vcgF>xr7gX7TZ9gnaN=wt8c3n-@jB!vZFCchrr2X}Pp+r~cUDN?O`2sFG^DB+Z z)H3(#Y7RJeUshI%c15dS{@-<=3Jh9vUdct3Gq!f#iScinHD1$I-m&a=5^Wz>y;l*+ z0*~sw$fqaWa!HrPNRt&apk+*=Oyl5_g~|jlwWBrw!8|s!(H;7oL09d6J0@ctvn+q_ z2xG(r2%rzvgoG4rbSXB7w5i4^DJfZ`KsW$qaoD;dX9YAu0Izpd-)j?eyPcZ%* zp()!Lc5amk$Yl4$WbNjhf=oK=Wx;8Htvx+=0mawW1W#Pmdus`%S$Zf?7FkKtPf)!O zO|F681_Rbmx7p^Nabevzfu%#QF+taS+8vPP^|7!OPH2`PR6SYGW#U7XGB*{o4D1No z?JTO-HT_wxMluo1o9j5@-VO29J~0<8VL{<^hRHW zQ&;>8JB$}e8NmF!y1MW7s^hJjb~a|snMKJ0an3gOp4G&U=J`~{!GN<(rItf>+d}`VSyU5@z6b^X*(h{p(b7CWvr#I3q zB;x0zpjA69`b02BWGyN&{T*(yNwvJ9i7Qs0xadWD_A;?~dp`&XYLj341)IEHf%>8o zoELBPht`mUN9g0IX4`0VW(#fWR{Ey>k95;xv+`?WOM<2LWo4tc5 z?tV6AVMZom*yK1M#eEIU*GnZ>$cTpFHexeub|7!rv!F;bp$EMF-dMZ>702?jy+vhB z4dQAywQw6~fhM`&Fb33-t-c2HGy|PXXn994;uh9BY~Z}n1rWf!TY3Xe?zdcNrI47Z zcS;2+cXt`E(WocBEE?IuQwa$q-6@Y@-V`NTtORM<#?PNBe-UO-cHTd;xzN;Frzb1@ ze|^)!-ocE&`oc+meex~iXYK3)4@udsb3Eq~-m>r&zW&~`<~6{-lPr@IVuWVUXlDy= zbBwn=l%$6()jBr=3kzAaPG@GlB%Q-rD7LWJ!sN$~*Y%9yeoJCBpcX6%O|)mOf@Ov2 z!J(m(^SXV;hu#)=e&5Y+ORW5Um*FBr+H^Xmr#AePR)!JXsEkoY`8)j@HP9xM zw^vt_KK@88R*y5r9d1$u`(z51Q}%U5)VO2iSQM&Cwn7%vmx-TBJ!Rm~216X=o=~>d zfWdsLal&niQWi@0?$&Es4{RT%>jg7h)UfEMi%>3VYWn=<4GDr17Y{FaFV5uNP%BaI zbex7wZ=Z{J?EU1u&<-mmgyLOgWfde1HMQcD=m(~zI53Y)Ok~}HyV0725X9Amc@Rd{ z(+n7f3E7y-k5^EbS%aB%nMsO-mRYYA$zU9VEclFGNU)MeTaDb*dE3f88MYd673i)S zJzI`1k;IWM_PK^mL#Y4#MC z8i8eMa?Ex@B>46b{Dc>Jq0NL>&LVRUg+i?srSg_1`!XjdpWcw=(vFx_)<~-nr13KT znD+Gtg`^)+iar5k_|I68sEc?cxnO+;$~#z$>}>h`^A23eoz64ADME*VXv2d@TIl?t z^8JNPj&jBUDBnaMZLkSmf_ve;nl%U-$cL&1$OhQ|cQwOZbzPamgTySfChAADtS$Yr z$O0oF2(OsPtj*@`3KuoNZel|Ne3KZ078Y25UIXFw!M8SlojmD?DJO~+_HH3Ixydk! z7{9o`wkBg5aZ^w=-2AjRCklz+ojTmLA^YMogiKQToTMQfVi%h=B~Z-Afw(Cw*(>Lf zbU}}pPPJM%5+HzX#Uh!__Vcrc+mE+bMPkq@D9uE8HVo3+X@Tpdr38Ve-h8P=`bv~I z1$Hkz4=n!bwBf`uNcGc!fCl4lq(2Ob(d7FV*6_ETpaaNsqUUXqDW{JnIV7CF{E>yj zDI3gl8sXIQDGvv>pM%4@a=uvSH<0k^;_?>D!O)+raBGS0+Y9nd4X@q~v8q^#$*C!n z2*~PsALj?(*INd|E~QN5l;}EgJSQhdg}ymYRPS;*Bb~A+cuS$dPt$KKu-g!)72Lu| z=GPMf^CcN#G3_Y5Hr6ZzLeyED1iAn z{#nR#Fq-eb3izD{pI=)K=LmD{1#ALBI?)yDba*XJA^TF5TBRP4gAev~<^0sd#gP$x z1n5R2OUTU7)=IOc47Je zkJWw`n5%kGMMRDY_f24#*~~Gm`~AX9hfjEopGvq2JLnOpJ+%ujYb;U+wC2RF&38Rh z$2_mRiMHtTt;Ox_GqhlM;P}E>2cuiMe7(8EQ?c{GKj*U}BbE|GWKUuapG6t&V%+ep zU0D4*wl;3U%;>k;9pm73v}AHGkmvqY^#{GbOxANge5Sqx$Fxp(4Jdwe*K;OkIIS5e zPj0koPrCJyQ?gewrM2)@+;Da8q$4Av`FE)2Q~J3?(XCaEf$YBH%BI@UzT>HPBAA7OEXoks-O3DV>5iJjRDPe zc~Qsx>yLS22BT4{jeJkWRUT&Rs7EL>=L`!xHrerOgX)SLsxy1pOW!Sij{i7D3oiT zK8M_oX85Wwj&%JR8a{Aio&Ib;``LaF+wS}GWmC$)GgC+Iw5LxMjyLL{N~PE(j808a zo6P_zP-|jmI$|f1Y2rI^H?c1aTecJqhF78u_dSu^{Q+SprQ+_B73b#kdprMqvuYNd zc3@lgR^fC);m={f`9{I1=Zx1W{{kF4yzwHP^3gjYeLq~eQz*_HD% zPSI;{hD%yl*gm+!)@COXJ;D=X6UYINUPogkTyBL(K{j_**ynr0SH`wlj@>+3{|LKd zwOOinZ#UW{h~&I$Wb{l;*F4@1jUth;)&nUFJLByqPtSKe3y!~nnK)m}LeOdT`6GM# z<${ycpinO#aGKc++;0gwhzbH}kE;cKli^rDfEYk&`~vr0$#(>?~j^H_YdjjU+jxs(9fH$qV zrKSDPOSjubMgk9{*`Y>y-J#V!Ei1T5oWFTGzCn89V*5eK%M91brL~>(pf`s>CUYl` z>)>e4MzXiC#!jrcI6KRD{OE_pPedwcX{4p44R8P2+*AlScxYgdI`ivpXMft@5~gfq z!X{pGgfQubx6A_lICp17a_Yp|UUxT+{@e+(Jk;lAqS`cBnt{VK-w2Vb4Y7+oGqq{E z|GmSm11b5#_Woeuc~$jrru}rrXYPp)aAnZ@_4_Lvp%d*LAnN_^G`sfA*L($VPNAQH zEhku(cKrC`QI@t^$}`yQp(2a`e&jL`f$U@Q2Y2D(!Dc31g~~j8?dFx`l${NW z4$eO8j2B6k8u-OpX%!aF+4E`t`{yzYGM;oWW~P$Tdl=rk2lM~kTAQBVvn|`g={MlV zz`OzAWT)ke$AfIa7>>?g9(Vw}oK;8)OTlPa#eJ}&vtj6D0BHhi)rf*MrvLeEC|#Dj zu1Vi6*2Fh4%grG9k%5jVZuo8Kc35EaQNfL}SUs0-5R}ERTxjp_e+&kh_aQv`5|Z)hD5m!e0`pHt zF@Ol0VZd7{SlJAbsY~lCghjh{jBh4pZF5iuycQ(%UreezYE8yGz{-VRCOd)bMn$*O zt}TSKMTa8xCa>cdXR)v9l~h1j>IQ%g@P;!+mJ!024;!yxc%(Lhlewy-?9YOMbA&t2 zp>7%zLJpS`V6Z|@`GXm2fbawik(87)r_M2iUCZw^A6$gr!Q=`&nZCeTT23^F&Cgla zmFsR${B-aaz4@RSuuM4QPp!k^XGgheR=8&z+*z_`_M4P-(Ih=CfOZIDb~5hYKhMc& z2rCdxfJ}lw{Ntxj*@KiqDVSCj@qO5|{(TC&9L^qK9*}*yCV`1t{CNe=c*CLkM@)NS zE0}8RU>jkN{9es;nx{q6T$j)f%S9gC$`apYbzx6H&~6dD$CYmZwl5MRY?$`OS&XE zJi#LpwtQjxOSvfc+P;N=F@&1Mt3i(4#Slf8U)Td9{25U~PaJC~4<&_k6F zxPR?SHoaS(z#Rtq!UIWh@kpa0xu&ney+StW$;o786VX>|ue#XS+v7Iy2QXY$BYlFT z(!CIm+^=Q%5`5QIk0)IkU?5r}fa$(c;mwit(l6=t`lg9}iMzkeZlfAt+M5fYvlo4Q zpPF#%RPN`WJu>Us9I0iu@;dhue#2YKpb}p(#@2S7F{<;R7fn=>4_O#hHhZ&vw_XL{PSDk8ForhFcR2nRGOk8Rn|f+tf}I9s;17F02h zgukp(eOSaB&lD9Fc86vx?!r6w0Pch69behqutSvD>t|6#eV-HCcY%u0UdOzFZ?<)R zhwXZ<)h6HEUX&UglNr|6PBY4Q6nJmC8n^9{J#(`{eSlJazJa~%4Y9|upDk{r-W&LZ zaBaYgyW_C&fK?pHlI$y+AZOoAu(4-sY;2oIf4r|DgTldAp6dF&x!IR5@c}bmHz7i> z{I`N>5x6yds7H{)Rr3kLDQeGWKYg-yxs?1JG*sZ3(c>yd$i!cm59^|~Pp`@R)WAkz zO%eXxB;ymtJKmm>{;QBoQzJ;rCsL6uVM(wMqDSC;sz*Q@*=aJ!g>e9eqrtphNNk3x z36YM+?pK{c5Egc1Dp+2)PTh1L%Af`-S8#suCVn%@8ee=>Q2z?g;YM)C-_5yp#^J8_ zHsNUM$wakc@o@G%ihDw5Q!L^kvSA<4fov)`Jj62VeZf|%--6DcxU@kqo=VKKa7BzQ z6q^{ud#hq{JGQtVpr_n=347}-sNzU4BQ6{Y=+hI$<}^~etkJG;emGhy#n<^XR0O(g z6GN9j>SN+149J^lN--*OYSg_4R@7)E7ph+peX)kk2&wY96EbfPVgc3v3AUN!iWai97M{FU$5Y~ZZ}J2Zqj}BxMcq5h2v=z9-GxU zHP!_z;>~^!00l6%Ks#Yw^Y7)wc5=w1AQ%AFeG{&E;oxp;LsFNGbk4AiF`a)HzG|K- zKJkyFcyGaLOg?q{@B zvG#?VD6v&ZN}Aiu{Y6y$#RpKu)h45V)6vk);eW7o5q9nMwJ|~Djw$_MoD2>QKZttr zD1Zz!{G^?7Bl%pQdxGZ*CWEEJjc|1IQmLukFws6XR_?YX@$biO^lXbs) zb3Kt8wfeD^ujP%~oP1`ehLyb-9Un`1x-%WEY~B+jrc`rqJEhGUu*^wQ5%xDoZ>aDU zUMhPpK)*ovw`XF_3)Z~7JCd{GY}KbOcFW5xw;n9SYH&~0^|{LZt*cc}Ab7^jy2hLV z_ZPuoO+&-gEJP9haa2L_UefED4`3LHLhXQiA8REOZlMPoR$6yBnG9J|je{H8kWR0x z7%9IL1jc`H`?^V%PVJ7ZrAP4hR;?-<-j5J4JtUAK6va})o<-s%YZ69a8>uU*K1K8J zsUF9NSvfkGnr0>Mjgi|4c_HLFIS^V&dt*LTzADnqA<28X17I5|ge+$?S8AYUbh&iV zL|;ENM47(FH}Gt?K*A>Ed(LXC?zcP(-ODz%9- zG@PqsDQxoaS(G!XMq-UQ19rLupOmSR_G;)7Gxv4|1xuVA2RLOyFT+g0>}Y)fEl$kz zCGty+)MO%m@$o_S7TFv}cKD5&KRS`v0gxhas3sgx1n`tHvOD0UzldkifnaVB7Q)DE zggG1;VyyX*?p`>T)xN9yC(uiUCaddWG&c6dmX4(F@a^;rQH*ZmqWths+%bknN8R(uzSriB@b|E;dANJDMYet6`0JFq#PS92{p9Q|*T8p| zNun->aHij2cC&aFKy$o5WzhHSWI{(F{xq;|?4{LJ!_W-sbf$b}x*_9Gxv7BxO&sM# zjl5byn*s1mf?kV;^-8g2zZ8lRL?6@bLFbs}$E6ruZe~}7?a1$ufL5xCAX6+=K1DrL z3mFa0v#Uz@OYJ|1-_&o0@6ylNUt5mzf|Q0hnq)WrwopI5&=gBCS+iADr~r5i7qX4B zrihy*Fh$*{kiEvewNRo*@Qxx)ow|cXY%24R3v+S1{RGv9 z#%TK=^Y%Y71zYLW0hd@^DPis^?)ze)pHIBfb^|EvYfY7l3{O_BukyIzB$t(X)9g({!S+r}thm#XCorL6abv*nbNatzj<#e3p=cZLgbCL?oQt)&L zaPcT5iSl3>j>95OTaaOBZm>&mrrpD^IA%yl)aW*xStT}GAyk2hT$v^}J1GY;piZRlygwE0UYKXv!uAg3k&3~W6F1Pm!R zg*GI4>keQHwXb1lFSRV z_b59N%w6rKmsWJf-94h*!zJfEfpa6p}(pI1Lh!jyzr znZ?X}%Y^h81M5TtIeQM5Q8RBP_VSX6R{@G7r>=6~`~&662M&MdVSdYmzhdW7?Ce6Sro!vO8nLOT~;e}I~Whl@MpQ9zL1Z6jP#lgyhmp{vP+kc6y8 z5LM{Db?0G?p{cx}k0t&t zhkiP}u!uKA-V<9Ugl9S^85lvZIHbKtwHSF7eXCocUdptU+mVX`UdZkM3bjunB%|LK z*AvYlMC;cugLA@d-8Yq$&hIkaJK5}u*~`E38Hc;894A*Q{9-~-0u4rU`=wa}A@j+^ zjbcma<))IQXs#hh5WSYg^M8sUCW}VK8woln*~}z|3L)3;)r?$JKYQ zjWTco|E!JAP2D-76a2b!d*>z9jUdma^N%kxUdy~;E^_y^v;OghNJDVySMP6`zwPl? z)^$0(saCE~$+Pg#!|mSk^o1dz%qj>O!K0y{UxQ2nr%p#EAY3(B;|El=UCNDy$a}O89;7E`AVAqsw&YvjoBS79oHNFsM(r`ZY_q?|k(# zUJq#dvsy%1J7?|mFeBjI*;@MbnIUDbb5wC4iNk}jZzhjr1f6fc_%Y6?@I)pFr$!T#l1F(>W)d+o*dWEINPUCm(f zgB*kjHkvjr!Kw#_i4i08D;ss!vLa9SC5O6VawKc>My5X@L-L^&r_B0 z*_g7XPv|lZ6ECzz<-w%7{GlLN@X{}Jo-VOo#;%A@HjljUDof1bx?pKDR`8Oj-i5GW zan`wF%U))sG-UhMg9T260>dhHCv)UJP@)H9PXPT>_(hLa?*xn_K$vLcH+N-=gJrB3zvke@`09pMePi#`*q~Li&{=2J4Qm}g z8yjr@aRBZPe5nATiJvl1zdRMDZU`1MeLVfR_|#m94WI@jV@~>tz)sdjXe6=6`MXtF zw!Z_mwUUkuyJcsJGL+JLyH>R%@FHQMEKdi+dFPEJ^Q6Kt2EHC6gng1Xf~|&P?0UT? zDDvRt=5nIHl%1Q4>{ew(8@kZ0VPAtu$i>O&?Y(go{0! zrVC#=RnAje#LB^q!`L6CFsLnyr!w5I@m%c*=+dR*>1zZHvxCcT_|5wl7l~9KpGeO0 z3N4oeo@7GGqRVXaRr7A`6MW{Yw&wUuQwVulcC?ij{TxXz6HAcB5?gg9)I4Epl(yJkkJq~+!tO65nI{)zCqp@XAa3T8?%L3t1C|SM^ zN2XKw-MvfZ>Y>U+Zj#r~Tw%VEA)VeU29)cVbkfIKT|b8wsk{k#~VZ1I0Ir6c#XcJlLm z1=`&``Xj#$g@XIn4t?$%B|n|pIQVkDG9BccJT$XMCZ~tU!i)}L2hff#rJ7D^_~F~m zoh(bl^ZrJ;-XHkg4@?`R`E>te_X8=M~<;dtuk{uF{ORo-@P|F3dTIETN3^i@z_Wmrl*4quCvmMf5Vsg zie>u#{SRtE_I{F^skT?4ZM#YDx$e)Qr1QwYDM~MRRg;x+lk7EEbn1M2H1YkRB&_f4 zLfq?Pg}_DKVmhJ!$lDZdOxO3+HvNNLH}fqMHa)}#xkr~fZrc;E97(dZ0lOp*Q84(J zzcI&p98|=`>;~F?hrzN`HQM3W%KC^q#fHE5F2CU&CI?2%_}?>hvS`1i)r?GtN$5vz zcQ`5KR8G?*A%7Pm$Y!sc(PBFH=hj~nRJD4;BC^8oFzl~4*>d}2h#$-U6>`Q<8vn7l z^}$SNgm1i$%C7<{HbslsEw0wBNDe?QIhBF?sl-vs+YJME_Uhcw9l zYJHHq-q5F@`^;g#@lB{2m}Ms77%1F`9~>xUQNxfY?T_bpeNLQK=W6n;qo%c0mPOB^H zJMD?xqYtsyX~58=zsde_=8kK*A~MD`r7X7(2T(VuA5jX9dm2mZYJ#XJHvFHE1c>N- z{H4mb8{rD@qVI!|OEW<$NMAu8!3IvoK zoBEcWDZ{mEasc&APNqr4u5S1I_uNShr7K5<}ukn?imz8En zd}CuVlg&^#2vZQ^gf{190 zwZ-<7Wf%p;67(gyw>34RYp)J5($jBjZZ?^{1o^yY+^^!mA$l4bSeodduZrCVTL8d( zi#m0=*kWurQnM_7;&R2QfpX$%dSR;`!HpX!kK?+ztXz7yf=g|9cQ1{Z4k5Ajey3iy zq91eFn{{m(9T|Zbj_-@`FpIe$g6SQ3vH!msL~1yyar8d=Md`HYpHC%t<~{OJ&pT** zpP#MWZkQP+-?O@!wqaqyGcolljYn3kEM z7?^%Ed0uhLr9Yhcz1H@m4o~6uBcrq|txR?Kp@>hI>g%lAUx{DGOsqiy1yV>w;J%}y zFWidIA|-n#H6*=xJge97&P&GW^5NVA2pAXKRp>BFH2KUb{m(g@;11eRKe z(L_okaOWC=f;V73f-30^4-Ze$nC^Gc6b5}GFOxgLOqo|*I zclVAGKJvTLS=RaL?xCIOt>^l^^ol&93Bg$fZWmMNcF12Z!MB6ph`+)CGKG^N(NQLq z>zdnnAMivv9(U=y%w98UNJ+EgqNpJ#xqz1YcUR&$2r%nJiLiT2 z+7#q*P1MYo+dmSMKB1HseZuXS&B80S+x5WU`tw5jVN#!;8BdFgF6<;8&Wjhyc8-G( z5?*jYi#IhucwwM-IX^EuyKV!!jAQNH^hp4I%0Q3hug2ch)deLlovDIZlO-E=pR<2b zc+z^z0)z~5r3hL$HpR*9^Ii#fZFU zTq02#fA6ox0V(-)^*zQ8e9!TQT(=EOWM>WFGI>$udX~&BhGdJG;3B0gR-liAku}72=U{UqJFvf}D25l#kN( z2sfr!TSo`z1V`XaqsjiXp6m>cDxAw!h-e|?xc=RY!4!7<^iMyox;zSGak-*Se-x+@ zaW=G6Jp592u{NZt9>70wejK$(+^HQaFO~uQAzM~_{2L!IyD}5cyD`F%iL_|Vc z_xC1rg64@VeV5XWfeeAmabs-_E{~jdMCQW((AoM}NfqZps(u-!(1TB}ltNfpk zQYRCl5X2>fVDcVIvW9~LXX7{UM1fT^0|U<-ysOca|LY!@w(DiD4)}YZZ#-gICohZP zti0`e|L0&cT>I}Y$qftoob4L7oP9PnIyw8*`flnEUQ5R5BKhZQ^pUCvk<5Zk!a$Rx zX{4TZ*+hggmZz>Y+)oN7QAw195hT~7!!_)4txN%UdlOL=v3E6IE#4;hD%r;&QpPA% zm=mA^5%I2ptbj);PzAdRCVS2B=EF)t&$kx9orBUAEQH61)4FA7UA$;!IzKts+sAb_ z4V14;e9`>B%8eDx@gq7ZP=>Plfk&y~Abzp&>rc{J0j)om$CHsnHZ$wl#!X^@yBXEP zm)jeQ@B6$rwS5)9i*Jvw)i2vG1rE&c75iMfgQyMdD4hAFmVE@Gz~rhCV6I_Z7`W<^ zV6sbONnn8k)T`cNDIXvhFpV%Il8ufrw9F=m!w#738s`KRA@zRnp&k1a1aw}{)`OU$ zsVPZGNnZ#|rcl%x%ZH_0@Lc-z$!PJFkZ)gr80k+IvEm=#2pDQ9?r;8CqL`|#u8#9o z?wetiWTeFZ+MRw2eUf304}{j!WOTe}!STu(fAd)h`Q~f}It@zzxqvV1Hv}(w74gBj zU-9hmD-}@XOLe(6z|DTvXHL#{i)mrvBu}q~AK3xbpqSc&im-KeLMZir&@Ii7c>PJ|j zhLM`)%?Vis(j96W>QXG{>y!nCt`rvxZ-Yc__ptS@;C+?LyQBi@xI{SE8ezRgHI(oh zTy;{A(f1cZgSUfoL`MZ|=*KT+NQ zW%aR?44TaP-p5{dgXCTP))Lu969{ep_M#%@c_u(gzi36#Pl&O59YFA@R1XQf_u{aT zJ~z5`(xo(E67-t;LAb6%5*hgS>G3=1-KXdZgY#p`!78q{FK>RHw=9yb-^j>{$S`E# z^@$pHx@mrAoqF{%Zncmx z$E|RTmUN@o^%pjmP+8gB%dTy#UUI z&;Q>PNvcetDVWBeTw>I>VfVHaUpY%P$iDgZ>n!#R!&`cSqxb#}b(2P=C^U;*m-cE& zv}85&0s#qRC+W!jNppY4g`WL48{#piB$Z4g?{sQ^sQsR`_AP2DsRyL#-yQi}$Z{V) z%Ca)O-BDJ69!IDOBk*0OYC7Ina-r}1o70YOP3)=j**TO}?kCFel=5bK zv*!l7nFReXYv6PBk>brc?PV#BvJlS!I9CqJA4o>PI~5+wzZ!eN&f|lNn44xe@8m#@ zK`z%fkJ@qb&sz`K+H_fhYVQrS`ET&}-Qw8kYwuV79TiX6 zbthtWX2FjuKZ{}XgM-Qot?AZsf?ooCL=AzlT{Z%&ekkr35y*2PjDYiZH(7L!chU{1%g{!;F9_D7f7NKQ77>skvXd$=P?(v-i0mlVE8kwNsUu zdDbPIi@%HC0U z`uX{JytRNEHsYhG~IyaHsP&B8Ku+Xv%<{hn3ZLXu78M z_V&cYL5LsGujhCh_DnwUaB~Zr#S((@N^fX$pKhM;Pl@vsj**hT5FW41&)r$2AT-(2 z!3f&8U4Bf$lyvPZ_>vVn@7|t$Uyc_Rxm=VFiX+y^BJq-G5M(LVp{ZSHht=lcw$#q~ zNi`!bD;p<34C*VvDZ)=4lJsatim)(uA=3Qm`>Yz4R0k6+^!O}R7+RSb3vnlD8rG5!X1chC zSndlTE`qp8=3;bzKYr-t1%wUIOF|;VogZi1+T+W^48y*_;9&@Gttez$Q`ys96d_+f z=@ASJQ3OLH(RM=lVj=MdY`lvbeW|LB)Z-N5@fIK2HelE74boTEd7UM_2@GVjT(YD-N54i)i@4;Z<8O z!)He;ORixUGQoGO&^(ZVeH5O6RMq4A> zlO{kTl=QQPpW^s%G$`gd)3hofA_zwY1lW6+Utm>{1e)z@8sELQg_dJQJ}7yTuw;>=*^L6 zGnKms4Ta~^zeopnPZ>xxl=_V|)cZB?uR;ZdSpy&WkI58IWrb31Ki-DtHEd|$^4J6AoxS(ffo zPh*mf5S|lW54=OL`w6ZEkW>lRm6_Ou*rd`i>dENRVg|8`Ss(Ci@o$-2TSBvSzl3ql zF!XtuPJx;aYzuI=+O}Zm`sOY**w~r|%U;Qt^2qPuJNSC#jA){_MA!Mu8;QI0jg5V} zl7&l7sVUQtgRtNpCcvs&G+0h!8yXOMTS%VTWC$rI*t&(?7$HBx$bAV%dFaKfSG|&j zSfjGLLy?#1Y6Lzo$=dSvKQgMk+Hnl}igFrHT~MRlPi96Nh>@E2sUtgJ<*IOzx*V+5 z3WxjS`vVX3x8!#EzjZ}_{ttINy?V31cJ1LkYo4|K_^ao0=Y$TXv6~!C3BK>+qIij8 zd!l#`@8AiTIT?u<<{!CIu6l!7Wk9&{`slpW&#G9daY-gHYyFy*rZZdd_W%dDhp?4<7K_@Zch7NGI?ILKH7V zB>M~ZYxwkssJ-eHYmD_FCfSjCO|MUHgv5F#PkhZRRwFv3lgnDRmV)2}isJI$Rpx&S zK>NmQ%%DoH+`Yn_Be^lQFUQmRXqdDkbp1eKERZjjEQVU&~-1{fNK?(Q7U2HyYqo%4+k+;i`H@3mK6 z>srme*y@~tNPUom>+79Q) zxmF6DUXuYY6@xuO+Q`BJlT@-%LYN`&@Y|D@`x(E0DOUU^{9AZj8AiJmFR8`b-qsP^ zkZ{5fx(w?C*@qmD#=FKa&x4y^d@~^N`%fSw@-v9wjU=i6p|%6a^}ZTP>sDvD%3~~E z>s}p9P;$>V^4dgL-zj}R|fR~aR)SOn`)gTjJjUaT^#&!gQLk{BQpPKd88&mi@}a%`7T|2R&4mU zl2IeDKt;acL}8r~SvYfmOc1ET0sF615`quJRV;;O{^3%5yg_AakzhK( zmYtUmCV8VbnB7m=@kk;mOsIl0X+cWu9mg-mF`RuuUiYD=Br@1M&s52U-K#*|JNNnH zEAipBn*T1ps|32VseH9=6U}Z07I8RCC@_NK@1jI0{FUQ9WVEK_o=02FclIA?=y z4%z2y0b?Lleb`OMR`Ss@HO1tjY(gvy)$5qnDx_4dB69p0EzOeJwyw^Rh%U`7F*iZE z#+SweZsY#+GdgB3TL3+g-oP|Lz&_Vm5*x6}W`lmDw z=2eV}=e*qdH&Z`tR!i@3!DrvR_%EI$yOc2#%1*0z|I9QK1Qz*c5V9R_{}qb1QxI5baZxR6*}a`Ml9R&s{{*> zKSj643hJsL3zQ)0hym)2|6S`YE-lbMSl@0F%XD-&IpGmy?VyThB>FW|g%NabS<+Aq zn-BjOHmY8(2i&I5JFjg1d&0tOMez0s06cD8b`}2jF4H>R@6&I!-a4$0#Q>uQ=#EHL zt;fnTKo?oAO#d@(Zb1Md(OOu_#3D?msrqA!M=apCRR0r8B;1j`iM`RW0vXg< z5Xj%74Ef-H>i_7$1fX3{>-X0PmV8F_;~_7gSqj#Bmj7(0YyRM$5T_Ld*&Kh&+ZxL> zTLInIg>SvRjxjmT}A=grM&OEF#bFX9a5KIgk z9tICN_x=|9q9NdtDnBU9-8*gQHU%{CK#eVvCFOa}ZUZ0GPkQ4G)ka zOQt+%1c5-X=7+#6xf`#Q^QHyFZ66f7d9AZwEs_~gERsnudrB1iZos`}r_8|EiSLko zlLQD-zt4^$kv<^rFdP^Nf>}yHJw}Ni_*HQ;c7T`r@zFKZV*n2}CYS|ADp zNr;Mk&4SVcI$kJBWt}TD=eRP-gPAz2>3QHc53%<80~!K~I@H4dflDoDVy$9)$31$1 zN#f!u=Jq46`8iNDcUC^~FC%F4;K5}rm+gJ%!THP=eEN=;CBY3g@Qr1Y{jo!jxaqJ@?;V#?Jku z3nl@j2Lu8z*@Kr^+3*z5$MP^3hXm=q!7?0JOil7>dQx=v+j7P&HnaAdqeaygXkzJK zId~R(17!YB^N{yr1IABaj?bQla8MloM{?;cy3Q9%lINFsB|SaHO~=lB@Z{Zo+dGh) zP3|+fp>(c7-wE)PUNbW?-vcB>IP+0MH^3+FgrLQ+lr-oenJtt;WP(n|S<_-OHEyHY zrod-}dGD9G?`I2Ulursp8ZNZEaTgKvD=u~9WVEln>gO;OjsF?*r`}=iCxKv^=Tpsp zani!$aDM*tB|AUg98hZkcx;6}Od8bXzCLMVS@0Bp^CUiSpW(8L3wQ@#ifd|!3qb<- zNq)zYJ@8^PS=2z|0+qfr4@)V=67jmGda%HT-NM%V%cwYAwwwB2=)5^xwW~gI1rKhJ(>Q zJZv4Bm}|Bb`s=uZg#rd4OP9+egi{i)dQ#7--Iq&;tqEuv>M#$uI5!QOxbh&_SHMec zx=GNSKxkfqx#un3&nsqx8i~?+rGQ*^SUErp(xArr%Cd|ah*of7r4Ty zceSPFfSkp(4-;uAPyrJ&S z2nA+>rdd$j0W-rHr@Q(f0TlF?aL|vNc|nE8)+_go5pzh!)VsG7S(!1YIWb?%6D#71 zrrAU$PnkHffP3gstYMo0K3Ed?QU*Fk)c2ki1cP~&P#ja}$ zoPXu0I&CjYlJ;CT3q!E6WWwY??LtB#jFt}c`ci3mCM0u`_G#i( zQd}%L=7$qWgaICd*oVpIetDFQAB227895jVh$J^KYxT_Z6HRb%h1u_l@uyUF{6fOS zz5PZh`EVsK`Iy$xWxYhfbTi)p;UxD4(V`&n4@A}Hy5uR~{}1E;w@TtrVn7znbG8@$ zmduXWwsSt;oN0qSR^;QJrQ{KKgmI^VXqwJ=lj~PA~M@$h`% z1*e_)bE5sj`c?);t|h_Vb67+3Hw6fNCOz7%tz^knQG4RA9NJbj`{M^Xj~tG#nrRgE z$Cx6MKy+i?R6*Y7loe(~lGJjFpndR#cZ?`={5ypA=Gj-K&r`SUP#+V^UTMSCNNxDs|^ zQHJT8mwh)1eir_XCCBFWUEFu?GOKXo!IKG$kV$fIF3^cW%V;yO{roVQH%@c@i?qoS zSH|#~mHhD6CHaeO%rry>r7jJXyZxPM%mg)x(_t%P8_sp5cb5Rek(^^aBVf1&2p*#* zhA97PNQMO}FOLm63fv_j#&B$AS;-(T>C!yl5g@ z9D@<{g>4H@#zKHtDLlOsEAF{xkuydyyaEfjowQw47(C72JN9Fi=g|#b1NkswwIWWb zsBRu^ib6jOSPi^G0R(5gu!NhvOGqda%**rD(!;qAG*o4;DRw;Vwx}kYwKwv&j4sciK?;InR(7I@{q*N9;g*Kgi=|H;(J(-4@4vq7VvhTR0=nM>HlYf`%TlJ~qig_(QiD!8m7i3QtD7v-hmIDjRHwELH9I03VJKuXm{GhB^0>t zKJ9_Ddw$>^iId|9?GH`nu~u-IC+V7^^uy?SN2 zxPet8uPE;V4tg;08p3rWPWUJN+LOLq?8lPSPrGO>N&Qky-QIxS?YrEY?w&LAg6jI} z5AA0xdfDm=wl?`1maNTbm}o~+vi3+LvY|erjRV^4NY1=+;3dg)+@gF=BmgZ$Vz=B6 zffTMNv6r*~dcnnTUA<*@oX(Ms)`YiNQzq0+qz7y;APTx=(rP_6y-rKu9Dr| zWNiw!GKE29f~_gX`II?^+>Hn3c}QL51r8!mq@TMLjn&kzhW7TJ;A;e|iA(Dab%QOC z_v@u?1rqrMa4GFE)Ks;V*JqlT%~)ShxzFDPg~E^8_odxcCswPZ$e_|=H9zaCf-D9~#s3v*Sn;>;mpDOS(VV`mNeActIcAo0ce( zs%|WUujZb@hCpjW-wSu9%9MI|_f*pd?zm^XZ8={<40d)lF4;EqTE%uyEnj{xUn2W{DsV0_ftSx@dCy>LkaloIyDNkSl_)XlD%!JvHD1 z&^s#k&AtxIuJZEwsWKFea9*>r;)3ORZGWDPNoDu=_;7?P$xshjHL;&w&7=i0&|+?Y z9wm>V8#KZLm<7NXTn6i3g7F>}pTghvHUNBA!%nlu?5{7NE57+?L|ZD1A|)xwa14;Q z(7%73C>I*~AZPDY>FbwTMVT5awpR81HHOcVWws~-zUoG5!+B#oQgt;y0RhTHi$Aon zF*Cz>WdjJML5euzgS4uugBToSHevzMEl6Ho#Hj0mO88Ab2$*Jx_03n)7u*QDJPUDq z-bhOFKOT{WF^S9=#%fZ94O50EiL~2(o_hSk31fm$zZ?tuj>Qv3cWOw%kV>1huWO{Y)mS5Qy@(?G#zNk@wOXHx@UuL2I37|7i zlo$w<@}v7qDz*AHV7O>k-Z18#I-Sr?Kqa>N2=_@|B=y^Slfx=+;&GXs6$?&yxTBqc z9`)P%a6W5h)ypzY_{nhKU>Ez;ay+|+W zc6Brg*q}okcoz0fYhYJfAK6c#rCxn&+zKT88b$<_8q6KN-)@0Ed{g6qgklvprq?14 zDX4Y24P#PCxd_u{&MO{qYF_pkJZk8#YBY(}u;Pkn@o6SNWp(k(42Z0_T-sVPXH zX9?h~io8Nuy^S@di2Q5EOqTPV5zQ>$L(j8gpQ&T)ZgL)zK*^kfiHMBNYdapVKHI_= zDDu%nbNTunf4Zs8E|}qQ%L(&EW`{^5;c#&6Q2(-Be|D6^p4^*iagn*gc2=Y}@& zrf+HPDeHGDUeF2Jiw!P+SZyV7uK)G^Bxx?}%8zH>$EvJ>w#T;0Ys+V9S5&+0!v3R$ zK=K(IvB`C-<9nQT;;X-+I;!xQS&lg2^D@6LS3wF5V*da%@2A0rZwhq6nz25Y3zR_O zd;pIO`*v?a&r>2xUNXnLrG2kWTm5Z?>SK$RQ2U(;V`JbLP@OxR z&V)@*V{z%bujPPAV1Fu-W$6HM+g^Ef^>OZr!41tt@(Xw4ygUa#^`YiV*PK}5uXu$` z2;JwOV-snKRGCu+`J;r`7$fP5_8asHuy!|}Q)N#6-ngagdun9A-mbrib=7qZDQP^_ z=Y>d-Rr8>}`!u5{n+A`xf%s%U@-O-7eSP)iEpLtrE=o+how9krq?~;nbk>oCi2-v3 zCyx&_T4;R>-TzYsXJod0d*F5d%iytU z!ZD*-W9OKZz4x^0(jSRKTak156_DU-=2};P77%a~{~MfG*0SW9-(p&02LqOel?%v_uA5w!TdyteIGG$5uzNyhEeD*1ZGI_NX^EIZ~alTGcI0Q}tHcPyV{~ zV``YV@q>>}(6STkN?+@EHjBSax7J*G=dd>~Lx)9gibucCuZS<8dmP8;$=cv8_X50$ z?#|OeAKQ>6vk*(yuYQ>bswN= zT<*ds8;AfkQxtX1+>A`kXO?v2{mS3kO%+ws8ubB6`7K>*ZE!21A#&D>;3bi;p<4s^ zzgC1AV-q^ujh(^|^z_pPFgc$ovA10nCF_05^X)@|v92zt|MZ|c{CXMS7*_6%p*p*> zQ%RkT*z>I1{w0kxYuCiO*xTWpImGlp;fO zUZS=n)iFJe+vXt@gXcutUqk8@fvblxr?@6S-huJiJ6QBHFkAODAp8|INMGBbE z67dD2gepz}S@Tm{XzM&Xg!#M9-hVSFGt41t=gAT!gPA$8E*sCbcu2EMYRikl$JQmzT1@kNH&Ib4Vc5>yj4E$ z2Nr?{8NKUT%Y`gnxMOCIKEr32Jd_3C%8%eNo*d=6`~@!e2Xa4OH3eQN*Xp_0ZGdU1YtI zt>L#~d)P$y|9j?xs_OIRf}_-~i>lxDbBSiqASI9SAXOgiKD?76nClx`x{pp4;8oW> zOg90P8T@X$<&3BlbFK|uhzMy>>68!i)jT+3-eR3EpXuK-d15KY?!}<(^{(5T_9JYN}0?=eWb4t{#Q7A-A6NpBJ;rjj1iH zfc&0B@Lh|9jmjURs^2{&a7dTZmR1b=OO516CrM3H^(FVpwkDZ8OnN%}oz9_nz2!34 zv%~!xKXCpo@Fi_W_Xkwt_CFJT|L59#v!vA$9rfy7bKPXq#FHnT$R-j@w8Q)Ela^O( z#Rc3TM*qL<41*Kou#f51US`Y>h98z_uw=fdLRYu?IsGZNmTxWF``gS#{^Q&@!K3@` z_u>#YcRTpo?ZpwHBYoQAMclYo{vlyRotowW+|;Rv!P=HZ*Ce)%WPyt91mz-qK|jZ)xYW>}mLD z8AIkibyF)YcVBv!T@3rvl|A7zBQleMWp+g<4l^qc8q|H=W$@2G2A^dl#8mcYyP?5$ zfVS0w7=3wWGd0AGg+k6V_b<$Y@J39h@7jzGBaDzSi(P(dJbXHgsl`=`Xc;Yv71c$R z6Ux@Hwdmz_Q*&LXcI6<;z*w_z5F--ig$sr;;KJ!|L(vGCzHF>%)5Yzf0>}mnVgER- zB92ZlI{uftN-*EHp1Ua?$y=*3jLd2_XG6P+`kpb z!6mwP`@~_BN)e8MpP}#T=`=PojaA$0Lyr1Ep6U0d6(Hu>Y}5|t{^S*SfptWyrpOKA zTDaGpHTBK?v&OW7pBH8@nhuk_EE~+k5KjS3;bV&H3_MuVEIH|^WC5r~K9#b-rN~2_ z5FdxhrV)_sPYbyfmai?n(Vl17JVI)_m`!4P6_NvKF2p)VD$`VC14)VUUhG60$1+56 zV=BvT(EK0%2Vm8FH>=L1PoX0oBvzmc-H~b}Esp*>q8;V?tjujBw$zGkgBxqQSX`c8 zg#Bdsg9>QsCh9prH1mXbJ3I#m&3CK86zW?JT~WO+KiPk94p#STar0-yY$>Q%611$= zYV+`#nI6-yM}Djl{a9|%qD(l$R*iOZ|5xwb0ubCY&Fx=0pp5oU?}-uQG8R#e@aI10 zGIX-~IZ<2U+@QH?W30SC_hprhepyB4XQih8&qF5_k3M4nLKVFg6k#|fKJ_>kIy3?9 zJ2a@vntVdQUP(Q$FMDJXhcJ(>gCq{{y*}w_9*`bb9{6fn;HkgOz(;(u>$m3maB*uRUO1=-WLf%9=^F(j1&)+CSY=YYrL`f%L<%I3@=)BGd8nnt;(P&z! zc%dO_?uF|EBwmouaWPx0r;xA<|Z|V4N19C(wkLALD)8>Yn0EH~~c{BT$9w^uI z-3DJBX@22p)j`By05b+p$^I51N$cNYle&h;{%)yrD%;0jv3Sc{490bdT??SYH@kp+ z>$<}6rBX@c$S0F1H(yB~cNP4CKRlros|p%iPGo6F)aL{u7%|u8;TK^kmZXYbt?Jr5 zMG}2lxDM@UG&TgaqWj+vjC68SAzy^Y4qQQ&m0>_NbU}DUshGqDeAyD=^u> z>PzDao+gw-lpMbEnZYN)o*?txwbGsKVLCNJ1HGTO4U>ltB24L&cVG$pKC-wh_^9(C zo>aw?04j_psRb!KNu-`nz&7ALF+KSqaZ>1}h$E1E+^>Fac`5BFAyM_k-}BW1X(c|# zb<1&m_Aazh42?)q)LC1y6=9)OtUAei=iM$$u%$t_Te_D=x3K1CoAdNi=R@>!kE1uL z2kiyJ<`7weuLxuEG}{S6$A^8HF7nD%OzPC48&5)FH~0+Pn(21krO?uf-bhqc-EInn zgO*6r+3v^rCdyav58d-kD)l9K@K_Ab*Ywgk&esP|`fW>n{xZ9(XJ+(zP{XgZ?#_&WLmG`I$$Fm7~DprosZv3s^DusG=Svw^$ zP1P;xY&Z3Ai6+GNOy*!FEkR>vdw@F+^qf1!-O|*CWf{FZeKzTRQYjm?aJGa~RWE!? z|HQnf`@9*Do>o)GJaE|_+h2;|oWL~24@@QOC(_oTYH*vNeVXTs{>IO;y*4?3w10G~ z^cLRAwGB$0w0ZBQIjH~rlX;ZrapqyHpZHX*?)?dN9V^X)@?P9igN?#8%PZfy7Ttlb z`S7-We=788-=B|kSufPrAzIz1{{WZ6AM5r94aJ6{SFP-K6f%8|Z7Yc788VHB$1nB9 ziA&K0CzwuhyG3eM8j;HmM}qp6*ZWP$H3qpzial3SC9d24kD)qHi2pnt&n#p z7F7T9hh9P6>tyio19X}-s9*I$PoKz9!*vEkes6DUZmaNI!hH}v)WNR89DEKs_ctZv z?TsIKu4gVy!dyBmg^yTnHy!lOxsKIl9Hq4RNJAw&ZShnTJ9P&U4L)7_1nvo z8T1V1596M8SCo1hpKYjhS(LctalaIbabMW)RZv=+zv3;{*H=SLV5Zi{NF0XWdfx8b z`30QB@@Zp~SI01!?W;gK;>hDj{NF1+8V8ec!j=|ZbKisXf4s&%G$)EfoY^m6AvZ6f zN~ZaB+bKOX`yTT0C{?6YZSOKvTHl8CsyIfKmC1z$s7$3xG&!K|Ru#GOr=U#blsz8#YZeRKDhe3g)h-+LD5tN=O8&V=q4!0N`V~2B+Em3pk6ShAIRw@IWzI*GD7Byr z-73}=8gnf=I*PcsmDScev;H#I+=91Q!o*?P6zEAdhvl-^o*?Hu5(WicTLG=3Z+z5! zm5=%s2-Nu&tGT^C=kH#@LgaEEluziQT+~n_NbRc=;DuEd2X9hXwum`tio0HC9!C2D!?I3HEGY{KX-s{7&HL3MhyekPg{a<)RgIqHsY&3~{ zscASq-ZYNp?6fkz{nlF+j$Srd#+t?_f>+41mXbIOxKjfE1;x$fmj?)Or3(8{IW11> zASGFn;KVYKi~AbyyRDyCA3y2;xse)tn)vsL(Q$H+-gEgS<397a^=|V15@(@G0dj@r zldEl*Hy1BIeSk>PN!>*8^;RMb*5qw!N9rPpuT(zu`zp)F(Z)a@stOH)I&X-s7N9ye zESq?PHNOKXC%=u>uzl%>hb3em$t}D8%?WLcYjRZz{Qg5SbNbU>oED=+vM#CBq)42# zmSBt%U?$%bBqxvWWhnSq6PTknSzxlV!Yjk`1#)qLIxl^Pee%;+lE5!?u%8EZiY!7k z=q?q8Olf3DMYV%-~m0AK8 zaYspxf_J#czPxv>{s%&492PbBLS=01WMZ5k@6O?)mt-DFRCIbM;r4;7Wj$lv)W(=Pp_YACQaQ` zBy3o1$V?k5IaMpDU1Pv&SofL5ZTC{A-;6F!omS@XbxzQK#f9Ss^AC~x^_xbgv!v>% zd35EKP98Ybd*jeZa-JlgybZo;J|R=W9g#5eAfiOsroEYgYlNsr`M5cL`;yJYwW0Bm zZE1 za=37$aIy%T9L61;2>HWcSQ#J^2BkAY*7jbsxcev@+pxl2igx^cMov2R3}|f%D^*3K zPnh)e_cjnGpBb>DlR1SGFXz6@U0+Mr!hV|*x5wzM>=YNEj$%~RW_*F0iF*q_sB%>? zYOEFFjTfort2?1Ti}1d8{WmBRCENHW0ovSGVUyQ5*Us-Vv=q@B0om*E%h!01?fOUc zX@klCh2@BIkPc{R;bU zo7_91m?JwaUlrqMtLG<)rs<-F-wZk|+HW2r+5oS=Mvn<@lMN()bVP5*-P@}x*SVop zfH(+SpTzs3ubJ_$6R^t=LS(_73hBlSxf~oXV>7|e5XsN8cfiS^ zWa6NmZEc+DQ&GQ+wIxm3t=W~IIA7-83)m;aZs8=E9ywiTv;s*YXWsLs$Sytp zLgZ)33XMkZ{Ax|@a%kD!k{xni`Tp60`g|4_KQOdQF*NY40ql7m6#-t>lPwKGvw{zm zbqQf3GgZd*cJfpy15eG8ykMDAh;p z@p(5J-H)o3J*>F~3FCVSLsF%vK7~B_w78gLy$_f6lv_&R&gCD^&=5SCuj=-9IE z;8$58q>Ih*1-jIAefaZy7piWR$>LI;n5$LDz;xdxn?V$t9qu8d}*gDc*4bNj-BN=LwW0gvwbrWa9 zn8*=UAHx`BmCChEtJflqZmV1RIvx%__RjUL9I0|u56Dmg3Vor8ETt?L2q>W?Fq3v3 zE(*#}D{xm5T~}tuYW!P>wROf+@~6*ra&{=4RfUl{=MvN2l4=fXp4_QP6rl6u(`6rO zAj8$>;en)F74hcZj~>3abVc))Fzh}uWtM^`E3tsAUca{9Duto zj7@*^`OI$2!pzo134qKC1!=OJi!~M~T_p1MmmK9VB?+@O0InargaM<~mbGR|l-2xd zpboFG&JX%=-@k*r`mH73Q%adHx+@}&=X1A1=oSaRjVJVWRSqGA`JnyuZU3q@FpLNm zA|4o%FueE2@pHL^Y)*#YD z#OrQbS|53NS2`F+)p6p&v+j(Mv$?%kh$L_h+P%+L#vyqRByq`0#AW0fEl2A*)RE8G zNK;2B-ApS3fZXR#oExVpJJnW?}zveiz+K^i;C8wDYy1GLEpC>40i; zZuSv$gl*I6OepsV?c{M69bQ*z!?W|bu04H?r8WDjvGh^K;)4e7n#%PfLc+iFv%gn6 zj9u3}X`)FsQ?6#aha0lMTwfl4Ng~AjAATWC1<6Kt&Fn&2Xl79r0@^%X*W9P3|7F)^ z_|5-o#hxVQ=FXpep}6|Xv~#T!*dIt#xXCJ0W3{<)8B-HUPAqlgz+pinksyS=9;%SkqDGK8*x{>O z7n6fS-F7PQ21Bo2$34$?Hp`q1Z+q`=?UHg$SyD8kvcwfElDn(B6ywN98JOEy@-0j+ z)!l=^9y0EL2+oKWz`?$Jjq=;t|ozZpflpY4R0ZWt3zg5ywv`t6)R!1Gv||=IoME7 z`O1l*?ftc7aw$gGXLdcx{+~oLhxN=XJb!gJAbMjTv{X%`I)d}^{PX0=YR~yZQ-mBO z6$!-N%LO>bx{l7CnW~zXtrdHMoxWTC7$ z@+a6fherC1iXs_Ybz;9`c7iU4v`Hm3{W%7c#)OQu1&{jcb17xhbHXcq%?5^;v8%qB zb<;xL=K9M*UDc%Ry|tBtVc$gA#kb{COH2{^$%$jsMDG}n7F;u5oE9k+_Mj{b*KA9Q z^wj3L)m@9sDiZq_4ZA$e7~$Ze=b4&Z%U0+Q9WuRO32IMpsXv%0kk$1tG7bjmcDo$Q zA$ut)zeR7Q?YD0w6z&qGVeqs_KH_d&k(4(bf({yT^gLaW)vnad9S}sraYHIa7kYTk z)KiGuK(klQHI}wtF_cxVkB&3rcRs#{J8HcXKhK@;>XrM`E~RCLwOs^k@N{Y=4yH$G z##Liy%dH8?!zy?DBoNJynj7v1Go9}nRJDDVjC|qBqEy^kT{v;=qNZy7^H|ushDhvJ z57B(Sr>g*bl&iAF!<{WMwcwS8ks`}+NPCE05ntwA&D!Ev^YJ(M@2j?W<%Js2stSt6=kf92I*i9bRTOjDnty;a;GDiQ>UwzCb2e;!|hOmd$Xi2Hd;Ro-nMg;P#r4lYknHXz^(XGNppU@CO!x3rG zI0-xxzU zzJe-3Rw=M|xg=Qz7!wCneCpl<4nsTtO@!%{_S18h5JA#nwXU7&kq28z0-kJE44P^? z)$c9nNE0yh1zeA8n*~p2>csWxyvc0kWF|LynlHsCOQT;yz;}?#F)T(K6@>p`nycG9 z3(gQ$7w^mo``7bAY9O(j z9gaFXEBBILOh}ZsQD~@7oFl5)w)Bn*jZb!sgjC^_{S^IwFkBb#yB1bVo`!a^PC)aO zlB{^{r@ke)?+mGHtshzNY-;jU*G{w9&&(!k|Pm zwy~5Tru1k&n#tIlQC{>k%p%>T)t@z|(;e#)61SlFFi};6k)*Q9y`2sS)1uXQtpLX} z!N!`;i*X}sVq(gwV%=Ig9G2!a9!KcEDWjGj!qyp$D1-7ts6QQhO?rn@>Z0h zh|zt{nwWf!Y^)sRae`gy4js?en+K2A;{;%ubH!ZM9#V&n{$_CzLqP&@e{}2d&e8=P z8IwpcG$JXuT3*ibqu~ZVy;lnA)EO_!JT%J?I~A*II~*UUj3h;U!I$ZzhzxL*n^L*e zy;v;o^;GiRJhuFO?l`&MdpNRHH#Zo+-Nox)xIFxRYHT+n{Hsu0^unH%J8MKruonHf#rX+TmK=Mrbu5`m z>u6(dlTh8uvR`F0k!54|RL2_nw~xHJF9nsD?k4Ch*F|5E@n!F=Xv03SXrcgL?sJzn zJ8qNMvpC(zmyzScl`w{Z%$aPWBQ@tXxZ_yCLl`9`r7ZY&0SSo&=DklIxw zqlk5~LZ~vM*i&je5qf;AB|-;;lj~ME{nFPvhg24Rkz}gx<#e(;iLo;^Qx~t{Gla95 zp-D3RIoCp~J5^#=W|1#+GyHq>sL@cdB;BC6(MtZs?8|9duJiBYS|eFBO#4GjO2nhI z@;s)c{3=%}Z!{}b$Wi?IZ(TlboXrl^eN;BBbW!%Vbqc0`Hn3x2{vk$(ku>3l4*$Tx zD3W}_Lo+slT{kjkM6ADeMP95S8eCE%%Yc7)I z?^)5r(IK6M?|qIzi$|}Ec_OPiEGEZw&JXuLTL0Q}eIRs+vAE>OO9@$`jtbmP4HRxt z-tpgm8}t(?sXTaSxtm-t$rd|mqBU`_F;U_~W}0tAlgR zJJ+8VXTN#Um5Nd+Jf66ke6Q`3b+9ox>4UI2NX)T)kH7Cmn-HPwMoVp03E!;S-tGEb z7o0!E6ZQ<|Z9?~AdYtFCVMOCo$S)I3It}M&w^VJ#=8C^Nt~&AqD#PL>;k}E7dsBzf zi;n$csb5yh;|2WU!*b4bxd|KI9z19Z0+)l++E9C%%eZhvW1~lM%@7F&&3WD!n&Ri;dB8uZJRXhY?4CQRMkOfcaI;vJyg(rlG{jid^;BQ~#GVHByJd5Z(!@ z{)GKs-ZgIY%KHzif;tW>j0a;!mQ5jQ&YDdBo~r{02pEJ4 zYRcP@MXR02@C}?@B~2%)ZX!;qX(Iiv9HvOml&DF~_w=1ep;8Brm>lX*)qaVGir z1UVclHTb8f-4a+?iE72<;mLfJ+2~3VWUGTp5&B9~Tg14hLuaTdwNPqPSSsgFcDWPW zf>2j4nC+vb*0Q%noW}-Mbv@B<`=|pJ9@@CBzIJKjLy5hgqW4STX=BV+*@AMUDKeA|>>iE)6&{`^M6{5a@Gx62kFJ(EvfrE~ zDw{}BXUAbnL#?_Rnmv34f0Y#`aJ8!|k}pb~fs^t>ca40;g~ieJ-E&6iWpXv<0z`&@ zE|E`y)=>18&hpH})bS4&%_Q2-Lz|#r;&NLww;|q_Z%(I#a_K4K3QxQoeIjf0F4rOO zhqoJ`>J(Vy7A_cBS9|wSp@t(Yx-74>7T$L9PGI|vvQAmIM1%whETjt4gDS**EcR%-nMM+6bI9&JBFkntqP~hcO!)^A&Fg# z<+3mHEn2zq4T((^LfhF2_OrFSi9u9XmhY>KGo=vfSBh@4KS8!5lv~1*7c2R z_zl}cgB*p&ZQ?9VQn704$dMTG%1=2Vb?y)Wm%Wyti;eCRmyFD&=WgT87Hm|H9-G+E z0TDpGy_DR5o~D5d%WLC33J{a_m<(HKL1-}z{l>96ad-FcPX~CKJW|9Xf7-QBqc;3n z-P&37ir;kf;i9m^ns_2(PreZ^iJY8cSYyq}L_c<0rNpMIAMT5?Rg6~+G7s+9MhiQC*O z$3+b7k+h%L845FH79E(#a=22H7W_s^>{Zl z6d~lBrn!C2pYZ>5ch+B7JyF|N6s4rQ8>B;Sy1To(yStU{ZjhE1q@=s08>Bm>TY+cz zzJJ8Kp64uoU@dOpaAwb(YhQb2f8;{9>m>aezEujvy7iZr&Dd!>a9A_%o10lRRrnn< zWX79QIkjOqtIO>*kN;9O&ZywGk)?`wkX6$mocvR-I>*^O$31`Q;AZW!D*A+<`KIf9K_XU10^?1#DDrXw+xl5UPgsovQqG^ZA@#0Yq%gsvI+ zhX>e`a*}&}$2wL%7FTEMBh`7wO<@*#2(S|FYO^87r$4-WjWlK3zx6e@w{6^KnBvi! z^8E)|^?xzH<*7y4?32^!OU{#6K7DQD%Fjtz~CkD8?+oj)ix{r&A1>e9tK zclAVX&o(?}dldP>Pa8SkgepDE%*2KZ;grdmR;BM(;Rih~W=hm1PPYw_ze66+zE0D7 z`TPul%>Vvg`GNbGo|b8v?sZ1Ruf^7^v7yC^gz??2MAqW54;{`nH&X{TMoMVWZ<6*4 zq-*YMPqfSrl%GOUGxfDJpChPMP2#+vZE529=kYi_>AgtO30zl4@(bn;(aCNdV9MNV! zYE?A)j9CVbKWecJ9@n}BjWzW~-aR#cPBOG!4jAzo{P%c}x9rmUt=%do__I&Mn*SzE zvqW3$IZD+Ff>gJ>c4&HWy^OA28|!bE-GgPiC+~`7Q&dJ2hS+;2_3^z*y}?`kl!Dp^ z*7>UG)1ys?aJh!<8?Evq0s`x=wCr45^P03)SJrJa0r|x9rWaCtRhSoLS;HZFq^Y51 za{7@jx0L-1drCcJaSVj*Jw%z*&E(|+hc~}{2!RrASg1#wo0@#m`5{itp#%9m zb*H8~9WyH$u4#UpCYHp59E^eP?DRsaCZ-ilHoU2yD~E2{Z+5J7-%RP=|Lp%s@MQHU zqYm_o*2~k0ZGxK8m5X&tZ{@<7lOH}NlypTZE-oPArk^GaA9R(=d^&O0#w(9ISq8~) zYw82$-z7tng?pa*;oG%AEbzRHjx*slGx5U;U z>YyqymVEMSmM!z}m-}eH6(d5Qcm9EO1kX-f&Aj~Zr~LytG@XF`pVAa+(vfs_HB0*Y z)N4OT_pkZ5kVF-(Yt>c3COi*}xIgH!{dHMVyF!yA$5+e8oieSANqFHBiHheeUu!>n5io#=MoezQ`+EPxS9%Zi|Hml z7G9O^ED(-#{G5>>D(7(KZ%jp!;hX2po|vk2<&bhSEVdTX1(Qi7tNMz%xp{bP71u|V zb`xSoB<G6?@4_s=W4&I-fl`&`^PqVP8cH~Gwlx5sC zDR60`^oDQs$FB7Tk#rP|P!y*=Nh;6Iuvb2$MWslILrs^I z9WfJPU2IAh@{)=#{^TeZry`rABB?_07FDn|%wt}jdshDetw|KN-V<&t1dv)Q`^xIc zgEBOw4Z4kyJn23E$}%t}MHHKIkxyDC>mWwTCuFEtwhdQ*uQyTl*8Fz*WrY^?nPqFu z%*T{nPDkFcrfdj~@@kslI+c=mcBdxTL@mag#W~%B`YVF@l{)!XSgOmsAY4hw>LjwJ zGwc;1(s#M>$=4+YF^|2#w-Vz`CQzp$AIy=1)HB~x}x zSTsB3qC))f==G|=-u_4*QgEi7y3e9`$Am3MeVX$zza_8qc-_RzfF&~ALP-s)klXt_ zpS$&+owRUrLG5IqMMLYV>TU!5uJ7}8fw(7qth(CpUXqCpA<@W9_W0G;VMN`b0W(v< zcu_%2QBBlOEk#XrQR11GaL#rlyS071H)*;NQdTOoBIt%{^^_{*Mj{-o@R+g!Ji-yI zdikP1xmoSR=gh~GHQ--Mo`;vsmwDPGs8@STBaUYc<6JK)*+qKQzKzr|S7pnjTmV_2 zV@t)i422xD-vl?6R^z{KYIa=ps{Sw_+TfPT(6?_PwZGdUaE=&Q=F5Okjabsrq=-cH zG(@E4ljLJjsW_A7$dYfdmd?nq@MiuBRt~n1`YLT*9hEjH%^vG;8MiaSL8U?dsH0mh zT64e%ujdxJd$A)8r6oEssi9fZT4v@dx&qh0ZBYrfZ^jZ+wt-y{?4UI>IM}N|U07B& zeXtA&i=dsB4g*#XA<7C>n4;&S9*$LIE>UA!gN|$IGH~x)SxE*VmHBzz8Bxd3!*B-QL z4=0sacBGuap`>CvNwGpK)e_7^r6p=jMiS}!V&$6Yc4jey=9K4D_+9~ z$j7(V^nGpMu0<68Z7c1`$Hi5AV0}o7MJ4cD@(dpu6sSWL=5gSuh#JW_l&VfUZS|c7 zvSj;pc6GFT7!S`^Opdm)a_`et$F4u$Ll|sZTKe>r<)f~CnLb?cK6|-J%>#-Wv?PzV z0(j>Ju4g7Hb87mJ50_RX^m^+_;t^e&#~h72N?^@Ik@_5$w^HzS9K456kPRO&K9by^ z*8CvfFinozserWXI}PhK9A8>d=#|cxm!EN$L#;Lo@)$<=6Ep*BY;>~ohW{!pIq3+@vEz^*bD>8&| zC{ECUcY}6?M=3^_1Q0sq#+4E0~TJ6bi#~Z2=eA=I5^*s)30j0e5U04rWvKC$4zFk z-13T+=d`vg`pbW>Dpdoh8l0~9-!ab#~=(rg2 z;frT1ypW=)GKCk)OS|2li_n*2{*HqNUyyO$%(wTTw1u4YG!+Y4BW7APlp~U}w=Px6 z?+eN~bBb0iDQ#A#cpaPaxz`UUGmy;vT}c?HxL;2BEbeqUfscZ6kal&V!I1j*#J!`u z>~Oy0$(3y05Mj+@E4r(z%ii}$8v_G_=gZ~Bm#TOC>kod8=L0%9pZGGQqvbE9M>+d@ zuQ_+cA9ZtzX~(qBs_*uUiK0C(l|_kU>C)^WooP=C|AJ5Z-|?$Dx+^_b-52l2P}+rR zdUS<5hTu`!@jbIH`4=1oa`Knta3#z?JNu4_Z<)xU<2m+>+=t*qbXodAwX7Nxeso5B zV(lpL7!;qhSJodf?&E(r|9W)#@b<|-iJ9uEN9ZAsIf#6#fKQm8sqiqmFK3e*HJzH+ zwQt(#Q+iC1(xeJk_Sm45UJ{&#q>>;qGl_Hp9VXRVNq(+fCu+OYLpRLhn+lU5OCzyK zmWVjjV4HJ-X-ip+5o6ihy~O+5&4uN=_S`5=4>8HRI?FbP^TZ7=-Udk`0pt9}-DtGj zhHkn`9J}9xv060-4+V&Nv9|E#4HlT0HVsy4k!H1JYUO^H@|oFlQJs`W8{gA*jv>A= zE0i1r2?HBvT=;&Wvq*8SlA#*>@7x+CX6FMH>pH z$6_w~^g&;J&B<)a^K<@=x4Ta?s>zO?_G}@yECne>|Djxofs~ByUUiN3BjT2q+K(H`dF7D7*zt)d|hgxw{$x! z20YlQDzT7N@)i*CG;AGRTZj8Dq^etWc)AdwonYRZh1!iVL_F}mXJ+byjY{#`i`dk3 z^hkG(xXoeOrSmwT8o+^$*maNP&zO5w&SH`}G#}K}pKs*v56A%BD|Er#T0A@=UvusG z&te}GX|S~qZQ4A>HdX2UD?tk2BfhKRgL&|enuH9ra^!VfUGrzO^W{bCa?`LD#lKZS znSKzLRGysKM2dfk@$46uOrjU+A{|U9(YWFc8SHPNK4=K4vq)3>Q3srBA|hs@(|o=> z|K1?Ky}?Z--+T^wY&24>Jb5hrvhzyG8X620X~F8jzT1EztQN*yR!PSNEJE3-4t(QM zPQ|QJ|5iN%KgwN+3=>7V1R6~hc)f?9eEBriD*3IIG7aW0?vFQV{gdLVRVGhPHNmMV zD@@aXwm2Q&~P0;5Xk91)F-pfjurHaW2#zlm_K$*Z z^60lq*SdJe_J>5(p#}aBEDZO(sMx-5eXu?=?o(0seXzz)18`W@v$ti?DBc781D;-z zzUoqIOLJHl#Z~@vmD*X2?MRiUy9d(Ox_q^r*QtE;+L7hU5tBb-(|GUba;VSGadK)V zwJV_6qeAZ2Jm<}q#ft4hRaL()e5XgG*-YWH$#|+x>y1DW<&O&DeDJ`scZp?z5qxM7 z&8gC-3Xbiw7oLUBWHazPUrEc(F-B+77xT1%U$b?bHk0J-!7gX4uzK1OuiA{hjpQs_ zP~m0Eqv7Q~usrngp?Q+nEU$3qLcK>B8Ijl&W)7>>pUtE8~tLMW=z6?g(@Zo%o?@s3gk~00=H4)6p z`c|qoX+MY5GL3q~Gi`c;WPg&4ETFf@R&&9*MOw|$(yLX7KHA>~Ce8+NZV6fZ)sX_bB6bY?YsdwP^J|n4?rYw6qUe#p6Rz7|Gd-WykH!;+*%# zmBj&^$$vL1QG6AgU^4vdTPA<(JZ0Y8QkXitV`grCt=veMOZ0TzA=|WuNr!WJY5d{7 zGi$2&n*F#5!yIGn%F@@Uec=O<>)ldr$CkXKqT>T(t~MLVP5GC=#uogiSJsnnB1f(Zu`Qv=;j`LYHQN=}UUP&9w7(!hq}V`_KB} z*$LN0`_2)D$cwl`@6o(urmL`fp2;I;jcON;A;q(1wHoBT_~m^8lI0)14A5}WCHOhZ zNA?-cA{mmvV8nVDiq7Qv)9HCpuHTZZrp9>2$=a_5xJ%mqa3quS{jFxhKRM;dfe#=> zt)+M<^bBAw+*nGUPUH!vP5=JwHC^bw(H-o6UG;=9$Hvc(j5n|Pd#Tdur#6pC_|?iv z%bmA^&d$@H9!%@@6|)t$Oa9eWZp+8Ery`B4_~vP~t+70)u zf9$#P=>9?@&#dbY_Of6hv3%?PPdJ45sn5wv*NcF2(_X-$krd^JhstH5NMRSZQn@+OYF{nG>*yy*ne$QnA!nn^}d zFYNC+O&7O*r?;U0@qb-Mx|UOOmr`XYpZ|?NFQ49$%{S>V81DiBKbFOL`Q6^P9B_R( z+z;NVSLwC++&ks{7;F#&oq_Vj3EXIqZ*cMOM#sSkV$i!JhUB~N^WU}DKBKj}es(Eo z>G&fP&8H0{e-2jG%cG8`qb`H9qL*R^xc0wnB*VIonANhev5_1^$HWv(AJ{;+ArJ^3 zpPsVv*0mQ7I57$?i=p$h)s?i&%)eboexH9dIPFNK4!fRj_6g;k{kE>EudCzXiPZr2 z^K!BjGjUZnLWC3mT<~yk6w$u{BpK*NZfkAr?U7vtc4vc2p5?_7e);sk2YI#^L<2bV zv;5zoA8^u}*Y3Yl2jKS-vbV~eqNI%Pv8G4mQ>XpZptEaOG6To;1YVNK0~gS3c;H_x z(V44xBnZv^sn9=uc@~@xraY#Ewt%(+03Yq}Wo7yL`;5D56HYF0#sL`B`ynk`bQROs zwB@tSb+Nrn8A0x!@CceVGNB5(_J_NxWLFlrF}{`<4IY6DMfRxuVVi8cO;%?Q8~PIb9aBk48_^8{2cq0 zK3#;^<3zbm!qauf?mVxoroU77oqZ;POG>FfevJxaD7kP;o`jrBSEE+!8ljt2wgut3 z{t^=t`_J8HJBl^tQk{sC>yHLE&CFbWU2u&ujP+*$At(|{C|J$KkC}f?XT2HbvDNan zLzd=`1b26RI@S^|IdjH2_a4VSq*@%Y?Z@43ywg)|xI+HDC0fEu^C!erTC7BXLAT?b zu_3BZZ9-AQ1XWd4PIDu25dk)25{0anG(Y||n)Gzu6gE`eS9?j*#@{YZjkpgcheA2* zbjO%vrI^?3A zhq8BEdxV6=!i2G-31Je}0>!tv-Ay(2YwZNwZdshpAR{0*U5@7HdsX%IJACdh1_-@vx&okiy{=&7p*8ze@OeCbl$BY5i6sfFj9iYb z1Lxrs`aJn&BRR2X+`ejpD&=&N_*}pWQdL)f-zHH+DVHUoW4Q3CQm-w;dv`RG9bjJ! zUJVjo1~!zIlq_`kKktJLg{0(I6U?HbfPs8cQC?0q!l2u1Vs0Lb!&+oLUwICf_={X$ z#nRD{xyKA!I0V5^CGgz`IIDy(YzIBP)ufNgl(HGl7KFUq>(4$eX;scC9T z#)QRKQgK)F22lXanwHt;JVbmBCLYl=9*HzSF4|5KpPHWTp&%Cf6-a7GuRv1heK=EU zV`_M~36;kz*KN`nl{L%mbLRlbe|r2Ink>=0D4`i*NM*QCm>20i1_?c`06WVX&rc)<3fB0-6*iIyz|K99r-NG*>4@@FrVhF{4S8(ELgM ziB6s}6hoZ&SnjQmW`ZnbXa*HBVcxs_xbJBrO68@crPD>S(vp&}%JUaNJCar}h@^!D z33z8YtNs`QJT+2wk7hvsk%$VCXHeXnu4+Qym4VaF_;r3V_di5I*r z?P~gavt+;Jsh}ljM=I0wdU4c};15@&!)88`0|(eyi^u@oB(Eb9r%q5US3@E5b%O1aTyGR9qGiZWr&jQ`25tTy;$Z5C z1Hwrr<&-o*sxvKDloW*N>>*kcyP z3zRgDpnhj$4(p(;Qv-{TmM)Hx51sBqlXw+x6v0#>u7<;h94peqGNzD)kh!nXH$$%$ znvy3RYJ`;kRSaso^o4#nfD#YT1%>{*Bx(!v2=LLl8WydcNW@7!0iy5G(BBk%g_eLH zPV6+E%3(3%CY71`#XDmQ+C~}qI`R94)OVWAPD}{I|9ImduS16{2>LuT7lO9eKc(ni z2a;5R25g5vL5t;$cbIfz(e|a#mE$_s zo4!<>!9Fj{-tc;^=y=7Ga9{9WVSrPnn|M3{@!!H58Q$Chh>K zb#!1dZ^V*EM3_eA$UASWWJzv86z<>^mw2VsPfDvcrszC)imecBlz6=SX>VddXX4!H zsVNYcK^5C!J5d{rqPE1z9K}5!`xciM76$KsP4<=cI}Tfh4#ITUiK{uS6Y%+@B_g$< zVkyod1VKM!pEK$SO8rL@E*Z1#dyOD`EVZ(Xop{C_r0JcStDKDf{ zQf$n+PGykp;iHGW6>6W1U<@H|#+4&0$tUF=m$BN7`9I5&%&gHocx}ry3UVbr{hhyz z*r54Co{V|O1Lo6~h;t{C3Rx<|eg6KmU1IV!LHi&p0;V}L%1{GPgeF<5n2dTdwgt%t zG=ZiW3cu!ZFC|EuPE7UBUVfMCj5$n!PSgKr;$g2zZ5<&!cbCDGLnnU z^b8^gF95V9fgk8^rh`Anq(Z}WxEUg#)AxVI#=(fLC_1yovO>-2yfC>W!B^^UHhw%= zZR4gBxM3*!D&mX;37kJ>^?-%Ldrr*ElnxaUpE(}lA1Z|MfCW zT2RJ0xi%s&U6`P{Z&rfc@ttaK35PGIV_-f-iGh=lMG3Op+{lOwqQT4?#JF>36-JF8 z>n&@K3|`QSGcqz0R1GK}N$K8>>5zP%Sk#G-UjL^eQS6q1poCiV|5dij5us^K!&ZKvV;hV96pLCNK!CA zOM*E#LV{EVY7b(z3*_UAl@fBbXH{6ct1t!R0)-e2J~xVOG@1;bvTS>|#NbE6{yDNl z0mu;I&)1h|R%uH=)})B{Sl> zI;MX*QtUIf*z~i~X49Zu&0@Ck!UG7ruL&uvJG`_|2D~p{{kdm6o$FE`zED zXuDPmHa#gp0GhPFkjjwq8L zLy>1zixM3ComS%Xy4nZ66VqAs+GJQ*9gT|@61k$5DX6?qK&~+0F<%ZCMlnS#|uNWJGD_r8V2qB z%Qh*Ncnm%Xn@OBVK{^cD%7}s@;qrtG?R(JLocRk!&%z7}+iMn9LCv2$BbPu5=zDBH z=ffDAjeVRUexg?Sg{m0LO~7ITqd%!3!SIVCKdz9*I8BZiwQn@1G=H==GHG6zYo!15lN{ldaZehv6GC9hLYlCqlHUw{CdM2=PY(su z-c$fId>THT^?vAiBA=0oyV0c~e7-y!u?|HtkHqt_YlFt*Es~!F9a}Y%%hp$cd#~~AFa^d1s7zewZy*=kM zhxYs|4nK}Kj%?2F%%T!9vV`%h;iPJ*7_x&Py z;G1^{#QM}!h3^7;4@hM5k(OT>qroYjx1lnm86?2jes?i8 zYsUTxqnnFj^7z$cQDeYj|2ETo6b>ueYLH1Lg$xvxiJQS@#45p;_^mxjd>nZxsfeF? zfu#j^2Z_*fIqY>0^hjuOD+w8A#hDzu0i-fQujW2pPE^_ZG@*8HD+^NZ{pqv-TxfHs}w0_%EXN226PN@^;r z4Ftcx$0<^;k#nI5aCj0D5!KUdsdC+e^4|I4OHwf$woJ=3bB^S**CS3K1G8pdYlg63=k247KaotU%iZFQCl)d# zmlMFIED-i8fOP7_S0YKo)Re-q55dIDtRF$i=YGE+7P;MmZ~0@r7Zv0*B#r|v+i#!T zY*!m8l~JD$`85F!9}%_JMx{ZDLla3Lx|l~*)O92q9D8r%51z?(^re|nWiUKMZD$>U zMq-{@k^3f-`J(cC_v9zkKC5JYAH9^bU{L)5YWEK3>hWx&=hVa#buxbNJ!b+P<=)Rz znV%uJMRt*qk+*-A*d5jdcy0)OxAyn<1IXU`7f+MHIFdgx__bdP^ zS1Gj{66$Y27y_fpUFQk1tzy29gUrVL$nak#B#uG4ErTBY{cIdgM8s(SiqL?=np6B4 zAQeeJnvG_-F6nO{@ zRobzVCn|Nh3C%0_A$4a^!M|J_?IQMxl(I(3 zhXnU9;(k(BMIHiaDll{X;q-MzZbNlq4}2y&}|Z4KLrd1^{u zS_nINz#__lwW%%qi~-o`?EOAeuEXm9&m>xkb{qtYR>|(vSg_LKZcM<+!ZK)SeI`UF zFV^CDY4+3irhlP>t&Pow@ox4dg~fwJJs^Dfk>_YZ$nVF)$(g=f4X;QeL-xl;!RNzx zL|ENBATMaL>Op*3c*#{zNT(1d+m$yUtKv)JZ&!DyZ)@u1g!%A^ScG%;x`MUfg}bwb zMX!~Vkl+;SuNxkBIQ0$wJrhAl3ZQ{rknN`!bL)wPG2x&(;bex^$x2JNxYvv405bEH zq{9BLhi{Q5E3yDgdv~|cHjC27oA-6@;s8>OiWXfDOrK|>FCKtT1}5p{Zl=8xo0ooM zpcNx6ExbJz$oPBtsx~VP^UqwV2Nyc_g#|A%xSDR2nydqQ*V=u#4^x_SCG zr~S11%;Yz6Y8yfl& z-O*RhLW)*1SBH-=M@h|(0KJXle0#D2nDM?;_TwymVq^IXjEp&`dFk>2>^7{Gs~z=hso5k*U+dw7IC* zu%u3%pI>iN1cg7fv@m(X?R3qM^!8-Jx?nuC9+kGZmoU5~>L>pA(ei44a+?$({6-u7 zklvt@saoHz8^jr*_c3!3itWnL@8ahMrd}mQ#cI=GOmgo2&%ti7hETsUgC!?PdrP%v zSi5nlPulF5J;Ll$ggsc_F608oTX7bQoh&_KZ5w}g zu3%tTQeA&{tEP}8l_r>JZ-qYm*b5T>3>|h`z_DnyxTujwBJ)$4?%%}ypZPCq8^*!R2&LtH^8&(!4zvj zMzMsx<1glqGnjfhkM+;}2aGgMeMM}Tuvb&B<6VRgI`4x-xEz)L1Z9O9alTwX z{XH$HPHP5Gdjrz~UNu$6WWFt<-SitUIawh1xT1Ij3aS`NgyH^69oeGFp!t&OJFp0et|-laU$cK681<#0b<0BT&Wf=w)mmpllT+Q6z}(VKgeSf=%Z zJhSvd=7dC4#V?>U>E5$;s?R~+M&Yp|_W3LYJMbH1ffsd!0%dw>KcPrqMcJln$P#FSyU-Vlle@E;>@4#dw-q;SL_yRf<=E_m>?K- z3UI62dr&L90Rq>=iNj){9ftftMis-;#A$FH0N8pGiYdIlmqlzR94&A+(8FrKEj4^L zmoOpW$}OWo6|^#<5>+nw0%W6`%9xa!3M7A@HU617!BirJY)Kw{4CTaJ*CFj^f% zQ5#5EJUUahMGy+M(w)WA{&#kgfA`4U!8)PT$Vw$Lzfnj>ix86~RhQikPu@48_e*L` zwoFcn7{r;pHFP=ZHqQ6R@?oYz7pS}L$TKg4X2Tq4D4O&K+|3Ov>PZ-~EDpzfP>^aM zz;;TchDo7LOSCwuZ@4Z&JH%A|HM_j5)82nXPYgvzPj5QDAzIr^A%N;-O%Us~tEtAm z7}fUoS74Z#R1!|E^VH}O4y#!d0r$<%@^!v1))bj^q=%TSn9)p7oJJqnMis$3*bAbX zLh@-PvGfB(FNH=fZC0ww8E-eD(D-+;OnUdM1r|M`Xdhf(Y&Bs)PqY9xB$ioU-*V(t zqVP>RegcLsG1R5lXBSbIWz5x>7{O5owwuVPlps}29i5R^3)J}q;hiw0%rVJFsZ{2) z;l?W{Dz$Bq|88QC+t{GKD$~f|QrWcnw1f?QIQQ2Cg?VsEe%icjG5qgKlqUcEtCzZ# zhzRP3ui5{V%p~&jra`y+|32vA^FfF8KWae-;`a>a`X7Xua= zxDqV>xBoD)r59cJpd=!q#SZMi``eD^6+WT57f9W<*j;vZ*r31T{l(7Z-uPvG{Uhn| z;cPjOyZU!B*6-@YVZY7){yh+ApG|(?dG-=N zI)lyeC{1in*G1rmT3A@zZ4o^;T22>%f4sNL&R{A`!oNIJBy{kccfvDFF0}i4 z>xJ^a-_iD37u3^lb}6-#M!>xnTz) zEoan|+pzEZGPL_Ie^b6rtH-&$|6grW)1B?1MDRZ$K>t$Z_|yP}pwq3k@#^+?k=0@% zx2A>#e+HhhRe<{z37hGaxrUBTtI1FTSmkqgJTF$<*LKbUeUplU!uLEK4dnTNngOK{wJJSdAY)EeTK0B#r)-^^ zSP1QRekFrcQmf8l5>%ubH%8glKq(7e-Vp=)3^;c{vk6n-L2TBu4-XGPX_^J{kjFj> z!hLWr$c?e%pVQSh@MR{bR{=O{abclM4j(~I$RsX@1K8Wx<|t0&|IblTaS|jq($dn^ zZa~y_X9HpK`ZN`c${<;66cN84kP046^LpMNZtD%Y0yv#_4Yn^XF1TC|KiMoWF#zMc zQNP2_0~Dx!ztk>(hUt^pTqN|pn%sx^UDx%gQlr`kymjmR52W?G%`b2pLVAt?NE#IS zR8?m|Qi5X=OUT;~l5*qzD9u_k*-S_@pW_Q%xmR*(2+zK?8dzGu@#N71$tXYzhG_!I z^9Os;h_En;?k%dCurQxrV4R%5stXvT#-R@G2L}gfZ3W`7MmfMevJ5l_al9A{;2l*y zJG6kWgXpgqKK}r!?{{sdzDR4q>c>kBr(i@scjP|;Qccfq0#2v5ne5=z4c@>iYHCK$ zXVF(9^4sRF2U8R-gdm`)X=(A;tY$!@GH1Q8%fbFfN4u*L<;l#279y__|K}%<;Zo(| zO;{Wa0Na)anXc=}GR|{28Ni716@a|Q5PLaLx}u~cjE@mSV0a8zg0_{x2Gv-sL%?DL z!=8eG)PH0=5VLXn@+Z9DT$7T}ZB(!RLTm{=w^8Wy!6WkkF!8@l&U=1fYr**7U?d3eL?yaR%5!SPVLyF0Oxmy8@}WjNA<8a=Z|q<9)F`1l$uZi>04` zrseq`K}`+FrFX`jyi{^o8Vz;?j|P9R34bEv-21w@p>m@$>)$_x+98 zb5VvgNXAUgnwpwGy}9?pQ~)<9Vcw4W-PD?*WCIvG|Gy0+kc*7+Jph)N2rBk7Soa5u zpQH6aIX4D|7W~#~qdpK(iV6x73kzXucpyIjK@}Mh;b4J-gTqmGcBAF$dJSrUcW%HQ z1f}raDBHF6$NG7_qnXkdQvBU)m7gm}V2b6wZcc%m7*scgl&^;7L8aV)cpw@N6kE^C zPRc=@8iY3|Cnp-EjDd>FU6udi5eO25tx0hr+lSMu{rB+ApaKohuf@g1TS&lhkwaQ; zwO`}2^E)gpPGQjfg$=d1xCm_Fs8J+S@T~87*1caIwjZjQp&?1k$+uL!2mkrI19^Y2 zFfIUv0`{!z`!;NYHMD!supxy`lg01fonD(4829=EBJ-Q0c_b`#J-v4DywA+@k@){P zT>WO-FKllogb(HXx69sfKdk@c^z`pOZ3H~qPk(!)qfA9bp&?ZuQ3uc4_u&fm5B4yq zpRezC546cdcSeGQe;rcq3F0>g?IjRwfwAKTqRMfre>9Dm>=GA5?f9=>FU}AMh#q}| zRoG=uFoW9l+I^ZTD`V_{C4$RfI23|JBxldT>$86C-wbDfWO(XKW7z#qU|{Oy||Vs*e7a85SQ@0vi>p|5KSHjqRBe>WH&D<26^oFwuK zrqSZZxq)H44E6yCBk?AI_`2ff$u(X0VaV|fs8$=*y6at@i$OAuN?;`L19yT}t-|Aa zRvnC!J{CIqdRKQxO+gPRoZf)77{Iu|#sI6E(#$WwZwjflTjAo`I0Eow_3v63e0tvw z);y=E#Oy#e33B!UjoqCc+X#WJ#aeSJ*^Ey{yShrd4$ zp1QTQwX~GfJ4F02|0A#k0eD?NAuj{!R(^gyfch8_zj)FDTaX_vtL z{Iqt!DBv&|MCR(M2d1qv@Uy_O0t)-yAW}i$u3H|2XM9lcpHaSXa3-10xvU&ex~^4Q zH^K6Fo-(QS^6hclXD?-uLW;ZXMEOdcCM7K`+$Z}syr+XAAh!n1gJ0Ia_Dk@_R##JN zf4o`p2hn)uK_(W}_@vDKGMD*;UqbAbAZrykIr9~otOlK*ftf*0MJ3MoBH5OS{<(t> pyjEG{~Rr+r_RO=PEBt_*!DuoOJ{s;K7ejxw= literal 0 HcmV?d00001 diff --git a/img/scanblocksize.png b/img/scanblocksize.png new file mode 100644 index 0000000000000000000000000000000000000000..7dff7eb37574a1a7580629bdaa5bd3e972d3c066 GIT binary patch literal 46007 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 KP;9sL=YIox9{{xg literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp index b70a7bd..27bb3e9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 18; // feel free to change the size of array +const int SIZE = 1 << 20; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int a[SIZE], b[SIZE], c[SIZE]; diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 7e1e5bf..f003ad7 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -88,19 +88,19 @@ namespace StreamCompaction { void newkernScan(int m, int o, int* dev_idata) { dim3 fullBlocksPerGrid;//((o + blockSize - 1) / blockSize); - int inter; + int p2; for (int i = 0; i < m; i++) { - inter = 1 << (i + 1); - fullBlocksPerGrid = ((o / inter + blockSize - 1) / blockSize); - newkernScanUp << > >(o / inter, i, dev_idata); + p2 = 1 << (i + 1); + fullBlocksPerGrid = ((o / p2 + blockSize - 1) / blockSize); + newkernScanUp << > >(o / p2, i, dev_idata); } cudaMemset(dev_idata + o - 1, 0, sizeof(int)); for (int i = m - 1; i > -1; i--) { - inter = 1 << (i + 1); - fullBlocksPerGrid = ((o / inter + blockSize - 1) / blockSize); - newkernScanDown << > >(o / inter, i, dev_idata); + p2 = 1 << (i + 1); + fullBlocksPerGrid = ((o / p2 + blockSize - 1) / blockSize); + newkernScanDown << > >(o / p2, i, dev_idata); } } From 553c62734a6ce4bd1472502ea44363cb5b27b3b2 Mon Sep 17 00:00:00 2001 From: Linshen Xiao Date: Tue, 19 Sep 2017 22:18:23 -0400 Subject: [PATCH 3/4] Editing README.md --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index f835add..5824dca 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Part 1 ~ 4, includes: Extra Credit: -* Part 5 implemented. After testing the Work-Efficient method with other ones, I find that it's even slower than the CPU one, that's because There are lots of threads that are not used due to the branches, which I have removed in new functions. Check **newkernScanUp**, **newkernScanDown** and **newkernScan** (compared with **kernScanUp**, **kernScanDown** and **kernScan**) in efficient.cu for more details. +* Part 5 implemented. After testing the Work-Efficient method with other ones, I find that it's even slower than the CPU one, that's because there are lots of threads that are not used due to the branches, which I have removed in new functions. Check **newkernScanUp**, **newkernScanDown** and **newkernScan** (compared with **kernScanUp**, **kernScanDown** and **kernScan**) in efficient.cu for more details. * I use the new Work-Efficient method without branches in the following analysis to show its "efficiency" better. @@ -44,7 +44,7 @@ The array size is 2^20 in the test above. We can tell from the data that after t ![](img/scanarraysize.png) -| Array size | Cpu scan, power-of-two | Cpu scan, non-power-of-two | Naive scan, power-of-two | Naive scan, non-power-of-two | Work-efficient scan, power-of-two | Work-efficient scan, non-power-of-two | Thrust scan, power-of-two | Thrust scan, non-power-of-two | +| Array size | CPU scan, power-of-two | CPU scan, non-power-of-two | Naive scan, power-of-two | Naive scan, non-power-of-two | Work-efficient scan, power-of-two | Work-efficient scan, non-power-of-two | Thrust scan, power-of-two | Thrust scan, non-power-of-two | |:------------|:------------------------|:----------------------------|:--------------------------|:------------------------------|:-----------------------------------|:---------------------------------------|:---------------------------|:-------------------------------| | 2^8 | 0.00079 | 0.000395 | 0.046112 | 0.035296 | 0.106176 | 0.074688 | 0.03664 | 0.013728 | | 2^10 | 0.001975 | 0.001975 | 0.047552 | 0.055584 | 0.106112 | 0.098848 | 0.023136 | 0.013696 | @@ -60,7 +60,7 @@ The array size is 2^20 in the test above. We can tell from the data that after t ![](img/compactarraysize.png) -| Array size | Cpu compact without scan, power-of-two | Cpu compact without scan, non-power-of-two | Cpu compact with scan | Work-efficient compact, power-of-two | Work-efficient compact, non-power-of-two | +| Array size | CPU compact without scan, power-of-two | CPU compact without scan, non-power-of-two | CPU compact with scan | Work-efficient compact, power-of-two | Work-efficient compact, non-power-of-two | |:------------|:----------------------------------------|:--------------------------------------------|:-----------------------|:--------------------------------------|:------------------------------------------| | 2^8 | 0.001185 | 0.001186 | 0.003951 | 0.094752 | 0.093824 | | 2^10 | 0.00395 | 0.00316 | 0.024493 | 0.176832 | 0.10768 | @@ -74,20 +74,20 @@ The array size is 2^20 in the test above. We can tell from the data that after t We can tell from the data above that in both scan and stream compaction: -* When the array size < 2^16, CPU method is still faster than GPU version. Elapsed time used: Cpu < Thrust < Naive < Work-efficient; -* When the array size > 2^16, parallel computation in GPU is better when the number of elements is very large. Elapsed time used: Thrust < Work-efficient < Naive < Cpu; +* When the array size < 2^16, CPU method is still faster than GPU version. Elapsed time used: CPU < Thrust < Naive < Work-efficient; +* When the array size > 2^16, parallel computation in GPU is better when the number of elements is very large. Elapsed time used: Thrust < Work-efficient < Naive < CPU; ## Questions * Roughly optimize the block sizes of each of your implementations for minimal run time on your GPU. - Check [**Performance analysis**](##Performance analysis) for graph comparison. + Check [**Performance analysis**](#performance-analysis) for graph comparison. As I mentioned above, there is no major performance difference between different blocksize. * Compare all of these GPU Scan implementations (Naive, Work-Efficient, and Thrust) to the serial CPU version of Scan. Plot a graph of the comparison (with array size on the independent axis). - Check [**Performance analysis**](##Performance analysis) for graph comparison. + Check [**Performance analysis**](#performance-analysis) for graph comparison. In conclusion, when the array size is not to huge, CPU implementation is always better than GPU versions. However, if the array size is very huge, the parallel computation in GPU is faster. Also, Thrust method is always very stable no matter how the size of array changes. @@ -101,7 +101,7 @@ We can tell from the data above that in both scan and stream compaction: * Paste the output of the test program into a triple-backtick block in your README. - Check [**Output**](#Output). + Check [**Output**](#output). ## Output From 4dcd03c882fe280df349c315c16b328605aa1d15 Mon Sep 17 00:00:00 2001 From: Linshen Xiao Date: Tue, 19 Sep 2017 22:31:06 -0400 Subject: [PATCH 4/4] Fix small issues in README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5824dca..f744673 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Extra Credit: * I use the new Work-Efficient method without branches in the following analysis to show its "efficiency" better. -## Performance analysis +## Performance Analysis ### Comparison of GPU Scan (Naive, Work-Efficient) for different block size. @@ -81,17 +81,17 @@ We can tell from the data above that in both scan and stream compaction: * Roughly optimize the block sizes of each of your implementations for minimal run time on your GPU. - Check [**Performance analysis**](#performance-analysis) for graph comparison. + Check [**Performance Analysis**](#performance-analysis) for graph comparison. As I mentioned above, there is no major performance difference between different blocksize. * Compare all of these GPU Scan implementations (Naive, Work-Efficient, and Thrust) to the serial CPU version of Scan. Plot a graph of the comparison (with array size on the independent axis). - Check [**Performance analysis**](#performance-analysis) for graph comparison. + Check [**Performance Analysis**](#performance-analysis) for graph comparison. - In conclusion, when the array size is not to huge, CPU implementation is always better than GPU versions. However, if the array size is very huge, the parallel computation in GPU is faster. Also, Thrust method is always very stable no matter how the size of array changes. + In conclusion, when the array size is not too huge, CPU implementation is always better than GPU versions. However, if the array size is very huge, the parallel computation in GPU is faster. Also, Thrust method is always very stable no matter how the size of array changes. - As for Thrust implementation, I guess that share memory may be used , so it's more efficient than other GPU methods as the memory access is faster. + As for Thrust implementation, I guess that share memory may be used, so it's more efficient than other GPU methods as the memory access is faster. * Write a brief explanation of the phenomena you see here.