From 3a090f77f5653635455891dd6ab02a9b9571056e Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Tue, 11 Oct 2011 19:59:33 -0400 Subject: [PATCH 01/27] stub smooth-lighting mode (does nothing special, for now) --- .../src/rendermode-smooth-lighting.c | 68 +++++++++++++++++++ overviewer_core/src/rendermodes.c | 1 + overviewer_core/src/rendermodes.h | 7 ++ setup.py | 2 +- 4 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 overviewer_core/src/rendermode-smooth-lighting.c diff --git a/overviewer_core/src/rendermode-smooth-lighting.c b/overviewer_core/src/rendermode-smooth-lighting.c new file mode 100644 index 0000000..80570b0 --- /dev/null +++ b/overviewer_core/src/rendermode-smooth-lighting.c @@ -0,0 +1,68 @@ +/* + * This file is part of the Minecraft Overviewer. + * + * Minecraft Overviewer is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Minecraft Overviewer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with the Overviewer. If not, see . + */ + +#include "overviewer.h" +#include + +static int +rendermode_smooth_lighting_start(void *data, RenderState *state, PyObject *options) { + RenderModeNight* self; + + /* first, chain up */ + int ret = rendermode_lighting.start(data, state, options); + if (ret != 0) + return ret; + + return 0; +} + +static void +rendermode_smooth_lighting_finish(void *data, RenderState *state) { + /* nothing special to do */ + rendermode_lighting.finish(data, state); +} + +static int +rendermode_smooth_lighting_occluded(void *data, RenderState *state, int x, int y, int z) { + /* no special occlusion here */ + return rendermode_lighting.occluded(data, state, x, y, z); +} + +static int +rendermode_smooth_lighting_hidden(void *data, RenderState *state, int x, int y, int z) { + /* no special hiding here */ + return rendermode_lighting.hidden(data, state, x, y, z); +} + +static void +rendermode_smooth_lighting_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObject *mask_light) { + /* nothing special to do */ + rendermode_lighting.draw(data, state, src, mask, mask_light); +} + +RenderModeInterface rendermode_smooth_lighting = { + "smooth-lighting", "Smooth Lighting", + "like \"lighting\", except smooth", + NULL, + &rendermode_lighting, + sizeof(RenderModeSmoothLighting), + rendermode_smooth_lighting_start, + rendermode_smooth_lighting_finish, + rendermode_smooth_lighting_occluded, + rendermode_smooth_lighting_hidden, + rendermode_smooth_lighting_draw, +}; diff --git a/overviewer_core/src/rendermodes.c b/overviewer_core/src/rendermodes.c index ff7858d..31acdb7 100644 --- a/overviewer_core/src/rendermodes.c +++ b/overviewer_core/src/rendermodes.c @@ -26,6 +26,7 @@ static RenderModeInterface *render_modes[] = { &rendermode_normal, &rendermode_lighting, &rendermode_night, + &rendermode_smooth_lighting, &rendermode_spawn, &rendermode_cave, &rendermode_mineral, diff --git a/overviewer_core/src/rendermodes.h b/overviewer_core/src/rendermodes.h index 1a145cf..25d774e 100644 --- a/overviewer_core/src/rendermodes.h +++ b/overviewer_core/src/rendermodes.h @@ -190,6 +190,13 @@ typedef struct { } RenderModeNight; extern RenderModeInterface rendermode_night; +/* SMOOTH LIGHTING */ +typedef struct { + /* inherits from lighting */ + RenderModeLighting parent; +} RenderModeSmoothLighting; +extern RenderModeInterface rendermode_smooth_lighting; + /* SPAWN */ typedef struct { /* inherits from overlay */ diff --git a/setup.py b/setup.py index cd1b7d0..a881f9c 100755 --- a/setup.py +++ b/setup.py @@ -149,7 +149,7 @@ except: # used to figure out what files to compile -render_modes = ['normal', 'overlay', 'lighting', 'night', 'spawn', 'cave', 'mineral'] +render_modes = ['normal', 'overlay', 'lighting', 'night', 'smooth-lighting', 'spawn', 'cave', 'mineral'] c_overviewer_files = ['main.c', 'composite.c', 'iterate.c', 'endian.c', 'rendermodes.c'] c_overviewer_files += map(lambda mode: 'rendermode-%s.c' % (mode,), render_modes) From 80a3849a6cc0aa007335f6b7cd13f83bfba5ff04 Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Tue, 11 Oct 2011 21:17:10 -0400 Subject: [PATCH 02/27] added a triangle drawing function, with interpolated color --- overviewer_core/src/composite.c | 95 ++++++++++++++++++++++++++++++++ overviewer_core/src/overviewer.h | 7 +++ 2 files changed, 102 insertions(+) diff --git a/overviewer_core/src/composite.c b/overviewer_core/src/composite.c index d83701c..1c4ba1d 100644 --- a/overviewer_core/src/composite.c +++ b/overviewer_core/src/composite.c @@ -358,3 +358,98 @@ tint_with_mask(PyObject *dest, unsigned char sr, unsigned char sg, return dest; } + +/* draws a triangle on the destination image, multiplicatively! + * used for smooth lighting + * (excuse the ridiculous number of parameters!) + * + * Algorithm adapted from _Fundamentals_of_Computer_Graphics_ + * by Peter Shirley, Michael Ashikhmin + * (or at least, the version poorly reproduced here: + * http://www.gidforums.com/t-20838.html ) + */ +PyObject * +draw_triangle(PyObject *dest, + int x0, int y0, + unsigned char r0, unsigned char g0, unsigned char b0, + int x1, int y1, + unsigned char r1, unsigned char g1, unsigned char b1, + int x2, int y2, + unsigned char r2, unsigned char g2, unsigned char b2) { + /* destination image */ + Imaging imDest; + /* ranges of pixels that are affected */ + int xmin, xmax, ymin, ymax; + /* constant coefficients for alpha, beta, gamma */ + int a12, a20, a01; + int b12, b20, b01; + int c12, c20, c01; + /* constant normalizers for alpha, beta, gamma */ + float alpha_norm, beta_norm, gamma_norm; + /* temporary variables */ + int tmp; + /* iteration variables */ + int x, y; + + imDest = imaging_python_to_c(dest); + if (!imDest) + return NULL; + + /* check the various image modes, make sure they make sense */ + if (strcmp(imDest->mode, "RGBA") != 0) { + PyErr_SetString(PyExc_ValueError, + "given destination image does not have mode \"RGBA\""); + return NULL; + } + + /* set up draw ranges */ + xmin = MIN(x0, MIN(x1, x2)); + ymin = MIN(y0, MIN(y1, y2)); + xmax = MAX(x0, MAX(x1, x2)) + 1; + ymax = MAX(y0, MAX(y1, y2)) + 1; + + xmin = MAX(xmin, 0); + ymin = MAX(ymin, 0); + xmax = MIN(xmax, imDest->xsize); + ymax = MIN(ymax, imDest->ysize); + + /* setup coefficients */ + a12 = y1 - y2; b12 = x2 - x1; c12 = (x1 * y2) - (x2 * y1); + a20 = y2 - y0; b20 = x0 - x2; c20 = (x2 * y0) - (x0 * y2); + a01 = y0 - y1; b01 = x1 - x0; c01 = (x0 * y1) - (x1 * y0); + + /* setup normalizers */ + alpha_norm = 1.0f / ((a12 * x0) + (b12 * y0) + c12); + beta_norm = 1.0f / ((a20 * x1) + (b20 * y1) + c20); + gamma_norm = 1.0f / ((a01 * x2) + (b01 * y2) + c01); + + /* iterate over the destination rect */ + for (y = ymin; y < ymax; y++) { + UINT8 *out = (UINT8 *)imDest->image[y] + xmin * 4; + + for (x = xmin; x < xmax; x++) { + float alpha, beta, gamma; + alpha = alpha_norm * ((a12 * x) + (b12 * y) + c12); + beta = beta_norm * ((a20 * x) + (b20 * y) + c20); + gamma = gamma_norm * ((a01 * x) + (b01 * y) + c01); + + if (alpha >= 0 && beta >= 0 && gamma >= 0) { + unsigned int r = alpha * r0 + beta * r1 + gamma * r2; + unsigned int g = alpha * g0 + beta * g1 + gamma * g2; + unsigned int b = alpha * b0 + beta * b1 + gamma * b2; + + *out = MULDIV255(*out, r, tmp); out++; + *out = MULDIV255(*out, g, tmp); out++; + *out = MULDIV255(*out, b, tmp); out++; + + /* keep alpha the same */ + out++; + } else { + /* skip */ + out += 4; + } + } + } + + return dest; +} diff --git a/overviewer_core/src/overviewer.h b/overviewer_core/src/overviewer.h index 934dae8..8aecfa8 100644 --- a/overviewer_core/src/overviewer.h +++ b/overviewer_core/src/overviewer.h @@ -51,6 +51,13 @@ PyObject *alpha_over_wrap(PyObject *self, PyObject *args); PyObject *tint_with_mask(PyObject *dest, unsigned char sr, unsigned char sg, unsigned char sb, unsigned char sa, PyObject *mask, int dx, int dy, int xsize, int ysize); +PyObject *draw_triangle(PyObject *dest, + int x0, int y0, + unsigned char r0, unsigned char g0, unsigned char b0, + int x1, int y1, + unsigned char r1, unsigned char g1, unsigned char b1, + int x2, int y2, + unsigned char r2, unsigned char g2, unsigned char b2); /* forward declaration of RenderMode object */ typedef struct _RenderMode RenderMode; From b984185f0ce84b6ed39678f1e705d41cc77d40e5 Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Tue, 11 Oct 2011 21:27:20 -0400 Subject: [PATCH 03/27] smooth lighting mode now covers every block with 6 triangles --- .../src/rendermode-smooth-lighting.c | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/overviewer_core/src/rendermode-smooth-lighting.c b/overviewer_core/src/rendermode-smooth-lighting.c index 80570b0..2384440 100644 --- a/overviewer_core/src/rendermode-smooth-lighting.c +++ b/overviewer_core/src/rendermode-smooth-lighting.c @@ -50,8 +50,50 @@ rendermode_smooth_lighting_hidden(void *data, RenderState *state, int x, int y, static void rendermode_smooth_lighting_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObject *mask_light) { - /* nothing special to do */ - rendermode_lighting.draw(data, state, src, mask, mask_light); + int x = state->imgx, y = state->imgy; + + if (is_transparent(state->block)) + { + /* transparent blocks are rendered as usual, with flat lighting */ + rendermode_lighting.draw(data, state, src, mask, mask_light); + return; + } + + /* non-transparent blocks get the special smooth treatment */ + + /* nothing special to do, but we do want to avoid vanilla + * lighting mode draws */ + rendermode_normal.draw(data, state, src, mask, mask_light); + + /* draw a triangle on top of each block */ + draw_triangle(state->img, + x+12, y, 255, 0, 0, + x+24, y+6, 0, 255, 0, + x, y+6, 0, 0, 255); + draw_triangle(state->img, + x+24, y+6, 255, 0, 0, + x, y+6, 0, 255, 0, + x+12, y+12, 0, 0, 255); + + /* left side... */ + draw_triangle(state->img, + x, y+6, 255, 0, 0, + x+12, y+12, 0, 255, 0, + x+12, y+24, 0, 0, 255); + draw_triangle(state->img, + x+12, y+24, 255, 0, 0, + x, y+6, 0, 255, 0, + x, y+18, 0, 0, 255); + + /* right side... */ + draw_triangle(state->img, + x+24, y+6, 255, 0, 0, + x+12, y+12, 0, 255, 0, + x+12, y+24, 0, 0, 255); + draw_triangle(state->img, + x+12, y+24, 255, 0, 0, + x+24, y+6, 0, 255, 0, + x+24, y+18, 0, 0, 255); } RenderModeInterface rendermode_smooth_lighting = { From 2705a1efe874d50305486b22a08ea2af6d0ca2ae Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Sun, 16 Oct 2011 17:18:24 -0400 Subject: [PATCH 04/27] smooth-lighting triangles now pull lighting data correctly for each vertex --- overviewer_core/src/composite.c | 5 +- overviewer_core/src/overviewer.h | 2 +- overviewer_core/src/rendermode-lighting.c | 69 ++++--- .../src/rendermode-smooth-lighting.c | 175 ++++++++++++++---- overviewer_core/src/rendermodes.h | 8 + 5 files changed, 193 insertions(+), 66 deletions(-) diff --git a/overviewer_core/src/composite.c b/overviewer_core/src/composite.c index 1c4ba1d..271f558 100644 --- a/overviewer_core/src/composite.c +++ b/overviewer_core/src/composite.c @@ -369,7 +369,7 @@ tint_with_mask(PyObject *dest, unsigned char sr, unsigned char sg, * http://www.gidforums.com/t-20838.html ) */ PyObject * -draw_triangle(PyObject *dest, +draw_triangle(PyObject *dest, int inclusive, int x0, int y0, unsigned char r0, unsigned char g0, unsigned char b0, int x1, int y1, @@ -433,7 +433,8 @@ draw_triangle(PyObject *dest, beta = beta_norm * ((a20 * x) + (b20 * y) + c20); gamma = gamma_norm * ((a01 * x) + (b01 * y) + c01); - if (alpha >= 0 && beta >= 0 && gamma >= 0) { + if (alpha >= 0 && beta >= 0 && gamma >= 0 && + (inclusive || (alpha * beta * gamma > 0))) { unsigned int r = alpha * r0 + beta * r1 + gamma * r2; unsigned int g = alpha * g0 + beta * g1 + gamma * g2; unsigned int b = alpha * b0 + beta * b1 + gamma * b2; diff --git a/overviewer_core/src/overviewer.h b/overviewer_core/src/overviewer.h index 8aecfa8..f08ecf6 100644 --- a/overviewer_core/src/overviewer.h +++ b/overviewer_core/src/overviewer.h @@ -51,7 +51,7 @@ PyObject *alpha_over_wrap(PyObject *self, PyObject *args); PyObject *tint_with_mask(PyObject *dest, unsigned char sr, unsigned char sg, unsigned char sb, unsigned char sa, PyObject *mask, int dx, int dy, int xsize, int ysize); -PyObject *draw_triangle(PyObject *dest, +PyObject *draw_triangle(PyObject *dest, int inclusive, int x0, int y0, unsigned char r0, unsigned char g0, unsigned char b0, int x1, int y1, diff --git a/overviewer_core/src/rendermode-lighting.c b/overviewer_core/src/rendermode-lighting.c index 395061a..e4a9254 100644 --- a/overviewer_core/src/rendermode-lighting.c +++ b/overviewer_core/src/rendermode-lighting.c @@ -162,7 +162,7 @@ get_lighting_color(RenderModeLighting *self, RenderState *state, PyObject *blocklight = NULL; int local_x = x, local_y = y, local_z = z; unsigned char block, skylevel, blocklevel; - + /* find out what chunk we're in, and translate accordingly */ if (x >= 0 && y < 16) { blocks = state->blocks; @@ -184,7 +184,7 @@ get_lighting_color(RenderModeLighting *self, RenderState *state, if (!(local_x >= 0 && local_x < 16 && local_y >= 0 && local_y < 16 && local_z >= 0 && local_z < 128)) { - + self->calculate_light_color(self, 15, 0, r, g, b); return; } @@ -193,7 +193,7 @@ get_lighting_color(RenderModeLighting *self, RenderState *state, if (blocks == Py_None || blocks == NULL || skylight == Py_None || skylight == NULL || blocklight == Py_None || blocklight == NULL) { - + self->calculate_light_color(self, 15, 0, r, g, b); return; } @@ -236,6 +236,39 @@ get_lighting_color(RenderModeLighting *self, RenderState *state, self->calculate_light_color(self, MIN(skylevel, 15), MIN(blocklevel, 15), r, g, b); } +/* does per-face occlusion checking for do_shading_with_mask */ +inline int +rendermode_lighting_is_face_occluded(RenderState *state, int skip_sides, int x, int y, int z) { + /* first, check for occlusion if the block is in the local chunk */ + if (x >= 0 && x < 16 && y >= 0 && y < 16 && z >= 0 && z < 128) { + unsigned char block = getArrayByte3D(state->blocks, x, y, z); + + if (!is_transparent(block) && !render_mode_hidden(state->rendermode, x, y, z)) { + /* this face isn't visible, so don't draw anything */ + return 1; + } + } else if (skip_sides && (x == -1) && (state->left_blocks != Py_None)) { + unsigned char block = getArrayByte3D(state->left_blocks, 15, state->y, state->z); + if (!is_transparent(block)) { + /* the same thing but for adjacent chunks, this solves an + ugly black doted line between chunks in night rendermode. + This wouldn't be necessary if the textures were truly + tessellate-able */ + return 1; + } + } else if (skip_sides && (y == 16) && (state->right_blocks != Py_None)) { + unsigned char block = getArrayByte3D(state->right_blocks, state->x, 0, state->z); + if (!is_transparent(block)) { + /* the same thing but for adjacent chunks, this solves an + ugly black doted line between chunks in night rendermode. + This wouldn't be necessary if the textures were truly + tessellate-able */ + return 1; + } + } + return 0; +} + /* shades the drawn block with the given facemask, based on the lighting results from (x, y, z) */ static inline void @@ -244,33 +277,9 @@ do_shading_with_mask(RenderModeLighting *self, RenderState *state, unsigned char r, g, b; float comp_shade_strength; - /* first, check for occlusion if the block is in the local chunk */ - if (x >= 0 && x < 16 && y >= 0 && y < 16 && z >= 0 && z < 128) { - unsigned char block = getArrayByte3D(state->blocks, x, y, z); - - if (!is_transparent(block) && !render_mode_hidden(state->rendermode, x, y, z)) { - /* this face isn't visible, so don't draw anything */ - return; - } - } else if (self->skip_sides && (x == -1) && (state->left_blocks != Py_None)) { - unsigned char block = getArrayByte3D(state->left_blocks, 15, state->y, state->z); - if (!is_transparent(block)) { - /* the same thing but for adjacent chunks, this solves an - ugly black doted line between chunks in night rendermode. - This wouldn't be necessary if the textures were truly - tessellate-able */ - return; - } - } else if (self->skip_sides && (y == 16) && (state->right_blocks != Py_None)) { - unsigned char block = getArrayByte3D(state->right_blocks, state->x, 0, state->z); - if (!is_transparent(block)) { - /* the same thing but for adjacent chunks, this solves an - ugly black doted line between chunks in night rendermode. - This wouldn't be necessary if the textures were truly - tessellate-able */ - return; - } - } + /* check occlusion */ + if (rendermode_lighting_is_face_occluded(state, self->skip_sides, x, y, z)) + return; get_lighting_color(self, state, x, y, z, &r, &g, &b); comp_shade_strength = 1.0 - self->shade_strength; diff --git a/overviewer_core/src/rendermode-smooth-lighting.c b/overviewer_core/src/rendermode-smooth-lighting.c index 2384440..38e500e 100644 --- a/overviewer_core/src/rendermode-smooth-lighting.c +++ b/overviewer_core/src/rendermode-smooth-lighting.c @@ -18,10 +18,144 @@ #include "overviewer.h" #include +/* structure representing one corner of a face (see below) */ +struct SmoothLightingCorner { + /* where this corner shows up on each block texture */ + int imgx, imgy; + + /* the two block offsets that (together) determine the 4 blocks to use */ + int dx1, dy1, dz1; + int dx2, dy2, dz2; +}; + +/* structure for rule table handling lighting */ +struct SmoothLightingFace { + /* offset from current coordinate to the block this face points towards + used for occlusion calculations, and as a base for later */ + int dx, dy, dz; + + /* the points that form the corners of this face */ + struct SmoothLightingCorner corners[4]; +}; + +/* the lighting face rule list! */ +static struct SmoothLightingFace lighting_rules[] = { + /* top */ + {0, 0, 1, { + {0, 6, + -1, 0, 0, + 0, -1, 0}, + {12, 0, + 1, 0, 0, + 0, -1, 0}, + {24, 6, + 1, 0, 0, + 0, 1, 0}, + {12, 12, + -1, 0, 0, + 0, 1, 0}, + }}, + /* left */ + {-1, 0, 0, { + {12, 24, + 0, 1, 0, + 0, 0, -1}, + {0, 18, + 0, -1, 0, + 0, 0, -1}, + {0, 6, + 0, -1, 0, + 0, 0, 1}, + {12, 12, + 0, 1, 0, + 0, 0, 1}, + }}, + /* right */ + {0, 1, 0, { + {12, 12, + -1, 0, 0, + 0, 0, 1}, + {12, 24, + -1, 0, 0, + 0, 0, -1}, + {24, 18, + 1, 0, 0, + 0, 0, -1}, + {24, 6, + 1, 0, 0, + 0, 0, 1}, + }}, +}; + +/* helpers for indexing the rule list */ +enum +{ + FACE_TOP = 0, + FACE_LEFT = 1, + FACE_RIGHT = 2, +}; + +static void +do_shading_with_rule(RenderModeSmoothLighting *self, RenderState *state, struct SmoothLightingFace face) { + int i; + RenderModeLighting *lighting = (RenderModeLighting *)self; + int x = state->imgx, y = state->imgy; + struct SmoothLightingCorner *pts = face.corners; + unsigned char pts_r[4] = {0, 0, 0, 0}; + unsigned char pts_g[4] = {0, 0, 0, 0}; + unsigned char pts_b[4] = {0, 0, 0, 0}; + int cx = state->x + face.dx; + int cy = state->y + face.dy; + int cz = state->z + face.dz; + + /* first, check for occlusion if the block is in the local chunk */ + if (rendermode_lighting_is_face_occluded(state, 0, cx, cy, cz)) + return; + + /* calculate the lighting colors for each point */ + for (i = 0; i < 4; i++) + { + unsigned char r, g, b; + unsigned int rgather = 0, ggather = 0, bgather = 0; + + get_lighting_color(lighting, state, cx, cy, cz, + &r, &g, &b); + rgather += r; ggather += g; bgather += b; + + get_lighting_color(lighting, state, + cx+pts[i].dx1, cy+pts[i].dy1, cz+pts[i].dz1, + &r, &g, &b); + rgather += r; ggather += g; bgather += b; + + get_lighting_color(lighting, state, + cx+pts[i].dx2, cy+pts[i].dy2, cz+pts[i].dz2, + &r, &g, &b); + rgather += r; ggather += g; bgather += b; + + /* FIXME special far corner handling */ + get_lighting_color(lighting, state, + cx+pts[i].dx1+pts[i].dx2, cy+pts[i].dy1+pts[i].dy2, cz+pts[i].dz1+pts[i].dz2, + &r, &g, &b); + rgather += r; ggather += g; bgather += b; + + pts_r[i] = rgather / 4; + pts_g[i] = ggather / 4; + pts_b[i] = bgather / 4; + } + + /* draw the face */ + draw_triangle(state->img, 1, + x+pts[0].imgx, y+pts[0].imgy, pts_r[0], pts_g[0], pts_b[0], + x+pts[1].imgx, y+pts[1].imgy, pts_r[1], pts_g[1], pts_b[1], + x+pts[2].imgx, y+pts[2].imgy, pts_r[2], pts_g[2], pts_b[2]); + draw_triangle(state->img, 0, + x+pts[0].imgx, y+pts[0].imgy, pts_r[0], pts_g[0], pts_b[0], + x+pts[2].imgx, y+pts[2].imgy, pts_r[2], pts_g[2], pts_b[2], + x+pts[3].imgx, y+pts[3].imgy, pts_r[3], pts_g[3], pts_b[3]); +} + static int rendermode_smooth_lighting_start(void *data, RenderState *state, PyObject *options) { - RenderModeNight* self; - /* first, chain up */ int ret = rendermode_lighting.start(data, state, options); if (ret != 0) @@ -50,9 +184,10 @@ rendermode_smooth_lighting_hidden(void *data, RenderState *state, int x, int y, static void rendermode_smooth_lighting_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObject *mask_light) { - int x = state->imgx, y = state->imgy; + RenderModeSmoothLighting *self = (RenderModeSmoothLighting *)data; - if (is_transparent(state->block)) + /* special case for leaves -- these are also smooth-lit! */ + if (state->block != 18 && is_transparent(state->block)) { /* transparent blocks are rendered as usual, with flat lighting */ rendermode_lighting.draw(data, state, src, mask, mask_light); @@ -65,35 +200,9 @@ rendermode_smooth_lighting_draw(void *data, RenderState *state, PyObject *src, P * lighting mode draws */ rendermode_normal.draw(data, state, src, mask, mask_light); - /* draw a triangle on top of each block */ - draw_triangle(state->img, - x+12, y, 255, 0, 0, - x+24, y+6, 0, 255, 0, - x, y+6, 0, 0, 255); - draw_triangle(state->img, - x+24, y+6, 255, 0, 0, - x, y+6, 0, 255, 0, - x+12, y+12, 0, 0, 255); - - /* left side... */ - draw_triangle(state->img, - x, y+6, 255, 0, 0, - x+12, y+12, 0, 255, 0, - x+12, y+24, 0, 0, 255); - draw_triangle(state->img, - x+12, y+24, 255, 0, 0, - x, y+6, 0, 255, 0, - x, y+18, 0, 0, 255); - - /* right side... */ - draw_triangle(state->img, - x+24, y+6, 255, 0, 0, - x+12, y+12, 0, 255, 0, - x+12, y+24, 0, 0, 255); - draw_triangle(state->img, - x+12, y+24, 255, 0, 0, - x+24, y+6, 0, 255, 0, - x+24, y+18, 0, 0, 255); + do_shading_with_rule(self, state, lighting_rules[FACE_TOP]); + do_shading_with_rule(self, state, lighting_rules[FACE_LEFT]); + do_shading_with_rule(self, state, lighting_rules[FACE_RIGHT]); } RenderModeInterface rendermode_smooth_lighting = { diff --git a/overviewer_core/src/rendermodes.h b/overviewer_core/src/rendermodes.h index 25d774e..a7aa47f 100644 --- a/overviewer_core/src/rendermodes.h +++ b/overviewer_core/src/rendermodes.h @@ -183,6 +183,14 @@ typedef struct { } RenderModeLighting; extern RenderModeInterface rendermode_lighting; +/* exposed so it can be used in other per-face occlusion checks */ +int rendermode_lighting_is_face_occluded(RenderState *state, int skip_sides, int x, int y, int z); + +/* exposed so sub-modes can look at colors directly */ +void get_lighting_color(RenderModeLighting *self, RenderState *state, + int x, int y, int z, + unsigned char *r, unsigned char *g, unsigned char *b); + /* NIGHT */ typedef struct { /* inherits from lighting */ From 0fa734d0c5f79a23894667a79c19c406859992f8 Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Mon, 17 Oct 2011 10:09:59 -0400 Subject: [PATCH 05/27] fixed smooth lighting errors on chunk boundaries --- overviewer_core/src/rendermode-lighting.c | 20 +++++++++++++++++++- overviewer_core/src/rendermodes.h | 2 ++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/overviewer_core/src/rendermode-lighting.c b/overviewer_core/src/rendermode-lighting.c index e4a9254..925b7d6 100644 --- a/overviewer_core/src/rendermode-lighting.c +++ b/overviewer_core/src/rendermode-lighting.c @@ -164,7 +164,7 @@ get_lighting_color(RenderModeLighting *self, RenderState *state, unsigned char block, skylevel, blocklevel; /* find out what chunk we're in, and translate accordingly */ - if (x >= 0 && y < 16) { + if (x >= 0 && x < 16 && y >= 0 && y < 16) { blocks = state->blocks; skylight = self->skylight; blocklight = self->blocklight; @@ -178,6 +178,16 @@ get_lighting_color(RenderModeLighting *self, RenderState *state, blocks = state->right_blocks; skylight = self->right_skylight; blocklight = self->right_blocklight; + } else if (y < 0) { + local_y += 16; + blocks = state->up_left_blocks; + skylight = self->up_left_skylight; + blocklight = self->up_left_blocklight; + } else if (x >= 16) { + local_x -= 16; + blocks = state->up_right_blocks; + skylight = self->up_right_skylight; + blocklight = self->up_right_blocklight; } /* make sure we have correctly-ranged coordinates */ @@ -325,6 +335,10 @@ rendermode_lighting_start(void *data, RenderState *state, PyObject *options) { self->left_blocklight = PyObject_GetAttrString(state->self, "left_blocklight"); self->right_skylight = PyObject_GetAttrString(state->self, "right_skylight"); self->right_blocklight = PyObject_GetAttrString(state->self, "right_blocklight"); + self->up_left_skylight = PyObject_GetAttrString(state->self, "up_left_skylight"); + self->up_left_blocklight = PyObject_GetAttrString(state->self, "up_left_blocklight"); + self->up_right_skylight = PyObject_GetAttrString(state->self, "up_right_skylight"); + self->up_right_blocklight = PyObject_GetAttrString(state->self, "up_right_blocklight"); self->calculate_light_color = calculate_light_color; @@ -356,6 +370,10 @@ rendermode_lighting_finish(void *data, RenderState *state) { Py_DECREF(self->left_blocklight); Py_DECREF(self->right_skylight); Py_DECREF(self->right_blocklight); + Py_DECREF(self->up_left_skylight); + Py_DECREF(self->up_left_blocklight); + Py_DECREF(self->up_right_skylight); + Py_DECREF(self->up_right_blocklight); /* now chain up */ rendermode_normal.finish(data, state); diff --git a/overviewer_core/src/rendermodes.h b/overviewer_core/src/rendermodes.h index a7aa47f..ca9a390 100644 --- a/overviewer_core/src/rendermodes.h +++ b/overviewer_core/src/rendermodes.h @@ -165,6 +165,8 @@ typedef struct { PyObject *skylight, *blocklight; PyObject *left_skylight, *left_blocklight; PyObject *right_skylight, *right_blocklight; + PyObject *up_left_skylight, *up_left_blocklight; + PyObject *up_right_skylight, *up_right_blocklight; /* light color image, loaded if color_light is True */ PyObject *lightcolor; From 4bddf2c78af096196a7f594f578ffabf928739ab Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Tue, 18 Oct 2011 09:56:01 -0400 Subject: [PATCH 06/27] fixed top smooth lighting tesselation error --- overviewer_core/src/composite.c | 32 ++++++++++++++- overviewer_core/src/overviewer.h | 3 +- .../src/rendermode-smooth-lighting.c | 39 ++++++++++++++++--- 3 files changed, 67 insertions(+), 7 deletions(-) diff --git a/overviewer_core/src/composite.c b/overviewer_core/src/composite.c index 271f558..2a25706 100644 --- a/overviewer_core/src/composite.c +++ b/overviewer_core/src/composite.c @@ -375,7 +375,9 @@ draw_triangle(PyObject *dest, int inclusive, int x1, int y1, unsigned char r1, unsigned char g1, unsigned char b1, int x2, int y2, - unsigned char r2, unsigned char g2, unsigned char b2) { + unsigned char r2, unsigned char g2, unsigned char b2, + int tux, int tuy, int *touchups, unsigned int num_touchups) { + /* destination image */ Imaging imDest; /* ranges of pixels that are affected */ @@ -452,5 +454,33 @@ draw_triangle(PyObject *dest, int inclusive, } } + while (num_touchups > 0) { + float alpha, beta, gamma; + unsigned int r, g, b; + UINT8 *out; + + x = touchups[0] + tux; + y = touchups[1] + tuy; + touchups += 2; + num_touchups--; + + if (x < 0 || x >= imDest->xsize || y < 0 || y >= imDest->ysize) + continue; + + out = (UINT8 *)imDest->image[y] + x * 4; + + alpha = alpha_norm * ((a12 * x) + (b12 * y) + c12); + beta = beta_norm * ((a20 * x) + (b20 * y) + c20); + gamma = gamma_norm * ((a01 * x) + (b01 * y) + c01); + + r = alpha * r0 + beta * r1 + gamma * r2; + g = alpha * g0 + beta * g1 + gamma * g2; + b = alpha * b0 + beta * b1 + gamma * b2; + + *out = MULDIV255(*out, r, tmp); out++; + *out = MULDIV255(*out, g, tmp); out++; + *out = MULDIV255(*out, b, tmp); out++; + } + return dest; } diff --git a/overviewer_core/src/overviewer.h b/overviewer_core/src/overviewer.h index f08ecf6..8d10d81 100644 --- a/overviewer_core/src/overviewer.h +++ b/overviewer_core/src/overviewer.h @@ -57,7 +57,8 @@ PyObject *draw_triangle(PyObject *dest, int inclusive, int x1, int y1, unsigned char r1, unsigned char g1, unsigned char b1, int x2, int y2, - unsigned char r2, unsigned char g2, unsigned char b2); + unsigned char r2, unsigned char g2, unsigned char b2, + int tux, int tuy, int *touchups, unsigned int num_touchups); /* forward declaration of RenderMode object */ typedef struct _RenderMode RenderMode; diff --git a/overviewer_core/src/rendermode-smooth-lighting.c b/overviewer_core/src/rendermode-smooth-lighting.c index 38e500e..2af427c 100644 --- a/overviewer_core/src/rendermode-smooth-lighting.c +++ b/overviewer_core/src/rendermode-smooth-lighting.c @@ -36,10 +36,32 @@ struct SmoothLightingFace { /* the points that form the corners of this face */ struct SmoothLightingCorner corners[4]; + + /* pairs of (x,y) in order, as touch-up points, or NULL for none */ + int *touch_up_points; + unsigned int num_touch_up_points; }; +/* top face touchups, pulled from textures.py (_build_block) */ +static int top_touchups[] = {3, 4, 7, 2, 11, 0}; + /* the lighting face rule list! */ static struct SmoothLightingFace lighting_rules[] = { + /* since this is getting a little insane, here's the general layout: + + {dx, dy, dz, { // direction this face is towards + // now, a list of 4 corners... + {imgx, imgy, // where the corner is on the block image + x1, y1, z1, // two vectors, describing the 4 (!!!) + x2, y2, z2}, // blocks neighboring this corner + // ... + }, + {x, y, x, y}, 2}, // touch-up points, and how many there are (may be NULL) + + // ... + + */ + /* top */ {0, 0, 1, { {0, 6, @@ -54,7 +76,9 @@ static struct SmoothLightingFace lighting_rules[] = { {12, 12, -1, 0, 0, 0, 1, 0}, - }}, + }, + top_touchups, 3}, + /* left */ {-1, 0, 0, { {12, 24, @@ -69,7 +93,9 @@ static struct SmoothLightingFace lighting_rules[] = { {12, 12, 0, 1, 0, 0, 0, 1}, - }}, + }, + NULL, 0}, + /* right */ {0, 1, 0, { {12, 12, @@ -84,7 +110,8 @@ static struct SmoothLightingFace lighting_rules[] = { {24, 6, 1, 0, 0, 0, 0, 1}, - }}, + }, + NULL, 0}, }; /* helpers for indexing the rule list */ @@ -147,11 +174,13 @@ do_shading_with_rule(RenderModeSmoothLighting *self, RenderState *state, struct draw_triangle(state->img, 1, x+pts[0].imgx, y+pts[0].imgy, pts_r[0], pts_g[0], pts_b[0], x+pts[1].imgx, y+pts[1].imgy, pts_r[1], pts_g[1], pts_b[1], - x+pts[2].imgx, y+pts[2].imgy, pts_r[2], pts_g[2], pts_b[2]); + x+pts[2].imgx, y+pts[2].imgy, pts_r[2], pts_g[2], pts_b[2], + x, y, face.touch_up_points, face.num_touch_up_points); draw_triangle(state->img, 0, x+pts[0].imgx, y+pts[0].imgy, pts_r[0], pts_g[0], pts_b[0], x+pts[2].imgx, y+pts[2].imgy, pts_r[2], pts_g[2], pts_b[2], - x+pts[3].imgx, y+pts[3].imgy, pts_r[3], pts_g[3], pts_b[3]); + x+pts[3].imgx, y+pts[3].imgy, pts_r[3], pts_g[3], pts_b[3], + x, y, NULL, 0); } static int From 4fb0dac3fde73a1eb206b0d11e2efa86467fd328 Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Wed, 26 Oct 2011 17:08:35 -0400 Subject: [PATCH 07/27] the position anchor tag now uses rendermode name, not label --- overviewer_core/data/web_assets/overviewer.js | 45 ++++++++++++++----- .../data/web_assets/overviewerConfig.js | 4 ++ overviewer_core/googlemap.py | 1 + 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/overviewer_core/data/web_assets/overviewer.js b/overviewer_core/data/web_assets/overviewer.js index 34fbfe8..eacf957 100644 --- a/overviewer_core/data/web_assets/overviewer.js +++ b/overviewer_core/data/web_assets/overviewer.js @@ -124,7 +124,11 @@ var overviewer = { for (i in overviewerConfig.mapTypes) { var view = overviewerConfig.mapTypes[i]; var imageFormat = view.imgformat ? view.imgformat : 'png'; - mapOptions[view.label] = { + + if (view.shortname == null) + view.shortname = view.label.replace(/\s+/g, ""); + + mapOptions[view.shortname] = { 'getTileUrl': overviewer.gmap.getTileUrlGenerator(view.path, view.base, imageFormat), 'tileSize': new google.maps.Size( @@ -134,19 +138,20 @@ var overviewer = { 'minZoom': overviewerConfig.map.minZoom, 'isPng': imageFormat.toLowerCase() == 'png' } - overviewer.collections.mapTypes[view.label] = new google.maps.ImageMapType( - mapOptions[view.label]); - overviewer.collections.mapTypes[view.label].name = view.label; - overviewer.collections.mapTypes[view.label].alt = 'Minecraft ' + + overviewer.collections.mapTypes[view.shortname] = new google.maps.ImageMapType( + mapOptions[view.shortname]); + overviewer.collections.mapTypes[view.shortname].name = view.label; + overviewer.collections.mapTypes[view.shortname].shortname = view.shortname; + overviewer.collections.mapTypes[view.shortname].alt = 'Minecraft ' + view.label + ' Map'; - overviewer.collections.mapTypes[view.label].projection = + overviewer.collections.mapTypes[view.shortname].projection = new overviewer.classes.MapProjection(); if (view.overlay) { overviewer.collections.overlays.push( - overviewer.collections.mapTypes[view.label]); + overviewer.collections.mapTypes[view.shortname]); } else { overviewer.collections.mapTypeIds.push( - overviewerConfig.CONST.mapDivId + view.label); + overviewerConfig.CONST.mapDivId + view.shortname); } } }, @@ -245,7 +250,7 @@ var overviewer = { // Now attach the coordinate map type to the map's registry for (i in overviewer.collections.mapTypes) { overviewer.map.mapTypes.set(overviewerConfig.CONST.mapDivId + - overviewer.collections.mapTypes[i].name, + overviewer.collections.mapTypes[i].shortname, overviewer.collections.mapTypes[i]); } @@ -479,7 +484,7 @@ var overviewer = { 'getMapTypeBackgroundColor': function(mapTypeId) { for(i in overviewerConfig.mapTypes) { if( overviewerConfig.CONST.mapDivId + - overviewerConfig.mapTypes[i].label == mapTypeId ) { + overviewerConfig.mapTypes[i].shortname == mapTypeId ) { overviewer.util.debug('Found background color for: ' + overviewerConfig.mapTypes[i].bg_color); return overviewerConfig.mapTypes[i].bg_color; @@ -971,6 +976,11 @@ var overviewer = { } }, 'setHash': function(x, y, z, zoom, maptype) { + // remove the div prefix from the maptype (looks better) + if (maptype) + { + maptype = maptype.replace(overviewerConfig.CONST.mapDivId, ""); + } window.location.replace("#/" + Math.floor(x) + "/" + Math.floor(y) + "/" + Math.floor(z) + "/" + zoom + "/" + maptype); }, 'updateHash': function() { @@ -1020,7 +1030,20 @@ var overviewer = { // We can now set the map to use the 'coordinate' map type overviewer.map.setMapTypeId(overviewer.util.getDefaultMapTypeId()); } else { - overviewer.map.setMapTypeId(maptype); + // normalize the map type (this supports old-style, + // 'mcmapLabel' style map types, converts them to 'shortname' + if (maptype.lastIndexOf(overviewerConfig.CONST.mapDivId, 0) === 0) { + maptype = maptype.replace(overviewerConfig.CONST.mapDivId, ""); + for (i in overviewer.collections.mapTypes) { + var type = overviewer.collections.mapTypes[i]; + if (type.name == maptype) { + maptype = type.shortname; + break; + } + } + } + + overviewer.map.setMapTypeId(overviewerConfig.CONST.mapDivId + maptype); } overviewer.map.setCenter(latlngcoords); diff --git a/overviewer_core/data/web_assets/overviewerConfig.js b/overviewer_core/data/web_assets/overviewerConfig.js index e6889b4..5f3122f 100644 --- a/overviewer_core/data/web_assets/overviewerConfig.js +++ b/overviewer_core/data/web_assets/overviewerConfig.js @@ -172,6 +172,10 @@ var overviewerConfig = { * the js/html server. * imgformat : string. File extension used for these tiles. Defaults to png. * overlay : bool. If true, this tile set will be treated like an overlay + * bg_color : string. A #RRGGBB format background color. + * shortname : string. Used in the dynamic anchor link mechanism. If not + * present, label is used instead. + * * Example: * 'mapTypes': [ * {'label': 'Day', 'path': 'lighting/tiles'}, diff --git a/overviewer_core/googlemap.py b/overviewer_core/googlemap.py index b30fa05..abe3e18 100644 --- a/overviewer_core/googlemap.py +++ b/overviewer_core/googlemap.py @@ -139,6 +139,7 @@ class MapGen(object): # create generated map type data, from given quadtrees maptypedata = map(lambda q: {'label' : get_render_mode_label(q.rendermode), + 'shortname' : q.rendermode, 'path' : q.tiledir, 'bg_color': self.bg_color, 'overlay' : 'overlay' in get_render_mode_inheritance(q.rendermode), From 00f06e0499db8f53560af718ef5db2c42a0e7ad7 Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Wed, 26 Oct 2011 21:50:23 -0400 Subject: [PATCH 08/27] last of the obvious smooth-lighting render issues fixed --- overviewer_core/src/rendermode-smooth-lighting.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/overviewer_core/src/rendermode-smooth-lighting.c b/overviewer_core/src/rendermode-smooth-lighting.c index 2af427c..d8f63a9 100644 --- a/overviewer_core/src/rendermode-smooth-lighting.c +++ b/overviewer_core/src/rendermode-smooth-lighting.c @@ -81,9 +81,6 @@ static struct SmoothLightingFace lighting_rules[] = { /* left */ {-1, 0, 0, { - {12, 24, - 0, 1, 0, - 0, 0, -1}, {0, 18, 0, -1, 0, 0, 0, -1}, @@ -93,11 +90,17 @@ static struct SmoothLightingFace lighting_rules[] = { {12, 12, 0, 1, 0, 0, 0, 1}, + {12, 24, + 0, 1, 0, + 0, 0, -1}, }, NULL, 0}, /* right */ {0, 1, 0, { + {24, 6, + 1, 0, 0, + 0, 0, 1}, {12, 12, -1, 0, 0, 0, 0, 1}, @@ -107,9 +110,6 @@ static struct SmoothLightingFace lighting_rules[] = { {24, 18, 1, 0, 0, 0, 0, -1}, - {24, 6, - 1, 0, 0, - 0, 0, 1}, }, NULL, 0}, }; From 85da19b1a024d0cd1e6ccc32c04ee9c46bc654e8 Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Wed, 26 Oct 2011 22:19:27 -0400 Subject: [PATCH 09/27] turned night into a lighting mode option, added 'night' builtin custom mode --- overviewer.py | 20 ++++ overviewer_core/src/rendermode-lighting.c | 50 +++++++++- overviewer_core/src/rendermode-night.c | 106 ---------------------- overviewer_core/src/rendermodes.c | 1 - overviewer_core/src/rendermodes.h | 8 +- setup.py | 2 +- 6 files changed, 70 insertions(+), 117 deletions(-) delete mode 100644 overviewer_core/src/rendermode-night.c diff --git a/overviewer.py b/overviewer.py index 3399424..9e1df17 100755 --- a/overviewer.py +++ b/overviewer.py @@ -87,6 +87,24 @@ from overviewer_core.configParser import ConfigOptionParser from overviewer_core import optimizeimages, world, quadtree from overviewer_core import googlemap, rendernode +# definitions of built-in custom modes +# usually because what used to be a mode became an option +# for example, night mode +builtin_custom_rendermodes = { + 'night' : { + 'parent' : 'lighting', + 'label' : 'Night', + 'description' : 'like "lighting", except at night', + 'options' : {'night' : True} + }, + + 'smooth-night' : { + 'parent' : 'smooth-lighting', + 'label' : 'Smooth Night', + 'description' : 'like "lighting", except smooth and at night', + 'options' : {'night' : True} + }, +} helptext = """ %prog [OPTIONS] """ @@ -145,6 +163,8 @@ def main(): sys.exit(0) # setup c_overviewer rendermode customs / options + for mode in builtin_custom_rendermodes: + c_overviewer.add_custom_render_mode(mode, builtin_custom_rendermodes[mode]) for mode in options.custom_rendermodes: c_overviewer.add_custom_render_mode(mode, options.custom_rendermodes[mode]) for mode in options.rendermode_options: diff --git a/overviewer_core/src/rendermode-lighting.c b/overviewer_core/src/rendermode-lighting.c index 925b7d6..6a984da 100644 --- a/overviewer_core/src/rendermode-lighting.c +++ b/overviewer_core/src/rendermode-lighting.c @@ -51,6 +51,39 @@ calculate_light_color_fancy(void *data, Py_DECREF(color); } +/* figures out the color from a given skylight and blocklight, used in + lighting calculations -- note this is *different* from the one above + (the "skylight - 11" part) +*/ +static void +calculate_light_color_night(void *data, + unsigned char skylight, unsigned char blocklight, + unsigned char *r, unsigned char *g, unsigned char *b) { + unsigned char v = 255 * powf(0.8f, 15.0 - MAX(blocklight, skylight - 11)); + *r = v; + *g = v; + *b = v; +} + +/* fancy night version that uses the colored light texture */ +static void +calculate_light_color_fancy_night(void *data, + unsigned char skylight, unsigned char blocklight, + unsigned char *r, unsigned char *g, unsigned char *b) { + RenderModeLighting *mode = (RenderModeLighting *)(data); + unsigned int index; + PyObject *color; + + index = skylight + blocklight * 16; + color = PySequence_GetItem(mode->lightcolor, index); + + *r = PyInt_AsLong(PyTuple_GET_ITEM(color, 0)); + *g = PyInt_AsLong(PyTuple_GET_ITEM(color, 1)); + *b = PyInt_AsLong(PyTuple_GET_ITEM(color, 2)); + + Py_DECREF(color); +} + /* loads the appropriate light data for the given (possibly non-local) * coordinates, and returns a black_coeff this is exposed, so other (derived) * rendermodes can use it @@ -319,6 +352,10 @@ rendermode_lighting_start(void *data, RenderState *state, PyObject *options) { if (!render_mode_parse_option(options, "shade_strength", "f", &(self->shade_strength))) return 1; + self->night = 0; + if (!render_mode_parse_option(options, "night", "i", &(self->night))) + return 1; + self->color_light = 0; if (!render_mode_parse_option(options, "color_light", "i", &(self->color_light))) return 1; @@ -340,7 +377,11 @@ rendermode_lighting_start(void *data, RenderState *state, PyObject *options) { self->up_right_skylight = PyObject_GetAttrString(state->self, "up_right_skylight"); self->up_right_blocklight = PyObject_GetAttrString(state->self, "up_right_blocklight"); - self->calculate_light_color = calculate_light_color; + if (self->night) { + self->calculate_light_color = calculate_light_color_night; + } else { + self->calculate_light_color = calculate_light_color; + } if (self->color_light) { self->lightcolor = PyObject_CallMethod(state->textures, "loadLightColor", ""); @@ -349,7 +390,11 @@ rendermode_lighting_start(void *data, RenderState *state, PyObject *options) { self->lightcolor = NULL; self->color_light = 0; } else { - self->calculate_light_color = calculate_light_color_fancy; + if (self->night) { + self->calculate_light_color = calculate_light_color_fancy_night; + } else { + self->calculate_light_color = calculate_light_color_fancy; + } } } else { self->lightcolor = NULL; @@ -430,6 +475,7 @@ rendermode_lighting_draw(void *data, RenderState *state, PyObject *src, PyObject const RenderModeOption rendermode_lighting_options[] = { {"shade_strength", "how dark to make the shadows, from 0.0 to 1.0 (default: 1.0)"}, + {"night", "whether to use nighttime skylight settings (default: False)"}, {"color_light", "whether to use colored light (default: False)"}, {NULL, NULL} }; diff --git a/overviewer_core/src/rendermode-night.c b/overviewer_core/src/rendermode-night.c deleted file mode 100644 index d4c1e6c..0000000 --- a/overviewer_core/src/rendermode-night.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * This file is part of the Minecraft Overviewer. - * - * Minecraft Overviewer is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License as published - * by the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Minecraft Overviewer is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General - * Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with the Overviewer. If not, see . - */ - -#include "overviewer.h" -#include - -/* figures out the color from a given skylight and blocklight, used in - lighting calculations -- note this is *different* from the one in - rendermode-lighting.c (the "skylight - 11" part) */ -static void -calculate_light_color(void *data, - unsigned char skylight, unsigned char blocklight, - unsigned char *r, unsigned char *g, unsigned char *b) { - unsigned char v = 255 * powf(0.8f, 15.0 - MAX(blocklight, skylight - 11)); - *r = v; - *g = v; - *b = v; -} - -/* fancy version that uses the colored light texture */ -static void -calculate_light_color_fancy(void *data, - unsigned char skylight, unsigned char blocklight, - unsigned char *r, unsigned char *g, unsigned char *b) { - RenderModeLighting *mode = (RenderModeLighting *)(data); - unsigned int index; - PyObject *color; - - index = skylight + blocklight * 16; - color = PySequence_GetItem(mode->lightcolor, index); - - *r = PyInt_AsLong(PyTuple_GET_ITEM(color, 0)); - *g = PyInt_AsLong(PyTuple_GET_ITEM(color, 1)); - *b = PyInt_AsLong(PyTuple_GET_ITEM(color, 2)); - - Py_DECREF(color); -} - -static int -rendermode_night_start(void *data, RenderState *state, PyObject *options) { - RenderModeNight* self; - - /* first, chain up */ - int ret = rendermode_lighting.start(data, state, options); - if (ret != 0) - return ret; - - /* override the darkness function with our night version! */ - self = (RenderModeNight *)data; - self->parent.calculate_light_color = calculate_light_color; - if (self->parent.color_light) - self->parent.calculate_light_color = calculate_light_color_fancy; - - return 0; -} - -static void -rendermode_night_finish(void *data, RenderState *state) { - /* nothing special to do */ - rendermode_lighting.finish(data, state); -} - -static int -rendermode_night_occluded(void *data, RenderState *state, int x, int y, int z) { - /* no special occlusion here */ - return rendermode_lighting.occluded(data, state, x, y, z); -} - -static int -rendermode_night_hidden(void *data, RenderState *state, int x, int y, int z) { - /* no special hiding here */ - return rendermode_lighting.hidden(data, state, x, y, z); -} - -static void -rendermode_night_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObject *mask_light) { - /* nothing special to do */ - rendermode_lighting.draw(data, state, src, mask, mask_light); -} - -RenderModeInterface rendermode_night = { - "night", "Night", - "like \"lighting\", except at night", - NULL, - &rendermode_lighting, - sizeof(RenderModeNight), - rendermode_night_start, - rendermode_night_finish, - rendermode_night_occluded, - rendermode_night_hidden, - rendermode_night_draw, -}; diff --git a/overviewer_core/src/rendermodes.c b/overviewer_core/src/rendermodes.c index 31acdb7..dd0848f 100644 --- a/overviewer_core/src/rendermodes.c +++ b/overviewer_core/src/rendermodes.c @@ -25,7 +25,6 @@ static RenderModeInterface *render_modes[] = { &rendermode_normal, &rendermode_lighting, - &rendermode_night, &rendermode_smooth_lighting, &rendermode_spawn, &rendermode_cave, diff --git a/overviewer_core/src/rendermodes.h b/overviewer_core/src/rendermodes.h index ca9a390..5084cd8 100644 --- a/overviewer_core/src/rendermodes.h +++ b/overviewer_core/src/rendermodes.h @@ -182,6 +182,7 @@ typedef struct { float shade_strength; int color_light; + int night; } RenderModeLighting; extern RenderModeInterface rendermode_lighting; @@ -193,13 +194,6 @@ void get_lighting_color(RenderModeLighting *self, RenderState *state, int x, int y, int z, unsigned char *r, unsigned char *g, unsigned char *b); -/* NIGHT */ -typedef struct { - /* inherits from lighting */ - RenderModeLighting parent; -} RenderModeNight; -extern RenderModeInterface rendermode_night; - /* SMOOTH LIGHTING */ typedef struct { /* inherits from lighting */ diff --git a/setup.py b/setup.py index a881f9c..7714874 100755 --- a/setup.py +++ b/setup.py @@ -149,7 +149,7 @@ except: # used to figure out what files to compile -render_modes = ['normal', 'overlay', 'lighting', 'night', 'smooth-lighting', 'spawn', 'cave', 'mineral'] +render_modes = ['normal', 'overlay', 'lighting', 'smooth-lighting', 'spawn', 'cave', 'mineral'] c_overviewer_files = ['main.c', 'composite.c', 'iterate.c', 'endian.c', 'rendermodes.c'] c_overviewer_files += map(lambda mode: 'rendermode-%s.c' % (mode,), render_modes) From 03ce98df29c5fcd46693fc18410e013863eeb71b Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Sun, 30 Oct 2011 00:09:57 -0400 Subject: [PATCH 10/27] added stochastic render option for incrementally updating maps --- overviewer.py | 3 ++- overviewer_core/quadtree.py | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/overviewer.py b/overviewer.py index 6992fdc..a5dd794 100755 --- a/overviewer.py +++ b/overviewer.py @@ -124,6 +124,7 @@ def main(): parser.add_option("-z", "--zoom", dest="zoom", helptext="Sets the zoom level manually instead of calculating it. This can be useful if you have outlier chunks that make your world too big. This value will make the highest zoom level contain (2**ZOOM)^2 tiles", action="store", type="int", advanced=True) parser.add_option("--regionlist", dest="regionlist", helptext="A file containing, on each line, a path to a regionlist to update. Instead of scanning the world directory for regions, it will just use this list. Normal caching rules still apply.") parser.add_option("--forcerender", dest="forcerender", helptext="Force re-rendering the entire map (or the given regionlist). Useful for re-rendering without deleting it.", action="store_true") + parser.add_option("--stochastic-render", dest="stochastic_render", helptext="Rerender a non-updated tile randomly, with the given probability (between 0 and 1). Useful for incrementally updating a map with a new mode.", type="float", advanced=True, default=0.0, metavar="PROBABILITY") parser.add_option("--rendermodes", dest="rendermode", helptext="Specifies the render types, separated by ',', ':', or '/'. Use --list-rendermodes to list them all.", type="choice", required=True, default=avail_rendermodes[0], listify=True) parser.add_option("--list-rendermodes", dest="list_rendermodes", action="store_true", helptext="List available render modes and exit.", commandLineOnly=True) parser.add_option("--rendermode-options", dest="rendermode_options", default={}, advanced=True, helptext="Used to specify options for different rendermodes. Only useful in a settings.py file") @@ -345,7 +346,7 @@ dir but you forgot to put quotes around the directory, since it contains spaces. # create the quadtrees # TODO chunklist q = [] - qtree_args = {'depth' : options.zoom, 'imgformat' : imgformat, 'imgquality' : options.imgquality, 'optimizeimg' : optimizeimg, 'bgcolor' : bgcolor, 'forcerender' : options.forcerender} + qtree_args = {'depth' : options.zoom, 'imgformat' : imgformat, 'imgquality' : options.imgquality, 'optimizeimg' : optimizeimg, 'bgcolor' : bgcolor, 'forcerender' : options.forcerender, 'rerender_prob' : options.stochastic_render} for rendermode in options.rendermode: if rendermode == 'normal': qtree = quadtree.QuadtreeGen(w, destdir, rendermode=rendermode, tiledir='tiles', **qtree_args) diff --git a/overviewer_core/quadtree.py b/overviewer_core/quadtree.py index 114fa8b..21f98ce 100644 --- a/overviewer_core/quadtree.py +++ b/overviewer_core/quadtree.py @@ -28,6 +28,7 @@ import cPickle import stat import errno import time +import random from time import gmtime, strftime, sleep from PIL import Image @@ -49,7 +50,7 @@ def iterate_base4(d): return itertools.product(xrange(4), repeat=d) class QuadtreeGen(object): - def __init__(self, worldobj, destdir, bgcolor, depth=None, tiledir=None, forcerender=False, imgformat=None, imgquality=95, optimizeimg=None, rendermode="normal"): + def __init__(self, worldobj, destdir, bgcolor, depth=None, tiledir=None, forcerender=False, rerender_prob=0.0, imgformat=None, imgquality=95, optimizeimg=None, rendermode="normal"): """Generates a quadtree from the world given into the given dest directory @@ -61,6 +62,7 @@ class QuadtreeGen(object): """ assert(imgformat) self.forcerender = forcerender + self.rerender_probability = rerender_prob self.imgformat = imgformat self.imgquality = imgquality self.optimizeimg = optimizeimg @@ -427,7 +429,16 @@ class QuadtreeGen(object): try: needs_rerender = False get_region_mtime = world.get_region_mtime + + # stochastic render check + if random.uniform(0, 1) < self.rerender_probability: + needs_rerender = True + for col, row, chunkx, chunky, regionfile in chunks: + # skip if we already know + if needs_rerender: + break + region, regionMtime = get_region_mtime(regionfile) # don't even check if it's not in the regionlist From 670a458ec1d7fb81c315dca2fb73b4fcbabdfd98 Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Tue, 1 Nov 2011 15:59:03 -0400 Subject: [PATCH 11/27] made sure smooth-lighting honors the shade_strength option --- overviewer_core/src/rendermode-smooth-lighting.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/overviewer_core/src/rendermode-smooth-lighting.c b/overviewer_core/src/rendermode-smooth-lighting.c index d8f63a9..c9412ac 100644 --- a/overviewer_core/src/rendermode-smooth-lighting.c +++ b/overviewer_core/src/rendermode-smooth-lighting.c @@ -128,6 +128,7 @@ do_shading_with_rule(RenderModeSmoothLighting *self, RenderState *state, struct RenderModeLighting *lighting = (RenderModeLighting *)self; int x = state->imgx, y = state->imgy; struct SmoothLightingCorner *pts = face.corners; + float comp_shade_strength = 1.0 - lighting->shade_strength; unsigned char pts_r[4] = {0, 0, 0, 0}; unsigned char pts_g[4] = {0, 0, 0, 0}; unsigned char pts_b[4] = {0, 0, 0, 0}; @@ -165,6 +166,10 @@ do_shading_with_rule(RenderModeSmoothLighting *self, RenderState *state, struct &r, &g, &b); rgather += r; ggather += g; bgather += b; + rgather += (255*4 - rgather) * comp_shade_strength; + ggather += (255*4 - ggather) * comp_shade_strength; + bgather += (255*4 - bgather) * comp_shade_strength; + pts_r[i] = rgather / 4; pts_g[i] = ggather / 4; pts_b[i] = bgather / 4; From 665472814be1c34d8a0d3370c6ef568ae31805e9 Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Tue, 1 Nov 2011 17:09:59 -0400 Subject: [PATCH 12/27] wrote a bit of docs about quadtrees --- docs/design/designdoc.rst | 49 + docs/design/tilerendering/4children.png | Bin 0 -> 157131 bytes docs/design/tilerendering/4children.svg | 15364 ++++++++++++++++++++++ 3 files changed, 15413 insertions(+) create mode 100644 docs/design/tilerendering/4children.png create mode 100644 docs/design/tilerendering/4children.svg diff --git a/docs/design/designdoc.rst b/docs/design/designdoc.rst index 9f716ec..1808d9a 100644 --- a/docs/design/designdoc.rst +++ b/docs/design/designdoc.rst @@ -490,6 +490,55 @@ Quadtrees ========= .. About the tile output +Tiles are rendered and stored in a quadtree on disk. Each node is a tile of the +world, and each node has four children representing a zoomed-in tile of the four +quadrants. + +.. image:: tilerendering/4children.png + :alt: A tile has 4 children, each is a zoomed-in tile of one of the quadrants. + +The tree is generated from the bottom-up. The highest zoom level is rendered +directly from the chunks and the blocks, then four of those rendered tiles are +shrunk and concatenated to get the next zoom level. The tree is built up in this +way until the entire world is compressed down to a single tile. + +We've already seen how tiles can be identified by the column,row range of the +chunks that make up the tile. More precisely, since tiles are always the same +size, the chunk that goes in the tile's 0,0 col,row slot identifies the tile. + +Now, tiles are also identified by their path in the quadtree. For example, +``3/0/0/1/1/2.png`` refers to the tile starting at the base, under the third +quadrant, then the 0th quadrant, then the 0th, and so fourth. + +Quadtree Size +------------- +The size of the quadtree must be known before it's generated, that way the code +knows where to save the images. This is easily calculated from a few +realizations. Each depth in the quadtree doubles the number of tiles in each +dimension, or, quadruples the total tiles. While there is only one tile at level +0, there are four at level 1, 16 at level 2, and 4^n at level n. + +To find how deep the quadtree must be, we look at the size of the world. First +find the maximum and minimum row and column of the chunks. Just looking at +columns, let's say the maximum column is 82 and the minimum column is -136. A +zoom level of 6 will be 2^6 tile across and 2^6 tiles high at the highest level. + +Since horizontally tiles are two chunks wide, multiply 2^6 by 2 to get the total +diameter of this map in chunks: 2*2^6. Is this wide enough for our map? + +It turns out it isn't (2*2^6=128, 136+82=218). A zoom level of 7 is 2^7 tiles +across, or 2*2^7 chunks across. This turns out is wide enough (2*2^7 = 256), +however, Overviewer maps are always centered at point 0,0 in the world. This is +so tiles will always line up no mater how the map may expand in the future. + +So zoom level 7 is *not* enough because, while the chunk diameter is wide +enough, it only extends half that far from the origin. The chunk *radius* is 2^7 +(half the diameter) and 2^7=128 is not wide enough for the minimum column at +absolute position 136. + +So this example requires zoom level 8 (at least in the horizontal direction. +The vertical direction must also be checked). + get_range_by_path ----------------- .. Explain the quadtree.QuadtreeGen._get_range_by_path method diff --git a/docs/design/tilerendering/4children.png b/docs/design/tilerendering/4children.png new file mode 100644 index 0000000000000000000000000000000000000000..b21b74ee76d88787b02f85f5657e83b01f9d400d GIT binary patch literal 157131 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYVBE^V#=yY9=rUm=0|Ns~v6E*A2L}g74M$1` z0|NtRfk$L90|Toq2s7r)TCU2#z#v)T8c`CQpH@mmtT}V z`<;yx1A_vCr;B4q#hf>HE4MrikA434`@Q`S&pf|V{Lbd;+Db32sUj0NCrvPDahc#L z;>xr_;g-@C-7It46>I8tz1;TJ{m4?AQ_W0W5&|qtPCgzAik_-1OD2V^3c9?v^!dv( zm-BD^{`t84-CC~|ai^EJcFBIvUK{exw)CCl{_48)yT5ARmDhg{&sb~7b9l#%7J+)+ z9L7J-e@FC)&tZIUe#^E0-#^zXv?WR$ADx1i(so4jbr62|Ga5 z9Nv*JssUFh{r+jk01C4oinE#bJpZi#3P)~Zu<8oOi&6HUYUG;}CE7mjPn(t?*#?RX ziMGOvGZ>O2Ae>{a$zX|?1EJ<|Kc^mCc&9GgLTQ!ftgnRF4Honr04}s8n-zAxOi-p+n_pov2YttT2aPY%fPtw`2Pm`vK}vUD|o|_xZQEK zn&a}*C5sukST>{@bgSyB2(02*`QS>FaAISalu5)i1j#;&O$@w{AEIMF_qY<(K7P^YUC(Dt}xoV`-sL)0(Fn zHe5>8ntZrW)wkx^^{5OMjuYxK$G9c?)`xdG`Tk$xy2Nzdri)T7lUTw!7C*Yp-;*N-zlZSp~ZVA}3SU}e4(#934Ib}DPE8-5kyvnw9o%?cWMcqy=QHDdUAA6bw zE?6zjT$>fL#Is7udbMWRuNPLiVScwu{wU{2`aQfQcKq3El_jn_-x`|EOWXVIa>fq< z&azc9*{|*TMAls2?ZS1eZPJ@lA{nOFJD4_1YFboMnNT)WBO_3%Ao7jHoOyYVqL@}I zNyvHylGuU(?k4?({2n6+;d+l~sSP z3*wlQHv4saE%*BR*SG%#zF&AdZ};0P|F6wHZ@}}I^&F`D=;78#i=9+9OL(>Eq5xsd zUJe$grT_ufS!XO(Y&ufL@-?h`OKPyxM$HtNqRE~@vC`|g-Jh+V;>EY=b-~SR%xlc-ou@{_l{`QyNTOrMQOBZ=7sb-wB-12t9()1cG%NbIqjjVnty|bzj*J|1Iyt(b= zOtG6iz1fi^hda{!%qJMF+mv&6-m;s#9^bj=&B&i{(I7fkS=U!9S2=(uw=lx$_2S&4 z|Mp61O*?+;W5?1Hi*E-_nXXipf6{2i>5sQw=RcZcdwT`@-~6)fD~dRAv`p|= zIgumh_Pe`mUPl`jMdn^uVe-Nx%Ehrmgh`WSPPnY)|No1oM=7lpWYS5Tc%}Qz_I+K? zw?}@TwB~8~LSg$KaUN=uE9SY2Xj&cmvpG|u?W2Ec-6W~D#F&QVBF10YF0r;({0w~3 zJez4h?_DbwMh&Gy)6^zzk&x4vcW=X_nc)yU>4bZ&qanmgHZQ^dTiR(RfiA}ye`N}E9UWJr` z)xBX4t~0J&c~;YFCCk=r?m^zmzCD|1AAD4Bl0ndv)v>pJ*?sby?q|M4|NVkZf?-lk zrWtG8KNc;&$E2#8u=UYIP0tqfool8fH?pm}_Q2uBmJ_@Vm$nrIE8Z@$oHk3AYbVRj z+*uqirkUznS2Sevy-m%kk-z*jP;Q>@=O3LscimX`zc#k8b1|Cjr0_^JWbbFi4*Q9F zv)U#Xcr2UzBeq|oXU47Vyr-wF(Fx03x7Ino@~YcZmoIWIT(c8DN~|p4+x}bS^~=Pl zZyH*Y-`lo7+o^N<&?cRAJHLLFu_}4t{^y)A&*6%P;G+65(dwD=*x7{r^&E?fX?aV}e#>Et|NX?6 zFU92Qs%55&HGDXNG`pAR269cgU?QzJ`LUEUR(P>i4wwuKTUGuAd&$h6#KQvu#HjBzW@eMW4cxstzecs;ex>R_T zd7iLcgGXmv$AujyS)?3SUu@duzWUyx*R3X}x5gE8E}ks#Wl@j9%4stMzCW%?U)gFl z^-f;PY{!)xTb{8mc3*Qh@AItdd)mzReeAX0Fz2)Z&*2~c&qGQC0Z-q=6G~Z}-`;r{ zDV1N~44;w8s+btQvLV;IPcKwZDQ=SK{u2F5VmCNvNO%WkvxtN?9ju%Fb=mQyi(RK_ z%f8WV`u|OPznj`*m+Z3(Yj^MXy!(4`(m$QAVGXZ72Q(hO`2MWXR^`^G4vOgyOHG#h zg>B4XbeilLX=1H-KYm4!hK0ZZ7tOmDFu|%Co++cBakhyy?m5uii*&HncfpS-n4A!i>G0ZKKO9>Gjoy)8F3pRF-;t{@uN9x8O*<;K(R;-rIUN z{gmb&_|BYj+fC5?>TyP;JdN$TXU{!!-E-jClOX$Px{ldgOKqGVH(PLu?|&`4?RLdm zjtdz}1urc+VyJe-c1m=vl%Loyedj1K&IPyMG8Il$?pl<-mt977<95r#!L70yOMQNT zLR=Bto_owR|!{i$Vt=SGpR>x*LFOj;4iQhG4pVyepYqpL;>vl&M^`^I;(JMQl zF6*RyWFyPZIljABYJ5@u*wpZIvF^4!f5kaFltLoE?s)TQZp`0FvpI!#2i~wLP&++y zsm;}^rdGXX3!f)?cRF2OVHOb`vp90?;~jj;!O1C~Bpnun#LVPSKD)6su;s#zb*&6< zN+yL^N$Lw;o|R&Ca$0S)<;NF=IrmMEbgq1FIuWjiQsy3ly~-#(=%jU}5TPwu$V z;$Cg{=*&$qNAN!$dJ2oz4`C8<$oF`DlVq3`bjeaSuMH*MHUhGLY<(O2=cV|*Q{nGw8x*dvOiZiWc=(!Z=CUEr((-a- zyWcq>$iU`hP$W;_v_s|0hXRZfRVD74o%kL1KdkMS_nxQQ|Jy2YzGOU@yZ^tUgYmYz zth$1yo+;1&&64dMD|NP`cKVW?|9^b{d5(SFqi^?re}CZ-l+X61H}cC)zNcXht0gae znWeM7>PFCqNxFLX zJ6s+ZyyD+{!`8Xn^!&Wq@Xrr6o;R3xULcKm&6)$HsCP^nKOz` zEEjrn#{bi!zrQUul=FKntH>&w;hwI(LT-I<+$>ctCxHad&b=FZ^_X5q&VHE1rsj4+ zq-f2#^$NM%>n|TIlgYX5#O%G*ZpjN)-mlHkuiNIGe>9VI*IT_HjJh*-`KwXTIXnx?4CFW&L+LHCZ*`=>vA(b%^oV9`PU*m~poUrX0t-0yBA z@a*UH{GX9oy=v*=VjEhHcD^)L*(>HB_N;Tsu|AfE3Df!Ozn#}qGwR7LolrN)C2ryy zty!HoVJ;pxyM{?{MK8rG`D6y#r7F#X1D5#WQ zZ&T1QH(7X2%)G}lgVTTRTzkFXy*y>9y`wpMHoVxA(%qM5t<2*O&AHVCL_xR;bk*KW| zH{a=O-<#B{f9HGcD$Ro%ze?|@`mV&TfAjpzpRE6mKYyQ4a3(ct|LHS6>^Z&VOmZ=H z#~yTehfMx4%~fyD)Uc=AKDpixBPRW|&i%E9<@8oPX2-U!t_-jKkYkHhD{HN0+{EO> zwdkYX-EC>dJ^F6v?di(a-#ssRb#-My=7c5EMK8N&U9r~e3z5mY^Pfk)rn_~y=;dPW zlshJWf7TVTdI~)I@HW>aYLb7o&w9Rq%+w#RCTlivXq^__HP>ivSo;P3jY|$}TzhuI z!fNle3UYEB&$nIfJ-U5v{XzXDD%YpqjRu!ii1-ZC$OC(?3StEso!8`O$_? z(fiTm6QBIpxb&CF>=kk^^{nzw?BrXoY44>xNyfXcudo-di594O;N`eg@WRWo8F%JAd-6(0{@>^G8?uXf@~od+ndN;! zxA^8a=09&{$DMz7xBBN1` zF1@v`xU9YI$-#6v_g5^fhjgar+a6$c?@v}WDVg+UZwdSLC!cSu^L=;ZvQPQ6i22-^ z+nm+hC-Lw-)mU2G^OfJI>@G)eG~b0wyDe>QpO3O-*7$QFY3W6FDW#=9p9%lIX=ZZ7 z)Y^Yza#q*Or6N!B>@R0mhGkVMOX@{G{gA2+FM3OGHu6_(!_Y_nI! zY}>)Bvz?iq7VCZZdhFQFMdkjEHrz|hV*)gLRaqupTOgwC{d$GLlH0GowefsKJm>qft4NaI~~_Bhkv@{9RA^xbiT>ywV=@;CGcpFp2Ezj zON1`0bNR8&-7I}^>K&2TINp=fOv==h=1QidX`Zio@X*L>lC8*^w>3ZN_sze)H%mUh z;^)^Vhu?1~_@tqJ?w!)(CqHkjuM=2m`qppy(@#>z&&^vXTNW9w`8lO_*2jg3aq)X5 zPW-31@9PUeIm^F1@;{%}AALDflJCu3Z!6jU*I`kg_P$*1c{Qg^{nMVx?{;N9Jw+$i z-Bp>)DRceVi#rDVb8d7ASnZ2YpO>|+#lih!?zAZ!3ukD5FMdAR^H^8twO5kUvMOuz z7u?MdsIc?O-nCZmZdtoV$AloJ2UcM*b1z6`dK$Ir+;o~2wzl&Wz zj+K1gVWVU=JteoTvzPN(A#dxePgYl_8fgXXt)3@sw1VMf+Qd#7j>hhkCjLd+-5MNT zH|*izkZpXfUH2#U{o`rT`FCyj4jb@1eq;!#%2+m-2?wq(^Hk4O+rDH*{JTXWIrr#X;)8;4UEI(X6|JQk&5}PBQ%U9_A`g5%Qzr_08 z50{EuuB@5r7^%FZxb{xX+au48mL1y4=(zayBjfUWN0MHUX4qR`s)8SU{@16u|yIq<8`drn8$c&TH*fIrj2u>3xf0Vqi?(BLt-oplZW}hctH{b!c z1FB4y2cv90TI$3LEE}=UuFJk>k_%dK4ZP_$Dh`#J(ON8I^w^-O7`|AM~)>8MSIUBY&>Bux1)dO*Ufug ze>E?>t)2I*QCLW@a*cjiLCoxpC++NhzMQ`#n{3l+*qnzUJ4> zubwn1{?AOweYN*_-q*jD{&Cm-Z~cxZ7vw)qn%lj_R{Xe}YS6VbQKm;($IeV%ZnppV z=lttOuCm{@+HSzL)-ik2QJKEi3#Q(C^EbdNx2)Df^YQN0KMc2Ad*WRiv2Dq|xZ7)T zI__=TRp`<2e!pPMqnT=5pDx{c_Gr!7faZH^X5_qEvD$Q3Y^OcTmbos=x;-){ZoKv} zq_1h;e7AyWKSQ`rTWvR8pD58*SU8g*NusTgQR~8wg-%>2&uz^1JQ=-liRgFrFM1dD zE;w`8-QGj#Z9-r|%?B~L+5Z`sq<^R=3+ty9JQrDfu0G-8nfj%f_m6)nYR+AJeWP4h z<$Le=(+>_<1?^&KJhn-7+cpPx1)Y5#uRPuI*Tiwf1feB+TUr%n`URiS`84nP{z?A! zUwGG~F>!VI-~F8$Rs7+}qhJer^|e;QkTeU@9dCir(byF z>TMP}Us-d(L(yFNMyT4A$p?uYgl8I>{ zPT40Xox9{|!Be)W=j9RCN_o(*w*3i6NB_iL{_m`_f<{*F`Ro<`atF7wp9;G zG_TK7m|p&|rqzFH*}Jl$pFB%b7Gi6oUhhe4`1nb?@xUuy*^r4&*}b}t=dPd9R~_P#e{<@ESugfHzZm6g z)bEqRcyo8)#FV*Z-x>YF_jMlUnR`uXdhh!*uO8v2ZFOJrl|Z#Z6SU0|%F!v+wIwz9 zqjT3?7OPqbp)QY>5HaQsm7UE@*^w6_E?v2<#MLZ!yI8p59ec#*{hhLNmWjwNI%prD z^VB1Kd(hT*%NOQ7mA-%foNxQJAAg+L1HFXZn66KpeR-F8S;MO;Gp^3rdIlS~=tw)58Th{zh7H~)kFr0U?c*B3Iv|akHZRuy; zf%-1zg&}Q|15+m*TG1M_>7?h$pta3QRUEmwoXt+Q@Ct?XYc)+<7UD6PE2iyh8CR!F zdb8BgC$ld^yjXBb?EUqFK@+CDk-2r;`u+psOWQp}wCX-i?f-DVc(P4l8OvJ7%&WH( zy_A=vY>Q!W&^&r`xxewo?5?7%N1x06u(qo`9)3Y8DAIA)k{`#I`#KEl%4fAOUoF^8sjsDHR6C!H&IY2%C=n|qITsXSz#DC8z&*HENg7dwS%N!ql*3*Vpi^lNE9ioA|1A`L_1!FDJb{t=O_) zSJ=|q8H+>ow{kdIO?S*}z5XhvZDy}pu{W2F=Xy6M{hA}S3Wv@rPX5U~&%W{4_3#hV zYPTz-cBq$a&bfagIG0^f#Z&!w{{MH&cfMK{z2oOC#-Nof>1lqOH*7g@Re#?xljYKF ziGMg|&fn0MC?P)K8YkNqhOaC9j%}5ERn9r9$>mVe!fQvooQh)?nl9OF#$J}2ni^`b zw_sM*b+rf4JYVDcwKsPx*t%2r@{?<)ClK?LK&f&TUBsnwZmiT4lB+gGTzoXz8jkxDS`thmRH9|0#Z(*`UfBF(Q>^b?X;&ge-r=1C5>?j*6RanogHR9 zy^?FO$XQv&O-PZ|!YHBa8+XZPRlk~tasNJb_ZQvuZvSyfeE+dOk96k$e34#xQZ#%P zS7)NcvHlKlg)APxG1=vy*rn#_6E;k{_|Nl@iiYLErLB>EYt96O3-(P>F%ICqwxcRV z-~YkK7k3VG)Xr!*VPNvXXv@=MyG>ShY)*IovDaU1#tqw6@mqW2+KVUaik;WFu;R+2 zr-9R4CEQkcO!QFI;1Qj9=i>RR?9(hi^*pMz|G7EDYH^Ny=A{hRnqTiCkDN&KI>~tL zRB6^$$!+~RWA>GH=3H{m{J_+nbL#Lk-z69R9DFN0MLcXm&;zyDHn-e;h5zf-CQcLK zwiIhJQr;@GEqP;h1@BUoX)X5q{;uBh;?mqVw~WqRTs;3_dfraKrC-wGDvmY=+nCv& zI=oy>v-gX0zIOcSO)J)g1O&E-?7h3G>MO7Bor8j}cD%I9`*wfE@4~!GJK0<=Fq&V^ zo@2k=<@KFQTW2tQdoKSZrB;7x20O#~Isa4~OU&PjToJQ#T)y(>JLgGf#BS`Wp5b5f z(!b(;`@O@r?-xkFum8UPp3II6iMGT)1>pJCLdMwVVpF6J3JGKhbpA-X<|M2rA-Au+ z>PuvS$z6q%ostFLf5~Xiy&O|_Rb<+C`2rzTCEi8BY@)}kGfvcdrNPz$XgaRYaY}u7 zOX=RtZQGB&y_tNuEzZ=F7JLFH~iTh5}hA9wPY zsqgsPUGF22m6gP|*3@6_XY9KB-`(7}s|#di-~1}`zaT~2$)!hBn&-)^DQ%xpHhCKD zWC?#eFZuQZDf{}@?-!KXyt%MVw{MPx+s-KE$zGqY-`~-$f2UgiYSDCk*?sMKqW8YG zNoQ=kz31=!zjE{c+>Kv6;j}=@q?uQ9^j$bwE@dz_KX&Hn;XPuj?|9Cb=J3gIu;nUfWgI>-S{*&&_%8tGV5xCaLG9 z>Fg=DAE;VuomnFqxh^$wR^*b%+#^%Dy^mSP9lf8ZUzj1VcWp=Y!sNw9N=sd|TLpxc ziYC@_zFan8rIM3}iO}hyz`g75b{NiGv7=JSdu3@^`n@g(K{mVZb8BY2{P}oEkeHv7 zP>JZvo+Yc5X1!Ib|IyiB`0UHyKeOZiFn@c0cYo!#`O%r6l^g#)9@)880MsLrQ#=yS zEPo+N-}e6TBE|O==iU9y_I{L=>V5b3S?%MZ;LN={n}hQwus;81bKQk+!^JBKM~}69 z_%SakJLsm#&ZNGyrH#*7TlUG@Pk$52XjX6Y`fS#LW7oAFNlH5%5r4MyW1`o!>6L$u zh+9@IV%z5A;aDZ{DY4J|-;eZ_TaEYrj^=RU%ZYr_wRW@1M75qrvMX|KyLo9`pT+a# zY3HJj{d-^6+5P+;uWl-NahB+mH8!gQr~dQocC>fiturIr^yD*@rGe8A1nbPj|Gyo+VRq;9m9lp`l6B|3-T3j+$@KUmtM3^csyM#p^FO7T?CQ;zW^LHVVs&Vm z(LG)7h=`qmx32boym8Tb$In;umn80OzSn)TTJ|x!h|{DkQ7scw>OTtZD}A+oM&!(+ z`A%6r$=RK^#m|cu&gNUK%U|y)f@k!RS$?B|OZiX6dD}SdRa?SY3=yz(lt@a6@ zj5Tc!=H~B^d^-Q3_4mKJtGRRY{(qYP@o)S7Q}sW4@2k(8yC_2H$-Kk&pG4o^JALhL zw|bL&pTh<{;tY`1-V$*+vssHv^#$j|n@oGoI=MG~Q@+o;uvdF#wF+dc6==Bi<567b z($L=WhF4XLcip5jPd*o6{qpQ_zK{0ys{TqniOfCQ+HcoSke99zt^ax;ygO)OTZxUnH#h^P~2@Q@@`7WAkTAdClqfF6wYu zZr$st`wwjU=&7RU6}@An$jXvQ76Nl-r|kP!Xk%-;C^C10$=)52p8SiRnCRVofFq| zU12g!fTOam{>09!!BN^vUhw{UZF}z6{oI&>{5Nt_Jyd7h+HRWXbA49XUf0~UPP^~D z%RRZe^H9g<`n>!vT^YPP|JmFw6L~3Kf2i}OR@3XCcF8%*%nD*>cPrRmN&Ql3N)_cG2 z)gPAamvzbZ6wy@D-I4TK=WO5Uti=bOF4e!(>r|FIUumk3($WL`wU;=%*W2!zee>(T zd*%h}ZZSV^>JVs}+%Ky>_4I|zZ6E*cP}&sro6n2&j83hXtk*HN{KVHcq#s@Pxz*vq zm#8k_ls9jEaqr8*vneK(Jn>5?Gg&qv09_Y(&DwT zI=?UK_~Y~SpYK1s!70Q!{k(mJP-tjTo>+G~fQK2%26_boJ}WME!e;NGl@KOa86Q-1ha&{mD0 zHD~lLYFuaJILv1H`u3S~cRd~bo2<`#ySSZsmfLflsplkf)DIu|G21-;ac|ql;@w$C z7xOHg(9^yC)813@7p5{!y*w+#e#@y@7q0(sY~fOzxRGOb*XlUCbGzgIMV0mB9^Gh~ zxMZVl=LE6STXl{<^S<)R?q|u7euHOkU z*5_9~ty?1E!MK`RJB8a!!DHFvkFW1k_b%2@;&IZseP~;5OUHIbx!Y#vI-`U|LWIkM zCVw|D*x8&|$EADcZ1~QbcBemGy8dCYSmKqmtXFe6WdAul_4*=qXs*TAb{pNANz8Ju zmmhquv1D-|$F}#U3Vwx1>vwh3v|eVv{Ix;-T->pDy17=d{VA7RqdxBBb3W^2>A!e( z^3tUiTbFT6eUfXx#(YVl#4&D2cj!NNA;(P)x#xAw>q`F2exGhFZujWCncW4Jz^RAb z>t)xngvbAtc5ys%@$r1sOQw7BrXMV9m%jJcu`4G zomZ>RUCOZE_IiWK<{xXmdVlqr>$cP{wPwPjgo!b$j^3%t{LJ*{VEUvvkuM*Ivik+< zJgfY;(0jxFpQ86Zw@v>vEquSwg(;V6{~V9sKbL>sYuPuqD^0t-??2Pu|Ht%?MoO(| zO4&X)k<7fGQ~4K8O;GKTdbvuudFAX4 zva=034m(s9$}(DbPJdL;dC8$GOnE`%`w1S)Pdw4tB4#pcvr4dQ&P=7r=P#@dqxa_jbSDweE&wejZKW&ysbr-VzQ zidCYT{@IGTB#SJ1{bF{Nrf*@(!jIMyzltUP7l^F3cYe5fWvEa{wBpsUdGBrQ9Jfw& zW}e2{7g@{`)!`R&CO58$_{L1e>6A#X2nCcx{^TvQt5qCc4NE=w zGUB#mo9FL*SrwL*pRjO}V~5JZt_erPw>xn>n`i00{N}xyu(gVF{U@JWx+CYck@mwp zrQC(3Hu8@@t*rdkr#spEr^~AHhwDtOE^&AZv?zLBe|qjXpKzJ;7P-`_eQpak97sOi zw^1ylaJE_cw3=hTy4RG4UEG$C;@if1LL5Vyhmi)SeUi+v%D%tD3_zci!r%zk$nU@AuwTt;*co ze&VI}1($|bp;L841jWpvSQae2XxXYRK4VrD>(YIOLNA}BJBD*iG|7>3n`ymykJHy@1z*@ccb=WQ@{#SPC8>#)W{%hUtBsc&dHutt^v(Im zwRQbv)l-je+VK5VV3@UgfsDxPB_eQd@t!EP186=nKdFiHz-yv5IN3H3OUMCmDt6Vyl_P9EJ*TIFkpBY@d zlw9tddFS3$qU3n|d&TwoU-N4o+1E8l>)E;pwETJH{%^+P<F2 zl4Zn#{5!5*7GEPo_pdAb?NGsfg2zL}Kk;qrubcx1QaG1hskE-n-BZmRw<25Ir>!-`_Z=Za6Q7H$@Y~%Pxsl|#;tU6cUDL?JI^l@57iQnd+pL*Ke z{hueDwm)*>TH+#yc@cCRB-}g`6+-ei$ zymxX^vcdSv3=%^$eZ-s@JO z$1Sm2m)3;ZhA>RKGUXRLXYP%Q-x)8xGgz2a{N~N^n`XblCcQIYUd%k@7@PU>{pC@) zTBlR*gv@egfA@Uja{h@W*DIcU+^;(Gu9xBWW%9Qy#W>_@--KsuU3Sy%pD~X}TuW~1 zghNSN%Vq?Fd4K0?u^mq)&42V@ z>Gp*s9d9ibJlwzUzfdrvAmlz)>bELHd-+TzUPx(UImEP5bz4!a(pFGQ%qnHtHny2J0VtQj| zYLkE6kH0L9{kfigy5Be7I`Jq%YOQEo#^#8#!I`P%(|aQ?Et;|NgK)U4dWb-qV4_4~ zMgR7mL_D{R`=xoNr z%Yx+_xBMz~VVYFgc|mO9rWI3nr<6=A%5KeL_G;Dq)gAtLyX~}7-zS`YqcHvE$tNFH zpA<3T@#9;3s3X|jZ^GNt6VENx?Bx-x$c-xPe>&6EWgGu(&+ln#j_7y`{a|$RQc|6u zbnjBc7cK3XId{&y`z_eG-eSJMr2P8dVnLDI>vI)#+dm!*7hEZpTRZ73^M0R8dO>;h zGKzhM(JvR&aMTpEE6*yPwQr;1tgE4irYUeae|uYNJpJ9?DX-UA97r}!u6gqJw=Zbx zNCn?!me)6R9t5ua8a@9#vtf_;uKIVP6V7%=EIs+{soC}K^Y1e!c{XPM6xkdb_Bv8- z{>`SzB@%M-3-Z<)82{zidP)4Fw%yT3TQy$qKGE25P3XyX&OM=x1*S_29XAVJjABmY zT(UOM>%n!?nU39WZ>DPS ziAOucCReMiyv{u9?T%B*OBH5sz8Dqw-XbOUtoOI81#>#o&rjKq>$p(Ab4yOxwA(HF z4sAN}|M z&GpYWKATze?ak)&c_07Hd0)O(f1B<{o7%j&Z43AAo$Zu5>&vEwKNA}+C*NO|+j`XD zi}Q{pGj-oRIx#cWCFkI$gCe|3Eedxvg^O(|-x_e@>?FCCKY`8JG0*K)bAw9t zx~n-~>u}qhgy4e+5^C&X3rxCfA#oDy_lu`M2Ut<&4vA7R4L< zlyU?0C5*C7uS%})bNFvHd*{lAQ!Ei?8mTWLu6b^?>5ezz;k$RNYu)yZiLtZ1ln>=- z_FWQd6iYA(;?P-bdE&k8b^Am1wpH@??|iQn5}o}t%ha!EhKo_>{TWXZ{spE@N)_N* zxX9&CV%3kxPuIeNvX~9o&gHxQIl~t(u6H#4#=IL&FCR4Nc0S#C@*_9*7uVvI`)tn^ zzE1wp$`HKmMSpFJPti-(@YoBNZaVD^TOPFLg87yEJoQnRS6nTO5jTIdfal3GsfL4_ zRBx{7Ry8$WYw1;A&B*h^>%&xcv!Kr^+jKYT&R)5atJUf89V`BmPoC^O^O?WG(sk{< z16`6IWHMYLt$#$btU6bcr~TNNzgf^i@ZhA-KqX%GPh#oaqCKlMpNi%(n|)r)cuOL# z`mB~*{VR!&9#a2|( z`D-v-a z=b4$jIX)R%P6GF6|)!K9SCjXb;=JEKYjlzaj zm+Z55G7db-Xo?lytn#?bxFm9c?TffnK_Aa~HboOEwlAqz_UZl4)skGTPXEtyF?(o; zaK#=vv~~-Z$Z|dzcMiu@roOv$y=_DnNA!Q($!<2e%dFz@G3O(9rT+go@%KrV>za-P z*Z8)BH~CT)O<(iHBGJz%bLvWNd1ao$mj(f6jpQ^HbPrEjYB=TMi34i$%(kp6&E%LL zdRTtJ(KX92S2k2^J;15$XBe)iy6i<>P4}TQ*^+_VH?GhvC~! zA3r32QHyUs)bM=qltYDco+*6~u@8R{=TqAB^HjM;bpAo5E~8&D1qNq3pFX;|ka?D( z57$MTbj9=R9j)6h$kQx38?yFe+%=$F@~M_LCK=u3S0aYn$sedB}t9X5YY zuZh!}c_w>H-nS#3iVh8`=g-~{IGg!uYSfcI=ijbtms`5o^z`0-o1+g-?SFFMAiIQg z^`x9@%3`lmi(b`5ZIb?Y#4jy<6$fW7v)Ize-fV4~l^Yk$iYjDVJX>*9_C{xuWCxFP z=bj1*F|9nI$DBWXfnM#RX}*C!8x|O)zlf4Q$H>|0w9uOq68ue$Nu2ZjHnXe7d^(pJ zk=L?BPSvb_)|W@6J)*llPCb02$2~u~d0mKhencU!dztLQt2_&%HfLCSDbGwP+}Wyn zOI_S2D97ir(zJ&v!CyG~4}YB-acYt8_ep)}lB?wtFKJHXin%ng`O9fx6B&b*Jle1B zFS+BPbk=0*o205>^}wn5ACFuUE7DoIF74&UZx6$lzl?}UbF-2teW&(+(X{Bbv%5FB zE}G7_+~?SBx5dvUZNDZg@xA5*19z^?k`3q9w?->xnr;6lBpqfoWmVUX=;bl}w!!g+XWuW};^Ni3 zUgfoz|H3H?9{&8Ze*bTA9nFrVI%V=z(%#c@7p_kh+w zX&9hBGi>r3&1WmaMLbU*>*aVeWyy@shD^u&tG1LK&zxejYMxT&?TAe0ZBoj6&n#Ht z$o7Eer^ym0jYhsh?^XwBi0qnT(9q(v@Pg`=!j8ng#=HcBFDu_}Sz^91v3OehzOO2O z_b!jvoo5{PQ>UHZr%-FwgHKPh1MV{JTx|GindJvR1_|d08SfTNHMx7lYx9*9nbV~Q zOCz7AWk@uNJE+V|nR(l(K2bze*5Rh!)mFxGzd3EQ5172VvPUl_bK>{p2hTS)2L>Hg z@2u`xq$zM@_l@c+4-frY*?Qok%&`S?S+->tB#GX7Zg+mljaWg#yU{noh8|9#(8;gp4nz6EQe+JhG_?oa4kyJ-1ew|RE| z*iX!G3QSv<7jg4ML6M&SCjCP{?)<&-+E_=rf`9YTwLYTn7ru~PwEpYYHBsB9neTaK zt&{osXrau$pI5Y2&2v86eeuJo8)Y($4jzr`bF@l3k32s3*Ez@5qQk)ZM%n-62FKJM zdEN2|c&|Nq-Jx4wd{2Bc^E%4>q$zMtPFH7Et8w~2F5xGdF2_!Oi+sWr+QYBj7n1q9 z;}NUf*Q|#70#}se{$|H+2{TTk}$GNkQbDzhPF!*M%|# zw-j=Bv)i<>XYp*)Pb$&#v!?4S7u#sk7S-dkaeF ztiBnimZHA>-mm9#EdN-x{a(!C${(sNAS!z!Oeoi6W(K?Rad*vmb02>^B{}6%$+o2v zrunXXa`~FvVkK#dON(ZF_t+jWrJF0U(MXEhF(K1x`i%&$q@R<#t|Wi{boxd1%O}^i z&Yr3Ftm4TDxqZ8zZxpXt>%1`Fh5ckmfw0trd&>VgE*}rG@Ko%Zz%bF{^VP!Nckb~0 zVAKsd@0|U2&++{;-v740vQb>Zy3K=A=%P^b)%sK&i?f=R{F~~|HebRZ;^`Sb!0Qm6O?w|VOyUC1!$a8a@kaeegj+(Y)W#a-UcM^AiS8{?&U z>Z#Gkia(K})8$V{Y!P)_GX2u|pkJ*E0`1ODJbL-e)&7T}Ja79JnVKEB>DA|z*fJwo zIa+kl<>Ry1t_n!pzp%;cL8wT3+1+M=fR(m~@@qd7&zX^zy68fefB;LI@#fqcWyOZO z^Zv?jNf%94?Nnvm_O<4E?8eVmiiD=>Ei0>Se)lv#Md`EP7PBqO6DrU12>YMiv}b?w zt;qhn?fwgFoNe?B11IvAO-LLTaz6ovr|32*hTVQ`CKttr0zY-)UnD$OMz<735o8hxR_0u2i$}6_M z(>B8(u+mkddtka@h|gU;qSF)LfRx|=A-t;zHzti|;9X-5S-W?V0>DgUi=w^s7rzgsHV?9YB&>znE`{ZUAEzhUH0buM@L<$F_g z3wO`&dn49!@wxuFf6VbuU+#^6a<2TIv(7EAy=J{4vOPYgH-25Xzv*dIe?^LN==w9u z`QAKme!rtvdGX^CouUpG)*yEY`uX!8u zt9A8tI$bUwj^F>yzAkd#yzOzN!p^dLGjch$C{=V`T?-1gtwQ!!R>!R`a_Y!?aQWDb z@;~nLy*0jMski)4f3ROFS?&Mg^G}29ejMcQ`?1fSN1*%Ytg9^N4}Z2rwybsi$J+ThW~crCfAKH=@W4^7_Di7BL=GpeJ#L>rd)9cQ7@COBm1Yi~=5BFs zW7npvHj!kWE2s8+md#(jG~clP@AZ0L0hTS>w|{=fUq55_`+c)*tG`X~TmJA*Ax~8H zu3ft-?*G1b{KJP2pV<_Xd0L$s-`701&bhs2!D!!lXSjM{j55H^r*fp7d7g<{6pq95e-=^KH zD|`K4`6pfT)9SnejTh`~NU}SyQMJ}t@8>H2#F&Rm6eezUl<*Rsm9qNC+iW(j#95Q? zo#&4gIs1L7z>m0w?3;T&uabX!HhgbisPsK~K4wr;y}O0+2~#2iXKS3@`Y#Nh{(awH z&myt!@3-44ufMkWctm*0>C|7pe@AZ5lbt+yvW!i|1h>TpORvYe8_i64eQj;X>QFW| zwi_D~na%GMFwgX1Q)KyBGml-qW}#=p52|ba|Gw|8c@(78KcuMW zw^^Bp>E6AyYvT6Kx}CSX*GG-nVPQZ*N=l3Nx*d;dT+_b4yDMW+&>(AFW?*lB-q-xD zi`wLey7`r-xvSQ3hfbVpU0(F*iKkrMk3@zgk1s{dSAU;2Z}awR{Hr)Jb3JaCKFe}F z_E+%O-oTPTgZQr=X)0Et3OxtTbNa+yx;i(}`8|WbU9HIDrY_cseQwsX+)fI-Zg|wP z(2DPpk;`3{dFu*)maboJSJrUn49n%ua{J7-eA#_w{z{>8<&;T#d>28}l9Y-pf7ASOVoiE+8 zLWFTvM`4Hd^jUWwFt4xHHl8ZO@#AE6UgFQE@1gA+6&?j~4rULHFQ0zaD>T^r>h!Nk zI(?|Oeq%&RN=i$wv^mpR=?}5H%M49SzN{%Icyxr*EayhSzihoN0l5{gRxaQ1^V#h4 z^)=t$-CYu-IZZFN>Yv5!?fK8AMd$5&QYhB9wSLK&g89xm*K!_P)%~&fSu@Xfwwdkw z$NzMXNpu}mivM+K`iSqzZjO;?47>8?t5HTn8U%WfYsW2Y_^nJYv?zL7HU=)rzpjWs7aM< zV=H0v+>&Zhu*;#|%5U%DVM%*b#(bHhV%N8;P5YhrB9+`H`lA?3il zzwJNYm+zDJmloSzuF#rt_85N)qlySutDX?s1a1(s>gS$I%qQ~yT+_GzwekMn!@8X* zuUzk*_#dtJb^G`GzwC}lyejSgU4G@}w$;Z@+V)?t-80GeHG9QvU%{k{C;Gp{^cvRu zJRSe+VeajS%QK#YlyP$W-1GeZo)(8HQLdwZWu`5k7^c20FZI@~UWO&p?(D1Lj^Fv( zuM7x*l?U0UD#?WNyB=PMLkblmGp*U%v4(PrtYD)ln@G?l(7nYkbe$KYQW9t7~Gm z^qrj^>umDrPxnFpe$kz;FLI>&`xQRBaJhu{n{X%Fo16BhZm!h3SK-_IRr`|treYDN zg6DI~H~oBd{X_5mf59Qnin)z~kAybgsAovN;5R4acW6xHo77X*=M1am3*SCsnY3@3 z-k+}Xx9e++rKjmGe^|O9v-|WsVfGbSoq-0zS30(H2Cd~w{>^mBR_yR}edjIz#nZez zx5dOgI`GAF#=PXOi{i@8&q>%8lm7dKw=`+Gw`I;iCPP9#`#a#b3La!q@)080MmvbN1D)=f*a>e)&F6 z>z+|xEOv4!2T%I4_vv;~PyOvbNV_c76FmOV|9#Y{GdCld^beSex_STixv*>QDZ>+6 zqUYG&O1K#ssC8&@?DC&ixBp=~^fn>Wf8O!!Z=Xhgw|5NTh>8*`eDOw(&*%K)SK>#a zSpDuE^8R&3mL-(kK!P#$B}?#8u5G#<+dZ;OeZ6P9t~z>%q47#a^2V<6fZR7O?34dI zs;=*vckSD=kTT^NXIvw%L>`xD43b)Fx-EBeTJVh~QLa`eac;%u74j6b_nb3mlUOS#VHdiGa^M zsfAIi3`&>Hwmts)#)hB`i`M&<-~JpP8mFPi^0H(Wf9(tBH#KL)Zfx&vww|YQPh(>D zwt%h49nW<_>+9GKE_$Pg*K%4VU46GaHF4`~dUK!En{XipZ zo!{j7>lJ&?Ml3wEU2fgPSFuMYAJ=wqu|KUZe=Og`!tASx`zOmyp6sWKPR?JIz`mhw z!`ySz8r)PAF3j54X?4-!$X1tSJb{wTp-a`6mMkt{;`V2?kb0KudUNF>pNaeT|JQrB z<5B6F$UReT2F*!Q_P#s&(AI<7bf*Yq$nHBJ&eiG!ZHw+|`BpV2OSv*~^xf8(x@m+0d{`K>eDVf4TkDtf~J0 zkLDK@RkiFW+^}?sVy(~;jUS8uTr{tnJ$0_wZ$J4*oA3YTQW6MpVZI-f^5yl53+0PA z1vpwV`W8L7!z0w|sGxbqFJR8>guFi{PhXk7vEZ0JO>{@yWAFU4Q5Aod`AXm1QOK+w zU#%Sf?|!}e+L)t4ZAV*;=Xmia#3eLOD@?Ze@q;J3$gbIWuf?^icgh||mdV%8F?L_S zDD=LE_vx=^X5-hhrJ}aA(`c4Ps)yqzLv`)=XfQwEKIl>QGPRtYjdUFRIMeGn0D{(ve46=Q`S91Sv{G+r_0yH7c;{Q^-8pk}CFibP z);~7#UcYeta;Ml{5A8ONzQtP>{gtJ%5k)EwRKpM7on{=d0$zy5_yo27L5y*m5W%eQ_) z-A8|3->W@SGgV*WQ%2#@3!2yTXFk|>eBP0@w|ZvY)_kESSN*5|=BB6Sj?z8m$L`+$ zt-xHX+49;j{Da1MNg18C-IHXbwKuKO_ubvIc&S2`OqQF0W|~FGHlOV2Dc^D&-Uo@> z%O&XeuJ#LB>bHP*-KNO<+neU^eCvDV730=fN>jTg^;jz?NEM!s7e75|P0atziQHkJ zVSAM|knzhO+mxisS1he{Ta#Jh^_ZpL{fWgYe>j#uKW16>&1ClUxRcMmYQMhSex_y7I%vHz+Pb?f}xdHFaCXp50L>ohfrGI%dy;gLit|6V)7U zCAhNetYTI*<(%xIc{pR^kyZP8Q>Hx3N!?c|C)&JGK{08{>d-ekdi8l;&$%A3{q&Y? z2Y$`FDq|UzlD6tVir5 zDqr0eTmG~*`0_(@QE7WlT1VH@;Faf+vrle1)0;7M@g#enKvRj{rvhF=H)ff>ZJu%} z)Xn>{$r{5`Nz$5ISx+dmCMC{njNwpv{%_(U%cZ*` z_iQ>)DqUByHWD;!aJY?k&(A*VA6J&!9X)e~XQIawR{a2THn-!eef+LRZr*fGT3FE4teYd9ttgEQ`-pJWA?T2G$XXK1IxdCUcM(opZUYo}u^5uJ6Rh^fH2-n|qanzE) zy#B$riA59S^gd|_^_mD}I(YUb=WMwU5oOkXxsySYwf_6({l^zxoUHTmjU(4d_4mJ+ zmZz&l#7QSTo|-Lr)86aB^cAygTrWCs^4cBQ!hBJ~L;iZPLDWS7JJFj7$8;}Wzjkn| zx4FTM>*rU_m)1-Y_-{*C!@4LmnmVIM;@%+of%LD2zteM7eE5pHLwTif{Id6hV zb2fWnl5WgatCP~}aupw0*B+cUjl|3WL(j-6t$d2@bR&VRYbzkK)EQz_hrMn4?q zwl6;yv{vhvab!`i)YYiw47W$eRF_KjhOxbrh}tEyr_xz~bHn8cxy3KKwtYT0``wZ7 zNjqZ>oHP~{`)Z*hdnzD5W6Q)XX|hWiE_QPL<`X@cqV(sMd!0V0fOT5f4Qh62i0op~ z4qE=;{gKVQD;1i=+7z@T-bkgqyQ1J1usp@y^U93~w@rmtrKVikvP1J-{U^?OR=eiU zbmKc8bY>>!p9IT1bswKIlf(*d{o&}_mhpm3c%xG2b=Or)heU7OxZ>J8qpVYM`pTb` z@2Z~Ix!h4&@ng@|U(r8*O4m2Jr%n7R*_H>5<#befJ+9=;T@-dH?LDc@3(6Urw+2+ai!+G&4PF^S8Ij$NOY0`aUx^ zpE&fqhf$NYy-(D_I4-RqaANaUj#^vKe-B^Br=C3Js&RVp-pdQ;hAlg$Zt+<1&pNHA zT}tx`W@wsi_@m?)pq%Kuc9|iYTDEJ;|D{`2C{8>w_3*i5_M0YKW?k}` z`1`v}U%n;_Q?lf$zNBq7XQyRf-}H9f+Z)q*Q*Uy3FWPed&Oxv1967zB95t)k7?@HY z&#;>^=ix2h(-rr5^V96&6=wSi_q!et+4=U9;J#l+tknAYgHBD|pj+uEn*7l1|IF`S z4@C(w$KACKFANA-Z7Nsw$AbTaig`{(!P{RJofUsnLtW-wp7r&a`R7jmnx>gEC6hMZ z;I?54S>46l&duO*$8yp&x3qZ{r}TEt-xQtR-0}H%ZQwn@h>$;4PTXFV{LFK-LIs#w z?%w$o&T(Ph!gb6#Ob!o1O*lASv1Oe-ZDzjyV#DO163e|Qk2tkb=TBaK`iI}jaTT;q3xMz>74qc`XYY)fc$(w`q*#eMB|-P>ssKR$Tz z!Ft_4!@T%%-hJW*MwQbRr~7@>_rKG=$wc&}BF~OfieeTLt9Krrn)A-J)kR_Ig3Z$u zH}D9rl-bAS(4a1QiR0C@`hV3@i2`g&rw%#=ZC|uyM(C3>!4ko;Q{{KYu=6#>%zW?y!aes2;HU6y;e-|xQ^jiER zOZ|qt_Vq)&27Rvd#l^D@N@*(qn_*rFRQwK+&%(lzv2 zD&?koCZBOJYgG0wb5Eg*616Ao-bw758T$HHhkI_;SGLEKLpROTxHu(c*No-*x801S zl5eKI=ZxL}npRUvWZ3BdnqixMUfZ@|&uiuFy(Qlx59hwr+3D11Ts(P>ovGX5Fp=fF zelmBaJyUwWMc$dax4YG($swc1;KnVd3`ez$#B*mS_D|Wc<%pq}>C4Ai(yAt6Ov$qt zU8HX2OcrAD*U(WGSQfcabniyvD8m%cI-v2?n73gXfth9x9phkpbz1b zJoJ-~2K+8&)7>Y*ef-AWYIAkJIS&r9%e#1W=I)=dXb*#I!u4m8!RnG%m#>_y5__;( zV&-q}n$YDBCI2)X%y4LW%B927EGxOD&9VH4iHXnrl@s4=IN_W9D%8~|Z(`n7jdPkU ztbSn=JT10ZX(qij%)7Cn^ZMF-OxL$+PLn#aNbh3DS@Uw6Gc~5?*S=o&tnK>0G*D0m zyg&=p&*}MclG!q{>s)ON&Ps==nm%S{Zd#>yQ@P`-v{7A;8=qCM;j3xw?P^`V_g0xY zcT8HqI*;eWorWFnA7yYKH#yvyFS2gSjQ)_>-Io^b{5);ijblz1@3dWCFZt}aXsxr} z)yx?-w;8yTB0Dd(ov(Xx_)5gl@O`q%E3VHr|LO2OA>TMBW{dB&fafynBkN}6zm4!a z+xjO^w=xe#G)s^66AUU6CM@T}CkDw9{r|CE`iU-z+F#-iW> z>-Mx*9}dQ-#Occ|?%X)JBDjfx$z0*-QpJK9=bz7<&%yBGZTIFyd#B%f;>I;quba}3dny}9+&Afd{#_#w2d1 z;~9G~8Xr`DxO>eH_B-HYrk4uFel6w=`vly|Og8ByifR?$_7tpVmd^ zCGDEn6>z#&hPpJh0Vtr`H_qw(~~O zJ;gbTdT$0X73a-Ns9trZRJ%Xf(>MFnazT|1N!ppYZx=1z``BH|ZQq}#`kQNie-pnt zt#qH2GRr0-*R!)z*{dBLY^JNc+kK^^cU{FSw>GPYDIkWnXx5wA3uiH3tt@w`e--k<5qh{JImbkq9 z#{c>>NNZJ`llcTIh`F~W?jz$9@$Ef5=6$^GJ-mx{>MgdA4Y<<#EHB7Q;H}Y*V6(cL z1vdkx9mrV1yzgR4=@cd2nuRmweF#|D;L@#PzHr5PXYbvvTT@m{H~m{1Xmj6S>T2`V z@`f8Gv59xyUFs>pzB)^psjF`&1`PbLnExFYuVP`{&2&M?BPx8GN2jE?L68!)!{HnW=tPvh+N= zyQe>{40|NlzkPq2{xp$0pSbrsAL;!(asL0*d;h=1v;COJBACnrDhxi)|8G-VTNf+Cox`K zxm@E$*S{}pTvM5rt8HJb)HSW5#dGzMH!mBk80%z{G98aMG#fO{`c`rL>-L8kvt`ry zH)-5HTDyCmO6Tdr@mA8{DXd){J0RVzCX+=w;~cn|d^YbrWw@nNqm1j1L+~eCrM@F? zuf3T+-#J7_sk8L z%lSv@irRwOy{%3`8ox#St6hx6%C=Nqej9#ZnvnISzPo?bS?0Ox%zAvV)--Q_QrrE% zXV!20e!_Da|F@6*^s`*iOJ202UAQ=1Q%YXaaLcd2n8b-P zp9)_!EqNQzb45eDbsC!@YyAD64Bf$ZYu>2WF~+l2h|WLWZ~J%AdS}pL%~`FGv1v!n z=C!J-Hx-_`pM0Tl=~KrtR>4%mxt~{vs+7%N6lUOZE5XyOciJpB-^IdRC*4|add_!Q zeq&*kR1tYvB&Hv`PEz%`gb(vPjaTOzZ#j9$D^Bl{w?(Aw+R#Ep(W!ohiq#L+r zlmF6(6W{hv@LU!!?P&0CyECTR_f9WN{##Odgp=v$>-Bpl39BF9QFJ!y)mE!%xyn2; zw#G-(_t)|7=978c_}2gPeY+3Qe-6jqPft=iA7A^${AP8Uba_mvvi7g;IWtAiOpod7 zpKe+A$NJ7rRo|V<0;4{&zpvx}>D9SsUBT&3t24ZP3oGvLWeJ;Qx_VtDr**U`r=rL5 z%QZg^%cosm7yIV^{`q%zm)n1TzU0c!xm%hPEaY95OgX=5!VkZ$r8lEFvVueAinY|J z)kRD@dBO4(Y%M_Pzru+b*6puv&$v)pwW+Xbv7}b7RpZjxyJsEc4Sg(Jsh_B?&N->*y^tze z;cnt{)2F}UOX?$?(>ZfoFv%p?)LNa z{htcb)7Cn1AD-EndF!v3jHUC|k|t*V=RY^EzjM}q-^1KHpKe9Rm$*K8WT|vLrkEEr z{d3~^X9eAus|p)prUYfIJ#T+*+uP5IE-Rnu@F}vo?KqKQKjm~rZJu}B^`oC{7Tmlf zS~&R#x8BKpR-v)!Uw^IsaqRMa_KSb^tkum?U1?t9cm73 zi*s!%erRry-Dc75wD7`G(6kI!tKPyFS7w^HD&0CZnJZp1s>3iM-&v}$-%-N%x)=9( zt_z0@GN*U^+WW?~u*Y?8;iZ=xjv>OvX0_QlHqpl6tAn&N*X%j%u%~&EZC{_pxfz*D zm`~Pi$el5t_d~98mE@UuYl7vO*B3X<4qKPJAl)*5&r_>?pI*5AicYWm;=>({wn?Vs{EeYl0uPOll=c%?cJoW#w^Hfe4e>W+}h_lpVHFaz_wYMpKpb( zu6S^A?VY;bC8n&~mR1-nt$4DL;k3~kyDFZihu8o6nf~MI{7Pxzost@dAFVSh+Nl(g zsZ-gp``zB|%ggyL+`oEmm8f+5r(Y9VudV5?eUmKG?fP!-_c*z#7m7(6)4m=yXX;E` z_%5mESjedv6;j@2(OYZo*I)a{V3VIHu{bl#_l}A8;%$vj3Uj(pR+RVt*(5+!wE zL5o^}$;KT=)^fP{&B<%CJ^nQK{tuk+O$?f^fV8@nuT%fL2wo3^Guwga50x-)hxsRnM}K9 zJLPgtZ9Dwf-+kruV;gil)8o~*r3QX}e1-YowZ*R`UcE{cY=0U3E+|;8I9VZ>pMUSCcenGCR&1Xhdbs;VhIjBMtuN)xo%gj-aRRM=dV}N70-R&t4sCn zdt$2evSe2IzRz=Y;`hz@`}_Om$19iLFxuR{WmUn7Qr5+taV!b0kIxz^KEKu$b3&rH z?)sY6u(hq*CvN-tXNKG&DT@~&J@0O61)otC6#2|}^_-MPv#w6oHvfc7CZ5@!yUaCa zYes*{-QK z1l4>|zkfQu=55}yrotu6jtLUB(aVExEV(pkW+ne=QJ1OBdp$mWXuSL9_2Jz+o}ah# zYqol;ovYRU;LA)K_kR16v-9e#y{G@@S$x$ZSy*h^l!gSGe2I5@8!{iuu5kGD?u*3J ztk(AaoX2hN|7q5LF`oalO*_w#%0Bo-{0r| zKJ;*Jm$57TA!7Z_{@9GrWqa4QZr}gT%Kc}m|Q(lx~ z6K!b!vYGv5i?ec8u7H{m}n{QpyY%Sw0IUaPmVd{5^*V&1-Q zUbI>M!iyOnX1@QUynDI(i3rYLZ}i%x)iWBL)$MF`;5wY}TjY3pmB5V8=HJ*3-uh=8 zv$sa(dfx}}^7@&{#lmaizeUx(e{TPGlK5(UgJS_2B0HYndtdZu-Tvj*_D;DzzqVsN z|6WG#u5{Mkpp`8GO({l||B{1FJ?B(@&e0e=dr92<<$>CZFR%7g5sGk}d*}}zpUbfo zT=F~-w+cc}zkcD(_wl0rkNAgXdlrJWJ{UB_DDWsOym0#YR5^!x|KtDXscdL(yIplZwqeecM&z19|mFI3q5`U(q7_}Q$) zZd+J6tvMPni|a&5#F^(cTMVywwXOTcadJs(zIIPz$EK4Nfy-8z#>l3+=Bw*YpJmTQPF?oWb`OGJNapg{J z6Rgju%v4N#_H5rfA15Of2L;Z=`<#4c$Bvn8`=}JXZB1?N*L$&dW2@(Ww)x&4e0S0u zu^XGNs7Bu39$!>?edVivp$ zs`E`WVBG(|G5$&0+Udy!63kaG2>r0TcC7KhOor!5O#G*wa#??SmsD`%`K7Pn0cYMO zK0g!Jb$G%np2(}4r{rdv39x+p+uQ6u@8-E%sp1!}UOW|`clLu%c+H`=Qzg%o7M3jH zPFI%s$hr5u>zY@RkGn*fmoy9Ud8pLv`|@u_24^3yAeLi#0ZlVYcuOBuHZ+^=T^zGFPk*bxn#PNroHf!0 z8;)PNTJu!$|ID*~XLo%%rG0Z-u5|GJA94Ra+W%+QyI07c9liVK!%eS0%z1k3PT4K4 zWS^3CDzc$BuJ7ql;NUp?VM_e%Yxmb^hn#NtsIy&o-$wr#ZxbiJOg;I<(9Nq_;)B`? zowV~ml0^h7O#>JN1!ub7Sb=HZUr*`#`aF~o)eufdFdECB9(d+l} zP2M-_%fkiX!MhWr~}ZsoD<4^2(IuJlVN z^54>3{XC3I4_6A+?csT=e0%%m6?>agyMNEne3F@;tGvl{-`6W@X z@mm%-mV+Ymo}ZX5G(~y-IUmW_uhMTNcD%3rb7^+ol8`k=)SsM7DyaFs@~e#8dzHy+ zHY_Rbnr;40UDD-&&b4E;;{1OwkarH!w9lx_$po zUoU>!BVJrJ_Qi(YyUi2Cb(dG)UtGd2+>>hc_@3nRXKUXcWmM&O_VepYnXA+4Zbge< z&U0p4^?m-<zeiqsjU++J0>MRnGW_b1aOw8b>kg#K*b{@+H>_Rojbqas}f z6)ag>bZ9)||>`H22(Og~PY@ZT<6ocHV-J zl?4|!EfrY8kuB%=nRiQx&*Pt>x1ysZB>W9cHaEpACof%^l={Cw`e)Ikt$W=o4AW__bGh;Vtnkm9zZILbZQEvculW1jn4+7h zGPX4{zFsSO+-rX6-o0~srdsZt0x0;;cth@dxVS6s` zn)$sjf{C%>Y%E@I$ zGBaKzESsVdo4=3Ps`M<()LgPx#ht(B zkc0MXrd}?-fzu5ud~{p zr>{dKaK@qUve%@(@qOR4DSgt?xt6Q0PAJhjAaVSF%QShLdc*1KExZ=(dl_F}-KQ!$ zxuR|l^UoJAM6CO#-P~+{{9Uba@%h(px9y8)nm&q%f3G# zaroNud5`M<9*w_n^@;o2u|$25H9 zmsNjMx|S1ne&SsA7jc_9uAMVmQ!K#~9VVMp`(C!@nVhrk9YC?qy8onZK)E`rjL$RT^>A#GV@*TfP5a{)Tgg z)pohhd?vS4>|RGfnhv@DH`5j8!wACCCKdImcgT z(qnjJuew8Uu&|@Rg!9iCS6s~s(VA*}tL0zNo{E?EZ=N^Lzjx;Uzt{WI{{Q=1^UQeu z!=1O1gr@z_Z|r7n+bXzY$HMybac!Ks+sh1 z&f>k>C#R^jGOp>B-u!s#(u5kdv&HSREluo>JbRjbvvf_T{M%bDTVoDKdaKPo^4*57 zM=vQey)Wk8;~O34&-`F$jghd)4a z5|W7(S#!?ZYFOOvwI%xa@Ap;K=lSy=tbG3N@#OmN;U-IUt@-XBK5HK191=g3>-e1& z?TuC9r7~7B+x}(v+pXMY_9)svrz3o;(Yk%nJCs-Kzs)b_ywj|$Xs$}l@n!egSNO<3 zcsRf3ylJL;V9lnul_45p-4e+w!d9o}{Jd+NS+@Oaf8CeGHUB=(e}3G)uH{_Ryp?a1 z7H#l~FPtIcsipEj)kkr&V-@2nF+t1!8lYftT4w3||J70!$AJ7@WfsW>YWGU??UtI$ zNN=+Fnc*VvN9}&)Hm``{CA0X7E-qcYVPbNYj=Q%zw{dVK+c!}Sac`Hc0{4x7d|lZ2 zC}iGV|M$m?+vX|@r_7rDBKD&H)~Ls;?QeRh1wL)#{r%&F{(rXn6<^qEzHel|dF%S| z-}lPY&-dLwaU{fg?LP^%8A|b6e@x~tPIwT$^Wi7^G=uA&raZ5%9(uF#vnRLZRr}92 z-iP`%!v6dU+VwHSBze!y;&(ge9yTm7eZF(gb45N`$%p^spKu(muT6S4N4ZOBPI0mI zLjCxCb6k`P#p<%w&oOM<{ccxx`QF#DHea7iu6eZnUzd;C;eulOIFU&_%4TvkEq7P1 zKRUPB(aYsY%yI@Lr6R7aUcGltupINhbm?Z((k4Y_y+hw?Cox`8YUb75_9}2?*hd@Z z;^=98_xwKXw3&QZSR|dRM@Dkp{1dZxtUqG>F{7o^|H9s?e7E#^^Q~FEFF(q#&%4cj z?&8hszRN5RZ|_=tb5B;wf&DYDueot#s&x2-!^>Bny?EdB#JnRCGxxIT^JKiuc>ewU zp4ll`;``<&{eF1#jomfZeRF2s)<1mJ-QiJ!>t6H2i<2Jzdhp|()MjP%YgThUM&8^h zuf;s$kzC!6fX;~{Njr~8lz$1-+f3LWj^?AKoDc_8_Nu@`hovnG3EdO|6 zyWFFh>GKl5uZykNcm7v-?F6404>lf`U#_inK}^i@)}9>)L%TcX$e%k~|I^jw9OKoj zsX>YQ`~Q7wSjNNS!+UvB#G%8xuN%esU7k7bLFsg!k5`YIZ&I54!)dpd|F!7yyIZv47s@}MJY`8KTFtN@=5+2Flp{Few$g%dhcSN1a20r%W6}2Da^uopz!9Usii z$C|mXx6a^|I=8dJWZ}K@iEHOtf3*KN-#6iGp+Mr;IFW6 zkJ;@4Qz9>!9&YUHj+ifZuqD)NO~l#d^}qW+^ehx>lX!I6Mc~7Sb*UkTU22+gUTG&J zcEq%V$7fyp%(LV1`+xH9#Xr8tJ6jxiojK>e;eo&BMOI!-`|TDtYt~1N{{9O)6J_`R zTK&HtIVa7f zprrKKK&>_1sO?RncSPpQ0{6~@)=(Vi^r8~EPc+}Aa;s4YuZY3|tvYZk}o2!}li zWDJ)7=wWUiI7{=&^2oV0mumMI-g&6=@rsVjv7--{#%LJscrTzUyLL<2c4J#R*G-zv zN>d*_$S`Mj6EifpcrJR|yJJz^&sjyZ#qN8b(cKu`ZNt}FD&TtjaJ&8O-3dH=j}k)6 ztItFoZd-cX<3{onwX&l7&6j)pLoDmUjkhm(x6E2B*P1h$Moqhj|Y<}(QnZFh1 zDnI)sRe8QTVt<`2zugaoc7FM5866!bG(kn+8RcyAgttOA#hmB)>gS~I+uVPBP2H^e z;=^+-qB?U<+}f8IWhAO(e)7kcAhzXV#->&$PfUFH`0^YE`wx#M{}C>`Id68C>Gd13 z>61@H^@PutGOa#v@JdAA%a1a(+Txd|_+Bs9D3@UVD{E|1x?%Pm9~Y&s49Yv>7uZHW zn^pRoBezN4X3xB=DMu=fGdFM6`zP~kS-{!8lNJZ2wCz~)m~&QEW!;}662X^E8T{Vt ztos-zv6+XjyPY@t%ApDO|NXU3xjjvH{VU;5!tNewYHAiWKMI<)g#<0jK~>%vZ9B#F zH~cS!XDxo^ZnO10YuUQH$N%s8&K+`i!mQpOTeIIkDb3b9JWZJ|RBvH!AbX)x4G^8QC!yZXBDr&rzej`jBj>V{{&es@5nM&XII z{fCZ24f{k-dn^kJ_TP$DvDYg8y$@0%l zCI6ZJFMH8?1E2cD2`+`RPV%mQ{=EM6;WbgUHLI@vGbxwE`cR}dZs!`MS9@w zP=ELI`MG7cPyFN$`YJ0q`+@%cudGV;k7kul-@It;{N-}BZOi5Fx~9KxSKvNpC8qm! zX?CIc<;TH2veIk6hdP`U{mAiQa%^$%LLP_Gv~@p!{|MUIH}Pcq%bc4o56q2stH({? z_`oDz;PN!nDyr_#vg@ihOzU*F8pLUte@I+)BjmqR-a5xUYgc;YN6$;1eD=(g%}2Oj z&O0Fxdb;K_F)Isl_5a?kQOnW(y{Z-79=8y|e1-(~!dxE`H>kSDmN3 z(`n|pdz?)74@bId#xDt5ch1*3>;3CR22++$<-^7k_g-f3?9Dz&Uj zb4{(*-XAJIrVb5ywdJHQf3i?j`$g%ikV!iwN=j{4_ z%X4n;`Wk9`_0`gh{QT$NZs$Mej{kAUTspS9rkeZv4 zl_YiEt)kOpW{>izWtz{tzp51-o@A=+!OQ+b_V$jav*hY3?rUUTW>-_qy`*QD=ty^OYg4fnb*|IAsEnf!e#Poaqe=Xzt=J*Y!wVgb( z#p1nqHw##4nE;&CssJ!dsMbBBcXMGgnoa8w_ zXrD-Z^M;=H(Mq$GdUQ5(r~Eu-u;V?)Sy|nfE1&9vHQQWn>Ti5H$y2C|SD&Zk^6o9N z_fH4&8SA{9lX5=b{l~bzUsu+hxb;g;{=uRhk+s|SRX3HbJ9ziAO;(_cM^E#G_ls}* z({svKe|VWfReSOWtTiNU9-d1;Uae1;7oPFFcxh=_Qm8&<+ z-}R`->UVy^@dL(RO14e%`LSiYnx)OnBd@l;PfYmkxF{>P?BJ@M|0NYTY`TnDdD=?q z&Fi#0L)Ja&Ief(_YFCtJ`F6vql$H%qb7$+B8XKP7GCQf}#Phk^_sz^U=LuRf#p1(S zo~Kch4kyp;@!1~4+x%Uab)$`$R zxx^)*~FDO`PDdOPb@~rT$ z=0=KpoMV?@})+P}V^zy8Nzb>FQ*f`XQ^;A-{7 zxv~vQmbd?NwY_mdh{evV%m3Bf(w23ddk?=|GTHs+j--aK-jn|veLm}e#iRd8Y|X`D z=Raq}UvbP1m)?2NQ>)cT;_#6VD#nj3tHSjj_pRpNyh`1Dt(Z}0=Chk`L)pIbA8`H4 z<8Qh-^C-tkmzIrkz9(u zcRkNaTDR}V$BM5k!mWxC#|36fc&%Av|5M<7)$O-;%5LX=d@E|_;_^f^2sDo3t|gfu zYr%ar%VTAf>P(Lb95u(5r>|($^$Gb^k#PP|#nCkQg;;CQ1Z5DSJmzf=K?juJ6D;e9aG=&eCF1e?REC2ccoRlmuCBscRZ=g zcE0ioiFf;QTbAT&hSqMAfAjF9t+36X7xOP)+c)WK_#dmQMII5o8T`k7-U+YkpY}}k z%#-hd>z;WmpB%C(*<@+ehrbOPs~Qcz1_~Qr&wkf&nB&~T;G+|kUi&;-M&s+I?-x|E z!^_M*s4FQctrr8wOhH5Ov?z(A){~?8({-P2Qhmv;^IGPq?cU&;-!HW@e0_>a7I>-7 zf41tn+Z*YfGafB0i`s3yVd7E?)8P3+sUE38Q@B5Ng`X_BQ*LN#c5>0uy$@vUYw|>2 zh8+2{&a-N_)|a^Zp2zf!t)?cfn(^#m?CFC`ZfyNsZ(#C4xKFlnO84*OKcAZKpZnhS zkH-C7@3}*=SwH<0JT;X=+EOcI!(4s?lYR3Iv;->N=InT)*YkNr=wsP)e-#e!*BG$f z?~d4+(X=F9F}=8=)wbqy^x;3h@BeXdu2)l1`t)i6xJ--Ejr(NAVKb+77Pp~9jlG;@ zhm!l&sHfkw=XFe2z}SJ;$@(j3?_%Im^h%&0y0KVZrTtzG>{!-thi_U)lS)j~+Pe+-NT#C|G$F zT++2~op$h!$mw0X3L>Ir%`V{6N_1E$Rgke|u4%1s&r@NZr%@k!9`9VdcgiZyIh$23 zY4#MmOjO;Jmp8q5PI6X>P{YZGoGbJbtqXH>;>^U`iw$h;SRIt+rW{ojFRa+Z{kXc~ zSV6%D`JFXi8Pl4|mbLX=xOw-?{MujMH`Xc5%xQA}{_Y5?;?%CiJ0~gJ%zB}xvnc75 zPqnF;e&(Z@w(*BsMZfXqKlikGxoBz+u+wsum zL*YRcZL$4rPv?ezJhIT=aEE^T%454{nwzpmyw>mudtPPT)!H%7OSo1$ydb5B|E8LS zz}bMxf484#oBpzz{o~l)@0VrECVf+jxMOhl&GJe=`n<)-8e^T*1@TfYAe+1ueFa^beZO+J zR$9u<)ntBp%E|t&l2Q?4AgCle-XH%X+D%LTkV=h{Q&e{T(z|!uOxIl6vO>1s#PPxW zEjqbI6BYbK`5sHMeUn=@;dFA^^7x0ZR{I})dHCw&j^~vY()~>l&tKUpeoc7v%KN_5 zimO^NC55x(?d$lHC-WQHgdOrecxK1q@@D^?EK?U9KxXaXKC2cV)>< zy|yM#X~oZ+yIUG>uirKAea+uYx6{6bvggiz*6HZzm{SQ3)g4Q!E$0UBmC;Gh*t#}l zhumu&N2LYDp6~DYNlgu!nPPSH&9>%12}4Ue*R?SVC!8++lv!)TG)a38!?}xdB0V3Z z8}J!?%;pV+DGS3k-VpeuwRX$)^q24An&g+< zs7`6PzW<$R&EtRVk$X&BkFl~WboZX|ls9_)^Ns55Cw8Y5T-2Q3oMPm;HOls~|Jsg@ zmuiy7GVT_6@}k7~H?hr*>|ayM6We z^nDxKqcZBB6$h-odhVXEj*^nN4!8|&Q(ItYQeE<;?9$EqvHXGpKk95^PZ>XuNlf{; zx1wvxb4jhELdTdtSekt@W#j%XI8Dd9>fVWo5A!GIzE64k?6qOCcV_lZk^F6vcO}-W zF3k9GJLU4UtK;pjPw88%8FBE{w*O}W9{JCZ+$O@Mc+Jvnne5}v#c%dM5ALzg zezAvV-re1^_wN3-dC8`ZqqgS9hWJ`$+MytIiLLg zOuFZfw=$A{rDE64o~idv)x5SL>7awD=hn2BcVA32v0JIJz`Rigd=7eCfb z@LKAWpRX_f??ZcLcDD7(n{h5KPo{$F2=~HO4%ylb$qDBJg;ui6{d>2f^GM7Oiw|$) z<}jakxRY@1&J<1l=I1<-#gbP)9DY(HpLq0@iRgN-&W5$C|8bnpKg`(PwvS<6a>*z6 zl+ALES_-|1Im_72sTYNQ^Zny5lq=`X&c4yXh}l;>@>uy4!(#?p?q0h2a&ipY`SAUR zt#;2;xa+SpvBGn&OrXeB_fnnf@%6U()wgep*tobnSp#w5#sDR$(}ra^Q=*o(F$&G( z=}bBBrJ`?xRFZP}C86EN{jWWKZIj$FM|oyO;^|lYh7bPpa^60>>C|h(IPSPw%edKh zyjQ+tIIG(?Z<)?HRgKvyHE}|-@$qruvy)c-PN;4FR52xG+s4||-}Nki zc1&NA_0i@-jeFKna|wwbcIQG3Pj-lk|CM1c|KD(+{oOv6)ZpaI;;t0S#`}3MIgE7@ zjkm75HvNl4ui+Fg)opoqPyN34-LAKyqvJ#qIG~PCQuW-Gd*I(+#d-4VJjn-+C+vA_ zd$(Bqjov%y!gX?bXL9a$95qgubJU;ZMwH0=JU`nd0_(43$BLNm_^oy?_=sfHA?u9y z`}=0@V_&&LFzT$C)h_;kxpq$BR=y{{M}}lB-CZiW@9Ro6+eKIYJWT#p%~*W!`L5UN z9$)g-PknuDZLxMttM@nN_f0rkFLu55<;TR{;Ec8B3f@j^uUJqlJUy;hb^j;r{fkzHDJfkF z0Ef;A(b+r7j~C_bDv_U|_V4c3_s{O7%PeNk`m$bn>E6Z7i+`VHS!wcgrqaxuE*B$5 zJ9A_6SnYZ3tXqpr@A+Jq@oUn)G(C$mK2K-Pn{({5jn5sqAbHQ3e{UrEH2Bx-U-aF^ zb>F#=>=UP6@u*!aI(7WPnx!YNY3zB;Uvd7~+ML_le1q4zxGZ@HuA2-)eF7!kr9EB5 zxoE?gzKOFXPFfoIGS>fhnE7#`&E(|E5;FVVU))?|cv6 zY{{Va2WPyNE&Ld=#_Dxix$S&j&b~dB4SVYKLzz?GbDZ63qP<*PaLZ4ZGv_Vczb|tA z^J)D*yVc?AuZ3s}3R20N3Cxc)cx_6&Z(U>HT@B1__?d$M~yb$TvDeWtfru3 zBwFRADBgOzW7e(>-BBHW8+Y$CY%|~c()Ui~^SN9yN=ilNz-=6N&GecFH=bvD+=)|NCe|O%tR+vBgPz76knd<7v|LQm0jNb7pX3b5vve$ll+z+VC zKd_5=&FXc^vm-rqJ+3^@n7ixeVTr|{=q)-I1a3iHxuLQ%h>gGfd1dizUN(I$+2hj3 zcscjmO+7VdgU@@L`0BFf6MoDqwC^Z2d-v7g;+1V zEWMTr+1lDJ|9!#L#pRq9xQ>pg4{eIt)xOtRR%F?y9^RgW!!KGUw*ET7`s{~O$k$`V z&tqz*7jFoNPx*et;L!$$U7BYXE!~?kJN<^~ujy|jcTUgAHI4nYR%f&E7uVE3eYZ8I zpSCxyXi4;lj+QRJU;F)z-?O4T!(&?*>#x4Ba#^x)-{U#Ice{yS%mAm_84W6Z10Dw9Jnb zx7&H{G&!mCJxXjkcZ%`u4;lfdO9Hj0`$sM=?kn1PW>x6w8=F$O&F>U6PrG5e{Vc=& z%P*8%mLzUt*v`PE(5vU*@+3y2LV!iiTQBO&fp>>p5?f09O4LqXD%Iu`VoY3nY~R~z zhG%ZJGRK*Z=iHeQJ#D+3UCn*<$-c&0{u`W&iuxfsZP(nAY44X_*d#OiL_+MZ^lLAE z+m+uf72kfpuKLek5u0C>f9o;S8m zYhzUJ&N<3ovu5j$#`;UOF|~`P=BG)YdHnzScex|nH8%H`hpjZ+@Lyx!Mx9OmmjWvr zVivX696$9-{Fmfz?rV38PV3&O`~8+nPD!aK4x9{+|JZ2w=bE9_?_D2i=ewS+lC(B* z+NIfRIN|)$lm6n*zPu9_S_ z9+y<{Vb0O8t}S}6o;SKc-xoe-`CGRO_ca|MM1Dlv0JS4^S%1diec*` zjmx9KV}hojL}l4}Q&7No`(pQ;vg!QEHC1mGr>yc1@F_LAyHii@?GMejvg&4i`tvN0 zg)D2H*p+&FTkf9!f8SpRmCBV@AxnZj@<{N{QI%satYBc9HLK>*W&a5)-X7*o(@3c* z>^yTi?&_)=R}MbCe)r6=Ug?|La%V4#>g+hd>IklB?|N6g$c;TdPd)wsgRbmamx;=e zmWTBBmbT^B{YvCId%7_0TWamyo4hR6*4972^4E1-T^*jiYHCMEOaM5(9?nr-rQdq> z&b)`c<_`J4Dv!CT|9D=lJ|i>o=;==GV-i|Zxn`T^KdXITJs)DNH`v<57b|@GF29yr zp81D?T|WD%!?LN1k8`ywtd4xh{9x7UbxD_(`R3f+6$+~Ro-{$mv|qg7&(wamC`vo{ zgkEaZ73NR+ud}C|PMxL~d+Pn)d++C(JX#29LWmoIi{6Td2A35>cI#C~o_)&D>eOhy z=OHhsR+*Khs-*Nu37mpCX8&HXba#BwkAia#=RAJ3di}Fcr}eL|3R6;2S`Hd>D$>$d ztdU68nChhyxv2$oJPSm(F{ree)AYPDBKx^*+S;Wtdc~j5ns2W9nze5Kzba4@uVW7j z$cE(!JwL-0k4QL+xPp#$dsn`Hwr=#cIVCk|`|?Q=?a;gdgi%J0|K-+CeC z;^Gq53tDCA;^N{W*2B~R209X~0)ikAX#ffVB_*Xz2_S#CxVWSo1ch4%r~wR0`GSIi z6Inq8ppuf361N+pi^~(6^q!j;J(1U6Sb+@Z0(s%{ebWQe+{6`?ls*L!&`vdX40nTk zF1%m@jf6|H)t#64Y~8Epa?U%uA@|(Q=3YG)7d;+O#67osekZ(fz1c24OMA&=yZbMs zT%H_S1WF(zMJbhn@=1!A#jO`gE_wp)o$FQc(Zgu(Vgt z=?T+Dk-yR^MS2ljGu*@#ix@c?TzmB%#Vm;b2TEpG6C)=$Q}`$Ma5kK7SbM;1!T!1z zw&!*_9p(}i6r6Z@5rdM_^Ii39dGntCQUMhUN=5Sm87f*)|zLLBUE@5r;U&X&SVp&qF?_6 zJQ(*sob&tiuTp!1V>#^a*zK}CFH?X~6>|?ZU^tXQgsdtU9 z%Q;&vh2;zX@xOiD>2B>eE9>c;>I)K|1qx&f*gq_7T_51$l9DKqEXT6W_UJ=R;cG`nhsi0c2Z9g&9_ijxBB($6Z|DN? zAA1bbDj%N`uKd|!_}=hX%_)h`TMW}KNEm1K+)V8G$)0@XnA`R8eU~{-yo`+5f2X|b z@$a}2YeB(@;j5$P6yJ_7x!Yp+O!feOM>@|Q?jJXr!qtj?{o^hWoWRc3V3?p*C^~=W_bhba&~f z))S|n%=sPt{7%{PIo1z%Z7P1Z_(1ZJ*$?CHZeTiJ%%!kAeNWxZqOQlf`n%?Kbev#4 zDsh=-&)$D8_x7%FeZr%CU4QGL+nGTOmbT4bPxl4OysvXI{8^O-~FKdS0-#ep`Ft6v;3Gu zdQYLl(-vpp&DW)q>-GnJ?L2X^$55W(pZufpj{L%NEB`y6OW)60!}Y`X!Py4Zy4#lD z-?oL7&b!QUBD3I}ZE{Z~PX%v*_y_*Y$9oLJ1=ODuKIraU8So_Zsm6!H^9yGm<__%W z_)~Ih#&@Rq3UNJ8!=B$U=GF6jGWD1I0r7^kN4EL*_-hVJeC9uJ_v_VrPf~*zENlOZ z{xJIBne4+}U|(SQ(ds$pgXD8NPpy2fr=;In{7(BoxKwOA*v#Dx`&qdT%$`%+Z@NQe zV)z-$?~8@)&5!*te{lT3?#}che|(i+S>4a%x|UgVu9o))>!ar%>Y1z?_Onl8k}o>< zH)xv{O%#!bd{noi|1+${nzblqm{EQ=V!7!5iK}ZdsJfc zlnU7wx(D(exSzB1Wfv5j$lYZ4?CgQ(jRF;`i{CYZbZ+Clu76u9>S(18;}g-MbG?lB zSNsNl;AG3ON4`e;c4CnjtpqRGhF&i z#~jA5E2ZjFdTv%c`ucUk|I9}Za|JC=e~A)_3|QT3`2X+GaH-@t{y)Fjt`z(2c);9I z{I2rB^M-szyECo*^BJtABW9ggeR1=F{$9iB*X_S|n188}{t$9_mC())HoP{!7F~Zd z{X%x&6QAFVAKv#E&Y!V&k(}K={+JEkVY7eqPT-zx_)Po2><0Ia=Rb0pHXZnSZs*(H zHNH=-F0s4wM`D8dy*6<(X9vv{8n0IWda?!!6C3Q0yW;JMnHShD<6PRvX_@m%}xpY)uvt|Rs zxt%r!MTbIJzvxXkar0C8k@XuRC!gDS(oIyki1D|~$C49~AV094+iC0Yvt_m0&I9I# zAqD74>W6|#(erz-cg;fLw>t8CYliWGNGf6RDr zTjy|#IQ0EiGWdP&d`ofOs)Z3h_cG_B5Bf^nZ(P?OEd)7nwjH;~YkB+U zdLKd;h&a5OQ*7NCet_vmlybJvm`t@XZ?H@Zl@Ielbx{M$>}fluBPo}1cW_{jX;znur4 zn#^H3aq?eh#pDRx{n|xhme0!s=YNU0;9H^8TXrb>qjv8)*C$K``T;v9Ous*OX|03b zH{J)^K$U#s52IP{G>Y_o7`^&05XmuLMUHXjgG}`=;)cg`O3%sWmdGltFRNPHIY%0l zNG*=dP(8P^(d{~9oJ0xKLcPKaZXGCro1w(FS!TRmzyIHPD{E^}mnT~yvd{L(TH9?b ze}C_8@4BZkWtV-;|Hi+4`?j`so%6Z)!-o&wuYR$x{at2>?DI|1c{?7~&Ye3~S~|9U z&VDsDwRyY#|NCu!{e{)J)axD?!K1uv7>*- zN1lsY76xs)@@c{s+f#`wX8R`3H(WAFE>UpLl+?^<C6DkM$kn7PZf zNj|C`D!NydZd`C;=$w*xc&T`x-kE|YCsa6}U%c`xaCO8q^Q{7E%6(J0didM7n6T<_ zM{(91E}ksB=KYIDi?)@e{W0>KB%?RA^5F?Xo(;JtlYT{8c~1A1@p<+l+3@7L(;p_w zT|H#*@+=bc#}Z3?axer=O;O81PmAE0O1Q>=2E_v*}we9`pAUuN3p9B;c$cvtX1+UTgt(Pdg& zC7U%XpY%oKyf{%J^=q2yN>yd8RPVYIK~nAOrl~y5nR>5e+Ps{$RhyRtd!IBjoxG~z z%oVnk*Onc$;Oi5WkX}9EEXx-??|_qzMju|BSi)hmB4MWAG|LUkT|!DNxL5y*esOBq zOuuOo5`2+YH_nNwY?)a!wMb;*7h9+Mllp4Jwx)J;NX%b%DaP;O?iTW!|n-F<-l@ zW0t&O#Eg{R6Fm=U)CpQ~+wS#@h+4e)l8fDnOERh&0uxQ`R%$q|nzmrhia;~Pw}EWp zk!;4sCew{}9N4sM>wNQ=T3zjMouyGL8QJcCUvX9G)~!uTE_<%&J(0%5$CEBOGf#aB z?|<)k z@0i^@g-Ma6FDPZ_F$w2&yk4G1p7e2CQb{c@6;9@Hv~o|@;pBUHfJ$ zwkT|rj7!`3`QT zV_W1Ne3oflYxR^Z$3wyvsSCHXG8f7!^PVsN_TtUcGd`6*=CNrdGXqQuPHmpB<$~4X zWUDD}c;46FuU?^B-%%XS*R<6`(_`_Jz$WtZtq+q^yJ9OLxEzd-9Kk%_lh(fR8Tr? z>czFmhF$Q1)wIvo^$PCKw0`-fG&6Vm4e2it#<`Dl+&E^G&ffF?Ty@~SZbPx_ffe(9 zue$HInMa3ZU-#08=}Sc-vL$(vZNfL+oXfPs*I^&yv**w4KP~=$(EsoB-U62wM>*~~ zd!GHdR@kOEm-DGdkC}(!#7|qV&G@)?dj$7)xqA0R=ca~*NJzBzb(c*yqzt#7Db?^U>FLd7KGf%(WH;Z%ff3>S3&pDlZ?3UWe zzwV!9{iaWjWv4zriR^m4>&`Cs`w0dP8tq;?TTIzj7RT^(e%hD%T&=~ytMm1)jI}2> z@whuoTXw{=Yv0r2r=O(Pwlhua54b3|_Mvu8rE}O_v#ug!%m%h%6io*Ssk zx}{3lYhm+7vDLbk4ND7F$ymJ4H%|7F@nhPwq+LPz_=h`H?8m=G`c^-=CDO;EuteqU z&Dlo|8wu{@iP}ga*vMaRf`u-$^O7J{Zfybq{OxGU@3RU7O{FS1NWIr zRr|H$+V5s_X3rL6PxrPd{%Cos?@`}k-Zfh@5)0S5NI2&4-mN=T6!PrpS~ISLoy|=9 z)o$c2e^Vm#sfE)qt5-=YxXaOB`0dh?J!XgNeAbyPo_K7=p`9!{?#X@ZTU;6@6&f@# z`S<-@o*(9NEoHKbJL43SDxva3qVJ`e_Gihvx9X3)^ZsvLX~vK(;P7NgjCOCv#^dLn zvaCJM@6~+0p)CCIk)~r^3#ESN@F%i&K` zLx5FqVp4t8Tm1sopB1(oELk-SxjaE$Ojc_;+*fRDb5yXMeotfJe2Gu5l>BN1Coh#q zzV~6LRiE>`=R9o8a~?g}*BMwOeV?mj+xH2JB&^TgRLjh|;P$ca@^XvC{tc}<<`T&_ zZskpWJ}cn@wOR`%gHh*+@lEB_H@!ZK8R~_S=+o@O13G!83ZVIzb zy}rz%&*hpbcd=rW#4?{wABky;tfaV^vOFCUMA@9vcz6XbY-O%dG~D^D{?G6Kl5-Ds z)IGXz`&L5k;=`N!>wEeCzLkIa^zQD;r%9ZaY7CikHdW@%O%b`g>(lz36(6-j_&g6C z7Te2psy!q8!*woPCGH{c2|L$NpD}xA_vAGxhn#Z&$PX7~aXnrREttnv_$dwCf<}-G|}fc6FbP zofb?{I{!Jm_WG@lRe#ksTwAo&ExT9h{Lwp3eKRKXo3|geQmp*SaCX7LnBQ880KF&$Q8Cno6hT_R`j$lJmLm zD*g>T7PkL%i$`9rPtuaY^p52!*9k2`Z^F^mh9b{}(p`7U zx(p>h9~QFmK5=qmn9(k!&RcEl=jWtZhkwbpalLci&{Ba#Z&Ko#okfQWo;%I-aErMm zH$n33C7%O%`j3CUeydcJs-wUDo26O&LSv7O7k?}hiJ9E$cH&r-&!VCw4X>qlC%=v@ zm{JsKB*kGc?Wd%?E^mDF{l^}gd$#YNaOaq`@_C6ZCh=MET1icA1?LZ{Rq~yW|CisL zVPD|C_@H0$iG=H)&TyM&$OumnWBr)gcv816^nwN3-qmcgIrR2ODCRuWxG8->Xz`&N z5)oF!alTtg_y%PuvXF>upl{C( z*WxKMo_3`&7dZ^w7Ek_hRz7>4a>M3o{em5}Gw)me>&#D^a_87~2Cpv9JAZF=Pq!@j zC2;+_*ovvD##b4`%e}rlHfo;eB<-9YlD_%2i{+%|URgigw@HF$t|>A32d{6-u$Jq8 zd|x1W_mB5~fAD|)UiUG5=kImRZ~Ce_!klboUz%X&`}ne{VC>fJ#Wf*69{cpxHJ|cy zzTUesjj>ePC}+u(G{p;impt5zom(bOVd~6yW>fJjPOj?t?wwUHr3ytp|9-x&#c)Do z?}r7`kJY^2ZFk`J{of3K{rVltU5d-No@#DsDKcHMUfSkfCC7RpC0-8_4whxKjOJ%`w2D zW!`g!fcz;3ZxtR3^0_9Y^JAT(^aq*4uLY<4{kkiL>*vPznaP=tHG@;kTm_RZ96K5n zoZ`{z+W&n2Vv#6mtGSB%-aq=umpN&2s^vAOwP8%znp0~&#eCi!|3^zdcE`E(_5b{T zoVWklY+l=XyCPbEsm4F4r}_Qi{<;U5ag3Ot);|xOay}{}G|9(e%@@6mJBkI(BOdvmtFeE+^O>*5Fd~}ePaf|qPet|DucBM8<i(S;rrii}x z7k_5gP7#oZwpm?!oNs~E(uj4TJ92)TXvuB0JX)rIXlkn7_g!~Hr|f%q@Ymcv53RUY zWeklH_rHXH+tpHPsU~n?&F-A(?o&S8kn24VwM#tV=a%DlGN+$?$dP~R()~>@6kl8k znmJ8nqiT2D-#fD|>-kD56g8gFRi75VsyKVNQl(%=43oGb7Q zYqDhj?Gf-eQxz+=Cg;F-#=OTS$~s;==rjsM|pi#VvBoSQ=1O#h>>-f^6ejgpLtrr z(q;2n-n1(BY;ei*vix{)(FSg<@Eykv^A^cP>}zhn|G#bv$I3M}9@oDAe5u^t`AKnZ zUVq&3eu08V>)0#nO2u-;43AxUIkjNQk}K~Omn4+tOR2JYzUzHn@o>Qjr7||LG_mxZ zzcXg9&7Oa_C3s7i+YgPfHt#n^M~qUAABhMSXe{wB`ua-hyl(7+#^7>4CZ^qM&F25V zwfN57qNWR9J07D&)LQtjM|%Jm#xwaig@zFl9Ms2 zdD0z~W~U&o+C>@%l~#nEHi+~0PBfUffn}e&L`BL@wJssAh4C!zEl(E9@9GZHbgtx# zzFn+);;-o&i~iu^|R-SZ{IlohsD`r4ZUYMbYu2izVXmb@aIPP-zLw`-8pF7 zUqAJH%|G*%s2vzwE3KAukeKHLUZo8S|u27a7s{h6+70W`}W3y-fi5I6d1J~BN_##-BVD% z-SEkAg0rVw#-c<=3$J;fwSMJp4B^+vn%F<*wX&7vF7tCW5*hoLk1$l-cF;M&qrqr9 zx4=Sk^F=8}G1*_gz0NlN#rZsZiJCltbYtDMM87}@eVSz}%y6}lyHrqSW z+7_Ctv575aefQ&U^i#LVCpO%fp4oWL^!9bL4mQ`^BWGWHtdojUSfZfOZZXf>rt8F` zH417c4mIv@UAl0Jj>&BUMg8B$=UnLy5D@VUG*4=rAS-rOJ~&PMexZla*?S6V#j9WZ zQk=lGROFfI%Gc&i0!>+4yQWOa+uqF>$2VPqr>!Hg>9IwAeZ!q&+xZ?FDlb(yUvy3H z-U7SZ4wZU+uOGDkyz#(WX8DOLZ@?9m1bd;Xw_!Cp0Q z0xn8F?O3)OZVvOB49xV%;_W@mTNUZ1T|YTlnW9$}NK zf0KFd_kmi8#9Rmv#`{(pX6-pJu_KzKTjs{O++m(0@n-WB97KlXL5)a<)f<+8UP z&OLrjvq|>oTAn7Q;@!84GpAklEO;F1e5h%$ikIlEUnZw7?tJ*1Tn-53S?nvF@M|0l!n5}1zzptNo;j%{LpZj)hi{}{VY)aqz zk0V(pQU6H%j(+#~cOINMDYZW4&$+2b-uCbQ{civK&EN03zjwDgd;Z_z|1<6P)O32S zKfd&o;v?4i+G-0{v#PKAW9hGZ=kTXLj!|pHrcXWmdzbzO0W%Bx(judGQ-dZ~Dzqqg z3fa7uK7H+5wnK|Ry!zv+x9RuH)*Ss&+7o}AUusRxn+@6R7H{iLJ&W>M##4HJ>C`0_ zb~-DBvQG+FmkA~Kc&G>qCF!cfcH9oIpRjrBPG7qT=A9cE-M!od_w2d%{N7U4G-GFP zH4YvxFE`I~-!v9IvOM#Hv3<7PDv=BCBicOAt;iOb+Ee$7qxXT}o2QHKWW+OYKiqPF zTcnq@zv%4pt=A9o#azlVo7NC(q~WXCnv(Qiw%#h+_Ump544TBzlm_Dm(b zNl!1Jul7;av1?&n0~r$&EW=O9G;7!UN|Q-RMo; zbi^oJ|6vc0pz;<|l`@^mz_wXMAE)Ugx-Mwx-==AN>hM|B*U^QEJUI^qxfLCvtZqv> zajp?f=}fil3vjxy#=1q+QIDrrW63pM2}{khiC^FHpV*(Kk#3iIJ#jkEWakSlTiA~= zYN{rBJ_u(CF4kKodgffEM7D+4wT+rF8D9ksEG(L8-ETF6#civEJ?BYp!>_ZPmzgYl zY;c>W^1-~_mB&AM`pt=QjOcbPPW&t&Jy%QIY#CSksi>;zShl;0ClffXJ<>Us(0lN! z%(vBk>XBTE0q1Ur-3bZtQ3)to<2`Ya$6*ck4K-P;i+T5!^_zHQKrsKZ;nYQpoglgMvKMis?djb>Cz>CmBfb-OQCqTU*}o zHm=#4Ki4qaKkn%gx56`b)BQGmy&-qmm~X4e68A$_ayZxW>@rMP`07!Hr=OyANzWoH zjl$Yu7yVNX&38B65#ap)#{M5?pG@2_-aj8>g!Ysqi=Ai9W_7A4Y47@0z&TgCWZuN3 zf?lhX6vEbv7>O?}kTIO-H1$x!^mG5EcfHlVQ~G|tzvhfbSChm}ho7%)Tz<~BlP4j+ z*g-C`?$_l1!c&9Vd(WB4N8Des`Jy8S$Fo&)Y^quwyZ0|R=Br$D{$NCe)t&|i0d>u| z2a}dbdTHJ({lC|x&`V~y>tgP}NB;979X;xW3JPK!^O*LP{WW;LPR7Bjb#d33|Cg^% z+quW~?8TpaNiw=yJ=VPsx$){+#JqPKue>RG_JD8U_gfxoXQV_h@7H)Gp7}7uw`1nU zHQTc0{Q1Uv{=LMS?b&BSZ&$2qcKxvOdrj}>*PGY8y}DzMX={j3w$9qb$?kDBr()Kg z|M=5(*3=Xyr$ZOieYuZ%$Si;J_N&Kg?;Cz@5-oG~8yu1F7GRltU-!wu`+Hno=u5W< zT*)&1_wxMzkl-+(MOxDdzeg3Hx6$ZQXE@&>`xw@-cF48FR#G^%JE*ulqCG1E&Q7o`& z#mWOsMWV`+jqQV7lH$wJRPAOe;x{%!}-BO%##6aA?z;X_<3Qto*{XZFTJ}ah9!JDW0rr zsto5^Xup!;b9%mqf!EUVsq?JO?(ZIVrq5ecD|q3h%c7PIE`?3K+_lzBuR^Dk zdwl(t)4%EY0vXSQm==*UI~3pbD2Zv>|M=H#d1XfWuLC;9mrJJz*?c=?BW{*1al|#Z zIcS=R*Ug<9U5$DsdI?OadB(3R6y~*llHkqg*VSr9$2OLiXR|#jwVG=%%~x@OU8uXX z^Sta|Yx4?u6!XO1^-auf=FPrg;eKPz#!u2aUfP`~4E*)_Ak(#HGUodaZ`tiRCF|GD zM1iBOnz!B<8ihU!d;9Zt?3pdszWo0CvDDk{+s6KnlkI;_&R==qz1hCM0v(;U#>q}P z$0F}V?RAoQq!-q&1F%Cg_Tp` z^H_Dxn*M_d%Wi5E=blcVV0PlOOt$X6_Zv5F_1=EfF}wMql;OEWUWzZKF^Tob9r$ir zwAN58Mz!;i*?F7K>m~cjB-G-ceOc+h+2DWSn!v|wLQM;zo;{G&TNm`>+QPYNe>U6y zFuMQwfP3YG9Z$}D6rOx0ebSPU(~5}^89!P#M63?DG$}>szA48`W2vJR^Sn)Zx*evA z_?WKVvnlTR#%}E=W;LSxTyyOXuQ?Z#+x_;SOpkO>LibL44=TLh0zlC6YIHT&PK{YEIj6 zy7jE&k^qg=lSPMn!ifTcY>oeIDp&D+_s@m$zZ746{dK+e z*`;>-Gwc6-(%-akm*38iMKP;C{yTfz(!5^&|5fe(lk9Ci7{q7KdGhtu+BoiP-N2>jrrZ2wVyt1WmJEjz2`$v`6GdwG9kQL-A%!t6t1^l zulR66_D;t3jPl()cY1h@m((6q*rM>M*z9o69P$-OU9KibdVYsuBl_#doiX?=je!nsxHwhm{QXtxotn$~@|^Y>JF) zdhq7GvJbC5_|j+<7WpnFLrnH~Pio|}fYXwFVLxsu2DeR|T(HFY@Wh#s=Q=|-1s!7y zPP}o^!fC?HMaK?*WRabHA^N)C{B4Y|wE#SBhFdk+uTSMkIn{f0hek(zl1o*z~< zeToq*)ecwbJ&>9`VL{NzD}n7xvTtTDU2t&jCLNhcCZ8v~x}csHIZwJYb0uH7K1bPH z#kKEpkH0><;cDN@cWFDE4=zkrtbDaOAoRtmL^uD*X;QPJZ5}7YoDR9095~hRl0i|? zs?_Oz`pGv;uVi&?D(V)y820eVq*Yu$-|^QqTrQu#L!-hy_=xu z;87N~UGh!o#2|&G502ct+#0;Td(DYD2FAQ=DSK|+6_3CE=4793%WP5E$G5n--J~b! z=%++JR_GCE`j^MPQl(B)MXpbR$JDCNQGN3LsT^B0w>;QxHSLwDdIF<={-#6X85X%Z zP45g8y^4*N``DE;X{QL@t?Uk3y}hZw=81C6r^)m8_}cvwa#A=JTgY8onY_($YoxZ@ zGL2Vr&fI9b_3`s%tK`(Yj@K4PRw|uhmaBXxGIJ%vha*c5ui5TZ^X1J{&Ygb7z7jih zD(s@>bD*2kU=a=1@GbY0l^K@ej21ZO_WDwe{Sf{c)}H zwkaR}c&{&bb;D5VD_8&CO(%-Y`TTB0r)Qq?_TOW0?!%p!*?Ffj6s3;FR6jJj6d1Dn zb;#_{HH!}%dN_GP2ZMU=k4wt`=LCN9&y<_sV(Y=)_EcGMSJH|!#<@C)ubs|q`)i|b z|NZzAtLL5f|FC{COx(VWMI`oP+r~#XSNq;8UUhW--iit0*ZGw$$jrU_sPC!R)>kVs zYO`6N>-iTa7SBqIs$ZMPsBmhP2ak30&G45CFXXTJD<$dpN4N0+d zmj5T+<&Q_4Fx}Co>dCur^#-v=TR6Dhl(OaIyb)Bj^tZjd=(4WN{n}Rl_1BrXmX}vm z&Dy(nZ|9K}aqIv8FKYU)<;ZbxWAgDIGw1)DdGhu3-)BB1yZ^jd|7riF*I$3UNw+`! z{{O%CA5)(T>@)jw>Y;zoxwf9@69Uf!ZKKaDWZrc=&7gNnzU}Y*|7Y)eKY7{9+rQ?$ zU4Kz(?}5)td8f6NZu{$AP_xvcX2p?$3CY^Coa;CTNLK7bjWx=u*`Y)Pwvnz1*1PN4_SJa>0H|=Gk2}QQ4{@D(ldM> zaJfo&%rZ-v@_fx(6`gbJD?)lt_ALmTJjHhU&z(l!&&a0!J76PUdcNqs^?k;f4>yX> ze;U5;kL9Cjt{EIt6u!u6b#@;TIw|tdqpeoJ$ua51o_)t&dQF~ay2EQiiYr6Z>_vYQ z9%y=*_P($#`DM9ulB)l~4C|9DuDacGH?H}roVD_N(%GZ_HhFLOCUB)KubEJGCuz%% zz74J-JEpPUP(0!$-nXBdtFw%!f6e<1*X0Yd_Bn2TW%#K&WYwgFCKp84fNpD zJ0QewGOfk(W$}v@=L?o(rYVZAQz6 z9Nz_=v|Z9@EBesmq;>h8z;&xBsDVe0u+d z8S5rLQI*?oasK)`k!rbRnN6>)R0_RpWCZz>tJdaSycH&W=+s#@rr*CCB9ztk{#C#A zqVvHkHMMSYgZS4*!O{;c*;IAK&84^eTI#7d=Uh=#_U$9h9PXk~rQ9WE(UV(UdR}i( zJ5ulC)V0pd{Pw4NKHDO6_;~dKAF_3yyY8`df%sFNNptSxCph!R&eMI8y#DecfxK;( zYQ4{YG%a`R*=(`><8*dc_bszquJ*9^ZJlt0)A50Lk@m?QAFldD9g>^(`tj~b&+}v+ z-^}h-P?@Kk$HuR_W?Q=F=je$}_+lRSgVW>f+)O(x4Q!bd{EV6oq*`>X40BqtVKURb<8d>eXNONOy!-yliC^29 z!^@Y?T>m}LOXz6poI8bFPLrNIKG(U3gZafBfoKWdL!DPXBl7#@+2jbANwY>tFxtGH832&Ceske{N3S=W?8%W7TDgZ2>ZW zde5=b$*H6y!+<#87nmxFALTtLn zw7vqjB`X+qWm`s`E_l9?p~iWt(bOGh_S84&+)O;a=5nd~7c19~I**&4T8qy?PTpLha1nit_?XyabzL z&nleMOy@G3y?7hz&WmTxOt1LyB+~B7gX)VM%VtgWl#1Bh_I=*o{`>zv+b^?H4_J5f zyNpt(#q+1LQg57>EHUN&Y@CzxCP6nRf2ql=+AZmcUdr1KW@Y@)J0p1`IA*_4a%X@@ z>)Une29JCG?9f4sjroT{3jp3a5eJc_Im*yl}_z9 zm+{{+T5XedR;1|G!mFJ#wOOwePhU9wV(#;jUxkYLE1Ha_wDcuxluR;mtrl49bn;hR zi^929}O=};yfD?B`SocD33e%q;hn-;uKg#r&eYtIW$ztjL z>$_D0Yc5-GvCK5H*zU2nX4g?Wxum%<(Pq0{!$luYy->WoU~hxX`Hvxi6JGzeJN)oN zX#dlVb;2sr7#}0zJM}?Uvo7lm798P>^V;joX{@h)ouKha}F5 z&x>9r>|gv^uI%w7w|ACXPFYXeE}`1h7MwHfd9_^TG(mMq`=a~h#hJx(%Vn&Nh3s|Q z8ne(Yls!=AjOV1uDw;PAZJf4lfuZ?P_cS>b-{Kxao=s}~`?nl&+uhA9do z53T!)z8*b&qHtPV5DO3AT+5z|uKNFf&C%`Hy>*JyLFe>y#-Vm66DsEF@B6?q+d6Zj zcvtJMO)6`mTdtI>ci3g4^wRUviGW#RGPC(PW5g%+b}VX9_;9S$jOo7aD}ybfEc4Pf zS}ut@cjNW)BasJMzgis^|6WnK_SEC)e3NHxD5z2^I;S)_P(!P0)*O|yU56^&dz%|v ztqaQSjX!FIuF!3&STDtJG=8f=+O}=)Svb9xGOSq|#P`yj&p&3)bGOx^k z{x#Yy|HTtGmtbLu_;7PAyz2bbikbwexSUr(XUp z$kO`v+~+wur@MBsDRwOCaF?&0GXF>C{2$#rFYH&EA+qIuxqSNhc~67w{~Z2v=loxp z@O3c@!&V2bzy9+uGk@TVXF>-m5BG8Zp0xdM&*j;o8}4%@pLs1L@_3qI-pma)rzgJS z?dvNmOj1A0%c3s6I_AFQ$5T`7xHmHz`^u-99zKxT&3oz2qbGdFJOld{6owSV?`!zT z#a#5?de)k}-W!=qUDfBD@w3t~EQ{;eb|km^rDxBE5-ZK#qZ16i22^_a^v$>CVBM;* zpnSpE*kE6+W5>-WeV@m{5!)U&>%*hd>nBWqpl<*1ea&6lkf0Cu>wmp}v|Dd;uhsmY zZ{$B6`K-U;np{!kcK@|63x2&bN;A;-^@F?doUXo|^^+4`GY__@hVU&9)5`Jt{=!DN z^YWUGRh*3rGxpDRo%YFS&IDewv|S-W^XJYLSt@dNRdcgK_vXScz8~&v)eD@of7R7v z$MSq6G{VB1+!C8Iq+VH6>{B$_1-G#K-Jz=<9a6yVz0mx)$GZ-)j<=Ce|(ylnDu))gC)<@5N^? zrDI<$Jk9Q}zagz!W;XARB2Bj?Olwk1uJHVxR&-L;WP5kseV!l=tG{#hiW@C^9`kIr zo&I`0i!A~HUv1@fZ);X|3EaK;#YNwsS$PirY9^%}^R?<8JZ#TA=Nq^#wBT;i^!r{n z7u)jueDs++=I&he^SnLWvFv{Z>{+kISx*33XX~=R)$!6O0QMh&MYPxtGR0H}%KU z3D0sSD}32+XXSbE=aLCwcVkQ^#e7;Fzi0c5$7%b&+gJ2Gy5@82)XT%$WjuX?zQsK- z+-uOxD#oY3@z^t$f6YU8u7bsO{Fy^4EMySo0=^yl}Fe%@T3yjIn7(snb3yvO=H z=FH{4KOOvAo04$l?dAKg17>GFvgk57dz^dwQHis!;)GS7te&IP{ou?csqgZ!$BTIm zryL2sKJWRRt)G3SzplA{vV2p({DV=acfa2~z4~)`(ubFBp=HAJul5?fP3+7Q3HX>? z_B++?=RNV2zgmMuf9PdSGwu<6zHaW5Tkk}Iyryi*iM^k2LsEfdO13DUOuU=s(az1w zZ`{t=Se-1r{mI6PCk#!CmTuUZ^ryD-T3d*AShTO$E8Ds!i{&4)-}|5V@7(@B?IuP1 z4;zw2nAMkUPwsSQ+O1|$w4z7WBP1iTXVsBNztfV5AAU^LzvJC^{^CvDcd$Ws-Pw$Fq zs-2&8|Ki>LC(}=-mX(*Q&&)ht7-zn!PI`U+U$Oo6|3BONZ@>N2c>YhGew$Am``-H- ziL7t`D|_Sn>$BfJmOTx-zhd1bul_ZaBFp+7np`#tU%NCW_{>vAUAH4sTh1yhbnCFL znzVNAjB^T)f0XcsOBb0hH~F;lN`|70qp4n5R<21*S@cVl*q*H+tGYCu%&s(~y;*#! zDI)F4YPsGnZ(Ux=l~bM>o(x*=cXUU}#>AI5nB*;fFc>w6&)a+G^7*?9=BmleUTqNk z_2kxvFPG1M{_5}hhX?NP^ez6e_5N?AzlldqU(fq+<+J#YC*Nxt_WwTl{^{@f2a9#& zVjuYL|0H7@w!*B4HX=9A@`$;rIyHQV~|q=$V|4jvH7=bCh7 z!gDc`Gd@3kSoK677w$4Y|1`1xVBfNkNvU z%s)(QR1KZ>&eXf~*n{6~J1wUt&YJvQ(j`98$y@is3YpL?ZkmhKIkTHO=G0Bvc!Ot! zujaDNT0;G0ds@%si?Ng^pY<#Cu>2bN-lZdELj-@vvZQaj1e*ifHV7=AsSo%Z9bIHPK#dW%e`x3M}Cn(CyUO!>c%=N8n z*1G1D3r%9v@t-;)e#Ya6<$Grbf0s)&IVG7Ex@)6<{)LpUdyan%W4=H6$xbzY<6m#( z?%w5d%bqgDwejr}ADzlM8+UJPo-#@2?2X&EW|vIxS~TNd-t3#rpF@^s#a|b6?s7`s z=WoU^N#*eOJAZeT*tq+a+?;%4$&5dSnyZD9E03P7n#{!BC;#ZzPwgk3W;gfVSujKR zd_d}4uey14SrQ#wyKI^Zo!3Mk`X19VWyd;ind46?{bY_$-qw_Vy@N@{Yx_*;cb`%| z^9k|#Uprs0c9+xYtB;O!3WHXc=Kr3t{o~uC*^eHsuaceSJwH>O z`-^gGNYIMlf)`EtnYNwYtEI_4O+>*50W${l=17SGswR&4RT z1sy8N5@qafa<|QhnsF@a^p`_Chu<~)@?m~z6%j15NIbW!`*o;SK}Fg0@AIORy>)k< zE3BCw|KsBSS@j=(-hcM=Y_>$=isy>GYA&X}kCx}e_}zG`#xtc(G`j566-%|K+RS%c|ZiyY|hIE0vvGBk-WORxksO*^?@O=!f)OBdfodTRfEV|5`rYi;cB7dNzT zPg-g_rO(CNKy@;c>%?Ue4gxMJpPtM-w{h3*N2|r(?frecI`pnB2g_s?roX>e@80$5 z>*`hC-~DaPcUa1{a$4%wDR$o@Rq`_4=nDkNZD=U0*Nj(Pedd zlSH=e#ciLreENGbBqIBfhLhE~@8ZwWc*;^VV{!#OTvy&ty71mPswqvzK-Oo&Nw(8* z(yLVilnQyuwyJcPEEGS~=4+fY`LN>bts7+>MO2TNEaeqWj^x_tyl=wtXJrxg$sM<( z5*t@&gxwYEo3IPnBUSopE!i+26%xM;9GE8pVBFROT}4p(5_x@y46xC4UQ=?Gv{t-^5$5 zXyUX391@x-g3L`ZuA3fgU*M^9^7Oie?)s0mL??(G$!&I7DBCQrcBCZwM$UzUJsEBx zZU21wrY^Md6DM-ft8B~(I&-5(zU1T+g>S5dOEwxaEo9kfWMdS3)TP1ThHJs*4d+i@E=<;o-^moU z!0lVX=KETD+w~t$TX5(3!q$bi-Z8Wl%}`t(duLOtnx+rCwpIBnOxAsuo&R@$6uk~%*aFNCF!yaMIWS+NWzoToM&)eEF-+0T$9VW?a6KdrU z%=6%w*!!yM{RQ9emhVq0IAMQbV%^M3lX(32lyz5^r+Q61;5_A$ZLznei$$ z6=ar9_@sB z_b}Iome!sash@mH`+PU%81Bq(dThS8@wj+j@w*s#>8t5Gzpt;8>Nzk?EY8uuY6^38 zi+8IdSQo ziG7neR#qA9K9+IFz)SRp$-1|1cy0Gh7T`0q-=M*@pE0X_s6xuty$ORmft&h-0qvKUdLGO2pUVZlLZ2HAR&x)spGu}S>@Vn6)KEa(A!@Y4`tdHQ(msks}P* z(V@Ri$xRG;!3Zs#Z7DOX*=u--7+olVGN5=!lxyt7e1D(k-exN)6&)_o20ZO^NmG2-`nNu zL(+<}!~AhvoXr`^PWwn%y##KKj=pnc1Sx_eM@#^!)!J!!wy z7c;%kWs`X~-dqx*^|5>Zx9mA~wZBr=ANbTP&!(u_>eYD3f%SNCq3!ncu${tj8kaIl z%pET+Tm5iZP;3o%E>G0aoV8OW^!Lua|ND#Ttht$P?CYMdRL@&>cTIw&_l|YV7iTT( zOg!Xw;@2ao=+mJx*V7)osLMI7)Hg{tOwR2AO%ieDDjj19NT%zb#o zW$KA(BBv|uKFs@G^myjvKgaj)W53kaw#~$RXL8G9!`C;>-tT()^^SRQ&)PE1=0*Ge zE0o`>Q~zG`?z}KZaPX!ZUp7`qq-M{H{UN^P$ZrdyBJ<4q%pNgksyBYVR(Vg)Wl_jY zZL@joe79=v%y@Tdx{Yd&$h_%R>C2;oMUG0$_1Wg*^~`_Te3z;^{e7P|w75tgJlR>< zws(1k*{hroWx49C?z3yBn{9o;rG4Pt)?0-#GRGI*&3jxax9;_)=>1=#=h#+%`~4{{ z?p>j&$!kytWB%UlUQ6qRHae%SdpUKcuKbg>Uy;W?^KFe0yS*(kKDyfR-idOdZvo3Y z*2l^`3@X0ep>be4Pf)JW3ib{kcK7I(Fdw@!0=wJph_LWFYlxg`x?ui8)>XT!fNR3` z*kx>=P1f+O_MLxDZB3ita=)*IHr5_-l~=OU4_v*muleo4D}pm@#T`_B>VK~lyr0`- zc4oV{gha`TQ>I$(GBUh*PcCe9{D}E?mOIO}vRv~%Nwmv*}Pl@47SI$9#|xKgoATtlS{_zFyp`<1u>1c^G|57hezdHI+(pH zCEINJS+U|?sd*bMigfyyCpo!qyxDW(3v-D31s>&&m!h)MCYRjcVOz{I{dFnZFPmk* zPW_n4as1MX9;MqQ7nX8p>sp1Vsog(0$(*l3@NM1M6|>bhIm_fO>`|Oz*f*u*n((E< zYnv=I{Wb~3A1gjKQ%81b=?hK0HS<+-RA*0`))sVc+10=;x4EV)yLTA z-!Ulc`M0so=Jdl`D>J|O`)>%%f3#CB{h9X~6Sp0Ef({nyFxfAN%@$x2oIB0`0%xMT zl8#H#pPRZOI+_A*-#m6MTg`XHdk*W*BF5ueH|Fl1UcssPQu^g_iMyX$1Uup`UC?zi znY7hSaOq^jd8sGmrf7Ff?t8r5>*CTI=e%xxReQ~yeNsO&_S24k4C{6^glA5i_?pGB z{e4@RV#|w_ac}Ru5Rwc#$bY`B)9FUavZ4;Z)vh9~K0ZDLr**e~n6`aSYtha-*5~5> z{Oxs$?|it@Fz5KIpJy@_2fvv5QdBy&U!dj1%FT|GPMn(O(0E|IX~fKEwT|mASFrtN z%U>*LcJXx^@4^eadZ#q?vHV{p zw>mFss|7CFoLX+AxxJEKvt{*axpbbExdM_ZYI$DLQPHI#5`teuH_FV`=umjtXECq4 zBxm2JHzwlK+IM{Ykt%cBo#FZ%i&JY~n-{$oj#n1nAt0SKvw?r#$GJXzy_*)cy=XbP z#qjaYl(%Zz@9yc}UwLWKX2yvA0r8+&mba}I} ze$D@mFWfgyzJH;W6l?qUgaxCdx=NQ$R3hKnl0_+7jXi}pulR9X{H?QFX3MkO^qpP#Df&N5Z#iL2WFr*%h3Z1M8c6?w3=05-=9Hv}0@ z1Rc%R!^dCv=ElbNSEDPBx^5Tv`GDR2M5nO&j)I3w@jniUa~z%!qZfE=&ji`WK`$As zK4fmq<~aRm*H!hEKVI8ZJ(899dDnbiZmMS5E8e!En=G3Yc{Z+9X!Bj|neh9D(bHC*U|adZ~t|E#t+4f9V=JxgsF5+dG_XJW!6I@)8)6o6zKUSHPoLQtV9JO9PY4VuQ)aYwxJ!aepvTxB9(u6|dAx zKE;zRNhi*3n6!R!x2=upNiXU7GqSA@XY4$>DevMZ(fAqlQ_R2nPL$lkHg)69EhU{A zCK|~fHZ@tWd3&Dfb9K{D)2b}-+bm?hk;P@&A=%cTgA20F<}O>bR_Rl%f{cV%rQX&k z4rcfM@Qf?pI(FRGDvI<>J)+hn>gKrr+{a_#d)sEO+dr>Hae9oj(}k?Qi;v5eFOk0=m-eYy=-7tUKVI0SUEpvzWb-?uTwSnMP^3IKkD|EcUy2WCFj6~_506V zc)+kvRM1T*xp}Q>ufeghqCIs_MC`xs`+gzg+~m`h5kfr$JO96_(_6!{^z_Nk>i^u- z?+P8>b}CL}^}O`JIlt;k;%{@>{xO&sx-I2b?6QLA?~Z6Fu2sKZ`6;&hp4C?wXY0fZ zRqyTUH4Sg>KlAaRdWLznNtEH|(zAd0*Vg)9JDIoGBimQR^+}QCBa367ZPK1S)3E<> z|G~TdI{te{wawSHrTsn8|A(Xg1AF}eXMS53yZP$#&o5@0uhAv+VyYQW?zs;RKP|$a zJ(HA_Q=5POeN(EWqQL!QEl2ikx%l8z)a0i=vzytAOPrh!-VmAEtw}sLj0{1DhDW7ODn|Z-G>*T?IhE}EXSLHp>oW160gZ_pb z1HK&_o!Ms3TFx(#{9zNePXo||1*u*E?!J5XxNiB&w_ zv+JDJd_J%u<)Dmxgv*xXs8Cn6{K5pI<3Y>L?fj|xN3G=ALJO|f{%WzUY4;wyi%t_bM$3ksf9@ zgpYH(WE^tqSQ@{}<+iqIT8`G#TI+*!3VOOnMo&qcjkv0L}&A&IxEt@{$ypPUL7@7#KDn@Zo-wQZMe z|F3yD!BjSB@BGS2rsy1_tXfIWmYuKurW(zhxAV@qb+df#d+&`qUMN#ElV`4m+fl)3 zVIgmYvh!wEAG_~y?DVH%``?@IR6OoIY57J}&c5K{t*nA?3)6*mJ}q zH&wlJ{|2F8hqa~~y_PGyG;}$?TIuDq^i6t&GdMbrM15cP-)X7GgZ7xJUrLWJ3oqck zI+gcN+H8xSUF{5$qL&CCJF$*|`HPR4@QoP<5~aB^FRfhSC;Tn9&xThtV;?>!n3^uuW?{PZT)13q%Rj~TGC#%Gf-u=zI~%skRSM@%4nuC%0gsPDhK{1VbeO3HRcqVavC&ypHpbaahK1HEH&oO&mlNfQnUVl3Xf0R z`KmZU=Wv?#k#8o-OY7?X^~t9fNx5c=iggw|soK%#d#u+ma>w)heP`tF|5m+M_PV#{%h%6ujEkRei`7c@D^@o> zEtuxI{@lumj$)rUuO}9oE;(N;F=G>F^4VKK9;>H1%q?1XHl@BX%GhlR&)>yj(sTJ- zb9~IyR&oDvdt|V`Xr=2u70FZSE1z1$oXT}jIngJ%>2FieHKm}g#=_ZOTV0s%-WMpb z^1M1TKegiRkHTNa*>~oZ%xX+xRa9O5I`rBt={5PGlG^hYgq(O>p||vp0Q<6I1+v}F z;;(YHotv!aoS||$ZtlSi2Ld8IDr8O_yfo?PPG6H*wSObqK1`5x)JR?;bi{4qRkOxx z4>VFClm%=z>ua*O zy=-w#S`ebCwA-~`w<1Xn{xW;-b0VsZF(5@iy9f;Nh(rVVsxeb^|qgvkK3L0 zzw;w(%C#SfZN=TSE~mV>nHm+6w(L0Spn9m-gg<_k0++JZ;lDr5nw>q%7FM-4D>)<2 zEa0U{^0zahIoB0mwRkwLk9gsvy3{~orU>V;8RELvCbKo)Xmi_C9lbra-J*x1NkH^y zL|=2)B&L=Zd+lom|xCC$zFrL1hbl+iT_>~%5?i2tM!`{ zf5xpMOxky4_>`j?4}A{GpSb11q%!k^Tejc-+IKtf&7a!iC1uYaGc``Rtz_V^N?@8# zyUcB-i9Q9#y*GbJowjkY_L;SBR_gAZQt|4H*z2ndA0N$PxF0B?=ny6Hd1sumCr2a4 zEs<^0BKW>Nsn{Q{*z%xR{*S`?>btKiUMy_i@qXX$iqEs}pUIB@9hJB1HpD&$R`F5gW|I3Ls6PM1M{arZj*oNK@PSak? zX07h3WsmK$oV`It=o-t^G54)w?Atm1Ujaj#9KD>SZ_#gN8AQ8Pr*~zlSAIwFM zD$d??svvKz+g7;%uG~$(MUSrWO}lfDYx9=79g_Q-FL1UQ<{VDF+cImxdj3C^j&}rQ zZpJHgBr}O@-MVD;Ggh--9w!v|mgzrxdwKms+3kBJ*P71k>3&{$X5CcDd-exE)-1{q za^t$)RC7)_gm0%$694S8^Byhy?Em?}FG(%OX?8Q!r*N@%F4i%T3Xggte>V9xo4Gzm zY0HHsX|}$ClwSgi7a#87Pg$?d$vc6`$AWs=LLC#ZP#UD|b>_06X<@mc@Y zRO{c;OG;W>E&b!jMdl}6mX9L7DrlCyI&f$5E#LC`wUdSU7rW#xcaQUb*dD!l_8Q$a z31t>PZS`ZcZSS2szBSMzQPE(Bo8ZyMEJ?syBCUMdrgQxh>g$ zuG|W*JR|jR*V5xF(%3ERO^!YLWi`{MZT_Cu>ugtCJ*~294u>Yossj7%`wLrYpK@*6 z>$O|C^Y5MyJDs*U)Jb~wGX09nD^-owJ$mRZETZkoaH?5U z&s0xEw#q~FNzi=lWCuwnd(RoWrdI^D|ev6pEC1*O{Z48N;;Np1V z&CQudj%$^2y^q^I9T{uI^xd1B&*eTo zDHi8<;iZSsyxWhL#uR@L*xony(dX0s7fzH2cs*bfQ*LGYJ5}gx*>Z22+kfL&LZY9> zPL5v6YkOK@UER&TM~C0o`N^z)QnT*Yhq853oH#sX&t9j=Az2p-0 z=Ge4FjxL*J4JVyn@K&X`b4p^dr5hK=Z8mNFz`9KfzD_(^u5@fM*R_(F>gVGVwJ*rX z&pPt*M$HS^@(rQc0b0*EmCwHJ)BoK2dGZlMiI)p{&;EVByz3A=!>fXMmoFE4E8b8G@a)D!&0}iEE3RkXcR4nB zPUM_~(tU?&wtD2)7_`;?jqVA#<&pTp#mrk;(k#j{XJzH-mEJv5Ow0Fve0yh4g{=-jBHUZVIMU`}(7C6buNj{nHox?0M+r;JO(7p%vw)2WOAUM8 zr3iA&(l+y-fAZtK_osC~eCqtHt;|w3Q-iA@c6Qn6?$zJ-&)fCx z9Jup~%ej?na`R%IUOs^q!+EbSaU~U?>4sGakJaE zgQfF+XIQLbaNnP&`jbyTEr=CAUYWQ!%eq5k^=m~p={u8i)eal|ekA0-E?+_Ah=f&~ z&)-c-eFrzP=0!em;mf_5xcc4^4QDfrk6+#Og9Nw%a$}b&&-eM( zC(_<>#s7Kq|J3^b{rgXRT*<_0e*E{n&wNV+-u!?6{p0QVzjTf{#4kN?=$OIf!=Y^5 zxjLEwP6Eff(#7;YpO`EzFipXF?Mj7}E~zE#N(&?Ae&=jTIT#kWotHJ^!}bLxFDIp8E;7oBZU5M#Y|o6*vGiO;k&^=F4-dN=OV5uPf;CZYXo z!zY1gHh0gM+iu~rOi~@LZ4^9aptSi+X!Mmse0|CtOp`Xg?@)}Mc4d8rPV^;xn^VqB zG4~c;nf@@m?v3(|blQqsL91jZy0vZdBSva#GSYf z9^Nb%#oe-Hl3v}X^EWbd>dV7_YAf_yOc1*B{na6<*{83{Mtsg|VwAk@XWb;W@tVc7 zt=#X|1YdI&k7HeOVddLo&9xhkY@cvM)Owk?M32WLjn%hZ-wr>ftN5 z9ORh1Do*w8b%h=Sl?fZxeOVgB#iJ7+wP)BZ!e48CPq>tBvZAQupW{2(3fc2~^6Z%#cWrVysr`AH z`JP7W_j`)hf2fc=w(M)Whq1r=nZRpu{jrs8(R}gl630vq^L@AZRC?_9?;9U#>mF{q z9Vq3}b#>>*2T4`-T<7$rR6aOl5~j5(#WP}V>^sqi6GR?(#!gT<;Pq1Pxa7=x$$sIy zeiFOxS#Pl2>9Zj6i^t<|_d|sf_U4UgNG2ftXR)|2cK)!`cGVE6uOOY|+-?(=qK4QtOi@W*6EhkcqA;-cJ>WE3}P zLk8o{`UKv|NryypEq~k^Rwg1+W1?@{JF#l(Y)CUMw?EdihU+^O)Hi`5VX2 zUZ3~q-*UOewywysq&32>hb1>{^v%iM!0Qz4BkLt}cF~!l z!@AdtPWzfCd!D`E(HUiZ+_<>;&r#vu6M}?T6leBKE<3S({|}3|pEQ;h#!73lI;tNk z%}vVvytUX}QirejcyId4Z@Xvrvi+@fwW{jad|LFJja|gZC4+Xj-Fjg> zBep5qTG}aS&y8tw+C1YH_q-Ejd#2_1C*=}ja=TjDU*_AB6j-8GFL^QH_NU!m(oG7- zN^{M`uCH91AGkt9=#2Gk*K^$SuU(xZ>a6fwU>mpL6t&MCw**fyuRrL~ctJ{)XYLD` z#cTh2t-Rad(^{4}DZu;R*^B)GoZUx{x_EKa*|c`=?i~*&Uyvp))+3nt$WR?=kClk->ZM; z-3#4#T!%*naEBsju(q&Zh|0;DrqU6%;B zcrAS7Vsw3DuGL(FhrJcI?*?@`cx7MToAttJy^!7UGV%29>1rNb){BL!uO~kajWaEr zcJ!!fnqEmn#P3hspT8aNT%IJ$|CZPq)$3pX>++rI_j^UUT|fQ&v+nt=or#XQd(Zy! zvp1UNa!kRnlO-=sV5>tFo4I}?~--zE8GzIFlZl6?c(Z=msiQXauXWvFPP^Yv z^$Xu${vOoJCY-Ow44`pMow91cnAM2_!TJ})WAwp!E0UsI(|xLEtPpU2coDo2latvytmu2%W@ zq$R_$WnLU2@s(+lqL%keSrEMQ@VX?A^#TiTzxD1~fA&|HQw*PS)K<3M-l_Y~zW&W_ zwC$Q%W{#?KsdyLTo3O*43&U+cMsNOG?7yx!{o+OC?0o5IwbqI)2gI7@E_t8#<&<~y zgS2_)H7!1BzF6jecU|6t@{Ew|Ew6PKDI6)wu{v8;_2)^{JHNsN^E;;`dJ8rw?0$Db zN?^*-{)CyDMfVC*%$iLnF$-BH={TN@Nw{U{Z~SI)uvYPst%o8tBSj*8)KhY5=4{{p z_pNPF<@deskDfMmTReZ6>inhe?)j^p+AxzdlJE7Olg;xVFKbq}w6QsP@?@wQdsc{a zrQ2_zR@u3SR?M6EHn}caCOKr)3bnvf4|bR(x2tDfkN)vh?d`Ju=Q~>*JItg!XZ<<7 z&MDSNR3K=Q_S28A*XF<0yX)C}V_u&6(bfs!cR#u(`aCBNR1}@Ryozm%ft>*T&pc9cr@0gsAUEST6?%8e7(~;b|WfEs!uICg_pMa%P zIyYVId-QnbPsUq~ts;gUxr=Hf+)|9+eLj@6>(8vbBZZI5Q+hm~RJOkGd{-uIq;zzd zmtb+tqEjAqypnN=W!Ih`nyTilZFe^9&m_yD>W_aEQ!h>U6SpI|Kksbdt*8eFKN<4P zw>ULB-{Nfb{oniEAB=o=^nPdw_e9XeV{`dmA>c*I%AK-PIzDXT)}o-eFn;?H+Je;|i3ql@6%~qM()IFQqgEKE>;nKuA+6AB7 z@4KXbW?J6HUzAd0f68I!dMCBnIy)rK`z{v~Qe@$eu{rVRnt-E3?(131g-b44y;Lhb zyJZ5WXGHc~y(=e0jugwbh`3Dj@|`*9=)X6YEPU^~WlOBwGBZ+p)6?k!hXjsV9sIF; z$KSHezSh1nh6|Ef@8<}!1~#qsU1(JuaAvw#tn=n~u64kS(`#ffsAx+!hMJ47ju}BIYN6L zTdY*cS#)iR2LFJg{=jT()MHrnl<^)LSHgC7D> z>L>TT&NE*y#Y^*(lR-qz;@$(3mWAKnvCjEe@x@~Wl}isWi>vK?e2jZXn6$8ZK;lf# zYdiN>rF3;`Gh1vsSeCQMBhlKdsik`dulikC>-^gaKKqnsmKCa;j7yDw`;?JKWcHqa zKT>5jADeo!RBYO9mc~bimL4na+bw=SGGp!bqjvkcGt6e6VQF%EXt4j|>ixH72fRPZ zUsrN{!R6)tn|JO!dFITSb^CAUY9IO6g?Z=nhKXP-aqSrSo|FdU>wk6lSx&B{us?)r+XVth4>(@Ns zdsp%I?2dKKudTMsva91V*AmI@i|jn0AUgMz%FH1v)?h5P7VI{B@J7z1sHuQkF|2_ zP>{^6ewP<<>e5u#S68KGI`y4g9PGJ0YJ#7qh?UunzPSlKXU*Ib%90tpqt=)Nz35lw zILwjA@-?gX=}pybE6;|TUfy;2Ur7AE-7~db|Lkn4-Y7dwWXHEYrh_l;-Elm1WTH*H z<|N%G1-9z34cqsB&QaX`cXvbC-lLzEwzlxQOh2=$w_o(lu_?1-zjI@dYnOreaYo$L-r2U%uI6 z8CRoh#L+i({(}420;>(rnazLn@LBlJ>*fCyug8{mHU2v&Ui&w0kB_s2QHaHYx?ahD zma|N^7=%nW|9RH_f9;!|(*Ya%>uay;t50?~eymt_)mNznKR@u>J6Ufyv7>8$)vwog z>i$G+%A2-+p5=+3PXiZuEZn*8zw0g?Q_wwm;t9vwsLjVO8r%|?y(Hr0 zy%5e{h2Qs1Hu-n-o6D5kcbsaLZr^9zW`AjBxl5<}?aPeqk`E%p4hix2_5?|;dSjG* z<)z}5OM5;03?JNNl=yLEy5EHl#VvCieE)yn@wQE7yWH++>S@P09yvYgo9oHL-#fb? z<=>Ni$yaV$#;8B+(^x9}Lxe3i$dG$!P|*H6sw*zeJ>k4*``208FK^$CtkFpH)y1=t#MMZ7$udfCpVO-?@E_p#Xi`}vvk=G|+K z+I#5Gv1?PLBgLj4YEfqQWIxhc5vjdL+APg6Wjp%Od>&X66DLn%F`%dfophu`uTbM_{zvvcJ4?wN9He zvqIEjrAnLkYpl2)_2kr~iKiHnp9;Pzou72@Le7sL6P;6jX;#mQIz6FKNIms@DaT<6 zMb~`AP^OOU$6J+-?puG&T!?3_;gj}+i?dVn@+MwwYf0EF&Ag`0m6V>wJ$j8gzX4JHbo!zViFb#nn3!HF^Bc@NBpw zEX4#G*0f5>GFGK%f0$BvfjxNyC_6t#J6$84XR9=2@vVx^xR+hWgDU(9Xmd{;GV#sA2l!jzo3 z6E8_EDs0?eS=0RUxQy0gF>md+v9GVi{dwCi$dqZaj%#P$)52MaXC6OQj`_XnGN|ol z{eI8q_rFBGKgw5}w|>Qz&9c+EyLnrdwVO_5N@7hH+cskw>#M+y0M7FYo6jp;O+59n zdZX?IwPm-(&ptUFa%$<5^2Z7M-!E>nKb>00f2+jcnR3Vx=@YN{leR25XuRcd_X|7c zIq?UkPuF}M95dV2Q9|dErtYR$mD6fgXg*<=IK^N5(WkxlYN<}{{%qgW2ZX37fX;I%WU+%==ASb~;ucO-S01d+_f1 zI`zkg7hkdFn|{r$DyVLnfJ)z&m+ym=T9(OL*1Xi-e`;rEv_;Ji+cjp>BG#wxczVNT zatq*QZVBM(6lqfss(Ct-b6v=BA)CEhE_gkx;`27{-eM;G#=cUck^RNn zce4&YNQ>RYxm1KnXJhZl>r!*=^n@PRdd-wOqtz99tI=;k)amKsFSgX|Iu^bzS2fLd z+MAho-@ZALnJW>oZq|Y$|oZBM3CVCZe9nyHUGJsRD zD&m!&`Ww|tMqk-p-rIcly|rhE%dfqvk|)kZ@1MPoW7j{{-SXyYfm?+RoH3qWxLJ;Q zF|){TZ%sxqv2{90x6OX{%cp!h^OS|FD70kij$N1c>%Gy@Ja9RC=Vn%kmf6c^=Xxkk zJ}GOR>Ra9()T!QS*mfeN^RbTZ)&8zT@4t$vlb0r1y_vneBI%!g$GcxY_cA>Z6}lT` zCZyZ-FjYrWl8bB2P2Ekm)Z|lNLM& z{l|y3@1K~m`#-wD_qD8BJzYJcY*R$ol$hB}UWb`k>Rf6Ux8aFm@%9EQf?tNU&=UeUU`|(fOl0t!?*r>y2E7oZFn$1`3 zOFqRcx~Il0v!$dmc5XxZI)~MD0-CCaf4iTU&XvH!AHQx%w$r1NA5X5IyWn0K=hpVz zNRP}QkMLUt4qx`Pc=&H${Xuof3scAVDVL{-DV;hHu<+>G<9ZJ_9eYzVwMsc*vqi5M zpLX`YxQ`#pMch0-1$K8Hv)Q@9v%Yw0QhN7qWA+<1AJghSzUzPExHc~FV%F9Sv)Q{l zUX;DbXc74mZsX<_bBecr=R>Jp4W%qeGj=n}2+g4Aiy>Ui6&E$8SxgnWCv+gp{HI2N zv1@JdBp1~P{-nE44xM_xabHE7?sGXmIU7GkV-B~;=I$p?DtCHKHDSpK$hAHESeyUy z^?Ko@k8*jQ=H#qydi!OgfSr%>4#v$alO+7jI(v>k*>K)Ee*2*#3;L(9HMZX8JdtX{ z^TkU4X3y@|%#}|LMNTs_+pt8%e4T|s*pvHz@BD8QYBT6rSrPf<|M`2f-95|hmd=}B zeP8JJwCb?1)YP}Df--eaPD{DDDd)7A#O;LSWE+zmjqfrOEDjqP+-2)|X?aFwnSb+3 zySonZ2jn(LPCK}}Hz()hw3O3PYbSZF(z+Tq^|zE{^`7tV_I^HItFII^O}Fu&!kqoZ zOU|6?(N(^;_xtvm=@M4kHg55&O_go%kPh0(v)KArN5td&{U1J?yw;A{_e1pE?)U#6 zdCUK@z4j{dUEL!N^Y@m=AB!*RI3eWv?S_TH#uM3nagXxl?)R1ig+yQT+#}qwnp0GL9k0M(HmR!;-lbdy{Q&`im;FgP_;&~@V7NvOw8MzPB0#`)DM=iemN?}s- zQt5AVig`CKSvZAb?Z&S@HkP-FR1V!(SE!YIxMAVOn<=^5zVVk&{m0##qu77lFEVwO zfeXjMPfJ;SmaOpM;pgCXkoYz=d7kvkkpEJC>6c|}%0%a;&7OKQb=O)ye-nq}5v-bT zn`iAPc%iOb%WZNybZh_2HL1?=*NnNCrs?T!s7akTG4}C_fQLWr-nvcpK0n8utI?Wa z_Khr^jPFwj-^XP84`!?03MGmx>^)G-s}4&&l#RaYZL&ui@hO$W{VnYuUiwmykd zbBq64Kg}aY`PccSy^b$$^s{hSGu|x|KVB+v*YaAkn)>9^y+^hD!|I!&kKI3hp>Oez zx;^?|Eu_`vUAXmiSJe5(Rzi(x9Eax}cYpM9;eO9Un!orxFTJW-C_1~ybn&_7HF`N8 z-t1&6?)H^B%b~n)=lcU?e;&6n$SnSGF#X@0DOr~eKHU`kFeq!r*6DkD<17FF-tI9! z-+Ar6>PJ`C*O~UZHG>wpKPj^GS}K%ht=7G^JvU^VukO=}AzdpT8Uq4e5f?ct6PwWA@wZ05a~yjAw)$I1Ku&E^s1E;%E(?~lWYx!d^e^ zRsPt=v6w?Pb5 zvySA`+v?}UK5yK!@TuAp?bi1vSpNj|Xa_aDVJ_2&i)(o z=eefcA&;BQwF!sCBF=1^?X~gu2f0NCNyU4Q{kmh6IK@XT)&E$yM^&60=Mv`MTR2?a z|Ju->UA5htOKLHXwz&93x5YhAw|Z!9TM?yt`GSkpm21x5qP*l*vvYesNOEKr-FETN zy3m!%)_)6)IP9Az$a%SXygcGL&C%ohJI7;RE=`^COGNjt%DOK%e70YhDYNv9$-T0V zA7e#51>ek)k$vtr>(k~Zz2|pbS1M8NG5K*SRpZP;!<-+wT8?df(jT{F$DcL*&A%x- zqv^MNRgb=WeaFmS0-J6=TeyCG;ZnIrX_qV3b(g3_y^JfAaqUvrFnQvwQ&!pB*R>9xZ!5StS$Cl zr=;JB+ZDP#-uai)rErJKvI(luXBIlOmdG~cH3YWZy2WPvxcJYP+x2}hT93{ga(!pL z^}lr3OsCSiVna#G?S0>W@BBI|d*|b++w)J) zuNQaU81ZJN=(%&}K27YeQ7LLJbzG*9X~w%N^~E!j-px!>v!+-%T76I6k=H0;(WvaZ z=O?dD$>sNv5*)fOvzWO3!S`pSH}vrXTh?|Jns{!yd4-2v^sJ4gRL3_KK|9MisM$B_y1lb#jK zTKY<`=%&uy6{jOsavSz2^N7COl9E$%#L4VXN7Y{6g)vWhkLRiLIQ3jKJn6f5irVzk zA3EE=U+BEV@;2|yg)H*`O_rHXeJ?Ni-m9n;J6|um|M&0tNhy{S0ZP}zx>+EBd~3^N=s$#8m~#$%uY@@=2v7BevH-k zlBoDbuSqY|`>hjMhClya>%Xc_wS2-kMDW=wU{W|`Zt;O4Om z>yHIV6~_}cUTW|BVySb!wLx=>X}$1Yy|ot=Cry|UmAc+M^f(Kz$5X+TPVc2kmL6VF zFQu8VuUevWlW<^h(m`w$+vi| zP4>K`RiSE=xY#{?w`jO#PMah3|0#R@%##Z*R#Yw8`L->2O8*Hm7#EZMBN>#Ui1{OyNR%dcomUvTYIaiV5!=Zo{Z9dm2nE6%HsYL<-neez#( zV_Ep8RjbnqWt~^Q{`B?pVx4R1Z*p5z&+MM}TX#N}!t64^nav?-X%Ty;EYFd<{i!bh zc)1pfdzin$wW#O!V%ImnZ>=C}VdWA)aB z_j+>D_b4kc|D0>EZ%en&zv)RC9Y+_a$&H{qIbf-O?v7uKri=xBZu#AhPpLoYdNM z!DEW^_fK^9`)3-s{n(#NlVkRO{>qW~qKrAHj*BJ6;`*aoug`BRU)A$Iavht);+u-| zy%$fBI$pQ*1ew;Qsin+iaE4BH8vF&GR?DsO0bY zmnc{J$8%rN`{p~_>Zced&Hb6KEYzO4nCE7)Y~BBh_RqiX`z9VTU1pz@&EfrZuV4Ro zdjG$(-~2i1ll>-tbNc2Ro0zqN@xZ%_zI|_F9k|XWnVw%RxBr-&`NwLx66c_O*Q@_; zH54d5qrA5If~2XzyS|H&8=Kd?ZQEVAU3&A?*^HOvAI|>a;_*BvW^)>oN(J~l!E%;~=uJYHS$M6A+pgRr2wSoDiB=S2odAMfaBgg$gV+7dsT$4lyIPD6tep3w{ine8$Et#ye*!q1-RmSYRa!O9W^Hp^I6Lid_M)YU zi$YVBjE_j?)vK=G`7pJ`OOQ>F%~|W|$E(HtpKsjKT=jBqPs@L?>n$F~{kZh!S+omG zIGLJZ9>tMqImzwob3vz$h>u>87OMr`SXlJ(DKGgVaH=!)ymQ9&gT4=UgoVX$-;^<>TG;+_-c!58!E{F)EAZNIwo@|!Q$)=eq+ z@JjI8Ih`P_D2Z$HYoAKYyWAeL_r?p=*@vv=2%Fn35xHV5Ctv$x*1h`+O)dJ~dPyuT zjGeA=DNOUt&eA&vyf3&FBqU9h&a*n(%I#hAu})k5PkFD)1UKe&f%+A{-`opQdsM)$Ag+GA4A)#jGp-*EOcikhB2dMxwS zvSvf6yPvfhr)4x?b>3kd$b8kV(jRmipwiFdkInvLg zyWczgrqCNRbLlT?C1Q0mPCn9Z+}Ox};=-FN^#Dr>gZm}Bw9cD>jxXtz+}r&?Q5AXH2@!4`s^{nNT3aNvQ_v&7Ga5ui)cFT4li}8dXUX0fK?-gH^ z1SYmj5Ym78aJOD>7`rCRQ(5Jb=-6AmYF1fFHu8&|T3#Oyt?9TRxNNtllj(M@!bQ)` z`WW?}CQVspWOk_Pm}0t8lc>Cr;L;$zt&;veKKYZ`*?vTQJnwZ_^;ELxsiS7@%dcB( z4oE9o+w*$H{_k@0SNyXKx>b9A#tuQp{2gFa0#smpCn%zF?;usS<*s0 z_nqfmH?aJ&_(^cP;i1GUFE91|o8b1CXB9KY1+@pASM`l0r|y^#dHAiB%+6o3TW-fr zxm2;vdAIP5-ZP~q(rTjK>N!eGJbz0i%9GvwmkZmzvaGK3>B|abIh1ZMeR(j9g+o!3 zZ+gU@9RmKGF8vBMk3LzH$3{PXaBpuapE1 zS3qO!gMs3jyc&ay*MLJ zR&tvoJBNO=L0HBjG21pn#z{Pz4?bV{Qhx$}vCj*oscCHwS2XDPEc}#w|HGZzAN9>A zHQDN}JDSnH>hjXZEfR@8bEOv@U9Gh>2cm7{Bx_ zE6?`WUGG#|Y*HML9V(K0JImL?w|TevksY3Ya&Fx_Cy_1l`bOu+FQLXE;bs}vXK%c~ zG~=3-h1{)(R?U^SmIMh+_7pB--sPC`S}5`9uD4TIi=Hw)y=bHrGDYm(k$n%FOUi1e z9Ih_zdD33-WTxqys5>#z4f$V>NcSZEdSJ3LrY~t*w;5mm{M7|%nd)21=7}G1tnHp) zG|km)lli-zMKfk=uD#&-Y3A2uFWYp}_TLO~SYor~W%1({0h6e<-STp2hxR*ck4)Yx z^>1(7;?~sLzyH1c&}(u3*!|ykMYcxqCi4Ub2md+I|L26+l`QLj=N?KWUYL0B>jDG4 z8y4vqKYdUAW~tzQ@#69obDnt`6VJbUerD=@^{4Nb+^U(h@}c=9Uh~ZDVi#|ySbA!$ zxiatI+03vb>L<@SY@3-}Yq=RW1STz zKVCO;c177kA?`Hh?>Q%$ocG#(YE|As>!yz-Z9lJ?#XT{yzkbxE=@TEj{`5uH z+06|iGbj74o%r?nj^{6#8&qwCW;3`=RLa;o)7soSDbIb5!MDvv>dL*l_I=(asbN|r zrN#NiYs;C5J78-8INHj40;JYP==HHQJ}Y%UZy1#mcw)=ND1%VVf~>rj&)UK+7r&kO z)tXeB**le&+b|&UivORbOALb2lCE=?zm$D>gR`a4X{ST(TCwtk$0ym#+LElhmmS}G zp)l~m`$bY!;msTE%VVZ5X^fW85-MS~I%}4Yl$jvid2?Z3Vs#K#%)}k`-TQpD81D6) z9mMwY?2d(TVlz)gK32TEU+b;8P>V~7)&#AlFM?`|UabA}<<|TSTPo}Wuc%q`Y`LUy zT`{=RgFUkCiO4FOCcmeJ+dp@{U$tV_d__fJlT1MiDP7a4eticxB~MPX*pS}lW7cZK zw$|jWpU1`tid>?CijNnkmc5_%Wads&rT=;?=8rsXukD}m(oyMckwlA=s#kDZD|fL( zt_H98+OEWXF3aPNd;i|Cul@D!427PB2i7SEI#w9Qg(OzpdDYhuQ zD!Y+m_CN0X|Ge(x<9&rME-1d+@whK{$JMewdk@LVdlp|!Y25nJ>XLa+neD9CZCgKg zJ*sQ=)1H=Y-)Aym{>PQuoo+o;N?fvI&lk;O>3kE;N?U19kTm64`+UZ9-$gevcW-8L z3@!TMFmbbZc8T>YXJg|#8=h;O)3a$gv0r|sUgP7$9w+wfmbs}@)+rmwab&EOe6_iu z@m5-kVL*QFr9i!xcQmA5`?j?gTkLbTn(E}$92AznN7llobmgIwKj%t3;_SF)aY&)| zW^<>{?G@Ai4NPyGD{6F2Mrdv@yEvCmF{Qfmcv zq%Lw$ly$tpds1W*%iM;AA0OU(D>U=YlNJBd-mjVe>1J^XfA@5;3lo_bSNhBfF>_sh zwU?FiS8P!30l|}{AA9?kAL=N(su#7^)N%FY*?p=LOJYOsZ1kd#|-k{~2C< zb>8a?mRVVwclPrC(d*&;ZoD^JYkjRzWApMgirJ1!Z*H%iC7eDlb?L5y-}k(kTG8jN z_IUG-kfj&T7A1YGGP|AGQ?Dx;%$~UWvzN5e+zQQ`Oz~>MP8|nXYIg(_Z*FwBkh$fN z>5h(z+kVGOXhlh8UUzK?jJYmTheqyJkXhY4ZkQhFX@Xtqy9rEC-KGGIjc5 zoY_|1lVsC>{9O9WZJ(!{=`V8qulD+!?Vf+LqARbSk=ys>i=5FGHg{LR3C3waH**0s&b*~>B>3d%5+O@-4j^DC+(*xTT z8euA`ZLY0}DLcC^IW2GYc(_YUDo-{bv1Ex)#Lk)Ne(%*q?M`=mE@kNwx85mu=+xEq zYu7&fZFk_X{;R(GPd}dC|L64WfYon*Y&(?uD^{;`Rz>KEey>{@Q`UE`Y75eJS1Zzx z<23YAxZL(>f}(K6nY=BT`Wj;TbB-i*p1o=4_&A|?l30iD!B3U5-+1spJH(d!+m@?W z$Zwh3a^v3kf8h$=Id0!K2>p}$y<1*kYFzT6pK(3PJJ$TSzWXBc(^Nq&Z$kUIlGHyF0SUAp!?*5@jg+e17hO* z^W>hNifX+Y#g;t9G;~UnhvcCJ-pj8l&h<6kSUu@z_h;K;_1!c1HPVi%Cr|RJdMR?b zJ#B(ty;V}rgK2-CTkQGFv@Ut_Y5uxbd3GO;C^)|FH6qpyGGEe|+8DrBU2W*LX_aK2CGvRW{~3I(ec4y~O-4mggc6ceQcRCX6 zmFQ~q$a8sTcj4?eQf80crj>r0W^31G81Z6}vcfd0ek;bjm>DYFE6rc{{b>C7E64O! z$@w_P%--kKK5yo!#Gfk++0+01|C6H?w=N|neX*(k`an_a+*#wD>FVq9e~PhvkU9Hz zIX{z7u8_s^&pA#?Ggsc)9CFm?UXa%%P3=iSM}q}kddO&UHW}3Qr>x&_U`E_yo(*^W z6g!l9-|zlta`av5y6nKm&DBXOMCQFNx;ruOP)0{^I-f$5s@oj*4>$iT6Bblt`C2u% zYVWx(UrgTDzOS|{dm~~0d$WD@yW6`M_ID@k{&Ax(U;WOpNs3uFCKg(H1WA`gy4f9f%~hE(FO_=I+J6PUKAOno@l>IP z)oF6qvKrx3=#UdX&<>y;)>q(h@eyM~_#-Pv2+LHH}Rn zX9Kd+tM9R2ooc$sfJrgqy3~pTTDeo*wWl1{dShd7_R-OwaqUrd%a`jg*w0>QGi8y9 z*|~ooS=&D8?kg*kcQ4c1v^XgJ{SUUg>mEJ%>1|_I-M9bWpX)D7c2D8vo80d9^UcTg zpN=iwe(4oU$f<3@X4_{y`**qe!lP662bca9>Zw!9n|f-2`=&Q1)%j)C%zK?DIOq1K zm3$&Hdyg-h|Kk1rGJ9@u@fT*dGg4(cF7Ml1Ip+_|R~e`eyz=O1dsua}>Ewt0>I+RJN9Uz$WGxa6NzeLh`u=Y~C;EVgwIF22^< z^DAPDtKQvG6U+79sWmMjYPquu!&2L{vkzZ8C{wlROSH&a7oP7u=GtqM<>yVgfBV3e zm%DceI~yC>;5+>$o&nYha0P)Ci3Fq!RJ_Ws`4x7+WZn_GTwC$I9YzPCU4+O21K z2JdqV<}prbarS!pF{b@FNc)ldS z*E9Fpg58CmE;1^cR>m7mo}KV7XYxnp!*lX&oVQm`E3M>pek8W%42#>YB}ejl+Ag?Q ztmM{afyYcd86Zl>ZW3E=QY=YmfUIZN}KC{uUvnA^#>k~lhSde%Jx5P*FXLo|C{T1 z-~9H)+ZSwA;}PAb9=Y=QhgeU&t3S`hZPh<`V(G3eb0+w`xP936RwHw&UXY?wBm^xS)B;US(r<%+w4?M`XT;ct!jXE7s>8+tcm1*w1sx8qbUsTjuic`7q`N z%`Ld_R#dW8@Y2L3+?KP}=ABOnIWqO6_-m12Tb@9mgkG?eZt=HHV~@=4 zKSvD0n_AT^w{4vGVZB;e*pGSB^^L=}-LY++S}3n|V0T<))77YXU&AJD5jWf)n6h~Cm>t~cFRj>Y)sn0ISMz}5u_I9&zEfj=_kE7e|F7Axakg6C z8xO_m*tF&srMa#)X8u3*qNJM?-c)Mvq?LQUyq8g7&}870*~;bo>gt5_`4(rd?3=si z&xKUAKf*C{KELQ_*jxQ+iSzVX_tQ$+y*F?kRy*x>C2i@gN4)lbvn~2kvTA1h|LT74 z)cm?%a(VmS>Av_99T@e+r!7aZGQw43GQ zeQS-6x44w5RYhFb#K|03dNFX8t3b8EZY zZBNTde@@?v-yxZj$Iph|% z+xYU}xk)J}K76^OGktaVWY6V4mfo-GdiYQ%zxuDrcA2l5Pu`lm->5G4wEkDC{IZKV z20@Y!?f+a^|6$$x{}1;+UcN{6zs#fXe`o!TqqHu+D!Y+!ZN)a}H`2E|4JUlQ^kd^C zA+}AC*1T7aU3kk96ZdT*)3MXKUXlIQ{Prh5p57gKqSwHDdeYBRvs%CM`N&WHtn_o1 zkJj87(KB>nm+JgK_ci8_-}K(6yw}3bKEy7ceutZ7ZW#MwQ^y$x6dr4~T)J{SyJFpu zudy=c4}Z2fb<--pDz*2#U8U)3@7X5T%?0}ouUnla;Pl~Q`|(1VR%N9!-f&Bcou}4? zbWeG2XnHBNOO)Z8f6j-K?tBR+Zl=x24_$sp!)ayR;=`pftEa79tFz(SgWrBS{Ofdf z-kn%6&w1~@Q^Lpp_k@);U;Lzfa+&(?qIaAny8rG>`mP{&*5KokD`M=|Hm|t-Qb8~z z{Mt&r{0$kNb0n5tIFR?ZvacdNvsCnI8OKqbC0<*ibej|suCI&T^ZV}mXE!z`|GmCJ z_Vz~E|0)mDwjOuc+>n0Bq)2v7fRf3Uxf6U2E5ENQ`84asZR(`cn4>#l3(04L0 z<*VTqlO>xc`JL{|=C+(39``*e>u%_}o3&He=k1bDUJ!NrN$2O~6=e^-d8V#cn<}-? z=#y5>@&=CRjdzwQbro*lJbNy|gWvuX|GjxnudVJoI^*KOK2?vzjx7m!rib4g<2Zkg zzxiUz#ABthO$LXg7W~-zM7`4`*f!`^S-;Ev#jh**wyrB(-MdS1W{>mH_{0?#9=uaO z|4{1SI=9w7j=-SDu6l=A`&Tb7555uoY^5>xo&R4nt!G{c$lp@&{(T+C;)g3I%RiVF z9lLJVE8UD-gN0N1`I1vLHCg7S?Y`b=w0DW`qA6Y0FTXALoYZ_kH#0GxCof{}rk-OD zI5hf1X5895yQ+91_jCK>8(-f$Fu(Sp@s;T!$0X9c7OOYDxitYPTQC)w%cn}g2Z zW>WB*Rrcnt=jLk*_64T@yu{S^dV}HqOUh+x?O97o-aJ-LdRr?w`N;3A&{`35kMs}U zr&-K%P}#DvPVxS)9e&rc{?sQ6#EDH@`DK}HXG2pb=XRww*C&!>N~u}?a%z1yWP0>$MJ~QJsbAyIrIDf=lMpPUR&J%e9Kz0 z{9Ez+@OKLX*GJb+ovLbA_x<>fh1>UKTRT>Ax?S@XcI8^AYTbT(W{7e|D#u}t^Tii# zJ=kUBw_vS_zJ%4>25;&18L|2wy7tB|pR{`N*(DYxRg-3aOUsN)t@w0Eg%%Bip1_I8XJx+vfzu-ytS3> zHFvfG%hHER?D;oNUwj!_<_mT!fhlt6pOz#=}((;ZH4=eTNiLZY+akjZDO!eZ?Q4o+*#hG#!F(pT#&Ll zHtFQ6w;k29=09Drr?Gaj`^le`=VB_Fex6f1e*PZ&ftbHMZW`apqJ4Pxp7IhpHbLX{ zCEEtkqZ7XIZMtabXMQVjx9`V$#f6sVy>w4My()Azug!1DHkHo-jT?6aTYuf~_(7{T z_m*tmqNO&;mmk~mtn8{(I2*=(y|}8Pd@ZkYvU7;rDGAX}^RCy(o^Ne!4fQ)0w_vfT z{l`z{!E*W+S8Sg#Z{{KYpHI3XcO@QK&40b(^I7ehpZD5#yuVpo(#)|oC+RuY^r*K+ z5{<7peC9miyqI3}q^nXOKt^lhzAeXY{gJvEH1Sjf>qCo@+p;W8WsChbNA(;2H=A@e zii@*PH}BKpuJv|by6;S@Grzi3-QwdDW}Clf<_nfs?{Es(6ZZMr?zmLduGW+l7naFh z`*@dOsmuQZz8sft&;H5nHvhB2j5Q`RG|a0$Xe;)F1}7_28a8!$O}-vq-6gzPcuuU$ za_L=W6DLmcQFLE7#ogaufn|$yZrb@6H&?Fkjv0?H*84m>vhL|6v9I5hyR9cOzt(x_ zpp{#7zqzBkd996z@cqOI^QDgd5#-rX$E6({l)N)k{AB>$GwT-itQP-Lj`dX}0I$DWdNp?VZSq_tR;~@rG>>|t^(11=RKuu;Kke2Y`0{OzN=t)} zSMk*=Qpfe*zbW(+_yx!v_HcJFjx-Iu?@mHJP%Np{gJ2E~lJ-4hgpmarE z%$CJG$tRX93vhd2`OU|dVcD^cIOVf`EsxWVFbEtxbV|rFuG%{F*F1Ml$+ganvx=n^ zG&_nz&M5DBU;F;?ve|jJtSWEzfwI`Ag3rr5R)16pOf%p5g`-bynWIC7T$0wONHOgt zTUDkg>drjw(LcLy$B*2Di*}zodDJTE@G&@IjN)E8YsL<3?Il~@t@qokQiT*6_~&X6bn^!N5v?_Z$7GgYHM z{6nq0`>nG&9B3%?&n-gX49`<{HT`U^Ja@od417Q znYm@+*UM+xZINzF*mB9$Yq|o*iYeZ2&h<|AO}F^=O8V!WkIWNqOyEb)?bWWLSTs>H5%M!cpzU^t3od+{E{^TuM`S!w5 zL8{h!${X4mXI@qIOam{Zhv zT5E+iDLM*=#0J^w{hY9G`u{JV?K?#bVgf9FDV?3B`ygmv`(q1@wLee(|6v_tUfi&K z?`!MggZoOHkGu-xX@hAZaCrGQpL zP3bGQ@}yg>cb43q{)}Tor2V{_lhBolifne{R*k>%95ygZTds{69RqzPI&uUfogi+T7b8 z&nxSsT+~wkxzBy^MYXQwN8{&OpS_xV`Hht1F$re@EwOCrIq^|Xey!ZQ=GyX#H;4F| z95xm@ev|Xp?47$Ia-W-8eQVg>PKTtHg}Hh`)B6op-M@I4uhUVHt-6IVVEwff_Hl;` zRi1Vxx~aK;u$>-bCtl2b@N>+!xV_W8m+LKTYS?i1>6z>P4|nMOUVroa^LaKWqVugf zUw@hWs>bd(|Ngw**Zfm|yx4pAN>~_&HDmgG3tz3t50A}muXuZLx#sicdAme!Oy9QU z-RFz$>kfaHS;BIDv+L~FRxFO}nyNpYrY%)iaQS7FUnCE+=`n$qQVAYAof{tB`O_X5 zRevDJ{B2@O(!8v{idwDHZ|*HPy~SwWmSe4)ZFPl)AFO!G_D_howBL+*b87NYEg9hp zMW;;8@F-Wmdvv6zb#AuovG$<<8^mvc`-0IA&7NpH-?V*_=T-D3X^;_l$NOG(@v-PI>Cy};e7uISy7V4+# z&v!cZ`1Y*EtnIDOMNfq0xja=j4D6Vu*O#@pr)5Q-h}2q9C$1?*EBubn(qEe!Ag8;q zgylxwwAWU)lEFSYvn9%-#m=3-bZ5L;a-HS^X6+Cj22J)`ryEU zs?8^!_rFiIh<`k5?(`o&&Hrm8nja`-$=~yD&C?=|_O#W$R!^1ZC{15iGwuI-VR>gU z)+Hj2T25)EKb_kA1PU_F`x(W}t~#Dvw)RA+vG@7eO{sr6%C0Lai{6Tu;j<)nmzb8P z`4`=T{+iaiuCeJ)UStxYWFL}}wBqph)bgUd$G+2A@|Aq9Z`f_)x%cjZL@S-VD?iVO z?>}_%mE^nHKZWnAZk|oxX{}*9UYN1vcFoftp6_hRc;EkhAYb_KlTf(c+Ryj*2Zz7$ zHu?7`d;arJw(2t_=O#SNnVs$z|M36cJJWyMEZ@i4yzo}Wgpa{X{yd+)%y$`Y!cMPC z#V=;+OXobyQJCv#T%5wc^{bTQa_`+2w_TdC?)0-yRrRkfCFguSx&Gw-0}qbA3TNgJ zuG**cWx3kP_tjZN4*p-Y{%KiDKS&ph;PYI>Hl;*~eZSV)0N(zmzGz z)?{JOot@t`UT!J1^_O~Ot$p~7M%W5-Yo9Q)nGyOMLbUTFKYG4g)T{Wat>tb*%~FT0 zUwPhsSby__IOp8b1Bq*X`@Pv~;m+|EwiZBWs+Kp0|1$Xm^|n(I0kgjT6ph-dHrd$v zL(O@oBU2n*!`v#0(kA8Y_DCR)E8Y!<+0U$UUmvWo{6autAEdlmvZG;@kDCQ?gDdu+kcs-iw&E+ zQu(XD*XaibZ+~c=>$dz@Qp7UF`JZo??>ccg-S6Ye-~Z&7+)i6jp?$0*Vy&%^xE$O0 zvy-$~-<*hdJ~h)Nq3T|UTeRP-DPp@++3&4>-q88`x8I&{P2cy%CO2v?_U_EK3|2q1 z_;SSKQ%-ICwONz1zg5QUH9vnQ;gNY zj&IO#?X1<<+rDN`@2P@WY0nv(W`!Q@urm8tu;s~}r)kl_`=iaGCKuWK_xqQHcYkEse+x1= z5wS8^;ON4wx?W~s=9yuyw`s4=Jt)X4a7B4(6^pgH+Mci5?Ps6x*1YH?*fL8yJ5_J} zvBr>ylkfk&+OPgL^3M9#R?#Yvvd2Fh)Q|IBU|eD3;B~_?vu zS<{8Jj@~&XW&bbx|IGQ7*P|yFTJ=R{o1CZ1Ri@v0@NoW$A1Y5h_A9)s@7>~N<@aW~!+ODl9>(kG z0&A4^AN~5siZ4*4@fwHb_6gS}zt%CRJZGMtU{g9Vc&oIa-!^`3mrXZ+G9S}sR5f?L zur}b!Yl-m9zqielvivG<-et=n|k_CS%}BRfG5TA zyJqi>D;1yjJU{;Xe;;KIChqN}EN{c6&pXl7sPIgD*E(m3Z>nk5a~n!-Eq}4T_<5+d zMcusL^JYFg^@~GNf60_p9}k3^8F(GF;c&iOInC`C(?SkL@s-?RuViJ#Z71b=}?E3vQR*XiUlbc=P!8iN2X}r9Xt0#!MHU-d^$G%DswQ z#)q1ApLg;eKw&@0@@OpZK%s5z&7P>c1TDy!X?#e8SnX z%yJR#)8CIxI&4^f#zA7s1TL>?bHR&jmK)`dr(955v^qV|>cI7Cj%K|mRo2cMMbq+Y z|1(^E-sf?BYx>@fb|1D2ijvm@^jxmIUd>=r5p((Oj`=G$${+Z=r+&%meCut=)^RyI zuJN2)_as2G=fd9RtCBCQxHJQIy)Sy>)$Xu8;2o#dZ&ttSiY1SF&vY&bKIHGadBv$1 zn|gWauf8qoPrSKa^X85G4BiBx+ywmbiXUKCZW?Z|yCN6RdOZ3&_v(;ZzFe<2a?u;_hegD`;_so+khy9gh zj{7C^_{h$9HnBLEqb#W>Q6v6vVN45W#LA}}O4GBKub=SR#&!Gct@S--559EEw5o+R z?CcfY6?)jZ{$u#h`}Kch_k2se9?2eYosng>Z~Oi~x4v3ja^!H{{P@wXNuRZaV`Ap^ z9Df;hS9@xq#QnX@20c@)?o@q{EDMo(abx3MiRodxy|vyxu6`%>DNjOECLyP2iv5q) z?+d3cyZK^6*m`4I!&B=%2ClQ+(0;nu`^@@vmu84_EZi>Qb^GI=i%|`?<}A5w=8>GS zWcM4XxeKIOY(D*{yz_tl-tT;qUt68GsegX#RH*F542E7FCYH?}T|z5$g0?-lEyuY8X&ENS+BD=KFp3jlx zTONnmq@N3Y+M+mSoO(L*<+hh6B(^+wvQxeC`ToCwMT?sbw;%g);{V6eQ%_HoDSWa` z+xPt9+txPj=>nDj$(wn5J?zik3DxYj2>-o^K|%HwALiAuqsNST|3Gba}Z z%j~J^C|i8`)E%vP>7UnR=RG`dkBdLf=H#O{c8{)BJ4jR%?2B1)IY+pJIYmP8@eJQ7 zZ6Z@$Qgb>s+6p(^{NM9s?bZ9$Q-gBWToZ5#SS3jm`-~9Gg zN6Psf-%rOUE#7%({r@w!EAL(Ow&*+DU-M-9PK)gwVYBZ4KcIfrHuLb^H>)Ewg;g|G za+&k>fX5D-&VyIvHvOX#6{M-!Qtw&9xI%maewLJW(mv?M& zfaargV~cs+VO-}sXG+B-?=*C|)_)@~FDU=_7N+@Gt4~zyJZgHle_<1=+@AX8>Gwas zddrYss_o1W9Q2IpVQ zER&FuSBlqs^h+;D>z1_dBMr3|Z6;ZzEvbE}O#)Z*Cq0RHCYNiNk!Dh`g-vq$71rRO zSy>&qhV_ZlaunUw<|~G41spc9cwMSpb`;t5CtG_+s?| zCQV;?k?nZ7{-bK4rJhm-v($Q8Yudtgr|-&9x6crm!MAnabAcAYgvU4d_~%%iuCMt& z|FiJ=-;QPeyoK*Oe;3+vpB582#X( z?`svBEV*=Jn}VlgLqUMntK{vij~71{SQ~28pVX1GA!o~M*5m4L>lIo$F9ttbc|ag_ z|5RJs526V(lcz1uGdd&`WHd#^Q091ARb^Xm-%R1VsUKoyPn_0ky6k2|uOeG+c0kjc zDGNfxw@mZ6@l#?=)nTXnFF#uE|45Acd}+SIWbF@+p6`7k$viRl(d+*emm8j2y6J^U zut!ITZH;P<(R1E=FYP$r;xl3`hDHx#HI`;>-&HX$aMG@{>sswDOGF^#7-KJos@Y&Gc>B^oN~+I=2@EoKxSR)cxv^mh|b+DaTxP zaJuZcoAG$vy2oj?w_fu~UA3yamR^(9l(*Y`@ve*WSFd|Lq0D=G%fyqhv*TSOnDnPR zwi*5`V$6|VE0Z(($vu|2C(_qGOkNndx;kU&uh=`r`(~?%iX30}Kl5JAc}Bb1_vtTB z%rGwQX1Uw3zW%f3y-(fykG|jcT-_mi*WV?xcFu3!T|TK)Wz~h$v|ZlI)lY`8xZYm) zvgO8WvmKM>$p&5)y1u=$$}{z{QR9hYzgWM$*~h#=a;8jb$#sdpp_*&I@yctW?9T2rdf#WnW^9h*|F7P2BKP*T+-kMrE!UPc zUQ(<5f5oM#{wiB*%AA6=!kPY?)t_GpoU)HiP+I)35Ys}}MYF}1voDIAo#69-k>#oh zY)q;S?7C}MvILK^Jxg6uaCWCm;#XsZT30DE%}W}s^G_?}NUt^V7Jtrh%Qk84@1l*f z73H_7{$lj||LDdnSKq?7(X&>oa^Fu&tJr>Z;pLpo`$AlAh;eiqa7-@dxRW*an@9)zT@+Svk^)1^`CDDCTJft z`@4{(*=Xwq9XBrCxWdnpF}E!u7@{QW9AvyNzr9wv!u(ds=DPnow?*3;NluT@S`_hU zC!hD#(tn?izkB-ab^n8iru{Xa>~4K;@7Q*>apj_uA^e=nX6Jf6zV9jD{yty3FLH{J z=k%1dk=?WZ9FwmVaF?)naPaWqI|ViJGh_NR`hMPM{=WFh?T9FGo6={0f811CF1MS1 zt;qX*zr|0ce@>aSPtW{a?1RhdeFcfCX}N{GbIX$bK3v++neNDxc;nEc8z#?!Gdd>y zo; zHn}T0b!i>nTG8aE$!prG1FU!_NuJ32XS-}`(oS<$k8e-(B#ygDr`nn~X87s*2)88G z+p+I$n0i|5-i{;E+d8hXI5ofKTJ=+GpMJ*r##fm#iW3}`t1AlG6uuIf|L;=2vPsQ1 z=K0TWEj~VfTI60Md*^HCjm@mK$+rCA-?SiolKI}aj^x`GeZH%&s!l(xuyj$(smqz) zh3qCB`W};{IdS94Ioi6N%AMJ*DKXt?(Fu%!7m}|>uw9RI)~v`X>u68sOXltkn&qRp z%*4t?lOOw<9Rf7OSL#Zxj9q%hZpjw4H?3>pB7F+_p8eW=me29}2cK7~O)u?~ zYE$H%{_Je~r1N3N+5-a5TxyMcyyU%HdPdC+kB?jv4`hpO4QuSTtx%5A$^sq#Yr(lo z#8IU%R(dV7Uj84>%i8=4-%LoeUUZvR@Yb7`tF=q@&gvGP{dd>mMg&Kah{nN(dw2iX zX})hx{Ex}^lXDI&y)4!-chV289^WdL#njkK+|7T=zD!*5>s zzM7`je07uUf4}lQa_M-n$uy1+cO~w3MrMn>I4Y)jE6Vd~eNNEfn?Du%-rig=g?DE` zVe8eb*%$X54t_2bGxNPbo6zmD8{2YkZ+p*MtfTnr1Lp#NHUED%)oYjP@8XoS4qE1H z6qTTUX&%R9*RH949cfB|DxSuTo8nUyEK|JRP3v@78N_v5Oe3}9k=9BPo)Zr<**ca? zS{OMqS~31ipo~^-Q^AZ?4JW6~cr8>_AhY&hZB%@-u3_Nw-!t$`eYv(AY&u5tb-b@t`t&o-Yfq&}MN z)hBCs(7mcJ#H?s@CX4V>-fw-m1qH{ooQ||D$eX#!O-J=-Oq+($(%Q8qN1gc2mkNrp z?B%$=wNQqALT%;a@3lYH|M=CcZn?Fl?NXp?&UXRb#%+mZD-Xw-#~Z51VopT9|A+_4KFg-^y91GVCTV742WHE~60U>1t4G+?xKC zdB(x*CA*wnSiCIKo51yf>&T9dI9`JQo#WenZ}3jaS+Pw2y>o-q})rBCToHq11)dylX3FL_}pIKJMsP`6sgGnxv%e zqjHmvyIRdz91lCVELyf;OT2Qc!>5dHwS`^M4lmKN#=7vHzHV?YHwk?Crm5S6ChA-}_?u&abzg7kvI0y>B(&huh!y zjn5aKRCyJ;wrqNm;_+8ebG?q5%)2tp*PKg2cS^@23ExWz`hjI1Y=k}dRy~|;95}1n zJ5_JpI~Q-yIS!o0lKl!3tJ@vTi+YcpuJV}MVa>5OmEXACH!axdP~6PO1E1#T7F)b( zW0|YKX;(6T&eNaFc0r4y{3}Er{L-6Q!)O0k&6mkHDSyco=j`SD)n&5XTfbfov3{Sr zudq>EZa44NU?KOWZuvTfr6Sv7>KnW^I&8i9#5w*ilk#=$M|1TKrp~W2UUDz@^M^x` ztJXF+97*}4cQ(>B+xE!WpE_&53mp1lxzeQgNL-KpgA3=F!ZHM(JYblIIuQ>)Dog==QeU`_0ch)=vEO(&C@v1IPO-#UwUmuilnLY%ZFtupO&6H^xMbG;RgS|`Tw-nS}d8}lNks0yl(l>hyo)biMfT#Z>03>8cACuk5k*ki8rgenhw1O{B0a@r;M(F27l`%${$Q znZmQN<$hu&e*SyrYtYtX^Z$LVoik_OnI|_4 z_Wydf{lR3bl4lnCe=W{`r2E=`p*Q1^reB`jXOlj`^^2!_kH=PR<9O3)~l#&dHi^nQnBRRXwzD0c6+l)bFfWe z;n4#+TOVjImwWQ!V`Q5V`#~u=j(~&&)wHheCI1f`usri)((S%A&8%m)J-C!K?ct=e zFFvRQi&iYU=DH(I*U>4}evN;2%6WmQ&1)7FM+&Szd@wdOtVwT*>NNhuYWN;(pp|Pebt}e?f;pBg{yy_jsJK5WR%|doqt>J zf4Z6Hy#3$)$mPNcEEe;ecZMkRsXl(}JX@y9_gpb!>*ENEzN0gD8f^`m*CSo{xzV)c z!kirjO~)3`$-ew%mW#Lk7R#*$tzm5EUf&e+a$GK*5bfC<;gHQOI@8PL!poU<{J^N*^S3Nj*Zq4BrRg4q2a@_4` zEo;BIRB!5<>MKIJ#}3(ceWHl{CeI~Von$xBz8aD(j^9zJ?%=9O8s_pE=x?QOZY_f0>uvBlt2 z`0Q_%Qw99Z_pjS>u1EOLRO>TawOIy+Z&7je1Ra>%;`YG9*wvunMvWhJ0RDW4~ zSzE9;#4P0d)YV(AMXxg3Xw+S{_}YTo?}8-dmj#?^ZpcwQy-=FZu=v*`#e2&lL*{xY zek$4f(WH9LH!BZqHO-xRXPItu^1XfeV5^G9#s`lki(3?=bTI#R`|)h1+(cbT`R|dU zvQyMwZspA^uk{p)XS*#LvwQoAH$S<3?)+fg_3pL7BJEkW%DnIDU)0|DzV&>;j{~JL zcjl&koOE`6-J)Zk^LO@{@B32uSIblHeehZ{2}!-lCwa6)KCjOHbE(??z*6ng4QbCl z8J*o;rkS#N$2w;jX$_}^Gt~2UN1Rf-eKMeXcFHcfZ}T|H4rBzVU7Iv_t5BTn_qFaf zw{6^Sd~8<0mNllwTxZ6~1e|=%*{)LF|1Rn7tD>}ReisBxVq2~5EuHv!V_8%}rsLa5 zi#CNnXw#eP)8AkBnOjEs-tmJc_ikCF`0v?9>4q71+m|~ytiP+um%M4|9zh8X}a6i77lCPE!hR{mH5u? zF?2Y#);4#NLdSwezE?X$G(P6^z1iPyFlEO!=P8|;ou*t7Kf+CqY}A>(`tK)^X_j^> zJHOsyTfDSjg3ATBU(u_S?C0&Ct^V(WOsSGlYDVm)3!FVmb}pD9rMto4;xV~Pb9P>F z`Rd?xW9x0@h}V)q`vOwj7HpB*ieC_;ER_WTM2UTk|Vay``uBoI3w6|DH!b z*B>pOA33k`_Po4(uRpc(*R_Sq>~GEXa$BM-YRI_xy-ihNOZ&3#%^S>Fk7aIUel=I; zc-eZRuy-GSs`E3>vUnIe^HifrS8vcI-;PUeCzRjyTOV)q+kE&?YoyG1*OOD`(e>vloSQsmW$jWmJG+t-l(DSi88{^_;--{>Pj7xTXVcxt|X_V$0*>Rqy2s~7jS9uVS-a?0}xK3VO- zTWGiJc7OoqwRs{OOMlxr=c=m6H5E>M-mu~U&+RvJ_jGSvD!fL#YKoVc>;1H|*^MG! zLXI3iUpuMa?xW|m`9|kcbn-vPzyGVjyWM@`?1M+ymPXp{JaO)U;k&B8ch|&pb|xP^ zXWXC4c^^d?nj!_IR(&apg01ycWH)t)kUk zTKr{}=gF^`tL3bZ*}CxD6VTCb%UEl~akCyjJ->hMdfOtQwGWox`@$vl)~tK0lzZ8GHk14xKkpwA zW7|KQE%dwX7m57Zo7{p;b{99^=Kf*6{*U6n_4@xUPZ!QUqhTTGxNe&IY*Xt*%M%Zd z^W_TG%wE1RH&-d@u4~-yP17Ir-8=K8r1|-sxJMV)*EH(S{jb*8q1kW2ar>A)XNb(@ zB4)RC8!NvP0Y?=V=eS%?QVLG{K5uSFk?SLiWmAmLU3iu`<7BF0{&Pk&J!W(ld^yr2!ojIO;+?99y8#V&i{FErhIPQ@0l#ge%zC**-DQ+wXx138y!H+>D2cs-?l zg42dyU8Y{DTo%mhPCTn)dO2U~;I1s*TVDIu2XZN;{>p!`M9I+NtHS2VlkOf25eezK z?RCai#W|SWRrUL(eY+g97iWfS5cvDMK*vXHbN!XGKks~5b29s6>C&6JYl9?C8Y{kF zzgBPl(_`VBrwd>1wfTPY{IiTw`}&_Jre|s?d;tb4cfb6VZ! ze)}U&kEYgrcsIM^cK7>-PxW_9HJ+}2d4<_ZQ)RW|?Ulc^QIu`5n zk2{w$#eKh|H$6@7^2;*KZn=XVK5>;jUpD1@VLIodyK#H?f@D_~t7qZ&eo-kTmI!SixfsMRNR{57*{rge4ZQ{g-R{}J|CwK`TpY&-* zYijhB@az*Rn`ef(g)*^E^pdR1I~`&w!!2|BRk(op?1yeMgI=VCdojzU*8I)dpv%Xy zetEiX@VWbrYkZW0JU)Cp^lMtJ%Qb1U=g*6Np0C6b~{hp zAEvCISryv2hO;atJ+U|HPUUgMV_K#@)O%v`^yP$O*JL)rcR%???p#F&|0-B`;PIWcir*);n<5B57775%k;x8l$9 z%=G6)XVy#;5cAQmbdWsVbUeLmLg6kSk?fLYNj<&kC)2nVm~MN0DMUV{y;MZe{|>5lADgD{r3NVJU^MbnZw>7^kRfSsiSl#R}-(Vzn6}9PPov~S$nOI&xnok z{-M+Ku1zh+Ys<7XuSDjKPS$n*y9kjM_7_RE+3?Gsz?ZoBZ-7WPS#p7=I>*P7!o$#;{k^SZlx3Tw1qKi)pM zd)@lH2{)||{@r^00bME`_R6TH^ znzhyq^T>qd&jq7o-UfC|Mhvut^!4`Fes4SfI9~uHLn> zjOmf+^a3@v8%-ahRUdCw)q5_rVw=+S(-*clHJvE%tI~EjyUbvrCU^g}jQ*Ghisj!d z3Lh5U`_)ukuz6nNxf^ETVMRXr{f03ahT+;9FP;-VrK9lUwD4h%rIt1uPsy_DUsyN) z(f&QZ!+#!7w>!9ey^WLKu8M`t$=je9X*cf&O=(C{Sdk=svTCoU zs;e0Ez(YAsuD zT5L(D-pv!!7A#j;IISl}{lrhcyd2{Y%}?y_|FO>d-S=JM#WJG}*(*(#HaUNkYTva^ z@QL)C_hB2Y-DGuce|R~Cscqd=o^r26F^0`(>MDnsM-6l1R(Oh?Tf%f`nsU~bFwUJZ z57p-GbPY1RXg1sHTJ!s58+5PB#mqlsp)p%qKS9ba^jKTLokpJc3%nm{`k%Q8OCBw` z9c#s_EI(`B=}kfDUb&pR%vMid(ipWrakjzP^+Dz9w_ZGOx+3IQd&Qqqb?^3l-MQww z)SC0*mNuMTl^NzKIhzidF8+OEd%gM3IsHLxIxl|cJ>FgZp}0N%Z0vTqr}p*l4$rZ> z_#%B*accL%9{2N|l6*xmS>_q%x%c!O(9H~C2$Iwc%;``*8?@1L1J|ldL$k=V^gI@w zgZ{S9x9)lVx8AAt?u(`Id8IdEKPjxfk@;MZeSt*U4a=R)F=mIC9#hd?`>fpT*1mpU zj_hm)2A7RXZfY02Uu<6V_+H|-yW6I_87r-MlV-ZWu$HA*(c2~Fd+ZObs1>9nix_@V)<KARit{cvB<;z%L;TGP#+>knVKA-zGj zd20BK2k{C4er$=69OlicZ~lEfaNwlZZ|0>R#4kS2;$@m-5oEF=pd@@_i&C~JM{@Vv zr`eIQbJ9K62;ZLNbn?-(*ZI%8@Bgs6YuYNFRrZc)ckadP?6xwEwo`JO)142USfjbu zVwpAfJHL}ZvSx0R-k@!N$p7zw*#$Pt@o!iKf9~lG5u1LktRORYjAma0Hqbr>J z7dKr}iJeu{^sK7+n%m^CwT2V6{rm01QxW=dxlZDPD5r!SGhWoW9uE0?cE$BuXBe;V z>pH%Y?a$GJ@z2it=y|W3lkRGE(p>ghm3GYsW9=UP^qU>~oIZE?iX5M^e8G*go43gY z%-ph(@3_e8$SQ5V&C;^3E=#3PKc=TSZ|if3ZP}kE=l^jO3k$3GGtqcWmtK@}<*7xX zy*u~+V_B*=+eYtbm;d=`6&ue6>^|eR?DUa+fq6G-J1$?od}Z48m0yl+Y~x?_Hh1dL z+}qpg`_dF54p}f1z zTVUnc8P`KXPo)(0?yfI2Wtp_Vnd8opyTy~TKiBZvXNzt6VzG0PqCbBx|JUHdd&By- zwu(*(YC99Bw`gk8uaCtlYww;>o6MFK9@><`ud$zI!14Q*>dAN6Mgr|? zB4gcL=j9lx+!MaEHmhmZfs?bmC1(|B{NlU0?)0UoBW@A}-#}ow7 z^i}cD2ERJ52ko}EPAjcEFvH}H*Wd0pEA||?V*T|%=H^zn->gf-{`P#D=DjN`*X#Ml z)S0Hqo3pNGRWxkPVAvA#?(O4*vXR9Iyj_eMJ{i2 zN%*Q0lNua9m1UuklGMw;Nvpcj!_OE?X!aK_Gwr^A#$eXU1Z%UX!yX$?&wf|Y(QGm$oW1sV`emE9J+pYqHPAJHfW;wC&%N*{Pf|*VW?n9_-Mo)4P0M zoF$>iruj(FtZ%2%Y8P4f3HcriF_OI1E9O02>`Zpfv%DDDjF`|u|1%~xUN7G~$uMu$ z3nho|(vq|6B>uA839Z~aW&gp@sptK6JMX@_DBJeb5ytk*{wxvFOjp+^ZmSB>eO=DyiT3S3=2_{bZRf*2v+@#K+0;TM zKHoK)wgfKm>zmuY%;$XL5mTXQXK!3#IXzuGaLHfaHUGpM|L^;v))BVpB8S90iPVzo z7KJ*UQ;(nAxi@BiI-56#n032l;U|Lyg*lFPmmi)zZ+Ub7v6{Mos%u_~OCKFL`1jAl z^ZUEM|GUc0c<@!wnbwsLGD&P<-ESHKH?8GqgqO)I>~h2 z5Zqmp_N?3H+jIYb)mwM|h>+Dixar_Dv0LFOO8ny8&*k?{wVwA?$IadQNm1SZd&U2@ z@x0%@IY{r(+T-%+g?kSyy_$GV&qw0Xs!ME1EeE!-f4*RNc%HvqjdJDs<1S0jiJ$9l z`cU!j;%1pyHx6txowoGnoyEI%Y}wTuaWmr3p+cS*<})++4_9=5ez)sf!WFy2|K8m= zcGI)^3kPHJ?qk2+i)*{0!ru<(e@|!^5XN!|NoUIa;}emyW#Cx+k!Xy9#1{D z^`LE3^r|(p9K{cFwau@>`h%`5yw!0st37tA&gosp?*us< z^xr*isk$h~+Ld9>pDLwQO}Ni|?mQo6X^uK9 zAbU!g+LJw7kF{M-);J*)#klb=GtWwSmscGkf1@Sk(@KhT0^2wJ>NGrVCMq=55`RQeKjXOVDo$U_L+tD*crtj^? z4NC$q0gp@>T$$NNRz?QMUH&5rB%JhKls z*Oz|t&{OlqwqLK8`B=|f?Wp$hRm#z{($!mTEew%=*y6Duo@w&YiBZY7l~%@f*tywE zeU!R7-~NOeXMxT1g%6buwY4r?|MBtq-K|yZQ&u&uU=}zk=708mO4gEN87qBtSS|Gr zC@EdD%ddK;x~uW@(y4-J*{W$_Zl1*}o?hhYdwd~p%Zl~662~>y7JSjqyRc2mbC#mO zkDob{=9->=;Z@oq{cUZ+>xP$43uDADH0@0e?ekmr$ZDCqyAEq&&cx5EK{HncsXZ2K z6+FJ)_Kg2$wzTKZeqOn6>$Law!V6~}{1%gbE1)eTv;VUIyL;K?FS|^#ZEvkrGY%Jv z;FQ|3nQ_~e3ENa&W%$jDce9vvv1r=XDDiTS;EbPFtZc8H^VT}9`utV#p0r0x-F!1| z@AEb;&M4Y(cHTv`>+d6+=w^7zwbPc{4t{MCfVEj!(x;tc^Kxo<09R zE9z}xUhTEt8(Z2p2z#8e|L~GK@$%*5Gpyzt7KKlkw&)qll*c+>SE;xK>fL$yWBLA#st+D=TX#(D-=KS}OSbE##>!8}TC~o;T*{RG{8+_9?thK^4}PC` zR<>=$NyDO#xjzDV#6qqpc0ID1GT|?mnZxdTi;T=#-rjIY?3sVy#gdRK*Udf{+bx=L z^w6vKsX@ooA}&gu7F(mge({tg*I!-A-Ddu_d1Zt5sn-VUqfS;&2(fPQU0yC(aN>vZ zjGRbR*VrhP1&>Z@;- zUhpt-bqsDRd49J1&zuL}It_P)wTMZXZl zPH7T{hGF$)XD6*^+5(44%&td$>reidXw#UZc>JAm@D;OVku(0=^w0lg;6Lx5_?~aB z<(IO`Pp1BDNm;jY8<)(TK-ZHK^yk^lvhd^E#(Vj+^PW%BxKsA(t=r((Gs)zbYM*GU zSL308iI*~3x9&`>TKi5dK8fMH$8R}}+*vkyv9p#3Xc}$I7g{RP8#i;k&DQCEAHOzf z3i>a=y8rN}w)4%;`!4j>B&7-;<6}Rz+UETYoq5SKKFoW5>D?ELvKI#K{BqCU?Vfl3 z%uMf^M+fzd@5ZL>yr#@`p!yZhL&YD{*VpN`I`L_$P7}+y@~Yjfp&$_dJPI<4^y*A4=%64`%Uwq=$ zdFe|nE9Qk;-`JMAm~+Egrl6)vhEd+T7J4hxUb`J_y!vh0Y`3j`sW}}!cFnJ)j%$S( z&Z`f7VBt{E=%*k(O`$I-=eQbQa?E+jBR6KB*`%ZO_%MfeK=i7w#v64%vaCMG-g!id zqjCRg2iJW)Lhc*qls{g5(l_$K+Vk!ii$AV!ZS4C}rET-&YlJzPwo;d-$sB z?R-{A+xn0E8D{4aZt5M4wbbfUQ@1^L-c&GfTG{g4Ytxw(6R)Ri{oeDeKusm?y5l_a z056waZ)Uh&Jef5o)-Y7ia8bN->0|fG2QjmgcVGL^x#IfmDc+Vc#}93rfA93+O(x6r zre~Dere#@Q$eQrgFL#@o!;80;-(_#T|9ATPhlToYlM`<)-nHS@`jF#BeoG4210HV> z7ud4<4gtx2wT$kDsvc;@AZ*<-5A{o727y+e(&hl0x7iQ6fTyZuxQWx zaNFlXyWMwlDDL=Q2HB)3qtcZ z7yL6STy#YB_mkpZ-xp0?6t`Bmq}oSr7L$|SS{~zQSyrEK(HsX?{MdE z#%|>|Qkk0P1zWokF!k8nK!@Y=IWEF#$T!!=RFr{ z5xlj%a@EF;E|K?k|GcJ|Uz6CI*70&{rCglt@gKZRUxO8r4_j}v?f$kUp>of`;OTmw z_H3NZIJtE7_FE;*Z|xNBpWC&!;Z@t|>i=2~ems00baLyC_nt>>&F4JpUe331gQ1s> z`S){%asSQbYnipzOvtXz@V|7rr>OQ}c|q*-4dOv^(udCf`eGG3P4BGwg3^E>wXjjUy=`38XV8zv{aCl#*j`^G2v(@$M z8owsBYh0^vmDuSglpNe?Q?#u)zmy~CraD{3Qpw$%EvbujT{r$N>U;CgaEa-W&3rLO zO3%#g<(YnIwS!i7)aA!sTW8p4TbP>rE$L1>dS}*e&wtmBc&5L7KVj1M+I;zczqW1( znRuu}%|0aQ;Uk;9Vb??Sr?_RNs^qu+w9NL-esZd{@zN}VC+|XDEYx>VI#4XTB*bOo zoBs-0oOTU%C4pM4t-Y5v@gMfmR;mp>nc|dt<-D@N2Yt`}sJ|+EKU&QTHaH%#?9!wt zsh*rR5$&ZyFXJx$_u17ydv8?!$}B09rY9$!^e_5e&${v5<*0%SWiBGwe&@GHoU4?P z(Jk0^H|e_G{HHn1Uwx)e%$wKi(;mO``~HoaZBFu5ALn@0^#9ZI`OcYVzx+|1SNnuv z|CeLs1{>4oyo#E;|Hqx>mX)cqn$HT#)X&IBvVVE?%zCe9;jjN^?B5^M6_+19v+(w| zx7BxLJgzQco1i|~K=AK`gkt##A&rag>&7rAH5AIS2r}oaa*Thu{OyA14I5|2iE?E1 zPM)*t$8U~Y#SH;bmjwHZf9$#*5FekI_AS^)f8B-3C2nu@F1}tTJ=4iV>GEMNmgRD> zk3RmkZ;cL=vEMeo-0pX~Wp!cO<>#v9_Rq!g?(IME^5@(wRmWzQPcqu`IKtwbgKl=W z(S$aONjv7<>{!LE?U|t3A#8c+><8_YJafDja9S}=_xBB!lU9m8^H9v!*<$I!8Jrnq zF*?=8sTXhjTw17e`r((P{@LGj3m)H_dhqh4XS5$<)lTdD5lUik-SzKH(2`a1sL=J|hx)?IPi`SpU#6AS8f-x-;)nVzGTj;|E(Jn8ToK>eYw5-|3B9YL)*6R`)mF$QTfB~BmaH~&re-i zH}mLJE!Xs!d$;fJ>92h^+2+H8Ots@>7q;AY*=TX{=H>5`&ig4E=)CC=PA!)aYntIWFR7gw1(Iy=5O-d`^` zr91bg!=(n_%k!n9f3b2ldT23k)4uSq^4XlzEP>qj#Z$^N`}(Y9PSuK@KDR;c%>wtQ zyQ{uUE6@<*+r07PipDK08w$fN6jVJ?V+pHhYE9w|?|*Rm@02fZQ;yi#*t$i}QQWdj z)8}sY-N`(qMqBPSTxgA{VP9w4BD=dMYW<>(VajjHD&KrkG567(c-}?rL4&=#$1_~K)vCX`j`}^9psiF?ETD%1e_ocHZuDbEeg2l0;$G2hL z>0ct+u5VIow+qX4cv#dG37@>PN#{|-BGZ(b?eV58zs}W3ZMkyWKVbFz1wp$y{mLbe zpA0%DzjVS)-_6x+W#xQ|HC{(+W9lE=FZlH6{iT<2M=ps)aV^Pd4n9zzI{%?s>%+Mk zEKU|X%6#s;51#t&CFdsv&wn!uO>UgNtWjZ7W$U}QYj*vVcWhUz4G(RMT-&Cy9nBYw{F$fL z?VGmc%A9q1({B7ZyY}hxf6vX^PtEMjzxIo95*{+yOP7o_Ogc8j4lTq-}G-+cv5m5Cb?&>>JGhgwX{tB zZuk6;n(5I!;^r?}s^@Lf<7V70Kj-O#BWzD&^c(AKWcL}Fm>v25?XZ2DgRzyJ(-P5z zQ&#x-*v&tty|LW*Uj~kKAUdDUD-c3lXdlL-m>>vpH@Au z?wKzCv{T)#sVBK5weZgmp|8`<-#OE)k?>;1GTUrt_X`ozdt}cA#^@E)y;RycH$LI` z1@4Wy+>%Gx{wcDZTj^1<-u$!OBMr6SGl3f7or@*Tf7eW_x>9YocyjWI2q9KMNArZ^ z^8~;3t_?i5HX!@yjMcrLj;{ZwF80iSL-qO1H?6-imHFC9+s|Km{pHL9Y!~AdY_#(` zcKWf29_LVMdAv9^g-Oz!U87~LBbRjI%+wRxSIeB5mpYA)-JN?yUjN;P2Gw&6s}fye z-!5L=E|GDc_u7gnRlBFIon%wJAi(0xv0uqR8OiZon!k+_Q??uGrkBz zPqs!OcSo704)0i7eoDoybidB|@rLI)Dds7e{Jjc%$+I5*KYg#7&2!q_@Vfog^S$#= zm4}vZeJ^J((ZgtPAc5hKfP@5-f*8y6kOqbwJnK}nM1qcJNnBzJ*Di7vT&)lmlj(Z# z&7>G174d{OLd=I-Wp6Mxerz_(UF}<1I&;k#ukS|lcYc3$xOQgfRjGLiVhjwBwE(uw zjs@&X7_R*^5RRQ1`TptY@9+N3EztD|+ZEbUQm{1E{g2NI;pLfT zvHyN=H+2)+ct8KgBe^o=uD4r5Prd3XYL#)cOTV6{S;%a?+SS8QZ-wSo<%;u@`c<~R z-ZuHAt(#u9-?f)vD;Hh9ajMTs>e=eTlmpMM39s2Imzew7dWS^@&${489}clw?*7xR zF}LBO1?$;ACl9}|u2eqyEwHF{d-I9M9`c9F(o>h)6;FxC`8t1*{T?TMoAW+@?Ut=7 zf5Z32b=gy)ocGVC>D$)%Ou2UD?ClvkyL7HjTOkq^6Wb@?)N88B@MU4~F$I6Vf;nfb zqGK3EUQTP~8wz;mCSG4;`iddOpHafsSD;> z;fK$bEe&q3GsT`&-Kl>ay<^YTbBq1wxJ&%_l5W@ank`|@+b7Pqdu>-Z+!Eix`XRfm zKvesQ@q?dCb9vvb*54uWSEhDXM)Hg`Dt9)#=Q_V$=gq&Gr0bb!^RKhrTHKrP_|&hy z-h*nn=SoApCI{X&`8tzRt93>+f9|8_-4C``d^=@lb(rgIVr#PT>zG?}R6@fnBJ|sI z{I>3R{X)yDf5(vzPK99t6=&YgR}3w4+LkX4dq!@l1dAs7-)5VG-)DH9%9;4-%`>sywH$i&&Bx~po{`ft zw0wFoYsqas$Lfke37*VZm-P95+_(F?d&a^oQQZCyL`=df<}kt>p5I zkZhT!1^ce5evnyK#29td;?u1ub=MEBYks}+%CgrL^V*+B&wlO~A{*Q&bKLPs?7O{{ z&C=rMCh&(`+j+U>b#?qRf4%y-1s9(FOqYA|=cfM0cjf;W&uTARduUlzHE&^UOSl6! zyRyw3hvqK9x``i^lD7F@ku3M*ZIh`z{(Rj7Q;}Z&ON+NyxV!sa^6w=q=U5kI$&%1f+wb9unDH7{9-m95W^ie=~>TRQGhj+*(t?!mts;0U5Wc$l2 z_UAnJA6yc>KyaDO{yPk+8=_Y(DE4}Ao#(4F-^S$hpI7+29%(vja?E%;bw-Exlohv% zC+nT!?|6M#;^C*J?#ujwi~EijSg3dk-TV8l{C$%7n?(NVAG@1>J2|b5owhCcjfzjC z#Us`^n~$A5{?6m)t$J=njjP%|x@R6#=|!nq^tmU0Hi`f9>Hh)oeJVfdy)5_qdrv31Vl(&`opmz<>WQ272&oA}Cq zyZy4R_XDmVI_?uEcT4&JS-7>9)F9^{lO6zq@a*(xEpJGOA_bro9JF z|MZccu{1#M!EVm=J2EG0+Sklbu3)Q(B*jI;!U=n4!xGoytw!MJF&PWvHXu+_!Nn6?H20}FEE$5KU=C`(z?$WkpEw`?AO8A!Dx4X4%>&p{U zGh7}{FFNk>ttYPR-KqV@HG1vVa#qW#6|Gl2A%3$wCGmRk9^;1{i;mn{m3I8E*Ahy(*WrtWcdX5Rta)*lUgsHfT%Wndf8&b#?q>a$cO_(=*1N#A>gZ#RGNe=YF<4WA3E~Y2UufJ$ZF=UOG!gM7*-d5zoaoZN1e*ZrAiw5xX5^6!0^&?2R-=;nAyY{ijz^*%n&D>I&& z|BOHX*RXr@=0BVJYdXyD*c_a1_eWB0e@WNx{2lGLzwe)UdbX%uo=9Y-%M`EA-&Scv z?~St9cH-*i(?^;+lFssN`t+I6QPKR_ja~Dyms@j7uTVMleDeLB%$ht^OPbECd*mUI z-@yK^Vw#s-<->g4)i*SA*F?;l=(_2~L2>avht~g9dp<4f#|!qlN&I_We*H1;w1J=J zB$jYXpKGUWzT9;el;Wy9`F!73gU%~Hp-fAZU#{ls6WPM0_&WW~M=nd(()}(!+UCg{ zrgn);-s`zlzcuRUVf$&Dwx)DM-HvTo=QVQ;+mAg>i|TZ1)fJ}vm)f2*W2T4(^RD-o zZNx9`S)-}XbKvg0hChdH_ z*Zx*{eeU_<_jA>MUJ3sv)pOwc>OG&H#V_4!b)!%vI&qp`!$djj?(~%+egYMuRfoNotm=M$%|Q90#fK-s`;V`6e-+}Tu9+ux zayr+KO8Kcb9$d}JUb7?8>!d-~M5hb4U)^GmI3ZdzMf<4u-<;|jyo#!RX2%Z~%K9Wp zxEb!8Q@XQA=J>gf1#{O(KfQ4z`N~s|OCRlCq!<@Y*{IAK{n}Sb`*qLJ`^QqI?Nrb# zH2HU*Gg7VS{Kl7aQs+lK+V)r2e)r#j6FZF3!qDyD3Y z%`=wAtEAs^zxM3DoweIV+?VRkZ=j{9P{@C3&%H>Zo%!3c{ir@D()XPXM@Rr)H z=CP^wRogj}-;0bg3)yUKUA2st@7?drzDi@0bNyk1C%O66((*q~xPP0}XZz;i|Mr5< zPnn)-zHa8baQl^DD|6RWB}cmhU-uL~GL*_-Sujatt%=cPYm0TwVO+TfN>$^|9p`3x zRNygd*%tGtC7n{?e7puPS~*xM^W`rGZ@>6?{*p(Mm*yRKz1wAH%OdL({8Q=wrT_dD zp+}8Zrx(h!d)gi>SbbpXvr4<~Pwy|f9QS-*^?&WWT_2TsHkNSNKQDgp#PO1aV)&Wc zzNa0gs9c+N>f1R7qk!$^O2XEHt4Yz)qy|y`Z=nmuTn5wSC_{G13R=!zqJaN(^ zv)^+(>u3MH{9fs~+>W#d_xwCsCP>V6QgixVbDr<>?l7l9-k8kh|7G^a=hrSgGjV1| z{hx#EKfcue)0%9&zv+UifK;N5)x$`=b@f8$S8lZU9W2rny!+p^(!IOi3r|0x^HO5} z8`UIBT_kRCjb7bq@duIX;Wyrkz@aJf~^Xktg zTD=8(Y}~*7<#`_Vk7cP+p7l5T)bwSWof@5Y*LP+8Wa*u1TJ)2t@AZWnHoa%QT2%bV zYf89u&Ru9$ip1rZyDB;5A8n>PEp^!%w{5<||GTWE_Ff13QgbChW7m(B-GXf=Ja3+96={lWI&`Ny*eTxa$3D|FJHk#Y zwj>xxJlLg|DDmmu_kGi=-|cLFe7yhvh4Y#G)i(~`=gGVA^737g6FuTH)i{H=?i@%j zE4<%bmC3ERO?`2?_WKigaxeXIX=zb@S!PUk(N5m`Y11cU1R(m=+y>IDP((PLG{C z`g{-U+4GdEUo7GN=Qm$Z*gRRvlIV6-yW`P}#3zbN#*|9iM2oAQr8``;mG@cN1x|31x~Md)|r24Z;C{lX8HZPCa<+;ipBLl|M{6Z z<=UJ1^B(m{_iwy*<5B4Ld&idh*H2#c-e8L1K|6NwfX2ByCxy#p`U{uys=l0X|GtX) zyTxkp{bsWkMyZEJ^DOTEf7JX@zir9XIL0{~5$rx`MT=R!Hl2TVRb-*bzbk5Ur!8D4 zJV`H^ajAg=$J|Dz*~cYW&KpG6uy5YEJ%0aN?t`bEiN9zSw>0`+tnpU4mc;gw~(>Hn_-Adf8C9S8uaqfhP2{C=Y{yGJQs0%z&;r*!@@?7ze-W%&T zhL&e8=c&9%Ilg@r&#@&_#8>&S=Py3gyW4KMtd7*CJ^yAFE^1(Wc;Lwt?_}Rx^(Rdm zHMxZ@2*~U|lKR;&?Ap1gvs3#bZ`a&-)$KE_hNGZH<4n^PzI~4;S@ZqnZh9wV@teis zf#me6lj=pn^QN8`ESUQEPOpDm&Axf*ThlUU?aR5pR;E_odR=D_*ILu&gAKpm?e6EV zec@akvfB2|LwAOE9v#acr<^H2>aa8HUfqTG1wp%Vy{#WDomDvdhC;xp6g`!;n^7lT z*Rjb}RW*iG$5@pzCLg)6?6Sn!x;nnOf1Gc9TAz7re)`tkPL~=#EIMLovP4eQvUpd& z=htmY=NY#oKI-V!$ugUN(ob*mSzCjd&$H4`6v!4?_{f@Xna)!_5$|OFlz3iS@ zqJ4Xg3G+Pdi)=w_J%W87RPR>r>}TfQ>7Afwpuj9=xA%nq-P)?_Tm2_ZvF2O*ppvhz zy5amk`TfVPZsm>9{JAs!zpjj;Z~hwn+>3960b-iv4q?8Jlz3_iCSjM>D6-K?9mRD1priNggqo`|Z~i7pl1(s(bd z{Zz`-v#WX2_|ClBRwmkXdbys#i&l$u-W!8de1m4aZCG#nIoN0FZkc^MxsGXdziPgp z^79I7n|l<`5w)$KR>w`tPTf%Klj0UzQokkqU#gRDbzPdZ`gOc|sN&y;sbb6S zpYr)?D!KRALhG1Ecb?u)G(*lhB@dggIcnB2mDkVjy|#Qq_W}heleceV z+yivD=CB^l`tJWCerw50@3Z#q>XR(8lv|sxbsamlx#p9weYfMsW%GZC%h*)>zwsma zj_KX(x<3ax4kC~C8>cMT z(tB6eSbKK-ywVl!RtGkozGC`)<k7x;mLJdwu)V z&4nl9mzkCFH;FK-cqy~&xb*PMDfvsU?9O&F?>}(zD1TAj&&Mj7KUf_naY*$}xwYts zf6Oj5#aj(EdD9GHSl`sue(hB2yS-!wM^&sq{>(MT^S8G396as#(qM-xN8p!Ru~$Ab znQr*~``J?`pEsa=YF=G5~Q)z zV^YiZeP7qsyl|GkSjILo5Z;uDrT??_*ietg^7_ZgcxhWO+|*dQ=)+ z%5=SSXYEIu?=pLR(j(IDmmIp;J*)Gkr(FG~?VXd%4*%eqe6@Op&V4_{8OztjpPg1U zr=oy0oU4nSr|R^>Lv9^Dtm`JYMD<3Wcl5omFU7p&(3S%^yF^;M?L?HlIj7!8aB^Jw z;DUcp+uk*6%Qct4Ln)D; zRxN(M^Ujp9?yD(6;}b7q&j{Kx9Ha6RX3MNYu$Q#ej-1gQS9FA?JFQR()P*&_ zPhT@5_4?zlO4kqH`}~+s>vo@M*}SIDi|&Reui;%`IN`LVN~dT}eLY9f&q$l~UNW~E zmmXqYD|9V7?0(V5SIsPWa~=0MmVdBmOy}Ur)oQIa*6lvY)565}roN%c>g=yDpL|m{ ztr@F+%bL9E$!yKNI9?fJ}E3$U0ui5q4+aAC0nv~XFw6{yTV#&&5rK*Yf z9x}(n%rAIKmL1N~c;UDA@w?xq-tHG-^8eYq`ZRlDnzDDKSo(ec(rsRs|DTT$^<@!q z_kXln*+>1o@_D6MEfa4xzCNLIGki^M9rN+2F%ti>W9}bc@1fP_of>$7n|JeJrcBMH z`bjSLE*KhQ#2j7k^+`Uoo)jU2mF!{zceU9H$e7(vA9(Z`J z65029QSZVD{4Yw_8xEE(efpKTaL%V&)_G4#R2^Jmodh@C>nL|=IyUQH#W!o?MkSBs zD`tf!1Y6uFW4`oc=D|?&%@1un8f{#k8duu5ZO>0zRO23Y_qKA|AB7X|ETTT?7c?C4 z{J1>GCOkk^WM@p~!X(CZ%k-r??y2RSOz?8vRl}IvCi8(g%Gopj=#7>jjcMWXNt@!9 z-@W~4XZL^czaNAqZ{2<3_hz0&riU_ScCS9ok$g8VFXGQ}iN(5aj}#m44r={i6V)3U zlqx(uW@(34(47OvKdwn#$)MfmCz`paz;?QdCu6!#sJNtfT)q5Wr>(Cx@4Tt*6%=z_ z^@D9oqRkOrx2Vl`%cs5e>QbGqP+*j<>^VzHO4|O$mB%WXNtetTOE_vce+%z=?tbms zERCB_Ru=ykn#q}|zC8BR=Sj8CWIbera@)1I6hC}5N#{8uCewFz3TL)6Q@FCtix?r7 z*|S0M|*XRH3lBaiDl-v6rkkzO~6f8STT zb8A9=-dZWWfBlI%{@Xi>@@6iW;H-UigT2J-SC>MV+rFM&9l~bXRMYqDYH!Z8$#d^7 zIm0(M*=_ZtLt-zFmF!u=Y;nuXy?52cyH?x2ralqkR46!Ucy{+m*X@g62zP5w`8xN9 zkK$6P%R5@WvfR7);=4uJd7jHVCC`1E&y=*s(=$%;Q)XWi_uHuXH#C(?dp~_J`*Vux z@C(Z)og91L85wALve!&peqT;#ok!8-fVoq1Vgn=3o_(;CuX*c~e+G`c$L4oL-A&Fj zYv29!k^r+;@T6rNGdaCw-dr_sY%O_pf&Xi@@1&NqXMMR^nac0in(zP7y?=-M)?0_= z>RKKq^=v&aa&5Pp^w~3y)~xL@@-jcN<8$HK#l41MIlR--R2c4?o(bC>b7#e)os-VS z_14r?Z=E;C;vld4{gw$`pBlyd?Y{Bsy8e91578y-GvA`k z@TG}~R`J;{S_Xw@E>vGr%;R{pY?;OSnWuhA%xp>zaCW>SvV{3|Yk_R^)=N=6>_(g{ ze|cN|M9k-FY^pR^BK36V4kML!4vOysc4;oXcJA}~e^2yxetwqhb3JQ!jv@QuiZ?Dx zOS-&*FNFvkP0M*L!I#vk-j?4oe>3yV*1Y$3-uA-0zee*OfBL+>mSHXL#J-<<^=(fa zj<@!owB$!{+o`%2aRLvdPO&S-h|XAeV29K~R;9CtyG6pM8v4vGH#}SI;nTkEw}s`r z1rhNqlF0>YW1q&we3`U?v5T>kd-5xzyy%a2Py3p5&5ZuU5qnz0PLSu1804Tjzvw!zF5ej*j^ye3 zHb$qzuB*m>@R%%ezI^5^t~Ubvb!KFnIY+JSFfn}mx|{L(#x{Ph!dUjD6YNhUeKmM} zj%)5&#yR34eG+#Xy?1aqPmYqBZ8qgOYmuMgS6!A}ZmWW`owZc_=l$m0_4jkb1FZ+o zRn%Xpu2O67dC+-?t&qEFI_sf}cWOQt-a4tKoj#lA_pD!Y4z6zsmvUeEr1kKGDa_`g zFTb#dF!zVwPg}jKJ^i;x@%ayDKHcH}D)+ar(Mz;BZ-?!2uQvq~oF*LM?A4aO_QrAM zM;-ywP3a~*TPs!uoyZY*xP!UrZBLI7%Vbr)Sra3>k9o}A(Ua!VcsD(0?aAa`wVr*7 z+W#W|E>KpuDrN3%r&AiXz~|JR2j(8XyONz0T4(bb-Pv|!-4ZtU+jTxZ-Q8Q`oyC)9 z`Fkw6xa3rw+jkIYNoyR?aNfWAg6;>~88gZ<^Ho(iT{Nn8Do*W` z2{uwN?RsT!-frvslr%x*`U=@y6Zbi1pVj|+N&n-y@_ohnFK--{tK)gVm6++fZB?>{ ze~89)?Z;8GWx{K>TorrMB6*Z~Qpn+w$^+4P*1gYF7O?%3vVC) zl>2(q>TrQW0LOG)^WdCxC&#flv@3OZ2#d*0@lh}DlOShed3SVpB!{O{YD^Fcv@4ZYjsrbZ*h8=DgYn}1esSvpG#9L>~>f>*K4cjXYIIp zUDzsp;!gF83vHLLl$;-RR{5oL)mO%y4#rz2s7IEsu(Vsc&i%Ih1u^DRTF2+y>tA)| z|Ak5XYfb;w&Cl9;ikaW$fc5>K=l1p;m;3f1xg|$vmn6T)luM3Qd|oSKgZH|x3%~C7 zOYBg=>&8^ApB>7ZeQngE^X}TLx7*lsEIBi`>Bf#@HEbCLtKKPjZo($$80T{kvA2R5W&MJ?k|6!zzV)6LwfS-!ZpvS`>UZ z!8gDr$78p^x|?q8v)dEqFPdSsWaWYihN|grrzI>|s^)5Y_|(ppOLG?Nh@W_jX*t{M z*_u_s%4tG;cec!5dbNDRm#3NUY%4qW%)cPbwq`50PX4u*?*Fze?lN3crly;!z3q^b zX72HfBgenqZP|Y3lgU@7{;R*=J<8tuzRTXWLARot>JtxD3WY1mZB{BYm%jFaal?Kmy6 z`1gr!*E8HbM&(aEN-U$^Z01@Nki34n;Xgjx`}HLgI>TC*9Z|X^v%qAn@nyDN!z`Ia zQ=afH@VmuQzTKFS%Ub%_!G&|~IG@}jg*Zi7emv&f6R#5Z% z>oez98&AG^ThK{~^~l2mubO#|1RgpzwKVJUv{^Kb*S zpbPK6yv!?I;S+MfD|qfKh43%OP3&@c)}|eKme%sPDQsF==;|G3e4cM!owR$!)H@B2 zx$l1bTXy-;wI8RxwoeMH7i>_uIOUYwI_U?M)+`=OyY9A}b(<2HTb8`}r|h)#HB##9 zElX>oKK(_z^S>Vl*KgRivvta(`#-zS7d~6P|Bv$y^ZGpxcJg_y@|b#WYD>mkRr#P> zdKGGCik8Y;UN+_2vRfR{(*+Mbu-wi3=HrGFIx|n^F>YaW=g8jlmSx&6QGO$bq%O&*Z=sTlc=q_{B~SGi<}GqQf^WNnN6@HQRcH)%qhdb%n0l zpWh%6t-i)_?n2?fi{%Ef73P2Mu+VYdC?-Q!`~ECnPNStxc1y|b?DGrw2Us3G;~#?MeL(UV8NhKA&P zSn9n-q>sJs=z{LqK3@FpoH5Frds*z&IZo*%$}{-~ba-v~%&g|qw{5zRWm9J}pW1~h z;oUK&ia%$yL=>kgJN;<$6g1G`TiNbv#%)^^c;Hx(T8envoRSr~yG+7_F1b8rd+?R- zVnoz259hZmJNBim`g30(e&6J!F6 zI~#vV+}D|N%W-u5#BS4^RHHiZI8!#Z#$mr-4DwjwbpOm zZn($fNZ;``k_z@j0>aT$YH+Nm=QQyo*HU&3p3brTM1$Qg^=u9=Rj@ zdDwT}VRmlRiH`MrO?A87^H*oP-aYouhs#lFd5i3AP02RruB}F` zMU757865Uy{Lk;+mnJjC*N1J2_Bp-omnxx;pB^d}ma91W*(dbS#($5arhM)Sm*0QJ z{JhNeTfIC}?+9qJh_9oKNNj0=<(`!e#tNFlD1cFDb4oz&i-xR{cCo8Y%gvts9%0}-CgnRnXShh zW|gY7lo(pcdMY2E#qZ8>fir69<8?)G!|j%U4-EoA*qU2)virEb#0J9WoaxA=9+d{5Q2;Z%I_wW?w3``Z7%@1M86_p#6L zZ7yi)tzZ7m#YL7?$HJ$tGuT?+_N(M>naGs67VEYiE1a|OK*<)3{IbtH$(|2#&mUws z@w{em$Bn`IAL-XsOujfb;Qv1%iC$2SZvG-1vI@`yc!UodQI&6=MF?$6%FwW1* zJntGB{Aq*8JF9Ly^^b>$E>CZaC&M{iR8Nw#=my0a8x(o-=G8Ugi_AGM(~R zrm-Y4Vv0_@R8!j{MS+!~Qq$CA=FCyzmGY6Z=BN{oeB*f1Rn3q?Bh35DcB?JYx_@f= z9P1qxh8*CwX`17|Fz89C`uUCPuPv6}IVW~*T4u6TwtvoUk3-UD`5M#KpZK%n(RsVy zmU8<(>F6~@A9}pwsN|%W-lT;N0xUf3hhxoJ8lJv5f9F)TRp>eu@f!w)zWPUe)h!b2 zdL}L|{OE3=>|CLJvgV+)6NlrZKCO2BHrdqYvH$NK?tUD#^3_(&lUr{Xs@8<0-hCF` zqiDQu2g?@El^xM5SKRKr#Mc>~m^zE;(^` z9kdTW>TNFzjxJO1yb{s#&ckulmm3j@GFRSi@SD9hC-vmQp(-^y1_d1|sO!a;QT&3`Eor>@>N_-WvzP_`$W;~;n?qMEw;&j0^@SAL#- z-)C=}{Qo*|_E6Vh&32!v=o@UNx7P3tf1yqLtuHL|(lwnIb8ecJoUP8BU*c8sY@_g< z>PJe(TN&4xNF+D&-v7R4Gp|AHnjkH)9b1+b^eU_@nV}K6i|N3T4F`1J)`m@)#a&^t z-Km?=O(JNqhQxf|{r-kuZ+fcGXs9 za*WT_o}ALp$jdoCz+&b|MsTh)1*Rnp{ZiTNiQrTKcFC&pAyDm3$rGVn^7 z`u5je2LVH_P1_C~`u_9D?SRZPv-2&F%Gdt&`&E1P=hEjD|9;+A*<#~Wb$2t*q0+SU zdp(AWpHx{pcyE39xxcQ@!gE`GT;|J^ZPAMjqXhU(pEe6B87*OsHuPsN^K-7>z~pdg zoBjH8-fHTx+gy&!(Gql>wN2uY*U6zQ*09fKEalw91US;fs} z>uREzBNXiQVvgvOVm_t$mv$>?=tyK0x7A8Nm46ZSxAu6tob^HW_}@Cem$R&|JIcjh zm)zto=UE_g`(}BQj4^xK%W|hj8~jE19DCB7H?9>uXji`PbEg-PE}oTemS{7P;CcCB2}GTmd=PP=tQ76Ml_WOzGe1oVJ~Uy-QtgM6%imKazyzi~c=E*X-nI{F*Zj-_gS+3{Ib(A^*+ORD z3zx{(lJ6JvxSN!#cOTYGdn~s4<$lHY|D1Q7Q7*f3Y0c;E6Gx_$eU{2iahfsxMfw|o z;IziOaZ;a}56`%}#N5zNV^jV93)RQ$#a&*Ct$i1K<@9!;9bd(5`xvrcb{-SFotL}# zfLDs=gbBMXUtC|bcz)Upy}*+E)Q=BVTbS4{k(ab;KD4fy>+lWU{4bWW?(b%?8(E#o zI5Dr5O=a$d#dGf0=G)glG+M47ckp{mT=DJRKS#y)A9PvkV_M#jS3W6bou^66<|&Sf zhPMoCi}gKkr9FMM+`uh(?H#YZW$M$X{g;T8EGpS_Xl9!5RH@UI~l=S+$UEoGxALWR`R}UcH&FsIqcYS z=9Y{#b8_c_l+LabLd-pq_iy_x`xviYp%2S40yaK&G9y8xJ(fZwv=H2gh zW%uW8ZMXen+njAQ|5Ko}WX^{PY1%uKdG8(*o6CEC;MAOR>XJZo5>rR)!=pCGxC_ zIK(07J@AT3MPFu{Sz0<6{da}&BsDIO>eKrY%Rhn!+v+VwIPmcr{ zwMR;+svo92Y0Kz3ewW4H@=NS%6{R4~b&JAZ8_urRU8ff`AzEivyNA_sNekDeqM1QI zRK3n!USpBJNdMczlT#M|Vck{USEn^$Yi852bc>nVlXmTQvWR%_vO8F3ZMdb;UcU#K zi>};MblGy!Jv+DA{NBF49NROlS~(%BuDdRbdi{E3xOKwnq-~Q^T2#*ZKM+xi;91SG zw*T^}yXV=~J3Q`@jbCzO+1(X73xywbMCJQdzxHDWBA)6Wv`MpOk1R!HO1G=eNI{LnUXM7C$9{2W|Qvd7ZSAG=5}?@`%wSK zal+4!c%EAS|K0peTlTbFY^yCUH8Zo$NZs+b?BJh6uXlWG+a9pmXJgH~Vw>_`msOa~ z&HuZ7&AQsY4ds%`2THj_v_JFQdcH8^(TAEwnaMUgcX_J5H{3sAu|mwRZo#u@PMaq_ z@R$0u&|gSv%i};WzU3! zVsvLpPurnY9r9eYa8-f&+r0-bG%P;p-yCjeQCYAh!D1~(4STwV;oUpjwT{(0*ve&g z?drbt++)Yvlq2?k7yqAqxjA)S<&h6}o}Jb4Ia74`PT;-5@4SDW%(a{U_Z(xGRHe*y z#dxg?ncE`cZz}LD7JtKa``nXrU;TS}m31N$c3-%>>l`}65pw%_uX zUfD4>@r&y-cD6w4u4&iLeElWul(ZxDZ)RR}ebd!DCiRxp@^9CQeZN~SFaP(2dwHqN zw@LlBZyvrEkFnl6$0uW6QAB;0%e5U#-fvd2=DAclk?E4k!o9nWrTlh`tNbrGFXx{B zoLL)Bw~IbF_L*j2ZEA&&ZEW6u zW8;P_bN?*`;&GpCO6M-xYxDj4CzI3@n{Gdw_tmv)lbcN~$KziT=atn(zi(R=^G0{G z)-DbA$A9bJ?5&)V5?=fK=g#lB8{MDm3%R!FR>-XhA*zZkEv#-%3W{cl$KEEZ9GG#r z?Dv^O8@caWdaLi`CBI2LW}ExlaWm?G6TdRv!-Z8$m z{a*F+esRH>TRpTmJx>V4%Z8?F>Y)W_CYJYn)^4WUz0lx47K%&NDpS zn_4%C>Z-eOwyw3=bnw1`RE@Ow^sHr0Ml*K#9c^XutW-Ytr#L4pUj21c$ZST_Kn2bG z;~wnh^W9ILjj-&#_(7T@ezN`lw13CTg}+58ynWnK$1-h6fSyzGEZuW|cX*$F$RB?q z=JL}MYYtc)eYxZC#M+w%3pO=xDRO?2-M-R9US-?$!iL!n7OP(`x1BmSG`X=)H>LY9 zN6w}-@2wU@&ONfU_P(v~-ev8VH(CidylZ({a^dEy-tR{zb?&O4@tp7PbhG&}8-l9) zmL8kDW!B`J+aC(qPEVh_f~_y~(3a<19Eu%N^FE)kJbRYi&(AH?-Qo7X>U}{erjx5}L?wo#h_lD)qRwXuWeckUbr1urW+X*HtpzQLC4n>;U8wJ_^#6aebX)?t@i&{ zp5A%K**^PjZmk#QG%XQQ>{aPA{mgEfs(<)}tKjD9Gpmxf zGQ4znq&dZ4ix~Ti`Oz=yB$6*BPITgE5mZogH1_89_eeSTpjGeaE_dTVlf44MQ7d;? zOiti=k~DqO#*d*s3E48Wr;aXcH%@vVA}`%8wMIH)!bh1y8fvo(fBx}mtmfSMot!`)LsVQ#q6&1)9nrTw#S$}O>))leUFL!S_o1nAP zD|^drzDTDIy}28L%RIP)HDfnCzHwF4sAJo!IEE+}otgTRu6u9Mx_!dxXZX|V3r?TD zDc^VJp8emZPIza`wDLWF-_|@5p8rBs+V;x@=53AvLdGE$hZfxE7O=bIW1JwH<`(ZV z=dMrX@!JwQ+a%8VZc?nDve$l2;`{IOp2f<0MwmP=%Gh=!W^I4awu1$EU7ep2)s|0} zlz!)|c{V8Id9eJy%6sKGVu_J=ey^>L=n?g-tT6p)A(=r_<4xvo#debP^(rJ13rQI|4#FVi0zg#Eq z$5lM-{6zbOufJw0Jmz`)EY_uNQpB0Uj9>W?Yiti~>x^F(WFhZit+#v@=L=KD3sLTC z{Y!D*^3znMqx+Jq3S~1~QmroWN6-6fxN>V=ci zrosNl=k>{xOph2dE;aP5y|-lAA=eWXoSvrc548J^*m-U~`ioc9$MpQir*76OwIX+l+eaa&l=dfw7 z0vhU-?&_@9kF{IXlpbjjC#tW{AvO1skpk<~InFyX9`kZIt#pw3^+!g?b4JEATlw3Q zzPLx)Breo-zM477Q)X3IgW5qeAx++iw}ThX=lwSChJ$WI+KL*1>(_2`vI>$5eNR-T#Vv*_`XrMK%B z`96-Z&EM7jTeHNgdCR5iUfv6CF|%Jj=dB*dH)GR(+evB*OJ;78Q=a|isZFirp}!YR z+_n0CI{u59wX^Qu^6z`6&$TWGof#mXIoI~fg~R@QZx{bwb0%v<>Qf)R?Q~syzYkHDnEQZZ+AV{hooQKd{aJoE>e?l zJf^ka4O`$h%`+8qb2K`?&W-S$-4lLbTK1~xkDgpH2yAP;Ron7WNV?5_!YtPX;hxe= zMn8F+U%Ow5G)udx{(9=Jdl8o&M9zAB?+cI9fySA3-_G@X?E5@FeTlw87pvzY&nb@% z+$sF`=5~F1^tBz{e1QVVDOTGRtu;JWNuF>?aW|22y&rbMebQ7`4(CR1r^(+6S1QgH zj=5^@*xm4X+w{ucQ>%Y`wmz30xK>?I)$Q}|8^sAi`#CRh%-OWiB;|6k@;57CN$cCFFFhZOM6Z@e9+hMLKMbu`M$qnre43y7H$tG_HJF_wQGu z%=VbiA<>@~L`K9M6MyWJzJB>j>1BO~RA1LB$p+;A;+f9OcW%oHQ{JsJU3G3VYVN*T zmCN&bTfV~V^NWOzzPTuTW%}yObjLC_&SmLak|Xb~>k!FZbwz587+cugZB}zngoHcY z@?AK&qC}`@FQ@EW*jj+%Q#yLhIs83G8w6LgiO+4CWMkLZ5%TK8UdZPMzSPfpFRRG0t%L%r(JC%LK@4^3`Z8oQ@N zvP?|ccuz?)e}M|qlK9;1g^4HX=Oq9B>?1cX?RBbnQOZeWsl8KXrp^fHTDnxN?1u>V z+J-3INA3Ok6IEtq-F@^Uggco>d`|SiLKA-5DyF4(!uK6z+Y;Td;^U!i3FetXU(-Ib zT63JzUg)N;mQ!-A_*c=-ntwfC)C(8JXtegI#g}yvk5V?Dkc*RR*$|Ou z=WDsWdF!9I8j%a1$){{6v0NDGU?sHJ@u^gbO=onb;hrnU&org%+SzlB^LgI>uB2x& z22%D`j>lvzJ@348cek+k8OmZ-XW=j4w<+wx{iq^7aRR-`_X6@sZpVugW)v zr!p*MEw|Y>_h;13-FG{KVx!+(-d8vA+%Ex+mMLG-vwFg2aWHm=N=F>O|Nlc$kKvy? zqWwxft9&mWf2Ct{J7J&P62@86yN)LFd_M1?cWd9=WbWUQH|`(FxF9_%N8`!Os9Ps2 zqwhC8ed^h9WAh&Y@2$;8oHmD_`LKWg=P)<(zK4~Z;qjZ!F#CUP6fkM3Ov+}=^b`_R zws8(j2@tmHoY3Me_*r{`tf0!qgN3RyH>JGv@UhgNX+2|svtzR0v9^SYGl@wir-LLO zs7?wKO%r#1CapO8jne0%R-ChXHhFr?{W;B8S4U;5Pe;B`*RjQkN;#~d$B$o|bi?le z>m)hW*Ets?uPyIA9(4EM=9+mHCMO=d>ofDzX)m$b?-P-qaND}#(GInqBsKnXNwXz& zCf?GP7FIUlu=YJ>eALFnQ{tG$+CuI~E{An97VnBs&H1H1QNy~akm)p?44qKI3i>h-T-t6e9l#MJ-&TJz_z{CibdP|?nP$ZyNCYdjepOcx)p z^}H2)?#&^a{F8fu=y84@ql$Z#FLGL|<>$GpwmB)DpBU*}7eDpvY%UcqW7ErzI@725 zi{IcnIIlMJk%ikzbH5E)x6Nv6YjyPX=YRZJQtdxq^TQ{_fSGlZyx5ZOafF^ROFgSC zXlc1*{}Hjj{8yR+XMIb1l_vX$=kmp5;RhW#-wXZ!e=I88q#?6#X53FcclG_QhP#`K z&Ho7X#U4noF!@|MEz5q1snyv@JDT~<+vGU}nfL4zHhDYa=_}4Rn-rtP68IODp4jaE zzvbz#;+`+DC%<*}U-q2Yf2LM;i^BG}%N+6td(R!^57Q98=e+dN`O4>ZrJ+|VvEOoAc$s5ntEz0q`MVc#+s#jV{e00k``oU`jBkZC3mxum z->7pz>(GR-Y5#vUdV6SZ+OW>ZMfs<7PlHAte}?k}?T9I{{a+Weik+6SR47!My>HIx z9g*h~{vXvbui4{b9Dlz(c>eN7Pa+CyIv&nknfzwntej}(Xc@~OwG(F_R$iX7VHsyl z?_&-&b(y|5oEv34?_|wa7L>UyuGD&T*+w1hg~#GUR5}lx;@C2u>#X`*Ey?7`DuR*M z4{cNVn8Ce!YF+;3qf$&BIY+zlCK~H?uDu{JO?Li1mF_a(KQ0Pe52_zBG@Cf}U9^7L zy@2cI%#DIh1!YbC_vVQP>-v)$pDHd%-MlY>jYT9|tB52+w-2_J~gAISbuH5$U z_{uAx7ni1V>0R~WxVY4-?8SOb>(y)BUtL(~vi$DOS#wHcczZ9390^_F-qw=P0Q{<^!C+kY9 zB+CmDnG>J5GdOB%ZoaZULpBq<)SNu!pEluY8{q1_(hDR44&f7Qb#gFx; zFXu5m>X|FBROD>hXV&ZDuItU7|9TpGCHJ7KPI4VsZ?;(#P`;ZR~Dvrz4e(xXV%)4lkephTsDiTWic{*{rCLD zsm>fcadzFgPk%hC<^J>Y|DQaolS-T(Hq_d>tQs=YJtW(Y zYx`C5_`R;OC3=b(N7{W^*KJv(aQK3yp=4rW$e{eyPL00Q;1{Co~y#Bqq;I$u=Kowj`PbJU%M|S+Vr?@vPCU-dZfC((|}3U zM679+@PaK#D~ygTl`h|qS!#d}IFuDFSZ1v_10aA z)~MyW`^yrpNDIDfxpzHtzEpEr_m9Q9Ph95<{3NevBMeV#R|aIxNI1<^`d`7gyZoWLdWK1mx%xsYsh*GnUb_!Zcj%4E&#{+F@a{fe^Dtg;t%O|N8~>fZboXC=y6krL z+B-g0<;ON&KA&k|@om+?W-~S0V@nTgWB>V~{XgUFZ99IiyZ`XT!|KY{OP^ngv1nY( z@_1)%K>QK5X)_kjxa+WN3#Z5AFBW}*HyyR+oWFbC&L@81!L~mvlIn{dZa=`NoLIAB zey{N1nvc@ojbl!3yy0=+$b!TNO>BH!8J-W0bKN%k(!2D__7!f1V64+WbEIjWv}Tt=mG}jd zRlHO90_r+mFRALez`slE>go*n)3M)Ie7V3YW#>NMx@W`MDMnZMer=7jUbx43rOn>k zADeF96Pp(OHswG`{4T58i?!p-Uw$j;a*1^oNOs7WRW<9zpY*J}xd8_vVq9FBd_Puw zIbasY?cFT*bXB`tl|}R(tF-&}YHQx+MC5i~4BjmkC{p_W*)IF0Z%y$P79*6XAGW}yMc9w71+m6)Ttqw^K6KC33*6Q&c{t~kx zPU`Bf;xoEeUPxEkn^y93a(~G!yM^=S)paQv}tMml=-ts8ic+I4@LaQ0*E+s8Za zb{Mg>ZS$D5aABRuA=X`u9(M#@UNF%Vlv<*DvhwvVrtr1A+ma`r6!lyrq5gQ%`RG4~ zN+}TmWcN8m% z?%T=LevZ%WHPCA+l6Ax&W$Y^E>iOql&o zNW*oLri+B*6#x2lJKiR>PrbI#Sx6uuvvU)VujGb(`BS>DY`p$O;;*OU-fJouTR56Kp8lK?7yU|m z(#h1osK-x@Or~Wo5YEwjdE!P`d&xeI9*5aqc3j)oWN>WKqS+;<`K2mrWd(9P zx3K>b`7J#{On2Vtc@C#pbQ-mPbxNx~sIQgX{ytuA+UxTLUycZWnO$7y?wi#xcV)1Y zw!lgy#`Y7vw{s38uX?Kd+hp5>yAIo(4;!h;ib?upFNz43nUbP3JH&jr+y_cFtFrZL5AYI_Gx7+glmBJ3hbUI>w>Kmc{dA`U*E?1s3L| z9lg$`HT(NsM{rC$xQS(|Pp|OT8Qp&a(gEK!^jR=%F_l(F*cD#e)N_ol4dnw7AW zvtxsU^x68~KhibQic)0ynKvK*d1&ta2PZC>7;Q4xra1rek5~JD_Wua%$o15V+21(>tuwBEkC_kC8+LpKjvioF?W|!Ch zFT7J-{bFHz{Z0#As|wYFTMXHb7hZ@e*ZmR4`Rn)ZOcSYe*X~PE<&*o*nf$z}JdmSBlex7kv!{Pa%hp1;q|`uLtpnyUZoUhV9SOAc+* zVOb(IVS3{gMvi%N?i_o3d|QD1K9ACGjK3cFZz?*t{O0d7%slzOLZ9gz?h^g@MzMR> z;tr>?ZEG!U+=W;T69pE3s?E{q+nk)j{riutOwQE{JGJ(gKNsgLmO9NS%BiEhRd=e~ z43{M$LAV_@HPxl9W;@m5FRavc`o7Wf>GrL~7p(8{UH)sn^{lUY@ACKMoA!Qt z*?BVS(8g_>H%_}WD`?%Wrjm_b`CjeP%baMaUgN{0+wI1X;T9_MW~yY{6xxNs?GV|g;Qz#?3~$9`7a!l<>2w%Td0x^he9 zY3~7R(_?>5+*Zt;y{B*GYjL4Z+>b1l-OMpEFlZ21<(oxI$jKr^3f zTad@RrAy<^zdN(vCn6}xv-^mV#b2rDgND_uO;3%)_<~OT;pg-5%+YrjI49Wgd&BR` z37XlFF7uSm96vKH?IaIZh>Y+{iQOD-+$F1Hd;2f1TE9u;M}TdPKrYt=Kc#s!pVn8r zzpa;8P++}T+jW}M&X5~khqWsW^7% z^BVb^qQ08FshmP{4WhIzhwq;-&E&<(`lQ-K4w+8Iq`3zR7wo_P^3y}!rtNVBP3iAz z=goX2WBill`jnODrC;ef_i~(W-Em9skhD>xXVTL3ekLO48QnR2!VImK2ADD$Io@hI zv%;RlMR`!G)55g*oP)KILNU+0$$z zWjFo0eT!wq?lp`-%zCGqYdO4)qSh7V{M1`EEh{3cqv>9&h+Nx}yM@9}B2yOg*S-?! zdYrG+r&J-z8`>i9W1qjw@h{)M7r)(lz38ZD_?J2Bt6nT@pWYho%Pi!2QQONQ=DMrq z)xZCrvVFXnBX+#7ZppdRs~dC7yeFxscov0;Y~r)>YzgWL+UU{O;)Eqs zA1;m6+xsO*uKJDPr=K=QlLW7q#tR$PKHpq1ul&|O(?d!p!y@$8Es{FF|JD1yliP~F zvYDw&3NW>doB4Rc?vACp7ueo%)mi-2jS4nfeXvh4e*4L1Hc@NEj2eFxI?Fk3NZK$( z#h7i`iozncq?4x-JBlVq8;9^OVJuqr;DNc&0fi+Ahfio+k58L?T1MT^BrxftzyI9R zF8=Wo00 z-G6f9;mbY!sXGgfGo05sXB;ihcJp1_mY?tEI=sKLG4k5o4{3a|ch1z>|B(CcC!ezM z*0p4b3y#-4ba-WqyOyY3EQ~VE_uV>q=Qgz?Cmn>OyKX8a1}qNP)WI$Fl-YAv-;Q}| ziZkt2+_H0%(9wPQxmaXN`$V>x9yywsrv!9)AAeR|S9#mdEu{1Jyb7MD9-nUIT1$FP z3Gq-o;lfvH?$9Z^s1-_~prc{JsT^PCc&^7(?RpK&hA?ae+pdAgaB?*nVjpC@fMi(i+Q<7W&*f`k(;u-H^6YCp zZ$%vnXFet&CMITZ>_a1eO#^?;1LnPo&7kor?L*#b3hP4??$5k;YvZh1!xF6z+08k} z3nv6kI{*A*t^M8y|0TX^2a1$#_s_1q<~i~8uDdKtc5QN+I(fHsp^PvKqvxc8&u7hx zpH2EjziudOEV}G+VB4+7te2|ZPd;DM%KUr(*{R|GqK~=hd0KwkwpA)} zua5-Jp*3GQgzlz1dHJ&V0F5Bh%D4Z=H1C{YhpkPnl!ky>G>ppMEU9 zqOO?fvB%DNW6n~hQl3k`yJaQcK2Q;J;*`qcFwDr*Sjn@n$FoIk66fZ~qrt!DKW)pt zcW|4pbYxuA!mj=z6aF{#vsxdYKH?O-A=V~Q(Oq`in%fQnUsm*`H|y8ciw7?9Oq!pz z)v6XpAR#m#~xaSe=if0XLaw-GxOq`snhpr&HWGV z(hKWLZoIYaZfSDW)q7XAZPe*D;K?+btzXG#9qg{ym)s(tqoc!+{=7i+_{Y;FhlDCT z8ARfWPHy#_^4KC`T4@-kheX@m^Ve?j&z=9ZYHrrnQ|@-3CSKO^wJv}6*QdJM(=6S1+LH}ij~4#qITz5gm{&`{LwUn*lX)-AinV7^qn@-I2 zk8`-QjAv%q7riA1_@`fVoKW`s*2F!A4ys}!u37JYy=|uR@*h*ToR7aK)}N6akp0ek*pAr14qqwZ8Zu>N!Qr~E;2GyUr++ntYEMX$NbE*lsx zz*6&R^86>qr1NcZXKr1uJ^ggex6SjHMy)OS{dW83wfVK(UQ3yI7acmu*HF~v+4oGTUI}~oi{)`XYJwe{&8t<9Oo(3}*!W=P;`SfCxBm&( z|64sjQ+@WVhnvp3*FQ7N+np|cYRmap#=s387w;Z!(>3frTQf_2xoz2+->Giw=N>-j zZ05L~w&zRUro4ILULLIiHh<4tulTa@f1jb$TBW+5llvF=s%tN>cF-$b>E(L=vN8WA zgWopg_CIFF6#iTuVe`%RMC{>TAGasml=HX$8=Ck3c>S|=-uKSy@BMDG?D@BXnj$$J z=ei?ld+gmOPdK0=Qrf0sBy;D!Q~Ltu<|!NYObIy0S@uT5z+7CwtJRugYckv9?v?Mv zpKP|A^>;FdE@#c*OT{nS(zKfHR5d@|Vk)1@>+s;11oK26zgw!OF4~lq*#CdUy`Pn> z?(?zeok^!#Ew=Tl>gMfxC7ZGK=LgaEK5HlEaxeWNU6poGn)8^0-s?%H`4%;IJPQ)t zyv%!J*y<~if40Ay!`Z@cymUiO_sqkWw@9tcd%k9}NH*`rYY}ht+8gr36jPUoG%IcFpfk-xemOrn0UzHNRJ(Y<|C{7&^GVs>0VhYi>imZjWJ0VntBW zCBbm*rMvvXe%AamxpfuXR+DJc-{oVtW-`Y~%gg>B&!;gQe&uj@YvYbg{y^_ZEcd^k zd|D*J)f&F#Y@);@6;5Yo=Qp>uc7NadzBaw~;CmIN?RSc}#bXK>cbC6^cF|q_ZP~g{ zKmVM*C#R_zbn1G(z$1Ulo{JLeT_$L5-gnX8Y)+DzW#4L>S79yEshm1Te|U%q-LMaK zXE(6DrZDSTM!dm>t7;Ra%DvAVnA7|w{7ZYJlvY}*<-v2!(JU8>G}Z)n97x)8;rLzu zKNCc+x=49$QL6Z?db{HCulGUR>mNLL!yx=uyXN;h`?PEIa`Du#jlaoIGzG?6y?#>y7V;i#kwH%~dQ>!B`srJqGc=++b;s4^jzj*R@KDyo+ z+Wq(U{=;9sD93F396lqWoRuNkY(KBqzJv2VFnqWBCC&4zR%T9p!^h6;k9Jn_$^B7p z*-%;XeY-^b_qucQSA2N3`hDWJ6Ecowj}8P)U3Bu|6*ki+!SRM3(F>;d?UrRa)z>X5 zDdzr4MO*Bc_!^n81qu-@pBh?ql_ya^9^K!mzd;TRk-%#?V$#f zNiJGbE~IQ}p4RsN^Edrq&FK}dubEFQwBed5lPFX8@Q9dR)PCONAlrlfYi{3L-802$ z>OZ?pi7i>zQZv&g`W;^v{fCL|INM3l;uNl(S8^8Kjgh`KoYG_9tEyi&D6dVH3M_ z&3EIBc}f?$W*PUqlCJdqrg)(AdhGFYbFFv&`ELPB|uneF2bFr49d!Ic1>h7LD`APdr@ky--T>)7+nh}ah(mPq)0=2iV5Me!C zz0fY-AV}ai=e*Pt+Tt%6USE3kTgkUcc+xY@<_Qzx*>5gvS-Si{*sQ~wyi7{PPp>onNamtXVSyt3@RV2*z8c^zeqT*lKIHGZis<8xi1aO{j; z(7J!NzjUVyob;Mr)}*>|Ny7Qf@y{Q&|8Hpuf3(Oq+^Fv2+M56G{`XpZ*!lb3{{yEk zIZg>%pxDPOBr4pd-QvwZL6mXpV}+iS<7xc%dPc_I1+1oUOnwz0CiczP`nQaG-?{<| zizCbaG0w9VxtPUSQ_~{AbArcsvu=y)bkTI{rrzf%opW1uYAEJNImIt;&E~wRxFOax zg!!f9F?M60^DZjK9#~B}RMs4vu{(R>E4v(3&z5&0`)>zsbnxyCU{W>Zn#(u2SoLaH z^Lv}W2~x9GnK=IX#lQdf|DwP81y84S2WLN)V|~45!?n_IFVFiY82X+Y)@E#)&0{Uu zUmAV=@vgW3wl!#Y?fS)Yed|fl&sU~f@zrOtyUba*dwbcxc2)oSeaTf9O1HhTF>CX& zJN@Gs=PPg1XZ`0F-MStV?IpBygKnpzQJP$;i=CHt&c%+TM+-k2e%fj+m$%~~o86Ct z{NGlDfqEg?ZSO?a1dDPV7Fc?Po9&|kdwY9a&buU-m$=bRrw$V8B!PaXgvwfQs z9=y%3x0e5Xib_5Jt%y}fVe*-?H{b$Y<+t3UqU|6eO6F1}HxJ4UZPHF9}w@bk~Nx1D9T z|KXUo>*cb^-|qJ}`MEzSp8s2hA^zv7@E-^H>lzH7EqTAjx%GAE_InZr$4dG|=gKEl ze^E19%678GWeSVU)42z}J8fCJaf-_BlL0f&7VNp{qh4UIcp`t(3Xz}TWyV( zo#gQl`z~=PRYEgu!t-M@944GTy2a#4()72Y?ah9@VZ40)x}V$szmI=p{eSAQNv?Gw zn;yS>U78|bx#IEU79nBh=&sYo-lo&${o)dj|FnMR>vi{)!X=b=ru}^I`+pa&u>Il2 z!}nDTHrtf`5$to{EqQ9EOn&CG^zTbH@iESu{_tS?zX>1SsX2LF6aD;V)(xgJi7f|R zK5U+?mwI#llSXIbH7bEpFQiX8pZ_Z+-QCrF#Y!gEaLZOtyNM}Adb%$!=ltl%T<~~q zf`jMb;NPnh9xQsR`fWDbUH=pw@9G1(4V*cTRF+Nbo#1-*K*xgkT_K+nSFyeb*)Qz) zXoX2)Nm7gFR%?c?E2`cn&wX%eUaZ^Ga3pBQ4H4&l)!m#-{~ksEKd||^{FCs!UmUvs zk9MouE(v(+*gS0thvo&Z;8)s7x%UsenJ5`DX9A0$F}vEv&3ZG}96xYFVO?^0?4>Pc zE4~@{I<7kZGT^n9mEgu>7av?%y*#r#`cmqpVrPY*<(52g$DB2Ly-eEY+c7A;J+XGL z_l{|aP1P@g{e{#vh-5uFq_JxM|Iqm_3)Q~7;{+#W&g!>0ojz)Zea-K>EWY^QVY~dh zs3&C^?rX!WJionKy*@1?qvL(u_uaAE)vuRcj4Hpo;NH)3G~)ch6JZ{Dm=k^SA7E;_zB31j=AL z-|zbk>R)}oUvJ;)#JIM!JbvApH3n8zr%bQMeBQJoOkaF%>Aj-Ux-q3!Lv22tP`*=m zT()9fyFioE!V9tIHsyxMtk*KG{;_ev>=jbZK~cv~>^Lg8Qqc2A-!DZ!1K$Z}CiTXC z5;HMpd6K;#is`BI)Cpaw%?24OU-TJoz8thC%gOl4i#Z2BJFq->t|TU={471$>osfs zswt6@8A6LXY8);2^Be>EjAUkV6?CypjF5F%z<&%9?B6r%y-}z27}SvNJwDZRJ$;>A^m))n=#IFAUIew^Q{J5$^Bo z<!36M{IP=>xZm7L)-s{$^y?)Q6 z_+LxoU$I>^zh7fq|D(PB#KXhw8*^uCbVcm1tG&+3{2=yym3aNn>GdZs``i19xSlz8 z4m5C7_r1J+`|dMaug9H!yZ!#Tx7+Xcyfd@K>J+dtq~d+` z{nNeX_fF)-|K$2!_nmK1#>}6stlNBhK3DJmsD0Ou^?+>oorBl+eKVbPR_$um)EK?v z>2{xI<}GiE|G~Pi__(aim#ga^Rmz=B6HeyYey{3vWVzzKzwgTTKPaAiJ+Aia)tK6^ zS3xao{o0q_8cSDP%~J6^5Cz_rCey7w*D zlvR%zZcUrAU0TS{bFJywzGDV;s%lzVzl5jn{hhUP^#p?q)~UKetK||`u{AnoA9i{$ zd3t46*`X(o4AUM9i7MqNYdlr`>gX9D%EHa|l>6D87Ugbr2X4M6Sv{h~F*ocRyi9b3 zFRQ4XRL}6a^bkDxDYlJh`}KZNtXmV})-_)il_OmfCn5bFY-1Dv)FG ze$M1CQh^d1EjByU?wnWV&~jiS%dI6_R&0$ZJr_0C^YY$#+h;4UX1>9Ds^RLh$C=3i zw-)r~WxMh8nefayF6k?`Kva9yE!CIy{K-34YuCtbxTdnW9n^;2+7zod{qO$2xA*JL zm*SXyI`!WJ{(lS&*6;UB)?UBo)0T#vF?ye0`qxV(^W6XYu6%cFdeqP6UT#`l6Cc-<)n8{dw8`Z*bODso&q<+jn03 zTD92u?60r!|4Vxe@08uny;FSNmc{YFg9i%zJn`Q)P2$&7^;$Xo%GECgWiLt|UkegD z{NW0Vzk$govrpdsA9oaYObrrcKj{&aaBNlZ{H7!9!cF^mRGJR$P_Ry$u+Gub*Me20 zV9Bl%x7*4;y^OX$Hc|QbkJs=2D1Yuv-7+nr(=|msBe}zd*X+t_&QlV1<{X?BAS8El zPV?Ty{m!op${d3u&Rx`L;jwU*u{87Ck|TWP(5{OzaVe8MoXrX)FX?$-QqR5}u`MCk z?EJBXM#ZZRK0G9({CrBrE77QSRjH26ykAxvpV+K;F{jtO_iLhP;vNg12^DAb&n|2h z@aAYz@Y3{m5-{ft4m@z@lgYxMCo;1Y{0t@=7(5Wt=jNH!IZ>xL&>`ZwkN)q9ZLNZB zZ-rg8{_<_xbb`-gQ`joj864VcBJ9>}Tp49os=Z{7+#62r#$$alMxD)KnE_S?_s;+S z{P}-h)as-0weRO!q#ri8U;ChL&qkSisk;Z5``@}nG_f%*b(&T?`LayhyvJHQn}h6T zTP1#NI<&d%_0E-xZ)x6bs!=??bNbx#R~jFSuxl^zRR7^S|5nh{TTY^DO{Y!qh@Q0K z%g-x&SG~==TF3LYahg@>rAa{o>Z`P!-k(|jYF~$G-sRj~3y(NW+7MbZd(q5Af=6_I zDi$X4OqGw@{B*tlr->?@pFe-*;o;e%_x`#wzwMtdhu*z^-yg3b@s91y`^xj(uUJ|H z_WZv4zV2Y^wR7tte*bv-DCgQ{vk&zv&wpK0D$eG^b6E8G ze4nW=0ydYuz4f*2;Z-ih9bd0S@BH;@b>*9l$9FvLv(AVT+j&RR?BtqzzpSnu>U&(G zeqB1bV9xaHkUNKGDzqp}KfU)!k=w2(r=J)0+MipPV(*+s`Yu=uJ zxm!X`Ov<`wQ_=HKSFe3O@5NgWtn>LBLEi697ZNj^%kQ6l`(np+hvwad2^o(WPnvC- zuu(O8Q(Mr~RVG(#uFpJw((?O`YrE{r<^`)pZfl*G;`u~4(Ei-XH8#JW+}wHn-?i^` z@2$;D+BP}8nj6{_))n1ysiD^~QQSc};|OP=?(I|4m?niJnzY0@tyZ(#cxAz)@(s40 zyJsgD+a|~&IPY!I&!^Ta zEiC`N{{Qd&MxE~CesZcA87_K?ox!{Ab{sfTQ}BH&OJUD7w&NRr#CQh_w%EieWv5a0xv*P%0v1;7oAE+a znQabt?(^&2Vjr9OIz(m~tUe(V+869Gk5P2P6b+^2U7G!iJ~gioJ?kjq`Z`SmG>CRR zwp{jlT=m=R&xe11dHGpiO!~*ZqerFmuk(GI|65AGJ^WEb+`HnqE`^?oM>{*(=jmUL zoB8xcqwNZnMH@Fvo!PDb{J}}K_q*;Tmt3g6ySrnJ=jL}i9`o7#zIp!BgJ%A9(gIJs zQ@K2+U-)Lw@ipZOcX3qQso2%$`OlxO)!!QIV9lC#L}a$~^2kitrza0Zy7@FNeaL4d z6k}E?t)0bee9?&gC)Y$-2u^i=UYHe;<#KcH5&=^@&Bb7w4*E!mm)EUATe-|HgR zJmHC68+ANomhWX+a{lx|p(I;I*#kwJl#b{>k(7`;@HzI66QB9};MwtMzCx_Fvtzx} zjh7e9tnfy0?wwCtM5DNu+l@@{K&qIr>|c>BL2Gh ze#i4Ov)Ph8P8)}48SmL$)>Ku)cY4i+CtEEA?GNqwURto}OJmlY#V=b#l=wRno<9k@ zSAAIb&+-31)qVVKKM85Px}b5JX!BH~_m#hI?|l62_C%?FZ@TLb|GUK*G*c+U*_X{@ za__A$;rTz4nit-EP?B3>r^ct-WZ76^(tPQ-X5^m#%WmJ;kZiot^yJ1p=a*g-uXyv5 z`O1q+o06t1-6-J08hWX-rTos9?mzwc|MqY3bBJO;zRmJZhGA;xkK?xefu?fIm(m@N z&)71T_iNW04$bGeN(&2H59nV_g<=?74hx%lFty)3a&QYtAj6$rAF{W}0f`+O3i@ z8vjtg8K87H~R@^|Ids~TY7eu^4ys7C5C&? z-MD3bhIO%A_SL3`dyJ>W)#tpeWO6)J_S1CE6OpZcM`X-0Q}e8iCYXp_9*7fuZyygFQ)yKCA)O=Yi|CCw& z2gCm#-{T+uJ3ddLBl%Cmp~o^>-{HcPg9*OxE^BO~UEeR@I zw53aotz0X$Yi+wQix`@Lnwyk>y_k()m4&#m6fnd#`^Xx{Vl!PV;*v)Fg6^A&Jm$vhLV&_hI( zhi_WP;wQi7GuJk3H8`+FVS`R%jJ_~Wp~OTT7x5>XQ~Et8mM;HO!*_dQ=JjaX?xL!^ z&^6-Xwt=DVO|Scu8K3K3cdcfFifh{SrD2|z7V34+sF_-ld+f2PmfbZOjj2JPYa$-a z%3havdt2`Mljq-EUhY3%Jo&wS@r>i=@1B2Ze0xV_b+54Y^N#(-$Ikz`p{^meN!DCb zbzAQKcX{*n*WJJWX?p!P`HTp`l^06hc1$Xa@bUlDs$Vn9K}|$?`u4xi-@lFe`j?}r zqyCO?(Ss1yo6>5zreT(Qo-1BbiHo1oV>rjEqN($2a7de0NZaZ)I`f{sxoEs&U3Y5U zgAY3s=h@$UaP4&Bpc9c~ zXn#rH>7QiA+VlJ?_614wmUU-r_lWZe?AiY4+Ige4uvUeITcIC_8Ii}%%$tLrc?Q-NMisOAL<=8W5Mpw)eo>^s7x>t)F-&I; zw?Ou4^PVh3il4Oo6g-+Tqsz zaP7S=^VNz+ym$3hTh8CuEBvE!zC}-@g{AlMyQ*G6OQy{DI;Hr6RExoLXSMhX+>x6f zhvo?J8?4|D$UbheapGa|$q)9VxwfZ@NQd_q2RzO2nm;>#-%QXb%%Z5Z``%q&04m6K zZq!XItazz%{=EG2_42>1+zyytwwCzB#8$-IGi9|zj9Jbuk)^ph<#W7J8LpSsFJWId z<RIS@U{YcKVEE!W&iREm2Wh!T0B~jICIh6W`p=m9G{kdYqD& zTlDV8XA^1NTc@9Ulx`DNYdP@c$e~GR>i2C7In3d>{i^HIE)VxPHaq5fudCGl{MBfF zwL`&K*GTu2FgZoWH-leY~(;?vd_t`Lr!I=kE2ICtfap_A{|! zWx=U%k>m@06AMbzoga!!FYhaMkzJnH9uqS6QMla?!70~#`1{wczGAId^Ydfune(nC zvo>$Z@-=7^y8YpDz54;pXNP`UE}mY%78ZDvMNsO~&zyeCvY;L_lh>NgiG26By*wdt z+M_3T#ab4NZAYuu*L0;tByPBImQVC>>Gb%MHy__WB$k@?DOKmV!KF|Y<>{MtPFsG@ z?&#%Jje;}3X6}3t@OgK}d4pXS)x1PRk1vhxyEtuGVU)mC#*k&xL9O~j1vMLw&UBmY z?WSH?^-*UDTXv{Y&%zCiTh>PAZRxl*;e|lG#_u)dcO_I!_LZH`Y(HAV9qs+;u2S^h zw^z=n9J#+tTWE>cnyOen{W(d$Z@5h|Il4{fQpm$fzNqLWnTJ+RHDv2%e0*5*ZP~Yf zERH>oZ7r=(|5Q2PZDprp0YGi|GhIu&E``K?kCx+4Klke-!3Y0j+n|R z#PTJsIQR3bsT=lO-Mixmw_%j=&We_0f_uI)+n;;7d;PCb9Mm{ga}_*be^DY*agc;>cDXzudnQWq!<4mrL4K z$D?Y(R`VwQH<_EBukc^R`#_jow@>bd^Y)Fm zZf~6wA#{zM@99rhop&v-Id^!yyvN*Dw)faS_V*7TtoUh37YuX0zq<<>^ZwKB|BrDe^Zg|T)e|yujHC7(vi_Oxbfo)D@BZ+Qg%2D4 zYd2lgSnqOgchlSA++%t(pDDku6JP7+u{27dGdSkDVkl?1?N?sDH!CN(ee6Ex-q_ln zYxAt{y}N|-Nuw7MCE=HNOfNU{`T0%UoZDh(GKYa>O3?Hpm#&1KxhJgt;9{&ujkEc- zm&Ypa)x8vC<6_+TiY;&7S2ww;Czb1F&vI;$)i}4HH}U@|q4qTYWRr*}qj{e_&D%?+ z^X5r5g>pDc++nOd?WT3`Qc}}|gh;-94GMub+ytar4cL+n#%!8#vN&bhyFQbW^PVA# zHuti!v}QUV<}c`RRT4eKVHM_+q1w}?x{G7W9|6*_?OnO(mbX5E*3`R%v2 z>*Dpiq;tH}t|zVCn3BIFW{$t!{(=uOiWap$MB?r(zs>i;UD)rVT!o(Ig2cJsK& zz2?o`1FyL+UvN~OnZp0{hxHcgT&ps^&^vR^Rxo(Y{Q5jrRTM9s~V4UR`mL3!u$VmZp-_dXZ;J30F#;(rgnKvIeeY(=aHvR zRvP~~dwrkV$#0&k#oYU4pWpv?#a;7<-MZ|JTkbf#WLx{}zVg$4V>`povt&0IwyDpn zobvy(zFpr`tz$l&BEDNEAHQt2ZOW1inWvLnyhWsoYaYwLfA;tN@0IVX=9>QdalWqI z{hZCAgFlxWsvR^^-4*-yEMgSEN0&+H#`oc0AYZZH2MZ^S1x)5>sL;IF|qDQ@4BOHfDh) z4WAD->@CmkF|$|vdSG$FRc5)$ygH zZqj$%-8X|Q{pP6H{9BuDpz66XVwpnjF+IJ@T(5P`utuaSW^!z~#IevoLQFhKPj20Y z2U~CK-R$&0r6k2iv8-@ohLzx2XR}rTF6YhLSv32djf(8y1kLIkMXnd~ zriQ4irk-a`&Ztssy|Vaai-)pcn2+~A)y(JXKb#dfoi_Dp(e#ITjnm|VtoO7ZpMUfC z@q5+k;d#4TH2gXzPthnnX6uw zD0>~fqg`gVXXeIg+3t|cB?32szTH{5>5}v8HM=MB&P~^R;<=aAVfD2mUzTj0rkZ&@ zdP=+Y>)D>$UQf_}KJn6`eLJ`$RJtVPl*H{^7YhfU=U?Qef3#+PucW5x&X~Tk-G80` z_RV{q*rV7ZyzTt^;}X5Aw01c%91snUIk^7ctM%Vv*Z%tQ^7F2vWmAvz#~yp6RHhWU z$T^zDruI!G*RjK#s&A8yB>TU8+;(?&WK>>C-0yk47dcmV`vD`W zhhLT22F9bziO_U`#It3r*q$a?(La#)8As-)Me2wQq6Jp=Qq#2 zqT=as`Ag`;bj}ASI>ma!4n5u7X5cVqiA_ai{HFURt6LV`S$I){QR+g^ zs{RXU#2i$&UO)0RIPy19wF3*Ow|Dm$p4)ct46 zG3lb0ErM%tzJ)3m!p2(yqsn&&Q0za^@!QgxE_F zj*C3mS>O6~OcAqoOS@sWx6{J2+L%S?df=Ts*__7BD-a?5jg z2gTbSU6{WA=+x_b*nix68=K7I?OhzQ`mjac=Si$?yYD6?e#~GIx5Yw@Jugm$-U&&_`fX{s;n2b5|EKwic9+N2 zDo@@yL-?FfzwM{*CVM7ax%OmAvk%M4xs#&UyuHQdoL2~L-?K}p*z=`q|EsO{bSJ)D z_ELQ3zU5Yz1(nZj|M~P*akX`!#Bb|4!CBrY05HN_>zw7F_=2m5O8N-sa2q@|AU7 z@U)#VI5Jm$UvswEJEy2gPu?0{6t_G6@abg_${RC%s=fhr^H*-?1 zx4q81HZL*Y$BB8-p-GxqB|8_{ocVA-+QO(+3R+6O%0oy zZ}VH?{oYSvY+Os{wVe8J|NUPh`?|kxd2WYp>8v(Ce3R|OtUbp|bJL_(%f!b#xYaAZ zFyz;y=F7GFW^X-Gq!__3IK^o8^=NM4DMB(TQk&mRn)-M7J-5rV)~qU*4d2Uf_*W3` z(gd$}3x(?2!o5U-@4d;zFqACahDrglP+D^FoVS>jN8Xmbe3PoHXgqu!6llWLdl$-SwS_|m)^?_ z{>H76*>xfP#`hcZCu!#`3b}dcNlDsUb(d|2D?k0XY!WW#uIak>LGl|*QVcAL13idu-at?wt=OZT}Q+_dPnIbKyI-2#=W5iv>(p zWj$+E53lkFKO$2e{vlZUG|P@@DeJDda5}4=DlU0xGWT8HthapPzBvts?Mv>SbUHeR zBa>y?M2pO4lO7$LRQX+BLd5=9L)HCVdzDhG)3X=%h>Lm6^vyL}vLo$n#lxzU_y;v9 z6LjX`z;`?8mFglVz;;G`+szk=fXy(sS}8Z^)PQ9W~|Mv-MvZSUy(iL zn;Qzd_MUd%xythFrn_msANZ}gBocRp`>Jq~@1*&)H?5CtsB8#s|8LvLGgI<@i?K{% z>8mxr7=^mStX**lUgrf<`Tn6&9zWzI)S zGx>RmPW&Hc=HF{&EZT8IX=%slN@f7`!mZzUNSG9WOKRzKLu;k1N_7m>anI*|tJLPq@{;KoPER<>2__h4(w>39k zx&W9>#l&eN0j5--{0ybzj6P2a?jo+ z+aPaS^itX8Et_XoGiD@4ES)WRHzLyT;SwR;>faG;yUNZScAuYi_yvn}+wmWF_3NY* zRi;hTSQ-C7G(TA}^qKto<+DP6$F+U=y}30bw-STV;(eMsL}2F~Na*L+Z6x z;$iC@BKH4RsP7W4G?8*X|i6n0x~{%-rpX`$VbeIE18&9XmjjsMXa z|6tQ;z2x)rZ12?n|GQ<$lbM&q)DGX`E@F-IJ>-$dWAo*Qka>))kHnH6meSr{Hs_Z< zh>qD+D4Lsp^o5WA`YBEvjYe$8x2-7UDYsvFb8lte!ldrAi+y!YJ87RinBMo{;6~}4 zPtRrV{O;I&=~#9}TAqxilb_6gE5{2DR;~UgdTWWq;_K!A&&&PZzrxfc@c4$p>b{%b zn2KA)qIWsBY*Z77b&1??r_Z8HDJ9s|AmWM-U$sfLrgvh;{H9b-sg?*1r^!ld=6#;< z*zvQ8)Qo#`7Eg*ebAI`fdCO9h{%mu9Jm<)z2RkQSlfYwaX_Zr!uuHxXigRXZF&kVxC$TD$kx<*)6%^nP+gTp<402 zBAudj*JnFUcv54&`D5wbHM3X6?cT7<+$i#3Ld51(m-GuZ>`Hjt!F~FVc--vjg-U zzxCDS<>#e^Zkvhiys|J#bctWr7T(XB994qD?&@uv`#{Ta^M!}q?)y%Dd&;Zg=;hsV zr}#nQB<8M6!z20sU+q`(6+N3a{pV$VgDANJn{+3s9No6|jN|DP$3%uc(ajdyr@QyP zd%nN+as5P%))#j#EatssRB@x`$E)ohk1pTWc|jmL(=5L6fU()OjR6{aZYXXP$>3OH zG1>8^)JoMEYj#|?B+zOY|L2?e4Fl6g2PKh=OuaR%AB5NqJahvtO^DEZu&^}$=c`bY zDDE})m?o7vANkd!cJ0e?rb{Np36atNzOb&26DunH*RR;J(~Pt+hY5+kfWPDc7p`e1mV1p!}5P=LasG@|3H6(|_^Sg*Wq@B{ag*BDivB%Z)D@RH96^;YW)qI`Jmx;H{LQ`*#{S2 zZck`&T|Jdm+0W1KllA`3*0n1`=iAlZ`*369Qjc8T)Uydk6R*BY$n-qkC)vgAGIh$s zruI}7?Xvc(tx`dprw*wXB=NLO-EnmP@5ld-xZnGlw{Fi1p<`Oi8f!fdP4U|Kf$8)C zlh7N}Tt(E6SUvo|@B8|OoQB&B9L`D(QjJ2h^xyv!>zmXP*5&dbA&~dek7;KYWf)JI za$-4OqYp=`(nitF0E?BqVzaU)rC)u!sQ2J?F-MugXCEwADYZLX*qZEQe(=k$ud(`v z{B&wm1(|{}H-w(yd>$_0S3i|0{F{}$ly{WI+Uwl?YZMGMl&^`Kd3TBH2xPC)IUD8v zq%~>w*6&)q!hP@Sn}mPMCuf~CT^;t&_`6h&vcjv>j>r3P>WgN5FSk9`+>Y4Q8!|ybW-=%rC_qDh8zf}v>zqQtM zjraqGmD6IjCCZ)9aa*jxXi~gZvdN_XeI$os0Z*%&{y16>nMYcL? zFIl;8n#vV^bIX!Vhpq2f`AB5hgexrRea&%dsZDE=oT5UHP|S6=*Y|9k=F5AmI=k!2 z)fwEm<<bWcQH{A1{yCnjJ0j_ldsu{!$Vxmg!at^Qqp!D-XZvN_M$ z$}hcPX>mO8`~LqryFU;4zb_4|{q?2tazcBU)A3%-Wi#7u2I-YrA4tfsRGhboGqou@ z$839h-NKS6lN>EJZR*Z@ z5z|~}W%cRJOFZBCeA7arqdWonYT*$f-W*xx^J#CPCo|0urtX>Je6xlPyjuDJ>NE9pQFq zYjRBPL#gfv?V`@+W);!4D|YN3pGq9qsypSROwF|?5zlL%Mqba3*3a6!zSK!?O3lo# zPd9v@Gw+>6bh^rOKKsLePAdE4-0?{*Vg4C3^SteY;*TLG+5&%FT4T;A-e&ji*4A!Y zf4h^fK7CdRoKgDB=Kob*y_UGTUPrHr4;NY4R>|$&mi}3BdARz_wfx4rque-(5BkQm ziF7>-+VOAe+lUz{Ey-Ms}CIsnD{QK%Y^BngWru7l`Yw` zZUr1@_%<_0bY5J3%DiltSM6#+j@G!{7X{>+od_( zvrgwo&r0j=Y!qQtiMlu=JNTTq#a0vl2`W6j9G7y`Sr+s7nViu5rL?c;NuZGVK~2s* z59jd+cW=uoS|hos=sweI_p(nDSEpH6mbX2;B(b*a$jWyHoBgl9a7le5`jzRX@1!ib ziW1S|6Lao{q#a(e@b0N~nt@XUjy5#b#06>nx^b;rUE)`b{n8 z>wBJ9-WU9o<>wEE%sb0E`}KMjaxGr}cH?qRe*QO3>Vo;TuXSUJ&zjbTuLe!;yxdUx z_QE!27J*YNsyxb`6CG4IbU9LdRDyU6=4Ttsc+%;?xpvCoR@YOfmOm@I=(O1BvAN}e$n90)gvhR4& z=SViqN!z<^rq5gQ_Q=fF)2AjazqV`5DT@HZ%A{yVj!S|q)09LwnHn#&Yn+rWJi~E} ztL<>}|$d zQ>~9bx9OWFT$_1qcFWfNcdv%WpA8L>GS8k;dai3<#B$GZipS8+Ty+JmCQW(<gY>wJ|vBO_0wOpQ92I$KNUgx=}p z#+GWg41&)YKlMwTEh;p()HCfd>z${WZf7l! z_7>^pGZLLMQ9ES0Oq23WHfQ5khd!h=rOT;iI&Vmt!S$J^Cqkz}x1?N7w)~@7-qHxE zw2TFZ9Jc!Gp1f&;Nb?p><<`eHB42I2w1maNXnyNa*GYL3ik?(($1e?WXXiL9p{c6g zcXh@Ljc-n`lbSZyg?)*PmO*l~kHE%rD;Y*X`&V`7qv`Mk~1`8FS1Cn+op()o1x`kjNi)8DE+fA+)t|NZ(WKIIele7kW^%2`2z zueL0GU>7~`CzS+vpH^qin;`ov`Gk9U-Q-f^|K zwD4}lyc4GkC8p2hVqJO3WbT9$z8|CbKDVmL@A;SZZ~OL?vO`hQVy{i@O3%j^WR=PF zsu>=)c>2feQpOb386I^r=iF?}W!rSrx2$kZ%(bJQliq6?RmD%x>V0vxb&ai(t61KN zUAj-ab3wF|%1^7ykA121jd!Q)o=}s+jkEmhADBn`Qmxzb?A^l-Z&$h#hUtuqKc>6&P6d8ZuTTqU@tavv@T$FR+pk2A%TqMEJT6Zu z-}^eY=1sEvYjJ6C4V=6<@y0J*oxkE5fljlVBiw?#YR_4f=6D-PiAR2jzHv%vn=seP z$q>zcUYgy#CT#~uMUxxJMQgM_y^N6qEydm4~!T6sRzd~;<+)7{zn2McAV zWt;wc*SR}_@70Yxz4 zIUhnLRBrOU4u1Y_nO1vY5p&65%Oa=b?dJogiY8e}BuaF0n{-?V3g)eSSM?#<=Hr{q zKK#7~k3v4OfBJLlth}RYSAgrBRp&2fYz+)5zQ4~sa??L+uN^$M!#}@UT~_eb)%lJ6 zSFyBk_RO_rFShO8lI=U?WR>Km<+AaUQ#IEb*H>*Sa$dLk@A=o$;=6L%R3^`!VREoc zG%$VIhR2`M<24IkPHV|Ec3pS(;n&;W@(Zs0D+ArYvGe7!**Esr+n3)h72o&%u?1h> z<2{cq>D=BHZy=N1^RRR8Y7R#0?Z>Bh>jgjN-t&Bun)-BggF|m+bIuF;Nf+(w4w@CD zcW^?{r#o7~$D~g?a5A@?s&5+#nLh7%9CD~DGC9ao%fS8w1i$ZloWKmJ)CS3 zW$3NVxGtHwZR)IJ-)n35ZOo6KX-P?`P-ea=GdJ(V#K*dAY}{+su)Wz)A<*pR)#+vG zC}C`UeL-9}OJUfO8OmMd`xn)}G*{2wqzvichl@dZRu-a2RvfV#H{E^yOy|ut z&bfHT?ef^$vwKgJ{pdeG|Ec%)yT?0kMY4s=b6q``m+KgBjLPDB3jJ?qD#yz#hzqh< zt-hh>*tgRiD~`79=+aef^xUx3)%}=@(NS;RZ6>Q#{&8f6C~sxHC^|}c`OHWK%7kt5P>yo3r(d!+&&lc2mWN&-> z==r@*c`?Tyb}BDEbDiCD>LMc}ht!k?)#J;yg}5)}%G|p_V8W;BuU2{{J!kgW{h#ys zoNjj1x@%d@rvfB>d}MSszOOuJ?0(v&de5QU@UFVP6SG^^MsMGgdRpw>w{6=$KCl1x z{LS6n(}PyFyx+g+v!edfGn>tJefaZGtxx%*t*7Gp8v(X`xsJ;p2cM{pn5N<@YI*+g zOJnyNR#v^)H*@AnCI3?DzqaDoMKK9a9idsrbqzE*9G#bUT%6G9IREi!*{HK3*EjBX zx9hD;*ZkCn6(<%vo!l|yLit2No+Yk9MK*gbsRi0bP7{!cj!Vl*nh_KyFq?1ZBgc~?`Dr2g9A3p=%x%x%Pt~;B*Cwf(w%$aZ{{DxQ1>GH^{v2M*u zyw*==dAmi-vF~(*v)CEs0AqD)Ojq z{=B-bLFrJ2^X;xk(O8?u0;fe*vUD!}5M;f3<9Fp#o#%HJaPp|ADNf&E5%o#h{@dp_ zGwwOv`#xdXgM7JLp2|8(tp^L=#8p+FdeK%mVbas$?)zV##qYQy@uF1w+BKh#i=NMw z4`aV59dLf$Oc%o_=_NMnMZ+??osaL9u{J;P)tVPg@ zpRP%KDQH)9wz}f|)qL0Nv!A@09b*^xwe+VfzUAdEqk19olnL9j=}vEWImM(dHYPP8KJ$uPgvWhlV+OPb`@UTMH1qVV6*Vu7mod8)5(1zCK-0TE-hz764j!juVXTmv~MJx6iceT2xv*>2}`kUhQ=|7TL$#Tkb!4B+yBD%L1LE5cbt~wmjzIvw0=3)O^vFe$_0ItBHQU<}Y7VyQFcM zuz|qy4HIrmJDgKHb7rIAmP;B-FS-?_1N4TaPlsniJ#wnn4+gGYg{NUe&g9rC4 zToB_lbCOr4Ws#oF3i$5F;nUm5!X(em$PRm?lqTpG%k@s}eBfS*!>Dfn*wVn@l zOYY=miAvIaYCc(NNnul1hkH?F|MqtA z&p(QPYl?i1*_|qGseXJ;mZ6lm#L3tr`DbJwg{(Y#JexHp*+3{@fyolxMlYVNQ}5}O z>7QSC`O=k;jzEQ!ur1qbJ?CUhSW_>rkn33`cx}y^ZP)C>4mnh7I;v__XL5H*vz$#% zh-5o$zU7r-(5{x!4v&xO2Q@iESd>aL?Zh{Jy~P!tb4JB@+7ydzXAd}Z=5230cRnFf ztaVPxWuHbrcVoLK2m9TfOP4lST=MA=?|j_ibnkefj@QET%RUDFd-${V&cDCuLz zWf$~Jn4tDo<;(Qu#}O)pPRk_?*33%?vF}tB;rmX!IXS znE3xo@qWj1=klWLOG=jo*S)zBXZQ8$`7e2$s@-MQlZ7P@Muadi&((NfeE*lV-t7`W z`|8KL3u4=U@B3@OC)Vf@S$M1Bm|7h7PvM(#|2JJP?lc%LJCbzNW%B3|{vO1}M|G(K=xnpU1 z^}iqA?u9xCga}P4`}@!1TWIzA zt^2lK+kWl4-TTjXzMm}!N;7?PQCM=~#UpX&=Hv;b$xY;&ks+`2O<3xlrqINX-0S~2 z>fJ4Fh_iO{YUHc+N#juBKd&v*IY&5VTd|lTi@ChrLHYVuQVg4P(qA2XJex249On|2 zotgzU^EEd-ycYCfs`wJ6tL1l(@B8sl`%=x^(vsP_SU=`yr zQDuAgzO@@Sh)hm(T^`}p>3s2>#4&f}Nk=v%XV1KAy-H=JB2SIgT)Dk*KHIsKl}jJR zohp~v^CjEJeof))uxGXV1l8rMyB>bCFYvH)e8=KB?ea<0n=g*)Je$>FDYfUiLNrm~8(o`EMX-Z0Jj5x^dL?&0H^4uD{ww=!(w*UA&`Fl{*dl?bW2NSs6R~1ERF$Ug{n-?`NF|Dq#y-)V(s$BLR zuRpS%3|YAI#S4*{+)JkX@C)=;4w@M3>+DvQs`NTBrY)qYghMPX`t?r9z5`iBnG^gr zJ=i|cFThOkl2~8NTLra=Y!ADxeCgsmaKP(^F3WwtoPTy+N@_nWr&xJxzoTF}UnN|9 zLePhk>ibS~K8@tdxqC38vSs(aFA8VN+AYpjynel}xiO3N`GKh59XBl^Z+zBboVnP{ z%Hz(vi6xI0Wiwf1cgwIU7Mv5yi;$l9!s&6&KFJARMH{*E_P&UC-;k5T)1NzkfmMXI z%Yk>2CaQ}hyicxu@aSYRi_!CW?5kH?5t@2TQu6+NdFG17&4#l|f4|*c{J7V==*bDe zcY8kjoqAd{G3lSop6yA0?PtHPU+B@!zo6>$9t*kDjm5K6uRg5Ua3rR#?|<@@=Z}s& zf1j;*cZ;uc$%*Q|t;twCmSy7)Cz36VvnF(r-@8vN+k)4RT5>9-wFY&%GnjgsaWySJO0$v@VJv#!{hJ%?|XZBx&M6b3rWd}Ix;KI{QO`E0Dp%Ohz55#dWS7Jpc~EXirjCY`lwirhcT z*(@$R^~myQMv!8l<-Exe4_C~bV6**)Td*nP$}N9>F1I_VX?%X?QP#FgMyI@{Xq1`k zwo=|C=eX*`+SGk_oGcute?HDKp=(aaQ;t%*_hRR&4}WixGk!O@XT{qcUu3uJ37sRb z!spYEJDhU%>!15D_;_e|T+noYMl^E!VbK+p@h9?J12|&gdP%bz@hx&~use zzIn^8zg)B>t?0g=Pu>fYTT`@D4;8h9WYvCDn`v9vw&SX+g2B0kE`d)@em*lCFdTn;fx*Mg_Y#(d$geTqE)f~2+bMH07XK8W^jS3o0u4VsVv%Y>} zP2;DlizBz+tI~d7b$z!*@iU&sj~~BgeP29(S?;1lpUjrVlo=PV2IqLcmia!t^1$>v z&!d+_9@2Er-M@Id%8NN$Z-`9j^YWa?+Lj{eR_5xHH#b3Xe$oQfk2Xioc)H&!e$8FJ zah@?#tQ#4{;uySv#Q`PWnD zPd=_&QZHFtT>R$#{`uv59?Slf=?5>+wR+JUT~>JcskOvvo}fOZH0je<4h3!0UY}T( z*;@bqpS{8vn>`^pKaOq^D)}&X(UhMir7~Y znvwF4b0*3siSFExvaX=()uc&N+BMWA`{&y^zF8jeG=k51_RDS3&K}a2a@-C7ef8PV zn;WQL(3K^XICbe-VYkg%&znqzK3dHEGClHQuFc|;Qx(Ox-H-|GTcG9{E>p?#pn$FJ zNqF7t|35zGKNP(lP1SQwGRrmg-cu}c^-y$(=n`<)8RfR-ebKVajS7)7 zqt)`t&HH0T|Lv`q=f6v^ch5a($$2uV6-g`>>woXq@Xvtn*y`N8+K-dPS>)mr^5XA@ zPEG1vQfVK&mc1a0`#1mHpcjF^#LtN9NLwm_l1zq)6ljd=G5D0BM2Sbg{}op|oJ;(x zb@Ip3A5I0H*=^dB#Pl*hEwMj;vOrREfeF{a2IX7_1D@zx)f%fCcG@1#oZa%cf3E7g z15GaiZ!vv2vTH)u*KY}i+ono)EblH{-MFcpk9D(pP!Y4^$;DfglWkUB65;%OnQgLE zLEi?o6}j!#_9(>ZxviYT$iop@voDmvEdKws!UUoAsX{Zkr!=_FtLmC2{<&QJ{S)5b zap%rX-@}y1;-#&%&wW-}N@QQytfNmQ*0L-=r?ThKF(D@heZP%6moBQYEB{g$SN7nM zlKP9=0XF*tBJ;`$;yQC4eR}@nV~^pMDBVpuk4x8A%Wl707F`cs98n=IaRf2_T&|FB9=Uv=xXhm&iBbBA;`N_$?>W~bgQWAcPFdP zbWvUVWhu2w1fEDJY0f;6wI!ves*xF27}^BJ@(F^URBtN}3hP8+EU5Rh<{=a!tEwa-oiE?wzU!_t)Hy*w1TH+JA6M zQ@hR~CS4UP_a{w$rixPHTb6a%uk+;U{}^jA zx$x!D`)B`c)HA?;}*BRdtR1#E|d5~+%G!PuXKgq`m2r^z42T# zZ`k#POw#c?xp|I>U%)&yt?6cKtCkA2SUq-~+-+lP?PSeY@$}*H8}>W9w#NT=dXecn zD@{YQ;M|1oe#W+?=8h4`HJ>)6zufZrbIiuTjy*rm=0AJXt^cf%UGBlY-|v(?g>23% z^X%t6mvJs})#Mqg9KMBFPU+dawsh9ygGSxE&Mx2(Ozo)p-=?vnau3S7B2&K39N~~A*<8Nk@L<#HzIfWm%dE3RjMVfn?$yL^qw@;YqrAo9Y1%S z{&`8c|3cL1n?c;!e5RJ< z4Z+9CC-uwyv{@eZ++stzwfWn}6+~sE-WSpBed-HK2oBQhV{C=OE=5LTO+*iw_$faLB zIeN=9SI1P@dG8+Xvzo+-0pwk6M6`Ex>eeBGSbjIEK3SXgndP3 ztk?9Y*)Q>S!X?F}X{kR|-rjh=_MOo^%2TYW*e1ftTc!5aGyj`eb+V4_ zQ_nH!v2J@B!p61q=c_5sUacZx**Y&i-#vGa>&1#0^MX`wM6WEqd4Wat^05v@znP+& zt~@9>bAEn8#)0FfRjzJwf2O1ToF_<=hwY)vV`asKVG{nzf-`uuY~>9zX2yG3R<2^U z^yzW$nXYuqWv=B;w<+v4rQb}J`^|lP<4WYcf4j^lKQa88#VNycrTgOoZrA7Y!v36! z|7+)+oo%Bdd)4NFFn?|1{lA^@ReARpi)&n4Zp95=({}apKp6E__I3q z#}^UZCkxn_zgn%%&W)@4p%Z*OyJU9m5`h^ehtq!k5@|pD#PV>o8$)~K_A67P=5F7$ ziy<&XB!cDeQ?~p)-#D0#A694oIr)5SbJ&OSe!hwMOD=IY7jvy;J!bLE|4d;*(ZrJr z^*q%gb6W2F{E=4`$$6yeUITN))AIjo99M=sYu~4wa(~^%fA8*b&*|+uk^lEver{h{ z?Vrc;={Y$(nol=RTBEo0&Kdh3uaX(Nl3aeJD7Q-3F9I;k1$hrHTP^CTyFY&pE~N>}E5+xhEaxoguV>E#_; zIK{1MLiz@a=^IkZJ5~2~nN0edXMOxiWR%gflQ$>-`BMF#x&9CL|MT`yA2e6ah>Se) z-KIr&ONf(p+!NmSmDc|MzRUlfw$HqFUuBDci4^Z9oyS|(*XBYCseh~)Dr;P0CoJey zIb~}6^ib3GwMn-e4`qZUx|V46T2^tCgg*{ft|dunvuVpjs~6WS z?{=;759$+1d}q90>T<78n-}9&9hE@K!+ z>r9K@lDf(8Q*T*UXPKz1hSyyNe+@UEnWDFkb}o7l@ww{tCsD_1TE~o!I80;?@I8EJ zt9EnHyU9A7f4UZ1-canad9qOEeC8J)kK<2ubW>ZHAG9{Y7LY6?JpL=7U}{PQ<{Xig=Oa6bTWM-kUr}S8_PWB{C~BE zWl6aU{VPBA=_g0U`q|ogh0Jt#6?p8J+WfDRH=o~pymfJ8JHPz1iSBX_-~W5}e#Q0I zAzGph`H_mBzIO3Hmx+4KJ?Xmawbc`RV%)awKH)sz+)2XYvV=3I<^hjZPIk$)u`ZXYdmbMY^5Sm0 z7$LKDmHRRk-Ro|B(q2jn!Z;%&x>qh^G~QxxZegR2pum%m?VM4U6N*pYJgOHM>2x)) z&xY-@V#uWh^Fm&PRNGX%;A)d=_*_-(QA<;5NAUqVPX@v2%?kOnp(s$t$TWxTS7WmpEs=?KxI5(R*WcI;Y~o$3fGc8A+X%j4p5ExL;7V zt^2Ux+iwD)Cr(6uD|V|EWoeB|x%uAciuT4Uo*8omQ?41+O-wS(n(X16V7l?tg|I+x zre)cyQ)~|gyqVZ4*1U8|+ZmVa1v0mHGe>ZyUt&8e%rxD)O~1W@Rq8b7*SC`#^%rc+ ziJ0TR@pGRy-_@D19fG&g7fzh`eV0Y#lY)|P$BgzXOw*YyK8Y#F9F*81_P~DMf90AV z+rJC4m@W~xQ}wm*o$a={cX~D&+4hID7MZPb@p&`rPnXy}=2wZ+{e&)g>+o^Z^csq( zvYy>>#!LOlgKeq>1!*gN)H^r$Em(5YDo{k0sjOcwh%ac_v^Gy8-#pQ%$VYoB`u}i$ z7P}^R=;Nm5<15`bCp+h^X*RKI_e{?$KY01R>sGU0cjhduohQ2Qmg(!>{2Jx=HP5YQ z&YQO^ZhgMmYI|vsbN)ifXRiM_$LSd-r@r22gYvut_dPAw;~xHd!J{2FJw$4a7FX?L z=R1>9q68|tHa*|CREV+ZnaA|LSC5_wR&SPiTA+Qb^DOKBRXNH1>x_2&;aI*$)Ft-9 z6~pK^W_dd@#JRoQH(t7M(rC)0o~fs1tV;FB{J_dxIK4Ps*yq)RiOC-nO!~N|MH@;T zOgNdouej|%=BbJ$yV~UszpwvxI7e1G`T7Z!?zN$PKK_MQ`I(1ko;b!vBl4Fx{jmsPiGn|%$O)2WXs`Btg%dLsf*Q$%dXX~vPxNYHF4?0#Vrc{vQHCFrtCcQD2qRO zYe@E_iogw9<~-DP)#9<(zyJQ5wA5`4a%Ph%e?=xwkZaoib`A#%vz&onV*X>J=$)yjE`r~JAloBF)K zk+(_fY|zx#S>{H&e+V3Zbo}M3DYobD*iBuh6a4eL9Wz zHmF86u2KGA>n@U!G}p-d;*n@>gF{MF6%-GjUai4;b(NCLiiTE^=1v{e*Mg5Oe+?=t zYqJzzGs(OAy-Dc#<5yXA^%YOmT$;2n#q{O`#mQ}(mnXaEy{NKeuI5?0xz9xNiO|^o0>oZ__7 zX}{vq1D_Rqd4s%I`nFV?*MADHced2}Xq;c=Yq(8y!Nsqd?3Vp=XDVEf-0haOVv5a_ zCXZ)(ew~_Zp`KBaupr21`|_EOzC2R!KhIbEd@}n-kqp+mTU_R7)vUkK8k@cC$J6`2 zh5hE(w(I|Sek|iZtB-nK_4}Il))gN*^*?;h|H-;;$CtMJ?~1m{(%ft1{~VNmqN-oX z$#3^Vq5k*w`rSX@{}=ilmwfH8mA=CH;+p&Jny&MnSIl#twX8MwYt?iXmWAeS`hAj| z+a52~^xl%u)?H&)({X^+#Y*K2%Q54S&kZK=%9Go&j5@T#e;gNjkrT1psz9*pYvC>> zRlTb>1p6MkIOu;px%%;$b+U=OHac{qWSmH!VdPxdS-i^8^83lQ-AA58?6&(S!Eu3a zqGyP|P>9Jw)*gk!359b$JpZwN{y*-#-G9>J_WVxrlea$|Qq33pvGU}-!#eX~AMx-1 z68`4SYe9>%UDto7@BjAy){o~;B%fCL&3it(^*HG8_J4nW&tIzi1~kxGe>X$>fb&Cd zU-u;yehC|SR9^FiS-4%+vaR}I9kfeb)H8{5sgmZ?lIuomT4S92*Uu$}e!DAQ7-1re61T;+3|)SAArdV5Q*-73R=X17G6!%8QP>>`Q%9+NyyUrJ`0 zZMmx2k?%&h)Hol1dikBep=oAP*>_P5VBr#@bi*|%NEaOdJpw?!Antn+Z&wkhJl zlLM>weRkXRNvTBhf$8qDq8s#kMZtJhurN;`LD+ob?DpG zP0{9m_q6RaU-8Rxsy$cFtefU>P3+>++@7nqd#=y+;nPtl?X;G^-&{J$t!5Jcy`QSb z+Sz~3d|$6?aXNYVE1Q}$^_hW7cDm<1*cxu4;jZa9X`+hc)vN;>H%mRPS+(?#s*m>Z ze=~&$E4VZ}05ryq&Gz_y7M}^Y8Qg^qQJK^KEBsz4&m)hi&`b z=j;7yILnfm{WdK;G-0`TdR8gJJE`Zd3|$^YN{z3}^A|3?k|HJ`W@64UBtPLD6uWNgchHwnJ8mDwfv?>}Cz z>}g@scYL4s{o{*`n*VOEzjtnR{Ga;5>wn|jJWnoG_xpVF_rEszU+<;JqT{>;(5 zFLCzQ(fB{EdHesCfllB5^wPh6md*K<*I)l%a&e6U$Aq9ssW+DyU#n#NRcYq7*{p8g zhtiurEIX?MZhP+CH+gon@sqQgYc`fh-Pc+&^-aF7LK|Pg)c?NIkDq+ucV z?zTA~Z>{|4pUOoRb?=SkpY5Ihmt*~$Jzf9bZp}|wc{QP6!>QNn_RduJ^0S-W-ucE) zwfQdcO$rX0uG?>`p8uR~W8W&E;(6%RE3H70kFoc^#_oBWn_nGQ$M*Zn%gfK}T}?zJ z>}(hAlZn=0>q*Jj?G!4b*J`=`Xhm4+!LkVJw*}iI_+Q=PIp6%PN1 zQff)j1DUCbt-i9tONEL{PEJZXx-WOhnN@EV^)7Nf^rvLv4RxI(g*{Fi_RJCrVYSs) zojIvwy6%G)TV;YPrF#xUN$llnYV$WfpW)Z|g>~!R3G29~u-Rsve6AAYG_5hbd`i-M z=UzplT+dR!zJ)0^t8NRw$?UxKPU5@Qn!LA$X|F68dz)>GGFN_eIZSXuk3b1wq%~D*Jp43Sub~T zm%#HoY2r@~xju0VOj_%za6&6uaH(M2K8eCM)@vzEGI#nz4?eqJ|Mhdlvijo(Jq$dr z*&KWs#N7JqN=|#+tl|%gxUOh!>IiBS6w~f{Ea9!SX5}MmM#g0+5hZiK7L++YD>9m? z*mK0Hd&=u|;ZBQ|vS=1W_|3OEoE&_7$FmEGpY9~Bd04$}x1|1;ACu45^qlz}b+B&! z`lH`#t>!LDs#aq+YslMv`qnKe(3w@~_21HOZqL8}`Pb&_%l+ru{a?M%yzHI107uYF z<=zAh{oo?Gc#CZfn+po^MI(iByx9d-CZrxruoBW_IlNS$zT9p1aoFYNt(O&aSxKu+GENYJ*MoP1{H{9+4`CO=2aQNBdH$ z&#beY|NH%aIicK(EivB~{qLKQIw{X-n)JFos{%Rld!OcRzjw&}-#_jr*P04?dgPw{ z%HAjc{Mq%jmFM^CUyHO^YjCXS`r`geD|7@xxOLC{?UzYTtm|!#-hSCwdCeEK0=`dY zJ{;`-%e?E~e&ZP1Llu7&)y{G_Keaj=*8cFJ)&1|6k~3areCO%i+M@C4WN%_s>YSBJ zJE~Tm{x(r8a^B*tx9-gJyWA6gw?ugTu8(ScHm09r=55yZxL5Qy`{w?~zb(p=x~{rS z&R(~VhudV9?3`R<^RLr2V%68g9h$bbdj9rqMMakC@9&<1&Zj?{HW_qB;+^92wmElq zeVx5c_3jDjn;Xn()zsJU?yF+l8E8`TG+ESA>En;3J-6pf+$y=t>ee3Ltxxjkg5EbMGFWw{UIC#Qx2FadQ@Jd17AwzL{r&8ga)#GB=J9`$|9|v< zcVGJpR3P4N;aiiY(5+!DuPq}xTd|?*qhz6~PG7d#@r=mACkJ58?E-TN{?mV_S1W!fV^L4P2eK{Q9h?om(yE zc+bq+vZLm>%4wZIL&ePxr4H_KUuC>&NsN8XjLwamZSG<_em~SY`;@IYxp_^Qcf*0m z_G?|28Wi#@bJT8F@i>Q`*i>UYS4QD{_qxOXzt7yg^Yv-}4@=$WAL3W3(^%Q-74}^A z`LysKNAFk4Z=GmvQ2OcLqc)~VJ5H|F`^i*acU-;l|Ha=L{Vadlum9&ctjsK98T@>r z@$DOimzIgBSfrnvR^xXr+|tta>~g!mRdH2cvn@AQ^QWgj-}!3M-#=$#zfU|OX&zh5 zsXSFGh;zz!ndKS#84RyYVrJ)id)U%_o^;Q~E2~s5ZIKX;jIljD{r$h_xXQP)CFa|l zIq=}g=dwbTmIYy}3!%$WJ{@4@FL=NA`=d&^K#|;kybUF-Mz@u&&9B~f(^SyuL8V-w zO#R*Cw@w_mIpev#zMuY%fIIJ&sIAXyy>FjauNlOe01d=v$+|npvd2mST z@ma0lucB{U*i!Di-PaLpdB5_-(VUNL6@MNs*N~p?6BX91m%Yf_eObrXm}^0gF82!A z{krfxz$>WN*=-xo<(Jyvr|3CIo#t6~1rMY5o0s=0Cm&Dn9S0eR)?h z!7ra-^?~V=!e%{cNxu4eqgTIUaMB*3iyXJkoYa%mS2dWm>C??9UXRv9rIi~Vl}E<- zn3sxf3aU83#aR70u_!SjM0U#5gaymFs&B92U3rXg>%loEKF^TNc~EeqTVOt`w$YJI z?WLA+N1IvQ>*_nJ(>AS@UC`ZN)#SdCMgvq?Ll6N96r#sXG_T zU*A{|?p7ByQSb0XVgHXGCi)j&7M-53)>YeeQhLqLlgU%O73;q&^cPCkjPmqh>nwb- zZo|K`#iv&qf9_fO{X&LM^U@bWkq6iR-Om5v$K>EA$BGVL)9vBmH`;4;Mtq)K!=!?e zWicf&8e;yQyADlMuJ@XkB4hhkv+kEHXW^ux!&k*W&a9R{e7UPy-ul%0|DXI9FIjTk zd%x`Sciep{XFt@O{qjg?{=WBub#JakpXha5`N-HfWNq=|h1!btr#ly4eq&!FZC~}9 z|8kCb<<wpcC1g7?nG&jhROH9Eb^S(QKXInUoJ*~^Yz4vy8~(`CKb<-*G?c1X-j>_((- zuERy8qt7<%m>{ITq(gWD&(n&>x_C=aglmGmZ|L6b6!c}SGvBHA)X7jA<&bqnmIy|ww+th!h)`~Y`CVh5s95ov? z7^`l4JdwP-;GAKBz`UIK&z_tSSuXv%E3(8P;il=XGYLCS-}@-KsbuE)J0C6l4joDo zmOXf2!jl!1O$(M7Y<&7+<>oto9`E;=_x#U^@_UE+>wcemD9$o(`N}XQnGf~*o-?00 zqdWPTr2X%`+mqHDlsde={zLzb=($gR$9=y0BkIGs?|($T+x}9WQ!Ha!*E030=)cp} z_df55vB>SXTL0L*uGwwzL3jIKfuQ?4#9WVD5RiK=ejz@8&8tJdnLI8}(K)R#{WOQ- ziA$eb^JXoZy*NZVRy3K%QDDNd_(*~LJN5IPZ@Ha2B}ilGzC}NFZ0LT(Zt51(IqmI6 zrQjA}50>fQj{Ur$JpcH4(QBg8EX|d~>Yl&+Zv5KZY`1Y(gw1M>97CyB`!>!Gm%nj^eeK${A76#< zpJl%1Aun{cxpLmZYOQ47(urO|5v~cgQ`92^a+OSECkK?a_B~ELYkTIFSmU*j9{=!E zo!5Fs=5r?d&S|+M*6_8YWWi#gw#!DhJiV4RiS+5un|1K1Kz{Z{f8Isj1~mONI#|6otd?*L(6VW++F*ZkH8XWWZ*yx}lioU4V?#%|qK>iP=@ZpBz)~d*s|lapgIw z&tGs|)i`W*qE~q`^!cvM_xp;! zv$}4+owjjmQCj9a@%a7C=kH&Cu&kR;V7cbz%f&8RjqJb2<{zp^y>#W`Tay*7OBYRk zdf@u3qemytu`Qk?YyG`$_xy9$Qx^+Vo{qkE=%{%7nZ^Bfr((r8W zFI+;0qw%BmmD9pJJLT@$D2G`twMp1hW2o=H?c)^NrnA?#2E_TT;py~~^wg3__uS|b zHd))*ds)c#W|@gUCb}#?`u5aL|I^+D2a;|a^l)B~wIjx0#WBUrDUD0#>Mm|wl49fZ z_~LWv%Wune{`>WM=d)SaJAS=d{d+O!ScI3KZCtb!1%nb=7Ao^}Uo~6!am6z`rh`RS z)Hb&r$U65jP4SADrR~&(Ee;VME@o(V8qHtkbz+Z<`kiM!=aVj^rDyABeh@lm_Acdi zip#yCBd7b^ABUE`*VwGQLU4hk@97ygE(J;kac{e!WxS{}-DLG;$xG!ws#UAmR<{Ig z+#7l@VPaXY_BWm+BX`RW6&0nN^Crz$b+qqz4==mPEv~oPVX6IDVhMldG&V0t?$njO zRA#vMVSnVej*gjbPTSbFX-90~Wn&Ao+_L}Nyj;PVs|_R0MdoD4&AY|LWcM?mrBtDH z>Bc)t4EOU~Qs?)`s)V=5QCXpxAHSunMQM_}KvNCBY@OzApxu?pcVch@QB9(thI&GX>K zsVmzbUa3v|C?5aMrO*Zr8?|Gxz)7Nt;uXF`3--PFq%WvO489VcE^!Z1> z?XJt*J6|s_iWkT-lK~rG~HcWd?xgm?9O@d<^QXyQ=16K0esHir%2CZD)GfhgmzA=?tP53Zy7a83{;67is7Pw^D>?I- zQ>@#*efV9~x$abfh1DwiS3k~vxc7bEc6;y+cDwV%TT1zqbyXivPUg5IbS<(dweV2j zd8MMn%t{@r z>~<=6+*s(B?px*SE~F~+_4&
6zxRi92?HD{A<*8=Cfp2(|@PCXPV)J)zfS)Ad` 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 literal 0 HcmV?d00001 diff --git a/docs/design/tilerendering/4children.svg b/docs/design/tilerendering/4children.svg new file mode 100644 index 0000000..e276876 --- /dev/null +++ b/docs/design/tilerendering/4children.svg @@ -0,0 +1,15364 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + 2 + 3 + + + + + + From d8455804e9b2dea7f8c8c81349513f3e60aa5efe Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Tue, 1 Nov 2011 23:19:27 -0400 Subject: [PATCH 13/27] added docs for --stochastic-render (woops) --- docs/options.rst | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/options.rst b/docs/options.rst index a8f00a3..0046be9 100644 --- a/docs/options.rst +++ b/docs/options.rst @@ -303,6 +303,19 @@ Less Useful Options Default: False +.. cmdoption:: --stochastic-render + + Provides a probability that a non-updated tile will be rerendered + anyway. Use this if there's a new rendering feature you want to + use, but you don't want to rerender the entire map at once. + + **Settings file:** + Option name: ``stochastic_render`` + + Format: a floating-point number + + Default: 0.0 + .. cmdoption:: --textures-path Use this option to specify an alternate terrain.png to use for textures when From cc4877f1492a97821ec6dfa43a50e31a0cd9cc0a Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Tue, 1 Nov 2011 23:43:05 -0400 Subject: [PATCH 14/27] fixed stochastic_render and regionlists working together --- overviewer_core/quadtree.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/overviewer_core/quadtree.py b/overviewer_core/quadtree.py index 21f98ce..a5d83c3 100644 --- a/overviewer_core/quadtree.py +++ b/overviewer_core/quadtree.py @@ -430,15 +430,7 @@ class QuadtreeGen(object): needs_rerender = False get_region_mtime = world.get_region_mtime - # stochastic render check - if random.uniform(0, 1) < self.rerender_probability: - needs_rerender = True - for col, row, chunkx, chunky, regionfile in chunks: - # skip if we already know - if needs_rerender: - break - region, regionMtime = get_region_mtime(regionfile) # don't even check if it's not in the regionlist @@ -462,6 +454,10 @@ class QuadtreeGen(object): needs_rerender = True break + # stochastic render check + if not needs_rerender and self.rerender_probability > 0.0 and random.uniform(0, 1) < self.rerender_probability: + needs_rerender = True + # if after all that, we don't need a rerender, return if not needs_rerender: return None From 09303de94542eefc194bc56297d74a0511210991 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Wed, 2 Nov 2011 12:48:02 -0400 Subject: [PATCH 15/27] Added note about range accepted by --stochastic --- docs/options.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/options.rst b/docs/options.rst index 0046be9..b17c022 100644 --- a/docs/options.rst +++ b/docs/options.rst @@ -312,7 +312,7 @@ Less Useful Options **Settings file:** Option name: ``stochastic_render`` - Format: a floating-point number + Format: a floating-point number in the range 0.0 to 1.0 Default: 0.0 From 2dc1496432d21805eafa33d60dcdd3146503f5a2 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Thu, 3 Nov 2011 10:40:43 -0300 Subject: [PATCH 16/27] Fix typo ._. --- overviewer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overviewer.py b/overviewer.py index 72924e2..6d9a96d 100755 --- a/overviewer.py +++ b/overviewer.py @@ -363,7 +363,7 @@ dir but you forgot to put quotes around the directory, since it contains spaces. w.go(options.procs) - logging.info("Rending the following tilesets: %s", ",".join(options.rendermode)) + logging.info("Rendering the following tilesets: %s", ",".join(options.rendermode)) bgcolor = (int(options.bg_color[1:3],16), int(options.bg_color[3:5],16), int(options.bg_color[5:7],16), 0) From 42593bab58f9b692c5fe540b003a11d0c7951f15 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Thu, 3 Nov 2011 20:41:02 -0400 Subject: [PATCH 17/27] Use a terse logging line if --verbose is not specified --- overviewer.py | 40 ++++++++++++++++++++++++++-------------- overviewer_core/util.py | 21 ++++++++++++++++----- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/overviewer.py b/overviewer.py index 6d9a96d..6f41d7e 100755 --- a/overviewer.py +++ b/overviewer.py @@ -106,32 +106,47 @@ from overviewer_core import googlemap, rendernode helptext = """ %prog [OPTIONS] """ -def configure_logger(): +def configure_logger(options=None): "Configures the root logger to our liking" + if not options: + verbose = False + else: + verbose = options.verbose + + logger = logging.getLogger() + outstream = sys.stderr if platform.system() == 'Windows': # Our custom output stream processor knows how to deal with select ANSI # color escape sequences outstream = util.WindowsOutputStream() - formatter = util.ANSIColorFormatter() + formatter = util.ANSIColorFormatter(verbose) elif sys.stderr.isatty(): # terminal logging with ANSI color - formatter = util.ANSIColorFormatter() + formatter = util.ANSIColorFormatter(verbose) else: # Let's not assume anything. Just text. - formatter = util.DumbFormatter() + formatter = util.DumbFormatter(verbose) - logger = logging.getLogger() - handler = logging.StreamHandler(outstream) - handler.setFormatter(formatter) - logger.addHandler(handler) - logger.setLevel(logging.INFO) + if hasattr(logger, 'overviewerHandler'): + # we have already set up logging so just replace the formatter + # this time with the new values from options + logger.overviewerHandler.setFormatter(formatter) + logger.setLevel(logger.level + 10*options.quiet) + logger.setLevel(logger.level - 10*options.verbose) + + else: + logger.overviewerHandler = logging.StreamHandler(outstream) + logger.overviewerHandler.setFormatter(formatter) + logger.addHandler(logger.overviewerHandler) + logger.setLevel(logging.INFO) def main(): + # bootstrap the logger with defaults configure_logger() try: @@ -173,6 +188,8 @@ def main(): options, args = parser.parse_args() + # the details of the logger options can depend on the command line options + configure_logger(options) if options.version: try: @@ -315,11 +332,6 @@ dir but you forgot to put quotes around the directory, since it contains spaces. north_direction = options.north_direction else: north_direction = 'auto' - - logging.getLogger().setLevel( - logging.getLogger().level + 10*options.quiet) - logging.getLogger().setLevel( - logging.getLogger().level - 10*options.verbose) if options.changelist: try: diff --git a/overviewer_core/util.py b/overviewer_core/util.py index 4506db3..8a2947b 100644 --- a/overviewer_core/util.py +++ b/overviewer_core/util.py @@ -224,13 +224,17 @@ class HighlightingFormatter(logging.Formatter): """Base class of our custom formatter """ - fmtstr = '%(fileandlineno)-18s:PID(%(pid)s):%(asctime)s ' \ - '%(levelname)-8s %(message)s' - datefmt = "%H:%M:%S" + datefmt = "%Y-%m-%d %H:%M:%S" funcName_len = 15 - def __init__(self): - logging.Formatter.__init__(self, self.fmtstr, self.datefmt) + def __init__(self, verbose=False): + if verbose: + fmtstr = '%(fileandlineno)-18s %(pid)s %(asctime)s ' \ + '%(levelname)-8s %(message)s' + else: + fmtstr = '%(asctime)s ' '%(shortlevelname)-1s%(message)s' + + logging.Formatter.__init__(self, fmtstr, self.datefmt) def format(self, record): """Add a few extra options to the record @@ -244,8 +248,15 @@ class HighlightingFormatter(logging.Formatter): funcName The function name truncated/padded to a fixed width characters + + shortlevelname + The level name truncated to 1 character """ + + record.shortlevelname = record.levelname[0] + ' ' + if record.levelname == 'INFO': record.shortlevelname = '' + record.pid = os.getpid() record.fileandlineno = "%s:%s" % (record.filename, record.lineno) From c56c39fac7d0a73b185f2537913d823f4061e33a Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Thu, 3 Nov 2011 21:36:38 -0400 Subject: [PATCH 18/27] Added note to -v option in docs --- docs/options.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/options.rst b/docs/options.rst index b17c022..292f7d8 100644 --- a/docs/options.rst +++ b/docs/options.rst @@ -350,6 +350,11 @@ Less Useful Options Prints more output. You can specify this multiple times. + Specifying this option also has the effect of changing the output format to + a more verbose one with additional information, in addition to outputting + more lines. If you specify both :option:`-v` and :option:`-q`, you can get + the more verbose line without additional output from debug lines. + **Settings file:** Option name: ``verbose`` From c460b0747d52661f5b1524c3ca4585de6957c7ac Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Sat, 5 Nov 2011 12:04:00 -0400 Subject: [PATCH 19/27] added more docs on tile layout and addressing --- docs/design/designdoc.rst | 8 + docs/design/tilerendering/tilegrid.png | Bin 0 -> 70737 bytes docs/design/tilerendering/tilegrid.svg | 1396 ++++++++++++++++++++++++ 3 files changed, 1404 insertions(+) create mode 100644 docs/design/tilerendering/tilegrid.png create mode 100644 docs/design/tilerendering/tilegrid.svg diff --git a/docs/design/designdoc.rst b/docs/design/designdoc.rst index 1808d9a..e2e4edc 100644 --- a/docs/design/designdoc.rst +++ b/docs/design/designdoc.rst @@ -486,6 +486,14 @@ rendered twice. Each neighboring tile is therefore only 2 columns over, not 3 as one may suspect at first. Same goes for the rows: The next tile down is 4 rows down, not 5. +To further illustrate this point, here are four tiles arranged on the grid of +chunks. Notice how the tiles are addressed by the col,row of the chunk in the +upper-left corner. Also notice how neighboring tiles are 2 columns apart but 4 +rows apart. + +.. image:: tilerendering/tilegrid.png + :alt: 4 tiles arranged on the grid of chunks + Quadtrees ========= .. About the tile output diff --git a/docs/design/tilerendering/tilegrid.png b/docs/design/tilerendering/tilegrid.png new file mode 100644 index 0000000000000000000000000000000000000000..7164016c925d3de23be3c6dd57a84a4640e91e95 GIT binary patch literal 70737 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

CQoJI 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¬1L0p>$Kv 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 E0PQ>I%m4rY literal 0 HcmV?d00001 diff --git a/docs/design/tilerendering/tilegrid.svg b/docs/design/tilerendering/tilegrid.svg new file mode 100644 index 0000000..ba9b179 --- /dev/null +++ b/docs/design/tilerendering/tilegrid.svg @@ -0,0 +1,1396 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Chunk 0,0 + + + + + + Tile 0,0 + + + + + + + + Tile 0,-4 + + + + + + + + + Tile -2,-4 + + + + + + + + + Tile -2,0 + + + + + + From 53dbdc98c6b542103c46f60a72c785169e74670e Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Sat, 5 Nov 2011 23:29:51 -0400 Subject: [PATCH 20/27] added special smooth-lighting exception for water --- .../src/rendermode-smooth-lighting.c | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/overviewer_core/src/rendermode-smooth-lighting.c b/overviewer_core/src/rendermode-smooth-lighting.c index c9412ac..28767ea 100644 --- a/overviewer_core/src/rendermode-smooth-lighting.c +++ b/overviewer_core/src/rendermode-smooth-lighting.c @@ -218,10 +218,14 @@ rendermode_smooth_lighting_hidden(void *data, RenderState *state, int x, int y, static void rendermode_smooth_lighting_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObject *mask_light) { + int light_top = 1; + int light_left = 1; + int light_right = 1; RenderModeSmoothLighting *self = (RenderModeSmoothLighting *)data; - /* special case for leaves -- these are also smooth-lit! */ - if (state->block != 18 && is_transparent(state->block)) + /* special case for leaves, water 8, water 9 + -- these are also smooth-lit! */ + if (state->block != 18 && state->block != 8 && state->block != 9 && is_transparent(state->block)) { /* transparent blocks are rendered as usual, with flat lighting */ rendermode_lighting.draw(data, state, src, mask, mask_light); @@ -234,9 +238,23 @@ rendermode_smooth_lighting_draw(void *data, RenderState *state, PyObject *src, P * lighting mode draws */ rendermode_normal.draw(data, state, src, mask, mask_light); - do_shading_with_rule(self, state, lighting_rules[FACE_TOP]); - do_shading_with_rule(self, state, lighting_rules[FACE_LEFT]); - do_shading_with_rule(self, state, lighting_rules[FACE_RIGHT]); + /* special code for water */ + if (state->block == 9) + { + if (!(state->block_pdata & (1 << 4))) + light_top = 0; + if (!(state->block_pdata & (1 << 1))) + light_left = 0; + if (!(state->block_pdata & (1 << 2))) + light_right = 0; + } + + if (light_top) + do_shading_with_rule(self, state, lighting_rules[FACE_TOP]); + if (light_left) + do_shading_with_rule(self, state, lighting_rules[FACE_LEFT]); + if (light_right) + do_shading_with_rule(self, state, lighting_rules[FACE_RIGHT]); } RenderModeInterface rendermode_smooth_lighting = { From 13bca4119210a3564630ee0532842c163e4471a0 Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Sun, 6 Nov 2011 09:38:19 -0500 Subject: [PATCH 21/27] docs: illustration of quadtree paths --- docs/design/designdoc.rst | 14 + docs/design/quadtree/depth2addresses.png | Bin 0 -> 95014 bytes docs/design/quadtree/depth2addresses.svg | 1553 ++++++++++++++++++++++ 3 files changed, 1567 insertions(+) create mode 100644 docs/design/quadtree/depth2addresses.png create mode 100644 docs/design/quadtree/depth2addresses.svg diff --git a/docs/design/designdoc.rst b/docs/design/designdoc.rst index e2e4edc..2d1fb04 100644 --- a/docs/design/designdoc.rst +++ b/docs/design/designdoc.rst @@ -547,6 +547,20 @@ absolute position 136. So this example requires zoom level 8 (at least in the horizontal direction. The vertical direction must also be checked). +Quadtree Paths +-------------- + +To illustrate the relationship between tile col,row addresses and their path, +consider these 16 tiles from a depth 2 quadtree: + +.. image:: quadtree/depth2addresses.png + :alt: Addresses and paths for 16 tiles in a depth 2 tree + +The top address in each tile is the col,row address, where the chunk outlined in +green in the center is at 0,0. The lower address in each tile is the path. The +first number indicates which quadrant the tile is in overall, and the second is +which quadrant within the first one. + get_range_by_path ----------------- .. Explain the quadtree.QuadtreeGen._get_range_by_path method diff --git a/docs/design/quadtree/depth2addresses.png b/docs/design/quadtree/depth2addresses.png new file mode 100644 index 0000000000000000000000000000000000000000..af7c7bcfa974305922425f5d0992ec790fd0d75f GIT binary patch literal 95014 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%0A@$BDSQ6lVM7m)H;8a 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

`Mz+;(gM32?|Jp& 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 literal 0 HcmV?d00001 diff --git a/docs/design/quadtree/depth2addresses.svg b/docs/design/quadtree/depth2addresses.svg new file mode 100644 index 0000000..548c1f1 --- /dev/null +++ b/docs/design/quadtree/depth2addresses.svg @@ -0,0 +1,1553 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0,03/0 + 2,03/1 + 2,43/3 + 0,43/2 + -2,42/3 + -4,42/2 + -4,02/0 + -2,02/1 + -4,-40/2 + -2,-40/3 + 0,-41/2 + 2,-41/3 + 2,-81/1 + 0,-81/0 + -2,-80/1 + -4,-80/0 + + From 4de9ba3b6e643ac08aa9b127995e593e3857f3df Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Sun, 6 Nov 2011 20:34:06 -0500 Subject: [PATCH 22/27] added docs for lighting and smooth-lighting --- docs/design/designdoc.rst | 67 +++ docs/design/lighting/light-eqn.png | Bin 0 -> 1145 bytes docs/design/lighting/lighting-process.png | Bin 0 -> 38945 bytes docs/design/lighting/lighting-process.svg | 597 ++++++++++++++++++++++ docs/design/lighting/smooth-average.png | Bin 0 -> 13111 bytes docs/design/lighting/smooth-average.svg | 297 +++++++++++ 6 files changed, 961 insertions(+) create mode 100644 docs/design/lighting/light-eqn.png create mode 100644 docs/design/lighting/lighting-process.png create mode 100644 docs/design/lighting/lighting-process.svg create mode 100644 docs/design/lighting/smooth-average.png create mode 100644 docs/design/lighting/smooth-average.svg diff --git a/docs/design/designdoc.rst b/docs/design/designdoc.rst index e6a7ef7..90ac1b9 100644 --- a/docs/design/designdoc.rst +++ b/docs/design/designdoc.rst @@ -360,5 +360,72 @@ Caching Lighting ======== +Minecraft stores precomputed lighting information in the chunk files +themselves, so rendering shadows on the map is a simple matter of +interpreting this data, then adding a few extra steps to the render +process. These few extra steps may be found in +``rendermode-lighting.c`` or ``rendermode-smooth-lighting.c``, +depending on the exact method used. + +Each chunk contains two lighting arrays, each of which contains one +value between 0 and 15 for each block. These two arrays are the +BlockLight array, containing light received from other blocks, and the +SkyLight array, containing light received from the sky. Storing these +two seperately makes it easier to switch between daytime and +nighttime. To turn these two values into one value between 0 and 1 +representing how much light there is in a block, we use the following +equation (where l\ :sub:`b` and l\ :sub:`s` are the block light and +sky light values, respectively): + +.. image:: lighting/light-eqn.png + :alt: c = 0.8^{15 - min(l_b, l_s)} + +For night lighting, the sky light values are shifted down by 11 before +this lighting coefficient is calculated. + +Each block of light data applies to all the block faces that touch +it. So, each solid block doesn't receive lighting from the block it's +in, but from the three blocks it touches above, to the left, and to +the right. For transparent blocks with potentially strange shapes, +lighting is approximated by using the local block lighting on the +entire image. + +.. image:: lighting/lighting-process.png + :alt: The lighting process + +For some blocks, notably half-steps and stairs, Minecraft doesn't +generate valid lighting data in the local block like it does for all +other transparent blocks. In these cases, the lighting data is +estimated by averaging data from nearby blocks. This is not an ideal +solution, but it produces acceptable results in almost all cases. + +Smooth Lighting +--------------- + +In the smooth-lighting rendermode, solid blocks are lit per-vertex +instead of per-face. This is done by covering all three faces with a +quadralateral where each corner has a lighting value associated with +it. These lighting values are then smoothly interpolated across the +entire face. + +To calculate these values on each corner, we look at lighting data in +the 8 blocks surrounding the corner, and ignore the 4 blocks behind +the face the corner belongs to. We then calculate the lighting +coefficient for all 4 remaining blocks as normal, and average them to +obtain the coefficient for the corner. This is repeated for all 4 +corners on a given face, and for all visible faces. + +.. image:: lighting/smooth-average.png + :alt: An example face and vertex, with the 4 light sources. + +The `ambient occlusion`_ effect so strongly associated with smooth +lighting in-game is a side effect of this method. Since solid blocks +have both light values set to 0, the lighting coefficient is very +close to 0. For verticies in corners, at least 1 (or more) of the 4 +averaged lighting values is therefore 0, dragging the average down, +and creating the "dark corners" effect. + +.. _ambient occlusion: http://en.wikipedia.org/wiki/Ambient_occlusion + Cave Mode ========= diff --git a/docs/design/lighting/light-eqn.png b/docs/design/lighting/light-eqn.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8067f3245187563d7b16aba216bfe58c5dc8d4 GIT binary patch literal 1145 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 dGXj6hzu4Ef=5~kWTm}XP22WQ%mvv4FO#ln}o! + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Solid Block + Transparent Block + Unlit + Light Data Used + Lit + + diff --git a/docs/design/lighting/smooth-average.png b/docs/design/lighting/smooth-average.png new file mode 100644 index 0000000000000000000000000000000000000000..03dcd4728fb9c4ad936a5f7c1455b412763c5adb GIT binary patch literal 13111 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

Du>bjg>y)U!+f=k3gd3_>gk< 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 + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 2e283757862b9b99c3f97b64e5d1e5cc310c401d Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Sun, 6 Nov 2011 20:58:50 -0500 Subject: [PATCH 23/27] damn semicolons! --- overviewer_core/quadtree.py | 4 ++-- overviewer_core/world.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/overviewer_core/quadtree.py b/overviewer_core/quadtree.py index a5d83c3..8624ba4 100644 --- a/overviewer_core/quadtree.py +++ b/overviewer_core/quadtree.py @@ -299,7 +299,7 @@ class QuadtreeGen(object): #stat the tile, we need to know if it exists or it's mtime try: - tile_mtime = os.stat(imgpath)[stat.ST_MTIME]; + tile_mtime = os.stat(imgpath)[stat.ST_MTIME] except OSError, e: if e.errno != errno.ENOENT: raise @@ -401,7 +401,7 @@ class QuadtreeGen(object): world = self.world #stat the file, we need to know if it exists or it's mtime try: - tile_mtime = os.stat(imgpath)[stat.ST_MTIME]; + tile_mtime = os.stat(imgpath)[stat.ST_MTIME] except OSError, e: if e.errno != errno.ENOENT: raise diff --git a/overviewer_core/world.py b/overviewer_core/world.py index decede4..4ee3dcc 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -117,7 +117,7 @@ class World(object): logging.debug(ex.str()) if os.path.exists(self.pickleFile): - self.persistentDataIsNew = False; + self.persistentDataIsNew = False with open(self.pickleFile,"rb") as p: self.persistentData = cPickle.load(p) if not self.persistentData.get('north_direction', False): @@ -159,7 +159,7 @@ class World(object): def get_region_path(self, chunkX, chunkY): """Returns the path to the region that contains chunk (chunkX, chunkY) """ - _, _, regionfile,_ = self.regionfiles.get((chunkX//32, chunkY//32),(None,None,None,None)); + _, _, regionfile,_ = self.regionfiles.get((chunkX//32, chunkY//32),(None,None,None,None)) return regionfile def load_from_region(self,filename, x, y): From acbf87db3fbac949a713e7993b1c0b7fd5dd286d Mon Sep 17 00:00:00 2001 From: Aaron Griffith Date: Mon, 7 Nov 2011 19:50:55 -0500 Subject: [PATCH 24/27] bumped extension version for new smooth-lighting mode --- overviewer_core/src/overviewer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overviewer_core/src/overviewer.h b/overviewer_core/src/overviewer.h index 8d10d81..279c06b 100644 --- a/overviewer_core/src/overviewer.h +++ b/overviewer_core/src/overviewer.h @@ -26,7 +26,7 @@ // increment this value if you've made a change to the c extesion // and want to force users to rebuild -#define OVERVIEWER_EXTENSION_VERSION 11 +#define OVERVIEWER_EXTENSION_VERSION 12 /* Python PIL, and numpy headers */ #include From 49f8e1a09f2afd5d7cbd2056291220c0fdee6b81 Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Mon, 7 Nov 2011 20:11:10 -0500 Subject: [PATCH 25/27] configure_logger() takes a loglevel and verbose flag now --- overviewer.py | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/overviewer.py b/overviewer.py index ea95951..ca10025 100755 --- a/overviewer.py +++ b/overviewer.py @@ -124,17 +124,21 @@ builtin_custom_rendermodes = { helptext = """ %prog [OPTIONS] """ -def configure_logger(options=None): - "Configures the root logger to our liking" +def configure_logger(loglevel=logging.INFO, verbose=False): + """Configures the root logger to our liking + + For a non-standard loglevel, pass in the level with which to configure the handler. + + For a more verbose options line, pass in verbose=True + + This function may be called more than once. + + """ - if not options: - verbose = False - else: - verbose = options.verbose - logger = logging.getLogger() outstream = sys.stderr + if platform.system() == 'Windows': # Our custom output stream processor knows how to deal with select ANSI # color escape sequences @@ -151,16 +155,17 @@ def configure_logger(options=None): if hasattr(logger, 'overviewerHandler'): # we have already set up logging so just replace the formatter - # this time with the new values from options + # this time with the new values logger.overviewerHandler.setFormatter(formatter) - logger.setLevel(logger.level + 10*options.quiet) - logger.setLevel(logger.level - 10*options.verbose) + logger.setLevel(loglevel) else: + # Save our handler here so we can tell which handler was ours if the + # function is called again logger.overviewerHandler = logging.StreamHandler(outstream) logger.overviewerHandler.setFormatter(formatter) logger.addHandler(logger.overviewerHandler) - logger.setLevel(logging.INFO) + logger.setLevel(loglevel) def main(): @@ -206,8 +211,9 @@ def main(): options, args = parser.parse_args() - # the details of the logger options can depend on the command line options - configure_logger(options) + # re-configure the logger now that we've processed the command line options + configure_logger(logging.INFO + 10*options.quiet - 10*options.verbose, + options.verbose > 0) if options.version: try: From d589369ea3ad3ef1168fcc4d277cba0d542fb75e Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Mon, 7 Nov 2011 20:36:00 -0500 Subject: [PATCH 26/27] catch-all exceptions and print a more colorful message --- overviewer.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/overviewer.py b/overviewer.py index ca10025..8c07cae 100755 --- a/overviewer.py +++ b/overviewer.py @@ -517,4 +517,10 @@ def list_worlds(): if __name__ == "__main__": multiprocessing.freeze_support() - main() + try: + main() + except Exception, e: + logging.exception("""An error has occurred. This may be a bug. Please let us know! +See http://docs.overviewer.org/en/latest/index.html#help + +This is the error that occurred:""") From d59410123d2272c3c6cea3ab825c147274c5849f Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Mon, 7 Nov 2011 20:37:21 -0500 Subject: [PATCH 27/27] New table format to list detected worlds --- overviewer.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/overviewer.py b/overviewer.py index 8c07cae..52a5f34 100755 --- a/overviewer.py +++ b/overviewer.py @@ -498,6 +498,13 @@ def list_worlds(): print 'No world saves found in the usual place' return print "Detected saves:" + + # get max length of world name + worldNameLen = max([len(str(x)) for x in worlds] + [len("World")]) + + formatString = "%-" + str(worldNameLen) + "s | %-8s | %-8s | %-16s " + print formatString % ("World", "Size", "Playtime", "Modified") + print formatString % ("-"*worldNameLen, "-"*8, "-"*8, '-'*16) for name, info in sorted(worlds.iteritems()): if isinstance(name, basestring) and name.startswith("World") and len(name) == 6: try: @@ -512,7 +519,7 @@ def list_worlds(): playtime = info['Time'] / 20 playstamp = '%d:%02d' % (playtime / 3600, playtime / 60 % 60) size = "%.2fMB" % (info['SizeOnDisk'] / 1024. / 1024.) - print "World %s: %s Playtime: %s Modified: %s" % (name, size, playstamp, timestamp) + print formatString % (name, size, playstamp, timestamp) if __name__ == "__main__":