From 053b0e98ac2bbf2b3367ce54f7c33d28ad6a4858 Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Sat, 14 Mar 2026 21:46:21 +0200 Subject: [PATCH 01/16] Fix flaky test `test_bin_random_shape` on MacOS --- tests/test_int_bin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_int_bin.py b/tests/test_int_bin.py index 490f3ee..e1e4747 100644 --- a/tests/test_int_bin.py +++ b/tests/test_int_bin.py @@ -107,5 +107,5 @@ def test_bin_random_shape(self) -> None: bbox = part.bounding_box() self.assertVectorAlmostEqual((125.5, 209.5, 39.11715728752539), bbox.size, 6) - self.assertAlmostEqual(127460.07556303134, part.area, 5) - self.assertAlmostEqual(206846.8044154954, part.volume, 5) + self.assertAlmostEqual(127460.07556303134, part.area, 4) + self.assertAlmostEqual(206846.8044154954, part.volume, 4) From c7a1d01de8797c07e36c4d1a4c858d15ad98a358 Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Sat, 14 Mar 2026 22:32:08 +0200 Subject: [PATCH 02/16] Support non-hardcoded openscad/convert paths --- docs/assets/image_gen.py | 42 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/docs/assets/image_gen.py b/docs/assets/image_gen.py index 944ce14..e2a1dc4 100644 --- a/docs/assets/image_gen.py +++ b/docs/assets/image_gen.py @@ -1,6 +1,7 @@ from __future__ import annotations import logging +import shutil from enum import Enum, auto from pathlib import Path from subprocess import check_call @@ -44,6 +45,41 @@ logger = logging.getLogger(__name__) +OPENSCAD_DEFAULT_PATH = "/usr/bin/openscad" +IMAGEMAGICK_DEFAULT_PATH = "/usr/bin/convert" + + +def resolve_openscad_cmd() -> str: + """Resolve OpenSCAD executable path for the current developer environment.""" + if Path(OPENSCAD_DEFAULT_PATH).exists(): + return OPENSCAD_DEFAULT_PATH + + # Check if "openscad" is in PATH + openscad_in_path = shutil.which("openscad") + if openscad_in_path: + return openscad_in_path + + msg = "OpenSCAD executable not found. Install 'openscad' in PATH." + raise FileNotFoundError(msg) + + +def resolve_imagemagick_cmd() -> str: + """Resolve ImageMagick executable for GIF generation.""" + if Path(IMAGEMAGICK_DEFAULT_PATH).exists(): + return IMAGEMAGICK_DEFAULT_PATH + + convert_in_path = shutil.which("convert") + if convert_in_path: + return convert_in_path + + magick_in_path = shutil.which("magick") + if magick_in_path: + return magick_in_path + + msg = "ImageMagick executable not found. Install 'convert'/'magick' in PATH." + raise FileNotFoundError(msg) + + class CameraPosition(Enum): CAMERA_TOP = auto() CAMERA_BOT = auto() @@ -69,6 +105,7 @@ def parts_to_gif( file_name: str, camera_pos: CameraPosition, ) -> None: + imagemagick_cmd = resolve_imagemagick_cmd() with TemporaryDirectory() as tmp_dir: for idx, part in enumerate(part_list): Convert._part_to_png( @@ -79,7 +116,7 @@ def parts_to_gif( ) _ = check_call( [ - "/usr/bin/convert", + imagemagick_cmd, "-delay", "75", "-loop", @@ -98,6 +135,7 @@ def _part_to_png( file_name: str, camera_pos: CameraPosition, ) -> None: + openscad_cmd = resolve_openscad_cmd() tmp_stl = work_dir.joinpath("tmp.stl") tmp_scad = work_dir.joinpath("tmp.scad") _ = build123d.export_stl(part, str(tmp_stl)) # pyright: ignore[reportUnknownMemberType] @@ -106,7 +144,7 @@ def _part_to_png( _ = check_call( [ - "/usr/bin/openscad", + openscad_cmd, "--autocenter", "--viewall", "--camera", From 0322b4b24ed8040db1d766ff2454a5063a457837 Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Sat, 14 Mar 2026 23:02:54 +0200 Subject: [PATCH 03/16] Update outdated example image --- docs/assets/base_feature_rich_bot.png | Bin 30901 -> 28842 bytes docs/assets/base_feature_rich_top.png | Bin 19620 -> 16271 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/assets/base_feature_rich_bot.png b/docs/assets/base_feature_rich_bot.png index 27826276215743903cf98a74c9bac5119e80b676..0c482deac21422dcd31063afce935b1bdac1e47d 100644 GIT binary patch literal 28842 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ð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 PQK*yJhFY&QZNmN+8pOv} diff --git a/docs/assets/base_feature_rich_top.png b/docs/assets/base_feature_rich_top.png index 0c7ff8e9e80c461706b179c27fa273756b18301a..84eaecbb52387ab9dd8b66b4456b0c6c3e847da5 100644 GIT binary patch literal 16271 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 PH>9GZu9z=x_T+y7oWOKV From 81345eb3f0b62a8e3c0c72ba3415115046c5dcca Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Sat, 14 Mar 2026 22:51:37 +0200 Subject: [PATCH 04/16] Fix `weigthed` -> `weighted` typo in docs --- ...e_plate_weigthed.png => base_plate_weighted.png} | Bin docs/assets/image_gen.py | 4 ++-- docs/assets/{weigthed.png => weighted.png} | Bin docs/source/features.rst | 4 ++-- docs/source/objects.rst | 2 +- src/gridfinity_build123d/features.py | 2 +- tests/test_unit_features.py | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) rename docs/assets/{base_plate_weigthed.png => base_plate_weighted.png} (100%) rename docs/assets/{weigthed.png => weighted.png} (100%) diff --git a/docs/assets/base_plate_weigthed.png b/docs/assets/base_plate_weighted.png similarity index 100% rename from docs/assets/base_plate_weigthed.png rename to docs/assets/base_plate_weighted.png diff --git a/docs/assets/image_gen.py b/docs/assets/image_gen.py index e2a1dc4..2d17b00 100644 --- a/docs/assets/image_gen.py +++ b/docs/assets/image_gen.py @@ -236,7 +236,7 @@ def _part_to_png( ], ), ), - "base_plate_weigthed", + "base_plate_weighted", CameraPosition.CAMERA_BOT, ) @@ -278,7 +278,7 @@ def _part_to_png( Convert.part_to_png( Weighted(f_loc_mock).create_obj(), - "weigthed", + "weighted", CameraPosition.CAMERA_TOP, ) diff --git a/docs/assets/weigthed.png b/docs/assets/weighted.png similarity index 100% rename from docs/assets/weigthed.png rename to docs/assets/weighted.png diff --git a/docs/source/features.rst b/docs/source/features.rst index 49422c4..f07674f 100644 --- a/docs/source/features.rst +++ b/docs/source/features.rst @@ -70,9 +70,9 @@ Features List +++ Counterbore hole. - .. grid-item-card:: :class:`gridfinity_build123d.Weigthed` + .. grid-item-card:: :class:`gridfinity_build123d.Weighted` - .. image:: ../assets/weigthed.png + .. image:: ../assets/weighted.png +++ Cutout for weighted baseplates. diff --git a/docs/source/objects.rst b/docs/source/objects.rst index 25200b7..e26e7a3 100644 --- a/docs/source/objects.rst +++ b/docs/source/objects.rst @@ -169,7 +169,7 @@ BasePlates - .. image:: ../assets/base_plate_weigthed.png + .. image:: ../assets/base_plate_weighted.png Bases diff --git a/src/gridfinity_build123d/features.py b/src/gridfinity_build123d/features.py index 2bb12ed..0e43974 100644 --- a/src/gridfinity_build123d/features.py +++ b/src/gridfinity_build123d/features.py @@ -558,7 +558,7 @@ def create_obj( class Weighted(ObjectFeature): - """Weigthed cutout feature for baseplates.""" + """Weighted cutout feature for baseplates.""" def __init__( self, diff --git a/tests/test_unit_features.py b/tests/test_unit_features.py index 2eb231c..c64d90b 100644 --- a/tests/test_unit_features.py +++ b/tests/test_unit_features.py @@ -284,7 +284,7 @@ def test_gridfinityrefinedmagnetholeside(self) -> None: class WeightedTest(testutils.UtilTestCase): - def test_weigthed(self) -> None: + def test_weighted(self) -> None: f_loc = MagicMock(spec=FeatureLocation) part = Weighted(f_loc).create_obj() From 2368598472172b2cad2ae3c0541c3b363045ccdc Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Sat, 14 Mar 2026 23:01:41 +0200 Subject: [PATCH 05/16] Fix incorrect code example for `base_plate_weighted` image --- docs/source/objects.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/source/objects.rst b/docs/source/objects.rst index e26e7a3..656f4c5 100644 --- a/docs/source/objects.rst +++ b/docs/source/objects.rst @@ -162,7 +162,12 @@ BasePlates BasePlateEqual( size_x=2, size_y=2, - baseplate_block=BasePlateBlockFull(), + baseplate_block=BasePlateBlockFull( + features=[ + ScrewHoleCountersink(BottomCorners()), + Weighted(BottomMiddle()), + ], + ), ) .. raw:: html From 715ca4e27c41e6e01e92a6a513077a009df3523f Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Sat, 14 Mar 2026 23:02:28 +0200 Subject: [PATCH 06/16] Synchronise image_gen and objects code examples --- docs/assets/image_gen.py | 60 ++++++++++++++++++++++++++++++++-------- docs/source/objects.rst | 25 +++++++++++------ 2 files changed, 65 insertions(+), 20 deletions(-) diff --git a/docs/assets/image_gen.py b/docs/assets/image_gen.py index 2d17b00..b81064c 100644 --- a/docs/assets/image_gen.py +++ b/docs/assets/image_gen.py @@ -171,20 +171,43 @@ def _part_to_png( # Bases -Convert.part_to_png(Base([[True, True], [True]]), "base", CameraPosition.CAMERA_BOT) -Convert.part_to_png(BaseEqual(2, 2), "base_equal", CameraPosition.CAMERA_BOT) +Convert.part_to_png( + Base( + grid=[[True, True], [True]], + ), + "base", + CameraPosition.CAMERA_BOT, +) Convert.part_to_png( BaseEqual( - 2, - 2, - [MagnetHole(BottomCorners()), ScrewHole(BottomCorners())], + grid_x=2, + grid_y=2, + ), + "base_equal", + CameraPosition.CAMERA_BOT, +) +Convert.part_to_png( + BaseEqual( + grid_x=2, + grid_y=2, + features=[ + MagnetHole(BottomCorners()), + ScrewHole(BottomCorners()), + ], ), "base_holes", CameraPosition.CAMERA_BOT, ) # Bins -Convert.part_to_png(Bin(Base(), height_in_units=4), "bin", CameraPosition.CAMERA_TOP) +Convert.part_to_png( + Bin( + Base(), + height_in_units=4, + ), + "bin", + CameraPosition.CAMERA_TOP, +) Convert.part_to_png( Bin( @@ -215,21 +238,34 @@ def _part_to_png( # Baseplates Convert.part_to_png( - BasePlate([[True, True], [True]]), + BasePlate( + grid=[[True, True], [True]], + ), "base_plate", CameraPosition.CAMERA_TOP, ) -Convert.part_to_png(BasePlateEqual(2, 2), "base_plate_equal", CameraPosition.CAMERA_TOP) Convert.part_to_png( - BasePlateEqual(2, 2, BasePlateBlockFull()), + BasePlateEqual( + size_x=2, + size_y=2, + ), + "base_plate_equal", + CameraPosition.CAMERA_TOP, +) +Convert.part_to_png( + BasePlateEqual( + size_x=2, + size_y=2, + baseplate_block=BasePlateBlockFull(), + ), "base_plate_full", CameraPosition.CAMERA_TOP, ) Convert.part_to_png( BasePlateEqual( - 2, - 2, - BasePlateBlockFull( + size_x=2, + size_y=2, + baseplate_block=BasePlateBlockFull( features=[ ScrewHoleCountersink(BottomCorners()), Weighted(BottomMiddle()), diff --git a/docs/source/objects.rst b/docs/source/objects.rst index 656f4c5..7031b55 100644 --- a/docs/source/objects.rst +++ b/docs/source/objects.rst @@ -24,7 +24,8 @@ Bins .. testcode:: Bin( - Base(), height_in_units=4, + Base(), + height_in_units=4, ) .. raw:: html @@ -74,7 +75,7 @@ Bins compartment_list=Compartment(Label()), ), lip=StackingLip(), - ), + ) .. raw:: html @@ -121,7 +122,9 @@ BasePlates .. testcode:: - BasePlate([[True,True],[True]]) + BasePlate( + grid=[[True, True], [True]], + ) .. raw:: html @@ -212,7 +215,9 @@ Bases .. testcode:: - Base([[True,True],[True]]) + Base( + grid=[[True, True], [True]], + ) .. raw:: html @@ -230,10 +235,14 @@ Bases .. testcode:: - BaseEqual(2, 2, [MagnetHole( - BottomCorners()), - ScrewHole(BottomCorners(), - )]) + BaseEqual( + grid_x=2, + grid_y=2, + features=[ + MagnetHole(BottomCorners()), + ScrewHole(BottomCorners()), + ], + ) .. raw:: html From 39e02d4070ebd429187debf54885a419d8938734 Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Mon, 16 Mar 2026 14:27:40 +0200 Subject: [PATCH 07/16] Add `BasePlateBottomSideRound` feature --- src/gridfinity_build123d/__init__.py | 2 + src/gridfinity_build123d/features.py | 139 ++++++++++++++++++++++++++- tests/test_int_baseplate.py | 52 +++++++++- tests/test_unit_features.py | 120 +++++++++++++++++++++++ 4 files changed, 310 insertions(+), 3 deletions(-) diff --git a/src/gridfinity_build123d/__init__.py b/src/gridfinity_build123d/__init__.py index 89f13b4..61e2aa9 100644 --- a/src/gridfinity_build123d/__init__.py +++ b/src/gridfinity_build123d/__init__.py @@ -7,6 +7,7 @@ "BasePlateBlockFrame", "BasePlateBlockFull", "BasePlateBlockSkeleton", + "BasePlateBottomSideRound", "BasePlateEqual", "Bin", "BottomCorners", @@ -59,6 +60,7 @@ TopMiddle, ) from .features import ( + BasePlateBottomSideRound, GridfinityRefinedConnectionCutout, GridfinityRefinedMagnetHolePressfit, GridfinityRefinedMagnetHoleSide, diff --git a/src/gridfinity_build123d/features.py b/src/gridfinity_build123d/features.py index 0e43974..c47483b 100644 --- a/src/gridfinity_build123d/features.py +++ b/src/gridfinity_build123d/features.py @@ -3,18 +3,20 @@ from __future__ import annotations from abc import ABC, abstractmethod -from typing import TYPE_CHECKING, override +from typing import TYPE_CHECKING, ClassVar, override from bd_warehouse.thread import Thread # pyright: ignore[reportMissingTypeStubs] from build123d import ( Align, Axis, BasePartObject, + BoundBox, Box, BuildLine, BuildPart, BuildSketch, CenterArc, + Circle, CounterBoreHole, CounterSinkHole, Cylinder, @@ -42,7 +44,7 @@ ) from .constants import gf_bin, gridfinity_standard -from .utils import ObjectCreate +from .utils import Direction, ObjectCreate if TYPE_CHECKING: from .feature_locations import FeatureLocation @@ -607,6 +609,139 @@ def create_obj( return BasePartObject(part.part, rotation, align, mode) +class BasePlateBottomSideRound(ContextFeature): + """Round the underside edge of a baseplate. + + This is useful when the baseplate will be placed in a drawer that has inside rounding between the bottom and sides. + By rounding the bottom perimeter edges of the baseplate, it will fit better in such a drawer. + """ + + _RUNS_ALONG_X: ClassVar[tuple[Direction, ...]] = (Direction.FRONT, Direction.BACK) + _MIN_SIDE_DIRECTIONS: ClassVar[tuple[Direction, ...]] = (Direction.FRONT, Direction.LEFT) + + def __init__( + self, + radius: float = 1.5, + direction: Direction | list[Direction] | None = None, + ) -> None: + """Construct baseplate bottom side round feature. + + Args: + radius (float, optional): Fillet radius used on the bottom perimeter edges. + direction (Direction | list[Direction] | None, optional): Side(s) to round. + Defaults to all perimeter sides. + """ + if radius <= 0: + msg = "Baseplate bottom side round radius needs to be larger than 0" + raise ValueError(msg) + + self.radius: float = radius + self.directions: list[Direction] = self._normalize_directions(direction) + + @staticmethod + def _normalize_directions(direction: Direction | list[Direction] | None) -> list[Direction]: + # Accept one side, many sides, or default to all perimeter sides. + allowed_directions = ( + Direction.FRONT, + Direction.BACK, + Direction.LEFT, + Direction.RIGHT, + ) + + if direction is None: + raw_directions = allowed_directions + elif isinstance(direction, Direction): + raw_directions = [direction] + else: + raw_directions = direction + + msg = "BasePlateBottomSideRound direction needs to be FRONT/BACK/LEFT/RIGHT" + if not raw_directions: + raise ValueError(msg) + + normalized: list[Direction] = [] + for side in raw_directions: + if side not in allowed_directions: + raise ValueError(msg) + if side not in normalized: + normalized.append(side) + + return normalized + + def _create_cylinder_tool(self, length: float) -> Part: + with BuildPart() as cyl_tool: + with BuildSketch(Plane.YZ.offset(-length / 2)): + _ = Circle(self.radius) + _ = extrude(amount=length) + + if not cyl_tool.part: # pragma: no cover + msg = "Part is empty" + raise RuntimeError(msg) + return cyl_tool.part + + def _create_cutter_tool(self, length: float) -> Part: + """Create a cutter by subtracting a cylinder from a box, creating a quarter-round shape.""" + with BuildPart() as cutter: + _ = Box(length, self.radius, self.radius, align=(Align.CENTER, Align.MIN, Align.MIN)) + with Locations((0, self.radius, self.radius)): + cylinder = self._create_cylinder_tool(length=length) + _ = add(cylinder, mode=Mode.SUBTRACT) + + if not cutter.part: # pragma: no cover + msg = "Part is empty" + raise RuntimeError(msg) + return cutter.part + + def _get_cutter_tool_location( + self, + direction: Direction, + bbox: BoundBox, + ) -> tuple[float, float, float]: + """Calculate the location to place the cutter for the given side direction and bounding box.""" + run_along_x = direction in self._RUNS_ALONG_X + is_min_side = direction in self._MIN_SIDE_DIRECTIONS + + x_center = (bbox.min.X + bbox.max.X) / 2 + y_center = (bbox.min.Y + bbox.max.Y) / 2 + + # Anchor on edge for cross-axis, center on run-axis + x_loc = x_center if run_along_x else (bbox.min.X if is_min_side else bbox.max.X) + y_loc = (bbox.min.Y if is_min_side else bbox.max.Y) if run_along_x else y_center + + return x_loc, y_loc, bbox.min.Z + + @staticmethod + def _get_cutter_tool_rotation(direction: Direction) -> Rotation: + rotation_by_direction = { + Direction.FRONT: Rotation(0, 0, 0), + Direction.BACK: Rotation(0, 0, 180), + Direction.LEFT: Rotation(0, 0, -90), + Direction.RIGHT: Rotation(0, 0, 90), + } + + return rotation_by_direction[direction] + + @override + def apply(self, context: BuildPart) -> None: + context_part = context.part + if not isinstance(context_part, Part): # pragma: no cover + msg = "Context has no part" + raise ValueError(msg) # noqa: TRY004 + + bbox = context_part.bounding_box() + + try: + for direction in self.directions: + cutter = self._create_cutter_tool(length=max([bbox.size.X, bbox.size.Y])) + cutter_location = self._get_cutter_tool_location(direction, bbox) + cutter_rotation = self._get_cutter_tool_rotation(direction) + with Locations(cutter_location), Locations(cutter_rotation): + _ = add(cutter, mode=Mode.SUBTRACT) + except ValueError as exp: + msg = "Baseplate bottom side round could not be created, Parent object too small" + raise ValueError(msg) from exp + + class CompartmentFeature(ContextFeature, ABC): """Context feature for a Compartment.""" diff --git a/tests/test_int_baseplate.py b/tests/test_int_baseplate.py index b839c26..3fc5e7b 100644 --- a/tests/test_int_baseplate.py +++ b/tests/test_int_baseplate.py @@ -1,12 +1,14 @@ import testutils -from build123d import BuildPart +from build123d import Axis, BuildPart from gridfinity_build123d import ( BasePlateBlockFrame, BasePlateBlockFull, + BasePlateBottomSideRound, BasePlateEqual, BottomCorners, BottomMiddle, + Direction, MagnetHole, ScrewHoleCountersink, TopCorners, @@ -40,3 +42,51 @@ def test_base_plate_weighted(self) -> None: self.assertVectorAlmostEqual((126.0, 84.0, 11.05), bbox.size) self.assertAlmostEqual(32629.38237429975, part.part.area) self.assertAlmostEqual(57020.96113525161, part.part.volume) + + def test_base_plate_bottom_side_round_direction(self) -> None: + base_plate = BasePlateEqual(size_x=2, size_y=2) + base_plate_rounded = BasePlateEqual( + size_x=2, + size_y=2, + features=BasePlateBottomSideRound( + radius=1, + direction=[ + Direction.FRONT, + Direction.BACK, + Direction.LEFT, + Direction.RIGHT, + ], + ), + ) + base_plate_side_rounded = BasePlateEqual( + size_x=2, + size_y=2, + features=BasePlateBottomSideRound(radius=1, direction=Direction.FRONT), + ) + + bbox = base_plate.bounding_box() + bbox_rounded = base_plate_rounded.bounding_box() + self.assertVectorAlmostEqual( + (bbox.size.X, bbox.size.Y, bbox.size.Z), + bbox_rounded.size, + places=6, + ) + + self.assertLess(base_plate_side_rounded.volume, base_plate.volume) + self.assertLess(base_plate_rounded.volume, base_plate_side_rounded.volume) + + def test_base_plate_bottom_side_round_front_only_does_not_change_back(self) -> None: + """Make sure when we round only the front, the back face area is unchanged.""" + base_plate = BasePlateEqual(size_x=2, size_y=2) + front_rounded = BasePlateEqual( + size_x=2, + size_y=2, + features=BasePlateBottomSideRound(radius=1, direction=Direction.FRONT), + ) + + base_faces_y = base_plate.faces().filter_by(Axis.Y).sort_by(Axis.Y) + rounded_faces_y = front_rounded.faces().filter_by(Axis.Y).sort_by(Axis.Y) + + # FRONT is min-Y, BACK is max-Y. + self.assertLess(rounded_faces_y[0].area, base_faces_y[0].area) + self.assertAlmostEqual(rounded_faces_y[-1].area, base_faces_y[-1].area, places=6) diff --git a/tests/test_unit_features.py b/tests/test_unit_features.py index c64d90b..7a0fda9 100644 --- a/tests/test_unit_features.py +++ b/tests/test_unit_features.py @@ -20,6 +20,7 @@ from gridfinity_build123d.base import Base from gridfinity_build123d.feature_locations import BottomCorners, FeatureLocation from gridfinity_build123d.features import ( + BasePlateBottomSideRound, GridfinityRefinedConnectionCutout, GridfinityRefinedMagnetHolePressfit, GridfinityRefinedMagnetHoleSide, @@ -36,6 +37,7 @@ ScrewHoleCountersink, Weighted, ) +from gridfinity_build123d.utils import Direction class FeatureTest(testutils.UtilTestCase): @@ -294,6 +296,124 @@ def test_weighted(self) -> None: self.assertAlmostEqual(2347.820069221863, part.volume) +class BasePlateBottomSideRoundTest(testutils.UtilTestCase): + def test_default_direction_uses_all_perimeter_sides(self) -> None: + feature = BasePlateBottomSideRound(radius=1) + + self.assertEqual( + feature.directions, + [Direction.FRONT, Direction.BACK, Direction.LEFT, Direction.RIGHT], + ) + + def test_duplicate_directions_are_removed(self) -> None: + feature = BasePlateBottomSideRound( + radius=1, + direction=[ + Direction.RIGHT, + Direction.FRONT, + Direction.RIGHT, + Direction.LEFT, + Direction.FRONT, + ], + ) + + self.assertEqual( + [Direction.RIGHT, Direction.FRONT, Direction.LEFT], + feature.directions, + ) + + def test_apply(self) -> None: + with BuildPart() as part: + Box(30, 30, 10) + BasePlateBottomSideRound(radius=1).apply(part) + + bbox = part.part.bounding_box() + self.assertVectorAlmostEqual((30, 30, 10), bbox.size) + self.assertLess(part.part.volume, 30 * 30 * 10) + self.assertGreater(part.part.volume, 0) + + def test_invalid_radius(self) -> None: + with self.assertRaisesRegex(ValueError, "Baseplate bottom side round radius"): + _ = BasePlateBottomSideRound(radius=0) + + def test_empty_direction_list_not_supported(self) -> None: + with self.assertRaisesRegex( + ValueError, + "BasePlateBottomSideRound direction needs to be FRONT/BACK/LEFT/RIGHT", + ): + _ = BasePlateBottomSideRound(radius=1, direction=[]) + + def test_apply_direction(self) -> None: + with BuildPart() as full_part: + Box(30, 30, 10) + BasePlateBottomSideRound( + radius=1, + direction=[ + Direction.FRONT, + Direction.BACK, + Direction.LEFT, + Direction.RIGHT, + ], + ).apply(full_part) + + with BuildPart() as side_part: + Box(30, 30, 10) + BasePlateBottomSideRound(radius=1, direction=Direction.FRONT).apply(side_part) + + self.assertVectorAlmostEqual((30, 30, 10), full_part.part.bounding_box().size) + self.assertVectorAlmostEqual((30, 30, 10), side_part.part.bounding_box().size) + self.assertLess(full_part.part.volume, side_part.part.volume) + + @parameterized.expand( # type: ignore[misc] + [ + (Direction.FRONT, Axis.Y, 0, -1), + (Direction.BACK, Axis.Y, -1, 0), + (Direction.LEFT, Axis.X, 0, -1), + (Direction.RIGHT, Axis.X, -1, 0), + ], + ) + def test_apply_single_direction_only_affects_requested_side( + self, + direction: Direction, + axis: Axis, + target_index: int, + opposite_index: int, + ) -> None: + with BuildPart() as plain_part: + Box(30, 30, 10) + + with BuildPart() as rounded_part: + Box(30, 30, 10) + BasePlateBottomSideRound(radius=1, direction=direction).apply(rounded_part) + + plain_faces = plain_part.faces().filter_by(axis).sort_by(axis) + rounded_faces = rounded_part.faces().filter_by(axis).sort_by(axis) + + self.assertLess( + rounded_faces[target_index].area, + plain_faces[target_index].area, + ) + self.assertAlmostEqual( + plain_faces[opposite_index].area, + rounded_faces[opposite_index].area, + places=6, + ) + + def test_invalid_direction(self) -> None: + with self.assertRaisesRegex( + ValueError, + "BasePlateBottomSideRound direction needs to be FRONT/BACK/LEFT/RIGHT", + ): + _ = BasePlateBottomSideRound(radius=1, direction=Direction.TOP) + + def test_bot_direction_not_supported(self) -> None: + with self.assertRaisesRegex( + ValueError, + "BasePlateBottomSideRound direction needs to be FRONT/BACK/LEFT/RIGHT", + ): + _ = BasePlateBottomSideRound(radius=1, direction=Direction.BOT) + + class LabelTest(testutils.UtilTestCase): def test_label(self) -> None: with BuildPart() as part: From e40db83f264d1dc41abd988d3ce9b6f13cbd7334 Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Tue, 17 Mar 2026 10:17:55 +0200 Subject: [PATCH 08/16] Add `BasePlateBottomSideRound` documentation --- .../base_plate_bottom_side_round_single.png | Bin 0 -> 24357 bytes docs/assets/image_gen.py | 11 ++++++++ docs/source/features.rst | 8 ++++++ docs/source/objects.rst | 24 ++++++++++++++++++ src/gridfinity_build123d/features.py | 4 +-- 5 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 docs/assets/base_plate_bottom_side_round_single.png diff --git a/docs/assets/base_plate_bottom_side_round_single.png b/docs/assets/base_plate_bottom_side_round_single.png new file mode 100644 index 0000000000000000000000000000000000000000..8883aef8a408a9f960cc14d4e45648d004e1db7f GIT binary patch literal 24357 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%0A*~rO@lAtuh4_ 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 + source + + .. testcode:: + + BasePlateEqual( + size_x=2, + size_y=2, + features=BasePlateBottomSideRound( + radius=1, + direction=Direction.FRONT, + ), + ) + + .. raw:: html + + + + .. image:: ../assets/base_plate_bottom_side_round_single.png + Bases ----- diff --git a/src/gridfinity_build123d/features.py b/src/gridfinity_build123d/features.py index c47483b..8863231 100644 --- a/src/gridfinity_build123d/features.py +++ b/src/gridfinity_build123d/features.py @@ -799,8 +799,8 @@ def __init__( Args: radius (float, optional): Radius of the scoop. Defaults to gf_bin.scoop.radius. wall_correction (float, optional): Makes wall of sweep side thicker. Can be used to - compesate for the stacking lid so one smooth ramp is created to make it easier to - pick items out of a bin. + compensate for the stacking lid so one smooth ramp is created to make it easier to + pick items out of a bin. """ self.radius: float = radius self.wall_correction: float = wall_correction From 7d261ef67f4d348beb5bd31175416f64deb9bbde Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Tue, 17 Mar 2026 11:55:39 +0200 Subject: [PATCH 09/16] Fix typos in documentation and code --- src/gridfinity_build123d/base.py | 8 ++--- src/gridfinity_build123d/baseplate.py | 23 ++++++------- src/gridfinity_build123d/bin.py | 6 ++-- src/gridfinity_build123d/compartments.py | 30 ++++++++--------- src/gridfinity_build123d/connectors.py | 6 ++-- src/gridfinity_build123d/constants.py | 6 ++-- src/gridfinity_build123d/feature_locations.py | 24 +++++++------- src/gridfinity_build123d/features.py | 14 ++++---- src/gridfinity_build123d/utils.py | 32 +++++++++---------- tests/test_unit_bin.py | 4 +-- tests/test_unit_utils.py | 9 +++--- tests/testutils.py | 9 +++--- 12 files changed, 84 insertions(+), 87 deletions(-) diff --git a/src/gridfinity_build123d/base.py b/src/gridfinity_build123d/base.py index 41cc513..3a3e2fc 100644 --- a/src/gridfinity_build123d/base.py +++ b/src/gridfinity_build123d/base.py @@ -27,7 +27,7 @@ class Base(BasePartObject): - """Gridfinity Base objec. + """Gridfinity Base object. Basis for bins and other gridfinity modules. This is the part that fits in the Baseplates. """ @@ -102,8 +102,8 @@ def __init__( """Construct a rectangular Base object. Args: - grid_x (int, optional): Number of grid units on x axis. Defaults to 1. - grid_y (int, optional): Number of grid units on y axis. Defaults to 1. + grid_x (int, optional): Number of grid units on x-axis. Defaults to 1. + grid_y (int, optional): Number of grid units on y-axis. Defaults to 1. features (ObjectFeature | list[ObjectFeature] | None, optional): ObjectFeature or list of ObjectFeatures. Defaults to None. rotation (RotationLike, optional): Angels to rotate around axes. Defaults to (0, 0, 0). @@ -165,7 +165,7 @@ class BaseBlockPlatform(BasePartObject): """BaseBlockPlatform. Create a single baseblock with a rectangular platform on top. The rectangular platform makes it - posible to stack the blocks in x and y direction. After creating an array it is meant to cut or + possible to stack the blocks in x and y direction. After creating an array it is meant to cut or offset the platform to size. """ diff --git a/src/gridfinity_build123d/baseplate.py b/src/gridfinity_build123d/baseplate.py index a6f49ae..be66240 100644 --- a/src/gridfinity_build123d/baseplate.py +++ b/src/gridfinity_build123d/baseplate.py @@ -1,6 +1,6 @@ """baseplate. -Module containg classes to create baseplates. +Module containing classes to create baseplates. """ from __future__ import annotations @@ -38,13 +38,13 @@ class BasePlateBlock(ObjectCreate, ABC): - """Single base plate block used to construct a bigger baseplate.""" + """Single baseplate block used to construct a bigger baseplate.""" def __init__( self, features: Feature | list[Feature] | None = None, ) -> None: - """Baseplateblock interface. + """BasePlateBlock interface. Args: features (Feature | list[Feature] | None, optional): Baseplate @@ -57,12 +57,7 @@ def __init__( class BasePlateBlockFrame(BasePlateBlock): - """Most simple kind of baseplate, only the bare minimum. - - Args: - features (BasePlateFeature | list[BasePlateFeature] | None, optional): Baseplate - features. Defaults to None. - """ + """Most simple kind of baseplate, only the bare minimum.""" @override def create_obj( @@ -109,7 +104,7 @@ def __init__( """Construct BaseplateBlock. Args: - bottom_height (float): The hieght of the bottom part. Defaults to 6.4. + bottom_height (float): The height of the bottom part. Defaults to 6.4. features (Feature | list[Feature] | None, optional): Baseplate features. Defaults to None. """ @@ -182,7 +177,7 @@ def create_obj( class BasePlate(BasePartObject): - """Base plate object constructed from grid definition.""" + """Baseplate object constructed from grid definition.""" def __init__( self, @@ -199,7 +194,7 @@ def __init__( Args: grid (list[list[bool]]): Pattern for creating baseplate. - baseplate_block (BasePlateBlock | None, optional): Type of baseplateblock to construct a + baseplate_block (BasePlateBlock | None, optional): Type of BasePlateBlock to construct a complete baseplate. Defaults to None. rotation (RotationLike): angles to rotate about axes. Defaults to (0, 0, 0). features (Feature | list[Feature]): Features applied to the basePlate. Defaults to None. @@ -254,14 +249,14 @@ def __init__( align: Align | tuple[Align, Align, Align] | None = None, mode: Mode = Mode.ADD, ): - """Construct recatngular BasePlate. + """Construct rectangular BasePlate. Create a baseplate according to grid pattern. Args: size_x (int, optional): x size of baseplate. Defaults to 1. size_y (int, optional): y size of baseplate. Defaults to 1. - baseplate_block (BasePlateBlock | None, optional): Type of baseplateblock to construct a + baseplate_block (BasePlateBlock | None, optional): Type of BasePlateBlock to construct a complete baseplate. features (Feature | list[Feature]): Features applied to the basePlate. Defaults to None. rotation (RotationLike): angles to rotate about axes. Defaults to (0, 0, 0). diff --git a/src/gridfinity_build123d/bin.py b/src/gridfinity_build123d/bin.py index 78d9cb9..955a422 100644 --- a/src/gridfinity_build123d/bin.py +++ b/src/gridfinity_build123d/bin.py @@ -1,4 +1,4 @@ -"""Module containg classes and cutters which can be used to create a bin.""" +"""Module containing classes and cutters which can be used to create a bin.""" from __future__ import annotations @@ -54,11 +54,11 @@ def __init__( base (Part): Base object on which the bin is constructed. height (float, optional): Height of the bin in mm. Can't be used when height_in_units is defined.Defaults to 0. - height_in_units (int, optional): Heigth defined by gridfinity units. Can't be used when + height_in_units (int, optional): Height defined by gridfinity units. Can't be used when height is defined. Defaults to 0. compartments (Compartments | None, optional): Compartments of the bin, Defaults to None. lip (StackingLip, optional): A lip object which should be added. Size added due to the - lib is not included in "height. Defaults to None. + lip is not included in "height". Defaults to None. rotation (RotationLike, optional): angles to rotate about axes. Defaults to (0, 0, 0). align (Union[Align, tuple[Align, Align, Align]], optional): align min, center, or max of object. Defaults to None. diff --git a/src/gridfinity_build123d/compartments.py b/src/gridfinity_build123d/compartments.py index 57d5693..7e27b0d 100644 --- a/src/gridfinity_build123d/compartments.py +++ b/src/gridfinity_build123d/compartments.py @@ -1,4 +1,4 @@ -"""Module containg comparment cutters and placement classes.""" +"""Module containing compartment cutters and placement classes.""" from __future__ import annotations @@ -111,7 +111,7 @@ def create( class Compartments: """Compartments collection. - Creates compartments according to type_list and aranges them according to the grid. + Creates compartments according to type_list and arranges them according to the grid. Example: grid = [ @@ -126,11 +126,11 @@ class Compartments: ] Will generate 4 compartments. One compartment is a square and takes 4 slots. The second - compartment is a rectangle with a Scoop using two slots in the y axis direction.The third - compartment is a rectangle with a Label using 2 slots in the x axis direction. The fourth - compartment is a rectangle in the x axis direction. + compartment is a rectangle with a Scoop using two slots in the y-axis direction.The third + compartment is a rectangle with a Label using 2 slots in the x-axis direction. The fourth + compartment is a rectangle in the x-axis direction. The size of the compartments and exact location is calculated on basis of the total size - of the grid arangement + of the grid arrangement """ def __init__( @@ -143,12 +143,12 @@ def __init__( """Construct grid collection. Args: - grid ( list[list[int]] | None, optional): Configuration for arangement of compartments. + grid ( list[list[int]] | None, optional): Configuration for arrangement of compartments. Defaults to [[1]]. compartment_list (Compartment | list[Compartment] | None): Compartment or list of compartments. Defaults to None. - inner_wall (float): Space between aranged compartments. Defaults to 1.2. - outer_wall (float): Offset outside generrated arangement. Defaults to 0.95. + inner_wall (float): Space between arranged compartments. Defaults to 1.2. + outer_wall (float): Offset outside generated arrangement. Defaults to 0.95. """ if grid is None: grid = [[1]] @@ -172,8 +172,8 @@ def create( """Create compartments object. Args: - size_x (float): size on the x axis - size_y (float): size on the y axis + size_x (float): size on the x-axis + size_y (float): size on the y-axis height (float): Height of compartments rotation (RotationLike, optional): angles to rotate about axes. Defaults to (0, 0, 0). align (Union[Align, tuple[Align, Align, Align]], optional): align min, center, or max @@ -190,11 +190,11 @@ def create( size_unit_y = distribute_area_y / len(self.grid) with BuildPart() as part: - numbers_proccesed: list[int] = [] + numbers_processed: list[int] = [] for r_index, row in enumerate(self.grid): for c_index, item in enumerate(row): - if item != 0 and item not in numbers_proccesed: - numbers_proccesed.append(item) + if item != 0 and item not in numbers_processed: + numbers_processed.append(item) units_x = self._count_same_row(c_index, row) units_y = self._count_same_column((r_index, c_index), self.grid) @@ -287,7 +287,7 @@ def __init__( Args: div_x (int): number of compartments in x direction. Defaults to 1. - div_y (int): number of compartments in y dirction. Deafults to 1. + div_y (int): number of compartments in y direction. Defaults to 1. compartment_list (Compartment | list[Compartment] | None, optional): Compartment or list of compartments. Defaults to Compartment(). inner_wall (float, optional): wall thickness between compartments. Defaults to 1.2. diff --git a/src/gridfinity_build123d/connectors.py b/src/gridfinity_build123d/connectors.py index 7adb103..f7a3819 100644 --- a/src/gridfinity_build123d/connectors.py +++ b/src/gridfinity_build123d/connectors.py @@ -1,6 +1,6 @@ """Connectors. -This module contians standalone connector objects. +This module contains standalone connector objects. """ from __future__ import annotations @@ -26,9 +26,9 @@ class GridfinityRefinedConnector(BasePartObject): - """Gridfiniity refined connector. + """Gridfinity refined connector. - A conector object used in the Gridfinity Refined project to connect baseplates together. + A connector object used in the Gridfinity Refined project to connect baseplates together. """ def __init__( diff --git a/src/gridfinity_build123d/constants.py b/src/gridfinity_build123d/constants.py index 87a2910..1bd6fe1 100644 --- a/src/gridfinity_build123d/constants.py +++ b/src/gridfinity_build123d/constants.py @@ -24,7 +24,7 @@ class grid: size: float = 42 radius: float = 4 - tollerance: float = 0.5 + tolerance: float = 0.5 @dataclass class bottom: @@ -55,7 +55,7 @@ class gf_bin: inner_wall: float = 0.95 # Radius used for vertical inner fillets inner_radius_v: float = ( - gridfinity_standard.grid.radius - inner_wall - gridfinity_standard.grid.tollerance / 2 + gridfinity_standard.grid.radius - inner_wall - gridfinity_standard.grid.tolerance / 2 ) # Radius used for the rest of the inner fillets inner_radius: float = 1.2 @@ -69,6 +69,6 @@ class label: @dataclass class scoop: - """Scoop contants.""" + """Scoop constants.""" radius: float = 5 diff --git a/src/gridfinity_build123d/feature_locations.py b/src/gridfinity_build123d/feature_locations.py index 3d72296..20be3fd 100644 --- a/src/gridfinity_build123d/feature_locations.py +++ b/src/gridfinity_build123d/feature_locations.py @@ -48,7 +48,7 @@ def apply_to(self, part: Part) -> Iterator[None]: part (Part): part to add feature to Raises: - NotImplementedError: aplly_to not implemented. + NotImplementedError: apply_to not implemented. Yields: Iterator[None]: context manager return value. @@ -58,7 +58,7 @@ def apply_to(self, part: Part) -> Iterator[None]: class TopMiddle(FeatureLocation): """Top Middle feature location. - Locate a feature top center of the boundingbox of an object + Locate a feature top center of the bounding box of an object """ @contextmanager @@ -73,7 +73,7 @@ def apply_to(self, part: Part) -> Iterator[None]: # noqa: D102 class BottomMiddle(FeatureLocation): """Bottom Middle feature location. - Locate a feature bottom center of the boundingbox of an object + Locate a feature bottom center of the bounding box of an object """ @contextmanager @@ -88,14 +88,14 @@ def apply_to(self, part: Part) -> Iterator[None]: # noqa: D102 class Corners(FeatureLocation, ABC): """Abstract corners class. - Contains helper function to locate objects in the corners of a face from a boundingbox. + Contains helper function to locate objects in the corners of a face from a bounding box. """ def __init__(self, offset: float = 0) -> None: """Only callable by a child object. Args: - offset (float, optional): The ofset from corner to final location. Defaults to 0. + offset (float, optional): The offset from corner to final location. Defaults to 0. """ self._offset: float = offset @@ -124,7 +124,7 @@ def _apply_on_corners( class BottomCorners(Corners): """Bottom Corners. - Locate a feature at the corners of the bottom plane of a objects boundingbox. + Locate a feature at the corners of the bottom plane of an objects bounding box. """ def __init__( @@ -134,7 +134,7 @@ def __init__( """Create Bottom corners object. Args: - offset (float, optional): The ofset from corner to final location. Defaults to + offset (float, optional): The offset from corner to final location. Defaults to gridfinity_standard.bottom.hole_from_side. """ super().__init__(offset) @@ -151,7 +151,7 @@ def apply_to(self, part: Part) -> Iterator[None]: # noqa: D102 class TopCorners(Corners): """Top Corners. - Locate a feature at the conrers of the top plane of a boundingbox. + Locate a feature at the corners of the top plane of a bounding box. """ def __init__( @@ -161,7 +161,7 @@ def __init__( """Create Top corners object. Args: - offset (float, optional): The ofset from corner to final location. Defaults to + offset (float, optional): The offset from corner to final location. Defaults to gridfinity_standard.bottom.hole_from_side. """ super().__init__(offset) @@ -182,13 +182,13 @@ class BottomSides(FeatureLocation): """ def __init__(self, nr_x: int = 1, nr_y: int = 1, offset: float = 0) -> None: - """Creste BottomSides object. + """Create BottomSides object. Args: nr_x (int, optional): Number of objects which should be located on edges parallel - to the x axis. Defaults to 1. + to the x-axis. Defaults to 1. nr_y (int, optional): Number of objects which should be located on edges parallel - with the y axis. Defaults to 1. + with the y-axis. Defaults to 1. offset (float, optional): Distance from the side to the located objects. Defaults to 0. """ self._nr_x: int = nr_x diff --git a/src/gridfinity_build123d/features.py b/src/gridfinity_build123d/features.py index 8863231..32559a8 100644 --- a/src/gridfinity_build123d/features.py +++ b/src/gridfinity_build123d/features.py @@ -66,8 +66,7 @@ def apply(self, context: BuildPart) -> None: class ObjectFeature(Feature, ObjectCreate, ABC): """Feature created by standalone object. - Feature which creates standalone object and is dependend on a Feature Location for - placement. + Feature which creates standalone object and is dependent on a Feature Location for placement. """ def __init__(self, feature_location: FeatureLocation | None) -> None: @@ -240,7 +239,7 @@ def __init__( radius (float, optional): radius. Defaults to 1.75. counter_sink_radius (float, optional): radius of countersink. Default to 4.25. depth (float, optional): depth. Defaults to gridfinity_standard.screw.depth. - counter_sink_angle(float, optional): angle of contoursink in degrees. Defaults to 82. + counter_sink_angle(float, optional): angle of countersink in degrees. Defaults to 82. """ super().__init__(feature_location, radius, depth) self.counter_sink_radius: float = counter_sink_radius @@ -318,7 +317,7 @@ def create_obj( class GridfinityRefinedConnectionCutout(ObjectFeature): - """Gridfinity refined conecction cutout. + """Gridfinity refined connection cutout. Cutout shape used to connect two objects with a GridfinityRefinedConnector. """ @@ -387,7 +386,7 @@ def __init__( class GridfinityRefinedThreadedScrewHole(ScrewHoleCountersink): - """Gridfinity refined threaded screwhole for bins.""" + """Gridfinity refined threaded screw hole for bins.""" @override def create_obj( @@ -612,7 +611,8 @@ def create_obj( class BasePlateBottomSideRound(ContextFeature): """Round the underside edge of a baseplate. - This is useful when the baseplate will be placed in a drawer that has inside rounding between the bottom and sides. + This is useful when the baseplate will be placed in a drawer that has inside rounding + between the bottom and sides. By rounding the bottom perimeter edges of the baseplate, it will fit better in such a drawer. """ @@ -697,7 +697,7 @@ def _get_cutter_tool_location( direction: Direction, bbox: BoundBox, ) -> tuple[float, float, float]: - """Calculate the location to place the cutter for the given side direction and bounding box.""" + """Calculate the location to place the cutter for the given direction and bounding box.""" run_along_x = direction in self._RUNS_ALONG_X is_min_side = direction in self._MIN_SIDE_DIRECTIONS diff --git a/src/gridfinity_build123d/utils.py b/src/gridfinity_build123d/utils.py index dd4528a..c3c4c58 100644 --- a/src/gridfinity_build123d/utils.py +++ b/src/gridfinity_build123d/utils.py @@ -1,4 +1,4 @@ -"""Utiity module.""" +"""Utility module.""" from __future__ import annotations @@ -36,8 +36,8 @@ from .constants import gridfinity_standard -class UnsuportedEnumValueError(Exception): - """Raised when a unsuported enum value is handled.""" +class UnsupportedEnumValueError(Exception): + """Raised when an unsupported enum value is handled.""" def __init__(self, enum_var: Enum) -> None: """Construct Enum exception. @@ -45,7 +45,7 @@ def __init__(self, enum_var: Enum) -> None: Args: enum_var (Enum): Enum value """ - super().__init__(f"Unsuported enum value: {enum_var}") + super().__init__(f"Unsupported enum value: {enum_var}") class ObjectCreate(ABC): @@ -96,10 +96,10 @@ def to_tuple(direction: Direction) -> tuple[int, int, int]: direction (Direction): Direction to convert. Raises: - ValueError: Unkonw Direction. + ValueError: Unknown Direction. Returns: - Tuple[int, int, int]: Output tupple. + Tuple[int, int, int]: Output tuple. """ match direction: case Direction.TOP: @@ -145,16 +145,16 @@ def attach( ) -> None: """Attach. - Attaches other object acording to "attach". + Attaches other object according to "attach". Args: context (BuildPart): context were attach should be executed. - part (Part): the part to be attached + part (Part): the part to be attached to the context. attach (Attach): Direction to attach offset_value (float, optional): offset. Defaults to 0. Raises: - UnsuportedEnumValueError: Unsuported Enum value + UnsupportedEnumValueError: Unsupported Enum value """ context_part = context.part if not isinstance(context_part, Part): # pragma: no cover @@ -234,7 +234,7 @@ def get_subclasses(class_name: type) -> list[type]: """Get subclasses of a base class recursively. Args: - class_name (Any): class type to get subcalsses from + class_name (Any): class type to get subclasses from Returns: Any: list of child class types @@ -332,7 +332,7 @@ def place_by_grid( mode (Mode, optional): Combination mode. Defaults to Mode.ADD. Raises: - ValueError: grid does not reasemble locations + ValueError: grid does not produce any locations Returns: BasePartObject: gridlike object @@ -347,7 +347,7 @@ def place_by_grid( locations = Utils.locate_grid(grid, width, length) if not locations: - msg = f"grid {grid} does not reasemble locations" + msg = f"grid {grid} does not produce any locations" raise ValueError(msg) with BuildPart() as part, Locations(locations): @@ -369,7 +369,7 @@ def create_bin_platform( """Create the platform for the bin. This function considers that the bins have a different dimension than the base elements - (41.5mm instead of 42mm). This is to allow for certain tolerance for the bins. Therefore the + (41.5mm instead of 42mm). This is to allow for certain tolerance for the bins. Therefore, the size of the grid is set to the gridfinity standard grid size instead of the size of the sketch. @@ -387,7 +387,7 @@ def create_bin_platform( width = gridfinity_standard.grid.size length = gridfinity_standard.grid.size - tol = gridfinity_standard.grid.tollerance + tol = gridfinity_standard.grid.tolerance with BuildSketch() as base: _ = Rectangle(length, width) @@ -416,7 +416,7 @@ def create_profile_block( align: Align | tuple[Align, Align, Align] | None = None, mode: Mode = Mode.ADD, ) -> BasePartObject: - """Create block with stacing profile. + """Create block with stacking profile. Args: profile_type (StackProfile.ProfileType): Profile type @@ -487,7 +487,7 @@ def __init__( ): """StackProfile. - Create a profile of the gridfinity stacking system. Usualy used in the sweep function. + Create a profile of the gridfinity stacking system. Usually used in the sweep function. Args: stack_type (ProfileType): Type of stacking lip (Bin vs Plate). diff --git a/tests/test_unit_bin.py b/tests/test_unit_bin.py index cd70c3a..cce8fea 100644 --- a/tests/test_unit_bin.py +++ b/tests/test_unit_bin.py @@ -97,7 +97,7 @@ def test_bin_height_and_height_in_units(self) -> None: class StackingLipTest(testutils.UtilTestCase): - def test_stackinglip(self) -> None: + def test_stacking_lip(self) -> None: with BuildSketch() as sketch: RectangleRounded(100, 100, 5) @@ -110,7 +110,7 @@ def test_stackinglip(self) -> None: self.assertVectorAlmostEqual((100, 100, 6.967157), bbox.size, 6) self.assertAlmostEqual(4928.067652835152, part.part.volume) - def test_stackinglip_shape_challenging_wire_filter(self) -> None: + def test_stacking_lip_shape_challenging_wire_filter(self) -> None: length = 20 with BuildSketch() as sketch: with BuildLine() as line: diff --git a/tests/test_unit_utils.py b/tests/test_unit_utils.py index 6b394f9..b0497bf 100644 --- a/tests/test_unit_utils.py +++ b/tests/test_unit_utils.py @@ -8,18 +8,18 @@ Attach, Direction, StackProfile, - UnsuportedEnumValueError, + UnsupportedEnumValueError, Utils, ) -class UnsuportedEnumValueErrorTest(testutils.UtilTestCase): +class UnsupportedEnumValueErrorTest(testutils.UtilTestCase): def test_enum_value_error(self) -> None: class TestEnum(Enum): TEST_A = auto() # Check if no exceptions are raised - UnsuportedEnumValueError(TestEnum.TEST_A) + UnsupportedEnumValueError(TestEnum.TEST_A) class StackProfileTest(testutils.UtilTestCase): @@ -229,7 +229,8 @@ def test_place_by_grid_rows_and_columns_with_holes(self) -> None: def test_place_by_grid_nothing(self) -> None: box = Box(10, 15, 20) grid = [[False]] - self.assertRaises(ValueError, Utils.place_by_grid, box, grid) + with self.assertRaisesRegex(ValueError, "does not produce any locations"): + Utils.place_by_grid(box, grid) def test_place_by_grid_width_length(self) -> None: box = Box(10, 15, 20) diff --git a/tests/testutils.py b/tests/testutils.py index 2b0ef9b..51c7dcc 100644 --- a/tests/testutils.py +++ b/tests/testutils.py @@ -21,16 +21,17 @@ def assertVectorAlmostEqual( # pylint: disable=invalid-name msg = f"{Vector(compare)} != {vector}" raise AssertionError(msg) from e - def _isclose(self, a: float, b: float, places: int) -> bool: + @staticmethod + def _is_close(a: float, b: float, places: int) -> bool: diff = abs(a - b) return round(diff, places) == 0 def _vec_almost_equal(self, vec_a: Vector, vec_b: Vector, places: int) -> bool: return all( [ - self._isclose(vec_a.X, vec_b.X, places), - self._isclose(vec_a.Y, vec_b.Y, places), - self._isclose(vec_a.Z, vec_b.Z, places), + self._is_close(vec_a.X, vec_b.X, places), + self._is_close(vec_a.Y, vec_b.Y, places), + self._is_close(vec_a.Z, vec_b.Z, places), ], ) From 8fcef527f6e40fcdbeb4309eb24d1627807d7eeb Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Tue, 17 Mar 2026 12:03:04 +0200 Subject: [PATCH 10/16] Add missing `mypy` to dev dependencies --- pyproject.toml | 1 + uv.lock | 151 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 152 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 6a82b06..53b93e6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,6 +15,7 @@ dev = [ "ocp_vscode", "parameterized", "ruff", + "mypy", "pytest-markdown-docs", "Sphinx", "sphinx-rtd-theme", diff --git a/uv.lock b/uv.lock index 51d9308..cd2708c 100644 --- a/uv.lock +++ b/uv.lock @@ -874,6 +874,7 @@ dev = [ { name = "basedpyright" }, { name = "coverage" }, { name = "debugpy" }, + { name = "mypy" }, { name = "ocp-vscode" }, { name = "parameterized" }, { name = "pytest-markdown-docs" }, @@ -898,6 +899,7 @@ dev = [ { name = "basedpyright", specifier = ">=1.38.2" }, { name = "coverage" }, { name = "debugpy", specifier = ">=1.8.20" }, + { name = "mypy" }, { name = "ocp-vscode" }, { name = "parameterized" }, { name = "pytest-markdown-docs" }, @@ -1212,6 +1214,91 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a9/b3/7a844247dfa1f0b24de6fa0425afb808dd1feeef2d05d6335170433c1071/lib3mf-2.5.0-py3-none-win_amd64.whl", hash = "sha256:e378470855d634708c6ae7f2f2c6fcd89e4996350de86020849e7b2d51ffe6ac", size = 857560, upload-time = "2026-02-23T21:17:39.431Z" }, ] +[[package]] +name = "librt" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/56/9c/b4b0c54d84da4a94b37bd44151e46d5e583c9534c7e02250b961b1b6d8a8/librt-0.8.1.tar.gz", hash = "sha256:be46a14693955b3bd96014ccbdb8339ee8c9346fbe11c1b78901b55125f14c73", size = 177471, upload-time = "2026-02-17T16:13:06.101Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/5f/63f5fa395c7a8a93558c0904ba8f1c8d1b997ca6a3de61bc7659970d66bf/librt-0.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81fd938344fecb9373ba1b155968c8a329491d2ce38e7ddb76f30ffb938f12dc", size = 65697, upload-time = "2026-02-17T16:11:06.903Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e0/0472cf37267b5920eff2f292ccfaede1886288ce35b7f3203d8de00abfe6/librt-0.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5db05697c82b3a2ec53f6e72b2ed373132b0c2e05135f0696784e97d7f5d48e7", size = 68376, upload-time = "2026-02-17T16:11:08.395Z" }, + { url = "https://files.pythonhosted.org/packages/c8/be/8bd1359fdcd27ab897cd5963294fa4a7c83b20a8564678e4fd12157e56a5/librt-0.8.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d56bc4011975f7460bea7b33e1ff425d2f1adf419935ff6707273c77f8a4ada6", size = 197084, upload-time = "2026-02-17T16:11:09.774Z" }, + { url = "https://files.pythonhosted.org/packages/e2/fe/163e33fdd091d0c2b102f8a60cc0a61fd730ad44e32617cd161e7cd67a01/librt-0.8.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5cdc0f588ff4b663ea96c26d2a230c525c6fc62b28314edaaaca8ed5af931ad0", size = 207337, upload-time = "2026-02-17T16:11:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/01/99/f85130582f05dcf0c8902f3d629270231d2f4afdfc567f8305a952ac7f14/librt-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:97c2b54ff6717a7a563b72627990bec60d8029df17df423f0ed37d56a17a176b", size = 219980, upload-time = "2026-02-17T16:11:12.499Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/cb5e4d03659e043a26c74e08206412ac9a3742f0477d96f9761a55313b5f/librt-0.8.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8f1125e6bbf2f1657d9a2f3ccc4a2c9b0c8b176965bb565dd4d86be67eddb4b6", size = 212921, upload-time = "2026-02-17T16:11:14.484Z" }, + { url = "https://files.pythonhosted.org/packages/b1/81/a3a01e4240579c30f3487f6fed01eb4bc8ef0616da5b4ebac27ca19775f3/librt-0.8.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8f4bb453f408137d7581be309b2fbc6868a80e7ef60c88e689078ee3a296ae71", size = 221381, upload-time = "2026-02-17T16:11:17.459Z" }, + { url = "https://files.pythonhosted.org/packages/08/b0/fc2d54b4b1c6fb81e77288ff31ff25a2c1e62eaef4424a984f228839717b/librt-0.8.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c336d61d2fe74a3195edc1646d53ff1cddd3a9600b09fa6ab75e5514ba4862a7", size = 216714, upload-time = "2026-02-17T16:11:19.197Z" }, + { url = "https://files.pythonhosted.org/packages/96/96/85daa73ffbd87e1fb287d7af6553ada66bf25a2a6b0de4764344a05469f6/librt-0.8.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:eb5656019db7c4deacf0c1a55a898c5bb8f989be904597fcb5232a2f4828fa05", size = 214777, upload-time = "2026-02-17T16:11:20.443Z" }, + { url = "https://files.pythonhosted.org/packages/12/9c/c3aa7a2360383f4bf4f04d98195f2739a579128720c603f4807f006a4225/librt-0.8.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c25d9e338d5bed46c1632f851babf3d13c78f49a225462017cf5e11e845c5891", size = 237398, upload-time = "2026-02-17T16:11:22.083Z" }, + { url = "https://files.pythonhosted.org/packages/61/19/d350ea89e5274665185dabc4bbb9c3536c3411f862881d316c8b8e00eb66/librt-0.8.1-cp310-cp310-win32.whl", hash = "sha256:aaab0e307e344cb28d800957ef3ec16605146ef0e59e059a60a176d19543d1b7", size = 54285, upload-time = "2026-02-17T16:11:23.27Z" }, + { url = "https://files.pythonhosted.org/packages/4f/d6/45d587d3d41c112e9543a0093d883eb57a24a03e41561c127818aa2a6bcc/librt-0.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:56e04c14b696300d47b3bc5f1d10a00e86ae978886d0cee14e5714fafb5df5d2", size = 61352, upload-time = "2026-02-17T16:11:24.207Z" }, + { url = "https://files.pythonhosted.org/packages/1d/01/0e748af5e4fee180cf7cd12bd12b0513ad23b045dccb2a83191bde82d168/librt-0.8.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:681dc2451d6d846794a828c16c22dc452d924e9f700a485b7ecb887a30aad1fd", size = 65315, upload-time = "2026-02-17T16:11:25.152Z" }, + { url = "https://files.pythonhosted.org/packages/9d/4d/7184806efda571887c798d573ca4134c80ac8642dcdd32f12c31b939c595/librt-0.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3b4350b13cc0e6f5bec8fa7caf29a8fb8cdc051a3bae45cfbfd7ce64f009965", size = 68021, upload-time = "2026-02-17T16:11:26.129Z" }, + { url = "https://files.pythonhosted.org/packages/ae/88/c3c52d2a5d5101f28d3dc89298444626e7874aa904eed498464c2af17627/librt-0.8.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ac1e7817fd0ed3d14fd7c5df91daed84c48e4c2a11ee99c0547f9f62fdae13da", size = 194500, upload-time = "2026-02-17T16:11:27.177Z" }, + { url = "https://files.pythonhosted.org/packages/d6/5d/6fb0a25b6a8906e85b2c3b87bee1d6ed31510be7605b06772f9374ca5cb3/librt-0.8.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:747328be0c5b7075cde86a0e09d7a9196029800ba75a1689332348e998fb85c0", size = 205622, upload-time = "2026-02-17T16:11:28.242Z" }, + { url = "https://files.pythonhosted.org/packages/b2/a6/8006ae81227105476a45691f5831499e4d936b1c049b0c1feb17c11b02d1/librt-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0af2bd2bc204fa27f3d6711d0f360e6b8c684a035206257a81673ab924aa11e", size = 218304, upload-time = "2026-02-17T16:11:29.344Z" }, + { url = "https://files.pythonhosted.org/packages/ee/19/60e07886ad16670aae57ef44dada41912c90906a6fe9f2b9abac21374748/librt-0.8.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d480de377f5b687b6b1bc0c0407426da556e2a757633cc7e4d2e1a057aa688f3", size = 211493, upload-time = "2026-02-17T16:11:30.445Z" }, + { url = "https://files.pythonhosted.org/packages/9c/cf/f666c89d0e861d05600438213feeb818c7514d3315bae3648b1fc145d2b6/librt-0.8.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d0ee06b5b5291f609ddb37b9750985b27bc567791bc87c76a569b3feed8481ac", size = 219129, upload-time = "2026-02-17T16:11:32.021Z" }, + { url = "https://files.pythonhosted.org/packages/8f/ef/f1bea01e40b4a879364c031476c82a0dc69ce068daad67ab96302fed2d45/librt-0.8.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e2c6f77b9ad48ce5603b83b7da9ee3e36b3ab425353f695cba13200c5d96596", size = 213113, upload-time = "2026-02-17T16:11:33.192Z" }, + { url = "https://files.pythonhosted.org/packages/9b/80/cdab544370cc6bc1b72ea369525f547a59e6938ef6863a11ab3cd24759af/librt-0.8.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:439352ba9373f11cb8e1933da194dcc6206daf779ff8df0ed69c5e39113e6a99", size = 212269, upload-time = "2026-02-17T16:11:34.373Z" }, + { url = "https://files.pythonhosted.org/packages/9d/9c/48d6ed8dac595654f15eceab2035131c136d1ae9a1e3548e777bb6dbb95d/librt-0.8.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:82210adabbc331dbb65d7868b105185464ef13f56f7f76688565ad79f648b0fe", size = 234673, upload-time = "2026-02-17T16:11:36.063Z" }, + { url = "https://files.pythonhosted.org/packages/16/01/35b68b1db517f27a01be4467593292eb5315def8900afad29fabf56304ba/librt-0.8.1-cp311-cp311-win32.whl", hash = "sha256:52c224e14614b750c0a6d97368e16804a98c684657c7518752c356834fff83bb", size = 54597, upload-time = "2026-02-17T16:11:37.544Z" }, + { url = "https://files.pythonhosted.org/packages/71/02/796fe8f02822235966693f257bf2c79f40e11337337a657a8cfebba5febc/librt-0.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:c00e5c884f528c9932d278d5c9cbbea38a6b81eb62c02e06ae53751a83a4d52b", size = 61733, upload-time = "2026-02-17T16:11:38.691Z" }, + { url = "https://files.pythonhosted.org/packages/28/ad/232e13d61f879a42a4e7117d65e4984bb28371a34bb6fb9ca54ec2c8f54e/librt-0.8.1-cp311-cp311-win_arm64.whl", hash = "sha256:f7cdf7f26c2286ffb02e46d7bac56c94655540b26347673bea15fa52a6af17e9", size = 52273, upload-time = "2026-02-17T16:11:40.308Z" }, + { url = "https://files.pythonhosted.org/packages/95/21/d39b0a87ac52fc98f621fb6f8060efb017a767ebbbac2f99fbcbc9ddc0d7/librt-0.8.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a28f2612ab566b17f3698b0da021ff9960610301607c9a5e8eaca62f5e1c350a", size = 66516, upload-time = "2026-02-17T16:11:41.604Z" }, + { url = "https://files.pythonhosted.org/packages/69/f1/46375e71441c43e8ae335905e069f1c54febee63a146278bcee8782c84fd/librt-0.8.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:60a78b694c9aee2a0f1aaeaa7d101cf713e92e8423a941d2897f4fa37908dab9", size = 68634, upload-time = "2026-02-17T16:11:43.268Z" }, + { url = "https://files.pythonhosted.org/packages/0a/33/c510de7f93bf1fa19e13423a606d8189a02624a800710f6e6a0a0f0784b3/librt-0.8.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:758509ea3f1eba2a57558e7e98f4659d0ea7670bff49673b0dde18a3c7e6c0eb", size = 198941, upload-time = "2026-02-17T16:11:44.28Z" }, + { url = "https://files.pythonhosted.org/packages/dd/36/e725903416409a533d92398e88ce665476f275081d0d7d42f9c4951999e5/librt-0.8.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:039b9f2c506bd0ab0f8725aa5ba339c6f0cd19d3b514b50d134789809c24285d", size = 209991, upload-time = "2026-02-17T16:11:45.462Z" }, + { url = "https://files.pythonhosted.org/packages/30/7a/8d908a152e1875c9f8eac96c97a480df425e657cdb47854b9efaa4998889/librt-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bb54f1205a3a6ab41a6fd71dfcdcbd278670d3a90ca502a30d9da583105b6f7", size = 224476, upload-time = "2026-02-17T16:11:46.542Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b8/a22c34f2c485b8903a06f3fe3315341fe6876ef3599792344669db98fcff/librt-0.8.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:05bd41cdee35b0c59c259f870f6da532a2c5ca57db95b5f23689fcb5c9e42440", size = 217518, upload-time = "2026-02-17T16:11:47.746Z" }, + { url = "https://files.pythonhosted.org/packages/79/6f/5c6fea00357e4f82ba44f81dbfb027921f1ab10e320d4a64e1c408d035d9/librt-0.8.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adfab487facf03f0d0857b8710cf82d0704a309d8ffc33b03d9302b4c64e91a9", size = 225116, upload-time = "2026-02-17T16:11:49.298Z" }, + { url = "https://files.pythonhosted.org/packages/f2/a0/95ced4e7b1267fe1e2720a111685bcddf0e781f7e9e0ce59d751c44dcfe5/librt-0.8.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:153188fe98a72f206042be10a2c6026139852805215ed9539186312d50a8e972", size = 217751, upload-time = "2026-02-17T16:11:50.49Z" }, + { url = "https://files.pythonhosted.org/packages/93/c2/0517281cb4d4101c27ab59472924e67f55e375bc46bedae94ac6dc6e1902/librt-0.8.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:dd3c41254ee98604b08bd5b3af5bf0a89740d4ee0711de95b65166bf44091921", size = 218378, upload-time = "2026-02-17T16:11:51.783Z" }, + { url = "https://files.pythonhosted.org/packages/43/e8/37b3ac108e8976888e559a7b227d0ceac03c384cfd3e7a1c2ee248dbae79/librt-0.8.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e0d138c7ae532908cbb342162b2611dbd4d90c941cd25ab82084aaf71d2c0bd0", size = 241199, upload-time = "2026-02-17T16:11:53.561Z" }, + { url = "https://files.pythonhosted.org/packages/4b/5b/35812d041c53967fedf551a39399271bbe4257e681236a2cf1a69c8e7fa1/librt-0.8.1-cp312-cp312-win32.whl", hash = "sha256:43353b943613c5d9c49a25aaffdba46f888ec354e71e3529a00cca3f04d66a7a", size = 54917, upload-time = "2026-02-17T16:11:54.758Z" }, + { url = "https://files.pythonhosted.org/packages/de/d1/fa5d5331b862b9775aaf2a100f5ef86854e5d4407f71bddf102f4421e034/librt-0.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:ff8baf1f8d3f4b6b7257fcb75a501f2a5499d0dda57645baa09d4d0d34b19444", size = 62017, upload-time = "2026-02-17T16:11:55.748Z" }, + { url = "https://files.pythonhosted.org/packages/c7/7c/c614252f9acda59b01a66e2ddfd243ed1c7e1deab0293332dfbccf862808/librt-0.8.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f2ae3725904f7377e11cc37722d5d401e8b3d5851fb9273d7f4fe04f6b3d37d", size = 52441, upload-time = "2026-02-17T16:11:56.801Z" }, + { url = "https://files.pythonhosted.org/packages/c5/3c/f614c8e4eaac7cbf2bbdf9528790b21d89e277ee20d57dc6e559c626105f/librt-0.8.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7e6bad1cd94f6764e1e21950542f818a09316645337fd5ab9a7acc45d99a8f35", size = 66529, upload-time = "2026-02-17T16:11:57.809Z" }, + { url = "https://files.pythonhosted.org/packages/ab/96/5836544a45100ae411eda07d29e3d99448e5258b6e9c8059deb92945f5c2/librt-0.8.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cf450f498c30af55551ba4f66b9123b7185362ec8b625a773b3d39aa1a717583", size = 68669, upload-time = "2026-02-17T16:11:58.843Z" }, + { url = "https://files.pythonhosted.org/packages/06/53/f0b992b57af6d5531bf4677d75c44f095f2366a1741fb695ee462ae04b05/librt-0.8.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:eca45e982fa074090057132e30585a7e8674e9e885d402eae85633e9f449ce6c", size = 199279, upload-time = "2026-02-17T16:11:59.862Z" }, + { url = "https://files.pythonhosted.org/packages/f3/ad/4848cc16e268d14280d8168aee4f31cea92bbd2b79ce33d3e166f2b4e4fc/librt-0.8.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c3811485fccfda840861905b8c70bba5ec094e02825598bb9d4ca3936857a04", size = 210288, upload-time = "2026-02-17T16:12:00.954Z" }, + { url = "https://files.pythonhosted.org/packages/52/05/27fdc2e95de26273d83b96742d8d3b7345f2ea2bdbd2405cc504644f2096/librt-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e4af413908f77294605e28cfd98063f54b2c790561383971d2f52d113d9c363", size = 224809, upload-time = "2026-02-17T16:12:02.108Z" }, + { url = "https://files.pythonhosted.org/packages/7a/d0/78200a45ba3240cb042bc597d6f2accba9193a2c57d0356268cbbe2d0925/librt-0.8.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5212a5bd7fae98dae95710032902edcd2ec4dc994e883294f75c857b83f9aba0", size = 218075, upload-time = "2026-02-17T16:12:03.631Z" }, + { url = "https://files.pythonhosted.org/packages/af/72/a210839fa74c90474897124c064ffca07f8d4b347b6574d309686aae7ca6/librt-0.8.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e692aa2d1d604e6ca12d35e51fdc36f4cda6345e28e36374579f7ef3611b3012", size = 225486, upload-time = "2026-02-17T16:12:04.725Z" }, + { url = "https://files.pythonhosted.org/packages/a3/c1/a03cc63722339ddbf087485f253493e2b013039f5b707e8e6016141130fa/librt-0.8.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4be2a5c926b9770c9e08e717f05737a269b9d0ebc5d2f0060f0fe3fe9ce47acb", size = 218219, upload-time = "2026-02-17T16:12:05.828Z" }, + { url = "https://files.pythonhosted.org/packages/58/f5/fff6108af0acf941c6f274a946aea0e484bd10cd2dc37610287ce49388c5/librt-0.8.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fd1a720332ea335ceb544cf0a03f81df92abd4bb887679fd1e460976b0e6214b", size = 218750, upload-time = "2026-02-17T16:12:07.09Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/5a387bfef30ec1e4b4f30562c8586566faf87e47d696768c19feb49e3646/librt-0.8.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2af9e01e0ef80d95ae3c720be101227edae5f2fe7e3dc63d8857fadfc5a1d", size = 241624, upload-time = "2026-02-17T16:12:08.43Z" }, + { url = "https://files.pythonhosted.org/packages/d4/be/24f8502db11d405232ac1162eb98069ca49c3306c1d75c6ccc61d9af8789/librt-0.8.1-cp313-cp313-win32.whl", hash = "sha256:086a32dbb71336627e78cc1d6ee305a68d038ef7d4c39aaff41ae8c9aa46e91a", size = 54969, upload-time = "2026-02-17T16:12:09.633Z" }, + { url = "https://files.pythonhosted.org/packages/5c/73/c9fdf6cb2a529c1a092ce769a12d88c8cca991194dfe641b6af12fa964d2/librt-0.8.1-cp313-cp313-win_amd64.whl", hash = "sha256:e11769a1dbda4da7b00a76cfffa67aa47cfa66921d2724539eee4b9ede780b79", size = 62000, upload-time = "2026-02-17T16:12:10.632Z" }, + { url = "https://files.pythonhosted.org/packages/d3/97/68f80ca3ac4924f250cdfa6e20142a803e5e50fca96ef5148c52ee8c10ea/librt-0.8.1-cp313-cp313-win_arm64.whl", hash = "sha256:924817ab3141aca17893386ee13261f1d100d1ef410d70afe4389f2359fea4f0", size = 52495, upload-time = "2026-02-17T16:12:11.633Z" }, + { url = "https://files.pythonhosted.org/packages/c9/6a/907ef6800f7bca71b525a05f1839b21f708c09043b1c6aa77b6b827b3996/librt-0.8.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6cfa7fe54fd4d1f47130017351a959fe5804bda7a0bc7e07a2cdbc3fdd28d34f", size = 66081, upload-time = "2026-02-17T16:12:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/1b/18/25e991cd5640c9fb0f8d91b18797b29066b792f17bf8493da183bf5caabe/librt-0.8.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:228c2409c079f8c11fb2e5d7b277077f694cb93443eb760e00b3b83cb8b3176c", size = 68309, upload-time = "2026-02-17T16:12:13.756Z" }, + { url = "https://files.pythonhosted.org/packages/a4/36/46820d03f058cfb5a9de5940640ba03165ed8aded69e0733c417bb04df34/librt-0.8.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7aae78ab5e3206181780e56912d1b9bb9f90a7249ce12f0e8bf531d0462dd0fc", size = 196804, upload-time = "2026-02-17T16:12:14.818Z" }, + { url = "https://files.pythonhosted.org/packages/59/18/5dd0d3b87b8ff9c061849fbdb347758d1f724b9a82241aa908e0ec54ccd0/librt-0.8.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:172d57ec04346b047ca6af181e1ea4858086c80bdf455f61994c4aa6fc3f866c", size = 206907, upload-time = "2026-02-17T16:12:16.513Z" }, + { url = "https://files.pythonhosted.org/packages/d1/96/ef04902aad1424fd7299b62d1890e803e6ab4018c3044dca5922319c4b97/librt-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6b1977c4ea97ce5eb7755a78fae68d87e4102e4aaf54985e8b56806849cc06a3", size = 221217, upload-time = "2026-02-17T16:12:17.906Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ff/7e01f2dda84a8f5d280637a2e5827210a8acca9a567a54507ef1c75b342d/librt-0.8.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:10c42e1f6fd06733ef65ae7bebce2872bcafd8d6e6b0a08fe0a05a23b044fb14", size = 214622, upload-time = "2026-02-17T16:12:19.108Z" }, + { url = "https://files.pythonhosted.org/packages/1e/8c/5b093d08a13946034fed57619742f790faf77058558b14ca36a6e331161e/librt-0.8.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4c8dfa264b9193c4ee19113c985c95f876fae5e51f731494fc4e0cf594990ba7", size = 221987, upload-time = "2026-02-17T16:12:20.331Z" }, + { url = "https://files.pythonhosted.org/packages/d3/cc/86b0b3b151d40920ad45a94ce0171dec1aebba8a9d72bb3fa00c73ab25dd/librt-0.8.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:01170b6729a438f0dedc4a26ed342e3dc4f02d1000b4b19f980e1877f0c297e6", size = 215132, upload-time = "2026-02-17T16:12:21.54Z" }, + { url = "https://files.pythonhosted.org/packages/fc/be/8588164a46edf1e69858d952654e216a9a91174688eeefb9efbb38a9c799/librt-0.8.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:7b02679a0d783bdae30d443025b94465d8c3dc512f32f5b5031f93f57ac32071", size = 215195, upload-time = "2026-02-17T16:12:23.073Z" }, + { url = "https://files.pythonhosted.org/packages/f5/f2/0b9279bea735c734d69344ecfe056c1ba211694a72df10f568745c899c76/librt-0.8.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:190b109bb69592a3401fe1ffdea41a2e73370ace2ffdc4a0e8e2b39cdea81b78", size = 237946, upload-time = "2026-02-17T16:12:24.275Z" }, + { url = "https://files.pythonhosted.org/packages/e9/cc/5f2a34fbc8aeb35314a3641f9956fa9051a947424652fad9882be7a97949/librt-0.8.1-cp314-cp314-win32.whl", hash = "sha256:e70a57ecf89a0f64c24e37f38d3fe217a58169d2fe6ed6d70554964042474023", size = 50689, upload-time = "2026-02-17T16:12:25.766Z" }, + { url = "https://files.pythonhosted.org/packages/a0/76/cd4d010ab2147339ca2b93e959c3686e964edc6de66ddacc935c325883d7/librt-0.8.1-cp314-cp314-win_amd64.whl", hash = "sha256:7e2f3edca35664499fbb36e4770650c4bd4a08abc1f4458eab9df4ec56389730", size = 57875, upload-time = "2026-02-17T16:12:27.465Z" }, + { url = "https://files.pythonhosted.org/packages/84/0f/2143cb3c3ca48bd3379dcd11817163ca50781927c4537345d608b5045998/librt-0.8.1-cp314-cp314-win_arm64.whl", hash = "sha256:0d2f82168e55ddefd27c01c654ce52379c0750ddc31ee86b4b266bcf4d65f2a3", size = 48058, upload-time = "2026-02-17T16:12:28.556Z" }, + { url = "https://files.pythonhosted.org/packages/d2/0e/9b23a87e37baf00311c3efe6b48d6b6c168c29902dfc3f04c338372fd7db/librt-0.8.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2c74a2da57a094bd48d03fa5d196da83d2815678385d2978657499063709abe1", size = 68313, upload-time = "2026-02-17T16:12:29.659Z" }, + { url = "https://files.pythonhosted.org/packages/db/9a/859c41e5a4f1c84200a7d2b92f586aa27133c8243b6cac9926f6e54d01b9/librt-0.8.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a355d99c4c0d8e5b770313b8b247411ed40949ca44e33e46a4789b9293a907ee", size = 70994, upload-time = "2026-02-17T16:12:31.516Z" }, + { url = "https://files.pythonhosted.org/packages/4c/28/10605366ee599ed34223ac2bf66404c6fb59399f47108215d16d5ad751a8/librt-0.8.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:2eb345e8b33fb748227409c9f1233d4df354d6e54091f0e8fc53acdb2ffedeb7", size = 220770, upload-time = "2026-02-17T16:12:33.294Z" }, + { url = "https://files.pythonhosted.org/packages/af/8d/16ed8fd452dafae9c48d17a6bc1ee3e818fd40ef718d149a8eff2c9f4ea2/librt-0.8.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9be2f15e53ce4e83cc08adc29b26fb5978db62ef2a366fbdf716c8a6c8901040", size = 235409, upload-time = "2026-02-17T16:12:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/89/1b/7bdf3e49349c134b25db816e4a3db6b94a47ac69d7d46b1e682c2c4949be/librt-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:785ae29c1f5c6e7c2cde2c7c0e148147f4503da3abc5d44d482068da5322fd9e", size = 246473, upload-time = "2026-02-17T16:12:36.656Z" }, + { url = "https://files.pythonhosted.org/packages/4e/8a/91fab8e4fd2a24930a17188c7af5380eb27b203d72101c9cc000dbdfd95a/librt-0.8.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1d3a7da44baf692f0c6aeb5b2a09c5e6fc7a703bca9ffa337ddd2e2da53f7732", size = 238866, upload-time = "2026-02-17T16:12:37.849Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e0/c45a098843fc7c07e18a7f8a24ca8496aecbf7bdcd54980c6ca1aaa79a8e/librt-0.8.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5fc48998000cbc39ec0d5311312dda93ecf92b39aaf184c5e817d5d440b29624", size = 250248, upload-time = "2026-02-17T16:12:39.445Z" }, + { url = "https://files.pythonhosted.org/packages/82/30/07627de23036640c952cce0c1fe78972e77d7d2f8fd54fa5ef4554ff4a56/librt-0.8.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e96baa6820280077a78244b2e06e416480ed859bbd8e5d641cf5742919d8beb4", size = 240629, upload-time = "2026-02-17T16:12:40.889Z" }, + { url = "https://files.pythonhosted.org/packages/fb/c1/55bfe1ee3542eba055616f9098eaf6eddb966efb0ca0f44eaa4aba327307/librt-0.8.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:31362dbfe297b23590530007062c32c6f6176f6099646bb2c95ab1b00a57c382", size = 239615, upload-time = "2026-02-17T16:12:42.446Z" }, + { url = "https://files.pythonhosted.org/packages/2b/39/191d3d28abc26c9099b19852e6c99f7f6d400b82fa5a4e80291bd3803e19/librt-0.8.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cc3656283d11540ab0ea01978378e73e10002145117055e03722417aeab30994", size = 263001, upload-time = "2026-02-17T16:12:43.627Z" }, + { url = "https://files.pythonhosted.org/packages/b9/eb/7697f60fbe7042ab4e88f4ee6af496b7f222fffb0a4e3593ef1f29f81652/librt-0.8.1-cp314-cp314t-win32.whl", hash = "sha256:738f08021b3142c2918c03692608baed43bc51144c29e35807682f8070ee2a3a", size = 51328, upload-time = "2026-02-17T16:12:45.148Z" }, + { url = "https://files.pythonhosted.org/packages/7c/72/34bf2eb7a15414a23e5e70ecb9440c1d3179f393d9349338a91e2781c0fb/librt-0.8.1-cp314-cp314t-win_amd64.whl", hash = "sha256:89815a22daf9c51884fb5dbe4f1ef65ee6a146e0b6a8df05f753e2e4a9359bf4", size = 58722, upload-time = "2026-02-17T16:12:46.85Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c8/d148e041732d631fc76036f8b30fae4e77b027a1e95b7a84bb522481a940/librt-0.8.1-cp314-cp314t-win_arm64.whl", hash = "sha256:bf512a71a23504ed08103a13c941f763db13fb11177beb3d9244c98c29fb4a61", size = 48755, upload-time = "2026-02-17T16:12:47.943Z" }, +] + [[package]] name = "markdown-it-py" version = "3.0.0" @@ -1414,6 +1501,61 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, ] +[[package]] +name = "mypy" +version = "1.19.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "librt", marker = "platform_python_implementation != 'PyPy'" }, + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/db/4efed9504bc01309ab9c2da7e352cc223569f05478012b5d9ece38fd44d2/mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba", size = 3582404, upload-time = "2025-12-15T05:03:48.42Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/63/e499890d8e39b1ff2df4c0c6ce5d371b6844ee22b8250687a99fd2f657a8/mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec", size = 13101333, upload-time = "2025-12-15T05:03:03.28Z" }, + { url = "https://files.pythonhosted.org/packages/72/4b/095626fc136fba96effc4fd4a82b41d688ab92124f8c4f7564bffe5cf1b0/mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b", size = 12164102, upload-time = "2025-12-15T05:02:33.611Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/952928dd081bf88a83a5ccd49aaecfcd18fd0d2710c7ff07b8fb6f7032b9/mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6", size = 12765799, upload-time = "2025-12-15T05:03:28.44Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0d/93c2e4a287f74ef11a66fb6d49c7a9f05e47b0a4399040e6719b57f500d2/mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74", size = 13522149, upload-time = "2025-12-15T05:02:36.011Z" }, + { url = "https://files.pythonhosted.org/packages/7b/0e/33a294b56aaad2b338d203e3a1d8b453637ac36cb278b45005e0901cf148/mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1", size = 13810105, upload-time = "2025-12-15T05:02:40.327Z" }, + { url = "https://files.pythonhosted.org/packages/0e/fd/3e82603a0cb66b67c5e7abababce6bf1a929ddf67bf445e652684af5c5a0/mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac", size = 10057200, upload-time = "2025-12-15T05:02:51.012Z" }, + { url = "https://files.pythonhosted.org/packages/ef/47/6b3ebabd5474d9cdc170d1342fbf9dddc1b0ec13ec90bf9004ee6f391c31/mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288", size = 13028539, upload-time = "2025-12-15T05:03:44.129Z" }, + { url = "https://files.pythonhosted.org/packages/5c/a6/ac7c7a88a3c9c54334f53a941b765e6ec6c4ebd65d3fe8cdcfbe0d0fd7db/mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab", size = 12083163, upload-time = "2025-12-15T05:03:37.679Z" }, + { url = "https://files.pythonhosted.org/packages/67/af/3afa9cf880aa4a2c803798ac24f1d11ef72a0c8079689fac5cfd815e2830/mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6", size = 12687629, upload-time = "2025-12-15T05:02:31.526Z" }, + { url = "https://files.pythonhosted.org/packages/2d/46/20f8a7114a56484ab268b0ab372461cb3a8f7deed31ea96b83a4e4cfcfca/mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331", size = 13436933, upload-time = "2025-12-15T05:03:15.606Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f8/33b291ea85050a21f15da910002460f1f445f8007adb29230f0adea279cb/mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925", size = 13661754, upload-time = "2025-12-15T05:02:26.731Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a3/47cbd4e85bec4335a9cd80cf67dbc02be21b5d4c9c23ad6b95d6c5196bac/mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042", size = 10055772, upload-time = "2025-12-15T05:03:26.179Z" }, + { url = "https://files.pythonhosted.org/packages/06/8a/19bfae96f6615aa8a0604915512e0289b1fad33d5909bf7244f02935d33a/mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1", size = 13206053, upload-time = "2025-12-15T05:03:46.622Z" }, + { url = "https://files.pythonhosted.org/packages/a5/34/3e63879ab041602154ba2a9f99817bb0c85c4df19a23a1443c8986e4d565/mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e", size = 12219134, upload-time = "2025-12-15T05:03:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/89/cc/2db6f0e95366b630364e09845672dbee0cbf0bbe753a204b29a944967cd9/mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2", size = 12731616, upload-time = "2025-12-15T05:02:44.725Z" }, + { url = "https://files.pythonhosted.org/packages/00/be/dd56c1fd4807bc1eba1cf18b2a850d0de7bacb55e158755eb79f77c41f8e/mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8", size = 13620847, upload-time = "2025-12-15T05:03:39.633Z" }, + { url = "https://files.pythonhosted.org/packages/6d/42/332951aae42b79329f743bf1da088cd75d8d4d9acc18fbcbd84f26c1af4e/mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a", size = 13834976, upload-time = "2025-12-15T05:03:08.786Z" }, + { url = "https://files.pythonhosted.org/packages/6f/63/e7493e5f90e1e085c562bb06e2eb32cae27c5057b9653348d38b47daaecc/mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13", size = 10118104, upload-time = "2025-12-15T05:03:10.834Z" }, + { url = "https://files.pythonhosted.org/packages/de/9f/a6abae693f7a0c697dbb435aac52e958dc8da44e92e08ba88d2e42326176/mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250", size = 13201927, upload-time = "2025-12-15T05:02:29.138Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a4/45c35ccf6e1c65afc23a069f50e2c66f46bd3798cbe0d680c12d12935caa/mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b", size = 12206730, upload-time = "2025-12-15T05:03:01.325Z" }, + { url = "https://files.pythonhosted.org/packages/05/bb/cdcf89678e26b187650512620eec8368fded4cfd99cfcb431e4cdfd19dec/mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e", size = 12724581, upload-time = "2025-12-15T05:03:20.087Z" }, + { url = "https://files.pythonhosted.org/packages/d1/32/dd260d52babf67bad8e6770f8e1102021877ce0edea106e72df5626bb0ec/mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef", size = 13616252, upload-time = "2025-12-15T05:02:49.036Z" }, + { url = "https://files.pythonhosted.org/packages/71/d0/5e60a9d2e3bd48432ae2b454b7ef2b62a960ab51292b1eda2a95edd78198/mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75", size = 13840848, upload-time = "2025-12-15T05:02:55.95Z" }, + { url = "https://files.pythonhosted.org/packages/98/76/d32051fa65ecf6cc8c6610956473abdc9b4c43301107476ac03559507843/mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd", size = 10135510, upload-time = "2025-12-15T05:02:58.438Z" }, + { url = "https://files.pythonhosted.org/packages/de/eb/b83e75f4c820c4247a58580ef86fcd35165028f191e7e1ba57128c52782d/mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1", size = 13199744, upload-time = "2025-12-15T05:03:30.823Z" }, + { url = "https://files.pythonhosted.org/packages/94/28/52785ab7bfa165f87fcbb61547a93f98bb20e7f82f90f165a1f69bce7b3d/mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718", size = 12215815, upload-time = "2025-12-15T05:02:42.323Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c6/bdd60774a0dbfb05122e3e925f2e9e846c009e479dcec4821dad881f5b52/mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b", size = 12740047, upload-time = "2025-12-15T05:03:33.168Z" }, + { url = "https://files.pythonhosted.org/packages/32/2a/66ba933fe6c76bd40d1fe916a83f04fed253152f451a877520b3c4a5e41e/mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045", size = 13601998, upload-time = "2025-12-15T05:03:13.056Z" }, + { url = "https://files.pythonhosted.org/packages/e3/da/5055c63e377c5c2418760411fd6a63ee2b96cf95397259038756c042574f/mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957", size = 13807476, upload-time = "2025-12-15T05:03:17.977Z" }, + { url = "https://files.pythonhosted.org/packages/cd/09/4ebd873390a063176f06b0dbf1f7783dd87bd120eae7727fa4ae4179b685/mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f", size = 10281872, upload-time = "2025-12-15T05:03:05.549Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f4/4ce9a05ce5ded1de3ec1c1d96cf9f9504a04e54ce0ed55cfa38619a32b8d/mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247", size = 2471239, upload-time = "2025-12-15T05:03:07.248Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + [[package]] name = "nest-asyncio" version = "1.6.0" @@ -1763,6 +1905,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl", hash = "sha256:2c549f800b70a5c4952197248825584cb00f033b29c692671d3bf08bf380baff", size = 106894, upload-time = "2026-02-09T15:45:21.391Z" }, ] +[[package]] +name = "pathspec" +version = "1.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fa/36/e27608899f9b8d4dff0617b2d9ab17ca5608956ca44461ac14ac48b44015/pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645", size = 131200, upload-time = "2026-01-27T03:59:46.938Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723", size = 55206, upload-time = "2026-01-27T03:59:45.137Z" }, +] + [[package]] name = "pexpect" version = "4.9.0" From 820681757e333202c4f209dc7c5d73756df824e5 Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Tue, 17 Mar 2026 12:11:10 +0200 Subject: [PATCH 11/16] Fix typing, mypy and linter issues --- .vscode/settings.json | 2 +- src/gridfinity_build123d/baseplate.py | 4 +-- src/gridfinity_build123d/feature_locations.py | 2 +- src/gridfinity_build123d/features.py | 34 ++++++++++++------- src/gridfinity_build123d/utils.py | 2 +- tests/test_unit_base.py | 10 +++--- tests/test_unit_bin.py | 6 ++-- tests/test_unit_compartments.py | 12 +++---- tests/test_unit_feature_locations.py | 14 ++++---- tests/test_unit_features.py | 20 +++++------ 10 files changed, 58 insertions(+), 48 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index cf8d11e..b0cb1d8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,5 +13,5 @@ }, "editor.formatOnSave": true, "mypy.runUsingActiveInterpreter": true, - "restructuredtext.preview.name": "docutils", + "restructuredtext.preview.name": "docutils" } diff --git a/src/gridfinity_build123d/baseplate.py b/src/gridfinity_build123d/baseplate.py index be66240..2df5f24 100644 --- a/src/gridfinity_build123d/baseplate.py +++ b/src/gridfinity_build123d/baseplate.py @@ -222,8 +222,8 @@ def __init__( def edge_filter(shape: Shape[Edge]) -> bool: inner_edge = shape.edge() if not inner_edge: # pragma: no cover - msg = "Edge is empty" - raise RuntimeError(msg) + m = "Edge is empty" + raise RuntimeError(m) return isclose(inner_edge.length, z_height) diff --git a/src/gridfinity_build123d/feature_locations.py b/src/gridfinity_build123d/feature_locations.py index 20be3fd..4d8cb5e 100644 --- a/src/gridfinity_build123d/feature_locations.py +++ b/src/gridfinity_build123d/feature_locations.py @@ -211,8 +211,8 @@ def apply_to(self, part: Part) -> Iterator[None]: # noqa: D102 with Locations(face), Locations(pts), Locations((0, self._offset, 0)): yield + @staticmethod def _get_locations_on_edges( - self, edge_filter: ShapePredicate | Axis | Plane | GeomType, face: Face, nr_of_points: int, diff --git a/src/gridfinity_build123d/features.py b/src/gridfinity_build123d/features.py index 32559a8..c44db9d 100644 --- a/src/gridfinity_build123d/features.py +++ b/src/gridfinity_build123d/features.py @@ -3,9 +3,11 @@ from __future__ import annotations from abc import ABC, abstractmethod -from typing import TYPE_CHECKING, ClassVar, override +from typing import TYPE_CHECKING, ClassVar, Literal, override -from bd_warehouse.thread import Thread # pyright: ignore[reportMissingTypeStubs] +from bd_warehouse.thread import ( # type: ignore[import-untyped] + Thread, # pyright: ignore[reportMissingTypeStubs] +) from build123d import ( Align, Axis, @@ -35,18 +37,22 @@ SagittaArc, Transition, add, # pyright: ignore[reportUnknownVariableType] - chamfer, extrude, fillet, make_face, mirror, sweep, ) +from build123d import ( + chamfer as chamfer_op, +) from .constants import gf_bin, gridfinity_standard from .utils import Direction, ObjectCreate if TYPE_CHECKING: + from collections.abc import Sequence + from .feature_locations import FeatureLocation @@ -401,6 +407,7 @@ def create_obj( root_width = 1.21 pitch = root_width + 0.29 length = 4 + end_finishes: tuple[Literal["chamfer"], Literal["chamfer"]] = ("chamfer", "chamfer") with BuildPart() as part: _ = Cylinder( @@ -416,7 +423,7 @@ def create_obj( pitch, length, apex_offset=0, - end_finishes=("chamfer", "chamfer"), + end_finishes=end_finishes, align=(Align.CENTER, Align.CENTER, Align.MAX), ) @@ -648,6 +655,7 @@ def _normalize_directions(direction: Direction | list[Direction] | None) -> list Direction.RIGHT, ) + raw_directions: Sequence[Direction] if direction is None: raw_directions = allowed_directions elif isinstance(direction, Direction): @@ -674,10 +682,11 @@ def _create_cylinder_tool(self, length: float) -> Part: _ = Circle(self.radius) _ = extrude(amount=length) - if not cyl_tool.part: # pragma: no cover + part = cyl_tool.part + if not isinstance(part, Part): # pragma: no cover msg = "Part is empty" - raise RuntimeError(msg) - return cyl_tool.part + raise TypeError(msg) + return part def _create_cutter_tool(self, length: float) -> Part: """Create a cutter by subtracting a cylinder from a box, creating a quarter-round shape.""" @@ -687,10 +696,11 @@ def _create_cutter_tool(self, length: float) -> Part: cylinder = self._create_cylinder_tool(length=length) _ = add(cylinder, mode=Mode.SUBTRACT) - if not cutter.part: # pragma: no cover + part = cutter.part + if not isinstance(part, Part): # pragma: no cover msg = "Part is empty" - raise RuntimeError(msg) - return cutter.part + raise TypeError(msg) + return part def _get_cutter_tool_location( self, @@ -737,7 +747,7 @@ def apply(self, context: BuildPart) -> None: cutter_rotation = self._get_cutter_tool_rotation(direction) with Locations(cutter_location), Locations(cutter_rotation): _ = add(cutter, mode=Mode.SUBTRACT) - except ValueError as exp: + except ValueError as exp: # pragma: no cover msg = "Baseplate bottom side round could not be created, Parent object too small" raise ValueError(msg) from exp @@ -768,7 +778,7 @@ def apply(self, context: BuildPart) -> None: face_top = context.faces().sort_by(Axis.Z)[-1] edge_top_back = face_top.edges().sort_by(Axis.Y)[-1] try: - _ = chamfer( + _ = chamfer_op( edge_top_back, length=gf_bin.label.width, angle=self.angle, diff --git a/src/gridfinity_build123d/utils.py b/src/gridfinity_build123d/utils.py index c3c4c58..437a2d6 100644 --- a/src/gridfinity_build123d/utils.py +++ b/src/gridfinity_build123d/utils.py @@ -448,7 +448,7 @@ def create_profile_block( with BuildSketch() as rect: if profile_type == StackProfile.ProfileType.BIN: - e = gridfinity_standard.grid.tollerance + e = gridfinity_standard.grid.tolerance else: e = 0.0 diff --git a/tests/test_unit_base.py b/tests/test_unit_base.py index a9d0c5f..9ccc980 100644 --- a/tests/test_unit_base.py +++ b/tests/test_unit_base.py @@ -25,7 +25,7 @@ def test_base(self, base_mock: MagicMock, platform_mock: MagicMock) -> None: bbox = part.part.bounding_box() self.assertEqual(Vector(20, 20, 10), bbox.size) - self.assertAlmostEqual(20 * 20 * 5 + 10 * 10 * 5, part.part.volume) + self.assertAlmostEqual(20 * 20 * 5 + 10 * 10 * 5.0, part.part.volume) def test_base_1_2(self, base_mock: MagicMock, platform_mock: MagicMock) -> None: mock_box = mocks.BoxAsMock(20, 20, 5) @@ -40,7 +40,7 @@ def test_base_1_2(self, base_mock: MagicMock, platform_mock: MagicMock) -> None: bbox = part.part.bounding_box() self.assertEqual(Vector(20, 62, 10), bbox.size) - self.assertAlmostEqual(20 * 20 * 5 * 2 + 10 * 10 * 5, part.part.volume) + self.assertAlmostEqual(20 * 20 * 5 * 2 + 10 * 10 * 5.0, part.part.volume) def test_base_2_1(self, base_mock: MagicMock, platform_mock: MagicMock) -> None: mock_box = mocks.BoxAsMock(20, 20, 5) @@ -55,7 +55,7 @@ def test_base_2_1(self, base_mock: MagicMock, platform_mock: MagicMock) -> None: bbox = part.part.bounding_box() self.assertEqual(Vector(62, 20, 10), bbox.size) - self.assertAlmostEqual(20 * 20 * 5 * 2 + 10 * 10 * 5, part.part.volume) + self.assertAlmostEqual(20 * 20 * 5 * 2 + 10 * 10 * 5.0, part.part.volume) def test_base_2_2(self, base_mock: MagicMock, platform_mock: MagicMock) -> None: mock_box = mocks.BoxAsMock(20, 20, 5) @@ -70,7 +70,7 @@ def test_base_2_2(self, base_mock: MagicMock, platform_mock: MagicMock) -> None: bbox = part.part.bounding_box() self.assertEqual(Vector(62, 62, 10), bbox.size) - self.assertAlmostEqual(20 * 20 * 5 * 4 + 10 * 10 * 5, part.part.volume) + self.assertAlmostEqual(20 * 20 * 5 * 4 + 10 * 10 * 5.0, part.part.volume) def test_base_magnet_screw(self, base_mock: MagicMock, platform_mock: MagicMock) -> None: mock_box = mocks.BoxAsMock(20, 20, 5) @@ -87,7 +87,7 @@ def test_base_magnet_screw(self, base_mock: MagicMock, platform_mock: MagicMock) bbox = part.part.bounding_box() self.assertEqual(Vector(20, 20, 10), bbox.size) - self.assertAlmostEqual(20 * 20 * 5 + 10 * 10 * 5, part.part.volume) + self.assertAlmostEqual(20 * 20 * 5 + 10 * 10 * 5.0, part.part.volume) @patch("gridfinity_build123d.base.Base.__init__") diff --git a/tests/test_unit_bin.py b/tests/test_unit_bin.py index cce8fea..fbdaaf8 100644 --- a/tests/test_unit_bin.py +++ b/tests/test_unit_bin.py @@ -43,7 +43,7 @@ def test_bin(self) -> None: bbox = part.part.bounding_box() self.assertEqual(Vector(10, 10, 21), bbox.size) - self.assertAlmostEqual(2100, part.part.volume) + self.assertAlmostEqual(2100.0, part.part.volume) def test_bin_height_in_units(self) -> None: base = Box(10, 10, 1) @@ -62,7 +62,7 @@ def test_bin_height_in_units(self) -> None: bbox = part.part.bounding_box() self.assertEqual(Vector(10, 10, 28), bbox.size) - self.assertAlmostEqual(2800, part.part.volume) + self.assertAlmostEqual(2800.0, part.part.volume) def test_bin_lip(self) -> None: base = Box(10, 10, 1) @@ -84,7 +84,7 @@ def test_bin_lip(self) -> None: bbox = part.part.bounding_box() self.assertEqual(Vector(10, 10, 21), bbox.size) - self.assertAlmostEqual(2100, part.part.volume) + self.assertAlmostEqual(2100.0, part.part.volume) def test_bin_height_and_height_in_units(self) -> None: self.assertRaises( diff --git a/tests/test_unit_compartments.py b/tests/test_unit_compartments.py index c594538..71815ea 100644 --- a/tests/test_unit_compartments.py +++ b/tests/test_unit_compartments.py @@ -39,7 +39,7 @@ def test_compartments_default_grid(self) -> None: comp_mock.create.assert_called_once_with(size_x=94.0, size_y=94.0, height=50) bbox = part.part.bounding_box() self.assertEqual(Vector(10, 10, 10), bbox.size) - self.assertAlmostEqual(1000, part.part.volume) + self.assertAlmostEqual(1000.0, part.part.volume) @patch("gridfinity_build123d.compartments.Compartment", autospec=True) def test_compartments_default_compartment(self, comp_mock: MagicMock) -> None: @@ -64,7 +64,7 @@ def test_compartments_default_compartment(self, comp_mock: MagicMock) -> None: ) bbox = part.part.bounding_box() self.assertEqual(Vector(10, 10, 10), bbox.size) - self.assertAlmostEqual(1000, part.part.volume) + self.assertAlmostEqual(1000.0, part.part.volume) def test_compartments_one_compartment(self) -> None: comp_mock = MagicMock(spec=Compartment) @@ -89,7 +89,7 @@ def test_compartments_one_compartment(self) -> None: comp_mock.create.assert_called_once_with(size_x=94.0, size_y=94.0, height=50) bbox = part.part.bounding_box() self.assertEqual(Vector(10, 10, 10), bbox.size) - self.assertAlmostEqual(1000, part.part.volume) + self.assertAlmostEqual(1000.0, part.part.volume) def test_compartments_one_row(self) -> None: comp_mock = MagicMock(spec=Compartment) @@ -121,7 +121,7 @@ def test_compartments_one_row(self) -> None: bbox = part.part.bounding_box() self.assertEqual(Vector(73.33333333333334, 10, 10), bbox.size) - self.assertAlmostEqual(3000, part.part.volume) + self.assertAlmostEqual(3000.0, part.part.volume) def test_compartments_multirow(self) -> None: comp_mock = MagicMock(spec=Compartment) @@ -153,7 +153,7 @@ def test_compartments_multirow(self) -> None: ) bbox = part.part.bounding_box() self.assertEqual(Vector(69.375, 57.5, 10), bbox.size) - self.assertAlmostEqual(4000, part.part.volume) + self.assertAlmostEqual(4000.0, part.part.volume) def test_compartments_multiple_types(self) -> None: comp_mock_1 = MagicMock(spec=Compartment) @@ -183,7 +183,7 @@ def test_compartments_multiple_types(self) -> None: bbox = part.part.bounding_box() self.assertEqual(Vector(57.5, 10.0, 10.0), bbox.size) - self.assertAlmostEqual(2000, part.part.volume) + self.assertAlmostEqual(2000.0, part.part.volume) @patch("gridfinity_build123d.compartments.Compartments.__init__", spec=Compartments) diff --git a/tests/test_unit_feature_locations.py b/tests/test_unit_feature_locations.py index 5f19f40..5077689 100644 --- a/tests/test_unit_feature_locations.py +++ b/tests/test_unit_feature_locations.py @@ -30,7 +30,7 @@ def test_topmiddle(self) -> None: bbox = part.part.bounding_box() self.assertVectorAlmostEqual((50, 50, 30), bbox.size) - self.assertAlmostEqual(50 * 50 * 30 - 1, part.part.volume) + self.assertAlmostEqual(50 * 50 * 30 - 1.0, part.part.volume) class BottomMiddleTest(testutils.UtilTestCase): @@ -52,7 +52,7 @@ def test_bottommiddle(self) -> None: bbox = part.part.bounding_box() self.assertVectorAlmostEqual((50, 50, 30), bbox.size) - self.assertAlmostEqual(50 * 50 * 30 - 1, part.part.volume) + self.assertAlmostEqual(50 * 50 * 30 - 1.0, part.part.volume) class BottomCornersTest(testutils.UtilTestCase): @@ -84,7 +84,7 @@ def test_bottomcorners(self) -> None: bbox = part.part.bounding_box() self.assertVectorAlmostEqual((50, 50, 30), bbox.size) - self.assertAlmostEqual(50 * 50 * 30 - 4, part.part.volume) + self.assertAlmostEqual(50 * 50 * 30 - 4.0, part.part.volume) class TopCornersTest(testutils.UtilTestCase): @@ -116,7 +116,7 @@ def test_topcorners(self) -> None: bbox = part.part.bounding_box() self.assertVectorAlmostEqual((50, 50, 30), bbox.size) - self.assertAlmostEqual(50 * 50 * 30 - 4, part.part.volume) + self.assertAlmostEqual(50 * 50 * 30 - 4.0, part.part.volume) class BottomSidesTest(testutils.UtilTestCase): @@ -150,7 +150,7 @@ def test_bottomsides(self) -> None: bbox = part.part.bounding_box() self.assertVectorAlmostEqual((50, 50, 30), bbox.size) - self.assertAlmostEqual(50 * 50 * 30 - 4 * 3 * 2, part.part.volume) + self.assertAlmostEqual(50 * 50 * 30 - 4 * 3 * 2.0, part.part.volume) def test_bottomsides_offset(self) -> None: with BuildPart() as part: @@ -182,7 +182,7 @@ def test_bottomsides_offset(self) -> None: bbox = part.part.bounding_box() self.assertVectorAlmostEqual((50, 50, 30), bbox.size) - self.assertAlmostEqual(50 * 50 * 30 - 4 * 3 * 2, part.part.volume) + self.assertAlmostEqual(50 * 50 * 30 - 4 * 3 * 2.0, part.part.volume) def test_bottomsides_multi_side(self) -> None: with BuildPart() as part: @@ -220,4 +220,4 @@ def test_bottomsides_multi_side(self) -> None: bbox = part.part.bounding_box() self.assertVectorAlmostEqual((50, 50, 30), bbox.size) - self.assertAlmostEqual(50 * 50 * 30 - 10 * 3 * 2, part.part.volume) + self.assertAlmostEqual(50 * 50 * 30 - 10 * 3 * 2.0, part.part.volume) diff --git a/tests/test_unit_features.py b/tests/test_unit_features.py index 7a0fda9..e9fe89e 100644 --- a/tests/test_unit_features.py +++ b/tests/test_unit_features.py @@ -77,11 +77,11 @@ def create_obj( bbox = part.part.bounding_box() self.assertVectorAlmostEqual((1, 1, 1), bbox.size) - self.assertAlmostEqual(1, part.part.volume) + self.assertAlmostEqual(1.0, part.part.volume) class HoleFeatureTest(testutils.UtilTestCase): - @parameterized.expand([[1, 2], [3, 4], [10, 2]]) # type: ignore[misc] + @parameterized.expand([[1, 2], [3, 4], [10, 2]]) # type: ignore[untyped-decorator] def test_hole_feature(self, radius: float, depth: float) -> None: f_loc = MagicMock(spec=FeatureLocation) part = HoleFeature(f_loc, radius, depth).create_obj() @@ -231,7 +231,7 @@ def test_gridfinityrefinedconnectioncutout(self) -> None: bbox = part.bounding_box() self.assertVectorAlmostEqual((14, 9, 3), bbox.size) - self.assertAlmostEqual(270, part.volume) + self.assertAlmostEqual(270.0, part.volume) class GridfinityRefinedScrewHoleTest(testutils.UtilTestCase): @@ -364,7 +364,7 @@ def test_apply_direction(self) -> None: self.assertVectorAlmostEqual((30, 30, 10), side_part.part.bounding_box().size) self.assertLess(full_part.part.volume, side_part.part.volume) - @parameterized.expand( # type: ignore[misc] + @parameterized.expand( # type: ignore[untyped-decorator] [ (Direction.FRONT, Axis.Y, 0, -1), (Direction.BACK, Axis.Y, -1, 0), @@ -468,10 +468,10 @@ def test_scoop(self) -> None: Scoop().apply(part) bot_face = part.faces().filter_by(Axis.Z).sort_by(Axis.Z)[0] - self.assertAlmostEqual(50 - 5, bot_face.width) + self.assertAlmostEqual(50 - 5.0, bot_face.width) front_face = part.faces().filter_by(Axis.Y).sort_by(Axis.Y)[0] - self.assertAlmostEqual(50 - 5, front_face.length) + self.assertAlmostEqual(50 - 5.0, front_face.length) bbox = part.part.bounding_box() self.assertVectorAlmostEqual((50, 50, 50), bbox.size) @@ -483,10 +483,10 @@ def test_scoop_radius(self) -> None: Scoop(20).apply(part) bot_face = part.faces().filter_by(Axis.Z).sort_by(Axis.Z)[0] - self.assertAlmostEqual(50 - 20, bot_face.width) + self.assertAlmostEqual(50 - 20.0, bot_face.width) front_face = part.faces().filter_by(Axis.Y).sort_by(Axis.Y)[0] - self.assertAlmostEqual(50 - 20, front_face.length) + self.assertAlmostEqual(50 - 20.0, front_face.length) bbox = part.part.bounding_box() self.assertVectorAlmostEqual((50, 50, 50), bbox.size) @@ -503,10 +503,10 @@ def test_scoop_wall_correction(self) -> None: Scoop(wall_correction=10).apply(part) bot_face = part.faces().filter_by(Axis.Z).sort_by(Axis.Z)[0] - self.assertAlmostEqual(50 - 5 - 10, bot_face.width) + self.assertAlmostEqual(50 - 5 - 10.0, bot_face.width) front_face = part.faces().filter_by(Axis.Y).sort_by(Axis.Y)[0] - self.assertAlmostEqual(50 - 5, front_face.length) + self.assertAlmostEqual(50 - 5.0, front_face.length) bbox = part.part.bounding_box() self.assertVectorAlmostEqual((50, 50 - 10, 50), bbox.size) From ee1e721fd16f4896070079d7469540c89a9be5ec Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Tue, 17 Mar 2026 18:24:35 +0200 Subject: [PATCH 12/16] Improve readability of `Utils.create_profile_block` No changes to code --- src/gridfinity_build123d/base.py | 8 +-- src/gridfinity_build123d/baseplate.py | 8 +-- src/gridfinity_build123d/utils.py | 74 +++++++++++++-------------- 3 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/gridfinity_build123d/base.py b/src/gridfinity_build123d/base.py index 3a3e2fc..b301cbb 100644 --- a/src/gridfinity_build123d/base.py +++ b/src/gridfinity_build123d/base.py @@ -145,20 +145,20 @@ def __init__( features = features if isinstance(features, Iterable) else [features] - with BuildPart() as baseblock: + with BuildPart() as base_block: _ = Utils.create_profile_block( StackProfile.ProfileType.BIN, gridfinity_standard.stacking_lip.offset, ) for feature in features: - feature.apply(baseblock) + feature.apply(base_block) - if not baseblock.part: # pragma: no cover + if not base_block.part: # pragma: no cover msg = "Part is empty" raise RuntimeError(msg) - super().__init__(baseblock.part, rotation, align, mode) + super().__init__(base_block.part, rotation, align, mode) class BaseBlockPlatform(BasePartObject): diff --git a/src/gridfinity_build123d/baseplate.py b/src/gridfinity_build123d/baseplate.py index 2df5f24..9023d35 100644 --- a/src/gridfinity_build123d/baseplate.py +++ b/src/gridfinity_build123d/baseplate.py @@ -67,13 +67,14 @@ def create_obj( mode: Mode = Mode.ADD, ) -> BasePartObject: """Overwrites BasePlateBlock.create_obj.""" - with BuildPart() as block: + with BuildPart() as base_block: _ = Utils.create_profile_block(StackProfile.ProfileType.PLATE) - if not block.part: # pragma: no cover + if not base_block.part: # pragma: no cover msg = "block is empty" raise RuntimeError(msg) + # Invert the base_block to create a baseplate frame with BuildPart() as part: _ = Box( 42, @@ -81,8 +82,7 @@ def create_obj( block.part.bounding_box().size.Z, align=(Align.CENTER, Align.CENTER, Align.MIN), ) - _ = add(block.part, mode=Mode.SUBTRACT) - + _ = add(base_block.part, mode=Mode.SUBTRACT) for feature in self.features: feature.apply(part) diff --git a/src/gridfinity_build123d/utils.py b/src/gridfinity_build123d/utils.py index 437a2d6..b895b0b 100644 --- a/src/gridfinity_build123d/utils.py +++ b/src/gridfinity_build123d/utils.py @@ -432,20 +432,13 @@ def create_profile_block( with BuildPart() as part: with ( BuildSketch(Plane.XZ) as profile, - Locations( - ( - gridfinity_standard.grid.size / 2 - offset_value, - 0, - ), - ), + Locations((gridfinity_standard.grid.size / 2 - offset_value, 0)), ): _ = StackProfile(profile_type, align=(Align.MAX, Align.MIN)) if offset_value: - _ = offset( - amount=offset_value, - kind=Kind.INTERSECTION, - ) + _ = offset(amount=offset_value, kind=Kind.INTERSECTION) + # 2D Rectangle with BuildSketch() as rect: if profile_type == StackProfile.ProfileType.BIN: e = gridfinity_standard.grid.tolerance @@ -457,15 +450,23 @@ def create_profile_block( gridfinity_standard.grid.size - e, gridfinity_standard.grid.radius - e * 0.5, ) + + # Create a 3d Rectangle from the 2D Rectangle sketch _ = extrude(to_extrude=rect.face(), amount=profile.sketch.bounding_box().max.Z) - path = part.wires().sort_by(Axis.Z)[-1] - _ = sweep(sections=profile.sketch, path=path, mode=Mode.SUBTRACT) + top_outer_edge_path = part.wires().sort_by(Axis.Z)[-1] + + # Subtract the profile from the 3D rectangle to create the stacking lip + _ = sweep(sections=profile.sketch, path=top_outer_edge_path, mode=Mode.SUBTRACT) if not part.part: # pragma: no cover msg = "Part is empty" raise RuntimeError(msg) + # Resulting part is a profile base block (male) + # │ ________________ + # │ \ / + # │ |____________| return BasePartObject(part.part, rotation, align, mode) @@ -496,35 +497,34 @@ def __init__( object. Defaults to None. mode (Mode, optional): Combination mode. Defaults to Mode.ADD. """ - match stack_type: - case StackProfile.ProfileType.BIN: - height_3 = gridfinity_standard.stacking_lip.height_3_bin - case StackProfile.ProfileType.PLATE: - height_3 = gridfinity_standard.stacking_lip.height_3_base_plate + h1 = gridfinity_standard.stacking_lip.height_1 + h2 = gridfinity_standard.stacking_lip.height_2 + if stack_type == StackProfile.ProfileType.BIN: + h3 = gridfinity_standard.stacking_lip.height_3_bin + else: + h3 = gridfinity_standard.stacking_lip.height_3_base_plate with BuildSketch() as profile: with BuildLine(): + # | Drawn Profile shape + # | + # | •D h1+h2+h3 + # | / | + # | / | + # | / | + # | C• | h1+h2 + # | | | + # | | | + # | B• | h1 + # | / | + # | A•-------•E + # | 0 h1 h1+h3 _ = Polyline( - (0, 0), - ( - gridfinity_standard.stacking_lip.height_1, - gridfinity_standard.stacking_lip.height_1, - ), - ( - gridfinity_standard.stacking_lip.height_1, - gridfinity_standard.stacking_lip.height_1 - + gridfinity_standard.stacking_lip.height_2, - ), - ( - gridfinity_standard.stacking_lip.height_1 + height_3, - gridfinity_standard.stacking_lip.height_1 - + gridfinity_standard.stacking_lip.height_2 - + height_3, - ), - ( - gridfinity_standard.stacking_lip.height_1 + height_3, - 0, - ), + (0, 0), # A + (h1, h1), # B + (h1, h1 + h2), # C + (h1 + h3, h1 + h2 + h3), # D + (h1 + h3, 0), # E close=True, ) _ = make_face() From cbf6abebf71bc83566e19beebbb661459d490314 Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Tue, 17 Mar 2026 18:33:18 +0200 Subject: [PATCH 13/16] Fix baseplate non-manifold edges This fixes the top inside corners of the baseplate having a corner, which doesn't look rounded --- docs/assets/base_plate.png | Bin 23422 -> 23518 bytes docs/assets/base_plate_equal.png | Bin 28510 -> 27300 bytes docs/assets/base_plate_full.png | Bin 29183 -> 28054 bytes docs/assets/baseplate.gif | Bin 136823 -> 133665 bytes src/gridfinity_build123d/baseplate.py | 7 ++++--- tests/test_int_baseplate.py | 12 ++++++------ tests/test_int_refined.py | 6 +++--- tests/test_unit_base_plate.py | 24 ++++++++++++------------ 8 files changed, 25 insertions(+), 24 deletions(-) diff --git a/docs/assets/base_plate.png b/docs/assets/base_plate.png index 8c3537e55e70a8f2426d6ab4ff682ae05c76a633..0412b0ed15aab84160468b696bd277d0c0202322 100644 GIT binary patch literal 23518 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 literal 23422 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 diff --git a/docs/assets/base_plate_full.png b/docs/assets/base_plate_full.png index 216e9572696bedf06025bc6e5dd7e0b5578d1dbd..104dbb353cb426762c8715aeca7d7fa24cb388e0 100644 GIT binary patch literal 28054 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 literal 29183 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 XS3Up9G@MI=n8TSGTNq^;oV@a1IX06= diff --git a/docs/assets/baseplate.gif b/docs/assets/baseplate.gif index 8193ae45007687f24ab09c65a82ce0e241b24055..1158cf7fc92888bee2e93712ffc594b93c4b6911 100644 GIT binary patch literal 133665 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

5Pir%l4RVxFf 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

  • g1JKoJHnx;kd?N!M||tlYV{*&;bQ8H zgO!gw9q)EXVx3OyI$A4H=W2Hms1ht>rv9uBx7s6p(_;l}@eXJ^iIBlh@qot%L+tc0 z=}#1*Hbx4s#=zI?9u=`o4V1)*8EC~I#K$JK^n~Wt5cmvXhT8>K+52I%ms(q(4ye=8 zp83-Q2g{OA491tuvyf8>iW9#ZlcpEavyuM|f`)hiKg5HahG!mK0Fj(S^1N8)Eg$p} z3LO%tDj%$R4ynN%I6~b&Zei<)BKv|Z=Z})A&pn`|F+{x3CV?*^01D0hiqso^Q(-?b z@OHo_S=aAk`&xmlo!QCeIqTXIN`&W#+X6^x=*lw3e+kRnOyYbF?e&!tDH1LnvizJ zt;V-2)7G^)REbBL)|#J4c*Q9T)Y@AR@T24n)E=PljG>Yq`yR#MMZQ#iIwie}g6+#@ya~XL`jGEraUlzWf&lq=h_e4&M%kT&J z#de<6oJw29-H@DcP#2Ck@mUXJh@(1}{pV#SvF)m+sDILMqyr(M_V z9B4&ayWt+8%<4tlU8lXk3K?Hu*oYIQgsW*>b)E3{0%cjOO>Qhoa~VjZ&hgBe*%c<9 z4kTA?$PuiJWNp;yZ|r3y9#o+oPfi*Fiz<0GtPtmSy*AkEmMnQpgLSt3o>8B>jP+4B zJiYJ+33doDwl||nY87POXQRHnG+gB6WbLv?q2XswtASTV zMdEpk^pNuIkXv`9RqfHu?$Hrq#&2vdTNU0*>;tmVp)R+*Wwvp7(YXm_WHql*z9 zpjPfpY@l0A9r4#K=TjewQXR8=LwAzJTXdW^1My;b5KeIK9v8tKPdhI;$ev_I)w}y1 z8)jofbc?bxr1NLvVW;ei$o^Or%}I&=AzSw&lNVinYs8lq&{1*VCW{`#i&vk0BA<6! zbdJXN;fT?@HGvL&>TMz-@(1-d%yv3qYSgoCZ#?j*qhY%9-xB8(u4faQn4@$;WO-ZP zCo`LY151P#UlopPx*f+W_x0i~)(Fw!wd-FHet=-k19&ghtjqJe4-E4z85U6QC1CNE z8_toh)*g0e=q~95E}P=~hpMq&ve)hb)dB%EmzNC?eAicwr_EVE=B$s#yiQ#&v5<*Y zQT1hh|8_>ZD#F~JG>N(?_>Bfjh^)8ZWE1Evf5RU75@VlqPe$J!oqH%ddHe4|n)JN4zmt9{P9CP_6CQ4&u)ZjW_4OEi{gpiU!Lw z2BHVGnEMCxrp)om2fU*V-YXirpFp*T`n>DXZ#d>X531x{VI{XRIR{(ZcQ8F@@05hh z;*mi2UbqIwBZl|Gp|_ojrBnJfc+>-RUUO(pE0Nlz6!sDsVTUpn~(U)-yFDpWQBE!CnR?k-i_q2YlRnuEluNRbbuSo*0%ilZDQF^$hZ!27{ z8ZOa7k85>u9I}b*Be$P2^xx?9{Ea|7hbpv>U006*8BYt=r-&Z`Yaj^msUd9G-@8}d zN*U!+6|cu~fHmD`W4@>IX*5-SFDrU}uw9{@UO#*!Lj2f2EQ2!GiZZ z#o#Flg+et%!+V~>xk#qoXfhr%L-j&4NYDoc6T|7tdWdYMq54?k52!Y%5(-=8EM4klcGzRR=?C|}A-gA)hPB*8o~ zWWKo8CGt>hXSY+hJvbKhxNLm;eK596FD8o6-7$W#cMMvFr@KFbsO_!U5t^ZaJg)fI z^m;uX-SJB=-CO`s%HD$CpYGtg9Ez{9OlY49eM|s?bez5m-UO{qB*%7sMg-RdqHZYF z_zN-x!Sr}lBL*oAq8KjI!VEP@jPj@`sg|JPR|3lZsm9HGO@5iMp(9Ken^q-o|g&VjxjR{63s=%Of7{v&dUkV$IlN5fD{Bj zaBxdBNHJZaaWmJmLPj+zh9OkV&P9j^+VwB}+>e6c&6`i818<^XSq%LOt)LQeUTLW? z=e=<&rPe?dH;iL*m_(wg<<#^!7mO#4g+~m!SuM*zL`B2oovJI!#Nj;vm!|GW)-tkL z!Zak?pk2VMb|V@E&?BrS6_|%NS+yfV31)QMFb&u^`Et(1RhRI+8n>K}7t59I!N}CL zeTvS0(yrfGMU4gMP_gGp>_@Thh3H$%vHC?7TFV)pK|j&bwp6wrM7-k1E9vl%UhRhf zgHrb5O=M3D6X_4`w381TG@8GCCrmZY%e&A3LaWG5t%1V5Db=%#2szE&L21p3-I)oO zaYE%J)ylhZMKJ4mRaWNoY6MA3?&m(cckQdS+Yc&M>BR*T&4=tm3YTmbZvg9_!Q>2) zwNgwf9><`CS4kU}UmbS6kUg`^X9(l%;{!oZYhQ=iLg4IkNbs63#&$ck2PQi9xbIbX zLMZE6#0_01=ddS!S}&*!cR4I&7$YuCC?Rj~$GuKOzsD^&FTT&^qQq0)+MWL5--=Ue#O#zrU~x z=0jiW+>h(QuoL@Zx*Q_4@Kj+%m4NOTsx3*XBFNn ziXDc)3hgEC=I8~3K=B2~*9+m<&_is&ZpKj+@wkvOz_Gz$C*zERlu!JGS;Y=cQ_mkk z@2HKPa-R?vCmrch7`it0Bs?w55T(KmhNpHiL_4GqO^zD=>w_s5)ZT0y7`F!c^U83b zbX~ZNfRSzX@7^bs4phG!=|5Is}-{>-*)k&RvWx! z(PM|TNf7&21-w|9V~D9JsQuCgU!!jIJFeW7?o-j~y zO6&Zbi*(fw=U!ax53GkOyude;9flxCa274Ls60kgH&?K_S1#a#HkQGr63${>l&Xm< zq}OPZW#e4b3u2_=ByCR#Y)36rg|^6?ieHTS9be82cczjwFd&iaR3Z7}RB@hDEq>)o zI>X@!=OOG;lc-91k0mL;8WnasmTKkKwhFBdGnszY!a|VuVmYAeS*Rwsu`XrP#NgMe z!i4G-PwCs4mYL)%r1Mf^$ATqkh3lFZ>ru7%rj)$UsODPyK}}Or=y%0eRW_F=DqsE6V9pU8c3{Qet*^vwtvzOqWg|E3@K2mVR@Fz@@n zp&#h}p?;wFJN-a{^0)e7_FX?@AX@&n)DNCJkobS4A0`Ab{z^Z1)*6%G0RI{NAP9l> zPwR)Uzt#^%f2$up{xkYP>>ucdq<8(GgQV^Lclv?$kNSc5AL|Ffzta!6|4={Fg2Dd- z{eb(wsvk!Gk$&)f*AMRhd-_4?pVJRUf2SYN{zLkq?*AVBz(DlR>jzYP=KpW~0Q_tH z;M}12zn~v%|7ZGvrRTp^KO_MDUH#yJ{I~jn9EAV3`r-PY)DK|L|BQZ+*ZT|o;DU`V z&d&u2ZC7NG6`+MTqIr5tB#^*HOyO}-qD4dDLoj43z>Y)j%EKV8dGJM6ADg4m;k~b* z4H+u%3=Z4U#8TJ7HqGX1xQt8S?65uW8)WArVXCPM$E`-8(#9fwkE$v^;z?N$ z47e5;q%i1xA5LJ zyzGzqVL7xA7&2vM{aogrgp2!IBV8<*OY(>f+C5V`F7v7&H6lzQx+E7ZFDHmHD}2_* znMoB&z=BK@1Ai^={uuCR>+jii&{4z2*mRXe*XwR1E zzDVSj%L$sJ39c63Ql{smr7}=qR52xgd5|?EsYpRU^C&OIkMq}F&U$J~ZIwvRPDcky zrp-IrMWSF0g_kv%S9rEp5;XroKSWR&`ef{;$5oC2P?v-q@yT5t zIm)&*%6Z1h6?V&2D4ooXtF^#u*hy+)s8E*^okYoV+^7s6i^?lBt54Ue^4tY_TmPUR zU^>uyn#&M&-SR?e;?t{t4$DcLR=k*Ff^}G)GSyNCVG?x6V&P@&fr|dDA12$&sVe|X z<~dYnHQ#3I4Od*_d`E1wH7m0KHl^&lRFyO;k~BlZV;Y^w?tSq#MT9lys_%5Mth2L2 z<7y@Iz_LGMlfd(K;c5VBHXKpbR+cFGyxQB6^GlH95o*}Xw>QO!B}?C{K)qtPuG;yeBLlNyytQ&z2{|b!%_Z8IKe3iX_7iqV!y5J?Kt!^E(LX5mZXDxb z9c!yYIcdCS1n-!h^Hyhsj^$>bE6EWf2d1}?+*?)Sio!pg>TmqfwLGs$YCk-y8wgc z96LwV&rn(;FlY!A5;`j`UNGB6qCFUA7fuF}?!9sx76b3pebdr^3t?>aDGKI1HS6R3 z-ru@{TQ=6+;~v%h?ikSP-WK>{klNyD+IS2{PgK=|i-7Y%>4BBFWq^D_ZQPX;6#?q7 z-?zQO;G}|cpiftAN5@97Jg26DUR0gOr!_Kh=Ax$ndLDDtqIWs-i+oq(fNo^)RgDwwTE&(*3ME4T+9UYvf%zAHX)uPOs@r54(C;g96$CPVtbo$ zhi`${dJno6UpH&7?Lml-w0;gZPrbGB!WrLczTFJ{4!Si`tw?vA{Z;I!7QYy<`ugt88duxo}nk76VjV+$d4t3w;_c)-+Vh4vm@-?yEa?Bamuq1Z12<% zg(t&iu5mL-yU_*xzlsZPVElyXAwJOxqN0+$58ni-V0B ziQOsU-_+TuCx0$ZUY)7PT@qQCUGl@#vq(dHM7y;?5rw(M6CuA8Q+x314XqQy#75R{(GQ2n;Oo02q%AF zb-jeS+rl|{q(6H=+xVLp`5>GZ#6mi42d+Co*3XVqsK)Etmp4Fb`8F@6i@#!bqNj%r zKt3eyIccJkbwJ*sNZc^a>*Mry4o60(nC%-oW|F z;XlN}j>G=%Pbb!_^Ld9uE?>~H!PRos-mteD6ltq%_BBGkYmDA;f&Mjez&VRXBcx;L z8eVI9wGVT|LA`$o@b4w9^Gz2RZz4DLP@wvn94!8FrSNYCGf=j5SK-ge(;e}5^t*rK zK!SU=`q>P`7#R7#_NIQ-<9D#E^>r-Ft|INx4_>htHc5Zqkp0tuuh=|%-NY99Z&l*{ z8rvh^0iQ7bEE5^scIy#v@uwBCT&MD=3je$Y|Iy~;J~Mhz6M2g%A1$-`(qJwa{OMSW zd@0}mOyPJ}v(;rA(S}zLh)8{$_Bn?*ht?4N;uhcK@cs6T@%H8Y0sH7V?d1NL7cxum zxa{&){O5DNiO-PA{L+rih>^*!TXyB8(00R@YZWyywAUN*LKA% zH^BA3K8s_}TXOjuR*oAy*a-qoDCXJfBh*u1F`y~g;Dt`uFR1&j(D5(j?w{b_n(Og$ zn7+O1DQO)ifA+8Tpqt)lN|z(N})(R7Oy2)?M$Ui#+2`0IpbWd zQvOP>W?YJnyiUJ$$XR$O1U3l{85*ACMrb01NGhR#_VHA&%k7G#1<+_xSRiyQ0fd5~ z&`rUMdBEJf|6?*5Yisg>+i5vp7{{R7mc?zYH=C1gLEq9^ttsJT5=yB1WVZ=vt61l| z<#i4=-)trPv!Z+Iq_hQJC`2l|2pZpE#C(>>>tQsTn4uxoBqA)gm}#mNY)w>tu&Ryu zy1~VeMi13&wUTFdu{!d&vAEN(3Ge;$ci&AR0k;Wx$He>SzZV9kfzZ3)V(y8&Lunxx zsv<_#r;4UQ09o6i3|;JisD00!mac6{DxZ^aFI=TggV<(66+9d8a@eu`Z^O7_d%j!= zs=zj44B}vh4am6=wib^$96mnKgiVSbWJ-o;xab6NuVebH4J8CrBS{x6f?ADv)jbCo z9*8zB!9jojBg2ZD{CzCnb^BJ16Yiyv<|#ZBD*9{hmh8k*2K|&YaGqnVp#A%GuKv^oba*A*CLHeAikAv@(K}UU|;k z@5KzbS9epAr7}0_`qrBlixcY)Mw+6$`Zlym4Aa%c|MvbO`2^>D80Ix9F`g!0Rpfpt zL*PH60dx2 zp-AD3Rpq5dL9*Gf`0j}{`Jl0rVd`fnz|0wKfs_E+=_5q7l4;a=r7%ieRcE~dD?w*0 zHVv9qPK@ivZQQ^!A^6X|ZV;cx8YK0y`)z1sE{ zMr~1VJCSu+6)!yT-k@bV;H?{B{(h|Ly6Vdg-J4$A5{>owuTZ8C|n|QroZ%3K(@UsKMyyM{6B7`<^ldY0n}AHpFZ&#%sYE z!2+}u8#(#pf7z&*)F{UCn+V;5+Lu%d?~5B?2Z$989QKuG!iBInvdgmxYt zF)6jR=pja=FB>6JB8$rZ%u;1-7N&8x`ceYVMX3V%A!E03*ri1#rW_X>v+?7cfPoF9s1Z9&{FSmKNVb4FEhs=@AqGXf?`r{F5M_KkXpQCYWw-|(d~Xk=KlTa4o)ng8 zPKbuiyY$56a3oT+J~;$2A!W=!G|t69W~*_V7Z=c9{mOAprkY2tq||C!l2{ixt^-+% zJ%dK`(p>cgklGXpC>HZaa}c5bM-$*JYn1&zOS5rdCPK=_OweY10BM1x9l*;@oal#6Q4d)1r{vEbd>h4@Q zf0i*%edlc9tXcq>9H9y;S31k$V)B;}V>LsXeR%6ka)dV6 zDofjOWNU0A4>YG6>)BJN>uoi}r{(;u(hwz2TVAeaA6OCU3(uB2MiXmuHMTQdc^$l- z)e1?l>J zvGW#OhZ6daN8oSH!9>TFC5>FMD68&3Wm`I)OEWpsZW`Nt@o;Lmxg;yr`%;83ur$MbNAe27^5^c^?O0y+u zk6QIQyiJ{qG*luD@yg(PI&L1-Rc&lrD}Lji3Y%~=xT3zuI%Qkz;kf?IVQ2cCc(1ns zwoUHq)!87tAiYWjJ{%^>IiEQrKf6C-xRTf4wN71F>z6zQpP-Jy0WKWJ|AoQ}vK~%;L(t zh;DpaLx7UWi{82XR#dU>ru)>~PIyHD%axbkZQ8!pE1_QYqMhmB(FaF;^?eONL#b}B z4|`Y4v;S%D$-#5c88m+p`s5Mi3NgImyhO7Qc3%#8O; zT~KBzeJzu=<>}nKetK1q^&!_)_#!lavcVK+8t9VH%RI^jp+XvUfWH+ zhK9O(9``*rJiEJ$@jS2Y_gm#94ozGUcpmxla=;sZ*+?Al_UGCUG^28V9uaUdRo}+a zC;0gsG50t_EcSl*8+=Ve1A@$)fA5FlL;qVWSTo;s#ySAoBJhNc9da%RS0V%KS6Z z6#7nHn_MjNlUx)_PNYr*m6CoK%+5AU@5{D)FU*lLOyW9BjGz4@XP8edj#`aYYFLyX zT1=ow*sUAB<84?-OiT(77@2`H^egDkyF zSjWkE#j<+Wg0H6+mZD;JtKxKNxF+8+F}jr z(4(fV=y>>C>D`PoL9HpGqgHAtl)9rawh}tqV%E!}s+X)4rV`J0ZIYp*_T*zfbJ!eP zB%D&voO619xsDNek+?o22eWegz!%r>9rN`SH!fzx-xBvRlayZ?3o7ZItsKQK9(zU` zp{^DQc9oKO$O`!w`+hb84)-081`c^7OPN47b_|Wj(__S5N>Uw4nSGf^mK%k`9Sv0z zPjQ`aXyWqP7I*ZS$YR5o)taykMal+EWT!;ssEy@eOnQ1p<=Dl(;7*p5q{NybmAX!r zhfY?cOjedmR<%r411D>iCu>2Ibq|yE&{GW9%mVpA<@Q>|uGZLU-8p;H|x zQ=KJKT`g1Hz^R_)sb0`j-@{Zt^z;D6^dR~45Zm;y*fdaWdc(7BhCx!01px0bng;M~XZ++Wb# z=ffNrdL9CE9+F}nihcfz_&l`wJdF7~tlKk{(AXEy#TPKt7ck8iu-q1~!xnH-7jR1#@LCt}M-~WH76^|Ph#nV+VHQa+ z7fC4=f3Po-i7%3?FH)EQ(qQ0UzTuNmJC~#N?pc8`oE9LFflRxPwC41H(B+cS(Txop^=f1v9Yme;Ps}@Zf_6nz{-z6JY1t-A~ZuOF$veHDBHi zqp0%T&4?Z5uv!s$4%{ON1bj41W3A~uEK?HqYA;IvoM~Fp1pGS!Vx(!$Zmwmz(>%qL zFU&e>+;0D{9+Rryw#wH-a64_+UHiP{gbt=`-+TlU*6+lUu2 zBlqvf->okPGb!2-}9~_jQ`?6{O{X6o0HtnzgzVIp6~zGHH1Gzl(LRb;UX&kopO5HA_gZM z2ts7lIA0R4GX_k!0X_F7KBV{=+ncj`YgetuwQvPEmzyzWrg{bzCSto{06_Z`! zbSXKabVM2Vr88!C1~knW6Zo%Vh+a+JX7^2>ozeGo(e6s7;=CUu%Ua9u} zH)b9m$1LcDY+YW{>860=H76@DlbcC%i~%#{CttX%(;}ePoTzH`4%+RNm>fCOc(;rAvE0u6GM;XtB6c`h$S4q}2rl2+IvR*yC4TQ#2qJw5>7ir(D(RB_xG`>q% z4v|oV=erTofo#y|)0nS!jMXrD2V@BM)q6(j+nN4G(B2TXZHihrGe(t#n$Z|&+`g<~ zN`=`30^B{9y6K>a(iFMCY6~7!;u^Mew(AQf?zZ~6A<&N5{jhhtsJ~P` zYS+}S2@$;xZ4Cxz=j|6#8O>Bv4F|Uy+Z(Qan$xKmLi>BDvHjgLG0^3Ged8oUQuyu1 zi@9GJhdqed<|M`PvA%6mHEgo-Q)5bZ>05Ltki_?<5B_T#%cB-V-6SOiT?GXEtS(KCB&Fwm3;Mm*xHC+?V{MGT21q6O^~ za8lULgeucZO7P$2J(PjNF8~9g`NdbS@vpOH-dEoyzR04b6ampENQ6#*9%jzQa5Ev! zY>)Hbzk1keP|z{Zl#8+i{`+vy`~c9i9A0;hpn?6GwZzvcjHZ&8EC2$|Hkfm$qb+6b zvK5WU9ka}F(iD$g?W$DDiG3pGGx3xAOkl{s>UGU$8JyH6>s~;gXw!BwGOqVjPMar9 zXV&Fpvh{y0lNQ}uZ`5#4EY4Y`iP)rBz-pLDs+1G`m10Vhn$bqc!~V0>dw#4gu!Hxn zF$yuyw4QXkYh|sBH0@03&+cH!wI@{v)yP!RknL;){!nejmsw!*i)PVGi05%r0$eHn z=3*Pilel$yFZkgIH!!j>>WeS)Wb0!S&AHVPVe1~^{4!R{H7NM(21>J;Ng*&(kcU zubWG)hRTwv9=TIi-=_1Q!)|B&y$m-k#^?|i|KQhV3*k6zh8yNd@P>77pIyCn?=5Vz z68kN{Z+P7F4tzmG8NYV5KfuzDb8x@Ux{#E_ZkW@42rt|Cr<)6pU-d&s<^5 zii3%h?mTylV;<%$ha!UPC5M)+F!Giip*wY$PHN7_>pue!=pmZ)dI>qlrs z@D~E2rJ`sx!d*DRsnuMhJfkiXqbAe1<3u4c*EzBQ0H*y&56Ng)%IJK6hqPH#jucT} zM#RI4Ydl6QBWYA~MNHs=hZ42zEIeBHm(U(~qNNIF|B7hMW6hT_w9Oaan00_@TR`Ut z>bzCVigTR&3rc5rEJb7J9!`9`v80C;Z-ErrGko-VVLaSK{CS0+Lm1i-RxnqE;W$p% z_6sUPWx~Q>0#u~&s%I?087c%q7%iU;pKarO^nN(ZWKNXeB+Uh1FafjNRRy*-0YRU+;SQ3@=lyQnu zWD4*lN|qZn(n+fEDMkO)>z*sMv?X!I)FvQ}Ku$M%I1>=6IxpIJh}yN=<5T zKj&9u=7MxY0+!-$vs}kC$HB9##KMq1x9n5*_-k$ZV+4ZJ%nY%_?1tu?8)=qNSjhX= z9A9G_`m%!8&OBN%CoT`kPiwIPZ8<1!E@(U%p?g2#5s1Oa{D8zHn@X%=cg3qT7m*u$ zuym>fs(n*uekaJbKaJx)jq}GFb`obQBc9T^r{`XZi$_aQ??RC-Y1ZMHGqH#L4VH(V zy6XuWF7!rjZDujPhYAh5VpuBth-wLzO{q*!31x8!7nMTxn3p)GnD1*G__#n0I~RKe zMry@lgcZ8SxP%g>@SLLX$jb?S%%zpx!v@c+CNtL|t6Y#x5M?Pn7_3y@&8*EIg~@it z^&9$E0B3;w8{1@gIHxMk6L(aEx2i)jykdyIo(`W<0e-?c7P-4JY?u+Rr0(PzU!b#k z>RIxGHqNB9l#7kcQgT&CW7V&q(x1hpyd!McRF1?W?%vKu?dQ3LI%*s)HoKlx`gk>L z;n*#%iXu@wDh?U6EHN+*Rt(*Jl zQny}qHmKf)YRWdYq?zkxHyd1p&P7$5;77<)=BZUsYQ;_+Q`!R!0Qm3#Q}f4ZEd!e8bqzY@@MFwA*S6cyEh^Y%?E? z%8+Hx>h9zbPH^_A`)*q;Gu2wl-1$X20oK}pFQdyavLiAZeYUE7vop(`yemnzi(0$0 zN*aPmCyvdzktecMo6c)=3a{-VG%PE(Gb_%Ur?sXVZ5}+;kss}fg5O!~+-oaS+QHKU zv(WRRg@%ORBpHo8C=0hzjd$9eMZMawz11D~&_~=@cQjH@meu~8jrS^R`_9{Uwbi@J z+d|&hF~imWFqI1zgNLr$Yzu88ne8w;g=%%tz-~Km96iY5<$PY<3!M{<+!GCfh){coq&#Z=rf0S4=-o4o+D&;5V+MAm2!&(TEvt=1Ap;E}sRq9v-e7E^K!9Wi{G$ zG+;M8*LHf8L!znKr_XSEjHYIYtp?SDFUwTBpd6ez@^R5|`aD`3G;-rvxXwGyUz4Xy zKcaPJ3Gzjifv7MH9JQ;>HB~Rb2E8ATPnQ221<~FU%CpTTCH~Qr~?+-%$Z&=F)-XTlQ$-Kl- zZ@IA<0`rck>CPDRemgFZc7dytwI2ZYC=0k0f>(b$0f{@i%0Bz3$8l95zbNO;!c&~u z5|(QUk-loicMnxw6VWy~lcQ|6hn1 zZ})=r9>+A)(Vp$`tCVc0(Q@H8ch5(AUIrA~$0fK}!N-kueLlQWX)7uId@LlF7y8Vf z{IZ=BUwps*5)oR#bXvv(tb`rA)23MI)c_|DovUH}P5fXGvR0ji7bd9JjW?5mRVzs} zogGggiTqah_1AQo#kROh#r$vq7#@f)swyD`J{K)%h%=NrF1nZ{6z{A3*lWc6Yl*ch z*P7zdCoA4atF9!jN={pPn#?EU3+TO5-VJN=+B_eR%@@hMS1)Ym?7*mby7x?UN2C3ZQ0l##e7TP9ghs;rO-+Pz#f_|A zkL0rO?DjcvfthpRgxm6(?&Nd=d`{b^z22eWN|!S$AekY7p+ zronG}oPj~(xw|lZyKw%3zfgMu=;y*e>l-E#D`ID_5?D99*U>t(@57`CwR+sjZYY*8&v9wn~-*#~; zLYxq)?TIe7H)O|q<#60w-J9|E*of9(omK>54^9N~QP&^G{yur)~;tQz8X1?TOD?xIB1 z9qN)E2qNPyG_Tx~Inok|Abd_2^_B_vPlqU==6~*MB({(_oWM%CdBgAs>0yP=OlQQc znY&Go=At$$Tqr5mj!p0V8D@8#vrjX1u+$X41RSA``R}=BtleDUR^seM zsq?Q5Z}$?N|I=gxJ2mCbmn9PJX z*uNd?`!1OWZ=-j+u)%e=(Sr%d-&w*=yU_#MF0OM24Z5@x?tehuH`t?Jblqg`CpvnZ zClp75eeR?oZ;YPqEq3l0~u{b2r}YZISb zTTQp<;Z|1kiiUNWCY(o9r+gA&_{FW#fere;{t;bx5=ucE{C0;Zs7)SdfP>Wh5AqxP zPo$%s20LPe8Xl1?oNC77y7W87Nv5AMqGSGfRv?TT(SMb3e)S+6INE#+TX@ZpNG-;C zyFT6Ok9~47uCo1(Sp^oxZ>)>^JT*%mK!ki-Qb3!wx+=|Y{d4^$wD6AMit3jRcbIZC z9N&Y={640bWC5=KnEE~{O#G}0`Inan)ie!GhvG94^4+y;2kElko4A>F;WFPBoi6U zWwdVRJ7WpwMzR{ApkZO*A=WoBq1J;$N3rw>bX*tuc)(Cte$Tg)-L?AJBhuwV;I&0N z!B2u*-S(LhF4W{5Lf-?MgLuP)1i1|si!X>IcF5oKUR=*x|30}^>$=_I*Y&P3M5Q2y zZnQQQm*wSk6%_Y>uZoyUc>hQnOV;c|90&|L$tfL!b7H#S;E^YLY$Lnog}G&kLWY~5 zbF95bL~IZl@iv{~C#44^^u1o*?{R-*9R8sT`aEP3Uxb~m7>I$gi|vN7WIOu-=je+p z(n{&8EKWQnLQ7N1_OT%HJyw)a?1+)fNbru&b3gn!szikxOBd8AiHs_jFp3LPSX_ud z2E6Uuux!iF6%{Ga2n>I<7=XQrz}P+tj!{e52Y^8VO0vRYq@G;2m8e|a{cT# z{fWv#Ou;G%zW`iR`U*4B(m--JoifX#J@l2E?;miLKB2uyCgJ8CNm0V)hfkSW!K$rp z7sCi*(>x)MZBSzWY0kb*lKg{3i%bw{6wQWs)u7t zwQd5eSSGoY$h!` z0~y12y;d!E_p8~mKF%f9IpW(xm4b=mWy0UmLxp8qe>9oZ(gS{ehkdgSue0*{$UiCk z>ATNWK*}9MA_pdaF_5NXjQ0XYxPbTlnq>g#1(HCAUnoR-6v;kj(Ea<3wFW=gC~>l( zfevLi1Qv?NAD0}+6U+2b6zH#E!-m2S9$j^y@_@a4&x%3Cck zNS|8YCzNRrppL?d{jiiML5(&{f62)TB%Ku*XJ0!~A~i&Z!srSV{4K>qfkD3V4KqCv z$N#IXfU6V|FT6OdyG?}Og)t`jP$P+fu`2BAE)w;)pnyFr{gjJ|Op6qRgS>OBW62_B zJ+>g%=MAIq_LNH8x(Lg4RHT($u}py#9p~yo0#*{)$A`NV?`&v->}y^HtrG4R>V}_b0Yl}`fm(^yPIr?&b)L;dqO7sk@AWK+c&Kd{c{x>?kGVQR^^m>nO3v;pV7alwzt8fW*DK3Z^#( z!w*85q1_aLGML3`;?|Peb>&2kO1v$_-7f6^vo=+KHJ(EfQ|ERQA=n z-*i+VCRS*%-Y5y)C*NWZ{*Wul+9UO=Ue9JYNKalyRu$cHlXjO!~Lpq zcT;}nkKMChdMGYirE!_38OsK(igdcTnR&oZ zMB=Q?%yb;WCik~wO_W3nA_kkvA8X4cLFm}UZ52|Qajk`uKi%)*b%Vk_={f5iN;~!G z`KE{nWOtB_j33#S4Yzj9wfE%MNok~Cv|ntb-TBZVMAZV9%)Xp zes7=Lk#S9Snkv{m|C{XLG@SQBxi7pxqoK3pUM!sz2=?KNEx~vlFYj~Pb<;c5-n$q<5M+U^sGlecAvdr zx-En~zsE2qk!7#G;VSMQ&&htoyO}NCeY*bF8ir@LkaU(4al!7XcKJ(OV!!hlP4Aps zgPE!b{y$prOcgf#PwhW%E<^QRU(Z1K!+9r@ng7wRi_KL zW{|jrkCZi!uaRV?AQopx=|_({VP$*x${Um3NDY)^D{zDCkkbVUO$$f?fnZ%E{c2ns;8*ntpb}`ylBMmQh>asNM3YJ!sV7Vbl?N%n4)6nSAUQ+n9^kn5){D zo7tGV>zGIAm}knESIL-n%a{*v%y)Ur4>acgFcttk9*8j>L_QwOHXb529;!ATW;Pz~ zIvx=^4oDe~EExw!wftjM<1x$Qv7qs|hw*smi3E&^MDmFwwuxl1i4?VoRI`aR*NODd ziHwwq%#w+$mWgcOM9%U=E@&d}VIm)TvH)YUkbJU;ZL(NwvP5mN)NHcse;-!W{=Xrs zQg;3y4rI~N($dk^2E-oPBP%N_CnqN_FR!4Wps1**q@<**tgNDVPkii(Pkj*f|miH(hoi;Ihok55QQNK8yjN=iyj zPEJWlNli^nOG`^nPtVB6$jr>l%F4>l&d$ln$<58p%gf8p&o3w_C@d^2Dk>^2E-oo4 zDJv`cKZmydXE~^)rKRQN<&~9{)z#ItwY80njsM}+)_)zP`T+=cq7?1U^ zB#K?jG$sAh-fdjoZrr2r>774N6_X$zcS*Hzl#Y}&Qu{qFl= zL%ve;%{;nc&#f70f9qYZWdh4q5EInj=Mvcf-bVv%FxwN=?*a~7J52`Wm%V65u2=0$ z;)lT(R%RCzx$T*Vcg7II570BmoBW7B)d2BlK^X@CvcVGSg9!4`La2=7#%Pi^`wQpk zK%+R5H@d4XOzbaVS~DkG0=a!y{+GeMFr`qk4`~GEGGWY3r!acE{YwMtHk|X4P|6Y! zB(S5D7(tYLM9ZP^cRy-$k~;^0cuWy$eK?SicELu@F7hu^xG;6qJOl(&AQUxI@L%c1 z5XqW@o4Sq``aHAfN!|=>PS0ROC5RXk^21LhEOFYFUn6VhMi4=q>q|t@=AUQI&kqBA+tb<(fo@3!QE*a9a#c;}pGO}TAaIl$0 z4bm~6B?GJUh>k&B?y|2X`y936mk+eWtxzoi#{wD5xchwk8Y&*RH%Yg$dwY2GQxQTy zL-tING4j0@=~-q!fTtmwlZ)&JTAK2MeM+%3v>E2usE4){&KO|8?=Lw^gLZVco}8FY#rXmc=+r=P&f~;*(zhwEnBb@?5^R(V+Ml1 ztblN$75Y`AzD3<=sT0TXadJ;a&%R#ort}kI z+^JHL!1XB)!Rx+_DHp*Pr za*2V*5GJf8k>vc`P1j35fkUBjJ*7No1r&CCwD3ag%k$Xu+3HWQNELvC$H&_{!yKVnC%ha{>N!qEE2Mdic8#f z`~aLx8;K+S3!Am~RC|b1*!$WpV3M8R)gkV{m+R^?O3aB*@MFE_ZMIDKGuBEJBOWG? z%2Xt$L;FsvXQ`pK0>C-P1rG}k+<|ge8cVR<@rx-s^6x5FKh6%LVSDzw^+jd`bRNwg2$nu@2MVY07A0hVj@%#{Y?L3&Ya57~63LsRlR_in{D1L~DLEQ_5U z8hz^(LX?&}A#9Fy4O;sq@6;13ug<L%p7IjBk!F z!{w78S;0YzZrWWJ+PRf^eCPR9zSl|@Zg}QGef$rDlUV$9??;SYRp~!+OYvXhP!)F1 zD`n5?+OkMnlKF>i^G{h0$l-BM{Qd}jf2jD{KMMr!f%jqRXvF51UZWL_P^4?kJS0P{ z7R!5=(R-6GzqQV8fA7B6_ddG$=JWyLqzO{DkXm&wDK&-*K|Q1N05|!Fn2V&Xsu{KO zFg*I7y@h*-H%od(i+hVC7@yh;WM;{3Y>T1m@UPt)yrR4#PI(xo*l ziyWZ?Boq=1&j#!3U~W;<<{gKP^^_h?4=*SSwz80oQ2Zqo^3W!UlkSC^8o^r;b}%Nf zSRzXRq5`1kgur`CY8aMa8b`eNMghW60HH(o0N8fV6t+lZ90^scNN{K*3af#IrV=cs z2)wvFM+y~6vqi}`cgd0XbOb;~0xS9@YHumLTT~wl$I(SAL~Y!Ie=XYC)m7t59Gtq5 zHm0J>fzY^=b#;gUYHHNFD%OH0%hHR_IIAA&2+sz*gsWMEVQS=W98Df6^$2to!4W0< zCShDajG>kOFo&ll$d}R#Ya=}v<%NG4@GIvi!ADZr66E&z5;LDC5GX(auCQ3NQ3 z`Kqh=vQlz9B-uWNIgbV?L&tM!|2z7MkYgsGl*%U!pHimgFeZ`WGakVhqE7j$P%y3z zx8x!DMW64GLX14MP(5|+RA@)tPc&J?lsPd5K3a?{8nl|ARiRT2QC}7@@M3?J zl2U-fUd^HA2V*GfN>Pv+q<53*C2g#L#XT@$z9s=v2#*y=6I&vh5ytI+;F^(etmc$v z7E6<`&!wbAk*P<+X1yfno2v5Nm0c}3i4#5DL>v~$S`-N4(S5cc_OR`74HvJ-3h_#` zVz*N)Hx&b>>%k-}n|+)Y)^adpwq1K*!kib*Fts=GYbyOKHFc#@?0$|pT$h@Ct;#)q%ow~^ym-v-neZ^8NWT*$ zFF9j3Y-UnpKB_D(gRVlVM#Ro3COZoJRIX)Te%%Mdooh05}mDT{>8a)9Lt)1Woh$|@}$ z69IurbMBpki;XZRMR~xBdOnZYcb%N}St3r}5oSzSLDuEKH2$4}oJDTv4v*^ZMP6T2tpDNN>SW*rfa_ha)_5 zXIQ_llfqB960qQeAmPI_%ZECMtVYi6#u3YUToZx0i7MQ^Dp3ngs_M#fOAQ#U@bRw# z!*5MV7?LQrHux<$+u~kcBOV>AwZcwNzc}lEbJSv*2$C<^3scsLVqrnig)k$u{_ZR< z*tGa+TWA01jWK9^T+)h`ZKXfuA_i=pv|=*WH6f*n^OqonC+E?(fUwoAkM72V!uN(< zbDc4>DvXTw|Ju}3j9RwRzS-L9fYo6z7M&-V;S7@T5Uqw}OM*BhiM^1F$L}Orw$>VK z`QnpHfn!O>Q|BJt3>b+b2vRN5mFypBZO%-ph=vcAwf@k|%nbm8rd|~$hMmy)R$q~NKz`NPmlpsx^Xc2xG)<{ald(Q=z0|$9h16|82 zvmxvfkHle@x$S`DLM?x#_te^uzBmd)cW3E)4g;xB20(_zt&5;!&;(xDi@TUjMw5h| z_y^z6+GcXT!}aOR`YF@@a{v|4m8Ng2&r*|y&pEA z&lBEiJSp^S6aPX;FhPKC5h^x;?;6b+ZH&DH{6aeBSmB+)YYyvz>Me&6H~}LxG0acz z85Cm3~YU5uvd zn^x6KTOU3XMy2}?bI$EXn|vJ!016uCsRNmBlht59O+?QE8d&f6M$0 z()ZVKvs_kQ?RhL ztSj*)bOfk4WgDh>nt@matRo=&K`@O+leQ4E@Vi?$S9?*ny+LoJ=l)%`Qm(;l!p5SI z$&YGDr!%~=x-yn8ndV^*UBC2pY6(((O7O38?x^%U^K!7}@|^FoU9<^ns=zm?Rz-&X zJ}Q6_e0#0-EDcp6wN#=mgAfXmu_{sof3A$FUxE2fPsd6mN$;EtD1v{5z?zfuR%{_E zZLWo2(Vrt?`FMS{bj^+$P`d8y&oHgRr}uxbcTeAS01dmq+cZ{V+iq;z-mz_4ZDZSZ zc5K_mj%}NbyHDSBuFuU`-_^I?KVWWVZf540`8}tuSh#5^Ap&uoGGp29Vp~J2iyp0| zlU+bv8_{gg8iB$gP;SE53>R*togXxMm`(K%?>gOUb7kotTsadJTi(t62Ou_5YU~51 zUu|HFLsd6=ikf)&sJ*5S!LiWjnHK4bRCCD*fn<+f3?>kKSylpW^Z-C20P!*2H9`AH zu0?OAjOcaycB7n#p=_-Bn3?^n@GYP1)2-4kb#WxV9qB;hQp_D`fmrEs!xjUCpEIV{u*FHm-b|T0Lh( zHF85V67YN}=IUc;L=w2ClO_pM;S}jjuEz`?p%QkLuh|ZuC>Xs>i z-PEq5H8tY~e3K5EiS2s5ptir1R|^jN?!iIJ3NsS9N7aH`K4S6vJsG%tvEDr*3sm)7 zmDit)W%~UWNPZJv){|}&Z!Fav6`t!7Yz5q# z9NdzZEIPHbAgOVWmy3FbU1J+c-tiSuoL>_ zlG?wXA6(A)uK0G_)*ZS(aL=;w_C8#G0tDl#SEQYbbsvo;Vx(s=V~Or7$1@cb?EpT#;>^a>s;4a&MBPnh328_NuT2|WcVy_E1a)FKGzRp?E3yyz=g1Y%bi!zFKd zSA|BESi~(RwBL^p#f)fI@&|chDtSv9zLoZ3nq6O1)RvdMR1brNj2BwnfB(=6RDAER z6%83J;aZo08HDNpy=;K1Jx|nm=wGH`H;X6s-g93kmt+r$HN>gFG}?h-rBYbO4rO^|asVA$&O1>Gm-m_}JjCGb^FS z;^p`Ps4%J2WE2WhTzGn1ti+Xx>|VAo+}!H^2}AtX%<=x$=O4)IgqQgP_*}g3NUeIS z(Wj!FXPd1mBPx8ZjYBwgkTe?-hxlV-EU&l;`M0X|p&(|_Z;|^kUA;B%irj?^^w-?* z+fj}c6$JRmLg=lk%){Sk|23qtHXTI4!&w&BOTscfUR4x$HPDSbMcbYa9`5oX*5f&MD;BQ2BP(!;Xzunbc4A zXJjK!6qQmGO>7^dSI5k^=+(>7l%qc=YiiCjsj$yZmh*7(M6(BRr?8Owk~s~(O%0*eN!FJXPD|rMpz5KX;a8Nnk|IoU4|+|HlYtUBphhg8 zhPe;gfYr@2wqFBebRE9la#lEvPA3nAgeascUA%omk&4*MIbip3Ia_c5m%6Dp(IYwUHP>L)1CZ16AsrZ`_K;fCduukQP&xL zvQ`BxdqsG1F`TN-jF;yJCQcxZ<2FSd(58=7!rC<_S;(5D1LOGtu zSWgT*zn7$B8uPL^%M|lnyz{g*X`l=fXV6gm)L3UoKbb6Pc|oG%@id?6oU4rd_Z+VW z!=o3w2DW71>EW!hU2g;0dp_8aiI8lH^|(yreRLhHF$LgoF#aPlS?^@zErh4w4Mq)@ z?RrEJ))B$+SDAp&gjtDov|KR%ZwlYkEWFPy&*s>vQ08^qyfvIQQPGlF4dMR0%{i)c za*jCnIfR6HcA#kLr4j?lvmU>5FA5?=A6Y>;l^+;+iTFF&7mYp8* zXDBLO!DLX1uYq`nCC6I2G6U9N9{LhZ!DB)=oQ=)S>b7O}3kQ=A*(Rw`riVZs4OBQN zD|cx?N}K@hC|ss0&nO+XjiX^mDIgILy-PDlH}6ENb(xCwLlt=P3yKup8ul^Tofc$Q z9Bc$Hm%qLut>Hm!SL$mDS%x#p!#f+R^SBMTY$&gzknl~5Qd*LYm|#Pj7yZR!=7M6C zA+cYTLXjZOPMSd@0}W=3^~=bi%y1ENjB!b-35>@51d=r+gE*LVj@XuX(lq}ZIiU_2 z@`to=7j3yDx0{K2Dh3M}@_x6TuY|>&hDG~|>?C7y5Ln)VQF6-uU@@CqdOg-iqh0Y` zmu4?=JrGh}mR7+~&w5Ze$$TO{7bVAG>Vy|?p6XF5rEpi35R+}(} z5bv-vIiw+rT$ud3eX+%F<}rT)*;>4k(+JK4af%?-mVyLnV<`}g%dynAT2jhlG6fA~ zwFpU&1Sg|Jtt>dm0iO}C>WuKedgx`4OO#+6}M~hEOB-I+dDVq!A zu2jA3POxZ>hjqZ1CB@pl+(}jN5t_$YGH@Gnnj4r8R4f>gW}wJrP2`wrdrFl)k|(P2 zPcqu#r&*Oqz3(a*KB@sU; zIg#>Lt(-PV{V>X!faCc(Au6tToB~A|Jl|@qG2ik@O$bpfuPqJX)5gcQ)7uaS3pU;xE+0)H;ItK2wGgHSCWc z6*kgwM5SOSX&%wgN*<}s3WoYvis(c43Jzx{_WQXOPVJ(@iVmD&!<9gzk#sX0R5m6v zQ#(ZAJvzX@+ie*w14N3$SP*q~5wd!b?6l_}aVr%Iyp)~$rD@jJ0f2mJ?&sn%Ekb6B z&F8dhC8o8ol5)2LZDbmNKd|3^c?xg);jXarcxL~F$1#*m=H=|5YkMK!2g{KgKlXT! zI{T!kbCYgQ$03!bDsPaV8G%Cfh17Qrg)%7ZcRZxD3Bh6AA+`Im*{%(k^YFzy&So=Z zBuf~OhrRpAL5{hrB0GMp3SpLsYxq{8zNsb+Yx$N(>%$3cjc*KNN>g4Z{bl~DFNJK6 zQz&>6N$c=QbKPXz!>pw`Gj8)KoD0LW%~;_2YGPs?ENkEUS)J&?g-a#=t5x$ucA03& z@_;^=9kRZPKh^f*Fyy-V3R+Ml1z%5OOFViD4LKu3jf!@|hluG)b0#r%i7Gr_I+Ly8 z-ajwyE^VYTl)U7;5NQ!za>1eHcG% z5dZsGDLThwO}7x8Dx*Tj;c*+bxQI0^l{8i2<94wpwTZXW0ES`Wg{1#&A}BUFr3nnY znaOntgCO_kLBo`O*`Ty`ZTyZ$|ai%>95;*fL(=3jL2{RiZjm5zmL_t$fbWw;1#f;sKIx_zcM5e0^X-jHt&i z14}qe>gWSPuaE)}d8If)9G$|HQ@l@n?0+8M0WQ>0Iv8}(Sa%0(e;eADpDC~#)PJF4FQAi0cV(8X=lw>uVdx&at=%IaLFz+$<qu$04R>p)F$wj2Q;Hk4CWX$L_s`~MZznr50@zino;Uu8- zig^yBr2=!No{yRJU1kH`BX*7C|aEin@#vVQVILTXo2=YTn4cLqd2f~2O}y3Ptz9! zH~yYDF-iFPVH}$dPj-x@Bq?$X7S?QOfqFWz!%@@Ver7j@2tAo|BfbsNQkE{_b(Jy5 zfs9;QiD|E~qX|;+{9nHyrRt?&dGSVlC&pG+$Hp6(%Mpew`XS*e=swA1Sm6*NxMk>* z8=%q0QoTphF8k8?`B=rXf{J3_QDZ-yJ9D!UX}-#aVNBfm;v7k5Dj){>iU)t6Pbs}5 zGBl0{Hno;t_EJ9*1Z*@^6QI}sO9uHx-{oZ4Hl%)Jlg7)-)r%AUHI`E{89Mqc2YT-( z(2eQ9nCSd~<#i2zjlhYrs;_ISG$czU$jop-tBk+pqS8%@tAYd5Y;wK0PK{DTlibM; z2@^_G$=Aac8NmZx{lurlBY%pwE}S7?@U#urVS)%0c4?>8$fL08C#QuWNBT)k_a+Yy z0+rs1cyLJ*S>=6gMP(THMb2s-Ra^Ip6Pm<^$)-k)+>lB?sEsH79S4Qd(czhsX}(%C7asZp^4)iw76kp=SCZAuvXl7b_nR;r~q0pFq+@zK2%@jaNGfy^Hf# z{WGWJQN5?W^dEF&LPnI>DVgGue%liA%*xu)Q}+3g1RN^%E2AbwD9dLk!(&Q(wtc62 zLI1~2y`jxLh|iGMMD};()JvQQgeoz0lXOol^zI53zoxSbkS6}Tauc@( z_7%0W9id+4B9#gXNK{B5NrM)V-S!jtD`;6+Uk&_CJLas7IT*-@;x1d*xv=Kj>cOb0 zlhWXYsXlpLy3${!G_(S9g`sw_5{t4xc}M=6Q8UmzlT&lOu@5vo1y zvqA-FIdX{>f2dL!Ey}f99nCCIJBMVC9y@V*NnTZT8q|=IQZ0bnowil?2*3K0u|S4e z5U8J_S zxfKJ4vg#+xD5DQGUlWr*AOJu!W7}M6(ARfYf}7T^`J6h3&Hs6&ojX7=CGamf?+(x8 zVzeF2_BTj%!7dQkQY+tc zFXirYYzXh`XL9q?VCCVrGGA!CpJa0t>#ca(*@8DWUoRKnpv zGRO76u(P?T!pN>7R&>fdUMoWyJDz#lE>5osthz>Fp|ZK;?M^R(85WlILu9w;HN3*$ zIujOB$9XZcw^_`RG4$6;Yjg`V^5cDuV=l>KvldjuY=on3Szp5XQ2*mpuab#~fBSDi z0JK?uioUGblL7^nkC!HJwctfVd+L}+;5<=6cQbCWI)5`4S{8K9< zQ6(Sbvy)R~Ex&MIothLNZ%iz$xtet$na)?qXj}0#U88DX z6~nqUmakquXDr4ZeM02gu3v-~mFeTZN@R<~j$c#x^roblHc*q@ZgSZ_{<(c7UD#|S zjtNAHShm*>bpjlOL%)T7sYHbK6vyD5IJN)I;els+D^BgV3hcOGB%HV>jWt*5bL;}+`Kg6_=;g{y@N2{_BAlgH;gf%W~Ez3*CvImyVmM$LZc z&y{=7P*Blk(Qy>G*yC#D(wX|Hm_*1?7$S!3N5R?LNu%>*-N(Hp^mQZjihs`KyzhD4 zE%k;62PD1SmWDA)@zkN8iY|{bx4`8Fgb`f%Hn!j6LZUpKbsa7 z?Ud9J{F;gc-S~oG))>Tff(`l4IBqfg_jiTkBBie1rG!koBB`SWvIHkth*o_&+~jW* znVMykT6JA)Qh2jt{Wi+bkup)vcTr;VnqC9>*b_~&u9Pmvx z;1@n$xNNtmX2vYSQvWejNKn%Bs2EK4r&qI_eXxO8!7us)Z~nwR_=o+Yq1YIilOo#6 zrNFev+OKvGEXmarFttLyVugLvM}MC45b$gq=jjbjALty_)BJy5}%l8oS9=Yfkf&EP=kVV&~1q-o=prk;d-1W5+^~X3mAT9sOft z>gc6pb{8Wdn3bsGSi$-w)$t+TqiWWtI?qKAIf|`Gm4m`E7Sm^U(mTQ3k#9vpnt*RJ zYGCZ()gr(bA=S47`=(`N9ns{tZs_Uzjc=y7dmXSQqZM`xbNL{kkD15M#RbsY;jMGA zfNlN^mY8{Jii?iNa97d9B`#X4-S(S#ww(=wm*sguC1>$h;?WZPJo>f|{ zUHQ=s-I~>#!`by9@rB)gm3ZWoOhzAOh}nJve?(B>-T`a zN6;(uq91iIuw?Q;ClRw-644;}bV%z{X4s-|G-^dZtGj)PNIWi=%hLpvfp{`>lSDHo z$O%+xjRrgKz=?r$CaDoU>7!$XZ@ixOmuC;ubNQlSXpA=OR#}{8V@~bk!LTF1^imVN z@P~6irIsmlyNKx!C`aWV0ATxvVZF&_#pB7xL_8D`!wrHt|CeYeD!T*hV&s#}YF{7> z7@f)PrEGF2!ggO?zVSk~9UgJ9J1P-6h6DmG5w{$LYAp_PjT6KEtx0mWf`xP{N|j}@ znhikig7?6Dz1i`N+I*tqObuvJZZd%TP^)mjT+Q0`JB$7CbiS;%dk@PYbUgWLe`!*) zeP^R{H0ehkKIdB|Ct*~u%#i)&cuJ?~GJm|BWu^wGFf{f}$fhX5zY$* z{g~&4#JKwtngDemK|;@Y%+23enQ~{Q&zN7MJ!iCVneM@r~Qs+vXHO{(mQW2GvXxrR~g0E;h7WnK4!^}%b?|5t+x?iC!v`u0os9j-AhAFe^ zCo)sBXh&qU^)Yq<)Tqp)Tqx!J@RLb-8ZCHM(q@Q}WP0~so#JIPp!$JDF!mB5;Yo=a zv^L6$Pvg|us@g}gW`Vqk1s=nchth)`y2<5+f&i>!WgF?z&~Gdwo504mcSkXYwR47e zH>Qrg^c%V<^LnQ4^n-Rd+V@3w1o+^cB4!gllb^{hm7tRJU+)pLsw2(T;FLEe3};*C z(kx&<*J|0(0LKkRts0ie<6%j4Pk60DKsy36h!P%=x}SOF%-E%G{e#^bsWX_lfsBRY z2C3k0C`$2b!X0pDmSvmRuj&8cI zT+Cf2<;?=1MXnvT6$&C%c8CmoEy99??743(NSW5+B78>MdU}r8`5ugAW)f%BDVFB~ zxy*^?yLC~oUUlR{9XQXLaPwP4ToP2!CoyVkeiejwC~^hVlh6Bs>&iOH8pVcE%0G5q z_r-tSLcE}ej+;ve^AZgViS0{7g6(gEtD&s9y8S!`H?Z3dG?0sc%QZnq=5@RmrGrX$vR5Z>1^4qfz1M^nuaZe7y zUvrR>_ZD*R_v#^QcmlkSB-_7@z+5pb|8@B=InjsFnKIeH6;MuPxgJ)Izeuz;|4<`L z6%TQ*HQ5H_6ydX;CBf`Q1?zDt;c+N~@|9B@3-69q8ZsLVEZs{5Jxz-?6rl~Yihol- zjnGCkvzBk9h)+R^-W44}+McgMO$7y0cZK7fJf)zv)ko8VBSL#eECOYIV6P4Vs_ksXW#o?4$tbiOkX3u#V6hj-5*)o*^~9pT z)5>vAtHn~1(jh`L(g@?Pj^C4vAFBN=C4&owiUrjAlquEF7V4n7C@x&et=x`xnX^u3 zL>tR3^AG0GO|9)qGG3#i$PzAwu>)RCmDq4 zhoTZCjf{qQq|psm?k`DZFJmXu1uQ;P{^c326w^KjYsX41a4}s+g4t}RJtkUGqcICa z2+t>@c@<1eP^vNb$Ha+QQGl`6=xP~sjaIS)*G3$?iGFl?q{Y1lk9C>45trJZk*Lib z3DqDIf=uR%njC|O8vm{c{T+&_39VzGgMNxV`$a}6{GW1r=1X-G2u#stmx6izgK$xI zVo<6SAm(9*2vhnW{g+}vU!1t z?S!u}ggjLd9YV?z)S17h!NujXxd}B6U;aikTsup+_w^)I;%{tZ!q1F#7UQTn<(8H3 zXv|uVwARHb1^90D_FV_`4egyC)*hRCM8!6+u+iWtbN|?yxq>7?dN`UBlO*CiX-cID zE{ltpfPcCMR@J)h-Z|6v(o*w>S2>wX=qlKO%+Q=+!dnjHK}=$|!B?F@Wj8LDD(Gcm=`jdxc4&*j0t zqRPpGddcJGTxmpT?8bqu<~;S%KRgN{3W?QCk#Uo!Otu_!yf5|zvOtkBkZdZ5QYQ&k zkZE4mvWXGr2Z9LkBnd>3$Ozr@2VEV^A-YXpGx#Z#SKj!MgF!L+5=tDlUJI^1d-0oe z2Y=rt*_?fiMcIbK5%M@^oiY*1N_bkq!hhDOpFaU|jVtzpAGW3ZxwDqODPzv)k~LH9 z&MEbY>$ddmMtKr8(a7lZ2{c%-EK~C#v-~J~7`jV0TYor4tA*%Ko(tkFo?U;98)04Z zY`unh8B1SON|AY%JdD_;-F)iY$J3D7T|U?B$`wN$c~lYGNcZ!^*a?AI=hd+YBJpGI z?r`k)ZDX$Im%Cky^jb4iqM2`0=@*;dmYZV{65P-N&p9E|>z98M+5=-;0gsUvgCx*vd>I~eHV{C zv#^=V@LkFX*|GbI2%se8rz9V4a5(@sv|ynxc^BG42fi>QI$V5-!_Wd4 zs{E*+r9Zc_rxX0kax>t;h1pEqAQ0SHf5(sn@t;2Af+LxiFuuA6fn940e^dnKy zm?Zdo$Y4odl7bZ+`Rj3-|4JE4Ac2^pNbr1-+GN<|_PZd}idS-x2aT$#7rD$YQ!lMT z=hZ^;&?KfpQ(j3aEhh!O3fK-26S3?a^hoh4!15sMj9_f>G)l6eRs_b|F0O2bDv22h z7L4?OhM4Gxm<~XEW=C9fRGEK50=noNsYtX;VC54g{l7qV`uowZ*({NZ&S@dtlt^j1jyx4+Zn6b;j)e_cj0i!g^rx|DDKRWOf%~5XdxNr|(|q|` zqd=81g{~Y+CKx(%LhftSnSNN8juj22GN65m>7Qxa>Job+YX4ZN&9zX1?eW>mBiSAu zFX$5t8ESbvym=8>AD2ZyKejLQcR(s6ISHozIkEaObqMb)TMvF9WkP`hP3LDBW5Tf9 zF*aL_CKI7m8pm27yfTym6nVJjegV$Ud%2Jqt2{j*0B6z*6EDmI_~~a=kxX5Qk>_k; zUSST#k1Vw!k=Z!MJW}g`j}fHZ{9HGXEXuf=)cZU9@L78GavJib9DsJJkxmmvOOyCF z(VYfkjw9K;AOkF1o`pw3pqOVJ0f05JPL-u3`aH$a$^3p@=Fp#AjU$m^lGtvacXtUe z|7t@U5N{ijop&}2PigJjy0VUhqx#6)(TKsIF^Y4HzE*z!Nm`SQO ztoJzmsR6q~pkY3~PLdf``-V{0kXkoUDsT;~SGD@xRuQ9x*Ek;>nr~d~VvXFa*Zc=u zF27t7ZFZ4qSGi5NR2NGAUBI?&{kV$3Cdjx^9sI7PA# zOZH?}rn-fRg3in9Dh-x%;(e$`c*7?$VJBIMd#KXFYiy=O&&J1~rq`=NckLXfbDbh1 z!CU5b&9 zK!TXDSmhYuFuI!1hIoD(LyV|oowGtUdupmiA%odgLvVv0^?*UZaMlKOToG(tvrhW} zTjT1!V)H~)yKB%)Ra3N0nS!!#1e7}0Bj=WJATZA1d(G=wOGTH(I?75B@Kx3FdzG8w=A0z9c0#po0|B$e|$-FuZxbTC&S)Yii zCisC-9gJt3pX;o(=L}7_m+vcY`4kfo?{F#;bN(my^rnL1g_kaO9Zin`W)erdl$B^A z1NE}$2Ob(VtB#>F*|i+$+2`?I*4fJ3wWF>LV<&Xo7t{RRaVhCbC_X?9;`VilAZ1$# zy#=Esq?(qRe#yhk)ZyBtq`KKl!&?$Cg z4WW}3+Ezs!I5Kp(Oz#2sN_V+uz+ygr5q?*QdhjE-ViaxgHZ>r52pG?`FNH~8yd!CK z)0diGVuUSM*YMjJr`LLR!s!KfXo9~B?kqpdf;u0Q#MD4IS{FWt+e~7J;bVjLgaX-}BZ%q3N!C!}-GFlt zZ)2gTT*z{~RYU1;TsD6AV6E+m%c_E!G^~%sz{WyT8v&&s!dSF5dt3uin1L`!QXc3) z@4EYp#g=TsOq7;wc{;;-qsPX_#y(Gr%gTtnjmJUUz(J1Ai4SIT;;yd>9@_C^8=_@M zLN1(-EhZ^>SV3Z&XnBaXVYI?fbj^hmpwAYap}ID4)SZZ=S{N<7#S@-AC4`CBB6O?$ zWQkU72w1o1-o|9M#HY;J5?4D_JuH`qW9=;8fy>fIQvnV+7;uP@q3OHGBo%LuHGFxx zldY_8jwDYKJaZ#als<4&*lEhzzT<>J5gk1Ipu1v1ZOpPE+9q`IT7yyTY^*L^s!VZl zPGmc4k!{Nim)CXgFmKjaF*yv;1`Lp>@0eaUxK2SB0r0a;3Y+=3?r%h9J{2-Z0?z{I z4(`gYv_8`G#mEdc>bn@44H*$Jn|F-?_p|J`0^M~IIAD(!N>1_%H>~wM>89Br1rz1n zhCJ5n0?Y>vCVfsD&Pok8n`;?qqr-x>42_6CidJqVHo(8BkK=V7Q*`c;Gh;t^O_;$H z446eB;1)!4*alRZYQEnp!<#Z zCtms^ZkUeMmbOhD&Y6B*i2jNHZOQG?;Sm@_gw`WPqoPNoVHezMDT4x4ms?iwnDCp$2nH`W;1Esv}?2d6ZGs=v=1c{)rRf zk+Ervugw1%J+vh4e9T|ls_e8ClJ!lDC!NhSUdfy2C%5PyL~WkROmfxqR&TZ*wv41Z zXmScb*RpetUHo-P){QqcuS9lZh+M!y(E2L`tAfJ=Y94h5zRRDyykVfRC_mO|yiYq1 zeMiZ&OA+7l(;R!xXVaZNFR;_N)VAZ-DQ56l8N`fNB(H@YVaLixx*}uNzYjar( zZ%x!&Wf?#_tKxjEy7#;;qIJO9*?mHt!9f>f(aI*M$FG4#Xd3YYBWmj{#f#=8S3Y?QBYVm4B5MBDX25pn(2l>$>R# zk9W?3-chOX83Ufb-*xtTcJ3}4(H)aE8amDq@ef&&-4vP#@oi1o)HsWGjf}qMFB^4d z@Wx;5=sEC@%XNK18*$=cS_Jb8K6{P#e$1uNTDV?RQM1+$@Xus*!3ViPwxn*Yn>w6y z&0Y8@*3`{*0_#W*=6?87D;9$cI~!#=7L-2Q2c4ULYPLyz8mS4a$UWSYbjCr+Ty8&9 zd33M2@<)C0Wy$P1D%>LE3T&c((p7#APy_p@yTwPlx3PCOi~P2Tv&;7UOKt@Ao;y=j z{8}RZrIi7DT!N+aI#J~h0I^dJK5);GrU37T?1Yq=7)pnNq2Q_KM(zE_=nY|YnBX~^ zY5P-0!^#JGiQpxde-(fCMW^rOPS57e!jkJwA{PHOSnybGbiuNF@>}m+(Ux+W{k!rd zBysOUWsf}Q6Gim%K~v~)VS3Mg&)S2dJ*!%M<3>JU7lks5KzYE%~bZ67iI8v!p{tOrM$ut(r<*p1@%h^1U zFf4&gH|vEml`@U)On2LrTI11Ffh-UEjaKKAL3YR`$doxX^i^33~lw|yd2B4`ho(_)#8GZ2ohjX zMTT){QB6ewumsSyUs}>MjsYxdTUReF>pD*ZR`k8EmR1aZBmJZBA{dufO%oI}*32{P zm)9%{Vl>vR%d3~yZR@8sHtgH4mNy*xku*1*#~D{PT|o+(TkdQ2D_fp>F`C=nXVoj) zzIW4_JN~a%nkzd$zanex{)S^(-3>xj)Y=Qdby(dCBaPMCkD#qt-H&3K(K?9Xxn4bp z6G7HKOpsw(J4{kh)ILhlc33+~Gmh0h&akdoJI->R(LTxXzFs@Y`#r)<@`dyj@{8O* zk%HkrD#aYc97NcEt(E^;EB_xv$^V)m|Fu?#m3q4VYpwj(TKTWF@;_m%cu2CBs>FyG z{lBc0H*Sf_uMHl7X2BH9zv03$RmsD|57AYCqGXW2p<{-~DJ(TuJ87d6Y27v`zm1P5 znCzqHt?p9OqRFbzp`ljsnbUnm;SoSqu;&UoLNfOr$6mir&0`+M_FRisHn~abGYe$C zf*moDY%m-1D`7247vq?iO>JWj;f<1>4zg287NsabQfO0<@^OV6ozlV|kpatCK-{~W zMwjxIc#nAC<)?)YQ4O7X2dP(}WWODraDQ4Wc0;-4L%Nd;IB>#*@=TeA_*wqNI2X3x z&X0pj0?HD@_FF{8B%KY>3`LGW#nvENUq_J=1mVn&qQ<6zk0-F>@-16HY%lZ*Z z>o_-?Otpr#puAg!y`i5fw5p5eEo9^(`Z0>y%#KbW%UA`2?d|-t_Tc<8ms&d9Eq_*# zq31^|DhV^%znQIS)8eo}n%Gr~_*NQ0@u`1h#VpSj#|P=1skAA^83vS`)2#8XPV_X_ z4e(Xb3MOa`-`^PFZB#zqVrnxbE;ax^X)UBi7df4<(0@*ztc%O_d4m;FDg==1Y&>n( zT$nh`vxBepX~N{Y{t2qrsuyPNlN-l>mV=-XYOWpf1%vl4+cG|II)0@qSMol0rgX2f zC1`TZ4PQgAU9Gi!RP=4;e(AbBvY#!s6~ObW@t(b~@flxcyw1FBx5X)=BWpRhZ7S)B2%Pf#N z;COfOIX%R~n*3#r>Rt)HjZmikRU>}7C$^LLVkhVnrmwF&OZX6GG)}dBrK0DW7st+Z37QzjnvU^)XgIKXuGc# z1*Wz>3+1M)P4z@FD1Du>IBBSH)(B;bKgwodBHy3M9?b6#9uZ<{noVqEf5@67! zo1+qZ%+h2q({#a|k5VIvu*8zvna7!H#A7KC+0x_E%?Q_}3d*4*Rei>CZYExQtjvZr z*J)f!PNrZTGWalG2zXnm3E)Ul1FT;QZmh1xk~IQgW;x_gSNlVof!nxJhL-P}s+%6g zs2Lmif$xL++Zbe35gXb?8>{DvPpX=PM_;8nLo&A?i_PqBe1q_oD%BpE34vDdW<0Q; zA6$J0pFnoc`dw&CwgFG-Gs9dGke3^G)GN+in}*wZ3>fWkxI5?0)sf%(=cl=t2$5vM z4JZXY#jDMhAwoO_e z>rjZkb-MCzA-;b)m;P8krY*KJG~7Ks4h<;8%noqy_pu=YpMLEwa%h5>{()p_JrSZ|vy3 zMjrR44DdE*pU14v$92xMgfFikq>OwWV2Z@&0M1mk8a)Wp-vg?RAEWaI)$*m&sCs1NloU6&!3^D^fwGeJFZZy2EHBaA4&srqKCwhVxs zcJQb2lBB+<_*XCEe_SUmq@^i_+2Yc#oo3H(r#@$vfuh46;nXar!9Sg_Ij|Rma89*U z+$mMn1N7>Ctv)(qkOU?US}}y{(4+@WY6km1{u(efh`ISbPt|;_OV(GWWwS9H1%m~GFD-;Bue=mH%#%yWk%p0 z#+~jqz#dv$>N~L9Ui=at>w>o1xYa^I-Sl){z#~$7soHpX(rZO3k9xd4>Lk#xpR-x24~mJK7+ODYAh1Q5G>YWGdYJ>wT}vZN zUm`D#t;=bm=>b}Mi_rZN(KDuOo`V9}IHE!jQKm~ege6gqgUUsr=JnsAi^HSq+`L_r zgqo>i9fsxi7NfI^%mYpJG^C?=_O;CO(X+ z0TKHP33Me1Hz$cJ&n&IM@f`;|bYMxzhpmdba?9T(`4_*7+LoOF0&+EDX4#1g(rrW zo3{&%C+QzCRv8Zis&*q*@8F;Au>sa%>lC4(Jb{T;HsV9+*NhHg0xo38A5vfJxsd0x+W$nIZ+NsWqvYu=SUn$)6+DRJE(wn`rP{uMUVAG|w zes!N^Z4`g8way$hv*~KJqXDOj_>Ktry|UEdW99ejdOH3|XSf8Ga z1Xs9d?Nl~a$i%Caw_;Ae?oc-r%w(4KaA)QcoUQ1dyB$;{g69j!;0MygOPp&Q3>(XF zq|c4~%Y(BojGfh=*q0=r#biqPsPpVGT}Iqg)o2UkpaS*jv<%nnl2UUlhl&+4i}vo! z{OQ<<&P#8h%jluJFu=@ZR0na|J^`z1h2HBL_?b3I6D8xYKn=6f9b@MaV0l2Wb#lAm zN0S@U2~aFG(*v&}#U@zB<`;yDJhp|Q>T6jxo}l77VK97VTO{y@SBV4$B(OrZVnY2s ztT-XlkK??omQE!t(<#YEY*4)NrPy~Oxw3-}IQO+eCf&8KBPB9Z^z2*Y$eV)dH=q3o z<({`HN6cy+-fGT8WlayIo$_?Kx6pmOLJ&(~23-ZEl!Qj60l{L>{7IBqu#zmm|Fga7 zx3zupc}*C1ZpeD!5U;#f zEiaZV_pvfZ6x&AYF&Xf98DT{u(9Qg}XI1BOBOPXwId4;ch+JMifi+gVo{jmR;-(fK zmbLXJMf$4T@YYJ%Xr^2i$X;W~>82coRj;#U8&U;?`5+6TNA zS9%wBTQ1?K)`jv`eD!dANN>%oWCoqaz)JaBA2;x@OOcFgJ6EK6md<)dMyZ+)jyb`S zMf+ieTRLB*Y?Q~iO@rLG;x$URIyb+PtiYPg4(;X+4eMx?U@KKOX2f@WD|-8|BCi)N z0(iU%2yljAZ&p)It9cB5U2$ehv%0&bnV;Ke$Mi*)CRDctZLPL@_gzZ&_czYAjqZMy zEQC`7i1LPX1fFHOt`oVgVZJ&@b)T!st`qdO`zXL8->oU1{6Spiex}eyL;6_!Dnlmn-^9^!|8$26 zPA>5ws6vZ@Aq+28x$yJMScc7ili|nAZ#=>Uanv$MXC`GEG2jp}$OfNoxt1V+$jU+! zl>LM+&X5irKGdTtr4sBqT~ht!sQ=Yd@+eGj``A?9&NX5jio2^UW~~EtBkpZOR2WgC z7JP*NrD~KCU;bHg6w7=R5Dkln5I{T(Yxq*=_mLcM>5a}X_A9Gg-)C$WJuLD=M|}=| zM{dGD*;pKVSaq}CjnWULu}$|y{b!pKU}QL#Af^4d3v;SV_N}6npKtOdyvB;T3pC+X z5#C_eDWo?k9Re#W;iZQYm%BO{dN%y?!yE3haB#|j@*-_Cd#YwkW~vH*M|bcPXPUro z#NAz9Fl!o$js0}_!F2Tp z1f?@?AgBx$G6ewTRqZT6=A&g05@7^;c+9#N57u}+r$DYY!btA~8?ywoI<8b(e{NRQ zLZ7TgRwRVaN7Y#DcNJcp*I;Gl#c^fpgl{DFx$80Gr(8_*e%db}rc)g74hc+_f^Gi&RySU@ zZ>*i%Je>%`yAqz3b|>cEs=sR?M;ytHndd&t;Og5-Y)@iD>=^J`m^|t_B8)t-=dx~1 zzo_2m{KQ+z*+h$~YqoEV_mP&LQ%)#Pxm#NgeVGl8?qGWB5W#UN9LtNrUq4FSt!4on zdoANcSiRC_<7W*bX9-h@?`?gS;y46mCI1SU+`ZN@SJZYbl!g@CfHq^C*YjkC@7bjj zj2~K$3BzUIvD;;d6<|mHf>qPaW#FwY)#UfNgD&6g%->0;z9i+aUoNs~f^X_{PQs zksesx73&O6^5D~teI3N26!-NG7b@#V*eCZ2tWOyfLqDQ3rQcfK)N<2W0EqHur=@$r zxo1up8^qxv76y0`gh}^ueG$u}ebMLVgaVm z8by1N>+Pl12DHhVPegR7Z=`WYzH(CQ#tO!L^>(zL0LLN_BnaFm~bt-{~LE{*TrQA^~7b zGJy<$h%XTImuYYag;ZX5$UOiSodR0{0D-Oif3{YnWD}UWhX7(nvKj2@Sbgc=t(6>p zpRfOPqrO`!kEcrI3+b|1Guv8myawO|_4@A3Kk+RD_pF$jYHRg(30#YntepK&`FPwUPkk=}5mDqX8Yr6`-< z4+>xVVQyGEd14D8`Oa#kTEmR}^1C%GF&ZnJ0L$A#2MK9`sA%D}Z=;*;e5p)9hkSGQ zZ#)~*HT-n3G!e}odh|rKL}K;3wG!+8N^TRA*}ibdr~T>qbSX;9fUol|yS#h36Nl$1DCa8j`LflEyfzBRxIKq34Y z+j1`ppyz*9H>n>+NBP6pQ>?fVGl*h0#7y@2v=~Q$D?A}51Sbv`5EhLAQQHqq7^TQG zNL4i_k~jr6Q}EjJ(-LAE?nAK+H;jlxf>{F`NL`=Rm9PLH%@E2PX8dGZ`^mkJPhlQI->^>`71SYEUb~q=y>D`jeBTU~9e79C+NixE8 zFErVawqi*r)+$`LF5_F=WpX&%Juj!>cMP#zP9TEb>2EYIAfDjK7!XSK%z|B7U>Hba z$&3|K41K6OUfFo#;i7@1CE8_iJQQyArSH1woIB1vFg3-bIWF=`>fbv;{a;7$`Kdwp zDLh-q+bqYj3cDWMp>0I_2EM&Dj$EY2o-b`pqe0`R)sv)lB^89Bc%|_?@-9KPr{7N; zYA4YM`m1jmuY3X)qeKP9>Wpb&U?^pKU`F5XWGydWn#Nhn6#qN&wz(S zULr`|@mucpj@C}?zh=o%{CkGREEqT*11E&Qg2B={HZQMNyP6Q`W+0~WeVAN)dNLuo z7M`Qo8{E>pGlc`*XJ12MO6B$zxbQB=2f+t7?)qF{vfE(C`Z1Cvi=wHfa(q{&{}2%g zcc9naOI@4wSnj6AnYE#LmRg&sVE0Fy;2?Yj!vuJ4Q5x){)%)8!o!=|Jt3G4Kli7st zQY#$*{)u3v)Qg2tE$l)phu}cPA#nqOgp*$4a;f8N;m(x@S6+s%@EmBP%ZUhy7l%ly zl_FG}rIAOJ<7w4r>B%-pFd@qaQUIk!==Uku?Bh9mx^~evcm|>nq(6@zZQ^0?=U@&b zhNQ$tVp%&D@N~xWn)&CsQcojD0x?9gkm)1iFP7;{m)Z82uM(QpOjwph16#2WWpk|u z5n-`L4_|kz)t1H=O$B3+7J#9S|sVSgJrA@vB>_M5;^)d zCZt))W{8x?`uZM`Of40B{|!xZ?vslkQj>Eih*W#(LuTFO=h5M26!o_S!S73W_y9A^IELHsqlH}zli#gGXW#JQ+1O!xRIj|`;v{aB!iyF%# zvbK-HaApfz*kO!<$3!TWR54~GD%|8Il+}6KDhE_6Vg6K_=u_hwhp^Y7VAJq*Hzn*D zjsSqGe8t+)YO3@d&DBPb%gn=J8Z&1@Y}0Hw=x-T=y)k!nD%f;}%%zKqH72gVj4R`n ze~JsFE4w9h$4Jn3ZgelPHI8~~oAY)O_QNJ2Fp}F?LNBhbdAiWvBv3hhS8Zhe(Y0h% zOrgz_qHb)Xgsr}sn|e&@IDVzbr`K27-<~n_+YA-ksoEwM(IzahK*h~xGXgF&TgN>g z{;Y}=nK`;`EqZ1cu|b)giIK{snn|4Ne7Zd3mJkG+9U5rmVFovx3dN?{N_av zB)m(d{}RI)at<1Mf2>mmf4c$zCc7<#L)X$L6CSilV%7 z|KVqmZx7iaCoLFn^kRu9oRSXxK=V_7G8_OYH7#^qo9jl**44se@u?V_ngBG4`Ej(>bJ9a_`xe9o;x)fu zI7P_ENYlN&|I;v+m-27HeO%@fmJnHxRBz+TdBzJ7oHcjP<$6dXfJl>6@I2unXei<3 zr)kTIPKyo|sNhZbrwQ%7BHZwpt}*L0M2v?x95YWNkxgqR=v6C~5f4G$brQhMvk3~H zV}Q$-vpoWl@mtKiQvs^bxGAkdW!ugJYWp$FHVh0NsYRYCv8)m*)ebx(OS7{LE-SSlCL+cn2$9x%VOm zlE;KvJO)YdU}Lzrn|V?qENc02xQ_>6q-9eDOb`qmr8n~ccZv}w0QhP1rn65@hT ze*<($saYZb(ZZdC7lH}M100ipKVdMNTmxHqqW-Wfh1dm3OM>5zr3?VWAA^*7c#Wlw zV)_|$Ed|4NCO@_`^Jw=uT8Uz;P4e|0#KsfRnohfRU;9ldLQCWr1$xEoH%m3JW34jR#sZCZ!FC z!vq(Wu)@Ls5ahF=y9SAbi%6P6;3*c>0gVRx-8;*=Iz#V?lG|o|9n8erjB8JIM76@Qrd&gF`!CZ7jWO4 zO@*k;LE4}cWbrkH&$Tnd9&{kZ2c;u=C7hNaBTeJbhL=Gn!=REXnX@SY>Y8h;vl8|( zAhI(s@Mme~`MIuv%r z5|hPLS-g^fjI)gt*eNV}7uv9kg+~aL$)a#(Qfkba7z>gmHiV z!!eL?it`DT1KH^z;;9c%28l>K5l9Nr$D#0#j!9T)ahq5c9~p{ZnDiF{X+3;ck4!|8 z6r=HK3i3eL!!gniRa^(QJ7X#T~F z1vQw{a{X*ZePwa|L2dh2*Vx8^4E$`L!6xj;H@uYZ)@pYT4-QX5N!W}mB% z_Df`qY5~)Vva)D!)P(KWfRO0nUtkEzj?DQ1)!>UNcb$KiA*5BhbDO(pW0%J<;n%=S zXK(1%=3m7A1TVeP{3SLHYV}wvoRUbt9Fd3+P7^IV$4!8gWrlX<=^88&(!*m_Q3HKs zxR#w9)z+S`>%*5@TZz!7uwN5Tk0B6|uF{hPM<`*VS4s+FQ8nq({oST_!40Ce!63FC zFIU_8h!DLwR!Yw=?NZzJ3L(E#d`i8l&jMKPPfqUR21fo!Ra9*pCWFJ1VIY^#y_m}I z*Y!J_E;(7r#u=IP$wqIg2Bil8LqE%?nuSYv^z21zC7mT#)D%{u;c>#Z#+K(bGjvYh z)t{{bMSpH@B`eKtrB_#D?y@)kwq`aLLunzCY4|=tHWN%*>lYaa`s4lWt0G5)W9nvK z2Q%isGQ~yZ7gYCFx7M3uFj3pL9{DF$^2i?HuUGxdKEG5?ez}ftVY>NVU2jURg8{+w zIK2X1wBq(q?CZk^P5~$JPj%vPJCrDDub&;px1Z;uli^%zUrDBsA7u=Z&!>8&?=?XT zaxXt``8`Vin*Xl~Yx{JvQs?*c=RkI#@d}MI6S6Be?p1Vqmt6kVUitb8^5@>q9=<;} zTA7N5V5;0t?L2X`x)i>3K$;O)&A|N}gkF&Vb+#+maXAghD^Wf~Tp4GB52Zc22i_38 zgO7o~QPrza!N%GC^R&7f$RF}CREJ#)qAnGBHPX_<6`B+;f>=GfzY917t~fQo`A8>? z544mT4*rUBfI#YOqH~NEGXKjC(;=MMM={p8e&F00uNho6Dg0-0b9Vq9L`y@qz4y7R z{uI6?ZTi42p~`MbIJB>MRhNObtNk=JT(|(;DIju~1%7V=vBYM8VcL-(YlIO|D6(Cn zqHoGz0+GXNKEqgdSp4H^)wZGk{-hh)Hf5uNLuByRYGvt9Y<*S+Q-_{$dN>0oTlh>= za{%%lPXFx3e%N&OA<%+Z9z9Up*}CG&s`O&knE3NUS=h{(%j&g^?wgZLC{R#36A10PRZ8{I0Q~`g)C8WjCoRe zV3Ko+rbvT270=it(eatGo{+&4#Xy?#7CVddny`e?t!6cU;2!PvNu5cQ=%s8^mzLB( zqLuMp?AO{x&>lo*%~b3ADt#aunC)u^v+A8UnRSR9*UQWHXdbkqo%mOyw%GpeBj1zb z8yBFZm?oj_EWxi{`K{&>?c+6tkVxNObsE*IT+d6s2IYyYAnGRd~e;FMibWqPp$2^_-d6nZQT-DW0i{7>bIO zY%rfj!7^^;3E&3aR%yCD7-rp*!lqsG>fSan_=#(@#9$9{NoZ*U>2Tv>#nv+-g6P&d ze!33(=f+yesrSJzCGl&}*?Bg;>5vs83-7AjN28{7&iCT$H+ew+rS0yIhEH3CI3`+8 zQ!X~*8>H103GuaK`I{_wRizLdn5)gIVl7xC3Y?28Eo1Rs@vaScegCT+PN-Y_)UAmj z!a_QS{T2ay83&RayB(L?pB;!FF(=nY*J2Nr6g`9lrH;qdvZlt@?ue|+V8=qAMlo-j zWYFcI29Cf)_d6zCwsbtZ%d$HT!CfdhgP%x_xKj?9Sa*!qde!Lng;rriO5qA3_e=*0 z8yM)EoX+`klE*O@+?2NFTih=tzqXh4`FEUJGa{5_@bJEG;&~tB-3~uRQHjhSK13DS z1$FsyA24d1Cj+FUutepqZ)}*66iOen3~WxEF1cq9Xs4&W2k$F32GoFCor4hK7L0=* zX4|x5+O;k#w$>1{q5<(bHem#15~TJX$=R(J*haYaP|% zUygD3En=T)=+tiM2TKeR3v*YB1hoO(>UmC{+ktN!3h2W^1t?d~dA%>u@=_k z$*Q9MeesvTV6nNkxeoy)IL)6V1nO3lYqzugGRkg(Ys7!|1>R7r)1R;II~v7p&#QZ- zcN|o{H05~EtP|OXob-z-8>5GI+Ydrr8itI=!mM-WuNLA*Ussgi43g-Qujy5?L}6FF z(okWz!eLDL1HlLdLErb6)+aZ_L*K0xi(RsbBpQtd z>(e`OS#V*qg(}N?ikYncXsx8*f8T~uihqv^cF91%;iyco90ErA;&IC*i)mOWR;sjH z9WT!wY5&$4{YPsh1p$+RGz_CyXrw|i-;r3En1$6M1OW~WM6#pl6!s4UB9NrZ;)Q8{ zD1y;!2+(l&&7N0_^jJMLsOM&II$eFRp3D_UAikKMq0#im6ASL*NQ<0AT}w z2Lz!X5yc5hucn!hxjJtdf7eb)B2yh+irfi)Y8p85{b*U2kh5wh2d3)H9FatGe_|@( zvVncW4YGJ-WSKT3;)g-v1RjUtD&$hhscFLPrDnrRiC2IU) z4;WFLL?gkO$=VU|;u~A#CgE$hZSV)0XQERvP z2(gPqWn}}ahO!?cm2H=u16TwkNmgErJ#d%nr>z(P@Yi*RA?9>>r!^8<5+Jl) zOijXnM>^?KeWrHh2gV}Cf;t>SQZwAUn*TCIp~k)@D5~YEFeg5@A{|2yV+N- z(YG8H3<+DBrq<}OkF!*r@z0hH)jp4x)fgg=*IhPzv?gSm=s9*!9DZlFZcTV|Zh)cU zwa%)b^l%;M4Oh5rus-s8h`fUla2@S&2w=2_LR%edW=0C|$lT%Jw;v{vesV6#n9ZP^ zdfuHH>hMy+ds@kk^za@$2Rrkev6U0t)?|`g&`x9AeQCGn{ex_<X`kAXGWI|z zl#hPtb2AwJp__sd`55u1k0o;viVAn;0m%~t@ZEdRZ0N$i@!yak3LI0Xyy9arLo3LH zq8v+vD~JXA4XOuc48z34KNXk(YUr%5POQ&9C(oX^=O#d!bliLs%mza8bHkJecL6@s zSZDY41Cn8ioG!d2e;xTVm5$c&R!hdDz&&mSv+7iulnGvH4X3Q0p=Z=a3j!PW;H82w zz=7|1Vsd7I6M3+X!Fc>238$P=VuQ~vE+orX`);wHNBvyceO{)2=24^{t%!sNa6niN zQv*%VkeEZJ2a4TZ%7K#42LO#Hlko3^_&g!50y=50Ur;71EHtFJO=eO_K$7jHHBd%2@JqAiPj;O#^tfMFGTU05Z#GGb($qK zW+5bMuzfFRt$vQCs{V}U;C9TlgeN2~~z#7lR=q{_oOX2@>HBACZJ{w9TA~nFJ`YWBsn9ekOKDl8@@z;UH z4b|OzU`!uLmA6HSXRrdhYeliZCv~JgoXRDC1blpkDlNH#@(nkWH$NneY9UW9CcR@B zzMiCTF)3{Egk{0whRHev^>Tf}BYXd!5}=w*TihlBHK|}_?&6h1zE((a2fdV7v%%E~hgRWAQ5Ne?`!E|+H##Dl- zD6Mvt0Y^5vl8_48TjRK{d=06}riC%>MoN-;5*^)Necdwc)n;`yzbtzDz|4eomfIG{ zfg{^^%3;9)^|l#A28U*ex`VSPYSQcz$KsdGOCHV+o6MSD4{h4vzDV|){B~~L8||&w z(2DJ9vo6V#>rWOxx}Tz}J;huC14)*;_t|wQqDM2{e{yxdZq4~l2TBxWMKl7&^oSt& z*1%M-I-m)#{MG_;pbE_tM~iA%Xn}M_d-`d9-OiNz@&^WlS513)hZJl>Mwzm=_<&C;o^KK)x z_<^mnnQ&|cw^=I?&u&rtPSOTPS+joR9Sa)rl!fe5yZrFM3IFs8i$yOFEX+Ln+vH+8 z97Fk(8nx$LiX1GgvuaceJxHs2nk)HXep9k?X-(k7_uA86=tA4A0{C34l*mmLkvi83 z#r4>85oTLgR@YW?z9sUg9w7Z>`uge@hns`hCJX9oy&n{3heW47WFq#A*^_hj0=?aL zuzKz~#X0P_`dUUJyqjqMA-%Hu`p=}gXfXvV2*?k+09L-uU21l+PaSdv&aV9*&ws-? zt^Fn3-ZwFTZ5`%#hx$%x(r{&5hlcwtl>u2Mo{ci``eQy}aA^HP7Am-PgWA-d%9Umwwcqn-D?1ebm~Q zVb-487(c#4QpVSD6=2U@N-y6LYwhc_Q_uZ(djCX}@ohe_=b=Q9|4gO!ZMm`MvBr=8 zyHNVRw%GI3(#wD4RQtYl-}Br9#7Uog*L{MgVP_{(Su6fYD zL@*(FFfl~1DS5CtL~tc}a5Y5mEqU-gL8D|v|9L_d!5eq0eDJ>?;N5g|k6 zBmW>q!N^A;s3rbMk^hr{7?mR*Re%^xJReP-7+pOdU7r}kEFZ&`7}GT$)0Y@4Bp)k= z7&|2&JBJvjBp;`S7`G)Kw}%*SBp+{v7=I-nf18-#D4*bpnD8l|@QauTs(|PR2{A?i zF#!n)MF9x|2`NVbsQ?L?cmbI_3AuU!xjqSnSpkJD38iZRr7sCpNC8z033W;Vbq)zl zNdZj_32jROZ4U|ENCDjp3H?d|{Wb~1QNc6>#Q(*H??18h|B}+bne=ZXosW<2TSxz< z(f^;i=<4d~8X6j!nwnZ#TH4y$IyySKy1IILdiwhM1_lO(hK5E)M#jd*CMG8TD~JBy zEcE{sLjO+!{lEP4|H9AzOFsWE_WZw@=l?T!{(rBX{}**$Sy@?CRaIMCTUS?CUtizY z*x1_I+TPyY(b3V_+1cCM+t=6E-`_tlFfcecI5ILaHa0dsK0YxqF+Dv!J3Bi!H#a{& z|KFVR{~0;o+1c6M-QC;U+uz^+_wV1)(b4ho@yW@_>FMd&+1dH|`NhS><>lqo)z$U& z_07%A?d|Q|-QE5D{r_*qbN?UtA>SK5*#GUN|L+ao|7#n*^Xpy^Xu6v|2uc?*Ov5at zI(u=fc?dLUQtuI*-+iE?cusUtxCl%q$U%e1q*?aEn8wzQBRGR81913Wn@niPq0Els zl&evW6XhOp0~2_D2zULg8*~rjT!}~h^L%a}4yZ^nT_baftGZ3*5*pb}KYj>$4-c_P zT(Xa-7^^@2v5D>di8on5y+5w z;sq_t0|k|JCA?XFJo9!|(+K&#Av~4?b_s$U$9>gKSvz=@^K83vZ4Ax$4u_>_`*AsL zp38Ti&5MNbpe94e_b5K}@qo8pTFd(!?G>wryh}*`_2S6sAcplPx9aOFt8upNT{%4W z!h(?J#* zXOjT>`lvtGKh9r`G#^32y%o*O?%PWzme;2eK$*D-Wn#EDw#OGjOHEX-L4Qo>!~OZ4+4%Nwm=-%KYO!$pAk#w31f$^>L)V+O9)i6>^l0($mCMI`s3JX`0){*~J* z?bwaDym!$e)w)T9fDwjD`;aoD*K?%!Gl8uy?cn;(jKA>vwnl630;3-$0suJjBP%g; z!@Ikr+qZtCm6c-ZWR$)uh}lRQ;Rz8Rb7N20>8PdMu_|{L&&dWBXp;< z;X%aP$XqOAKclw#l8X9h%&3FYGps7Imh0F*2sFe<9=$)Ha$?-@l(Mbt$K{^R6E$=X zpXIf(_@8d0SpOZ;`*BXpzu$=tW{J?LQ~;;ULKrdzOOG;F<_3(!uM2na%y(zfXAphp zrPjO$E>Lbqy*1Ht-|;pCk#2Hk5b5$?OLYVc7L0-iK%n-IWp-HBJN2Geipu%cq*UIb zN6Cou2=Y$lj@xE(_3g@lUWbnvJngi6B{W*)lw5qfs~H?DRmO-`jREd|TUzdt*Fq;E z&Kl$~-r4K)J`GGzH)b1C?#iU5cXWQGxva>V;p{mJLrG>XH?=%9<7Qv7*=5cr4mky@ zd9~WNCI%rznkzAuP++UeuP^yNbgt@I8~5_e<-|0$_I|Q^MQ#|WcMk|tuFNAuo`wRU zp5~+GP9;&ZwxBRM2Kaq1gO4$+&Vdh>s?ZfpA=x%NzabM*S!d369lUo5M_tFneynGu z+DF?YF^_pL9a1e5j`!Hxp$keT<0`qqrDX-xR+47W!%M_Di zmeb`eg9O2~*YcT6ZO!p()ZK13ipwwHcxC??B2{dLoHaEc%}F6Yr>{`-XhvPyT-DjM zb{5CH@OW-mD~44#znjhVyxU3H3sp{vy7mVBn7)kuRk05`{W1rgFc;Swpz7w^9E;y{ zlS;WTp}Q{LD_nJ7N0@PXz~lKx)b%+(iuq8Z*D0!J>CO%!VLSPWsT$J8zOT2uP!Hkl zWYH(hjI=WFI^*-0)m6fzvI015_v>j!%P(tD+ zPEKhGE>wHYf6WlSHf^U=-w^k({iLw(b|Q3;pyEN8k2?_~8}Eu} zcxj0)cWAg|S@=9e$S8&dor*wSn#s^mXdw&{UlI7yK@j|jvWHoCy=xHhzlgV?@B$2F zS`cFjH_`SoLYbk+ zO7wbL^yP5GwWP>2RhXwbVJ>8lcwd;7n$&q=1VBBk8YcGh*&N&5b7I9sSu*BoUWb;* zKrhYIo*!{=NJj=@wHp^UP}3|Z!g6N1%e zEVmhMQxz+ZLrGPp*5J_!H*OCX;7;C_(vJR@lOMgwx98c?&T*h+^N#=$0AdE{_EXID$vISDz7l}hz77u~cQFm>>tWynBv6v>?xapPoZ zwEI%Qf$wW6(H=vK-{9)5XKl6QtFQYCzS*-j$-xe?BiTCvtV&p#vVp6`B@)te<1XU6 zC4#_YNx5BICz@h2vr;!6e~*e%3|7@QaR)ZkvH%{DAkRV^3rA5?rAkiDZj|yb*nE(6 zGo`>{q*At@lI{wLLcCTb`EPkOlEv+$f1j8 zy#jahEg)<{TzI#H#*}?ORh`wTM(Mu1oyU>OlhYTq_7112U8z>T&0dk*W3SZXmE+G8 zYXNv>iP>3U5D2pYl>j_%)y0Hg;!|Csgd$^ND98p^$yy#XWo4dKUm|`7Puxx5 zay7gA$3A#$$>8S=@I1~LWR3eOjZJ^@xpabp4mmeCU6;}tHo;>tWlFg! zr15D5Vmq2Rc?&4mIF(Y^gv-?1xC1q4%TM8;CC}^i&o$&aqkjc{M_Qe|h7)zTsvX-~ zSeu${X>nyITWQWLXcvPZKtRZ-@*`nGc_v!TGwK#tasQmR335WKyYYtb2JmW@+hO@w zc2;C`Wb1>u9Si zYaOucD9CJT*6C>d9TZ&F8P?fe6VZAO)j7V=+W5Px#;|kID~OA$8Ok*}m!f+S=+$w< zDcrxN_aPoh5G%tPt$vfWHma=t@TNY$$|3rTfm*UeRM~#kZ&$>7n7XQ8yJ}Exsy7)O&E0v>5K?rZC4_DW87&^;!fXaJR%9(o0^FlikHEGqMBaZ9D;otZ|LF(uSk;srHgM|SiMh;J$4N|XH9lo43%HBdGnQnWdD8(m(x+5BR!qw zyqJ8#!K|~xx!taR2`;8Jc`i@L-2URI&FywRbU3h`6u~JejS)o1);K&uJ`J z{{Z2*?8mDf&t?|c(9KqQU6i$+A>p6JTZyt|<1(yRz);~GHU>F5vZ8-v#<8j2#aqnX zvlGL&Kb%~Gm!6jFwq5aRB=jW}qMz1XPBTG!#& zl?E1Zxe|@P8q4qXalfFax0ZDaz`FU3U|=ifpP0Bco4MtVvR*>-ta8x_HmJhS4FeJr zZCjNsf`qp;hqs~2wsAD#3hgr#uvG_ZY2lVytc3tRP;J=^%wBiwwj9?3z+}&fWMf-! z*6R^5-#>sXbZ>lYuGM>o#X_@SsHx+PZbis#hSDOZ1#ZU6$p*Zw!<}RQY4ym&QL(xo zBCB3%Lrf|&-|3~{-{j{@+uCucb~vz+$5CB@_*yo0YY@~?{dxMm2wYU5_Vx&_+gI7! zp8h+WxCf$dw0@tKq_>;Zzuru_Pr|D3YjOOJf2;FMY>l&%q318w*Uo-4UwB3GCqxpb zJUee7ZeP$8pTwE263Cz4 zlU_vloch{cXcP(r_MC!m?uBWb&wd3WX|;4Pj6+C8^=$95cJ^(`U+m;?XE0nH)*RL6 z2-Kcm7=a6ft2Dx&fEr%}-+Zm<+H5y~gO~7c*lq1NMqeLvTpv46Wo>8h2-%KG*@m0KLoNj8FYDcgRSqvawIR%`?_J zPu59%ps>&S-S_(AkuC}$L5w2{r%sfF*T~a1$vF?Eew&(d|I|9J_ca0I+nwx;Vhttt zw#I2hFCa6ep#`-$$qLq~e(o++UF$ikk6$3!NcWobV#U|7zsMfTY7;65v7L7I@r@N< z3S$Nc=KzxL-7&BKvR5~LymT?XfPtRa00}<^3E#u*-jbFQM}b)5vjET(jpYm#eKfeX>+`^ zs-8&RTMaY${DQ>OyfKJWK=jfKcMR??;Jhrc!P8<<>`K08;mcAkP@Vjb4PSKInN`|Iy)cn>{6O%%yPTi2Y8gWW@$77OTPHUt>s~|k(UV<3Rmy$ zbhca_>00JRZVxv0Z{Ubp=W*?3yL)4#I{W>5!zU&pA@y;%Fn(l6H>&W!vvPdHIlIFs z1X{Z&!yCSNKErVPS38amYT8Jy1#0mwidMi`5lI-4(*&s}@sRbj;^1Pk7BB&20>_F3 zghvs>{MBU522Q-s)PFYqFG&h{&%|?DGH5llw9UdSooRqq zCU~N09WPDa3XmSbrsQE6UGZeI6Ky|=6l@*O;Mf1sP5;ZvdF{#w^ra@h<=_2{c|wkuS#xl z!W{OWVafg#SGw6w)^n@Km7JkFkU(exCVvtT`{iT}1fSv-J&54%;3X)3G2+^Xh%rnI zS!Qs{FU(^0IlX9$`xJxU*vqiG4&&^YdI(FV8V2Ehft)lHN^BeoUbm6V3!%(y3;T4R z!1Y>OG-wtf^~)UO*4kyl(0W3wU+*Qa*>-q%ipMHdJ3`c(GJo z^ysjb=5BXBOn}V9Iri1AaEKgwLU3*lk3#iBWB@wjtV1Hk(j^lnbu&^V(X*t5?;K;@U!N%ttx0vuK41*F)y*rcO9siJSypq^4d8 zc<6dim?UG6SNp)c=-dv#Wm#?P{_O$n5Fukg5ZTV^&?1vA+*r(+S>A38OP*n#M94X8 z%BwMe?6`g*#rN-(Pg1)g`?6la`od9ut@u9qobO1O@o`3b;&+}pck!mJBOfb?a$tBO zzToWgxZliK0R*J^E7=)AU^1(#A^gr|1nfleNO(c2=)M$lhSKU1nQx^t0BWA35ki|) zuUjtl5h|(OA~_Z)H0aZ2*{0r8>+hDJffjp@~nJ7Ou8jLQQfta18b$ z1#W$)C!{<}AUqqVx@|R8bwyJ9)5wILR2(1e2~K!R#>h}ebv-{4bV_uyihxubO)jM& z#|M=>xLiyA4K=c@8pXm%T4xrarAe_3OzT-hW_X~`% zCwn}p1@_T~0W9}i|D~c%sR^4Yt_F7=xX)>3epxffr?~e7!8L$I3iqLm8xOH#-7hh{ z6)pdFA;&w-54D6Tv^<$9jwjXnB*7u{i^c#Go{Ea(X+rz2&M0OrO0-LRXspfXm8J5!4Op|ZK-~}urN66T;f!S%T?O97*0Tqa=y8%oa-60 z9$8hP!*6ZUfHMe2=wOp#0Rp8*QO@ zjFZ9wVYd6X^or?vDD$uFS<6409$UXmg*}YcYV#4ze`37By%fjaNfvhKt=P7Dp@Mw694%&_9TK;J=(713 zy>tpfFm~;(n@4_|^asgG4^$-8;I zKQrlm-Bxw9*uJ0GoXSCamE`<*G?DQ+J4d9RW+TzN=*Qb#{*G0DK0em1Zq>s5;#!k4 zdupV$CR^F)2=IKMY0ru{`rGWaFUafKea&y0i4kdlh3<|H&9@aGfxd;_`}*Vim5MTL zyX)M*WSaytheU5mE6&oQN>Gp;OX?CKb+GI;O8ApE-%?8iaRr&C|d zi6F2t?s2jB7bxpaA>Yn>>y|NMr9T>195GZ?A2gY8RG1KKl^}>Si<>akQXntJIX_=w zd(m!SWoG^dZ9g8LFq*6oTvAgGXfGLUU#oFhzzO|#I|_ZOpL|o8Ac+Y*sBoNH2rNqk zC$a%kL;p3Kl*Lv z{1K=gZ^Ux$u@;8cHl#W}t1es+!E+w`)WKooLtyM+(>t>UJ{5s@w!=;-KLmKGhs z25?ySiFymo)f0B5i%NKlNCLVPD*&#UBDXLA_9;?%6F~(4Kv8w*n>|yG%3)>$NP)Fg z2WHD|GLrtzBTN#5F3NoiA4I|y)9r%WARWvw5=e9EECU;v4k$yR8~NlFH)$H4Pv4%QQsJ4Bap=o-V(TM4*hoS zcFP*hF99AqLu`yECPbH$f#~4-FZ0TRAJ0Fhw)^FF?8cPE5?%9N>rSspo7LK zm;yqTNYfs~v%CS`&JxnRLMxI|a!r!1&SM2^y|n&PM+21(!ryN*1K6FUL(rtG$y#1z z5X&=It#KyGmL~2Fq>H@6vitn&$R-<1SjvKAJnjWrtm#Q{C)%d^+tDV8nBavMC&{hG zsxI0nZ&Omiav4y^ddQ~E&ZV^@BJFf#S$JiPsybJ-kjJfM{&Y>@O-&K?#m`KQk3IM%k)0Tlp5&9;myy%5WL|lY?P;0@4v9)!wGSu;mTk~YQRGcpE;Y_9jXTf@9;V6d z4@n=;2@k4H_bpBy;f;UlOjaPsim1Y$Rn62?O>Pwmnk~sUO$oQ($gi8A-r^~A0Ay7H zBbP~sA0XruvLv6rwT%s?7l7Prl4Ll7=!f;VTUD~(R3!trBEyv27QEm(tK$D)@1DOi z3-mqDr()YSDoIsr=ZUQ+wr#Uw+p5?VTNT^3ZC6;&gl!S{0IBj zz4z<;{tPonLy1);SSfPyNk0}$!;q1>v%+^}%`8vMpz{wPsmWRKN{vx;piwDdgv_D? zl%n56gAKWGsK#&?mC%F1?+zryd)d?qXNaig&Kjm(iU3I$GtB+7xb$;0?8UJSre;B#z~YS!P$2LGKx6W`(csvv{2x z9FxPGiz*#ivr-S4&-bD>b$qM1W%Pq{{9+59^z&b{RX&}lsN8~N6YooviuhxMMBhAL z%7WZwYyX1^RSpM>k~~RovCpoIyqH?8jMC@v9}Xg4`ua~MxkXLe_5yk-%c{<#jmfSA zHLXXrlKXDyuH53W1<{X1W1{A{4x#Tkj25SACLutBE&y`y1YhG4Y)X|8`;x^W5NM3L zY111((9<`*G(9nGC#D{h)NFOB$W65z%DN08x9q8={&lfOiGQ^0Ue4=qxfY=hi(k~{ zRC`zcsFeBSa*kP;QD;0=M7g*FVKffE)LMa%2sNs(!&$_UvFbgjL zE9`Tzl7uuFZ>nyZ^NlRIqk^_PbWGy!Y$2 zNE<_POIeRiaNPWF@fiqI3YDiUw8}nE?<%~({mhoe@ z-!twsj{%#jzqG5-7V|gpAzsIpyRtxuoAPT=TWe6OZu6T^a#|&~o6bmEhgf>zi<@~9 zDa(<%lcrl|mpVDN3x&4R!i4J+Ocjw)8{;`6;>^nEb6yKbuyFb<;+;$dEIs zF7Dsd%U_14AJc@;dx+HfI-c329DB?AyA;4ZDziOmw>_HBJ=)Ygx{|%G&3p7idkjl^ zj7NLlp7y>&?=xZVGgI%gaO{Iv#rN5O`|M`>9B%uZq5E8^``jh_Jk9&OL;HM7`}{}y z0#Eyb&<8@;2g1|`A{+;z;s*fWftcBWxZ8n5=z(PFfmF$Xbn}7C(1GmIf!xu7{L_H~ z^r0g5p%V3>GRL8c_@OHBP|fTR=ys?cdZ>|ls9AET)qJQubf~j*sC#s%_jITaePn=r zWJrBv#BpT&xpodbGBrCgb2~B*J+eqWvMf2WYCf_aIyvtik}q$&x*~? zO5Dy$L(j@m&&o^ADw@wKht8^&&VC)8RX?58K%duQpVv{J*K?dVh@UqC&zsE7o88V^ zLeE=M&)Z7Q+ndijhR!>e&byAzyPwW~Ltpe@U-VL6^l@DDi(d=?F9yvnhTJYb&(TLx zFGfo)#+on2hb|_TE+&sIrk*aQp)Y5!FK4MQ=Qu9s#V;3tmy2eXOP|Z&p_jj5VgKbo z)Boi_|2F}c|C>CK{fSk-eV;{LE&xB&OVS9v2d1xWyNfu)UwnrLujTGV*V%!bA&NrR674wi>ccKvlTJ=M4a>0>M za8duwfg;7Y`~Aa#>is7N>h%u?nri&tIZ)zhJMJ$T`?+to+1Fd1*Jd9A&BOII0bd}# zp!)OPtyEU~>`w$8b}r6%GjyS`e9!%O$+G|L^G6-()^~0<>iZuoLsc8r*OSU={x_vA z6#sW#ZQ<>c(&o3_YoAvHLQwjiAj-hBuk?84AiPE+1Ub_WH|;zn{O6uJxtk!2sw}96 zFyS7{8yZ5$yhWjrK9n`v;1PO5Xoc`3%+To|#)*6cG1&h7(Rf?7omj7Ny%Lp2j__q_n{@TQo{t26EhGjX}!T z1Y^_Bub%9Q;&k=5v4)uYSo*dr26u{EXjIW%rh}kc2!2${zN#F$T#;m zS&pTirNyo

    CiH&p%}jAE=7aSD{1_`Km1Xu4GAXuqqY8!JK%hV8B>RE1R)8k#SaE z!qH_(yb0SM_xL&X@Q62q&RK7FH>EGNd8}N1@_GD9X{OA-CsYU1p#Hjm;vJR6M*>v% zIHj)|vmt}P?WwEFoXf@%w$@@kRf_GsfcFos+zs~97+h@#e(XD!(QI8FyJL6vo6Hx7 zE`0f8w~v3dZsD+T)y?5Lrn@f=b*__+ z&Db(8_vKQ)l>1V5*#Uj6A0o7-5iz@QfvUA>$Ml8^?oQ`W8rQA2(jnkShG8vtR6kD1 zbr^jIH(Fc@*fW3KNgj;BL`-TXBeGqcflnviwJRxyJd2M- z9g6PDszba$t~2BrmC;zzRO*ICvi>BY*_@Je^vIxYzNg(42hUlQSG3cG7Y z7`uMkn-&Fm$yF&E*q>x&c6KN~*aFI8l;l^3d?M5{N?Y(NS>Jtu8iP&8~L zLc9a_sar}XeeL#~JU4Oem`Si7?L0UETlb-lv8F^8KKeK9J{Co-P$6FsJ8M!;p?80O z`D^imGh^o`$8#^$mHwHP)D968c6vRi2920#*6CUFn$` z&tOg4@1JX$ykm#*u2gCB=U-aiMDD8HYi>6$9Mb6r!nGELfts@1415a`c97u+y0`r1 z?|?ykZGREHJH%buLsy)pdj0zZ2Lqe_DQpjTzg!t{%#TTa;OkJ~-^&NLyxXJ;uMW{i zvY?zUZ)UTZbVAS@9(yzah(LGKCcleiKL&uO8HF+|yM>IXk31_| z6$BM_lCN;T=kE|^FV+AJ^?=D{AJJn~%wA3XB1ba_C_7gpA5j5-sp@(IW!o@Y2M)_a zp)w#SfIQqbQp_Ua*rL5r^J}a4=2D>g4N%yF-RY5;b;Q?AjFOK+_4~d1N7xVj`=C4V zz%{eLF|%NcMgP7h8OD)dxszb76-b4BZ#YOw&0;ka3^pwbP94}_OD+ckSO;w8&<}OJ zW>Ybgvm2VQ_S9j3DXuPZl7=U)dQchH zHZ_HJ5WDtaxbg~jLYc{tdc^QDYGVlSNKG*pR`U1!e*v)pUj#!fGg8SD?}OjN!p9mS zcNZgt&7=Q@qSlS*)9g#;KJ&Bfd})&e>v%SvUpAsA*K&elK~IW&EsSOgiH4z#WjHX9 zz}52!2o2_lLClNlOt<$0lDE*R{*f@VOBXtlls>Sqe_L^ZB-P-+j=4Pfa&5ssL=m?J zOTOKp9hSoM@+=CXwfO1bSk0Aiv!qEa9$#=2yQsn^#1V;oC&1sJ2MZ^`7@8o#7Ln`` zAW)WAWnniX3NcT?YEq&S1!|1PoD%|bOKeOtWO@;1Xmb_DbI`*Tke%0loM-1cjY8`a z=7&rC&S~(q-0QDKaw1m*ppgZlF&Qh_f+vHNj*WL=Kj|hdanB+}IwZv&7$wr`l_VfIjYS&l1%oJM!}UV8lHhx;uV;Y?&6tg$W5{~$f9_X z0$|Nhm2yn=%&5vR&a_PUh812nDxbGX4BZTFv;;+xo>lLuyS$WD`X>v5E@{+5CNd&% z*pe7&ArXd)yVldZ9rU6nM5|;im9to$@{K!c&@%g8l6ce7>-&ozfkbYiMQ%+*t}#}2 zU&hb0gA9XmiygF|fQaBrJlnF246IeR^YWkYRyl_w24G&6ZW%<7?U})*mRFWPd)o3; zIJ1#o^N3$VNZULu_v9;&$3dmm_kl-z7&Z6F+iRiTo_YVq^x#j0x z5?R_!s!y}*+zM#5#Nqx(Ow|=;x2euan6^AfIFq_k4i}2T7rt}5{`D;4#Fxl^kR0DF zIzEktIZJ~Z6Zbb^CU-AZ$SlriDu&i50X(Y`v*z!QN;8|ojtZCPj^%!~UT5IM1K5Pg z!kqhFN*vmMMuQ|urH)h$j%D;K1Ps3_5AT+We>HmGP9cOBFElTvtSF1(i526?L4@`^ z83=&+QPhFqysS!?ZdJkIRbl~OV*M&+9affqR#qrogsN3A5mu4#$LFlE9A1;N+Dow? zty1KyxX~*$dOUnqVs!lwm z8STF|+5@)m)kq<$3Gn@|AZv|Y2_VKR`ORx%lB#5vt3!utk+hZU=q#5lYcLSX8;T>| z&a!!$iex~?Kmk)o;&o-nC@&?R`eqmz?nXIeHD(k=AO5WRw1-+M*!t2}FJ}6NFzhnv zWOh#8AN~uF-M4lA@a{wSq9gc?BD})dP#!tvEK-$?4#0{@D`Q+&v{MbMX)iu)c4gTW z&aU1jH19BdZBKxTFNG^$2C4YL?K4AeriRfo8&Oo48t39+yqemU^mEm9*(11pNa zi@p+LwMFnH8Wh>U`OH#k(Ta(Y5XD;@vz{pbW{EeelhGOh;}vN!0`uZUkX6~bcT&jb z>g~|P#^n)*IiIbR)NUCK>CGTQ}??L$2(p`wj1t5X>6hptWalFOZYM{{n%Z zC#s`@DuA@vAYIBjyg#_t!e5CtVW^`$xwRK!B)X9*-+4xgLbmT3!T56=^?1LhE`lq> z!r$gZ!?CE5ZNf=d%7}!)C^xugrmzVfaiHqaa1^V6e1WqY_+!mot7oxNZlk^mFMg7~ zz#mhwzPBpH#DvX_FY1-uueNC3G%kT|r~|J6&nBJ2r&k3q2zP;RH=*m$sqVy3;}4Rt zr#Fs=LG-8I66!PZHM^cV$){z1WC=IUZ@pYYbM)40G<2cg zMs`GK!#r2V_gGaP%=^45NI^e`1U~c{HdBKbyh0K^6kXW_)jdB;IDMX>5FG zWjO0)yyxAj@140;X<`U**jH`50uS=)d8B>9C z6m-V0HELeaYfyJ*%ZUx3notlpfxpHuzUhj3$5%jg!W??YS&~uuQswbBG5xV20z#b0 zLL30EGy7GH3S*mVC@$b8-hhWNc|bksB{_+)X`S0T)vtqZ=Yv{5fl4G-cmguZG6wcy zz7~Mt%(iFE;rdK6^5cJxL1X<$6%I?sId5BS9rg&Hd3`?Y(&o$=@h_F_4k4u3-0?}*%QQh2&$C)B z7!WPdPtK|8vTNupFS#v0)6FJV=2LvkXi3*pGIWo0HmdNiWD75kmsx9Eme}*FMRzS9 zUR3JECQo9C=#XLUP!SJ~uD`3TJ?*mmx84ys}<*U~I}l&sdo ztXr-ZN_Q>9+Db*J73YoR`R5eF^AFH#u4W?QS0Tk?aBgVoZUj^;AAktgg0+TiDk`Tw zHbn6^S0N1lMz00>;xET+(v)s$Zmy0uE{%32`rHVIt!*gSZn5wr9gBwc%5GMC;9Vna z+cvLeUv5vkZLGmu<8Z3w2FZIAE&Ep12P^kslHV53ve#t0x8HMS*4lNz9Y=+w z{rIb^iD;bl2M+b+cCq~24Zj`Xe%oi&!&AU_}dmW71=Od0KY1w za`N&Nkh>rL?JUxKTUoTeOh7nQg&#W4jRHqC)n_y*7Bw~Y6sj68IBoB%{7F0Vip6El z&sf(^WM!kMvk-HzUU{(oztw*_xcN6LN2@P<`u;gFBSEYSGzA^ zO_}L-zRVkg#W7qA@|;oX*kVwPDlb2#XKz?#DDbb_C; z^Iv;NlTN#l3yM@#-+?>cN$cIQ$%`@8xPeLDvefKX{>?%?VM2eF6ll8V_cswDxkBcA z;HRvSu0eIoxy$gwdkYKEHE0igeL($wza)E)G#*GQ`rEqd5os9guO9!7pND~s_dB?KOglgraGKN-BSYG5^DXI`0qy(iL|_LjSSl zfUC3zh{QsB?L86xFAfy)3tWAnSmHk%Xhi*vw16L?;Q%gr5i&l#vVliW57-YdNLVJ1 z8?c}-OnM8#e>hO(61l9BV0`w12~vT7IM5WZiF8$A>P39ug+{&UWUg2i@N%t|D2jX$ zZ9o!(R=qD<6TMh-BjJcoBs@DE z{eWr)Ft!~{X7hUgMXb2xu(;a%$)T^Kbt$}1t~M?HQ}4rTIke@tdR_aw!>e!aHi_N4 z$M6BcEeIyQAk9EIhI;*L19HO!$9=Uhj3~klFod66L1J5ETkm+U!22pYbj1^CoRha~i{d5xUcz{ji;f(T32-=6m zV3_z1r7M;6^&5sFP6}_+VlONorcxHBDO*4;;Uc24lsnYiVi-f0s)}KlSk!!sOY7-8 zn8;(EM3Hm|kW^nnCPnNUe>#VDR3D#em}XGLBQP)2YDrUX+E#Hr3Xwli!+m>lOe4l* zP^i>Y?2q*!5^I z>z#EdudfVM%_hV6g__&+uJ!WCAiGc3Lnnqfwe{$8n0>`4+C5ceKc4F;9n7Z-!_y>% z?CuX&avXKWVd}6Bo1r7fxp>vA())wOJj3J2Oa7;6LB4VO1rJ0lNz_)-DZCtzy$EL! zdF8Ye4T!5AM%K+^e^s^MbzTh;zq77&WF;5ahQ33yK#dW==RyAT z@=!ujx6D~nQ+&GucLn>K^sG*82ZLhzZ~E^rZb~x|W|L>s3`yg1=&+dEydYA| z;UQV4AD)c|na^bnQMOL*C_!rlJ}gZl0_6sURr%zT!y~&~PO+7g;YLj0Vah<3R4)1g z+&4}hZ9NcDTIAfJDPhPDy|G%|o`;`IP_$)lMfJiX8&Rr|Qj&JL6B*MR6tX*{lgzI* znP?r<^7X42&|o37t!PwS{j0LyOGeTw0Ol+TdoaPU#W}OupPqV^MpghV^3TR%Kbr`( z->XW@R#CCg7n&&*{D(Y%OqqxrI%XI+bAej6#Zp1WsFKlx1io6b>Df}Pe_&%SITEqd z=xK3M0b4ON8Jvvv>sVSJTZvCrxtN%h%Jsz8(j`q`ncKsxJ-BNTWQcKPZn&f5}`v`T|X#Dxo+ z$f~YieVX;dy0s^EkK=2KegIYF-b7@=EPer6@#V2)%fsAaWNlsSqOB%Vrox()vrZ|3 zrAx@*dVa-aLmpa&g~U4SUFuS!u%)$g3#|H%JYWrR2jh!p0 z&I3k!G1|8P_lmTpUnyt4^NE17tNCV~n94xbl7-^z7PDScHJ10uZZG6!_~ zJ_ zA!5#CW;Z3M!5)4gmy{XmFr2H-8;`!LonTwWW2yPm_9f-srV6Oev3^#q?P`>b(M8FF zqeTWBx*-hj*cFd1N%PNYqHX@!>?>sCcn#(KNK`RgZ6<6p#5gz4dxV2!R|~X?UGxZu!)}@?hr!7*eP}R@m^yDQinp zL@kkAj&aH{Ne$i%jN8e?H=+n>;g=}>9oN-`wNvx77v)Ce>|U#P^ZHAV+Lk2FUo}zZ zx-=cxvGqqeykD;mDsPo${M;g!KS;gt7-Do%F-*yH)pO?CXF$j`-@?4^0$|Q%5?G!~ zMMrMZh$W3J>!1CaUy^ve`2K`5zKpl%<#Ap}Dsz!IPx}+g*rg#3pPPbQb@KhL&?#Aa z$xgiXATXW?mBua%N@|Zl!53Dc*?hqmi^yJ# zsP~SpkA{ecAUrT1)}IZ<-}?kQd3%t2(jWDG*?E!aK4eU@v~dO(3F1F*X(E zAYM=)C-+XCb;r)YuhR3All2BO^dqofyM93r^^3 zAXxh`tq1kkka#K!R^kUWRR>e+;8uDDbr>4HJq(($AsDE_uHcGm@%>hl5r@$nGHU#8 zelTQyF<{{mW4R#y7LjKS5R<}}&^#Y4+mq8x|2ycHo!In2DKPZ`AUd5mmd{2*Tt>t4P{RqOz3@p2UEs4LhqU3au#3h@4o1`|SvV|v(vwGJ z8Kf&^;k$X;Lsq4E4W(-?hQcZ^RN%)WM*cA-QSKvyFCx<<+t!Ro6%#xTJfLn%&Iyc! z2k#jV*cgf;m-?Oky&7|(*JQ9?i#`pWzEia{9#gWLO=1Ml-g6)|b|F^$RW^J~cG3r{ ztEhZfT72e!dp2A2lS9t4$u^6~F6xj^*~m_!13)W~tgG2lYa4)mt*_|Pa+^A|TWm7h zHo`lYjksBIdp2VGd{drMzj#!p@{HwORqNV}*k0h}P6_4D76#}I_}2NNFE*w&O(sWW z>%HNpn-JyiE@bcDMaHDR9Tv!ZSWOF^O@*!(y~wsHt$$uiiPIXCe_%$UjZcF33a?Zp zEv(7FVIsAp(~jKOF>Uv>j$4t=ImOt`VF*$LYeVLKF%j+{w0BxJYVLCBhg*BBIHq^X&FBnyo1LpYY0LRC6_4 z@Q6ZlVhi$AjDplTQF zDy1jNoVo-|DUvU|I6NtHoJsP0u0!B{%>`Ux|@XiV@;I?)s|fSf8`PK2<{f?&uz z@2~zW@_C+LJ*~A1GJ^}V9m7Mof-1%nM+*bc2@51SGs?gE$@mw4T1S%_2w+&NT^|f3 zAuNjcvS`_gYr87OBOo$t_WkizZDnXTVDEaRTryHqbxDYfH&6w)0nV93Y8+vMUrRwunG2+jS}v2`xGn!`93!V4N*#QcVF187i&S-BcGmn(!kOkxWep zT`re{HfI>2G}^7hMd7$g+SGl-RzMNIL~*+ouMER~q+qTjC`J^o#QDy;Ls16jsaqHS z^oCkZHWf2g0}2IVcy>_+sjX%_ili}Gujb|mCk)b#B&N$iF5Eq=7N-1m z*VWKQUkf*^l7CbyN?E&{pBIa%Dq&xR6<#erT!U!TaP$?eI>e$lU#VtaFX~#6#?;ms zj0@*qZ`l-(?OHX_SywehZV6fMq!OT5QSrt^u$dV04AknP(%H+>POMrd2VmtgZVXZJ zHp=R7O^BC0Y795&d}$hMr&=$togIJF2@2XEU}GEm*qCD!XpBbdWZztLRjyoEt2fU-F zKQiQQGPFTobo;tZbhS&aw*x25wY5Gbf^USuzDHA{PuXoqXb0GV7pAD`wR*zk?$P%YJjgxS>4bg!^X622w)?fs#vUJC5sn@#_cR^`qJKliT&5 z(Cg>a>z9)2*XHZDq3idh>yM-Bzfad7=o>Jcn=dps;G8!Q5;u_QH&Es`(C#-dVK=a8 zH*lpl@GUn8!#9Y_H%P}f$bW87U~W-yZqaCN(K&B1ByKU)Z?Vj8vE6TR!ftWXZt+TQ z@mp>QhHnX%Z;6g?iT~V^z}%7I+>z1Tk#pWrNZe7X-%*)6)gb;~kXHr<21Z84f2*Ie zu&}VQvVI0oIXOAGxVZi;gUZj(FCZZBZ!uI+QBeQ@@c%Z6s-~v)|GbK7YHIpF97gr? z^ZRETH83#npLx{K(9nMtQX?ZH{~1Y*jg9>eoz&#ySvtB8)VUG7**{njtz1MSyGfzbCI8qDTU$yLZEe zLbAjEmAtz3A<{d44(t6l@=Ei6lGi%Y|3+Q`|B1Y^5n`ynKdy;~5v{H`G;G|i>bOrn zZE|(Q;BGjifi8pRb@mybC%tfnIJfyhM9^!BC|6v&A#bkFyR6R+!rpAMU zukJkV=0)z*?2Ef}ykrj$`T;h4-u?bm#d-aHuPv-9ukWe3Pl^)8F#!wnepdvn^3W1R%_>fQokrV60R(|=D+Wsf4OwSZS8 zfgm{PDG*W&G;YX)WgKZnbg~a3yf9D@;1a5gxd|cf%z{e`6KO7IqG6!ahcz7O$4zwz z9jn}32H9~X5z5<#@yiyVEJF{F!Yf$;Y$DKTPDH4*&_V@m$lr2tn`kplA{{ykaJ|#T z7+KauNf@9Qt3W-NG#2M#iO;TD1sL%~1B6pZAy=9BA zOlgN%;hE#po(E_E8Y7{EcaV`22UvJ?5||<^iJ#wC5$QeSWvuR!`7r~&mM#xdH=`sb zvV|}tNlHUNq6XUn4vE!9$MxeB@R?EfLEtEj{FUjT4P8g{`FT7DcODz&nz}I-M5<8qg>D>-Verp;TULHsU7#0nO+k;qQ%lj9 zx$Koq73ubvdJU!O?9TFLMmZ9}wyG28VtQtwR@H7xHI9T}LeEvBVnP}%|7++^FhdI}b1DV~0 zkq}&7guXU>%f_zqmtDp*99si)KDDkV{lc0*(_~wDO4fffc|Z^AnB=~Tqo!DP*gXo` z_rhteQmH23mDV^OYqV(3xk9u{3F$VavL71yCzp}*pn*~8Kc)0vQqOIw7!Ph zCD6B?T(-(-xVFB{(w8HqG_$a9@Cs4ycmytYAy7KFmAdW})yel(BiRRyOT{05b?acx7+&l$jq>RSCeM?3L9EC-!`@5S&0nPOfg$VwF4Q>9|;~ zA~-`NUtv;;y8S&%Km(Q5I0XRZZbaiq# zIuc9;oGOfDB`xC;U`2~pnrJrBa*+rioj90V8L6)@lh$KwkxuiMyR@R(w4=Yt1b1SI zCl>wKX&AcVj0fe61Y|L778|wn((Mhc(Pi(_aeo}>1yePJHF78Q@_vlsXpB>)m{bt= zd;)%OtjF2$@WI}tq)=KUy0sFL6|b|Wx8!B|vf+w^--aFq-?4&MAd#){F<=2=9sEPI z>WqWekrHq)1Y>IYvg>qCVG~Z=Z{QBc3iO!(aBmA*Ey_F9rAL5NQV;~Mis+S=T&E-A zNPb>)DRftSu2Dcl;f*Ps(V-b&-yd!VK@Ki zQm;|ODd@e$tC3JJ%zOHA=_By-F|DWO$j}|R-G;c~$-bTxl;Y}hxT(Iq!j;gyYq`Bs zs`s-H7VYm7;jyo0?2RGH$JyY*Lmxu)?{~>zKOZx<`Vdz%%78sr`DGfgn-RdY|pM1Q%G11XxP94XhnpT0K{D-6iHDf2n9+gb%a4S zBxjCScVV+7Dye}V2gl4L8cHVY0c=VE?dDEG;T~{h0oOEYC`uZPCxE|LQgBpK5sDlS z2TbB(%)T^A8ct$-CqWY7!6!5r050DJoY0|ECAt&HiDG;0GOH5~Wffdi8PTBbM>hKv zWmR$!QWZ;b3?)McC$d(1W~ER}tl-O*07Ndd;6dOzXqev&BgoN}9dS|32)xO-T5xX-doPE#bHI__!FDPhW_^U=k$QMwKhI*^pwga0tQtKpox>7Hb}9>rzur5&yYE zk|vF}R#t(akVi=gUJ(wL!=ROwsG$A0y>v8l_jqyK(BF~?4U55(>`vYT94R|Y&~$u1 zLPMhaomuBNr&q$=E1nOqkq(uioed@5d* zs7d3LU9Oab<5WsBRLuO9Woh6)_;CKX5|ImZrf3A08%CdcY`41QtfrGn1?qC!c}4IipURtAlHJX-UZn6l z8Jpy50wXe9qaq?#Ficg%{X&LW8&*Y&rF;bp_*q0P_*`|Tfn=zd2DNY@kWX3ds#&U@ zSwlx=3aMGjOHA^$p6X`y9S}JYsM#f;6G+*8?dN&+Vb5f=JK>3pOw^H#&!`Mlc)-h| znVp%XBZuo+n`JMDDr1sE4qa}Eq!6@AF7AQNw;@sn6W-h()H37U5Wp<`#hr^e6(*lEvrw(g zbivGaB@`OZv8eyaB4a2)#>!82P*gE8Z?v351=7B2FzTe-i-RXiM>=N=%AOspghJRF z_{8)#y~GMW_6R!cgu3{)PL}}$5d$sFrs-AcluITFyE<<{YFq`XNgzw9A+DkJZ3wlWMRGYp?S0{&;xam53ihN=X{q*uaFMfw2l zuQ{z${}-aA*NVK9%9PPxK1aW1+BHSAT*D(=TgF^Z+r_>~6J5Uk3Qh51q^>z@@zdoo z;%2TcvZ#ckxBB3bIMXEhqFv*)P*dNgne0`~GUyS*S%cAD@`hbEB4ywJLxfdX+8$h| zb*4ZtUWe0!LHbsO(h)-m(ymv)^awm4q>HMOrm4ENtc|3Uj0OwHDXr%V^^PyEVV6m; zZU4pHp^?}~$WLFd1y@t>wb7VT65H5Re7s12K2W+c?vN)3ND$dQAWf+)%7Y-S5=E$n z&>#oZC@fPY%_fOGkh721Y((H&DAC|!ZKIgt+uPV&L)k>>O6X`^h9utdt*l8J(_7y< z>&JQv1+A~Cb#pX=M&w9o$(t7UZZ< z%ayj^artuX7IL^CW?Gqk!*&90Plh+iS~l@&gn(uE=rrw6Q~KJh;$ZWX4&>X$gfn(@ z57|Dl&K%9o4;3F(kcAkZhH2zW`2=qVQdZkrrv4mn>(BMz5KmU6*TB4FMF%Xxezmr+ z)2;%9poWEZRX5WsFRzoRHdyO!nw4($$8O@6qEK%ZSoRS6bAlIwj)u|SD+e7ICn2gF zJ;&PNr*EBd>wdJ)eqa$^;cJpS);=sAaJy>+SPU(j9UXroInh@{w;+|UoWBTK^!iAI zHb&J7Y#2n2gjPJKOC?up_V>XzY5Zv?VD4-~lkR6{U|;1G(M|D}FlBk|i1{wu48zb5 zAXMC639m|T*Hu%VeCA|&SJw3@w25relwm{DQO53PliLsDL1c$z>x3kX7WOG3krdjvxyf+9JJ#baL68Tx^U&(|7{f=1v(AlXjRraVYkabm(lL9zlg&V zjtz_MqnqG~s)|kN>1jqAEae@wAE*~7mJ@PS)=>-6d>*wC9ie1yIE!iwgNwH+&WEs+ z6H>7hkm{-<95s?1kJT7mzh`C09>0BN9ghwxuZUqjMQh@j2qMf!Q_{wluEZMVh&W72 z+nH!28~051mET%L6DRl=sLys68IC0dGcba{>wBl zS@SO2DPL>41T{*gTzM0b2MFhtZ&6SzG0_;Ef@(G+h|sG%GBtnS*Mw#qglmL|J==t+ z9628?4Qd;2)DUGt8VY0>or^~0S#6C5ll}y&)16vf$GT@p^ElqIk)l?`P;9MB$s$Dy zjokULvWpvBs3WbW`HeI4_XBlgormJaqalm;ohtq+PBIOX$}!?*G16eR)ynTn&;~<& z43ZFwGYqymGE3@pk4xx`>}h!o^J1#Bt4mezD}~t0nY_zB%~@(sOL~(tRb)$>i_3l= zbCE5X(m!@{sZe=R*T@iO1_U~;ACJgtN8;EHXcVm1u*iPY}ZpJ=W0vVIm|Y` zfwJ1}RUmp9Q+>Is+~`+FayHr_E&obH*td~yQ}qva3I3S%Ezzd?5Q|CX9Hm$KvfM&V@Ak*$vOm<$)If0} z-P)mUZM@9-DgSsqRzY*9bqWyeL9T>YBPc0z8-EL*aBJ5}9Q6>=wEbnx%i6v%yVT3G zIB=&Vg8zW7dhIX3RsbIT>B!-k+Wgnq2>QSfSM{dllP-*-wB67KbdQWP_V%|1)_OVB z9jWqgC@xp8u43CwnW=-R1BhlbbW{AYz{nDgzl)l73*dDY)y1e8n3npnKVLY^^+6ol z;?nAWi1Hq^lxVmuxL})T{wBk1c_Qe^f9ppF-aC|ERC)Lw*4p43`J%4NxyL?P;Jg+J zwdcP|35wzGlb;3Q{ykA$C`**D1y8GEM{ZTm(Xabj8UJ)zNO)F|yXhB;<~>j-Fm{&K zY|AWfOCz+OYIiP&U!}@W*D0S+*3~`Bi_t$-n`d`1+`Y|Un=p@EVBlp# z7Mu%_1Z1=j^LOEkB8$73kUKj2YkJTu<99vcj@pce?abs|^;mpD|IcEMGto6V+w!kw zy;}%`TQvPs2cqMGAq*yau@1(3JcWBT3^zg?mpDEQ3sQ;2bxP}_J^z}k51~3WyCHx*Hw-v3og?gQhw4=YK=+SWnXg}d4%tz4w%oK*USaa ze)e_|al4stHnVCw*rZ)@X>W+~uIRqCC+okA4PvB&6#S?8jkjNH1@ZGpUc&^%4Qw&& zw^i@1Zc4YGD`XzfwcyB$T4XC8nb-f=v+Ox5GurPu zg2P{b2OTW?oK5~Iic^}a5m@lw2o!uSu6xtmeA|cmc!hnCk9x%~X|Q|n2XhqJ5u$<0 zLF7x2{IBG7HviwHPqC>)*iHt9B@?N9^Mqe+=A=`}bg?gRRgPpcKhviJ8A-VJd1`if^t)PAv;CaawTtEs#E*hkg=L0(&c6$ACBP|Y|( zq=-_FXF7$_mu`*t=r&Tx7KHUSFLQ^weIZCB0@<(wdu0wmcH~9jXbL57jgHgh z@yz~1HqGaHbChB~1#;XDOBLkk8hz;(^FTT?O;}pg*~1R6hO9~3aS!t()eb;fGmJ^RS9M&~5r+Wk$q>Fn z(u-D)@lN-n%x7KpQ2Im81ymlbmklNxL^I1U4<|?DFGD|!_E6MBhfhQ&y4>_WR_G+j z@ur!uR3YX^E02YtqY8mRpu;NV;e)IUYUFt{#++oZOz+Sqm^O=&mBYSqB{32$Vp=Fg zd<{V!h3(@p?Vy@1m8j2=G0rZak6Dn#!!yYG~N zk>3W`zjKkq%4Y@^+xw1NhRt^~a?Vubo?0a+F10%l;5hL{GtC4*AoIN6h{hBAUea7| zOrjz%uYJk&yzE-LB9C^2$a>o_T`Z>kBBwC(cAUVaKq;^ehC;}+>jS&wuz9H*4oj1Z zxb(@er}N^ljFY-aaN6eo zC>Fo_(EN&No{hX0CFoa`GZ?oi$eW|!;r!nJM0g?{+I2z2sJo$}JD&?J;PDYBd~hDV z0|?}$DVq-DoFzbGd+q?u4BGpZqsKtJnPrRJ*7&DjG9((7oa_EGh~o4x9uLdt{1t;^$e-h2!vp>QXzxB7*>J$UkJl=q z!&X{*6R~&9+Iy>_s`l1ev0J5xy|>y`v(y%9$1X9e_}hCEBu4JOfcxn==Sg0{^#-ob z_vaw}nbg{SA%|+O?VCK^7BSSTdsSr=-piQ&o)yn2?>K}L23OYkpfe05PZO%<5F!k) zqAYYooDuVwoI)+7nUu#+gC7|>rW!AqEo-JEqU#YIWz|dvH`1_<@TaJEm z&3ykePF*&82HHAi-0ZW2@6&5p_(DUbLKuPcpBIBM-ci~Xdrx?#UB9w_;vSu1ONl4) zV&NK#R+SZ-%4)~A75O8iZE8Xhq_?r<(G=b3o?Ryh+hAHBP}e!G@(LB7vSh4ic&l>dniY_$RVt7>W;|SSP^%)EB$)vCG`BsF zacMJ7&NccbednmV>ePJH8e^>JL#{7pGhNJa98x~aqMWLc1Zt^;*8O1@wb?Z=WO!WG z_>S(){*ZADhhZ2M{yxD72Pq5Fm^%hnFV74aKFd}y!{Zu3Y7n?t?~N=aDZDvws4Q3D zjW4m0WjdrmEtqZmQMjCj6)2JL-*uok+$=DQ&q-2&1g4 znxpAxJk2{FhsMHFOG(um4&&J&WdyJ%g)c54fqN1_Ns>hbfymXd`ej?d1W$g6ig zDC&=)I+7`(%Zi%1Qh>_4OjW z1US=kl0B!07X6{X?n=f>EUKvDYgTl%x86ym{u|d=V@>q%f_z}1-CnP$k$$ItV04jG z&==C9O)bfqYBc66R*$jp9yj0KmpIoib!rE+}1S|m^ zxUA%ZT0HMRpM={y6o@S-=w$?zMX}ED$O`}Lhbx}c)1!>&=jPxt{YP?|ksCRk0L^-# z&#BLYHq9!UJH&NpGT|0m=6_K2Qw{da->Xc)+x1}~oepIdMdZ-a@52c?#U+1(6t%Br zr$qe)LgfaR%W*x&v!ak1ZXE-W&J@c%ptCx>f9p}o2AzT>zSRW{hrd5J=BFQGOEDD>Vg(h9;4u8Ip;v{?Dabs1F>3P zu}b~Vh5U^7*N{Ag>dVdu>t9>Mt#{|lsB>!cO=UZA?d?=&{<_@SiQLzZ^rs^fxVa=R z1UsA7x{#V#mw|GRU`#~#Pk&{1$rq;i56cdYbluN)xu@h$Xi8_1&{e*rrWdTizs(GG zlDmV*A>S$d@a&EXtHK|aqpMQbZBdAhVZgbC2LC1fAP8j?>1eKGJR(DzH+in$iocGD#R|;Tpv& zK|rVzNriBCc6XnaYsaJ8*4>!OhwUA7EnWJ3aRya=%1X*7q#UN!%4MF)A7kjuE=1d; zm0b4w_NMx2DV44Ih~LJ(ETS8*p?GQoR>_WLCg`F3B-sC>`-QBQf=fx1cFch8=<~Zu z6`vAfS6DL|mzn;BoD6^_+KK4dR1yC0&pGaH3@VMByjLt$6EMR zpg|R*k_)Um8Hm=8LjUB!U&y4bRGr639PpCcjv1uN0>}6(m^)<)ocE@{R3u8&0&Sz* zrp2r0iwmvel=Rf4Z{P{j!dw8_bz7p_^AI3lng_I{Ps;jA(Wp?SJCLf7^^ zi;Kg-Vl+GRmoR1Df)~kGz*v^!Xw-Ga?4z&n7l0hff_=fBb_;di@A7_sw3a_=e+H{z z<}|gHu~|mSdwH@D%x0j8(g;%_GK~!*pD4v|lQXXSF2y zii}z2HXctCZ5l;w8R>2>#vGW&jOf(7)|)672?y%6p8!s$Gn)tXVjZ>csq`-|pa3^O zus0`>arUt@jdL;|MMqWFt=@=0b$+a#V%DTu@=($tEXdk3_-MU*9io7FD6s)!rdi-@BedG`q+yd;C+M#7TI z5l9$9FfS&t@>x_^;X^z_8UiWy4!sqnDOqi3It5XRqaiX#TOw{MnKD*Vna(@9F0027 zQaK^BX((4}G;ksN^#rP5r(-TOJt{w~)Y0${fva>F-ok{gY!Mp9GrbR{DXyUk{oD@= zsZNHIp7KuNvkKzjRv8C8W{Z%S*P1b=GHG`-{;@L|H~*ydb%sLs*o&bYOO_^)n`xyn zV-?HUeby48232+BxHWQi12&ycsv~Bp3wsc!UrmIgm%9^?K8YyMJAB46U+Gk80;xC2 zS}PJd5UmBwdLT__9+`#@5`7pG@e-Av3&XpCfOg)^`39TfOi>|*K^W8Gxquml(7rj> znK^M$;JxigD1ljmqj7I$tXEdY{aNjHPirRR6}urTo?(-DsYy&$2h4(wU-4AuYTFyj+KNU6t zsDuSklJT^jIn-VY-|{-+wdixJ7iztks_tG@-$IL`4Npn&tIuSQCE8uJze z-2RdX{{0!D*ori(p)ZuIhZ<_&i{~UskmPhC{}NQn#%0!ZZ;pkem=P*jBpNUF&qP;F z6u{FOhD0r-e(K~*EOsP`<=-u~rl~uv=E0b76+BY}3L2(^7cjgA(AhEFx`V~uILpw- zmUXn2OAn})f|pj~$asYwtwgXVAH3`azOj~hvtdbES%BNRFT5T6W-ajzzq88n;p{$g z>R{$gP7Cx1`KC+6s+c$aRHlUdlli`~m4@+u$kOP_@=A(utCJbn=VGg7pM;3Y<=Zq% zQ6xCg+6rS#n|D68*RO}+dfQX_q_ADS-e|>o$?E&A714NhWsKGDyd;ukiAu^oHdTAxp<_cO+z#4|<$dKip(l+l=@9G*zhf(0m zJbI*GfqT7U{jG?~6qyq2q5JxS==e>WPEfr0&R^><;boO=>)Z@)W$yJhA1L19g8xpC zQ;=<(vD@A*<&mgtNPXc0r(3DI8#o-UA3yIQW3W}c%SNx!@pQJeE8P#i;d9YD=P+FVRu{WOI>^QC-&`|S!VK0 zBOCs_FCAnJoJFjiKzhzKTTMcCUTlhXZ`QP9WgEOV<37P(QExv|{%lvcIhwsOqL41I zXn+4x+V6fd^3kUMynO#kls#qhh5=Efr*`PYDRJWH9H+OUvMu3x&x85O3~5&Qi{8Yrr8;G z2z&87WZAA9)}F1i;W4nQIJ-N2Ticc_Dgt|uDe3SFIB1l<+YRLZXg`^L&|l_`_(uIK z`2kJ^!{B&shWNk1O*UYSiSr?z3m27(BMSO~a<9;6-{*c}zH&EIvY>f-;?s5wBOv&gdw<|e1eK~5fz ze=ptdFN1#nm#<$3B6|5DVHY&1rhEiAGDA4JLB6=JeA!zoJ9=L4&hTaA?~{YjJLu6s z+Oh1^O4IkD2@BpZ74b8Of^hWHA(@OF>9h_Rl z)miAt1^?iG>wzl%5QrXS);$8!crCHIVrV0~K+W&RKzo7?=Z}Ez2^|zf7>}PXABZ)d zccz?GqmzVvvENk5w)=FyLJ zR$K`EbbqJ3TE2W#6JC0M>1pcsoTn%%brBf}akO=}v*Q7sU6I1C zlT6`J&65_cJqcA1VRlryoJLBm+`|4|$WwnmKU7YFVrDJa>2~X&67>R(D)6{Y>>Nep zqC%P>g{A@GBK{Q%$Idzso;T?4&B{f70n72-{U2x3IDIOv&>_(4%71+LS4TMws#Y~n zo+R*-XLY-RR*BqALq=fZH>W1uy=YYk6USNWcA)7mp=iQd*fzS8Gw8^CFuqnM?b}t4 zLs0Kma9?D%DTh;z$L%m-Qwi8VA9D>p_Z_(kf;V$2rK6Jag9B!)veHIJgc)luMRO}sQk?@WPh=$9eEsNOV=I&PEm#Y@RRg7#aS8i(#_ex_XP zjqbPI@Av+LQEQ#-LmFYV2I+`{TU`ixWvYk0aGK2xx|EY$w96%LdC;x zQO%eeIOcW^bGMDTzrtV$iSTd<$$^e1Og-TM8X?!66Xw1sa!!LP$5WPpSUT|!2Ro;% zgNZDv$v~$ww&7GB(|Xt4GxpI;AqPa2(>cd@u9V-|!R|TdM1f)?IiK?d7otQXL&$CK zf_u8$;M>1M8IotV>UHyn!#yPL{Ev6=WImTm;6j7*T)o@=CEsGphiyc)%N1xD7I1ZT zxPQgJ(iKLCp#ZsF3#|1)X@uPmt_3#+lQ|7*Tv0+>quJtKM+Ye3orxmV6p$NQWN*5{ z^r!nFTJ&JP-eIc7?MCcqvCZ%N=OT_~=gh`eY5B!tZepMqljB{q#7#m$|(@+n%cRz{uX;qOZ=6k1=u|aR3rbp9tt6 zOku=4Eli&uOIAT? zl^v5|8GvHXw1!G@WZ7l=b7VVJv~uLQwV^n2-w#W2=J_o6bLRW+wQ_z9Mx!_jJ^`e- z3M1$OxQe2A+PI42q|jU?Ng7hzrD?ANxXZGf+ql2w1)#ah3!zdx-%GOtcq+bEwDD9{ zx1o8e>V~Cws~Z;rcxzhs+IVX_&}iNt-2iD|T|ZqQuzrZA9r$xh>IT>_sUgkRIP*G? zuj!9-J74oszztu^DpVTOx|tmaYTK=72eluz-GE@H!_xd6$b~@uPSjpI|F1jr4SyF7 z30R<;;CYZh4>2!Hp!c!#tw0}{CRnha$~;JLfYt>j2&WIc6&z%a0SgVW=L8A880M~o z361cz-wKTij(~;7ME?c}k4x^u&V6xk{{M|^EEq^kOiW5jN={BrNlC$if&a~a{r~e@ zSTKNXWdAQUvaw(Q3kI-Y01F1NU;qmSuwVcS2C!fN3kI-Y01F1NU;qmSuwVcS2C!fN z3kI-Y01F1NU;qmSuwVcS2C!fN3kI-Y01F1NU;qmSuwVcS2C!fN3kI-Y01F1NU;qmS UuwVcS2C!fN3kLqD!GQGt15Znn3IG5A literal 136823 zcmeF&Q*b4~*C_gMV%whBb~4e#<^+>WY}=UFwryj_=8kRK=05X3Rj2CIIdAuV_vO~N zUizi0yJ}UfM)j|yq$PQH4QC)`AfCa%=;`Sh85vnvSlHRwxwyD^d3gl{1cZf!fBg6% zAt50tDJdl-_4DUXX=!O085vnwSvfg5d3kvS1qDS#MI|LA6%`d#RaG@LH4P07O-)TL zEiG+rZ5gww0>FMk1|Ni~k(9qDx$mq|XKgPz!rlzK5W@hH*<`xzfmX?-Q zR#vvQwsv-Q_V)G;4i1ivj?T``E-o&vuC8uwZtm{x9v&Xv-rhbwK7M|F{{H>}0Rcfl zLBYYnAt525p`l@6Vd3H7k&%&6QBl#+(Xp|yadC0+@$m@>35kh`Nl8h`$;l}xDXFQc zX=!Qc>FF668JU@xSy@@x+1WWcIk~yHd3kyH`S}F}1%-u$MMXs=B_(BLW##4Nm6erM zRaLdMwRLrM_4W0Qjg76Xt?ljY9UUD20HCL*r?zJXJ==3cXw}ZZ-0OP z@bK{H=;-+P_~hi|^z`)X?Ckvf{Nm!`^78WP>gxLX`sU{5_V)Jf?hfp~E|i155a`F0U^L7K2WAv@U-j6qQ0I z>t}tzP$Vw9<;G}z;Ycj0SOlSTL(y0wjcSGNSVQqdD$AeoEa}FQsZ1WHvyHLF(&=20 zAb28~rn1?>pNVvO<4xuBrAmb|*)q))iQytCc%XNPya^wLmm+Ng#=UY>N*6Z!wAOsSH&bHhA(L{O! zU}yXN@l2s?u0mJGdVjzR~RXLt&fm1i*eT+X+PEI@t+Am897X#?&z14Z$@n+x<)Eda@fz`j=)e zj55W1FPx^NY%hYL101v9l^^GLKb;=u`hTN4$qUA|JjoCHUU5BifQF#%ZBUuW$Vsg`m45s6sxQDlak7-j*FJ_E5OY# z{dMQVlGSzB%TeWZ_s7$@U5En|!%Z&~4#Q1P6JFI#KO#jH{s5{JqExSonsxm^zC=}h zpJmzXH$u`8<@!9wI<#V2_t0XJFF0&x8#FxZVQ5_7tLi+zfIf^WJ&&_wJ!dtl4$PO+q6B6Y+C-9qNvV2_HRM=%FA zAgqGaM#UcMS!kFL$q_+wE>Cqx!d+9^|6F2%Se#P7S-uc*5C7||rgCXkskP`B-q zewdgg9LbWC!MOKnqfq*v-6NA_Himw63x*t}(m*~9Rnp~7)9;$?@=L6V@MZ)C$QBwv zPuH5HQ@K(mQc9W|0BnQFbD5^qX^n4C%@e#^>`n2^Eh70GY=w_f&Fa<}S^>$L} z(MkGDjH9g&qDh(9C*Ewh#zVo)$9LR8k(o52g+i9ijEx`oD(9ay(EX7oD1r9=5QwB; zV7Or5$o^n3a{dsV`=tm*<7(@?Q6(H9xhM8ALHNJ@A>d9<6@&N|3W$>-iHpu|GGvze zZxJe#p{?Lb=pc}F7r}L)E0n@5)e!yF%Qq&hw4dozz4EatxLm;DWp*^+dlyR`FD>=1 z>6SYAQflL>4*_3qnnVjCb-_MXy6rN{wSi!@F-VtM6tZjU<&h2Mp8+PUzg7lpIl=Vg z{mn$_*VaGbR<5d7nRNjq-|$~rp1PQu?kcxGOEjTCf+GI>2nG-&Fa4hKb%BXPJKk5Vt)GnG z!6Ed!gDP!+wSl?__A0{${K|pT4|_W&k)Xa9_bx%sdQJMQJ*@XMFGeP-y5HXNc++je zhgHFj}-#_7ok=11KM>!Xtez<^gPW6H?vk)?8nI@)-tT0k}=-8f_P z_XW^|yh4TWklZnAVtZjd-#zVol_^({KO|*~xlDVVN?`Y7xQoKWpKC-_jnmfzZ(sw0 z|GQZtd4^eG+AJ~WVj&vdsZeTOg-z!Jw-2_0wr9tDo-Ie2Wb}wiWqNLT zW#&qZNQ*j*yc2WtN+lN2xsqMPl4;Z9=HBxR;erSZVC&a3tY>qai|tA{6ITvn$ORqU zx-Hib=dH63l>T|_ns_4BMqRdz4F!kFCh}gZ-%fYY-rA}=ed}tk|5ZA4+@_1`GXMw6 z4hQHJG^s#zK4}B(YnKrUR@&Hm=}{JFb+g0#@Eh)9m4^r_VEM+lS#|)|fmJbU&mYv_ z4$jInSm(I09|$~IT+6c!OC=nquBFaZ+Y(Coh2};1*d_w&AE&%Uc+5-vZ{Goe=jJLq zGsT6?#(wP=DXJ>Sxp@*x_{W#4`V49Gyk#_eU0S&go*RtVuM}H+FX8UG7{-KKoA=#m zMqrn-UFIWJWOM77U%ql%R@vH(kxhBnyxxWOW~t_IH_0UW9x5f^jwL)n!@0E-TPl4( zHLW`yn;@Oa>~iG5CJQ83xzA-*IiV2r%t_jMxR>an32O2bY9*$r4gEYYVU{Ld6q;&f z9zSxiGuxV;mFyXDyh&v9-h*6y35rs_i|+g=;n;r7{o9SJ&EbQmDNMIK(hYh#buYN` zdwExf>$x9M^hHhg>p7W@cnhEY+P6FTtc>*2JgR+vv)lgh;>P`kgWVqLQ*h`9dL{)o z=Z4h6hBo)l5AjzXBt`gX=ir8e0vj+y9f0LbinZcz8y|qrqeEEs1ANcb?${j%7MGkS zP(|b4dP71}=4R@Q%g7VRQuf2)HwpVs_tHUJ?y>;hG$D^T7)T5f!Lq;*7(7v$V6jnN z3G-m6d1C3Z;8bHgdDsBO7cOO*5Y;qd^)L_FGCXY>-(TkJdTlTWe~1lfJpY{FnY8(u zrTz7pfkC1mwi)%bqrrFh>Bsvs)CHDxCqA^LHMC?l^piS3Pb<{r1O^Q>PZSL6{kIH1 zEG=xNHOy-!EaoL_4J~|}JG@3Yyl%uRtt>oqG<<0{e4#b4g)E{($|KS|!j}}5ATa{V zJRol+;=?SQ7bmiT2DYh;bs;}uYb2s)HzLc;v3mu^cP6SAHmVtyXwcnvn1^tb#$ydT zBx*EjiYIc~9Cr4Ea30og(VejAAQ0xK>Dp-6=1WxIZ`d2$mbNyFN7~?vD2D5=jIVtuyIkS@sQet&}05EyhL#2ajTjdNUO2i zu<>Z8u>C*dT44ic~=K+bl+KT+Av0$eOQ9H0oc*&x#1Y*)b>X;-yPu=F#f-goBK_^Mdcqyu@ z1nQ?jT+$@k(r%4SNsO-vhOa4su!JVsiD6A77U`}DO^J+fDR#6eZa-77w3EzMNodOB zoCcGTR}*heQpi?Qm0nW;tf@w6ksr!wuPb7n8W@k%55-S zJIRr&Y1yl(xp?UT771UX87E;vy5SiNugSKn88H?tb$A&`<)lrgf!T%87$9H?b&v# z*|)eXJ9wD|;be#9Ayh$W?d=&CW7$z)anrb5K-%2>cCtqc|C6!kt+tG;u^eHz*y)uh z344NF?J&qUGUy5~^he0i^4#~;?5LZ(sW9#q*8Bvmd`icB-_(3jRH%sZ>~XyKNDJ7& znONT&NGT-(%D3?E5#%(U&U9}M^1Z3d@P%yfQ5+qr+L{iGCGSF&u*_+|T96E(M_yn>#QSv$z26U!$o+|PpB^oms z;yOhZ_yw*QP}XZD3oj+S=%qqWJoGZ9uAZen(naQ=j?y?t0(R-d#MNSjA7$U3tof-* zXrL992Xc}53cc2%D>3qG(8|SWGsTU{r$Wj@EtM7G$|BBSqu?v@D@tP5@JlR{MVqK9 z@O6|c%4^5VHIzzN*2CWT25ft5?=a*COyY_{xJUzVGlERLPXi<8!KsRGy5NR^B_T!6wv*l;m4-~$>uYhQ+rrs`;ay~(lx%l8FCWfbN?#f zrKbrUYXqKDxWYHJ(ET}=X(F_WBaWn2GR__;Pcw#8RLC?{e#eujER+J!ULCU{Fwt80;5YRS88!Paj6Ys9aWnfE)q)#JP+fHrLko-Q~j z2UwODBhnTEXbp|5NNV7WT2B;yZ4)7|5Ua%Vj%?eipfgX)0iC48c{SvqwHUqERH?8! zN4ArlHYrA$WLx1?OcXgx&^3u+fNch#t|4#u-O$qu zZ=9ga_ZM9Ted9QGS2AlCNT;iq9Iy(?#M@Y}-+J%LB_tILN1Bky1#0j9$PL+7yMo|?PQR1y_r;)CRsR=@hp3W)B^{Fl0 z2EobUc?MwR#6*$qxLg*n+Ini4Vai8z%G-LZ;$zDD+jQCF*nQQs#qcz5)?mYrNk7Bs z*sO8T1yDg$|VjLJawNo_UY13cE9^bD9Oh?*YX zn|+_eq3N0^>||iroTCPP&P>S83?R;c>&S%NlO z8ruL;`T#wYS!}8u?LX(=2o{_SS!^zs3R9LPKj|&1myB$d-J-1nFBfVFmt5;v{E$|} zTUJ;%XT3L<;l;q?Kh2Xq7bjI#*ff?A3s?PoOtY(J<{{P$7}gNPz>Bh1h+NmchNIyX0_*4nC9`;pd{^`?NI8>2q!`0U_P&09-dX8Ths z2!hKclQ?u@+mD}X&w5s`daJlZ+joMSU{`Ap#DAc#R;S4Ujk2>}pW6tw+nP^1Wk}mc zL~FkF>|hGph{Rh(CA*D2j5ErXjz+Jx2ZQZTY=#W_!cY zd$2V)JTJi=2ddp$ z^lpdH3yeB73)~9O`d^2t#5={C8(KAt3SS3G3ME#+BgyV9d;KF*;sbBiD%ToTIR9e_ z-veAFC}Yr;(3azox$nOJ6;zf;y;%@onvESE;JnCr>(`kqhcrq~*T-WZZ z<55`Osk}WDY9d(8*O~PdRAJ6sn(tznFK$KmS@qXh&DUXrFI3Ui!Z+Zq64Bz{`152S ziv;le{18l`?yOG;$X+u#xN#B)exlYZSINXBn#W=QyZ|C!vej(2)SOx z>a%Qbox{alCNo_g=wA(ejfET5s>NL;cVBfCLqdsdPkf!-*`9I>UM|>P#l&1qs@a|^ zoVgT2^2I^^kq5`PxkRqJzW2R(w7vfL1V-kcAx~d{ws^|+HKef48@IYvpz#Amc4LkEK@VgE+^BEtgM_~K@Ip&%S1*!dE71$ez7bpPSPw|lr)0%X+L-quwtc_)4_Kru2>H0Zj#{h7TGmw&C# z{6GbIg3&l1+gz7u0s zmM}2e{qc%Kgg46cfO>5m$7~w;b(e_trc$dDt@@Vbch;KoX6g4#IsI0%ZQ&#Q?9B9@ z3VICgdF7^l?udOVXTIC$Rt5RKUzn~6)#64OyrcK^e*7l+9QSkX25o)- zQ67U7?}3_Ii+1bFC|?D&Iv56zDX-D{M{D7SSOX9R>=4+l z)Q(6XH1wB9n$qr%zi==D!MMtM;t^Pk`h#i8`;sw4fH= zYk!UIIv#5^m`sg#W@udMwAgHRhY)D)sdm5=Z>iI0UT;N`OJ@iK&e8uM;_J_m$kJj( z>W(H7{!6Icu+`ywtDlqQQN3Lqpk701jeBG?SL|jfnXU6^x#U1E+!fXS2(r%4l6NHf zD7-P8@A6qLBGP@a-)l19kB)AAxr=H6_xsib7`8iG#A6@H(R+U?9LfKlJMIH8plenB zv25es;qufo)DudQ3wRFPDIPad=yuYa=@@E(nc@EUMp-8^c0w`Q{TGoE*naP*$}9p0 zZCv*Qfmsc{F91^)bzq6`g05-vJ7xS26h(2?p>U3-$bn8Zxhc^;EjsJgS((9j4qUf` zdJ*hT``aO6_Ida^JPeiVVZu~3>z~xQ3|AwhA;IVkJvl*29N$|Rs%4ma1e6A7i6HLl z=^Y3rC7G5N>gBk%)nvz6{rns2=}Dp#WVxQL8x({=m@+_C@J%b>2hhR+`>YV0Nt1E} zRQB9#TaFk?RVwC?v$8aIHO3q%Z^$`ipD*l>(1)Z+j>QHMlSNrYJ?lrt>4r`<^ISio@k6|);wg-YArFn?GdT^t|j6xDC2@pcM_8-2vP?^B+_^jJ}EV?u-FA z#5{(f(Qjy@jwBk9hLN|$Jb!YLW90v|Fnvq^9xK%y_Gk5{29I&FvZ)7HVzSlipJcHZ z-u=|;3cQ+h3!wIPSn4HjO|~d<$7bd=y-rO&vqHyOVZ5!*X)%Z~hHojCx+bHx91rL@ zU&?>6R$q;SOfXXk!${CjKc)bfti`kRYG{UzAsBDnt@(A;em&(i(nxVh(A@QkOgI22 zXV7izyOiJP?Gd)|ZXQ~W*6kh`tIBE~qn#E2Ot4;eHc#~+Ww(tOGU~O>cFFs+OsCuU zv@L4K3O3GrRd=)Xx&cse^K<5-V&n~i-Q<)M2uGt*4Ri?!&bU;o z1LZtE5z~We_6Cj^g9|iIL9WUV#4S%A&|9L z<1={;6z<>5rFB8!vs8YcG|VYu8VNQflnW6sVFD$l>vhD57PL@584&+JBu>6o6L4@(x;a$=JOovMTG|n z6n3DS93iR7jFI`2aVQsZ5kqps_+e%T#Z3!Hq9NhwDrWktR13@ZX=)B2RN_*=pvjw0 zgylWwmWtJiEevU8B}gGsBRIZ4h!e>NnW;9iP?bs@f+>1sC?$MTFB_wvYYTK#s~84{ zB>ZU!mm&j+1J<0c7_F~X+!0@)fdy$MU!n4AXTHQ2t7;SDT#H3zse;cR0#n3Fr@2F; z#PiYH&cr~MfD5c6g%cdPj$XgEVi~}6j8WC^~FEAkaQ%$Zqog6?$CoSDIuF#J20;f z3`_(J0xW(7*wT`t$6&63oE|(#b1_+bv=3qi5tBeBbUxYi7LpMNU+C-<*u7(W@{7K zZQvSC zXf=-#Dn=_56w|F9TGR?A$?qW)Ur@dGA6)}{cCG;&#_E_w_bFnx=MhRSmT%);Mlh6l zqf)l4!N~%Kc`e}nz`DQ^;-{B2-;R!8EDIe zTr7oCvc^yx&!gb(wK<`iXM^}&l{SaWjRAN=#8y~q-*Z|Dsl6|)RWlYJIN75`<9@Z+ zrY-G#D@9U2UjfVX0-kU^c7XggZ4DK1w|re4yLf%JjZNr?Dqj{xUlu z0gao0nOoS+&kY1M%1}Q9dJDduYuc-94I0}v@!hVX_+t!b*Srq8qjSfgy={|KGy51( zoQ9JLo!IxERu-CHr|JQMVWGH(7}xEEezwK}J>Dl9zRl5`o%Y4D9`5qnyeT-0Hn}8V za|{~IGgNZU!GCa1v#va=rC?mqVtGc5Q#)3bKYuqfYacxezD2X*yE!n&Tq&Y3e=F$T zF)Up>vnsWp1sB%q!^pUq%vs;<@_JS|7Ho;h<(Q<{cC9W=%um&PTRLHK0OqDON|bnd z2Qj{}CHj^Jwg{X_34xjxQ+uywO`TJ_vh)omd>7Y=eU|J{Y~#zUeu1A1Yds3cH z*S?Vb7o(^&l@Gi!AKhX#+ z*JJx$HIpEcSJ8{%9cC2XNI&0j)o~t(aWTX@PKcC2_S0|(M^z4x z3k>|3AHY8ukbD>b0~g1J>ZYdb=7r*73l?DK=n#;jk$M=EYKk$FW?)f+?Fn)S% z2v7eQ1w|CWW@&Y~ANV)UvEB1k;dJtZ5Awm+jV4ruEv(g`-V2_pcE&Ub#|<_HB#GLx zk7aa*rJZ!qTM4SZ^Pcl}Q#Fp|HHAINjHS-eWhY7HKy{!n@T{Vbmo9{XWlH`n>dsN? zg$)|7dVn>@sBNqmFP`M8#*{5M`FVHF*+ekW!~x%=Hqqid(HcC_mNd~`G||yC0T`U< zT$t!OnCO0(=z*H-#hmP;ob2bA91x!zRGS_( zwQfTJcQApwl)ya>;J!HUKn-|k3_NlM9tQ(Yl7Od0z_TXc`5^FO0eE=;ym|m$Lrvdc zPTx{a-*HUei%&nOO+Ok>KRHi72T#8wO}`dRzco$24^Dq9On)9se?3ftpk~0ZX27Xt zAUJ0rC1#-1XP`}HzPZf6gv`Ju&%hPWz&Fnz49y@e&LADmAV1EaK+mFL&7x7wqI1q- zNX%lY&tjR(V!O=Zgv{b5&*Bx&;x{XY!@~aGmLv54C3sR+R{lTCllK3Qz|()Nc3NFs z{oldU_V)JwGxKzRfBzqf^WX7bk%9lVO#f|}{=cP7q=s%p$vDUl&PIGgfyj9Y~$a}TJ9!TD&?dmVuq|6$F19T zzY#h=T(D35-6V9v{gY-mjBj;t@r_8}{o-L#KlRMe0AHr zYi+V499>y&AOh2j2;{aejsw(AV5{ECZdg#)%ZVVjJ~j-AH)$YjT%}0+q4)Er+m1B` zu$dq~u?DbG;x*KFU0zGvex7W=^uF4Ja@Dfietjiy-SzA7{h==s_4Rz%4Crw=;nvl7 zG93zXdQg^E^m$yyiG97uUPpG@+Z#aH z86ZB2E9IhpvGV{U%!4}B=*=a(34~iPI7*P>IfAwiB&GZfZR6O7UZ5DTW|eo02-Abw zVed=fEe&Ue+j(wrV=a%W3zN9ikMmY%%W6D^2nsFZJI`l=<_<6`2tHRpZ*jX6ToPwQF~p`oUC&=3|xly(Vgx!#ZCK_khwR_|=O z0E<8S0*u8qq;R8u-5(5?Bz!0oiAo#Kf$B zd|pu=1p&mEN`nG4`6w7PQ@S*ywF*@BLlL!@wCr&79ceMcA+n{v402Ti7$j*CJ#DYF zHoj9zbJZauOx%RZTlF_4ngC{IJUNIqHi#^SE!Ng_ITMBY^tgw0lswuggKth?%acc3 z%d``=a}9wz8-+Y0cvBYmJ6We3`HtB%{43fxQynv8%1*`71Qy zGZr#6qRMfc=@eJZTPln$&G|FeHJaDdYlRT2U@*^7T*2DMALX4aos4vFT9*o2T%r(y ztaJ}6Bpdb?;XT!h=HJeidnD_B2R7&G`hj%{&+SBeNLYQ~TB(f)JsHGjZyBS($};xP z!W-~p7)g(4XLw>qyu)8!OM3MRgU&8VD>wD5%-+^W)?`}<^Ddz!c2IGyG>W<&4Lkkm zHxLvC+eTc>9SugAj>cWWa06_eUwQR#awa;AhM1(90D7*j+`)SgwW>o1=yxfpnaA0` zTNePTPYHuv*PN!_hgOU`-<~_zjp2Onf6admE9!jNT!H^#`wihY*9&2-5eTmPBay&+P(9rIq=L$8cZ*AD&GX2|9YrllFgNLT~&aZZ!Vrt2Vs8-oO zw^L`skj>1hu7sP!q0{OjIi+#=KMwZsUp>m`ZX*q&lD}U+jTHd~h#pwzX!m(We$_i# z)e~|t+NGm-|JE+;)SadBk^oI+QLz(EMjZ*Sw4>5aU}gp(nl|*N*Gn!n5TAX7{=mgY zqc2>@N!~ba?40Sl38_ng(>wV=x;Mw_wNNm0dekg{Kldicoc(HlEN0MwrYgHo^0{={ z>W#ku{dHa>t#>9%QGnK#qmu*EY&p)=!BqSAF=(CdTqhTQInF=02II0+zZIXk?{Bkw zq>Z&PHUH|w-}IcUPpckrf`zN1mhyNT8*4NEd8f1H+VZG0JF$$Ey_Sb+hs`jn%=Zm$ zuf&dA8(cU3mzZ0jmM$3ID=NO3NO^_~JfJ@ZPnpH`rfF0UE8>t*EMN<=wRMJL8Hx$t z8$o|EqaQD)=~~oA4i#k9YVw`f2xlu`W*^AYXL!U-NemvN@X~gNY1`JuI+dco*D}sM z;E07XvvZyRt$*|C1j z>2`g-*Q}#|Kba^x5 z!0ui6RDIXl?G3s}jqNxpRSasB)nDArVdKAoeTVn$wC}i{=`JUF^-b-{o~G{n$QOP? zeh>-4aEmggxREmaWk&eWs_^6nCGYR>+Uo7+FQR$icMj?Qi_|}y+Y=g=f;QEEY}SQC z9a8nsUkx?DwZ#u}#jn;WU_CJ)U&{Y#keo!zZJI0)Ng~j)R9wT~<1IB1S1q7+-}!ys zm31`W%bA>$#&01YXuXKrGSx{C)+;P7kPbJP!CX^fMdF+~$d8I#*4=Y$H#h|{JuRQEMKVKN?`^U`o2DSyhajso$)!YLoKaDQ1E{xvbQBI)b zO)XSTqm210E{A9maEVbM3BDH2_gA9!tm>bB1a8_A~l!Hr9qK>Wh_o zm^;$`5xmnm?we99Je=$rrUeo&_Z4`&_fstN9=j(?WD~5$ez1)2Q2cXS91>OnvIlXP zdo()8C_Zp80VW)b#p7oMqYZfP>eF}3M~1cv0eXWS%`Rc&!Nu{DPzjD#d! zDh0e(RYsFoH2)55RP8Y+1&Ivh$#QUNArHw)V}JgPxz8A;M42YQ7o^DW zDss%E=)I==#*>xgPK_QUbRDxm4=43(Pu*Kc#a~TkhE6S}vI%~T9B@dhN=b`24U6Yg z;@?RVHqrPIqG3;JO`)DX7?6JcH^pKso&PjF#zRvE%F(HbBhn;8S3RA2gdj~@0;?g7 zI$0&xLaS6gyhxh6Ej_a=ouF&X&Lcb-qgmCND%QDmkk|JFR{;E5n1d7cYwz zL?!*#M8nWOdpa>|pe3tjH{1O+s|HR}RU@rm)rD;~;Qb|zkK6khz(0N+rv zze;&#=578pUOqa$5+>bWwEBF_rTnD60uWpt_*(|0We}EVp;383TtK0aXEHOsBI|fK zK6sIXX<@i%k=#orIbVSpZ6Qftk^6B`Ab7DxM3QPovUEfuRX}mVNM1l+vCLVq0bPzD zelfLZNrhR7S3pU)JJ~L8zRg-OJ$UILb*YPJsS#bVRYa+JMJaP%sr6y0ZGg`z=r}^c zvM30?(D2QWhA&CS6FUmu&-Ncu`dRGuTE@LAcGjMAA&s3L;m-?C=0;cUkx?Q@R)J7a z*6oxSKv%|3mkZfZE(%`x?oqA@Ue-Kbo(*48ty3z~SJ^g}hs1}~n?Y6?QIt4t9JZ#_ zJ&rkbRuvCl-ELW?5KvW8UZvnrjq6ynrc+iUgSACxJ>F6E1H6pju4)Ifq%Q;OR3^P) z4Wl%oqJyrg;G{e~y+TL1cIR7-KzwaXM{S&ErB!?Nuq8IcyX|_pDdj;8K1A&lWmMi- z-F!xYc)1Ck7{<5Adc29+e5zW<+d2?-g6Xg|GdK+1?_{jZ>ch8k*mG!Ybcx_Xk(F=b)gK)R2*0ZCGjO=q9m!jo z{QPaHZ=00QYb6Mp)ammOt(yGnn}hHS8YQg^Ds8^svMI^7m{hi48`a}vwrJDiTA#bj zKeiN`vQyo%VJfu-(=|}YHkkiviM?%gJk=^p2@I8NBS&KomhV-^nOP^6*~TH; zoTv<_hqt>;ah9WQ?OX?BzIV81w&uM9h7bTvvK@pSKij+<9$NrJAVYSvn`Gw7c0;Nz z9|AywSJ(VG-spOzGNwI*o1HvCH!FL$!6|?yq?=f!YnHyFBEM_>{l}fGU7b`9$vGN# zP!Fbv9N$n6Q9&!vxS@uums2OoQ`6@0TL3IWJ)t4=-bC*kz4qKY89Jc?CIbOBVbQH> zFF}?A5P(KX*uTHtn=#Rj`qs{N-qASW^E0!_1IB6c-E(}nflw5hYaa}`w>NCPEW)bu z$9ktFr#gYh?P&K&k z1x01u|5Z6GSVc%rXokf*C>~|ia@0riF`C)PmLM>OyaOeL3Z;lRq-@=+InjOUMVQ^G zzKt{Ti($N>)jN6v&Fun8zK&Paf4sbNyqcl*(yBDQYOKkcs8v8!DNX$T`$!tMuO%)N zDcatkLCQadBxg7LZRP%&f7r%AabQaOtiJLA4nuiQmBHDByr>XV_``{48)}FpN0WJJr-Y#+-{RU>f3c>VrWR#4zLbYo>mq zEr@{_(TA76E=Z+qw2Lsp*9nTuVT5RTT(pkcyHTMDcQiZZQ5O2`ILMo4 zR=9U=-FkfMf*Ws2p&O3ef(f!y?uPe}5-+o z`*TS*I`f;#);s+MdI8Uwjm_od76tg0yt2xh z9tA`ILCpr0;ViI=`|s!8`vWnX&_16Y`B=&xZS#gL((XIMmJss(IoiR|{W$R^8BNXx zzX|#m(Y8F3$}#w1fy*wH(E+Us`c3wlVE3Ue6S2O~uiwN+8aXP+wreuLMYEVAjzc1= ztHH=4AT>NoLH@T0{5k2_4z}0E4(CH-Ena$Nvyr4Ey{Q-LS86cUkMq%GO=Jewd zJ<#@iUyv{v*s2<{V#RpQrhMK@yxGlq(cw#8Y9jJi7W_yL;hwPQEXsD0O?)7lVICdmPMt;a_)_*W8}7PqrXz5rbvM*n5lXe;^9SwMX5Z2S5SK{}k z5&!JzcdwCq>D2R@aQkKFF`hh%zIqdgQDg34l z!kgUwki7liD0uA?#$N;*rfAB9%DZjF5}bNCXj z!H5}!@lkMaQpovdnS$GtPiBM}qHCc3W0^|isrZ8N)z8!_6l~xRokl32 z;mO$BpuFzPW$QGiawIbUW0~;6(TS{@E_FLx3{{3QHES0-2pT;fa04or>q2-3Kb4oR zjE4VNrtUXa8l$2(Mgxrw&3jWI$I4qVBv0KAVo(phWVjZq=~A^`&k?N$8|aXv&StxN zMf=&d%mQ=+$A}*j1RL0%A!(!XXt^K7d8D$?n$c`$}D zg5;(5>G>pGY*)0U-+g%b*i8NTCD`c>KTMk@j3StNL{TRKN#&_n_=0R)$MjCTfP|cN zS7_h%Ieb6ed8lMrCx((OTSv1dM5)XOtGH1014|R?`bXdJ`FI_YB3->C0TF^jAAy@O zyadU;5$n%g^cCjLyN`4T~I{Q{m;1z#2cC; zh!AHP;r)oFIRNZX5~*0IY~H;1X%ohDDg%|vh%_xD=VCaUN%CLrf%~SPN`0D1T6z~1OYxo(u0nc;GT5sIta{2T3MPl+E2g#TcG@X*Hc#3=Xrn~d zEW-K8<-WH|JagI5%W`Ym!F<*TI}Fe-&q}Qi;WVI1e6VlZZkwobco5xi1bAx8OdEud z{L(BAX@}<7sqUv*`CW+a%k!t>X;FFKkD>(~*@ID1OD4c@QRYBjk1EWa;llf2u_RjI^KNxss|#P1#Em^LPSmKmVnln#qhvMN5Sw3H>j z?MlT9KI@ob#P#jkdM19$ntA<~3z*d}j|<;j-xZtp6UlVTPQeyHcNb0yL4A+Kl^39I ze(~Kt1))dL!FbuV({#8oQg?BXe%ixvizOD*5$Lz%eLua}>HUx|wmjubC#Xqev7l|5Wd(?D2DgAt~c4iLPMePI9k;sEY;oImiqTW%rBl56%QnT!YQOj~sG)_=1U? z9R0H~ka7Ej@khh_PiV1@gc-P>FZ}{@QL#bdl;ZHGtfJr9V*J%s$cT8Q4MZFCqKgi2 zaXc8MP3IC7>y2w!UZweulw->)C}`C!;^j3e5-WobD|E(6)rRL%u+mM^^*vM+s0Jf%lq>7 zDePHO-pIUD?LealRlQYXYL3m*jAt;(pxZ$+xuesrR__s?S15CNIS&~ho1z~)ZDt}^ zp0v(SArhP-Wh^*+%05>ZjM@dFNUo&H5w1-INb2JyJ3E0plF*ck zC(^2Xs!@o})QnisurfDu3FAp6!c)-_)PbtI-V&t(LjlsEFlr@pgC&?`mYqhO7t; zP}MY7)1d~y3f+Js+ZXd7|06_4GGJl>%X=kQo%YU{4Jw9=JzvP+P6(?-&W2v)?_QECk+GXXB^c~L z=USu4A~nubOjZa2+fZ(8C1ro=e5Vk0H}QY>$3`>gUE&)|c&-dVFlHHSzHNLaXw^{H z+=TSW{KnbgY-j$~AXEGOPj5j0@!O_*5Z%BJgUYe}=cB{hFS;rMf}=`cGJc#7%CQOXoL6Qgl` zrCxo6e<^FWV-A*$f!r-#6J+L<-!{Vugt1$%($!TqPS>d`S4Q>gXI09()!tdZ$4u&y zeF<-uWp@MZATl;*rZm!TRn51qwD0GV+Fj=w?;)b%DqYTed|JAKBeMzjkA?Q7e)lUets!O&xcbhMY^Uj!M-6IH&aOF^ORP`=+S)%D9uVls@qiXF^b5Ge*_rz}0vw2;U zDoAUE?FE?Xc5P|hytE7T+Bg()>sa2ravSm5dhB-Ve%`$HgYn*h7IyE)*}4gp^4`Ph zaUbU1x{VF>KA;lz7}wmoOC9k(;_UGNx^3O(!uXs>2z$<@ZatJr`JAcucrLYWJ=TW$ zT$l)Ztu1dowT}2)x%7a%ww|}1dtiKTLWI5daJFAYqjrTpF&dwic-w?D5#{XPzb{oam}Nbz1MwO(lB-fzymFu}dBNxg7Iz3@%F2!p+d3%y7Oy~q!} zC{TT|99tp>fnBwq<-3>e!8Z9`oVsNg?`3^ex`?hW~c!c%mG%) z0XB{ScJToYwg181T}HRLCTO~r8DeIJ*fGX-VrFJ`%*@Qp%*@Qp%*+fiGegYGkZ8Pj zcb}=M*)?6$U2~@Aoc&j8Nx!rteV?xPe)>N!8T2zd^s|r_`usub<4+&*e=LZzxw-i# z5&35jkN?zb{OLpf^dbMne2B%(=(`WO8T;IP_U=Q5Ki^I;E?L}8vL064PH}qU41ebZ zuG{PKVOrjOcbJw#0ufkqyqhu1$%VwTA+>az1^=?qpdkZ13qXGl;{;(DmV9Nxv(>0< znpJOhbU@%ilM6uA4(4)NktgYV*i>x>S}uMkFWC0`z_<@^UU%@PVO}xH?|j@-ex-S5 zAQ4~qVg2T0S=a5n;h9$q6k+zyfvyIj}p)vsN#b5Av2&c*Vr5>LvN zqu6!=fj%u~dUIJU7bE4Buksx%K;O$$+$fig9K!6k`&hbYh1+$WE%u#^VJ(lne0}S# zg;m7CpDz_6bRAC-9A3ZP#!w3!UzjSZyDzKkHwVrZ^RoffPV8@!g5J<~njid>1Avh- zUSJVA4{%Q?;A%16%*%X8X}p0nKEw_va66k6Ehrz-Y{1D?h#*j80RSWb2=WszEF*az z&SG=`$=6&M>O((d1D`+;7hO1@aY^gP)vFK(3L*rCyneEa9tiR$T@cVO04zHqd!dPs z@G&O+pY#es+248*Opt`2Bx}QvTRvVjj0n>%PKTp_z>DzBJCJc72FVrR`(-xPJ)(euoU)e} zVLR@0+<@3J22_yQ#>q0rpTc-W_!~k^+_=D}M}^igh#xu7qBefZpcE2nICIfW1==qT zE1X&wH+D2W>R*CY8;9}dQby5o_ESbVjA5hgNK}Y+gF-vZXX(?&_OV&okEJ$8zohZm z^kIx3Nt~tHCmm%FPA!%K*{y%&xRZ;HJYTSld8Anzz3uaI+#kmHqBKN9auL!>B~1s~ zMSn!_G@&7J>rA+w%Z3{i6=tFmi_)^r!+k9gN?(e7j&;Z<8{8OHIGKp?Gbo@d)Rl}a z{+f0(TSVGxD(y@)SI9L{Tn0`h9`N!lZ_^4uL8Bt1Jl3A_C9y!7W}~l2ZSH<$zYJ%R z>Nv-Z$H(@*SZe`Bg^)^V1mdhhOsZUFQGB|oY7)U|8&l&$XiwhseU?)pnAS59G~d9E zmiy15Z=t)h8A%BxPSaqz5OUCh04XieNdxWlS(V`v#ytN|7Q|HMD|wC7^&W}l3ct*x z{a1Yv<3G`mV9hkz13xL%Vh+NZSEo)ag*DaHdk&DaIjz`iJY<(Gj9En=5A|XwHT9v> z+DeUA?$I_;j}IEbdrGJZ68Ry|Bwjc~2hp68Ie%W^G6vUvUB3)c?$ESsDjm*5$s;`Eo8gJ^d`?byu7oL|kzDE9d zCSRaMMZa8QU^dpz>0(u5@ zyp|k^ZdczzeSzG@A&++3LX*9IsZl2O;;LI$46OwyO|Z~ZA@=e!IC?Dyn3B48Wlj6$ z*1`G`8vuo2H7$+VB*fy~hp4YjMx}%8kt<1rrZdtuHn#ST@IY4K2KYwKx6Ao+aiC!| zdBo&{o^SAdiP1IlRn$@dCddYUW16b*ttI&7X@!sA0rlB|7|!s>FCe-`Hn?kYZ@Jt; z;bkfq8;F^QLwI_PHvA$@yfwK%re&wejeJ0(z=ol_YS(m3`J=n{f!&%`D6-i0Fy`zT z{21I}3pz7h?@V{bkzfp#dV`3LaIVYs*1>2t7Lt|aW$d)n>-A zk|4YK_{A-Kp(YDZ%b4txVvxvh=SXpwYGX9)L0Vh+oXNPIYLsH~*)G>f?Dq4x`(|N~ z|6PZM_Uot2R6mSm9hYd4r&UtmN*!vJc#=13o|!g2OpuSe=%KU*HMD(HapDNvUr_m9FzH47Y1s-KacSrngDp-3K*UC+ox zW{15ocD(&Wyy@fIphA4Ql3hyfe2|KfVX>4BF?~Mn`n*E<@{#+dFZrS$A!D*S!?}FK zJMy~3^o4*HMr(2VB_;5umlo*y2<3O~?4Rv~LJzHS$l`^i=U=+uf4bzSOX~OK z2!&@^%|QgL*qC@S*dIJ3z+TW-+mO3i*)4%QFmuSApv4OW%JE}~(!sFE*f6s(3lW$~ z;7hR|iAj)JiU(f_k!6SryNQn>E1J}Zy5mTYb4alDh(Gm6u;zqYN=UW9knwIOtQyOY&IE6>I5>_XyxAp0Z9r~)Fno(iUFMcR2+X5N z1#eI#d>9L(dwZHk4K$VY?4AYybm**G9NL`|V2a;zmnWIz)OLt{rMdLErXSODbNgzp!4Q2bL!%u$T{GRE3SBv?cE zbfGS^nAWB)BXUp7k7dcS;E2zxu>lH^s2DNvOV%|Dn)JdtGN^j6O4`oydI-R#&`0RF zkE!CHQlm~>q5`mjsM&%YT)0Tdb#O4Ec=UCki*%g)wH563D3$ON`xe#MC25z@Ei1!KVgCnD4Ppv1+d>OQ9nA-o4r!H%nLiGFhl$XgCUF2&SK z^(1*zH^SDO#)6V;N+QDGu%&>OaaDp& z)HmARGcOxuO-+&>Bu*Da0_WWWz{sXc`=pDT#C={)_JYB_pm60N%FqWYshr1K&Gnm2 zxOyBLMA!2{Ncn&ZA%XK;G0dj|6nruTo|DsI!sA5EyG!|`zGMul+9f1qBn4$DET&DZ z;3{mt6RC8L7_c-{kcZH0uhPu5(M;e`W*B5nfs$Ell1u3i5+!g`aY5-qwA2sqgsNV%TiVO?KUf3@VM zT>GtBnJ$D=xv?n$EqFTDGHSQ_pwHq^hNA{XkY6ldO0)itP+cD_&v@=fe&)#=*Va z<5BSORx-1#6tE#+EQU$Oxxmi6q0A*c2r?4S*B`?X6;s8#i_-3tObFB3N@>7MGSi_|@Le2RZ=Orp*9M4qVV= zU-Uyjh;p!FtZo4!Y!UNxm0APN6;3r~8lHzNbc9Z!#~8=Usxy^wm40YdO;CBjb)lX^ z4fMEhacvFSaq$Rot(J(eymA#VE!=wq%Q+2<2)E9Y6o(X;9!KVmxAaokQ&vYgT*r{& zi#Lv$JC;N*QD6W5vuQk?t-KyMRDTZTM9m1$dldcfR2P6;HpgE7ZW&T)8$8)d$9?O1 z$QxmJ8x_c1kII4sBrv6G%6WPkHO(axuFLxa0{10&i1ZA6td&Swa6VwoxwVA6%7)uk;=mU6+BVd$mHXTK;*p+p z7T_XpxhA}tD_HmT(codwaYjt>^@3aUvIO?fq`IFQ&#hxl}+I`ky)Uy zNV=J)SJ~ALNM@i*Pt?Fu_os?SDpsH7BIqTE3OY61U~ICxc~FGM)JgXY>xV_j>{@q$NQ{igAXvIfmTbhgob#LL{9n)iJ^+ zMnrZ-R;Y%juNwlGy8JXylQQ~1Brwy@hWV}sbtVclVQiM&nho*LiX+^q&M?Y7Bzdp< zZ_4rbIR|9Vl$$wQ$~wl~%22!T`i6)H3Mx{ALi$S91JxrYwA4|@BbsC3dITp_izBL> zYC==tFcv)~>0&2WIh#`02Ng6%gky(=iX2=9!))cI^7c`V@cQ*W4}RCkFTbBmep2J> zAAa~;N8xLk$r|^m;`^&cQM|^uI>`51DAo1Em|=}+CJq!J22^tCw9~}&+Qbw{MWr6` z4AA&n=~1k+?+o@ia@rHa$5apk&AMY?#Z;W+_(g>}AX5gXbk?PJmL?K8h$&OGG?5T~ zluy$3BYtl}1O}PsYynzy`BAth$ULMba)N7evg>>f9{!Z%P>m#pjAtX5SWKtrf|u@s z@+8uLVY(X4Ty@4=j9Eo7)zXpT1am#vJg zEn0NXkzhfK{yR(W#hbh1MHSO|$@lh7rgJF#Bu&r~ASq$fFb0=-I)rZ}4Qx4)ayfu& zHX{;GReo3oZpN#3nao5tx-tPObTuq@wVX@qo^3f5KjH`rzv1VA6aMOK#JK;8R-o%D z`wCW%6qx4Rs-I=D3rv5|Bwh?~?RzN>RttVZu4+<0c2vCFhH~hJm1Y$0*#es6NZ5HQ z2fh&_l!gSh=3T~Sk0vAXmvw)d>V@nu>!3UTJQSSZ__9z8e z$IbE|GTZ*Leh{C_)KbYu%&g7Mo`doVRw=h3MT=+HSl`DvQKdU;l$CEDcA!MXSu3|O zVavWbwo7yIy$rSl5<}7iNMQO+LnTlU*Q*N;O{4qM=O1!frL1K-N;Z}5Q-{shN2qTL zh?9HB!Ca`y&@jx}9H(WVUVCjj$Gx>jj_~^pz8t-(swP#(Wxu$)cTQZM_8p}0V)m@X zDQn{s#YBnlI;?QFey-%;?gg!Hs`;fn9^J zX}!6Uo+Tz`h5v$p12{Y-^~8URvg~j;Ta&v=K%RikzM>+y^xKx)zP?K8y@t-lSE3sH z$U}fb*v9g6Z}rz9B@oeO(}93=3k$nyC&4T3dMfFuihxDC-7f1q;1^yD$2rdy0Ur-m zDZ%O2%MGIFyD~;Xi7m`c@g7~;Q|8ViCTl{)Xv{b1yCZ~qx$c{n>wCMex6;~o!ru4a z2rqv5K3IJ1qw~HXsJ=Q~zX$#JXv_y-i>?=yx&~A~g7-b@*PbC-t}WQ!dGJ0#>pf}K z9{F(}s{ya+#7d&7iT0!~^pLN0vhEXkx`$4lQ!j~PWY9xo#=~UreWRX@WQfzhqn9Gy zT5LT~6Wmls6Bl=*c>_Bzqwux6ezaB-*Yco0MBSsO;%8Y~fpXuI)V=cYsX)*^I9E@F zM|l?_ejLn3vjaxGbtAlqWd9@u{mDA>dfstcn0|x7^F~?svs2^oL*%dHt)IKyA1|s= z;~gu=yYamU-;lL|fUmrNr7|W%$Cisc`yAR3a4uq}US9ovT*hP%R7)m6vbuJ2uGn~G+ zZtATZTNROJ(~W*_-Bb;hJD#rwmOGs)zkk9`W#Fn@>G+w2))|<`U;XAoZaZ*QZ$#_d zR3Co6U|#7@WqJ}cWw4eS&lXCtWM!x^MV7cd8}wwvR|1#k8ZGH0*X+uV);c|bR&8oe znngk91EVpVP7^EXzC3jB>@3zt3zgc*>>BQhIVRD=p#mVxX9sEedLlB*b>jJp19he0dPIBdDsP1qj}vaC5Ow=;rd3`{Pyxt$A9>G;2{J2w&nxUpE(CTUu9L+2z_ zn7)vE(F#65lcDQJf3IL|jP|ytWJx5zXFDJhz)(Gyh5N9emTY_xYdC7+WU<|7Fw|;{ zYuUAO*b2ERXOiy;p4O5NFDOBmkQ|gYPykGfYNO1{u3|rhEUuC`y$G{QGp-({jXA9v zojT$TArWr3M4W6II}dI7hHKt>nS^L{aWxdF!X5U5vFcu6G@6X~!Nw<}+yjJ#%tR@-rHU@l z%Ct3+rZv7SKM5eH7P^pDEdG%1FS;hc&yoe-wr+?NnlmV(W~O5?IFRC@n3E!(G5 zPF7MZ5}7oUn!}ds23@QLT0_L~sgGHDB38MQdh3>bVOP5yxt?2 zk7uhe@AY!hK1)?L$vMR2W#M6(lOK{DdKk^igLFZ*5r&-lI7`bzEJLI1204xB zlUF8;h3(T8I*gc`S0=54>@yBHjoFu0rkscDv+g^LxgS@)dqX2G8I=|olPEcC}Qe-za_ppmksGyBE)6(EqQgmSlF>lvC~Ycd3B*W z$g#qZ%Uo?~b+LKKvC6U2TG?BQ z@t-0Hf9J`6%7i~yV2+JTQb_mzHC-!EN zT6>WmS&&g~5QA=*vwoNbGtzD<*0rMV1LK5`KO*;?#^Coa;~ModD#a0ZdW0Uley|c8 zKO5#1#yK4pP0Ty*b?_QC?w9B$wjJiBp78D_l#44LXUrdg3lCdb{ah^Ho%%ft&2+L2JR&GUvT`Wa~9$_kFMth+W`N<3xeCt676`U3eWSlM=ERc-g6-01%a_0 zKYx2H5CA6J&7NNI-!B<=dp_DVBXU3OvIzaUlFhdE1b~^y^qrqSUjBNW3g43ZA;MAe ztOI$}pZ&o7-Wy<>b_c-a0KEBo=CH4Pj&OMaNJJoz+*kfT!*jsNL*ikrF8sJ%d|@bJ z0KPWU{zMTwK*1vpl&OILa=~0!1_1b?E1wZXeD3?nbv?T3@5|*2R@!PV4=`9O@@1~5hC~?4N{UJ zMA9qdBd?Sov)BQmB1u5_1%rpNPHY`K3PK1$R$79P>S72v3yx5ZV}xk09Z+0JN%1L0 z$K_CnlLU#$X!1s-f@L_Z;gA#WWnKt=+Dj5p%HNuAzbrt@u;OjD_kS!P_tzo~&@)v-t) zvoMhE3LUnY-9d0)?k5Dlt_{s)NMY9{$8mK9Lb?3X%?cC+AH{2u^7ti~{W?#=c|aM$ z53Z0yBca0A9*P#ARvYpQO;7+eHbj^)&ya{@S#V(mEnExPqWOW7si@5j2{ZTaT2`&#C2OwT zEJJn4XGt%Z5`$kek4&E18|LGg$Uj%k0EY@2e%|s4WUGbnv_yjY;c9H?;kJF&8;|zx zFwj5#wpt>UTjzI0v)zTkJS9yFKZu{(5W^u=a3fTjZ7%pRFT8DAyvi{oa=ZSbb-nB8 z*1q#6`8BxnW_uxK_?RA@7|h(n_n-1@xA1F+XB=w+7!uv|ijtJaWHJD#WqYnQ{DXCv z&*1KlUz6Jf=6^}_>}Ea&GuRuSIT-F#D;ZhG9oRtdOb=imZM!|6Zl4Rjb*Lq}FsP3E zhe?g>f)8N@2^M_a(mGH?btf~Vbh3f?>e5Zf5);o)U|SX@ndW@~l1lf)8?XJe-yw|c zlAm{D;uO*UVv0Sa0eP5w+(x+;76hCiW7J7%{=BDI5q_ij zBJ~xmX%9EAWVk&nccr1uOtqv`+W9i;m6PusX&&K5+j#jdL7@5Pi$UBDIZl(4((P&A z4SzVSfr|k^vA~;UyBM;qG}5%e(icb@o%m}khWC2vhQ#2`wFaTK4Od*S zO012byRwwYPZqhdxYc$@Us2Nqp9zqxO8$Cq=uGyo)iufW(c2Rn!O6$C{&rE(#}aF8WHc_O%c_ zY%Z}0t$^VM3+xxcQ!lRP(RF|uyK~l4Em+MNycCUstC|9aX9P%ma?cioc2Db^=D|$@ z$8LGv6MuL0bpk%u@oDJCm`{NFGVPx`#@0Cf>M>8M*PQZuY%A-h1O|%tl(K=aODr)V z2Hj9yCreoZOT|M^8&K}R<+V4)Ux)0u20EYLK(^mgoxB zgOD}=U#V@+z(Yr3axaM|3^^51zeF$m5#vlS-EUw4!S{g;pNNPUR4f!#_zD#llIf)Y z;K?iw7DoYAPnfnq3PHa_@b81)${{Q((b?`3ed-Fee(iiEqEL}X_arr8CNp77XYu;F zY&>!pLWUkHFAL$QVjV572_~##RzT>5&H}-zl35tKtQcnEABJ8M7HWbOz06&u0xWMiK&2y&<$~nTws-p?L9QYW>JP73_-Vhdo96UM_L39`awiq}w5_*Bmsx#*= zI~Ts15_NrutyJWSR-%)J#uO(SwZF%NG{nxQAH-Nh&<(+o(h`{8;?pe<9nR{(;DU|a z1XV5&r7XNKizH3aOSnBKWiYQAkdjpethG z*NLNw5yiyNq1$m%F6^v2pyq4`$^XRih`zoG^+0vK%RNY)t0^Cg=lRkOZkx zZ=27CyB-MkIfgHYEjtX`&{{VGaTI6A)EW{ko*N+4n8XY|mR^x-0{sGl0!U;IO(9pz zHUY_%dkjKr&h8)+aY)Dwsn0zP#Yry$gTcvTWXoI6H$qUupl}PLYRel7jY~HMWw5ct z9?8wEHDmYTHHQI=)^oR;CTd;h|4g>}oR;^&HeyO4C#%+6N<0N7h681Y^Sf!Ds&3(9 zNMV|30`iHdSXn_LpFP8Lb~YG;5t?ArQmnjOG<`{7rLLjzv6Fcjl7^eqv?(^@A=oRB z!JHcvl9)NiSiDeXr+8pFWScF$R;1(^8##C^->wWR95!D1E?W^$>fz#SQijIk7FL~G zntGTSm?mb+o*y#fV5MKc&Wm(uR4$O4?EYL--kZ5$>ROd%i$k98L4`GfUSUNcx~JqX zFJ8)Ho9zu-kXlwMa8fjEhLTN{rgg&7QYO97R5;pJ%%xUoDPG`%Q?e+YyZmA|%U;?w z#=4iL^PUYpWUmBkMKxP3EsRZFgH7riL)l7`4OPR;cPo5x6FEw&V!W=-PEv-*O zfpV8)Z;iLAt-*Xnx)qlkA4BnXD?LA{`ZR8{0woO?mJPtI zxh$)rUPG;p&w_M@Duk*}OU|QrNA6^=`$$~dR}!MSTJM-#`$=4%f81SfrxsNLg(keD z`~?{}=tTCR5rsXM^R@PKd*jD&DM}_;9p6T&(@K*MRY>i~N{~?M!*1Hnb^5OjaJY?) zRANfQO?~lpkhsk_kK9j^kMgj|A3$vrBaGh)n>$T(VMkvsGpsbfQ`|1d>m4SK_LWHk?hd;Y;ppl`fz&M)tSy09)+UP3>%7olWa6g(&fZ$bH zp`7JSLY+#+ppA+b_ZL;R7PUJ@?yv633>K}`{@vzh-(=kY&|li{fJCnPCtX{{NhNDG zzOjAh`O%;zfk4Lio7-WNnF0Mq-#|EeC|LjwI3Or>#9O4y*1xm{r2KjsI-f{_ve}C&uZ-mSc_mT}lmB zI1rslZ(`KOb|}_x!06yBSr5pdMP>mWpeSNwtb-@?n1_2JbLR78#go)9m{4`dsL}(J ztUq}B#N@>N_{yuarerW41QbIK=$^*ZaKsc?4A<$z1ieGsr_ZDDU&nvuD?zD1Tnkmm z&V3j9P|&$P3OF|`Iq*;l0fWk%w(OWLI-4%-m^jCK|ITS61AhL#qhjZmIP;t_iJytq z0f)8h#Hpnb%F@|+YXh~q=)PadJ0#30Re7e@Lf0~vs(FF6!= zt-=lvQpD1f)t@Kh1%<7ghqsKU!`EQC$Bw}prG&wufRt6Esd-sn5WZf3{XAYNx=4Vo z4H>X#mN`En39ve!S9LYZ_`0-UK1UwJ#QsC!YE1{SU|e8lsl6TRQV6_y89G37nV|>N zRC5ZZXECgEN;c9W*>*4qb0F2%z3RXC-=PoUN7+dXJVIMG8apDskHZ#9pu(9nT(JuM0?cbfFdTfqGWl6G6?^E%D z`bO;(bRa2N9o6n*pdD|DM5VfAO2%A#UpYC1R5+%yIldA@&e~izCEiEXT&j=Fm@qlv zB>th#y%BHqqr&SL2l@2)IKQRpi1(MLdgUp5?`d7_zSqUaQ{CjJt*lFqrbo`8M z=S=h0>5LZ2yw{PcuBE-^Da2`iVV7V#!ErV0xmOj+-o>(lT-B;tA5-QTpLA5n$i?Kv zMRECw;1tTO^reiPB}e30e%Iyxk&rvWRmbZ=88<2f-Jvw!;raN%cj>-$E7Z-+Lr}yY zjB?kunP}%U<>9|<;V&;gfnRsv-b7cSk^+IpLcZ5Khifmcm-sTMgmlL!Jl8y5ZyBqr zw8dr`eb<)GuV`diUJ-6TBBJqki*f1Ro~504IbHBvf=K{pShq~1x8_8V?_&Z`IU+Bc zq;YFtFV(zJ^`aiO2`;6GAM|-pVF=%6a?T!q-M+(X@6KlJ?gu&IN4awph3}QMXAjih zZ&(^iGJjsETK`ZXellr5AxEqZ_C6i2dZO=LiM+(2eZJQuepb;!NkpvH%)T|#M&-J^ zjjq1aCVt6BM43o|iu^FHCxFTJ#gja9pC4 zU*2|QWAuFA!@Sm3G=Ccg?tS2CN(H9gr2$dCUp~!z$C%UJM!uF=y8N1u{L|6v6)yC& zt^2uS3+MIx&R*^p(Jv&TM7P%VgXHLEz_myYFChdx242i>D?IS;GGRHU|MwLhPM52X z!6E;TO!y=fwqAcIBb@YErt7_2LDrA`uPZ#i$%H8%Fk{`{R(R-ji1RGhL{w5P9nempt(e%|@Zm_>$D_^X)2%qCf`6y7z*Fey9LEx!; z5l{5~X12kuqB~t3xe%s^r)sy>V6HAbB$;?&H05x)DHY>vEgvRBZ6utTW;WIrOeaGo z-c}179QIb+8uCocIT&d53_ruuXqoyhh#jIOzREbbHJO<|+1B2?yIf~%Ujl#s{II6t zYP?Uty=!yR&qJ~>?!ab$eJ&>=0!QF91Gm_1#B;9Yt#i4BcmZYOa|3yHRx%xz$4hb! zY7j&JG~YKtQFL}{&h>yZ5L5Q+O`lreCp5SmZ5{<{lrJe-$Fu-?vD;PSbBK6U-)vu< zr4X)6S%d(g75EoHLU+Ht7H~MV7!eW)JsN6g5=JWFVw2A|qLjpAvHg_pZ(k)c-okFg z>F~wt#(?zo<_)lNlGhSUgKyGOpBn@0gBUj)AN6_ThD6@~a|J}3#P=+h{5`{Fd-FOtRp`dT`Qt`bFc;w^1d z^lF(NR0vx=qh{1J9Wc}g9ee~p3rd6-WNi``npT{-?wAK$ZBdux{O!{7U`%|cL4wof zh5A-$FD>$>;)kxo35e#JtLdxa8Vd z_c+-WDR~kG!;{xjT^Un*(p&wacejKcSD;c{SJ^t!lxf>`GR7s`in0#S(Ul{Cfm!9I zTTw~hPpFfP)Xd}H)PDN%O;>>TBFGi$8DK~4`>a+Bl+1y~{3yOt}{{T%!4;bPB1ZxM~iiTF8<6E7G}4mxlY} za&sj2@*bN&iqDt;{N;tcRF&7&_fSNhmD6KTW%tDT9~Uc}j@xZ7*W)5jZ}t96nxB4T z+I#Ew7-kdxBr@uLRTbBGLB(~}djCW9E3FTxAohFgh(c|KhL`_#<9hpn7YKbJ>Bmz# z_p;bT2&whmtawfis_}sj$&1ROB znif(|)(K!G#YMfA9?%4ajw>-+5ed$K;D`wi1PIxs^iO!Q zA?I)hh0F$9Fy_aN8^?T#r+^am0jK8$b=@V(_S65N<5wyh#ZMYbr{fDN`d*EY<<*2{ z1%Ujf7|;NDlEl8SMmjUdv(-5oaxi#7}QHLoJ?WN{gNK9Vg3 z9;w7~An{^-sOG9(tD3^_NAx^66LDVZ*Ci1nW(o;QaY?qdqVJ0sq-3a-VyHeopdL&B z+DQqsL$)DL@h>G;Z|A1ZAJ$Mm=fuD>*mear0bR}0{R95bv zjH_I6W3;@`&>_62%L9~ItH5w-{1eCKfAA-p(;=OhoU3i04LNnAL=^@qzP*<}mf9dN zs8t;SI_p6#RfUe$Hp6Y&V=wP*Q!P>B2CCgnNI*sGC*WyxG?Ox9H0$tJ=3X6lNnIjk z>;^m4FR?H>1|7o8V~jQQd48(~@7% znrx4*oNTtYn!e#`QBQ0mL~0e8OchI<-*v`nnU~sFqIAAC<{24Peg~OVjdSQiFb0i~y-P`mo6Uyn6HR@kx zUC8Lv1K(wWMB${WQiG``&6?4>O!&G3)4;KDa6NRl`Ysd1?DEbb`%~z4-erO{yxyx{ z^7wM0Pusgph_1=m(DG#I{0o@?{68)epxl=Sxt;2gH_nVj+*cR=ELZ%$TCOnq*K$Qb zKWjoiTR}g2LqEqrKj(Zu*M2|uT|W=_0594AAL#%;XU#zA?(K?Q|DMT5ba5C5A-Qxp{ym6Vi} zm6cUgRQ_4hDSrZ#i;IiP%gd{)tLy9Qo12?I0m|PoB>%yO|D-2>(v$xR^knqE(-XX4 ze2TT->B;&amQhNrFrMwmztEF9WMNKQA19U(?{0%)J z_>G=?oqwk%GXDg6Vma_v^yIv6U0k8}ujom;&hPZZ_b=!P*}u{g-@l|Mw@3nihn`sf z4Lt$L{hglh|AX{|Hv|OskLd{$5%{9-AJCH^P)trK7?~r#zojRjyaZE`>8_^9G6{*Uwo%nvD{=AE86z!`q|7kc9M7xbh7l6m`I>4_t} z)!)z)H)ysNA5+e4-#?-!6@U~3;5j|1Ntqb@! zdSdlg^u&GOpGZ%}{~kRNm>$5n`fGZ!_7BpN2awdS(0uz#!g1#UIlXw*OP~g!P|9PxSv?dSVF1{y)-_;(wH$Nc`jUC+t1{Q+mP&9sWB#dEcb|TY4h@2lNEzZ|KP#xW-@86W@1wVgg3- zH}nJ>^zYJ>15koLq9@Eio!{w+(ZA6XG*HvyKcFXHbHIdizzdrGjh+;O(f$!V;r&Z` zf&=>R(37FRLr;Q1nf{HQaQ-Lg3DdtzPoThmrzZ^mK0Q(XpVAY~|L@R~4S$$x;Ji2pS`;r%0e(#GJas%QZTd>cx6DKiRfgU7_8T<3nF@KJh_VW8ykj=+%O zRKismA-c`Z3mKtDRZg56iIVKBGaGift`B5nj#CLte9}(sKucF2lEfS7YwvTL@Fha^ zJ3D0HVF)SwtSr<&=3X?GLDl8AGse#-5)Bhx`=l*LGL#O7X^f{TY@tMuA8y8^2*n!a zp2GZYO)zi=wgwA-vnDR1N*K_x`QS|+lM{viW=%dpsir6`r^LXTO1gg-rKH53iip6Z zn)r>FF#JYLS|&yx&i;j%sD8duw%haP>JKasWy}i5C^7FF$-t`mtg`bqHNQSBW;^cV zYdO3(==j9E0DOw?FAVNx&G?4#cV!9ZyDSma(gBad#bbJ+2bEuEAEC3j&#eKsjp-(W@VH&CK5E+Dt~8z?aZ zuYQ8QR@Ayv)NTsVPI`AF!BZ)|2A|mU$+%)nD0W6r<)9lc8C4;{+3U zCPLEB&7_55J$?9Z-j*;t^gb*y2pUJdKt~SFW07hsO=SGWMTFnENbX9ECsqI&lf#>i zKUhqMfNto{vSmqI9r9u_*CHR^x)c07b?Gd=QCc(bCq3?Ss~2Adx8^$B^VCg)AiwWM zXJwp9zW$~Pr>P;hg=;*UYP}Q4#*F3WVP?jH>a8NIVD1S}!D^Dc_@P1CnhpFMxboy?ej)6A11{Rg7n<{V_6@AmRgJMMY)kx|gP8q*kir#;49TiGqQyTE`XG#b zo(%{q`zl^7)`hkJd3eQsV6l2kad+H|fLn~eaZGA1MPv14Xy( zg+c{?s^NK^l66I2d$qE8g}`HjgqWNNtU?*k8n*l8nUQtb*LfX~{=UT0t%iF`Pj^km zcfEtTLn9MK1w`?|U&hZq4MeEp*S6ZfK>mSHE$V%JQgsd6T_XLiLyoWIWXk2~uBI&O zg=Go|z0cUYZ&@17T7I1$5!?~e-6+Z+PqaWqwr{a%8BPo@ac&q4%2)+pQlCk zwuUl;YKmKXynA@OZn*p0dwHSt^uUb@lAS4di3C(^jJ$l}g?ozW5`AVg1-<5xaN7ES8kd3h&@y3K3B)CbDB2@`96{G{BA|u&sD4M#iL)o?7Zr9 zmoB~Bk4U^Ja7Zh0046{5xdW}Qn&jrme?9mE@8+^!nQNZ~C7t#QT39`LM!#47_&!&Z zy*YJ>Lcs8g8sWa68+9?-Img)vKrHfG6a#`xw1?LZ92SR@^9~@GCm4bVr7@5qxAzxO zjNe96RzwVQc&W*|1hG-~d4tg{HzS_xK1!#)kEVd*D3pjM`PvXPmZFYK=1OHE)S&)G zPvp!s2GbNzl`0iGy&yg?%VcqXhQViV7};L+gF~UUc#Y;EptbVE^kxO`hg-y!jy(g6NA)a8-EoNPO-8J{A8ZF2A9 zc)ifC>5UvIKj-wr8iS{Q=(7JJa21wzS+t8WZ&Um0Y&p6Wx%A_B#R+6b74JF9D$D?q zF}Td9} z5jd(!4)h4=aK^+?r`>!lQH$HYlqCHYTvXx5$O=R;R-uXL(TNNRWO2%33u<35*cucG z8er>PTp(6W-L169rQWDyQh+Qhr$1UA(#L*;`1d#UaJ;=V;c3H>{9w{ND#Q3UwD*(p z3n(LC@as4Y)1R9SO2+9h7seE{-xrDtyCyg;!X%a^j)#T44U?Cz0gRle{kseORn9#cnV>V?qyn%=bW6xJ5ItXFOl&H)=?QZMiPIC!LLB6jbi z&6!!BL|v+)X*(u_5StHaGl-s`VUIYuAmR9kx~$n%Ab{FJl|%%c8-UgGC~C^^V`+;` z3IXfD7lxLV8u!ISQMUnlrgsO4h@e4309iC=*I|if#!!CeKt=0{TZuo!x2ZgD9}Bp_ zn5LQ-ZqRBrRwktgMU=3eG#ChTOl^$el%%7P{k<|JFkF8zZ9*r$N`bS8@_;X@0XsyE zuWav^LRTUPvS*&iZ~X*=dl)q7+cXE)R|$<*?bd7rLiSuc1YO+r)=B zvr2kqo^0Lw8a=&=~M6PdZqUwD2ad4 zh+sDjb>wG_#3lr}|Hj@uHCGn6{hy9)yTgtp&PKP4D@n)emKKHol)#Ko(^0&~c?HtVtsIO^3`d6rafJ zyn^F1BAgG^bdI}iLrW9Uo7BF%Ln#`QeNJs6K|ms5aEjomWE5V0ogd~+KoN7yto60z zx!CVOv)9Ob;sbC9J!84J%xC}L#OaWHnf8@Wj0Y+n`H1r>F|y-$fnieQZLBBsT(Ap? zy^mSAtX1I_8K}pa=mh(9@Z?aFbBP#!Q)+ay$K?X@Hf>Fm2C=8Tl#B9nqQ?|9I>e#+ z7>ihd^pv+>7pqS>sd;FOlykgAFcxCxVQncZt?1sZA-684`NLuBzu$V zqlG5T-^{eiFXOfGB)DbE7ej1yr!uD=MCS`_fv8`3w50kDapQqm#0FHE6jWq$bzuAt zx}QQt+I_DU+#w&xrewBCh4z!h8A|Hligw*@Lyd;}TU+x0SKUb{NbVvb!(l+%Dj^?U zOLt@1{y+mLXppohO7EVapo0Lp~Om>ssqPK#rNLh($#l8UwWTcHDd46lnp9IG_ zWm#Fz{uNEgVf)APiQ$|5U#V``-(oPL*=TZILd_;u0Tjq>up$lpXvaoQ;7STqjxe#q zt2AIKavRnPxdZ9)v7cBK!LkW=5A(kQ&wD+?vwW;}XLKf#8b&Iny&&3u@VZ zPGxXw*q(It>pDJDmqhdY#_gxNYF9N;9EV8w21Xlo#s^C%Yw2_OoPVH8dZWto zz9>ZI1jjqH75C(GDAj=Xhjr+$$+gun@XtY?<9c1*h$j?=Di~reM3AE7q-EJWF9C0Y zVx!o)`{L=(%$}|PT^aa6+nEJ&>#j$&CvM^_Z0kK{_jxBt1y$b=eVg?o=Iv|3o=;lt zOR}=aebR&%l%%24US97T2>i?DQp@Xsb?09QXRB*Smzs-6d0|I9aa-tky3G=Z1%g-Pdtf0M*6Uw!oKr$A?Uf2)~GifYPgY%Y{jeR20FBI~0E4EOH?r z+CIpS&xD9og`W^1iYhBc{2rdBC-TL&U(=a?c0&kCv~;LY3?ExOsZXpss4roSkI;4? zc9kH#Qar{eF_N*1N^zh~uWNW>Ac*bUDNz$X*m~DJ-^n9D(vP=5CCntU<07FmC@zJ9SoJK3TGw74 zC4!VMS#86H*hYqOCW&j?uS^o5FgbL=0V>sDzjKwiJLj0z10~kA>nfsD`0ibQ`n|k-=C)KRKm$RlC1tqncc{n7R$`H3-1z56k%u+i2FBHT4=rNS!tgI{?t_ zNQCie5KGZwN7e@l^ zWKb74KGs=`)ntM+M}xBK7_%w?`lI1paYk-+U;}_`#L%eY;mBz4i21~5986t|S&21_ zY&@r2s3dES_o%brSZcOxWOS(pR?C&^SSE~gf_{N$v`p5a+)m&a&%9jR>Mke_h z6cRZmxh6M-WE9r5ju8{zi4IBWY!cS>L7C3O3BREUBxKQ!%ZdJ?5pUnm^G~4xO-1+H}qrYh$5J&h0XCPeUyo0sYN%X zwrB+>AH`AMsdbpR;d^$^Ao=yCsck_t@TO)P6o=9d_4FdAqFpdPAM3=v*>scO^e$a^ zmBQq4k@7H(Ql1g=i0#Drq4H`n%cUgu)#k(>YL#BQarX_}+s(1RW;30d-Pf++_sPoJ zb~CT_F|^b$yM<891zI;|D=$>R`g266v%e_k zvN_ZUuT+R1=Ex~3Nw{XQQ>MRgsZ(UoQ!J^F6?am(tCNG&@RdLWQnRl<^Ni+mDC+a1 z)#^+S>eR(~%)nW~k9l_3gADjsYp)dMMEO<|RGQlK#??!O@c8!_rUKWh2~W zW13|Xu4PlHWizd1bMs{j_hn1qvQ^5mb@8%I^Rg{y*=}js{%G0ZVc8LO#R+%CnP$a> zYsFP+#Z7C)-F(HvedQN$#WQ8at9Zq`dBq2`;=8osceLXFuo3{f8i>0ZM6(*qwHhL| z3eZ{wny-esuZ96v!&6ql5yh*K&8tzM)##FW%^A-sl8vbS-UkA8qtJZ1loz_Tg^!(`*iKZ4OFp4ry(I%r}SKH%EY*qbZwX z#hc^Jn-ieT$)(Myqs{4u%^BFOS=_BTnyq=Rtp%yAMXjwR^Q~p~trg(bYRcAH@z#3t z)&^*6b7^bqXp3q4VQU9=dlz?mk7j$HYx_WI`%r89$b9?QeftEseVVd;R=j=QynVsE z5%|AgyGdPLT|+}dQ&aQ*PUrq-b#opb9{*?4xr&O4%F4>Bs;b)B+Pb>B`uh6D#>Upx z*7o-Hj*gDb&d%Q6-oC!R{{H@ffq}un!QtWI(b3Vdv9a;-@u{h)nVFf{+1a_dx%v6| z#l^*?rKRQN<&~9{_4W0Qjg8IC&8@Ai|0bpWe>QLbQy=^9fbPEoy8q1q9VuwHY>4UcRxnYX#X&;sBnD0OeSe?H~N*z?_pKP zvU+vdN`jdKO(RO_al<@|nPA;bLa7OpIw^r|)At(8^vlQ%o{STjV^I(m-~0R4)2B4k z{e3sy5u*_e?sIzyhODmd`Pg4T`TJo!vY*&dnx*jIS*dFc|442pEdL>YHfzTbdV1{Z z6-QN#_k~qASsOZk9qSuJGj{CTZTm$J-?hn$aw~ctava1JF+tq>!#K;#yY{prs?dG^ z&pJ_vAJJ+b52ri1-H#h8OWg}QApzp3!n;DDM3JSn0p}M_TmLk!H$>m_TOqM=ru}VX z*ZZhw_HoQt>P1|Xt=5yM-eZtB9?-u705%MvM+>%xioD6!N^ zhbq|;sFfG@WQuq}hgxdZ-!EnH3S<)rJZ_`3kq@MX+nQ6-Z=f;W5UKsvzCWf_K`L*G~ZLn_pd=Miy&U`$*pYB7}dBuUEpAb*%cD#E?+NTJEt zPu9kkocN$zm*f%4yqH= zv6Kp9RycW?N|&l?7A`AUN$Nq3v9>IIX_=^mte)6d)m~mfjrEu2&EDQ0ZFKElD)m&$ z6uUU@!k!F-f`tf#WToX``P=Ng_sXaPhEf^euZ8<6T4h3o5j%vg`%|+wt*o?UJsWaXbU{k zv;M}|7D4Fn)Kj_+e~61>ZUya#yQXg@*4knr#q6%v*OHYg7Q%2riJNtyZ{+vH+5)=; z(a8;+;Jnu*ufYQD*r_z&OS&~lQ__3s7D435eGOxlU62d(Ik1Rz4x|QIJ zp9R#kG#cY`v9El^TLVVDw$~s@r08uKP2*=b;;J%xVQ;5ami`$_Yd%UI(mIaO<09Ws zWezJ4nR)YYo9J`C$JR&y9;wTr`f?s#hK#{8VEFHE&YJ!~di+|L-#Zn#2z?o^>MoQA z9!oqSmFYDzKW#wn9{MfogpBm0inC{50k-{-4D$CW+kZBB?pSBkChD`LhldPzhjs9h znZEm*@chMOMc%9Xl1blIT_D$RJE_ z@txs&f|-ibKK2nhzVAt{u;f7D(eE+MO7Vk@=6E#HZcggNb#aD<1>4*s;I-iJPQwT& z4R?|p^>yy%PyZK4W*DyG4B6{xUTk8+9CdUi^q<~7tnf;ol8^XH!-P-kad-)v>Bm_m z`cO|*&Q*A66?o}bC!BV3yXLD=5G-sk#F0yHBo{xUdTVb_m+#J+J$`gQc=!2D!wDLh z90Q%4ZywH^NnNYIRK+Jr+-=S(4BtO|j?J6(*S}USW{AK=Q=LEy3wkL2;uBT+C-3eP zJhX7%mle~KCsSr}VL}8;5?)FV8crrr5lRj}%5-lVwcxMeW-9RRvyH(;9Dzi#sw}G% z)22LxDM9a2c>Dy$@d?3^Uj@Wu1D!Mhcz=aOETQ%X{c%_Uu=p~@a{!ZLM_dB;1_>Aq zRpDn1c#210z81w90J;G?5PH_1qAsWoglm%SOLrQ0YpU}QB4(RzNMT`&-$D+i4%5>K z8<#Tk0(;_`KL-jD82G14K;wlIx^V&9%n{ku>Y)Sm+w{LZhpS;md_@Q{v+}g#7Lg>! zC~FnVvI0URs^`gud9)cYbDJm`M}9mKsFqp%Jc2|Fat-B;;w^&4KZRCcge#EM#awgEnE>@M0s6#RI>GnyzB{E`)+)$#Blx20asC31XP)6B?h)g`eZi0f~vjv1@9HzUeXS z;P#&k5m;STi8lBVJQ3!68Ht1uq}*e10-VWUIxHc=WFZ|_5>XszqLfA)Rg^a9h|*%G;GLlxajX|VQ7S@ zVwj2bt0E=TvOd-%34E?}K@LII7+Y`-kjF{6h^Y~}I8kdn$*D@8>+r0{((;6sZcX;z z(yU+c(h^V8hT)S9t+Q;)lNOd`OPjI=_q1~8vFDa$N;tDIk{s*WohRfX#t}1Bz(KBd z8Jrg$_CsPh*1Fh%eAd44N?S!a+uGUNx;ZKl>7$5>t-7i=){1d2#OE1#%W@f;p!C^x zx%C&9d)}B!m^2lZa6%h&*Jk1%vGnpiqzfv#7V#LgOG;iZCZca|Cu+61Gp5X}I8A zyP!pr?Lg8)?mJx9AsljFA>9w#Jl!mddfT~HrNSq8VTgQXvpl8#Ow)rRl}JSs8IS2? zEylFsACY+&%lLs?cIG$`~oqVY=y}{P+x!{Nn%xGk2d^XqYawauN6P zBF>`a5>*tSCeo>U5&tJ}Q0RgyftUPUYt}b$J+gyMPoAi#sYCR^)L!?=M-AJH;mQAG zF`*Z!%8N}gpe`D8UNLJ5Gq!H-kYN760gFhZp|A04kk+dMn&2x@Rw)sIJV#LIY{hOx zbbCQnnY?i*bom~r2FWudyAl6(+{3-2nrS>ha>@6$vG&j#zu$}(wbBgAN8`_Upu2HQ z$#`)zTTu349l8(k`#8P@r#3pA7gwP+HEgJ}bKUfC8E_9_m|wI7oRGQBP;Vyj{b_{@ zfbFLhXb@tRVF%f`ms%G@(Lg0Y%-dPzN1+pNlS`E5Q#T$?A(~|TTu63N`0^^$G}jaj z>2f{xDe!UTTQ%nboAvtZ`{)`cmz!(Hn`kZwNEQJ2R#D@?sG}DtBjcvA#~cw|O)O20 z2FR8KiqKyZz_0nOl5$PDd#&3MO*a)y3U5TA3TfCNC`+FxN!gU*vgSmAc5|*apg`+u zx_V|*D_LJ#Y+I5-e@nq}i=#jX77lS*R6AE%w9Qg92}eP$4^F&~XTb$NmtJR`bEm$5 zrZnXekTnpqv{^yZf?j_gvBP>PVK4br$bxAp0+wcSt@_Ul{a6j!!A0l@jg>f%! zWbgK`p0}ue%*rzQ%O=L*PgSblfv=z8J*CKY@RD&LFLh9FG212!6IQU+O|BEaiilT_ zkcn^zcd!3TG-j)1HUi_IZ%|)K7LkS`p;px(`B>2>e`wBSnN@Dpun|v90xDx0hTlw) zX2R0B>_Ah~bl+tKc=c*uCOVT0mx_%jdomHLdq{ndd z`z5l8?4#2IC%lO5hB?HX8l!DOjV6X(Y(}+v!m7r(qKN`F>-&8_4`T~Ce-svLW~N$9 zv}IeBy$^+Sjemo-P11Mxr5I5gjpMaxtDa@UOJuj{1-UobJWDcFQa`zc=zmsad3iBb zmpzqMB#;7U*Fy4}&9cu-ad1U}2%RIZgsIk}yuS}+_BUYI*R}ALX$C!i*1f71RfuTo z(f;i{_CwKC%5F}4ZaTQQ#P*dHj`edx00J6p1c4Ag!R|S~>oxNYn~h(7K1r~R;RFA< zYymoKPM~mZ#0?Us4uVZ+fy-|Jrw)?cQ(#Ci3om*spUqi>bWYr0?9nnZ2W7doXh`s2 ze)Eu(qHj@|c>&6Jf!DxgMFNCEI_MLIF+B(HEn7<`94;6X@L;R3Qb$Ltn{(y zSna6Eyz-hfeh@wLyC4Ts)VXH3a0w;X-w*FJ6q;YAs8<_--)J>_YdKY8;nhNm7N;%2 zekHG7{`RpXBf?Q5a7`koH+yo$=GH^B4yKhsqfcVp&H%z8X1%UtU6y)OS82Kcl5KoQ z@#d?e$sL3w>)gMVHREE>?wFbwo?rc7zg7G|$05IUxcGH0T$8b}1vFB4Uo8J`D#Gq4HjWI(xFZt%a!RC?Q=E+uQX~@RY<$5+IJd=~km?VsJl2_NSrGF@s zpDSJE{2ZT)Wq6xAyB|B824TlSoG|`^-jKtSAA}UDUT6=y)KYczz)l?Hojh8pf~V?` z$vxYvy~`7u`SA`aVQAus*`htjN*T^U8Q(95y^jV2j)m~uO6?!^P<%ZQLmztxeFq^2 z2O@^MER2W0Z`Dqw+zn3lwTspiatVTA8=Rt`nT?=`F}5{@A+%$Upi7SQ`~~cd_YUiu%K~iwRcV?Hs*IBMZa#)Mw^R^1j67=Uwi+%s6#8BT>7x z568LQzQP1V4|4$x!{dFyGidwLc~6{}Qr@e^Y@hG7S@YztvQ`d#SnZ z@ZYDczZ1O17VahF=7X-}y7!7IkJZDKWx107`Imj~zPbh*YUb~y0Ca{F%=}8U4}OpC zmmBn-d*34NxFH`k+_2SlI1Ra=&%+{iSJ~D#Zda?fs==?|ob({tv{??WX?(bfE!)|HKH`sbvyr zlnk>I)Q{v-nGHU-o05t_yr0`mD9*n_Wxvq=C!n*E1WKVsYVsx)pyU*rj9WE4u&)mSqEw^S z;e+VP^>0d;gmijS!=IU+En2t>wrL>pNy7fOywB9+82&*Z?VD(dByvAL64`8QCj=7f zF650q@wEuzAb(u`esogIr|5nVUy=WBmns(Fl=x3i&{s*!wz$^?CaFW1%@|Q=%*`4B zI8rlvIMPhl`jI>a>ggfuoQ0b@v^d}KA`!dDz~BxtY!`|zrSH~!$7L`W(yc#u3;Iwg z^VRx^FF3?x$m%5*D9K?vRLB2%L!-*^@g!aZA!Jt7R*v2%G|og-bp& zKZj(7C&wo7V1aIdTs&4BAj+8JBniR$aH`+)cHVu;g7zCpGqNgIR-k{XO0l!4C=U<< zFz^VXb5MAmeKpt?yh&P|wAG6;ygZYdY=Sqt5>a}m`ywwOU&TQiijmpHFVjJ4zm6d^J zv(uL&9x0t-OePwqW8enjgB6Smy}dnfJ$l3wWye@e@JM zZrjf$-RrQ-Lem#DB$o%Vo|8pQPud}FsPpei=2%Q|HBV$^?iE-&R1Q|P9)H498NLuJ z_1Nt04v1o*Q#Z}ViMJiB_I5X7pq$FA%Z9??tm^H@?RLlB6G{Run9NP`QUp8#{f4mz z3BlVXeDoMt7IfdY;UzaV-f;~CmM?7 z&XTtJb^T|S3pqCf-)96XDsKAP?|N8bsbEI%S#v3%rGF}U9qV@Z`W*f~8T&_%?x!E{ z$GBwu(f4~}iP@B|zUfeBN0aaY{kh+mo*}Z)e(zdS&3Bw3BRJA|A@CPo^pL$I#FtH) zE|`5II9iBR*hm>hcuEMFzez@#oT~)y?GB+lO<&-Jcn2ZJi{M0eiC0k65Wb{i0Ety8 z-gM|X@TG56d&O&`IP(?FS7g02G${p3si4;lFRFJoKUKhJSXhRQRmBh;_xnRZT;uIlM z)j^`;{EY{=6w_lK%bTcMr)(3evr#n=2tM~AG~EZGaeqoe>|p1#ZXB8xO?EkBhJ`E* zehc{eXQeO*^Z@>{AZ8X(NEN*NXxLdA7Qb?(wl?R4Qff=#2kdFmb8Je@IcQGwU}fb{ zqnxX%rQrQDNNlsD+=rn(p|CTR$nns;gQ`>Z3(+3oTwwlJRyqOHU1cd$qk=o%GDVBk zspu9?ZhZS<1u9BafG=ke0`r-i%FRS_g=PR#inZz+)WR#GdkN`Ov=Tc1{DBxXt>9HT zN*=9Rp|(4dWJ;0N7x9J666~UjMOn>-GTsWCr7H3MbKSVejG~f81zOAt<6}6@=H(P> z>tX5Q?eYAO06B)7Y zw8Lzjl$NbIVFuo0%aLaA6_X`xlul8D)o(xgYR!eFwMA){Tg_qOWlRR37wq(Lo@_6mCkvxtqtGs+dd@$Q-*z&HIC>0k0& zz%si&V#CH*o~Bu@ADOdR+hbK}-P-Qgx~)+aFD*qq%iXmGcedL5J=&@tIT1fDiFfnK z8uPB1YrRH*yD5MpDlTKp5YR?9`~`l`?E?X@l`y&e5@CplyCQ_`d=DYd(~43VQBJs- z5nBNrM6d0vsJm%G%!oG3kuN)=C~Ato!&{it0RB$R*ST}{kxmgXI2TWvB0`0XI|gaS z99OO=hQwISS=z3Z9MN^e(8-C$C(L9nvT2Gk-DP3 zIpW8$psvlzrlQ;W>#JohBfxyKCSxjK*e?G7#X^6s9ggeUx8JvR*h283bBFF%1(gIV z!~N~n0RP$ItE#h4@^1ktVl7ga;0qWydA39y$`LRz6sCp?|wR^l44iG{ z@sx27m#BpBFaCg?>QLEoa3m(!9?urf0ds5r;rvd#Wg`^b13z`WtpB=0SUrI4@SBZl z@of`+hEWe^JIDO)bq^z80Lu=GTVG3mOrhnmnPZxFZR*sX)NyKrLKsMc0jX)MH!#+m z^;b*cQH%N4=EMuLYubD^g6M3&Z{Iy&am;&}z|!#{P+8y-GxL<4i+^4zJrNbu**1x6ax*|Sw^ILz`-%Bp7d%eIMp~AEF!P=dLl1CNbPQI*w*PJ|{7rFB(3epD3CLLlKRrsh_k< z4Erz|T2hn@X8?Aw?@Lu5h2#LrfLPCLKegKcep3Il4%Udz0K;NF-8*7?A17ktz_-Ob zn&kTV(`J;r0d`Gsrh6REwQ?{U6FY~S1mb;v+iAwU?jSRDBhQe;H;LNbh!FY0L5qU{ zL7X8Ln5H?MOn3r;F zTReGJj83ZL7*B(amMPr#wV_8FE*^6U2hhw?-V|g&+`8eYR)Z@Q7#|tILi!{fJ&BjaI#!CU? zWy#~^MdKAsgj#X=>y5>L(S8Y4Y@0(e!!K^u^Hh<>K_! z;q;&T>1&vo8=RS2>Y2ZsGk20R_nI>gW;2g&Gf#k-=j54}qM6sGnYW>t_r;ly!oWoZ`mXcp~Z79DmD z19uLSW)6#M4qIvtM{5q(d=Afj4j(v2kTOSDJV(?#M+}-HS(+m~nj?Fd`vN;pjyq35 zGf&AiPbD=^tu;?$KL6Eyo)$PymoiUZJkQWP&j^}lTAF7*n*a7N&jP!^io3u@v%t=^ zz#+9D!>P5vWxl}ezQ6-q;7wWJD_-DlUJw8+2rexM9W4kyEQr7^isCMc(JYE{ElNl& zN@^`inJ-GaFUkNHWm6XAJ_9+4WY;0^C92}gSoZQ^p zJUl#ne0==;{DOjlLPA0!A|j%qqT=G>5)u+pQc}{=(lRnKva+&ra&q$W@(KzHii(O# zN=nMg$|@=>L~%9335t+9#|=kMiib_gK%F4>h%gg^abXmK*yL)?k`}_L`2M7Nx>-~?!R-bJZDgudYU4DNE0ycyG zXkEcz7zUMmwru@xP!s`&&E{x*;Yb|0L?nq^L(y0gokoTJSVQqd8msAewp?S$R2Hx6 z`Q}(-=}ewz2okA$Q`uahY!ZXPcvJa8scNBoj(l^)Ql(C#&DMBx4)N7LCtnMS4IR7dm0N}cIMu2N^q)kd4^#r9NZ>-A1w2=W)@ zuD08Q(Im#7(_QU%C$ohLdCJ`#4;QPAwmZ|^oln=hgHhoBZma&6wpGZQ6cG6PEH04v z`cC8!w27mAy@VvJBp#~?VPArAe&2wQIHL9X<;Wpn@r=tL>xXdkqHo8LZAplcn1)0p z(1blv8b+~H^x4LFe^&jqp-JxhJHZw}!al^Em3=oyc&+$jMhJ}3I7yM@%Q3HcQPpIr z$T9VILA;Wpc}^=V=kKR2mcxZCO2x)O!X0(RJ#MC8;jt_N{{bAu?ycsTcIE(o0<=s! z7%(`x`H=8rL6_CMJAU|&PdjWwvq4ahyz!98tZ#MC$Fw~ERt^H-Dfo_33*+0-%WS7# z&T|i7Uw2f)w}YTlERDR++YWm8PpT&#UN==mg8+w3Y5v}SMk{+d_q!V(I@kJzEP7&q{lR@2*TA z{AX@M#1VCNp$Ez-(4Pc;{JU@MZGCWL05gg~WZ*$J!z$V#Oa6p@coZ#>Wc9aj)#+zV z@4v904I*V4hwsN1$Bc{z&`540Zl#LnSFw6CyA`1IOE(jIbqqDGEKmkJ5Ok6Jxd|7P z%tSXw7^*;Y{wj%Mv>Y!h71C}W(Qf-2J8v`*tmG6apePD~l@EdB1_8@9Du#=V$IVos z62*70FV}@2&Kg+D0a5GHSf$8ovNk|3rbtG;!0qDWGifR%l zBNSU7Z5bW(0F?n`J!SR$3Me4P_F|Kk48}@>(4pe`D@!8XU?e*VNpsgGqxjo7N$s?V zNRpuY-QYHUJd1)#F=AZF^S4oDkt}1>^LU^!MQUTyA%xu+)CC1a8igytv&r*>L~eX~ zS{r~(f?~jo-z-DjEEBCh9!6JNJ$m8Nl*=@9$^ehaf7_0Vbp;+g?Hn4MEx>sqHft>z zR=<$bgd!>^KpyO6sFC(GM9YdvFVEyqlb8E>ySPH93XRc}0VhC*x=k-`yUg)>Bijm( zu|u-kShElURp(nTD<^+E69%H)q0CamkjK1HOpc_rywMN^VG@XUCF%s(+2==rN z65TmZoxvO^R(IP;8;V4XK0_?65b2|@)8S_-F%G{mSbS_&ihi(HaIr+5!H`oVlrE9J z238v6TztnT(60YVS-uY_r{&(`TojA3@S-C^J%Iau8pQ7B4oiS!<+Rdu?p{lC`4ulo zG@`+KA4^Gscx73;v86%9Jmw?!JBKU?$*s>a8D#sNElb4@Jj{wnzEDO>Cx%!Z!EHrO zm1*s@QoA_dScW_aiK?R-jCME&d7~K!tuG)t?#)!&q*ZP)7q-Fr?uy-2yy1vG(XwZQ z{&P5m(dDjG|CpZ#YF4YvZAxb=-&V^_+``ql7h_W7mKJoK)&KZ=xBHef5R&};2jb7P0bD~9 z+}dzG)Lw^%JC5DG_xK^n-?l^4%70u`CXIkKtI?>AFm(_#=+wK#x1WzgND5XVY>~^C`pI#Sx0dNzh$H25iZ#=U!MR7N_tMSqS0YK- z>yscAw>BwgQVc8ht3O#geSe>NpEfN8(FAAVz&uYi zU++;SHGk&3e$qzux<@gda=oQ_>sN*3&XNiC_D%THL;3f-;dF8p)HD&!tDVv(ERyx> z0QA=~&o6zUoYh|)fvhb&1|iJ!Ib4+$&r%1FJQ{rF8c}x_z>fnf))%36>Y%0b zOB9Z3xN}DnN1WT2U7DF}hBGmBL74x+r0cKuT)I zQ3O*(xCBB?E^N63Hf%=;jUTuYTBiHrxHm}}WrnoY{uH_Z8Qq9c3B=N-WKw#u_Jd>> zx|Ct*loB2J1af7CVm(WD=l~p9^2U@1bHnIC8i8a;0=^i^8!4qz@n5{snDI8e$E+=M ziPmc|ZG%xHXF97?X@kd!!`hY;2-f(8R%vxdiKD4>)fwM4p! z1Pyx%EN3yCgD9sjcvjn(JQ?l)nk_IZu01PpElamAGJzm_fFrwHBU@}OVZz#4rpa6W zIDS$t@VZSD(3lqT@N=bI`{#lw-6AzGK1G#_a{#Cz*yIH<7<{H1hB}gaZ2^Qd4V8R` zP0PsG@yv6kQKK<4*$s88`0n&!{Tob}Fr6XR4uC5sG~Z9*{t}|IKE^LA4(LvZ*e@Q?qegmmESKfzhyoBAtMFU zZeY3L4d=Ca!XCIpC8?Q{xDUCCkRsV(U5n%x++AhdF&>Ikk$%gbL2JpUUY+FWj@vS< z7w4_T8Zp>>10VicF)OjjkEB7=Qwf3n)#xnHAttiV@tf-h#(0UhX(17QZwM5zQ?5_w{&* z()p3HA~`D13QJS*S&eUSD;O}W`Lb)hgW5}MIh_h*EGxqq^nP|!mSO7}7h3(qsN&I9 z3en(A9W*t9cVVG4tUAk_?%(wEg&R9;F|?q#|${m=#2)G%B5^Ffn207Mro>XH5=S=CU5*zIY1()VpgonK^R9!zZ?5NR zMuIGXE6mm12&y~M4APY1K(^)5gEX#ee35PuUZvO$F};q2yX7zaanJUX6;E!W8j-FQ z&c}tprxpGQV_2K@bWLBU)5Kpuw}8O$8$nsVCKQfSn<=s1{4WY{2shKN)%UNNQE#|u z7vauXMib3O-4bRt?3NO~qZwnqgD69fYFgbGBY1p1%x< zg_6xhv0ST=2D`T^$#)cF_Z50*M0F#x%yn*CE;oAm-g-==yD*R2zldp)gyhnR+Pqvq z_+PLWjE4PV6i@6(hUOIMr>W%&=`+_OMtsxNBP{FD&v4o2|4b=`l! zZJp9=4e4*;Flr|KQ6^a}{eg>E$Y$;hP12s(1F#Yx?e|n!m?X9{&@<$B*Hbp#T`oOe z;W7eix&jI8`kv>En4VukNYZ0OnBgw01C?;{*#J z!79ujM;J|lWi4G8D?DS8lP1u~*ln&+ES&=dn>;xH)!)-Q);9s?=q)AmWCT1qXBN&4%u$<8M^nRZ8RQR3z{ zG2jY|Zb3oMB%BR`81MQGh@O}PB%jSl%&VopPjm#%d2$iTln^o*`c``D2&e(PF^gxw z`YUtp$yXXps$JlIPFp^7-72G(ic9f({cbwc6>oxUHoY}dpHm&NSrzr6 zF#8_%3t~7n=~6H$Dg1K-a?Fy2KC3QbS&a4Fu$aj4^d)q8RT%E0!0z79;IB&@_ zuc&3ssG#oRG&|P&?W8B~H0LP&`i_7C3SZWlSlQgRdfDz{-myDNMMQ;tw4Z5;8L+BW zYVb}oJee=|+=lTdf&0UHjcedK|{7O=8uyRhYTaFHGQd~;2QfYmC0ayl;H_Ubb%OU41q?9-69cWhmYhifLMyML=I zF;uoGIQJhvhZ^euMQ?3gjj74i;leHbwM&Wnqtd-i-1{%JpNzHE;4GymXjm8sLO2B5 zUZ8xqmV6wYO<%|Y;ud7jm(ebCQ_e?u*07%URu0a^?72}H({@LitStVVOj~e7Wcr>H zUv2weqh0^SR#Ni}@o(BZ^oz#XIS`!QuRMq*)RHphyQu(MWN9r1kuraNmffh<4Q>57 zL3kEQV@?Yxymo&%_Wbxh8<9y2k|hy2t0Db+_s59DYLDiNV?^%Xyy;Vh8NQO_TQ0(z zh&9OQm)j?ujvorT)p%$0={Hs5cdG|C=mGk6R{jBi2XMqim3`(MeNM&Mg);d5Z!V+| zsJ7Iw2LH?8N9>=w=Z9)w!c?h*8%gSm&tqVg!bJ}*Uu~#Eo*;b8tTvIvkB1*VviF@f zw+hMkzHuc=j#_55N@5VfHr$@AJ%0nEH4SH;Zydb#tl|02;03I6VW||xEgsWjA1gX< z4f-FG+g?T&UI_iOT`G5D`3!ys3>57&l(6LM24;qUam_EQiAm9gblfFn^L?+s-~Z@+ zh;)04p3%zj4aHb^lk{e5fma$7c>(==nb+IWFL*}=KSGGf86gJ4q7nfTF_6T8!X&}~ zf?MNQVkXsO3^j^iXlO_{Iw#cvi3kF|cse^ewg0qL9f~*_$BLN|hQg9qG{{6;1>#ENQtq%t+n)IZxQVIa|eT)b*+p>!_BaR5BFJQI%g<$t+&kwRm*{}+4r*qm9| zwFx-3ZKq?~wr$&12OTGOY}g$6;CW;vX>PbOd%B$gMop-oIoN9 zg-UJx3RA;|pwy_PkS{5KsgS{>T_h~iq)H8>tkqRvm8VHB8bZTmcYTCu3WiDgu{17` zw@Inf>11&H`S;Q6-3b9W_(G<3rc@V>_2IbWhjjm~owu`=biuZ$_{jW6L6dybje-y_`fv{-lS|5IW zb#R=RV_US}Mg=)|C^;h(@uHcMAg&Ydjc}%Va2(ZnRR|e8!Y>F`Y0`YKInFxK(BRsK zNxGo0$7MY`NnD2*8Nn{bF*>1hW#^~I5k zO^S=0m&!%R(e!(qo2K0~(0JZrETEV`%mQO>Du0w1IvQdJo3X~p7`o}x#r9|^KCYt{ zwS`x4)j`x^d%6h9F#Iu@z5)mg)uT!EI;qdH;#vsC9`Su4&=LDdVOcBH1%B=$b+H;| zehDmEq$doxMM2E>W{q@+)`}2OWCit534F>W4JS&0Xj!SENX8_2NL6YbkCmszHI*;F zwvF@(iT-ss0%rC=OflKiKYiK?^BYno7T*C=zx%@^U56fy2&MsohDoCxUDfHvI14Vb z5|Z^~CGUJnl{S%!slZ^EdjpmY2Qe%hRp<1QXw(n>{zZNFg(YsQ+%~s#lDnc*Ps*QH z0&mIztxxG2Pr7NYs*7cFGFCOG0+XX~vIut3{xR z9xtJ~2cjsL3O}cN+>g?^3U2ccEPS?yeC@i6;|VGVUHgtb-Cqt3dpCD0xr`qFFm3K~ zJOakZ;OvjN2=NEwsgxM6aG38Ajlh`)wmqp_p!LAwh>&g22P^)QsfFa44)45k$bbd*bJ$T!K0nu;^FwHcQxj#z=MV!ZPF6nf$9kFSzd9O{uP9A}AdoNXMyPZNppZy(@J8NiXW_v~ z7n`%uV^zj$Ad-0qipUau9fr@^C_LA>4ggx3LLE~qq1p;sDoKDaw01%W?lTLj5ds>a z9l7K?jia&%L6KCHcGo^gf@3A_uC`yok6r1+s1F~NoVryGnW-OWws)u`5<2C1wN&b4 z^yGyBW<3(`@v$}QtN433QWJCKIt8vtFx1~it-O~40qQ%{9d5i(!bnz=a?~{+Wr`sg z_;7uWG>XGONL)}w&Iqw2d_NhgxlA=3MXKpTn#IyJk#fj*fNYD*V=mw@pI`2tvQ^q5 z)B@B7<3(pE*<2;e9Nik$((e=(7KU|0_bISmfoMT6$u7G#Lr@tPJe4z?Rvcilw$D}AwNlKnnnu=n$fnAv% z)J|7pXoz`p*0xVU)B0#ex>#ht5s4-`-l60^mfL+gmudnM-_TY-(<7bnVSg+YtIS7H z!bAT9R=7rcuO2H#{^ph6au-@CX6_?J4z7?1=a8@Dm9Z^MhrAQLh11@W2sOla&l#63 zM;qwlj&q_kL~3i#gIULEd!1^G+ge4lB~|rQfpAU!N2`g3hdUN#(3IVNw&}!+GosK5 ziUwkCLBAj|p;tB^X3c|HMRu0*s8NJGtzUsuRs)9aE^V?H7{2x!r;|Te75hqGhre2J zCgOz{OLk2_ve^)903FbSA_yfFnX~bLmG4hw4quZD{-EujXbe5p9QQ9gzX6B zUhWXh;A5S}Q+AeZqOMWV;aJt&EhK&CdVhl)o{NiA-{Q>m5BAG2vut|M!W6Mi)-^nto`;TIlT=E+uydvn%S zoeNj<9^!doSIc((GK-q4!L{$xM^W^+j(8{{q-pwX2W>=CGY5R#M61+3XV$neL*6c@ zN8m;#MS8jr5mQEV_mLdUTc_Sb)@pm_Z;-Ce2^aedJ?L8+G~D&pM@(HTglTBzW1n$s zB$K6~#?yLUUcVesEK?@`UkXkPdbI}%Ls@i_8eG1s+4GjkRwiPNL8G@2`)xc6+IPi% zKBN8k+7TI%)|@we_nNt`VJ}m4tdx;mH+ebT7Xma(mmhqYd79<*PbS;?zh&dSfUmxK zU-wcbpPhs=Pxl!AoU(ym*med>O>z(HmNkaX6z#T(<2`F3^!R5AFfQF~d5lo)I5Vj_ zO%QU8&%s`#en)&>mk~H`V_I+rI&7a7ka{o4_1#B%O#MgX|Gp|@0zodBnTmRsow=UT zJ3AM8o3sTwZUsAGqL~80L_~rt(P$H4x;NDRe86{xH*tA@b$#i;Rib-J# z9HIzo;Wm`NSqT^qYr+N5p`s0hXS_M0C@f6kaJ2mWbn^%<&&O17Dy3B0sSU=laM34BKik2p(i7*Je=^nD6Rts>yzKbK*2~aSbyL zL>h5=^XNBSDj&VU9Gk(Zzg(#5ZMDgRIXHxCbrO@E$p^gpet>%TLBo=QMzh}I2hlY$Np}ox0>2SC{^(Kb zVKQ?u=v(oP0Wp`7;gBZD%fFJ6#t>4}g>V@~P6&z45ZIpVfvyyiKrwrG4}B?sdAgB( zuS-e4M)rt)&7fMabknSq)#b=9aUpf~XaO?-Pl?!#*l1UK=$^?ak-G#+=nyxWcoe(H zsxVRvhFI)lO3tI$6xeV~sCdGs%%~fzFU43cMKm+_7+H=$>SCYzW@83_0u2vuSHYOV zYG`_4pm@JbRq{9%dcSLlP;D|)ZNSXXdB0_3Xj%?nB z6g&Y)ANXiLT};#JxZS0!YA9`2LwwH}yt7JjI7Qs$hRBj^H5Lo}D||27AbLkavtG8G z2Tdr^B}hc~gxsXuu(~V_d(7JaSb;rk1;S(teRLH@(ZlFCP}^Omm`)m6oVuYUzPm3z zod!3Y01(fEyvX`{8i5~39lcZhcMfAL6@PqzAgLjv2!VTIc@plWiNRAJajr#S4P??9 zRescX7zZcsF@#SaKV$Duwl;B6ZZ-R}FMGm$y4jiR)ExcHy>_q)WhlA!jj!LdTfrbk z;rdeX=5zWsMs_P_c<@4^j6(29eAv82xj9fwcU>~82|uG7FgrFwzo+z|-4sm=0f)oe zoKf;q2OZia8O*=Fv0?h5Ml||U?vqUcrWL(OIwiYAS;}3(D_agxLCI2N0F`9`l0Ulp zK2Ifvn^tB{XD!;1zd-dPHyVy8;%zprsN}SJ4*xYB7|J)>a4@IW4f~nRB7ikJKpe4~kLXi4 zg+&FM7X-DN zDgr|;emHCif%?J5V6MbIAvN_0a0P<%_J#28h6tmCCKZAtNQ^f#uYzbanZXl;~ zjiJ#GlFTkW9WGf{=KDwYvftQ)>fHIl$ds)1LvhEzX+*X9Cn9Awx9fp9QzUJ59 z(c2vgIc>1i)%&ewL-$xZ^__&)H6ItF)?&Sq%$@BjBjN-Mx}z<*pjI((W6nm+!BT=@ z{#^-q<5+{;D{XSTibefKB#mesSghQ}id`g`Iu4rXyVi^a%s~p6y-zqzv}8S`sGUxZ zI8;NE4@zEb9)RnfQ5ZM-{YE};00DNo!Q`fJlK@M+eR37$(j;RaO~VDopaXAsG|LDe z4F97h9W^$ZRJP4yE5XhvYhWM!H@Wut{$?p9eq}rpwE}Ceu_c*4dtT9W!vWX61mSTV z_wpYe$=Kj_Onn)c$UV%fr7Unco|ijwFZM&Uj(tBKlbO~1Jh*yEL*Y(m2zs3k*55JI zXf#Tj<^cwSAd8}DNpdPg7FBEJ26qJH*W_B{2!NdKh2s5Qg{$)jwB z#j9x8%(cY!l0!;CIy}eGDjgFV{yc62OUpXCs=XZ2xMP958nhx-h#%%!{?s~g2I$Y0 zB^?$nX&t`jg!Zy#Nd-Yb?sJPPeJoGG0~60qQ^&)@4HKTF#6WeIp6x9i!ysBlh0xD15ho-A|4v5x`# zjYINTwnbfT9OC2xN|f1zO~*;m)Q(BoIRv*vxHM@MpF9bp$0(!EcqY&kUC2^i{Vu3p z7(QA|i^>xLCFW*Wv8*yY*IM&rWH&zBm_APbVLdE!*l_KT{SS2r6P_N#V4P@c-;vHi zVE9lo`Y7&VCfv~x|LV*#TH&r~!C9AQ==zeeRL0gpEXW~;VdzWDex;jZD{l+A$zl_f za~p8;CV4SUL31$dQ~+*KpsA^#k;sJTaE5jJOrn)n6Q#uHq9gBIR#6}`PYFE(f+4(} zo^mz8cJr{Torudc>uQgvgyn|_|AysgS$i}1xk#mU(k6K4>*8qDn%W9?i=`DeRy)1& z-zG9aVI8}FoXB71pG?Sztru1Hl=#LVqeFurx8QV;o4Q?hP>-{=pOpe>3sPR2W z&%jGC+x33!QJR3I!<-f5KEsLYi*Rfc^CTyN8~0gzX~Xq}A}b@2+@XIa0z6(*^2|ak*8&TlS~(@M(@0>R9bptl--H#4tjw~G4(~E z0T_Z8aK6}@y5mV)$xG78#nb7fwBm<_!N6`oAe%)>iT~?oo-1VCo&O(1NBH3S!j@y0 zSD5%&g%G$9WU)oTSVY?dm84qNIB$T^OX$$O!N@BpFWmFqYqAQ1c!x?v<+g%pnArmorj-6MreT~2`9C<97|TE7hge*H z?dL$k5Q9OZ(Q7lK{tbo0X0<=PEewi8qf(?dpEFG&;WAAbMIj9e0)-`0J`D^WLL`MEhtr8^f-haw^;}G717qAU;Y`1Obmn(>Pyi_rkc{{qyCXp@PE_hg}H>9G`4N zyId)Y!e(>4e7!TxP5K43B=gF89D(qGw0QZ(c3RBZXx=TdOs<&bhOj!LGzRSe34qYZhLDz70q$bR40--d%bTR4wtttb>fZp`EtF@YAFh;c?gXK zfeLy3ga7^UoP55{0iWviHC=>iToEW35T)BFJm<|TYD=CqJhrIe%iCk6 z<^!nZA`O%K`hltOb!Rc>f*Oz-ifqQ=r71njLqcfBe%MDC&Cq#Tf8 zbKY(ik_2m!=_i8bN$mNG3!CNjX)}mw3k6{u2o7G95)uS6jD;Q|u>H6TROEVYA1rF1Q0Bv zv=9dMS(5^<(43c{f%QT4eU)@8|Zz$yw#m-)08oTMN)wLqg0e9~9Qf@-ax1JC0evrWeizNx|KA z;swz_f`%n1yQkSC=2T_RmZ$3;s#b=%ll;{aF!h~_T|A$_scE{#gw+DsSy!tgr%k|U z7@+OG_27zWWoRPivFXd68a@(h`LK}K9Taqjp7HI|b6^9)#m?BdU#r=3qIxvbpX z#v`{drMV1xkX+9gtFwH!m`;6`qPUf$D^|GgJdSU<+c2n^c~VqW0Ug(Kbi;2Wx(XV2 z$(Y;;fx0Ed#=OD7rFFbU3~krE{xQs84P8xE!d+LDKOMb*r1MUbzL{QMNPgGoSinD? zaoDV*ppiZ*S*SiqW`7`Q!+zdp=RZlKcOqHG`vye`H}^`Ff?Mp#vYB;AhklzWSoeH)rUTOj&cI39-5Jqfbt zT7(c8!7M9|ff#noL@+<7`By~0`X{w?4Z)1Ig-jY`W?0_<$z7a`djbAV1t#^g75PTe zj4UrT`e1vc$B9@zERBhzk~bNKNYWPGlPBL~#hjiiFeT1AuN5tm+f~Y^#bgcvjXCH} z$tZ-toHR%}NC;6SaX(0t+|K4toX=$tCjgl;F@egD{d}#sBO&53Mbe09G$y^4@x>6plurOSuLY5I04d8#B{OfCDg$bxtV@3(DJV}PZ z+Rr*;A(}*GI)Gr405ZU6`k=VJd0aM1J5 zUR6GOZIjx0nf&A5r_~G?Tx-xXAOiz`amf2vb&I7LzO54Am|Lj)3nj||FkrC5k^7SdbN)6SLzsIaNlSYQd)zu$Eb;%%u*Gn zRU^9DiQYbIdXV%zna=4mWd)g{T&t>Ds#-X(akPQYqhQWJ_D>vi&~4B^rI5$g=1D3Uv+L5l4%w8lA! zCqt9r<75j-3B#4>KsF(0Qkd-#rK!v=@SgukF+=wX(?3J5<9!yhvIlxP ziXuvy<_RZF0R#ANB&%TIKhwGt2nm8SbKY-T!o=$&BO42(xDN6R$VbbDc@D+hr(z2z zDRV*`Y=zsI1T-TQi(ot`mHi#Cz&aF#C5)8oTs?tYA}6aN?S|GyFSos*Qa-XCENSMD zt8wA6(~O`anJ)5Jds#X?rn|D;(G02z(4qPMm%1C96LQf`V?D&Yc8K|L@e`+wHSxOT zn)nHSnlwMsop_y>T7E%Pni2d3C_;7EJP+r@2kV`ceFwvTSLH{I&w+EC-dP^B#13Sj zB6-~UN_DJvnoaNfW>ehJ!GkVoOv7D)=DZTS<7&w(OFCX(Xp4W2?>YYxFsUQ$-|xSw z)kye;z_ABTZ-v$6{Q^A|dEuPvw{`EJs8Mv%`?;LD?~ZViOWo(Us$Z*VY1M>^;1&MjW~Qp`St4MvK`NT`>6 zk^(ih1)tGv>cXO~6H?kw7I5f|X$z*x_tU2Zo>rjW{Kf*kJ|;&>nbyL6v_lmbmJ^~c zDEaq{!IM=B=kT?{R`+7E((+)~^)=?Z7q;)^N0mxuPOF_gfW9hP=Q$Bst@)?W4A~Jf$n;~Nn_x?i~(k2foq(pzm zFtOoad=JlFa@hQ*AeA(6UiU7#0 zdP@GQ&1bQEL1f^XqaK6e{rbx^zlY4mh7t?oTp&oayG;?OGvWY*dMKt0&smLori^F@ z`_7VMU;82kKzX!=Vio4(HyR=c%l#A@@;;V>KAwYS9BKCJ$S5D#I+V<&T@%`2VaHTV zuCyqw0P=i5G2I?1eeOXQZ0PqHb*IQ4@4T7Q>+HZ|%5Lj&b6^Rjp{d}x*#W3ZTT00k zW{$9;oC}V*jDo^HnnN>|!;n^mBo}F7+7a<#Qwc*%22&GBEQnSZfEl&vZ~?_nZ$f;{ z*wsu5b;VGD`z3+jd0j&UIE;8x400(DX1BPb!>>yc!l>M2=Gn#vFYF~)Z->DUrOL9T z5>dH=cM`FA1jgF3L^@S4y9f}* z(g_%3KnlxtBMymG`B@8taB`J>N~obR!~0T$!%-vk!|e7jzr;0_LtXKJ5>vD?;m16o zv_S{FKJdCjGBQX5`CU-aJjgf;*SWy!K?pp8RZBxzIp<=jeJJj2i@@At%qf8FaoEq% z(9=mG`=U&H!yR`xOQ-WlN4!~|f5#JdgrA7w?>bZODiM#Pp>FF68~Wlt%SXS?R$WX^ zUaU_%uOXdA#h)n-ef;-jOAx%pLz6|;d?ZhM8>m*+%1mDa^$C9zs3U<>uDNY32i%v} zfoPiz0r&{_1Gk6F1|iS_;d~Udg8%LX|AnW!Mhlgtjw8Z1>r4l^AJ#7nBNqw#JS(^E z1d;_K=Kg|OwYx3}EIaj}mXsG4iMB+x9HP$Z9~PUoh=j6=^Q6g8KGk$BynsDRaHKIU z!AnYtk*23P;-QJA2$PqtjEIQA`nof9o1Ymd? zmT0RXU5}#DZ!p@nb@aUgi@Z3xj=x)tg86z0*`16C2tKn$-gxE9bOWqm^}5!*!;8KD zGSaqF1{Df(0T8rtL^YW7-xCa}uvrBs{aD#yT+!;NqfuLco!}i^W7^0U4>4`;(43F` z!C-nzsr}gX>uL6+i*acp>W9HF!Mt=x$U%cZQbksAjji*J9+18bChegx2cb_{nMne z4Yo74M!af zt^W?;dcv+1v3MITs{YQiF;Ytr)eSy3z>HjVzsH~;L!gQ^@WCFc(X#YZiQo)E@F0l}R!C5}k#OJs-FF8K zb!cY}%5`pv^}&q&p@!z;L|o2%2EvM_cSB-yfi!SSIzX$18lGZ$nkTO!FSd+`p&JXp7aM>3Q*wuh+x|J6k-|<`+BQ&>% zx^p{0n_CP08D-rA5Nk*!UUNb%Q$8oR6doIXczw==hugJ>x}rOJXeJC`7+&8^;(643 zV~RupC?8gfvd3EBj}{b0cM`4^F<)BoUvz#3lI&qH0bp5-KivhGbW{x=?qePq+1#n~ z+IDV%N4yYpJtwhcG z-YieMKCU;Ct?DBwXO1w0KuoJjQ1bB>88HLlAP*`#HudCIYUmLir2}!1eviyTy^#AW z*d+brN4*V?{QZaMRm5|DOYDCf#_{>WcjQ!t1!~y8O?-hgrW?8QPvY+91!gO)xSUAZ zH6S_W93f(6O@kmuH|uvV|M3{hZ4* zmijWkn-ibc4}Uv8(87Q}Eik7lL%e{Xd3|gj=YDQ514vyhN!++z1P(lI6^WhkpPqGI zm`z`zyUkn|wq1?5ynShzPo5U&pXIcPf9hSl(2|#}d3ycv@?)#viho%U#tCrq_+E+w zi8cR4T<#mM9q83Oh~|A@O&Uzq9$;tMOe0t9vfeK4tz^_{JMi7D;i$hn7s76eH z=QeaY8SXD-q)mAPIpMa7O@jHE^^t#Iz`dMD~h=_Ul zb94~mZMy_zkM`NF*o?L0*SlEs>tHy;PvwJBIr%bQ?;oWcCM7%-e}1OFyE_rrI}VCt zsO;L>)T9)wSs8{`5AZg~RU~9Po5esqv%8km(Bxbm<{qCI5h$GNdNwHef=0h!e+a8} zpO=RstOlJZmJP;i+mbG-w`6m+=KHp$GiFEu8CB)ceo3RZ6%T)7#v@zj^~HR>TE5~& ze3~djM&fE~?!p~?l0#`9UMGBiFH8#_xq`EXw&T{~C2OM!k0$b#);_ z7pew#<9+s<@sEv=u*UNa)VD}@(~Z*B6sPk~av7hM`56V)NaQ%24|h+qk-0DMTWw-x z0Y0aZ1<2q1JZF{89v!C91r{QH&s})!a2z4H_TX|)8}DaG z67AnR9VK{SB?unB!kqgL<*&pnTfoK6zXM;Vcb9fJy3_Lm!P}F6TX;X>;R~t8D|Vs( z+++80D3vxlWUW&Rd@%|=bqQA2b>KLzFVZjKp|pK@|s8Pk^}{TfMakM zD2s^0VzIkI$cQG;EF>!xN~ZFr0&O*_wHhs#I-jcK>y7$5OKi}s!r}P+!7z0TLsUv+ zvxkp((;W@EyzY*dy3%jP8h(Mc5%{v5tmO$I);LU%Nvcw~vpMkW}8m<~zeL;E1;6j-j*n~bChWIu0Dw;2Q=3Gmi}LW=Q48s`j**p9X)Qfc+( z__!Un7ygn|@wU3zu@B>7oL=|wy4mTEz(&U8Jt1J%mgnkX1KlrJjc`im`*ue^UhX28 zke~hD(Jp*kXFy*~3q*QH@8y*HA#v@Q>%UCTZ+?LI;`MPA2GbSxfy27a4j_vls0_xD zU|d20c~KA<;6sW?1`zkofzE@tHZ^mSD01?EG8`DSy9Rgzdbr_IsLr`j@qy%2*8hqw$LTOne|O^sC(fWx)cbCiPS znuWy$V9ly9R&(8^vUYjhu5n6p!=dA9dBdq6QESs>jA3QdZB9XJ%VW)9Wy@^lxgrs{~2w+@4 zElyO_JuA(0Tt6!>jMF`@tgKryy{PTDUcadCN7B1&9An(LY@SopyJ}r?+_-An zi_^RAIIG*Z?z)@SyXkqm-njV#imZRz56iT9JAkUBe>a5dw0So|8n1spMpM7}%>m5l zKTPr5eA9d)$OeydGE7^K3o1$mPfI#ZTTd${@dnRpHuYQ28!j^jFIzr0TQ567$cC?b z0H*ENgG8lU!?&YMr|q|s!g#~?v&#DI_lw3E!;h!LJ*?+E;uQU2&`g4 zFlNgxBuj<}qGLh`;o~l}2#zRf-1kO4`yQ-HhA3uTLKuVl9=r*T818gJI7iDKqDzJt z;dMfUz~dfr5RN!0Qevb8`#x%7hBzf-B0#}?AH5Jqf<`ehN~2{TvoS-0!7(w~;Bg(l-bYIS>#K`tKKH z7Hk$Q;=c&ae-WJjd<_4;KL15<{)^!J7s2^2g7g0x!TF1~wkpY0gcQeP7TS0CiptwG z8wb@Tf^b_g!jg6u!_r_#(u@)=Vu%v%D1JDEg9 z3-kfV!LVVF(U*zE(MXh?p}@-oQc@1RP6|r0SuReNa>S2LP}ap~?;t>OdrQqrskUaoR<$ymlv;l#2R8cS99C9Y)Gibe zZ!|Jod;7_*k+ zv)Vm(uiH`&Yyj zxX60xRCj}L%KYGMIZAW?-4#R~&sle$_tJYRkg4SR(LJhA=SkgQcz%pO;<$$W2WGmS z{Pm-I?`y?-m7ICA!DAOf4+nth90&?#3<9k#3_&?+jBPlV|9#2u$dpc%o06>DeJMBc>1_ziu40+#^?8K-iQ9dkAsYg9Pxnyc$HHkp`^f2 zwHCA!{gaX{xcNlI+ma#uGgfHcg^+9Z)AQA4oQ$U$9Y&5?2c`c5#uL3f;4`BUi{ zwE8akLovB4aIL$}6_|h{5*JzP=eoDVmQpfDHf>wJ^z*e@q&6fUemi??ue=ScraCD| zN0+WH(N@9`0T{nIOzQecfvji%u)B}mQSI!mk3AHr<30l)@Dw#+P$=!UnJ?;Q z`HPg(A303q1S;cdMXJhSC_(e!jJNiDxqHeHxg7>D$5mc|U>GkvvkRvzB0`v#LXQ?S zzigR>Fu@LNt-2Ps{yhhb^c*^@m|z4Odv#k0fGQyIrf}qH^+5+@zkYtlNgx{F%t7vs zmVFNJ;~sLP4DVCgc$euMJ9>aF582oJBON{b#{b-lq)OEKXpMg^iuGQh8GS8)UfUer zINy6}`Si2jcy0X514OggC|94B1*-(Umf!RN@38azjv~6AcGP;1%#4QE@?RWEmi5-E z;XZ?5@l3rlR^=2Nene>Oe(a?OoLdE4b9&2h1)5=6z64(97T@!5){;X7VF?{A5AZf@ND{UnH%PtzO`+^q{UqxP zI>Khw=8{CcHQDq4r?57NrwTmO3Y8uVbZRk9ZwP*0)C`-|?KjhAoNtt%B7I_eotSz#ZJ0c+=>n%$>IeXCg~!OBj}sh*^&)1Yd*3ne}P zZGZ^{L#@t&5^k2_W03)AU!i3Kgb{LEiDdHf4{Z*1Skm)s*DxYC{Eu#e5+uRFp7W&2 z-x4mp3m)O^WyTpE_`^NvRXrX?IPo>=)H1lzP0ku6>|#jQ=7GgEHKHbjV(TgR8#2k! z2>OOhP7lG^``oInZ7hE)x8SHYQj3If$0nbKkD)^v71&e_nR%dV8G(z7&$HSb=#Gp6 zsMVM!R%2*RtY%+rmqKG7LIV=GgC9@TRX7y3Dxg9}`~;IZwVk<~p?1n2Yx3~U?sVhC$a-Ov^1KHjX;t%F#ks%K{wozB(ISO(>zV8b`xJrNyY{w8l9#r zN3fkACI1PLWKjmC{$U(@Y|Y5Zm1(UF)sdoVqtJ+xY5~xPJ5bxPj{lZLbZ!0z7J2Yt zjUX#9ivXu#Jt|JYPf1g+C8UXl4QCAEK+^a3HAlVa8j(9Q_d?S z@^oUYd9uhtqbQxd-~uy{oLxXO!KFbgfKaK*yWo_@l8A)d`FciA_pTmfb#5vew0zQwRN*vD^t*g zX#loJa>$n7TI%SGd)je}%CF`M|0FgJgV^>c^t>%SX||6zcY>hJiq_R+!>ydQsS0tg zbWf|iD|Cvs5zZe6tf||^jg-;+tTGQP)*Y{Ettj`UEjurC`oETkhFi7AvbHY<=(Tug zhaCPxfbqcQs&rwyqY|Wubjr;(Z53g-Fuest=+#GMM2zthddgbc5I@-G5?YqZs z95=sn!u|1DCW;!HPSc0OINaZLRw>HF50HH3wNH5Uiy0Mtw4$&H9u|*o48<-Q5WnuA zt2Y|!31Ku|@H|g-B}7OXkVqs6hwE4uVpYqkWkws~P8+<>MK9Eq(W8}ZfQPPYt2HK7 z7VG_u0u>I#cIlMoqK)YOloKYi6bjIGrCPS-FRM+A*;)^H9xV9fY<9{pN5L844Pw|W zsAY|_B5v=et%x{HpvjOD7coDwTe6no$zSS1aa$2MT23# z=m@NCo~D&GlailwX-AQ3#t?2?>~sM{*VAG7=i5mZ`ZhdBcZ4}B+ok`^$nM|?D^1^U z&)txRz~|0_v_sMDH2&Es3?UzuPEe!AOem~;CEm!D4ME1y)xy`p3oPln#bOqE>EeQI z{af8Z@>;!eE_%i;0}da0nFZliWi$2RWlq=9Gor9yN3aCXoaEjL=j_7i>kE!sGs9N{ zQY}Uo7BuYDdzIaLe$he=SASNLE63@dITnlj^G~E*=j;Se?}@?}9|2IWWt6TFLf#+o zvRjb03L>pD1R?+$vLBwVzq+I26Hg{dOrle+b2zM#w1x|nL%s^1z&z^v&-C}AdJ*7k!qk^^=lB?kO$R~^-g6821*!(eGG~N_>o;Xc`i@kv{{w#jvqQZOR4+HzK#!Q|(|Q9;H;G5Ap50orJO>Jx0J% z2J`7wy3!C-TT92f#AKuOf8nHs5cUP}J^o^@%E06`4U%s=!EdY27{@sX&30B*@z${W z9JPY?ZxmNkkQsi9uJnBfq;3t{;d0`|0B6(88_&sVqv&7ntS#?OjEs?}K?o~!2Bd&Y z>|*g@eK_`Bavsu)W_MHt zL}ZpWcH5($24GBXKr=snRM-l$!NkU34`@#=&X&E+UIV-HR4yh*pr>qfW>$-pv#`Qa zTjx~z@QG>{D7fdVy2pQo%?y;ZKH@96hN<(Ai~5#LkMb|*LC-CXG;kAUNnU00$MO+X zLcMLKrQEV~sVwrv#7g_KDvmB@GZ%}XKq!-k^hn&x>-cV) zyhusOfK02<4e^M}qF##r#^=-*5~6Bzuhv3h2TTuOHY1@Dh1ciY*00LeiRHLEGG@BJ z@6l*N(yln=Z5Fz-HmKo-OZ4k-iZ%0gzbM zyc*!YD~uzBZBk&zLDN+@gh=OHZD&TiA_eZAR4#>Jz(EiRi7DWtBkhESvd0K>*K&n+ zw5CJa{H9&sg8cVW1-=x6sED z*Hrzy?Q$wF2~Svu8DDT>Uzl&IF_M#vB-a%;8x*dWM`oAjeJPA5PklN{6Di6+qe>Sk z7zIhtfC%4+v0vUZkEzWFLmx~=7~Ep|kOXLV@CI|ld)Lku*}yJrlRI7D zs#`oIBUR*hj7kD#^H?8c7+Q)EeEG4KmuWu810pOP9;{YM=P+8;sh=KqR)adxMpQpp zalsOmg;aGEhjEz%P;LU06j%8@*Iurqo!@0$5bh4d+y0@8zFND++nl}(94qRWKHKZf zK!Ph=iYz))2ivTGat>!M{8=~R=yqk;-Gz8O>03;ac>=nK_i=q3mI?U}=^CE)`blqG zT>TVFR|vPN5MY1qoPLQWbZ2Y`V+OR}c?~$Dsl&rZet~=IoYc%3~$3#FVw9&fZDz4mOmGawkiSdJ$GI`;GSCI@H}=NSMm4; zCYrW-L(OO2$mE(*Vq97mf9nXk_A9*CIK3;#J-7;OmN&ll27mT9xe{XU? z5vZRAk`4c#O%AA7JOBfwYOqY@pnMjGooGMoP?=nw!2cACohlbe#1cuIv#QEx@O&dU zXhVJfQ!qA^rE#HIXV4SyT`*>^m2EL0%8;#orTbkl*2{pgaJh-5S%W;0NyC0Al+IM9G+K6Pn;n&Zn9)BPdqv5~Ljqa_PP$6_{gdx=MldX&PQAJhw&f~0T z#{R#dvX!jq#oepU7XZwaoGWitim|{#}B56LfQjFstd-su}17?2Q^*iQYcb7hSAP)6$`oXl#F}EV+<*9Gz6WE9R{Xfl@KQC{iqd7K#+0 z@r|w)=ZL~(T~n4QIS2RK6yqelg1n0?ts~f@JR=T-b0`}!_i;}K1%cb52)j0a=bxfR zrzL1^tX3oKB*OAVRhu~OQL5sR2Ylz7r zsA&2SkOn6Ei7?DJvrWsfe0-^kq{cm;2lNS&r@LW)h2*lr9=ETv70tDri^&B&KF>n9 zRJ7P=K$xm!ivJ2aK@3yb8 zjQ7?4>;CYNV*7#hkp>81#5pfm@~qOlCp9@A^n3~bm0J0=s zN)?Ab3M>??A^&k;OF@CaYwQW)I29-Oc>YXMRe=ja9HWyvN-VfHnEr+W7Bj2%rChgx zAi4L55PhIR2*bsJmA~gGB7Am0yVe=hcL_sCrgd34z=jFGrE(=EN`&GGN5LU%f2Exv zF@{RXj^a88(Z1~>gA*s4r{3k-3lS-+c*sRYmXIk0mSMMALfU^2Wy4tRD&*&ntSS9= zL+>ia98w$&s|-zTfwPqHHW@y-Vu7`Q${ZXen>VCiOotxd7y4DH7z6|kZxK%=%2P3j zrnX$6LnVq({AVJ%5*Wd4Tm=7%5bB)KB%HngN=m6;tPi->EqxeICP^zfZS}FrT6YTg z^*uD@Z81seE|5`dZz%%U)s0M$QYsu9v)ymh0pHuos0jrWJA@$wz&S7|T@$HV15=3P z4?Kx6nY<#W_XNSbmLiEt;ju!a4_KA%M{unV7OIgcd6F7= zaigX+s0L3U#G24kt|w9A2Rmgz8vh`2aEewy!41cz@ry2(d(Mo8iVY^YI%OZ@hK!?so6H-!{+)cf2h+8MS zGlx5blJ+sol!vZ^8l6gb@C)&MR<&<13BYhj8b~**yf}c~C zVXR_ipCeH++w%i>v;2h%KVziumG(_TAAt#{+-1jN!Y#i~^jM`GwR3d$u zEKrI@WYyot0AFq6X>*eDf8QflM2VxKbd00Y!NSDj@*l{jPJk;zrNp6_0(9kPg%%o6 zpH)Cc$wNmqXD9r#rdVMf-=?Gx9u4-rG@Noa#?6GBA`${nSdY@G9Pk%&{Dn`sw;pHf zrFF@8{=4Na=uEUU#hgX@2cd+!6sn-V_Ake2G%t0mGu~CO|Q6 zA0bM-rbp1362;2RYP7e%luHP2n~$NS5-{J#L(On72@9pV^(VY~x{*^~-!lnDl(2Qb1uPJ?=cg zuE6)jmb|vQtnaR%e%+$GHWOm{QF|-#g5UrE@!rCIJ6Gs#$M5VpueN%`c;p!4D_BAc z6pv4H98eZ7E9v-2q#;t8TvNsj-h+pv>BRX!OOAbSX4m+{S;?HyG`qhNiAT|00d8cp)Mc5g&O9}IQR*RO#Jnn;7rWT1ThO`-@=!K!4!$SaW;5ZUaF;7G8iz+b_^ zyz301iseu);co?k#!dY!52WwP#grfY)Yt=L(fkGF;Ve=>s474(1_Vb21F|SJAUJ~8 zNdwgdLR}u6gyBJq;{!6z;rLHKwNo~L5UiIdyKFWK1>vds1XPH;d5HWff`WGdEPap~ zj-b+uoK3OHa7*~{Ot|J<81^2YKoSH$0V*>ni&ZE5UGUe%FQlu-o`@t~j_H`42TU## z(mvr*n9iZ!q}8eO`6%T;fc$iRRN%djAxcc5P88AnfB{V2;dm)g=LcxXXi+IysGTz) zoQC1DCFIsg(Iy#Kc~p3XFHx~Zq5>KO6KMwJX7ON25NxF~$|Dh&c?6AQY)#T4p=xfH zDKY1bk*N&cwDGcf&{59M=qSul>8mt`EmVo-5fc>wGq@OGRzw8a(%ww*0^&Yv*6~1t z(){|I2@U8L6pRRiN@vkDm*j4M>ld^>ZJ&E|cqY0G`qqwojFKwMjP*h<*ACaoh z;lP6`n9nLJ-tlx=>H>ptEnFCl1GeH?7+TCp!%Ti- zuE}x9pw^Dqo1*qIS*a9KjNHwtfNVP3ikhJ5$pO-V)b!f?y{5WpsRmxuMjsjlCOFn* z$;{z290!>gMLv5UvCE<2tPTXwthBCSnf5yg#0bU>=4Km`>6L7$g12z!NMLa|nbB^P zF;SlD$muhwsTdb%*8U*CB=0XCC!m>So{9_E64K$)?coJksnW&9^@k}tmlhu#Q&dd!dyc`aCl`(_zeFqqzn@KT|g@NJ)5WG;Xu0e zv&G=A-;mgK0LB2SFL4%EMOHFowri;jtVwK5GEQAZE_jm8-}Ozr@jE79Ee6>K?|chi z%Cgauv|=DHl*>HRfg*U~rAo{DU*Z)oypr(9QqRo{22*d-@{oJtcqMp;(I8sY%m^!3 z2Baw@TxbWHX}-LwDxpK+qzP(h1L}B-o?vQf52M3iG9bgM$UoDU>~KB2RNG|XwqMXj za#h>)ONvZ=xf!WN0VMTQE7UQou~}-))oRv!d^XRLwlRYU7iwJp)I{LcbW~>vTQHoD z5nb>CQaKR-?8+6jS1RP!^I_Vn9q$=kfkjCb{kZ{cd_(EVIRx3^LA3wUMeoCrY9>r*JrgVb7R^M_TK6hH0*4k)ZpH`uBdq= z4{WktkW4kw=xQ$UzUKAnADMk8&3#%+!-wfwF!XRCtwOy>>eOLF5!h+a338uz!*$D2 z06e}htME>LOx*zZdb~CqMeRng=^@oO3~1{(&7b{#Nf7CLLxpuP=9h!3bLReTX{J&r z7jBqOHX}B@!_=l#j#S1BF`+n0jjR+S9`Yz^y}p8+DMrj3f9VavJ=%{YrZTK?#?=f$ z4OqD9cC;2PKRQk zbAivxxgDETGkJNXzziCNaB0VrMicxIyx5k7Cxg?cgspZRFC|92a~KFXo`s%c45`%xHZ3&ByEV}bd zZsp5Xhx|(a3eEBlx+m@&92O!s3cwE{FmJ?oP8L@ z05DDkpxPBw1gqpx^Fj!iV4;iR(!dgg@zUJ$GIl=d$65`&X{ztFs@aR0QdN7`vwVCj zv*j(khp0w&>t=e&zKhkesD)Pf`nFuF%2~6tl7)a6j1Z%S+X57stBKe>N zj}yR0_aCbAQOc_W){(22~papv0KUj^H{>(#AQPoeMH5gt~NqH_?=0Zh7zqyosxiVtM= z4<^n)pO?$a52Z`!340GK|6=v=l%WGhjCo-y{EmbOkVW!VfX5ESFxUyyq9p6?r4)*B z$W3I_lVlMM7wVToW0l#rkWFZtD#)J=>}AE~6qJeO;5g!N(w-9@nPmm8{)NKI5E;Jn z?JE#S(cv~KVZ7KXC>vo||0{N0R(#3*Fj9AULDKsHx-zcdTCCERibM2B-W|*KUcA&b za&#Z<*VI$Uj)i8M9-Kxtz1&>Z1b~xXpyEe$!`yx0U$t9a0b%|zDr@e*U^+rFx0-+~ zep1OGbF%`CSB}srdmnf90!Lw+xAV}qWPqN1-W!JK%P##fq#HJavT1A_J~49YRChtV z|472$1mctKGnm-Zvk2VqQ{tRt5L({o=RyFMz)KIwK=^MAb;6j+OqDklI2faN&v75#s5B0h1B=d%Ph+{Kog z5?nTPc$qbH+ZYZz6kfZxzMcZ_^>cyq2m*DCeq*z%obrnGbiVzr-!)^=gKYJ^Vis9HygEZ63)PEwrkY=1dOfn;!|zMoTh6 z5to@+o6TvBnJC$-j6Yz2=&&;?8?Wthts9FVKpzihxOOT*YbbQ z`i;I6${y`0srW(A)a`pgmkp=6LYf&Vf?#Ojf&_oC%%Jf6APd(B!im05)opeI-M2j8 zD%**p=q5*0!Lg9sHA6B&#R5Thlq?KwIo|S#;)UEs4a36dFo_daW5#m=C?X{?qm-n% z$Wjn0fQzC>dN|Mk8npTIz_Hwe$wIblL_bl4!j&DRTCZs5YEe>?o@O@eM0 z6_$RH+_qxGDKG{R_{Hg;rhN438F?wPP)(HLV9~Q+BoJc|t z#2Q|~xk@HX7EQoYue8nFJ<>JhtDWLT?wishbX7jFJWL~KEGl-WQm9TS;1>wXcIx^j z)kyWk`BgvwnU{kq2KX=XeS1uG7~Uo)FpTP~b|{jHdMPwU%Y&gEX&a^mv93ra)SizY zo4f`TnA14P*i_I2YX0_O&wC+K@D$^eEX#VHLHS4ycjFdI{ zCABW{GLdn@{4#Ms!~>A7&J?};MeR%PTGF&K|!lI&EgS3 zC8HSfG|lCIO@;0m4l2S<$TuLSb~vr#hR_9*lDsduPdYB~vrjI`7nC#%Id^E_Ggm6P zA9Shw9&aG}_0q0jNCkQ3ZU4qPKWAr|m^q@rWChu%m;i5rppqOw`8X`6h4Z(e(MB!i>B;`Y(24gK4$Z97E)xV4$=Lz|{ zh%6%~s*J+=+mjS6nIg6>h=rCZ$EIB8+?|;Z_vgd&xE@HQY>$kP4#vlX&~4QUru572 zC>i;r!{YhR6*eguc}S&W!DWVXNm!_AQN@`OB6WU|C>KxU8ibi+c@R8rQ-a70E(8_< ze8{Rfp}Q2gX#zl8$Y=>Fu$2oF6VZ)K2^}-04Ar15bC$8_&VNZGBLAXn&{mO>=bE7V zen_0@K1t4h6N)5F;+ircXU~D=vq%-prv#NX{L_>JbD@jaHZfxd;=tO5TFes) zl87760-D&3O|}Bv;Dhp%V;nMgd*q4iReGFNLrtl~IXL(GorR1R`i!~*d?6-xEM7yf zSQuk+zJYUD5|=Gf?}KW>*=RYD!q?K_H|FoX7!}V}R6^OL-!*>1H-*~8vhu;3IGVG` zr3OVgAk@pisPzFXWO$j13Cs%?FRUp_Jys^+S}Jj@m&wq$g1?OimvO3L=oCVK0o1aH zXPO(?s`S^lnc60i*+%lSV}l4n7dxaIU#e)$#jLeKX*AFVSZbZvE_{LhH45?iflvadYaFZE(n09euZ-us z5$4->|K0p<&eYi~74uM3q?OWhX1i5flQ16~wC{sRkz5b!N(W=`d&EJ#k5!K}Wnw^i zdnfA)80lF{u_sc~=K9CnKEShJ=Km>z4g}i{YBqrS)B5O~aJ3KNvjc^Y0N@Ju;N$W} zryPPfruPw>H2NUfs>2(8_3p1kqlDJq`f67j-$u%|GQAurU#w=c?0bxfkKRgfd>Rw7 zjCH>7F(>!IE|Mw0vaXOl@D)`b-~R4!%$hhWY3x2`@@|_lrr7y*K>$g8-M%#a{8+=pN?5VEmKhYJ-S9SHZ)Lc?0z^fJfcqvCH{Y@* z(I7Hyo!GTDb?u~8vPZP7q91o0>Rz~rBpIWt8f0poA6ZXz{XJuUR8d%z85jne{`}L{ z_lw^?0P>>>Ebb}uvFI+s+IvE|+eJLvlt&;iq0kP7@xq0brg4@;onSlQ4XrbqMOH2 zx}AleubaxqeuPke@}Xi0p;Pmra|vNe^I>WUVO#TIdkNu2 z^WkO*;aBtFcL@WCBkVf!09Ez9WB6}CBj=R zz}qFlKPkY!AtHDwAowOCgeW9LASOaDB*G^qCNCtWCnjMpB;h9}6)z-}Cni%XB-0}% zH!CE!Bc^aGr0^rA{8LC7OH7qoNR>-WU0O(8OH9*RNYhJ9J6cFPOH8*~NViK&e^N+) zL(K3}$nZ_f2vNj{K*EGx#Dq`6OkTuHPr|}p#KKR)Dqh4YPr{~F#HL5WZdSx@N5bJ& z^dqj}{8PjkOTv{}#Fb0JU0TFlOTyFo1ACM3j`kMu&XVx07V+(p@Sha%-;fBr6bXEj z2tpJKB9IE97YpH&3X>NL)02v@7mM(dii#JD%9Dzz75~HuiklUS+mTAR6-)S$O8zO9 zj3t#yEtbk9l`buot|gUeEtcsel^rdXoh6l9EtcCQl|Lz#zadq4DOUIoFb#*#8A-q@kgqqoZSFWMpAsVP|LO;^N}v{rk7Fva*Vbikh05y1KfirlyvbmbSLG zj*gD5uCAV*o`HdZp`oFXk&&^nv5AR^nVFfnxw(afg{7sXm6esXwY8m{oxQ!igM)*k zqob3PlZ%UstE;PCcnkB_gfufM;4KtMoXU|?`?a7ai(lv$ON_^NWj% z%gf8FtE=nl>zkXK+uPf_ySw}Q`-g{z$H&M2SE0lI-FyEajgU~dlJ)rm!BD@bb;j!p zhQg3Yq_ZU(3P++aS**6l8;Zu_2t^`sr5cMTk|>ocbtW21rqURVC$puRN@ub-oiDa0 zn#$(#1cPDlq?^kZiX@Y$btjuEmdX^1q;sTODp#sBnyhvvTdLOT42B}{WLm2?nk<$o zb*EZuw%QyHCv#-lYInLk9xryL+UoxH1%Sfh%eL3=4~74t(VK2>I2?;7k;#?qXgr=u zXR+R$?r1ul%NL2lm+NdkUn*Cw(wpgQxm>F^p30T$YQ5fScfQ=6>1wk2*qd(i-@pw94B$FrK)A@Y4-emoEwx{d$c5f&O@c)s<|5c>%^0p5MlJ>42jN*87 zzz&rbcMy)GdKBAk7&&aPoh|wfUEhaD92-gIs$m#)Z1fJES36u z>Ld_~Jb!)=jtp^M6iwS;`e91YAD6`v$A+PUco446q48!;7hw$$n znNxD7ds%X(gRY}#_xx9p<;2F?>=cesC+ zJTSf+cSG<0y-d?g?};EQx-hlxCxgbk=|?_Z2SU?n7yto52<{Ec{Itd&YiWN|Iu1C} z_qfgqllX_OO7iTyFPv&-+YoEK@deNDS>-?Pnz#J8Z*0!LTM@gn;sb$!;RrkLhSdeS z?n_DRQy+|2=6(n%34xyHBg8o0^26}Ys2Rbga5~tzRHJs^9z$bD6z)CVdY&Yo9Ijcq$uGo>NqNdU4I~dc_y?KBUnfc zeDKTC9t4*LDq@hL4Z868Gm_wMmF@IK@_ICgd>A&z=nLbD>5k8%-jKst?e{JnFHmko|R{Gcn{qM%xnZWB66J zux8SJGy?Y|wx}eyuNJ~wv-e)EaG7{F&Ft2Z#WTF2T_O1kXKC0u=G_2+T%{ zi0NV!jQ26tP2fZys9{35fqH57qePtfV(Oal39e0~pJ8tEgJ3S;>wv&pF+sV z`7QLU*M^>3`fPC?Gd7*dS$1i{6WeI4OKI<{__#+jJ3m8}J) ztkGdt<+8{fGvo(>h%Y)JL?8o@Mep#|ia=0@Z1*{M*+F> z4Xx5auNJf<2l#60V{A34T~%k|{>=%G(H8FB%eo5GY7=KJkuq#GcSmiZ3B}gXfeN;m za}W|)V4jV|->udj^)#o!=bN^Ms(lBjRI8F4{+N_MSJfBd?TGzE@$6hKFp1>3Gw>U)UaTpDVhbR)ipB;_`5G zGUWjgG}RykZ-eTxcNe&r107t3*62PNAr!m@dYYI+l(7YWSj^>+!H|Xt;OhfiT@O&V zFb%s*Zv~^wf^f#~ssu?LYpi^XaZc0wu6XN4jwa=Zx+2HL#P1W(vX4G*P{t`q9V6tx zk16#%CUI(=bQ+?C=+Y{u^w{qr(adKqW4QpiJ=u)q^Vw!!wVv*(t;}{4I%X8ck+ZJi zw>fEP=CRD0y?&{v`Jgd7Lhg0*QhYA)zh=tCSg<={{hGyhrd6fPHT&~)l1mtDw`4!< z$Gp(1%RX_ndG?4B135JcnBxP#@sgH`(OsMqqA#v$GglPAO!;siD4{e0R=NMU)IP$R zp+|A`^|9~KHMPOxUc(t7rZz^OFkZSaLYjDQ&Emhd z;o#W`7jdsp(!0OgoXWW-Ad|>Zg9q@w- zmEA`rY|oI0y*8;lOl{9L7L4#hlcQqI2dave*x}S$3{*;|8?%CQ*04_@x0#bvw;ze` zwAXP1TIbw&Avjj6LD)ypg*ZiC7!9oAIU@Np?dV-5q5MyJmpesFxkZwYLW?;M`^Bm$ zAJ}i)qSQ=RCOkuL7=wxsg~CL00)S8L_gMECeXLp5?g7N)e3!=E=VGttvip3OdYm(7 zs6*L|IckD~xciyMl5elJp;&L`3+*TAfWbvo>(xGR)%!d;>cs8(pw>&}Laj%vF)PI8 z=~w;=3W<)ny16mcwSLHfI$?lHnU7i$k$$*XA(p6=n-8UA-o4@>zfRL%!NMuPBUFtZ zyf`BGlES-{=A&OA7%9Igi(m;$LYi8rvp+MLi-)-{T)00|t3Rc&M(3$=WGJ&-lFwNg ziCVDNG^o3iIVWE*}AV)Fl3Q=V0tJ>CYzV)Jh)N6qmvqm0}046MbMo(7gf1* zwuF;Fx?E7Q7P?2E>W~%!Arh1UFc7)UBREMo8OIofFYZ~e$eXy(nY-qjJW;4J{Wu>> zJ+KTXklb5{i>M`eB3C)2J72hBMP!_X)h;MM>>e1kb2v13=%FbQ z{*m6ib5x23->*^M?(m@AcIkL1x5_tPkYOfpRwJu+Li!`!{ln<`b*G^cPYTMAl{5J@ zC^sZhp{+N~vG54ELXm^@$fGyQ&TxlwjmXPzx$<-yB2*5RJ5WVN!F-IUMovO;7tp(* zFf$9_V~+@sR-0%K9YDE$f4lJji<^nL9mgAi@=-iiJrJcxuoa>4A({n7hC3E?2+nz& z<5L1vbNm~yI0v8}WK&WIX*C9>BaUh{k^Vg~VmY=eEWtN9UhXC4jz|lPO9+%S&apKS zlROz-BKg8J8G=JA)5K+7GES~S)se(YejXewSxkUScbYxsB0Qy|IK@Le%)2x>+$`y2 zU#NK8A>ue8uq|07L&t_H$u1-1X)Sf)C`ErFc{ebv%`F99BuU~mEeS0>hBJM2Jx=o7 z%!SJ`G6FApBgz3RBZ4YJS1d!vJR<`&zI!x9I+WuPDs|&NWBE+=og>AnLPaei(;h3S z8cQQQ<4?{6Zlh&-=0=*UROXdMrbtDW30Rt=XJ#dNW&)R<8=>_)Q+AN2Ru;5P8+80+ zNA|R(*erm{DPtpZkt@d)ObY4{cU?0B{5gxXRM*DYjR~uRYGztbLG_qYT%xxEn@gVP**mcX6CnaWjjDg*j9(5|qdtPTFK4!fSy!IoyFGg}@N5y_t>@tk#%z~ zab?`KQzcZL>~4bU675aASvYDm4co5{aU?#*t{M^|p}ZcUR>38v zm*q~_Y~)=m$}%nO_pMm(*3LMx!yKv})~Zt8-1`-o>zIv#AIudaF4mWP0*dW~GWD83Ir9UqdMWSxIj_(!yG{9xK*$7P+n%vhWQqzMCDpAvm9JNCI` zf-m_Fq;Z;}N+_NV|_0p{XSV?K9Bt1K7afzigzMng}Hk=D*H~iu>W25$;u2&6@gYk zC16&^K~KgVc-N3-_aVRuXMJLm;0_&6rBc!MVaYb)*d*Z54isi~@L_Zj;|_58)CFb? zQfLPAO%Fojn!;ue^N9`I=yfQOBcqzr`$cU8XK)9+FJT;cn3VI$0~s*-)JV=y~Ikk z2eZt_@V^EKuLLXhC+oh(BRXrEct`ufC;Ya?JGS||rpHIGred_}3aG||Z6@I{hcl~( ztEMN*2BwazQ!03qS|Z8>Y=TU6W|*fZa=OP#_REf@XCPo^J|TK1O#(r(BQvTeBC5wX zx{H~oW;rfqPds8DxbntZGu@-d*1r1ls^?5(GG@PWA!ufNQ2SxI=MgG93w-9^vS(p- z`rBDG2XJQ(G9clU3*kE*(08UVYo@T_H7|K1i*)9H!tI)E%E18Yi!m@u3EtBoGORc; zQ`29IZQFByqbmc!N`7;f@Lm*g<}6Y5EEVoUTx>7m$=T^${MfLIT05P|dzL#r=dkdw z?fUbdczb0o7aOuGzN2%YNNpOQ#8oDp8GXjNuP1W%A+}bFC@z})zH(l-3RQbno3(6B zo>t$nm-%gHb9k|@#T`7ZiyV7Ke0F9gj;l`5i&{2ILCk^CWM;Fr8&0EV^8y*|s8?fa z)-YzKk0TwD`Km5poF)IQOI@vue=P%ZY_j*b>cn)y`7WMPFFm4`{@tvAQU(GB0s=Jv zg4zQDPt$z1nRABU%rRtwC3Mh&pMZ~9RPL$k&C#y8-b4q~|FpH+qcPjznVO9x8Q>ZlKk0pTTOVId|<#g zd=6S^n{@w{9`M>qrWLEGtJwlTzOMfQ@$Z7_Irxe29h0oh!LLf20N=3hAmoD~>CHUB zZ)seX^h^I9iX5ce1IFs#2bSL@)Z1eP+mMr6%M=o)q<4^K+;5=Uf5tnsjQL$O)-p5+ z$xaW#g|Lf9zZZ^uVBS1KR=WoY>Wx0eaza{T5o{}gaEOt!bNS}|b*kug%+Hd)uloIW z!FhXQ^^mytIBcf%vSzQALg{8x0SD55EoSGa^GFlWZq+Z*1_XQRRC@?w2;`0+#P1i) zQeUo%zr*oMX+DgZ`cNT!eXVR}aeu-D^{p27l8+ndR0ZMO&CVv={CsFA8|r2`ONnLX z)J^l34`z~@*X4m(%$c>Fco~0p)%O{!A`lS%xjX)4qaI%;-jT2!7R!(uWeF?#Ykgc* zGw0VqX-yXLn17WIXmu_yVcC@{{dv8->YSedmgeP>9+uuEhl)lh15K;3^;y{WHBzKj zq07t>{po4%mD&2$)$R=@YR@9VPC65Nc$$|wcn5BdQnzkLVq_R0>YWPz-Kg%}Wh^Vy zUr|S>TR3|x4_CE$^UhP}(Sg{L3miysk9ll>{mleF5MJIk(w_1R#)E%y5b0m6NabeJ zq6h4dyj{Js@2Gn$0Z{V#dp7^ajnYSj=|=&2e}O)%Dv?fX%zNRGOuE~LvYAr^7f?Eb zpVjflNrY#vIZkDTXX3j4j9jd4w1b@W;km6Y(TQ-$xJ9EMWw8GX?p%n{+>0H-gOU4l z=6)~vJg59h7{1_mY56Of{;HhZi<$k+zU?Cj{~Pl1OX!>=efOP)LKOKPFA_BGGU&Ue z$5WER`^AoPD&pII&*4PRb`IdZUBN1xfZfA0jy>+92zv2#?4x66C49%3?d}zh{}aD< zTO2evH|}#z&%BG_HacUU3|ik4A)EyO|0<2}VhGsSd48pw{mSawo@e-Xp}-@i_Afaw zP2@D*{*kFeoJx}D68C-4VX^WiAdkj`GPqDX9kSh3!Rs;Tr&xT-`h z?@y%0^F_2i13(r!`59od*<#&h`lUv%+vV|$fCN>rH-J_YLm*+d&aO3L=Ui2ctNY<{ zk)R(eSK&DtLnL46BXvlAVX=HXQ>K@TUwnDV`!`XQK>zz|l`OC52PLuF?V*8<6r|(= zhQy8O9Y*b%3%fu!sUNu545lMP6x9gqBJPE)qkfn@oM#1H!hsfkHF`W3`K7=MHvo2+ zSyc;eN6aXWl_k6obAsZ+D1qnREG617`d|%#NB<=pv&4SIC{<}C%Or{{brm5+RmSVk zfOaS>6f$mh)F^X&(sj>|KSr7)K_CH^SQgC5j3`C+H#&H-cHJ6LI`?S!m%?`KlTa9T z=_9iu{UPjQ2lEfo=+eo;)buDHKgoh1FZGBzAq9m~!n%b0dZZi%0S=zhzoo*;s- zb3XmLH&r<^NE)iF9DUY}psZ;Rp0q^c3D=^2q=rLPgySIEqG4>P<+6e@6SOR+!8M(< zx@I%dqJ?yQ_^7DgMyJR|G{VciZJcE55R1@m1Li4UNuVQzLCQJ9L zmrhm3{}&m@45hjVhpsCRZ-eesvMZ}z81j)dWMN4cMzqi67K72eLlnvT7)S)!K_c#nEIenk%ByAV{<0zNyY7ceAM| zdua)+yqw$&NC9d01cr5k$YSb3EUUgsGO0?iNL=IR9^u`_+8WUV|c zbpwET>wq9I^}ox_dtf>d13*GBfa#0`D+n18yAGviG0%AN%4vg8vh(+)HIiUq$b+Yv zU?KUSgukw3Ani8_p#QRWwR_&W(KZjkz9WST*@*pNVI?SiD&HbVB+5u6=2=W2)lZO65|PfCz9j-_&K6?3&m z0!<;M8d;MV$cuw?r5BJN5GOESN(fvzE$ru*w^)J6dwkvoysY3w!aE_x zwW`1+-%PTrQ(y^$JsnJpO7f{hiHxI_9hyI1j37b=Ehdd;H-TtvA*(C>3?t8C4AE zK9^9OoT_w4EP-4p!a3N;0&#I68^|~pamrA!u1N|KJEki4fdS4BQY=RcLePkDRf%wF zQ7w-^Rq=UWcEm1>{P6>*1_lG|+W-l&#)NC{AFtF^ws7lx>_eQFi5EOf)dNP1F4e%J zQc4h(5&CQ@bnO{IyB``V1GcR70aghUlhkFBK3C}`$?Jsl=pm^rh5X7<<>SKj&C@}b z1}=A?o%BXXfp-IDJY4~EdMR~7(2BiwJS9tuPOaT2^Tab}K&+LH=6}8DZ4cL1j}O?} z&^mr5S&C~yoD%KI&((Sj7il3bRb3FoHq=d3bcd4ep!G*uv$Zr^?>FVGx2iMrLscQv zw1Y^24)P9MGHGzduN*!?cHVKI2EuG>ng3eW4DuuNHT~d+j6WDcq0PF0)d!H)QRsv5 zy3+zhF&RNn9Ji<^rxEiisc>@5_pTy>1XeIDwo+`O*Mysa)7qS==mB^H|6cacn_fo> zQJkjCrsWARtcks&$R+r!=Fn9(got9DY^PcFgo!%_U^SSdK83R><|wD-n;f)yt{B2B zSf|RH^o35g2^sr5xk?9ymZqzZVk7OBOZ3tl_TM4e%ma3h+sX|7oa6IVQ|PFUh?y{+EIT_>|_7c!Q3t-jjC?GcV?4WT~D&`<+frrquRFpvGSfr z6ILxp-z@2m{s<2Fvjik)8wgXFAB(nkIGuKGpVb9-OrI|~n*Htmp+aEhus)oVA#;d= ztKSw{V%x=lnF}G+JG;5b(r7afE{OBIhHLQCpGG)SzU5U0)cJKnIKHNl^E_thdn=XFD)b2u zJr9Scu2Us?Dj4(Lj~V}Qovt7rnkMQj0xs0b6nt;^$N`swO?qs#{=TP|g-M%;;lGpA zTW(SShh#7_uSR7U(z84n2Se$)?fQN%1jC=F&eHF%0*0uD`k$u?xUXIQZ)bhS z5D3_P*C{>kgN1*;<23($XoC7+`%{0HtaaZOHGY!xXO9c~`{V;I#t?lM0Lq3>><@pT z>4$cS1{LimFA$KJs)vZ?-CQRSDeOmzhKB7HY}xAr-WEhqsU0$iL~N!+4jD)z96&Ka z0AChNR~qOQiHddPxL)+fs_6Su2op}2DEk)<*g!d#a8!I= zOg;4|N)H+BAUSP6MTl@Mq42v`4s|k=)KX&>Qx)LLFp|VehyhiIW4v&xp_q|Xh{|W^ zl4dRYp{+3q)PS zIDz3N}adTgcxmt*Oj7Ue$D}YU^#Z8w-Vk}1W zY{V?HaTKlwa~iovpk+>e^OX`r=9*OHj zkEtv}DFp%jeh~9nj%0Fa!wx1`Ev#j=kpKkxj0bfKP_9E^H3EfWOZ?G6^bL{lOU8=$ z8dHLk^uZoC9FhbH0U_fY&khVCdXtQQf=TEemzXL?o6lc0lKAH|mSQ7?>@z|97MONG zLP;6q-8?~EFsi)VntLEcm^q#&JK;_`UXUz7!8o~Bm|d+YZE@98szZ={B_4H&mQ+lj z2{T!}Ed6u(+7L=S11MN1855GJMz~Sw?sh??DFk7u_1{vH-c!)kL20-_1o<*GnQh(6 zP+`*(MTd!fKKQN8<3}{p(JDd1I@95pGGooiO(D_)BuJBR)2${G)6IQ_Ux7H~z)`?* zJwDQH(|kvaa#O<;(<(D7$ua_(1Ay+3>G9?NV(%WDBkS9R-^WfSc4lHtY}>YNV`AI3 zGqG(?Y}*r~!H?v!?RSww!KPaa!DX6PIh_f`IIawtTi zikWyen{yUhMuA|pN=%(qzA*&_LtZ4rIdn3SWtBQx*iI-H1&kEM zsq=AER#wlTIh-X$Y!mtL2E|BNHuSAIBHG@z%^5z;R(3QcVpFAC?#U^YS$Nb2GTV9T zsUCR5j)wxJuZQ!SowHwLIU~_zf1S@W`E)|qDgt}0DnB_dO4+vac7=x- zDoY=#Gz~6>U{^^(&VIP8z!w#TrDR#!CDpq{`4~(^0#&sXRd?=>sYN=Cm^sa*CAUgd zZPo&3-zoJ;)k%yd&XO6@4Om}{cE49MWc5= z#t-E3RJ9^}N|++a^NeT;Rbh&X7mJ&<(mDxGJ=dF~wNPM0DyEhyF|^}o$Cx_k3u4xl zxr{q7g2JwnVqBJw?AwmlNDJyNwjGP6B$*FB2RJ<8NQs**kGmc6gTdo;^? zv`2e%_j~kE`wW=-jO6=FZ2LfFv3(Y`eO9x5HrIXj(0z{7ea@17u9ki7;eDRvecq#e zzWaTCr~?7a13~fwA+`fyu>%pc15vXBG1mj}&;yCo1IdyDsg?uj;RBiF1KFbkx%&fo zs6z$JLq+mKCALFlu|pNLLshdwHP=J+&_j*XL(P&yt(HUW;X|F}L*1i8z57Fbs3QZ+ zBSZ2dBeo-Bu_F_;BU7^@GuI>Y&?Ae~Bg>K_tCl0{;Uk;nBio}RyZa-1sAC7rV@LAi zZ*0d-V#m&E$1Y~auCB*!p~vp2#~vleo-M~-!^hss$392LzW2v|P$&MFCjsOqfovy1 zVkg0BCn07hp{^%kp(nxNsV5O7Cy^~DQNt(E%O^2MC$aY@aZso6n5PNkr-^K*Nn)qT zYNsh?r>U-|X`!d-sizqwrdDVOW);(sVEz|o{x8h@|JFJF zU-#<&3p4*0X8zv*GldY?Um1eYRBZwnC+MNy94Cux>-r|y_HBMo^IB(%4GM{0FwW)T z*s{#Cr%m2s3P@kv&8p~|H7`kg?Pi@&@cV$7hT?4ZtDi}I2G;QZ8D`$%5C1*P9Q+H+ ztgqiqhW@uOlTpQvYxVD8=I8$j%ryQtFtht#VCMOM4KvOE0cJ}4Bh0M(w=mP;zX>zD z{(zak{u?ke`M-jh=zqdYt$!b8&i^CKgdqAaV5TVoc(3$T#$3vA&>r0=^$c6V@qp@DHPzK1o2Alp%Qw$}++!XNg&qvNX8C+E^|d{FVnJ zwX=rVvC|ZGXzRDdv&Y_t0~9_=xcS~~^Id4RT(o(OD0#qyqTebn$ZfdMQZ8r}wK+|m z`ZDP|;>~9Ppru?Wa#KWLv%i0M-y?|9Y$9H@HP2g_FWB z+^38Zk%>7`gb>SSrK}z`O?K8K>(T@65*b=^0j#tXH-umz*;>(=T7w^0wF5>NBJh*= zjrOvP*4}!Rk=r$C!ne4Mq># z@=(N5gARBV)LFBp3~+e1vF(lKmyq^EbnndS=Mv1Yv_(Xc(H z#;$r~V_WHo!r~x~dI9!a*iH|nIs`Sn&(p9(pAeE~rZc~t)nn#wCE~qaSH`nuu=})-pRWtRS z`%BEeaFtPek2A(<%rvj=4f<=7)*<*WNZPn9xEEYBTc3h7lAsl7!aFPGKc4y{@Y6n;F=_ck^|HR)M8WPC_}ForK{>lYwp0;IbfAR^0;wHNCq<#2&ONNaj* zSN=|kn^2}5Kmcm$)_hLq<&J0E$jC5X{=wUX)81Zsj z?qOrT@Ud65miqbfv8uHA?dlMcrwM|cu!kb#I+)*N7lER+>r3oTxcTf#Tm?rzUF^zY!@Q1p{D>)0))@po%KE~stRuUX$i?(;gTt=R{rQ(7h`vfih1ta}zYd_F1$F=; z^bgBuI>@y%nWvQUoDG7u%2$Z~=Sve`XiPI?jh9aikQ}%-#d)u~Z|Wyqq3_1t!fvuj z9_!|AUpO0c?5qoNiY~f{vyof;2Y+mVvDbPZsQ;`RV|TbD#H2U^cTf%n+3t7Krcj{$ zHvqMm-)H;I&STkY>+VZ1Z{Sws(>ndZeOp}SC5C5RVt10cEE+g){amf&GqL_JM`%OO ztSj$K;UB-wkE_MZ?R`QI&|fUP*92i_lJ94VK)RFQox3AII!$fTTo?b1L2t!fuo z9OPKl$h{$c{s)Z2ke<4tFm?*evSm1J+cm+(hlol)1H}My?*pWv0+a+KBt^vaJ;bVGwz$8)i8P%P#}$$}j;2>b4aW zHeoKh+8kmu4Wsd^I3FMQu||nS?d;LM2F9oRmm~)l@+sV>N;mnIp);+_p%3_EIA1#j^4n-S==uqynj8ckl ze`7TnfJ5GyCTlpuP)G$0cTp`g_N@T>V8u{9c; zM;7L)90B92$mgR5h-UgL;W27S`hOBu8#ar{BjRB)_KK76Ey{Rs9Mc8~56_1LrZD8+ zqDH*UsyCy&jCG(WoFHhL32UXMUlTb^ECNA+5dx%C%8;Ci+?p;>j!{b?(48moTMLQs zgbC@A7Pp~-)W)^#?=&;7hVRl!Y) znN-S6wa3JXo;;_q({wU|x|ZU3kNyR>mxcw=ubIrq{J*gKbqn|T- zkjm{tw=(`kw~j-}OagKK!dsJ)87x7&JW>~6qckNoRxHhGJgobiRB=}`M8tA2OmovB zn4a2fqG5xsJe+??#@|@xjA7;m!G3%Gu&s4qHdF%sY65#}xvuPa5L$WqnmO0))^J)1 z`#4`thH~mNvgyF{u(;YOajljjUB=d<`^KyC097T_*0TrFWmc{pAkNED z_^X~ZSIyO%<7Fl))zD5Z8l^dFQZ*j1*}pxF?TbAYnreob-3cFS`cP_9A`>G!@~}!O zyo%gk)}8kOwLB4(&Esl~SPFdc$ejQW7*VNWh+4x6rva&|ToxDmWbdf360E5DR;wCY zEnN+uMZlLc#arA;K(OloL^8ZrLqn)v?qZFKxLCxBw6hmC(965wq|hcW{%<@ZtYsCF+c4M zyRHDeH!C;8DBhJKSBWfdk+3rBGZlIGX8o_t4tT2HDh&{wnoX!>1eR1Q*PEr6TBjdc zlSyQB?!;&;+QOm~{j9=dyo^~y{fa`;2s{e1$AUgvzy$wAz;|4e zkuP{D%(C>SLEV!wW_opvR@U#TDPu7jtuA*jEhtD`hxxZfeTdlg&bD!lR@pTJ0*!X) z!f?JF1@K2^fgn-5i5{=yF5>oX*CP~)vGQB%ABP*NRb-OWm3VJimD;eq%L#YAo`r!yPC_wSZNA>6!n9z#zREm@zYea9)puC`2{$z>{<*}YozE64B8(I##8kv zMhC%;6+;zAB90C4(%@;I*K$8_JmRSgg|K`Z2rsnYvB(y&I&Y~9k3V0Htp!p`B3T;}+4*Y2 zc?yC#nb6_5cF?PvdB(A1X3N?i<@EyI3&GwofYOD^z6IXy86&n)!3#d0h+I+HoFS=1 zXxVbYsl~F>MZ(2#vMp1+R1-=>Ew%1aZ^=bz*n$SGcvi%IqwZNwTPE|I$*>X=mzCw% z%ofdy??!o0Vi)Diydf^#i*B}zLkL1U(K8lPmf@)u{%=Yj=r)lp|FdwJu56gCbyrNx zib=I^!o{owEpl>>wyxWnDu5T8z_JvRWu9wA>S3uEceyZU1(6o_lMixjXl^y)q8*|# zX~){_L}Lp<&?WbJ#O*48Vr?uN<$HF@X)~Atb$7R`X?Uai4d+J;%977g z)_D8(ivlUc?QN}f`Iz;ws#a9T?SPz?vq}kKnuQ44Jdnzb7{sk#F&|fIhg(^0GZ}d4 zPCr9T+$Na0j9D1GTf9?ev6yN`%AY-FjgSQ%5HB0@`TjSl%Qry9wM#k0K ze3Bhn@7|i=Z6u!FMdF!z@Z3`%z#R%D0OiyO%MyuLFxh>-*DreAOX)lQ!&dW(wNF zfnmq019q!P-;Q5(C;ggtr`YhwJa<=F?oiiv+|I65446CY6wC13afqUGm;m5?VD^{Y zI-Yww7LxuZ@cE#}#vFjSr!G<-+cO+O*LcBv>h)O|%=Z-YQl}uzIjg41t>@ckIg>>= zak{7$2Kdtix>HZN)7ZCzqFpHeX_tYRonX6_{*r)L2uWfLn7k<8&gnBNPe55Nz?k;P znD5-BrYfh$6#``*@BKpF?NA9zl4PS{UJg)f2k3b}>y2gL;yZUxuYZ-g42AXxnm(nk zah{A7SfrNXmlmVbZWHrdAQ0sPZ@XUY0T8m_hP!#*+tmww-ZjoSx7oG_+Ho7>^}uR) zVlwQ(Z7J4>aU*;>N0R^jA$=t`E+)dRFt4DNfxKt$c9)&p4V|Tz7=B&Ue#jK^r&OQD zazS-zuTBspE-WtrL^@}@Q3^|Vo-oXYAPgW-{vb&HoWm1d8xZB@RU0jpdG#8|SK)_dBwl{pqJKxQxNxW-qR% ztw)UC_aCb7C1$$A^jx1G?%&)Pi0eQx2_L|bL6r6H+<>}=U3Ugo5AeV{6FMA82+&}A zPlWKt2>M;v?MWGW#=3)mFB;&K3QuYFAQ?ZNT;n`H9I$N9fzA(P_3VXMwC4;%QOtOE z<64NSpU+as_XQiJ-09Hn*4x)AI7ucMRm>ZWh?F}^V55eejEtOUv^Evb_o9Ku8BWkCZdl{7l*(fFq8W? zC=TlWC^iXiu1JQ`;lIL6a`6!1NR9v{Q|UB%qwylmpxJ<=1iWb6>U5P;r4rd3K3SOG zCn^=n;?H?-f9#r&-uM34HBlwl0A~NH0A@O;B^)5|Jc|Mz5{`h0iH(gcPzVZ*Ok;x_ zU?i&957qfu4B-wS6GQY=%8EaK;N&mR40n8tec>x4gbG7HvWTD9#$eF^3G6iK@b4wwJlpZNhZ z@hWEcDryRB#RyQm7+V8Cnvh7qqO|isAd-~h1<~m&nQvulOmgMw}H#`p%Aq-j-+ z7(}3D@xeqfyo_eLKMw^mO`TXZ{i4LbQD&Aan?{&GYRYr4DZ&e%=nWu_Q?cuV${|JP z;smNDp_afila7YbehE>TK;%*QHnvSC#K^)p?i@7zjs&Utm2G2lXR1(0w7H!57Yr%K zF2j1G0Dp`KQUED5Ez1gwvJbVQ=#7bUovl$&k;7~wlWu~td5$U8 zx}|NEYmon^)RV7j<%?*W{38T;o06g$pt>&fV(vt4>OwHv?iU}sCQ=Q!-3F&a4VEYU zK&LsT0xrI`nPw0GFoj3&SpsSth*H!0BI%*l>w?(DEQ#V|Q8_J(IUBAvrNad5SyF)N zdLBpE#l%Zf>D5Q;hz9m{eZh#&-szh?Senkw;cwx z$`!!Sdh1iYP{bd~kl&xI>xRfTBywl&*Y=tz^x1a`2)J-9JJ{*jtUt+M%Y+e)>LNQV zI0oGdzXI@A9uetbWH2q?560hk**2JQMLH2&aLQ)2ypZV(VS?bCH$`6-AlCtL z{6mjjPRZ~p`{cEVi!o6UMFA@J)7H|?JXNbF;5rv81C9{qH@!d9ttKcbWwXC!T@Vs; zK3s@2Vhgxp__kRtM)8rT;=ou4M`hyYH_8fc%h|+=i1he5&@heX*`+S@lG9>xS#}8%e219Pb-x@ho${l|pRfB6l?cjRbnn;p8{#^KKivZH}e&6%YFmVWvSiZz}a$dzw?;-{@z-c+%=oG)O!dd%=do*zcIq zoshOkO-<4DVPrWRWb5gLUIPshh9A4}?`ix5Ij4|Itp`720~x@s!9cnR1%~h#1mU}$ z8L@s~|F}$14&JgbuHz}D_Z?$!VMjQ?@pv2vr)fxv%|0M2bO%NDZ%D?{G5uQW(#}84 zr2m4e&Al2xh4jc2_YyW&pXkAFwoE6paGnj~=N5;g(9i~^0CG6!G44?8G;bhd(H$5$ zEPl{P@H>7#5`lfzFt;!c5mAF^CZjKkT)Hs9rdNVFW1hje3aKpHve?$MgsCSr_3%tZ zF{ntj80xlMdCKyrMvJeVfT@%WMxu+iUrd(TVkefA%= zo7YwMChOw5d+pw(lj&(6#p}Blq`bMxyhz<57IcZAo4oSUjejgZ^YY=Fd&@wzA6;8< zbIPmn^a;-pjDUBRCWLwTeb#%*Y~4UKIwr|O_6I&3p%<;?UUBX$^gO4|#@`|{@am)f z0INm)B3%viG5q;1ScmR)*-R0PCz0)S5FGa~sX}(G3hjB!-Q?Zi+tgy8^Ei_F!-vN2 z)z1;t9WrI3kTbO4>H{pGB>JHTa zAAp9%?dv%Jk7X%$X<>xobqaDW}k%0q}$_P>GP*I?CBz&#)7p7q%>;!(D{K4(Oya+9Iye$(q7FWZd!;hp_^ge}A;rJzquw2S=ecnkopxgC_?=WJKQQ18_A!hZ&K4 zRPrJYM%w4;zo~Rb2aoA(NK{b5#0`qj@(hESkS0#zfa8!wh-4|t6mNVRON$;WtV$bW zf(xpXX*}+1ROSG? z>m0khE3*4s@&|r#FH2fW5t~fl#Ne&WCrz0+i%A!6ywO*JEJkT+YNSc8?8zo{EAX*F zP0_;F$@Q***-3;2o~iSW@NSxT;HI^#poi>gvUtX+%!bJHM)p|w4$@Y(>`xup4bWt5 z9J#$A| z^bJJst%|%23)QdamInxhARdk$lJd=Ld7ui#m&xvA?7p|)_;(T6?Zs)3Vuj@E>EPbz z>u3d7UXmAdUTE6nGojhu%30LAaQGpGiP@>G0|f<}vT=|(WYcC8T5+^PIdoaYaSg@i z=p1a05o{M!uR=w&ra8EwIef@Zh_-WCr^tke^E3N%#3}Pu{X@YEie$R;xTXjcwux(z z^Hj9+B&smOt8+xQjI_J+KxoyNc!6*-$OVRKrJckGrmb0;;xrc3g~2u!aBpQa4CT;p zSgt80T3aO^m)IJH0$$N7KH52c$i+0|MZsd(Atn`2XSfBW#djkW5SK-9+X#u2MOcgs zDPEOGe?xJ1vug*jT>50Z5VK6z9aW4QB_sB80BJx2nJ}~2Mspp0${V)r^Q8x8aFqoH8Yj3oWVO#^ij2fd&dEcjhzYt&i{_%!!SQN+11iuHN9#=#e{@D>fll8W{@jvRVy<(Fy6G; z+#Bj>I_g1?U!f6Kfem=8_HQlByc)r(Fz^biJX>8vZ)r z1YcJ?ggN4?KWo@3#s#q^vDOYU<3#If&X~ZY-D&uwtdV%H+Dx?~EB6KjtM5fJ|2A03 zt)8N`Sc}qT10z_Er`1Z)rJs{pmq61fiD4=Y(I^w04Dn}&>E#IRUN1#n8$j=>QWB6j zTlTkJk0Q`)xR9b`&=zR)?|xZr){Sg&*;w)_YrE5mgxttk(&}Orr&It7DdT|l|FF{9 zy}AQc-P(I3T^J5ckUCn>Dw~t0n}yDs#E+o)*JzZKVEN6P6UCZHDZ_L7o0>@*Gu0bI z1iGeGU=$3xz%LyPzqE8KZMS-dKK@+@(lKqaedV0R*yx+us@dGyj)4!T^WVAX+O3A^ z!%#JK&O1nHI_%ax_R*`U0vjO+{F1KsGm8IQb!bI)sRp8MO_u+Vwc~ng``4k=jp)z* zJb`=Lp9&a1qgC*(Oqs3`H|z&~9xUn;tfEQZ>4(p5U#MV#iRm06?m&?1l5zY*np}X6 zjof3^E1JZBM z(-LWj=YxbQ$A~s zFxmUToD__rn8-PTiAt(z`lc?~iBameAa_G!yv#k#`@=#SeZ+13cDO>_qZEzzLlZk4 zL%Y2pAz0&7v=5|dX*VQ{RBwK?|7K;PSA1lrCibR#Xw3&}fy4yDW@;~XymWKGtH)w< zZ$!j;>?C*Wq1H)&WWMTrtTVCbrpXKfgGc^DLG z0YtYkqr-eqjTJCM+hEHJZ5?7>zyt6JZo&bI?p z@agH|FzMLE$W&`q-UABk64@3311E@`F-x^#)^$gSg-hY}zLEB}+l_K(?LC0z64};| zMF}hgZI@OZ_h%jCQOL`!{W;<2`;2XDXAf^@Lr^wf6OQ{rDXwTcNT%zccCDGr&L`;r zBcbPRfOW7&)^W4gSyh`UHd_=ZZWCJG+3l8q=JP>4z(VRpph@{Y2^Y8P1sM?va5d** z8*^t-3^bt27Ei6D?hsIacX41gm>($0DWW48-5~8~a#&)gZE|^G-FG#$HXnJpKfDEi zvQIHC7ia0d+rQMzyu4Ps%7E&$#_Ra4#&;>FVyAcYY-iK2-FHrBa6_&!4Ws@7b^U$# zO7K!`VEOEq{{=kKHKd=mO5%9~vqNCF4W#)soI1B);`wjXixn|D_y>nn-@F;}+GR5> zB;e&IaYsw$@BWCk9juOXvcItHubb;_m+5w253F%k9NF=Ajy_-FK_l#k{vx3G4gUlC zi?}}u|C%JqH#qv=6zso+1iwAUtlXs9QI34$CPn{U@*A?@8`{`!hLzvYmi@qo68*!+ zZ;a|UjP%juCVgC?4)heOtfe=HvCXeFx;m<(Wsg60>DInIshZ!Z zx!tLU-D#xVX_nq;wccru-07^`=^o$dJ>2O--y2}v8&cdGvELhu-1(vKR94LI8r=(V}EcGe{fcRa4~;yb$f6NdvH&C z@F;!oY<=(=dGKC&@Hu|)eR%MLe)PwB44`-nWPc12e+*WC3^9KUb$bMcg*}F+Jw}v1 zMz%gijXXxLJjNV9#y&j8K|jS~Jta^)C9*#yi9aQ)Kc$#IrMf+(g*~OGJ!O=B{DywY z8hOfIdCEC{%6)kH4*i^m^_)-fT)_TZDE?fe{#$Q*KwV(ZUK>T%3{dLIvb=d87BurwWZJzyYLHun|{cXwoZQ1Q@CG2fA?QN~}ZN2qvW8_U|bLDO8_-*^)?I-m6 z4%YiF#rq!n`@Z=5f%^NQ`TLRE`*GO&N!t5q={unH{cPm@eC7S(`2F(X{R$d*jRpKg z0sPGlyb%Z9ssr!Lf%k5}hcMt{8t}>f&L8C82iG(-G=Ii$85tRwn3(=d;lk!`!kO#EG#S{BJ$sfgVEJ2c0;hu%63EXT~Bty z2tz6N!bwvt_97@t%Jw2@T2A(&7=|hLqgj?M_G37X%JySPK(pcDo#tX zT>+=1d7;#RvZ7QgKzUh71)!p;1puh58wOIJ{T~9?A)|faf0l50B#1s9-i80Agp21i znIKO1uO(at6cG+VNG$WRzm;%H0^yk#^MXE!@CZU;n|J*cT<19S|0}r0m-r`ejrSjd zYid&2!M_LBoqv>Y)o;B={tjGoJnjr)7!CdnTvzuaaQWAPfWVvN^-uBr6-ql%xON8nXK>BC3#YTQ zhPU@0gKI(Jzkust|KR@&Tpy7Cr{LP?Z{WK4`acBM#G!uy*U2BBi58rKO+V^?4z7s< z;7B1u{xfimfiQUcPvBYvPT`-x^*PRe4_vqZm*5%^`U70!{S{o(68|H(mi!C2&IbD{ zxX$|Y?}6(au>U!@rhpOr&%rhF-@rB6U%+*aGL}F9yv|NHlt5i_%5gWf{u8i`XNhSt ze(4Ypu+|8!c_;wVD-BL*0BXX<3?pH{@^St&HmTEixlRFrwaNO;!vco{kILL=X>FQ- zO@e$1Apr6m2SI12AEQhlgo5D{EGb&xCo_e{ELcI9@adug_2XWcX+#8_#+?ar+T-%4 ziV3K?&t7POqiFGj;AXJ{c#969WftR95@HbRyF2Tw?yM;BJHZ+Qj>{Q0CGcSB z*5phLD-TT=b?{8aJoLeF%nkwdH}Q<$Szi!lpj?`y-yoDpK$mLo1CXHff^gdeAmwH= zT1Wnr-pqu7e@Jh=6{{`GHDg2#f^eQ$FC;!=S5*>X2ZEiv9Xenxi5bvZ|IAvXK>EvJ9f)&XS$yjy4gAJ56|u>uvEP^*n{IZ zG<}k}ub#rVdk%ZQH24t_!6sztDUcF6$KBC6olytJ8A!YXW91Q?j>CM8^s`usLtvzW z*$@<|AS+<2Ev4*O|<$^aRh~v%dt{|u!kTMXz+#(1i>va zs4KWx`7?f;x&jFhnI$N?%pY^@ph@ zhxo&mlSS$kk{Ppv z8zs!w$xQqMu^sn}-Zy@j`>0pVp*CfahHe@w#c{?E-tUx98SeVYckCt@vHRE>l7TQB zdEk^E$Q&Xvb304n4{Z)U#?w!!9Ri+a6Nb`Zp1`CL9NR9w zl%Cen#Flssp>v(KtqQ&~lwnTD8ARy83dT-F!A^#gvbvwnHR9oH8Oo)Z0ZSf{9-$a$ zqVI>3_2dEy1`0|DVt!U?%3!2Z(ViY6$=T%L!`&VpZQ(mnE=7Ew6mrK1jgeX(VM4K! z1qG7b9}&ftMw|g;j_-F*gh9_iJoS&ykIsj<1wnzazgGh(K@% zl%|m-Jpqg)#%uW^4S3YS3EZGb624IjfDt0gYqi%QWTiMm)fc#A?7dpzH%vH*I-b)C45BO&xw8i~398Q8 z%_v%2(hDP3+r>6ab}4+bxywA^eFo1&zCppRtl;;(bYhrQkL>w~L7!=R+qguX zkXt7O!-!h_K-AXdM#*@I>c)XlpWOd(d@q$`-~*7xKi}wGy6d^_Y*$b2g+}wEe2jd6 z@1b{3+CS?fyjNrAknN5VAY6^Y!^bDENh{52w=YMr?{}eUqs|Veq%Js!vXIAC zSae4|vgTg7^~IOzoqg#Df$vQa=~ovCMdTRV!ixKfuhrL4)QlG;jS$krp+MNxtwbU- zKsv-BGju%Cnw#8rDK197I^>`|%xZ~-NL@vxqwC+MY#5UEOW z=J6*clm4hgmv96-R1Q3zjnKTdbe@GjNQ_$QM47S-C^{(+xrfBH|zZ zkC;eUq-~5$t&T}dj>wWn6?7#aI*o>W{e#XgO^iz)j>E!DB<~ML$xOhzPlTsWPy+J4 ze*_W{28x!N$2>}tN@6-;;BxC=Rj%=>&-*2;dR5CtD{L5z>Ovf6Lwv47&<(6my?vQ} zjr2!OUo{WP;_Gknv;|j+at^2_3~A+U;2l?u>2(ad4NPA|!;mM1gpY*iJ;smoOws1g zm`u*ncPV0leovnmI9O270ZGijPK_&^9h;n4qMlWB>LbFC>I9a_(u~<6-9?C-3TlWX z;pU(|cTRjp9LAqZsga&9AIb<{`9seGv+>~HM(MX2z~35{JtEFYr^9EHH(g_W!Zj7q zas;;WmT9`0PPJRx(_&2L!^3h?8OB>tmh^d+tYQ{%id3O4R5c1y#~>r4saVZrQTNWq z9-?zMvX}MNq{xGqe4o-n@KvN!Y_Kh80%-Q zu5UNC#dl8}bn6+K883E=$GB{WwEIO!LiWh!-Q{!^UCa-^xT^rWTB&s#%?mPrfe&sHc?$3y{*(XFVlszB9C6l9&uxu zQm|MHf6QRQ-hFbqgKEJ8aI=G4RbIth=?`j;)WOMN@cof0Tao>Uq-wuw^BWjwkvUh9 zXy!LoW$>h_Z30LCs90W6)6taJpd z(noj}OROr@9E!lL1ICYiE^+;kPQ<27VvytvJi)GlPPWUx+u%#Yyq}nBA7U?6guzu# zL)p%koW^l+uZYzpNij*()yLX~*DC@_e9etgKaQL_zXU^kg{zL#tN4Ytt32)3f+Y7_ z4D5Ef`ib1CaM`}}-hQ7NqNAe{^2HwZ0V1{I@M3?vX!{SuZ@{-TookW9ePNAshU|6W zg>;-yBL(?#(V>R|E?x&^UPt8u$?0`Y*tDZ7ca>gZ0tqSyB5*7ed1w=P>^xP!;9Kj# z0Q0^*;E#K~k9T|(0?rKLOvvc0o8|)ptgN~A-MhKexqCOwU<=4xv`n@G@g@f;5VN}X zu0$S8mIMcISv7x50JLFRZhH^e;sL<;uQLw7JqR1f939BCohd8pSnY4B1P{Q7Z0212 zB7$wOc5Wi5q4J@i8Ubab#A>ulPEVf{$9&>;y>`C_WXe$@y*cNNJ3q3RpMH zq^^g-{~G1Hzx74Fz|6P!Azl?}<8)n74_DJTZhvWfnJwplcU*b-em%p{C~vb{yZ?V8dJ3{LXKbH;}wuLVud zv0JTKm4Bt{ZjlZYtSPRukl>&VX#dvn<*DnFI0cqHK^mjr3JRnb*eTroEZr0X!9qBG z=M?ALqP_+yKN{hz4UhuRR*NgrGY(=Xup}tKC$X}BxHB4!AJ~(PNY7PHV!d;J)+lqAQMeLSRy~nhru68qjG&v8=@K-!`1$=2@I>%YWZ~uRi`aS_PbaP zZnNn?7z&BjR}5HSf@ly}IUT$hg2i??OrzK-7n%KNOw3huHjjsWtxSON=V^Q@?9CE> zw>uOqmecyBZa?TBxb9MI-_R;j01%S-*P25*X?#mhPA792;(WRKPrgIHu+&OEQNO&R zm3KGqWJOZch~UL^rXd6~2*D!a#_{Yb7*W!empK>-RU(r*)cw@xybeZ2>8I!4e>7HP zI_=3c>3WvosTcS(0XG>j9B(u$m}UpTG`dKQP$LpQomoLm^cAdLEcA%PQ4BXnq@Du< z&zf-}(^DG`6;&c!sh6t!)k3n;HEXw@2~wj?p;3Qg~1?tJZ~$DhdouQ!|m4 zi0L#NSgfVFoEkvAS|rN@3RxaJMArH(GcNj*+bri8$Db%azk`oqYN$XHa0@LZuxDT_L$CTmsKR(%rRzJTV>J7 zHFI*F|0kZ?l-iF5(G|lu-TOk+OAUq7Vn4V_-NK#77OD1_TTXqz_g_0USU5s~_Cl)@7Yi&rQC(4^|h9Fy$;C zuufOZgVOl(nuPg}mypYVUu!=dKRfX%n9zH{fqv{dClmm~bufe<3_x-Q>qi5V^tR8; zyYhGCM8HgtN606DW=3xLwIM}SmC%5E^FN@UZ-E3OFA~h-^&N@zn z6x@YiSdmF^rZfgv$Y&v~b(HZCAx7%5hcqy51t~5pMiTt}&G5QFurgPLIRq8snKHGB za-2tp(W9gEZU@QZ|DX2m@+qqL(c?G`yM(YvxAf8_A)V4CB_SzF3rI#X z2up*2bh&gRE!}aM`~2QVzqvDaX8(fo@SORc@9X`^388e5Pq3}eW#;o{R$qJ1|2b)$ zVq2t5oAj8iNR6BvhaG+-^T=oSBgrQFLo@LU@gUr&J4z z1#@IrjHKBI-k;#i2!Q{2r zk?N`P5|V6xc`$1OT>x&G`%}sc@l)Tu1`~B%0L+AYX_BFYr~u85V##G*>;NoFLNxfm z4&F@%mBay*rTd*+AxsLQQvWNE%91lhU<|fhc7^bvl_pzn-QU z7LqiC18LmyCaNr*upaTIf(Rkf7_3@B6_%+V)iEO>4?{xY?LM?;Ks!St(y|iic@ABx zlE7lpn*5;3PIJI_(V3I&j>2jx&$A39N-;c1y-kX^osH zHUCgHa^pH%I0iPbB_Ps2SASnTXuJqqc69c7oLP=vm;pCWJ8DcsH7AvzGV{4TF=<9#&`sccnk#_t22y5%@D-X(@9pkBF!Yenp??KvvN>m zBc!&RJZ9)72dFCw;hpK5vAxL)@TD>JM?!x4PWavne_j z{r&K{gwyh|jbnr1F@;ZNy}^qV@@Z%lpZTEZUu-z7nj4L)jOTRJG#4yZ+H-sWC z5RGa$5cnv0L+s$GKW{4I3S-6$;sr8AMlqD`z^+ORrn*~EQf?~9Oj5$(T|lwpB_$Jc#msxxIg!}w zq~X$GI{-rcN#z+q=ZK#B$osGg`IM`k_!>_poKXJC@o znQ?*ab~3 ztnBeHh0{NptVE2N;aj)2?$Q-LTzpG_r(oD^>C{HJ155jAfeO+{54`xxF=Cnl8Md|4-b)t$Ma+jjju?xs%a5>zXSgQ19C`dB9^ zL@b>-nA|dk`)n2xE5dM!8-=4LWe&pm_OpZ9nvrlFuCv}jutA=J5O~p1EI=spwmbqP z*!jJL@1+0@$sI`xZ(@6YHf=^{>8)_ZSSMEnc&oOH&II(#ArBwK_g1}yAnz$#QT=mx*IX&eMA0q8~-Ddgy$3)>vJwxVv?7)lJlJ+T~eIil+0r(eUR#0 z*$UuwP;@yc?biVBYm)I^)1IEG-)%DSaL2PQ3#L4g+}F6ikXPD)q0Rl{=>0Kw1RDGD z;8~Uq(H^~^U$;SBZpzAEhDd!elvKP22EIV%(SyY8M9|U)a7zXZ?3FWm@H3hEWdO<# zGOw){Qe(vjz9yyQTMv}uB^Qdnr1>z&7pxL=RG#LZq*|*o(J`1IIFNY#TFz3*gHk!6 z08fz*=0&Yq>)szKuG(Tv)sVs07|I00kZj_l2NH@J$o*~+#INj84Bu64r&d-NfQ~Q> z<>KXT9kYu@^{-l}b-AjMxTt2M!^rZ7h*ME%ym)ZC)Q$;Ny@#^13Ys6=pW|J|=XKpd zyTykgLrSYg>P{br|8V9bm|%E0>ho`g7M?~8PWokcRY=6-gI9s;6e%w!e^2p^ILVI` z^yF*~J!@=*FNdh362dgghv(Ha_N;M-L;JvU8uc6!oyvXPL>hlB`zM~~I)(N-?{l4> z0WRFtb$v#!)aU~Q#ii>;D>^hkPmSDLM?VOra-CqH;A>qmsQ2*=OUtTbUhCM_(G=1i&2XC1XvU zHxcyI!Stcm5%t=&gx#5f{LA~v9ciJRs9~h(6mNFv!x+azWQHEm6~;G>2aDbW6}O_` zKqlA=Re^AwsD2&BgKC=3cwEi2`!bQ@YxDw{l)psPg@k@x&npRsO_n6-q*qK*!Y4&L z$0ye(xb+C=?&(Sir*OxbWgQFU^d@2!yvWv+`Q*` zjGy>oRf;KdG9#$8QY6%J1eKoE62>VR7PzaObL6vzz znZ;Z#e4`Ww`tzw_(k-LaZ8*?_t(QSy%%8`!R0Fx8^hW@zyw^~lJ(quG zSr-Bz>1^$&C zGdeBJL%CgRY!I7Ci=uXHnh#6f6@z*Syktzh(tNEL}>g}szV-h!aQl)R(K(kiK< zx=Cs16eVHsWMSN|>74$;MQ-ZFfcU=Om|@S2e>{#H%#PZ$ujQA`W2z(wnId{29NLTh zYI=heDjPI7O{O?=g=PboMr%+5p&C^fIcfT#+Yu5)rZlJPn5Y}lRdq!` z$t&M=xkmXl8e?v!4edT0@rwwFmkoqO!mi~sO3lqrwOpAcYl}L|BOTRdd>fsaO)5WY zsChK$NY0W=6Cz3HlU(5lDlr)XM)_LU@bHzIRT&=rhCtpXdAG=UYn#c^rsLPyMQUl9 z$@QBC;Fx*S*F8ZLdJb+#)2f(Q%TbVx6A#0fh@pnn2Nu+i1a0hJxQz9+t#PHF`niD~ z3$4}>k%a5`V3N-M{CYq190Af6^pMBAmSEPLZN&`EOcyn}qgN?DVm?)W)wT>Z<#=iP zw%%WCE0At$n>D{MjhMv2Q*Zf;n~L5X0v8|*X^%@TKYB%n(@N=5x**p&!5m{d!sbY_ zL%#mk-)ZduZ9BC~} zm|zHHBpbPsj}0gyEY3(guGFRhk3h#gSn-xr2a^x&IhUkwZ zy9LV`57b6_r*ZhNdc{LU{liV#(%O%`O3xRTv7G2cV)o2x;uqHrmNpMB4m;E%bp=%{ zGMq@t3CGMpg@ZB`ZUtDKV>o$itk))t)~8m%s|lK&}2La1m0RvkbD z&oDHPt_*>phR#^F*4P0qR~nH%Zw5R$kGk4i@K{+Mb2Kf_k47*4eIxo*(7yvv8X{&j z#?k&nvJ*3If1Kd=i3jVrPkFmEC$`o^nfjlD-@>Q4HDL7J@prrv5UuMAY>FzjLC`rn zvq3V;=(jYYq5$_}c7xSN@|1`d*^!*#sX?2r(Z?s4emH-o(wa;V{v@aC%x;LvlUIPP z;eK+9-s47Zx9C{6ze#Gzeig4$PQ;bWp0h;8GCUm(KR`oUWih6n)$LY=n zd>=YOrJ4Cw2(z5oL@iFE+f}W4gDy0UdyH7;}vrvE3@1EoCDK# z8@|B`^ZxelCLi+_C=mk55-ARutn<9AzsxPOy;Ux3%?;3YO}UPHy!i;5XUa(VeKEaiSRduolY z2CteAg>3%m<~9h6{cpBfzOCL4tN-VbFZ)HHfQwaN@$Hgu(hwPnO`-BOS-=K-r%&_e z8bSPL<$wd>BSw9qf7lSr=iG53d~)H0=s+@lhwUSV9ten4r{cr$i@s<|Vb}fbW5)hC z+|j`1lO6zw4s1~Cuv5#Nm&$KDQSnirh?tef`DB0Rlyxje_RCvv`YGE)fl7R&!|oaT zn{PaNyB({ty#PWodQM&x=|I#V4E$Y)-38}d{nM-7(LSCjC6T>&qH@pb!)U(8@yWs7 zrSni;a`GdHd;fxWt%tkZZ1`ux-k%zDT$U<_YyPdFbmqua+06lymORe~1+g3Mm8mja zT<(3boh?MIkWNFSP`6dJdGE;K!L9Jo3YJ)aqU?sCYl;_?<=w$u^XN=Wtp;M+y-w1`>AR$dFhq*Hh_H*VUk)V)iV(YjyXqOD zAviBn!$YB7jIpA-P5H7e1Dh}6AZ#`$af7|DSAvB2dl?he#jcq=Z6RcD*Qx?b?hcFrrzr&tQO;elYP14E79A9eri^7y<>Rn zXD=5oiQ-C#p8Ki*xaNUz%=?~ZJfFKdNv8zKoTiB2N(iRya!qrO9$ZUffCP!}1*a@t z2wTgGcjF=Ogs$l2C!Z_b3nA2=`tkDmw|ZJL#-0Zs5RNS|R;EJltQ!cV0T^g=Z`}^g z=lyQ+*HmR}2bRsk z?@LUpLgo$Lf6;vXQE_r#wRvt7&-=fMD6Nh)HkgkfY1x*&Ti`hCrFthis#lst@(-wR z@nstupm}#ZZ7h{N{Zs`D!5wnm6gLFog~D*Lxnfq%cgjaiFXlbly`ADCp1pbmZ0@=E z*X`}KKRW2QRHNP1Gqz)njrw2hkw1b;ItIsLzMu>dSa&H&pA5;Rr=glI*6sU7(fLmOR^=67@0L+UplC?k=OlPAYTdNQ=>X4@#tm% zX@mPFa#ww@1ADkMJo1SxiSpSLq7lG|3f;WDbaL^2fK#N|-3tYR!q&xx!_U#*X~=l6 z`-EzV%=9SpFKgH+5Tbk#QwK)cQ$warc(r#M)w?r7OBtc9A8}#s@wctms7K5Map1Tt zOnmkMWzc|B1fDqtm67x*{1jX%Fs?Y+lH8hsqgOQ}-P z5q7@sOLr_H-RvWu66!Lx#975AOGiG})@2_0vWl;>k9tqkWnHwgN}iUE`kmBeKisiO zql3qSK=nCT5^S=>Wn*Fd^|=IoZ1RlY@d%yzJW@EDqCnYrjB9=VQ-k8Q9C#u=p}v4c zf?Y+oYyw(aU&!spu4V{-p|QS5g3C^~d~Uk7v7yS3%fX6ces-dAV&OKlJ1AUFTT7o`AJoz None: with BuildPart() as part: BasePlateEqual(size_x=2, size_y=3, baseplate_block=BasePlateBlockFrame()) bbox = part.part.bounding_box() - self.assertVectorAlmostEqual((84, 126, 4.65), bbox.size) - self.assertAlmostEqual(9935.172368218784, part.part.area) - self.assertAlmostEqual(7684.943883967003, part.part.volume) + self.assertVectorAlmostEqual((84, 126, 4.649), bbox.size) + self.assertAlmostEqual(9934.358783084768, part.part.area) + self.assertAlmostEqual(7684.874727987361, part.part.volume) def test_base_plate_weighted(self) -> None: with BuildPart() as part: @@ -39,9 +39,9 @@ def test_base_plate_weighted(self) -> None: ), ) bbox = part.part.bounding_box() - self.assertVectorAlmostEqual((126.0, 84.0, 11.05), bbox.size) - self.assertAlmostEqual(32629.38237429975, part.part.area) - self.assertAlmostEqual(57020.96113525161, part.part.volume) + self.assertVectorAlmostEqual((126.0, 84.0, 11.049), bbox.size) + self.assertAlmostEqual(32628.56878916578, part.part.area) + self.assertAlmostEqual(57020.89197927, part.part.volume) def test_base_plate_bottom_side_round_direction(self) -> None: base_plate = BasePlateEqual(size_x=2, size_y=2) diff --git a/tests/test_int_refined.py b/tests/test_int_refined.py index d57e7e8..1f53158 100644 --- a/tests/test_int_refined.py +++ b/tests/test_int_refined.py @@ -34,9 +34,9 @@ def test_refined_base(self) -> None: ) bbox = part.bounding_box() - self.assertVectorAlmostEqual((84, 126, 7.65), bbox.size, 5) - self.assertAlmostEqual(25953.3508979137, part.area) - self.assertAlmostEqual(30090.400157643642, part.volume) + self.assertVectorAlmostEqual((84, 126, 7.649), bbox.size, 5) + self.assertAlmostEqual(25952.537312779306, part.area) + self.assertAlmostEqual(30090.33100166387, part.volume) class RefinedBinTest(testutils.UtilTestCase): diff --git a/tests/test_unit_base_plate.py b/tests/test_unit_base_plate.py index 15347cd..e263b49 100644 --- a/tests/test_unit_base_plate.py +++ b/tests/test_unit_base_plate.py @@ -20,8 +20,8 @@ def test_base_plate_block_frame(self) -> None: with BuildPart() as part: BasePlateBlockFrame().create_obj() bbox = part.part.bounding_box() - self.assertVectorAlmostEqual((42, 42, 4.65), bbox.size) - self.assertAlmostEqual(1291.4682317566535, part.part.volume) + self.assertVectorAlmostEqual((42, 42, 4.649), bbox.size) + self.assertAlmostEqual(1291.4544166737892, part.part.volume) def test_base_plate_block_frame_feature(self) -> None: feature = MagicMock(spec=Feature) @@ -32,8 +32,8 @@ def test_base_plate_block_frame_feature(self) -> None: feature.apply.assert_called_once() bbox = part.part.bounding_box() - self.assertVectorAlmostEqual((42, 42, 4.65), bbox.size) - self.assertAlmostEqual(1291.4682317566535, part.part.volume) + self.assertVectorAlmostEqual((42, 42, 4.649), bbox.size) + self.assertAlmostEqual(1291.4544166737892, part.part.volume) class BasePlateBlockFullTest(testutils.UtilTestCase): @@ -41,15 +41,15 @@ def test_base_plate_block_frame(self) -> None: with BuildPart() as part: BasePlateBlockFull().create_obj() bbox = part.part.bounding_box() - self.assertVectorAlmostEqual((42, 42, 11.05), bbox.size) - self.assertAlmostEqual(12581.068231756662, part.part.volume) + self.assertVectorAlmostEqual((42, 42, 11.049), bbox.size) + self.assertAlmostEqual(12581.054416673793, part.part.volume) def test_base_plate_block_frame_height(self) -> None: with BuildPart() as part: BasePlateBlockFull(bottom_height=10).create_obj() bbox = part.part.bounding_box() - self.assertVectorAlmostEqual((42, 42, 14.65), bbox.size) - self.assertAlmostEqual(18931.46823175665, part.part.volume) + self.assertVectorAlmostEqual((42, 42, 14.649), bbox.size) + self.assertAlmostEqual(18931.45441667379, part.part.volume) def test_base_plate_block_frame_feature(self) -> None: feature = MagicMock(spec=Feature) @@ -60,8 +60,8 @@ def test_base_plate_block_frame_feature(self) -> None: feature.apply.assert_called_once() bbox = part.part.bounding_box() - self.assertVectorAlmostEqual((42, 42, 11.05), bbox.size) - self.assertAlmostEqual(12581.068231756662, part.part.volume) + self.assertVectorAlmostEqual((42, 42, 11.049), bbox.size) + self.assertAlmostEqual(12581.054416673793, part.part.volume) @patch("gridfinity_build123d.baseplate.Utils.place_by_grid", autospec=True) @@ -165,5 +165,5 @@ def test_baseplateblockskeleton(self) -> None: part = BasePlateBlockSkeleton().create_obj() bbox = part.bounding_box() - self.assertVectorAlmostEqual((42, 42, 11.05), bbox.size) - self.assertAlmostEqual(6310.636342511634, part.volume) + self.assertVectorAlmostEqual((42, 42, 11.049), bbox.size) + self.assertAlmostEqual(6310.622527428775, part.volume) From 5a3804fcc9325ed478aa15c3e789ea7318a82a9e Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Tue, 17 Mar 2026 19:27:56 +0200 Subject: [PATCH 14/16] Fix allowing too large radius for `BasePlateBottomSideRound` --- src/gridfinity_build123d/features.py | 8 ++++++++ tests/test_unit_features.py | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/src/gridfinity_build123d/features.py b/src/gridfinity_build123d/features.py index c44db9d..800db5d 100644 --- a/src/gridfinity_build123d/features.py +++ b/src/gridfinity_build123d/features.py @@ -740,6 +740,14 @@ def apply(self, context: BuildPart) -> None: bbox = context_part.bounding_box() + if self.radius > bbox.size.Z: + msg = ( + f"Baseplate bottom side round radius can't be larger than the baseplate thickness" + f" (bounding box Z size: {bbox.size.Z}). If you need" + f" a bigger radius, consider using BasePlateBlockFull with a thicker bottom." + ) + raise ValueError(msg) + try: for direction in self.directions: cutter = self._create_cutter_tool(length=max([bbox.size.X, bbox.size.Y])) diff --git a/tests/test_unit_features.py b/tests/test_unit_features.py index e9fe89e..552f2b4 100644 --- a/tests/test_unit_features.py +++ b/tests/test_unit_features.py @@ -336,6 +336,15 @@ def test_invalid_radius(self) -> None: with self.assertRaisesRegex(ValueError, "Baseplate bottom side round radius"): _ = BasePlateBottomSideRound(radius=0) + def test_apply_radius_larger_than_part_thickness_raises(self) -> None: + with BuildPart() as part: + Box(30, 30, 2) + with self.assertRaisesRegex( + ValueError, + "can't be larger than the baseplate thickness", + ): + BasePlateBottomSideRound(radius=2.1).apply(part) + def test_empty_direction_list_not_supported(self) -> None: with self.assertRaisesRegex( ValueError, From e9da32b1c1c039dbab1cc38452a7b74a7ae1711e Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Tue, 17 Mar 2026 19:47:46 +0200 Subject: [PATCH 15/16] Support adding extra_height to BasePlateBlockFrame This is useful e.g. when BasePlateBlockFull is not wanted, but extra height is needed for increased BasePlateBottomSideRound radius --- src/gridfinity_build123d/baseplate.py | 20 ++++++++++++++++++++ tests/test_unit_base_plate.py | 8 ++++++++ 2 files changed, 28 insertions(+) diff --git a/src/gridfinity_build123d/baseplate.py b/src/gridfinity_build123d/baseplate.py index 84edbca..2568d5a 100644 --- a/src/gridfinity_build123d/baseplate.py +++ b/src/gridfinity_build123d/baseplate.py @@ -60,6 +60,21 @@ def __init__( class BasePlateBlockFrame(BasePlateBlock): """Most simple kind of baseplate, only the bare minimum.""" + def __init__( + self, + bottom_height: float = 0.0, + features: Feature | list[Feature] | None = None, + ) -> None: + """Construct BasePlateBlockFrame. + + Args: + bottom_height (float): The height of the bottom part. Defaults to 0.0. + features (Feature | list[Feature] | None, optional): Baseplate + features. Defaults to None. + """ + super().__init__(features) + self.bottom_height: float = bottom_height + @override def create_obj( self, @@ -84,6 +99,11 @@ def create_obj( align=(Align.CENTER, Align.CENTER, Align.MIN), ) _ = add(base_block.part, mode=Mode.SUBTRACT) + + if self.bottom_height > 0: + bottom_face = part.faces().sort_by(Axis.Z)[0] + _ = extrude(to_extrude=bottom_face, amount=self.bottom_height, dir=(0, 0, -1)) + for feature in self.features: feature.apply(part) diff --git a/tests/test_unit_base_plate.py b/tests/test_unit_base_plate.py index e263b49..d380cdd 100644 --- a/tests/test_unit_base_plate.py +++ b/tests/test_unit_base_plate.py @@ -35,6 +35,14 @@ def test_base_plate_block_frame_feature(self) -> None: self.assertVectorAlmostEqual((42, 42, 4.649), bbox.size) self.assertAlmostEqual(1291.4544166737892, part.part.volume) + def test_base_plate_block_frame_height(self) -> None: + with BuildPart() as part: + BasePlateBlockFrame(bottom_height=10).create_obj() + + bbox = part.part.bounding_box() + self.assertVectorAlmostEqual((42, 42, 14.649), bbox.size) + self.assertAlmostEqual(5765.90685383006, part.part.volume) + class BasePlateBlockFullTest(testutils.UtilTestCase): def test_base_plate_block_frame(self) -> None: From 746df9ac4b29b3040de9195d06582ddb2dee0cf5 Mon Sep 17 00:00:00 2001 From: Eemeli Ranta Date: Wed, 1 Apr 2026 13:00:55 +0300 Subject: [PATCH 16/16] Fix basedpyright warnings --- src/gridfinity_build123d/features.py | 4 ++-- tools/dev_check.sh | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gridfinity_build123d/features.py b/src/gridfinity_build123d/features.py index 800db5d..1a1d420 100644 --- a/src/gridfinity_build123d/features.py +++ b/src/gridfinity_build123d/features.py @@ -5,8 +5,8 @@ from abc import ABC, abstractmethod from typing import TYPE_CHECKING, ClassVar, Literal, override -from bd_warehouse.thread import ( # type: ignore[import-untyped] - Thread, # pyright: ignore[reportMissingTypeStubs] +from bd_warehouse.thread import ( # type: ignore[import-untyped] # pyright: ignore[reportMissingTypeStubs] + Thread, ) from build123d import ( Align, diff --git a/tools/dev_check.sh b/tools/dev_check.sh index 3cb6803..d6916cb 100755 --- a/tools/dev_check.sh +++ b/tools/dev_check.sh @@ -13,3 +13,5 @@ python -m unittest discover ./tests -v -p "test_int*" python -m coverage run -m unittest discover ./tests/ -v -p "test_unit*" python -m coverage report -m --fail-under=100 + +python -m basedpyright --warnings