From 2d87df9423d5619c1e92c2aee644536acb312da8 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Sun, 18 Aug 2024 16:15:31 +0300 Subject: [PATCH 01/70] small change --- app/models/scoreCard.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/scoreCard.py b/app/models/scoreCard.py index f33594e..4885a4d 100644 --- a/app/models/scoreCard.py +++ b/app/models/scoreCard.py @@ -1,7 +1,7 @@ from app.database.base_class import Base from sqlalchemy import Column, Integer, String - +# change class Scorecard(Base): id = Column(Integer, primary_key=True, index=True) name = Column(String, nullable=False) From 4fd155fcbfdafde7dd48ca26bf1a2ad4a91345f2 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Mon, 19 Aug 2024 14:46:41 +0300 Subject: [PATCH 02/70] 1 - Added a new file for ScoreCardAPIs 2 - added the route of the apis for scorecard in the file api.py 3 - Make the Delete API for the scorecard --- app/api/api.py | 6 +++-- app/api/scorecard.py | 44 +++++++++++++++++++++++++++++++++ app/models/scoreCardMetrics.py | 8 +++++- app/schemas/scoreCardMetrics.py | 18 +++++++++++++- 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 app/api/scorecard.py diff --git a/app/api/api.py b/app/api/api.py index f0f1747..8e2e1db 100644 --- a/app/api/api.py +++ b/app/api/api.py @@ -1,8 +1,10 @@ -from . import teams, metrics +from . import teams, metrics, scorecard from fastapi import APIRouter apiRouter = APIRouter() apiRouter.include_router(teams.router, prefix="/teams", tags=["teams"]) -apiRouter.include_router(metrics.router, prefix="/metrics", tags=["metrics"]) \ No newline at end of file +apiRouter.include_router(metrics.router, prefix="/metrics", tags=["metrics"]) + +apiRouter.include_router(scorecard.router, prefix="/scorecard", tags=["scorecards"]) \ No newline at end of file diff --git a/app/api/scorecard.py b/app/api/scorecard.py new file mode 100644 index 0000000..c5c0188 --- /dev/null +++ b/app/api/scorecard.py @@ -0,0 +1,44 @@ +from app import dependencies +from fastapi.exceptions import RequestValidationError +from app.schemas import ServiceMetricCreate, MetricCreate, scoreCard, microserviceScoreCard +from fastapi import APIRouter, Depends, Request, exception_handlers, status, Response, HTTPException +from fastapi.responses import JSONResponse, PlainTextResponse +from fastapi.encoders import jsonable_encoder +from pydantic import BaseModel, Field +from app.crud import CRUDMetric, CRUDServiceMetric, CRUDMicroserviceScoreCard, CRUDMicroservice +from app import schemas, models, crud +from typing import Any, List +import json +from fastapi.routing import APIRoute + +router = APIRouter() + +@router.post("/", response_model=schemas.ScoreCard) +def createScoreCard(scoreCard: schemas.ScoreCardCreate, scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: + return scoreCardCrud.create(scoreCard) + + + +# I get all the scorecards id then go to microserviceSCORECARD to get all ids of microservices related to one scorecardID +""" +@router.get("/", response_model=List[schemas.ScoreCard]) +def getAllScoreCard(scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)): + scoreCards = scoreCardCrud.list() + return scoreCards +""" + +# Get Single Scorecard by its won ID (NOTE: This is working on the old DB of scorecard +# DATA of scorecard retreived is : 1- ID 2- Name 3- Descritpion) +@router.get("/{scorecardID}", response_model=schemas.ScoreCard) +def getScoreCard(scorecardID: int, scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: + scorecard = scoreCardCrud.get(scorecardID) + return JSONResponse(status_code=status.HTTP_200_OK, content= jsonable_encoder({"object":scorecard})) + +# Delete one ScoreCard with its own ID +@router.delete("/{scorecardID}") +def deleteScorecard(scorecardID:int , scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: + scorecard = scoreCardCrud.get(scorecardID) + if scorecard is None: + return JSONResponse(status_code=status.HTTP_404_NOT_FOUND, content= jsonable_encoder({"detail":"Not Found"})) + scoreCardCrud.delete(scorecardID) + return JSONResponse("Deleted Successfully") diff --git a/app/models/scoreCardMetrics.py b/app/models/scoreCardMetrics.py index 9745698..8cf085d 100644 --- a/app/models/scoreCardMetrics.py +++ b/app/models/scoreCardMetrics.py @@ -1,11 +1,17 @@ from app.database.base_class import Base -from sqlalchemy import Column, Integer +from sqlalchemy import Column, Integer, Enum +# criteriaStates = ("greater", "smaller", "equal") class ScoreCardMetrics(Base): id = Column(Integer, primary_key=True, index=True) scoreCardId = Column(Integer, nullable=False) metricId = Column(Integer, nullable=False) + """ + criteria = Column(Enum(*criteriaStates, name="criteria", create_type=False), nullable=False) + desiredValue = Column() + weight = Column(Integer, nullable=False) + """ def __repr__(self): return f"" diff --git a/app/schemas/scoreCardMetrics.py b/app/schemas/scoreCardMetrics.py index 6900062..c9031b8 100644 --- a/app/schemas/scoreCardMetrics.py +++ b/app/schemas/scoreCardMetrics.py @@ -7,12 +7,23 @@ class ScoreCardMetricsBase(BaseModel): scoreCardId: Optional[int] = None metricId: Optional[int] = None + """ + criteria: Optional[str] = None + desiredValue: Optional[] = None + weight: Optional[int] = None + """ +# class ScoreCardMetricsGet(ScoreCardMetricsBase): # Properties to receive on ScoreCardMetrics creation class ScoreCardMetricsCreate(ScoreCardMetricsBase): scoreCardId: int metricId: int - + """ + criteria: str + #desiredValue: list + weight: int + """ + # Properties to receive on ScoreCardMetrics update class ScoreCardMetricsUpdate(ScoreCardMetricsBase): pass @@ -22,6 +33,11 @@ class ScoreCardMetricsInDBBase(ScoreCardMetricsBase): id: int scoreCardId: int metricId: int + """ + criteria: str + #desiredValue: list + weight: int + """ class Config: orm_mode = True From f7afff8ea5a74477efdb9eaf7ac52502e1088219 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Mon, 26 Aug 2024 10:31:01 +0300 Subject: [PATCH 03/70] 1- Changed the DB as i added 3 Columns (Weight, Desired Value, Criteria) to the scorecardMetric Table. --- app/models/scoreCardMetrics.py | 10 +++++----- app/schemas/scoreCardMetrics.py | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/models/scoreCardMetrics.py b/app/models/scoreCardMetrics.py index 8cf085d..ca23b2c 100644 --- a/app/models/scoreCardMetrics.py +++ b/app/models/scoreCardMetrics.py @@ -1,17 +1,17 @@ from app.database.base_class import Base -from sqlalchemy import Column, Integer, Enum +from sqlalchemy import Column, Integer, Enum, String -# criteriaStates = ("greater", "smaller", "equal") +criteriaStates = ("greater", "smaller", "equal", "greater or equal", "smaller or equal") class ScoreCardMetrics(Base): id = Column(Integer, primary_key=True, index=True) scoreCardId = Column(Integer, nullable=False) metricId = Column(Integer, nullable=False) - """ + criteria = Column(Enum(*criteriaStates, name="criteria", create_type=False), nullable=False) - desiredValue = Column() + desiredValue = Column(String, nullable=False) weight = Column(Integer, nullable=False) - """ + def __repr__(self): return f"" diff --git a/app/schemas/scoreCardMetrics.py b/app/schemas/scoreCardMetrics.py index c9031b8..fc464bd 100644 --- a/app/schemas/scoreCardMetrics.py +++ b/app/schemas/scoreCardMetrics.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import Optional, Union from pydantic import BaseModel @@ -7,22 +7,22 @@ class ScoreCardMetricsBase(BaseModel): scoreCardId: Optional[int] = None metricId: Optional[int] = None - """ + criteria: Optional[str] = None - desiredValue: Optional[] = None + desiredValue: Optional[Union[str,float,int,str]] = None weight: Optional[int] = None - """ + # class ScoreCardMetricsGet(ScoreCardMetricsBase): # Properties to receive on ScoreCardMetrics creation class ScoreCardMetricsCreate(ScoreCardMetricsBase): scoreCardId: int metricId: int - """ + criteria: str #desiredValue: list weight: int - """ + # Properties to receive on ScoreCardMetrics update class ScoreCardMetricsUpdate(ScoreCardMetricsBase): @@ -33,11 +33,11 @@ class ScoreCardMetricsInDBBase(ScoreCardMetricsBase): id: int scoreCardId: int metricId: int - """ + criteria: str #desiredValue: list weight: int - """ + class Config: orm_mode = True From 6b95b2dfecf620c4764bb0712ed5a7174c814670 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Mon, 26 Aug 2024 19:19:49 +0300 Subject: [PATCH 04/70] 1- Changed in the schema and added desired value. --- app/schemas/scoreCardMetrics.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/schemas/scoreCardMetrics.py b/app/schemas/scoreCardMetrics.py index fc464bd..b8304c5 100644 --- a/app/schemas/scoreCardMetrics.py +++ b/app/schemas/scoreCardMetrics.py @@ -20,7 +20,7 @@ class ScoreCardMetricsCreate(ScoreCardMetricsBase): metricId: int criteria: str - #desiredValue: list + desiredValue: Optional[Union[str,float,int,str]] = None weight: int @@ -35,7 +35,7 @@ class ScoreCardMetricsInDBBase(ScoreCardMetricsBase): metricId: int criteria: str - #desiredValue: list + desiredValue: Optional[Union[str,float,int,str]] = None weight: int From bc42d1042414d992f2cd85cefc72adebd89cad61 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Wed, 28 Aug 2024 13:58:28 +0300 Subject: [PATCH 05/70] 1- Added getservice in CRUD microserviceScoreCard. --- app/api/scorecard.py | 3 +-- app/crud/microserviceScoreCard.py | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/api/scorecard.py b/app/api/scorecard.py index c5c0188..e647e0b 100644 --- a/app/api/scorecard.py +++ b/app/api/scorecard.py @@ -38,7 +38,6 @@ def getScoreCard(scorecardID: int, scoreCardCrud: crud.CRUDScoreCard = Depends(d @router.delete("/{scorecardID}") def deleteScorecard(scorecardID:int , scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: scorecard = scoreCardCrud.get(scorecardID) - if scorecard is None: - return JSONResponse(status_code=status.HTTP_404_NOT_FOUND, content= jsonable_encoder({"detail":"Not Found"})) scoreCardCrud.delete(scorecardID) return JSONResponse("Deleted Successfully") + diff --git a/app/crud/microserviceScoreCard.py b/app/crud/microserviceScoreCard.py index 9d5b94c..2d22cf7 100644 --- a/app/crud/microserviceScoreCard.py +++ b/app/crud/microserviceScoreCard.py @@ -15,3 +15,7 @@ def __init__(self, db_session: Session): def getByTeamId(self, teamId: str): microservices = self.microserviceService.getByTeamId(teamId) return self.db_session.query(MicroserviceScoreCard).filter(MicroserviceScoreCard.microserviceId.in_([microservice.id for microservice in microservices])).all() + + def getservice(self, scorecardId: int): + microserviceIDs = self.db_session.query(MicroserviceScoreCard).filter(MicroserviceScoreCard.scoreCardId == scorecardId) + return microserviceIDs \ No newline at end of file From 86f9b3454a608f09e5df16c63aab9da0bd92d38b Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Wed, 28 Aug 2024 16:00:55 +0300 Subject: [PATCH 06/70] 1- Changed the db of the scorecard and put the "code" field in it --- app/models/scoreCard.py | 3 ++- app/schemas/scoreCard.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/scoreCard.py b/app/models/scoreCard.py index 4885a4d..07559c8 100644 --- a/app/models/scoreCard.py +++ b/app/models/scoreCard.py @@ -1,9 +1,10 @@ from app.database.base_class import Base from sqlalchemy import Column, Integer, String -# change + class Scorecard(Base): id = Column(Integer, primary_key=True, index=True) + code = Column(String, nullable=False) name = Column(String, nullable=False) description = Column(String, nullable=False) diff --git a/app/schemas/scoreCard.py b/app/schemas/scoreCard.py index 4681b61..ac59421 100644 --- a/app/schemas/scoreCard.py +++ b/app/schemas/scoreCard.py @@ -21,6 +21,7 @@ class ScoreCardUpdate(ScoreCardBase): class ScoreCardInDBBase(ScoreCardBase): id: int name: str + code: str description: str class Config: From 25a5848a1ed433de0c3d758e60e128db2a9f0ec8 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Thu, 29 Aug 2024 13:27:17 +0300 Subject: [PATCH 07/70] 1- changes --- app/api/scorecard.py | 8 ++++++-- app/schemas/scoreCard.py | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/api/scorecard.py b/app/api/scorecard.py index e647e0b..adc7bdf 100644 --- a/app/api/scorecard.py +++ b/app/api/scorecard.py @@ -13,19 +13,23 @@ router = APIRouter() +def format_code(name): + code = re.sub(r'\s+', '-', name.strip()) + return code + @router.post("/", response_model=schemas.ScoreCard) def createScoreCard(scoreCard: schemas.ScoreCardCreate, scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: + scoreCard.code = format_code(scoreCard.name) return scoreCardCrud.create(scoreCard) # I get all the scorecards id then go to microserviceSCORECARD to get all ids of microservices related to one scorecardID -""" @router.get("/", response_model=List[schemas.ScoreCard]) def getAllScoreCard(scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)): scoreCards = scoreCardCrud.list() return scoreCards -""" + # Get Single Scorecard by its won ID (NOTE: This is working on the old DB of scorecard # DATA of scorecard retreived is : 1- ID 2- Name 3- Descritpion) diff --git a/app/schemas/scoreCard.py b/app/schemas/scoreCard.py index ac59421..52d2d33 100644 --- a/app/schemas/scoreCard.py +++ b/app/schemas/scoreCard.py @@ -7,6 +7,7 @@ class ScoreCardBase(BaseModel): name: Optional[str] = None description: Optional[str] = None + code: Optional[str] = None # Properties to receive on scorecard creation class ScoreCardCreate(ScoreCardBase): From 74990d7d284e81c5e8324d7527d188dd049abd23 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Sun, 1 Sep 2024 18:04:20 +0300 Subject: [PATCH 08/70] 1- small changes --- app/api/api.py | 1 - app/api/scorecard.py | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/api/api.py b/app/api/api.py index ad8fd3c..252dec7 100644 --- a/app/api/api.py +++ b/app/api/api.py @@ -9,5 +9,4 @@ apiRouter.include_router(microservice.router , prefix="/services",tags=["microservice"]) - apiRouter.include_router(scorecard.router, prefix="/scorecard", tags=["scorecards"]) \ No newline at end of file diff --git a/app/api/scorecard.py b/app/api/scorecard.py index adc7bdf..047d8e1 100644 --- a/app/api/scorecard.py +++ b/app/api/scorecard.py @@ -10,13 +10,10 @@ from typing import Any, List import json from fastapi.routing import APIRoute +from app.utils.base import format_code router = APIRouter() -def format_code(name): - code = re.sub(r'\s+', '-', name.strip()) - return code - @router.post("/", response_model=schemas.ScoreCard) def createScoreCard(scoreCard: schemas.ScoreCardCreate, scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: scoreCard.code = format_code(scoreCard.name) From 6924cb1f7893e2800832fb6a67c78695fa165968 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Thu, 5 Sep 2024 11:14:51 +0300 Subject: [PATCH 09/70] 1- just want to change branch no edits are valuable till now --- app/api/metrics.py | 21 ++++++-- app/api/scorecard.py | 46 +++++++++++------ app/crud/__init__.py | 2 +- app/crud/microservice.py | 6 ++- app/crud/microserviceScoreCard.py | 5 +- app/crud/scoreCard.py | 5 +- app/crud/scoreCardMetrics.py | 5 ++ app/crud/scorecardServiceMetric.py | 71 +++++++++++++++++++++++++++ app/dependencies.py | 5 +- app/models/__init__.py | 2 +- app/models/metric.py | 1 + app/models/scoreCard.py | 3 ++ app/schemas/__init__.py | 1 + app/schemas/metric.py | 5 +- app/schemas/scoreCard.py | 13 ++++- app/schemas/scoreCardMetrics.py | 7 ++- app/schemas/scorecardServiceMetric.py | 21 ++++++++ 17 files changed, 184 insertions(+), 35 deletions(-) create mode 100644 app/crud/scorecardServiceMetric.py create mode 100644 app/schemas/scorecardServiceMetric.py diff --git a/app/api/metrics.py b/app/api/metrics.py index 269fceb..2193be4 100644 --- a/app/api/metrics.py +++ b/app/api/metrics.py @@ -12,6 +12,7 @@ from .exceptions import HTTPResponseCustomized from app.core.security import JWTBearer, decodeJWT from app.utils.base import format_code +from collections import OrderedDict metric_type = ["integer", "boolean"] @@ -81,6 +82,8 @@ def createMetric(metric: schemas.MetricCreate, metricCrud: crud.CRUDMetric = Dep raise HTTPResponseCustomized( status_code=422, detail="area can not have an empty string or more") try: + # I use set to remove all duplicates and return it back to list cuz set is not json serializable + metricObj.area = list(set(metric.area)) metricObj.area = json.dumps(metric.area) # Well it will throw the error but i can not test it as i dont know how the error will come as XD # need help for testing it. @@ -129,14 +132,22 @@ def editMetric(metricID: int, metricInput: schemas.MetricUpdate, metricCrud: cru metricObj = metricInput if (metricInput.name): metricObj.code = format_code(metricInput.name) - if (metricCrud.getByCode(metricObj.code)): + if (metricCrud.getByCode(metricObj.code) and metricObj.id == metric.id): raise HTTPResponseCustomized(status_code=422, detail="name already exists") - if (metricInput.area): + # Stringfying the list of areas to be saved as string + if (metricObj.area != None): + if any(item == "" for item in metricObj.area): + raise HTTPResponseCustomized( + status_code=422, detail="area can not have an empty string or more") try: + # I use set to remove all duplicates and return it back to list cuz set is not json serializable + metricObj.area = list(set(metricInput.area)) metricObj.area = json.dumps(metricInput.area) - except: - metricInput.area = [] - metricObj.area = json.dumps(metricInput.area) + except (TypeError, ValueError) as e: + raise ValueError(f"Invalid area datatype: {e}") + else: + metric.area = [] + metricObj.area = json.dumps(metric.area) metricCrud.update(metricID, metricObj) raise HTTPResponseCustomized(status_code=200, detail="Success in Editing") diff --git a/app/api/scorecard.py b/app/api/scorecard.py index 047d8e1..5d894c1 100644 --- a/app/api/scorecard.py +++ b/app/api/scorecard.py @@ -1,44 +1,60 @@ from app import dependencies from fastapi.exceptions import RequestValidationError -from app.schemas import ServiceMetricCreate, MetricCreate, scoreCard, microserviceScoreCard +from app.schemas import ServiceMetricCreate, MetricCreate, scoreCard, microserviceScoreCard, scorecardServiceMetric from fastapi import APIRouter, Depends, Request, exception_handlers, status, Response, HTTPException from fastapi.responses import JSONResponse, PlainTextResponse from fastapi.encoders import jsonable_encoder from pydantic import BaseModel, Field -from app.crud import CRUDMetric, CRUDServiceMetric, CRUDMicroserviceScoreCard, CRUDMicroservice +from app.crud import CRUDMetric, CRUDServiceMetric, CRUDMicroserviceScoreCard, CRUDMicroservice, CRUDScoreCardServiceMetric from app import schemas, models, crud from typing import Any, List import json from fastapi.routing import APIRoute from app.utils.base import format_code +from .exceptions import HTTPResponseCustomized + router = APIRouter() @router.post("/", response_model=schemas.ScoreCard) -def createScoreCard(scoreCard: schemas.ScoreCardCreate, scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: - scoreCard.code = format_code(scoreCard.name) - return scoreCardCrud.create(scoreCard) - +def createScoreCard(scoreCard: schemas.scorecardServiceMetric, scoreCardCrud: crud.CRUDScoreCardServiceMetric = Depends(dependencies.getScorecardServiceMetric)) -> Any: + try: + scoreCard.services = jsonable_encoder(scoreCard.services) + scoreCard.services = json.dumps(scoreCard.services) + scoreCard.metrics = jsonable_encoder(scoreCard.metrics) + scoreCard.metrics = json.dumps(scoreCard.metrics) + scoreCard.code = format_code(scoreCard.name) + return scoreCard + except: + return scoreCard # I get all the scorecards id then go to microserviceSCORECARD to get all ids of microservices related to one scorecardID -@router.get("/", response_model=List[schemas.ScoreCard]) -def getAllScoreCard(scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)): +@router.get("/", response_model=List[schemas.GetScoreCard]) +def getAllScoreCard(scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud), serviceCrud: crud.CRUDMicroserviceScoreCard= Depends(dependencies.getMicroserviceScoreCardsCrud)): scoreCards = scoreCardCrud.list() - return scoreCards + servicesID = [] + microservices = [] + for scorecard in scoreCards: + serviceid = serviceCrud.getservice(scorecard.id) + servicesID.append(serviceid) + for serviceID in servicesID: + microservice = serviceCrud.getByServiceId(serviceID) + microservice = jsonable_encoder(microservice) + microservices.append(microservice) + return "Hello World" -# Get Single Scorecard by its won ID (NOTE: This is working on the old DB of scorecard -# DATA of scorecard retreived is : 1- ID 2- Name 3- Descritpion) @router.get("/{scorecardID}", response_model=schemas.ScoreCard) -def getScoreCard(scorecardID: int, scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: - scorecard = scoreCardCrud.get(scorecardID) - return JSONResponse(status_code=status.HTTP_200_OK, content= jsonable_encoder({"object":scorecard})) +def getScoreCard(scorecardID: int, scoreCardCrud: crud.CRUDScoreCardServiceMetric = Depends(dependencies.getScorecardServiceMetric)) -> Any: + scorecard = scoreCardCrud.getwithscorecardIDmetricandservice(scorecardID) + scorecard = jsonable_encoder(scorecard) + return HTTPResponseCustomized(status_code=200, detail=scoreCard) # Delete one ScoreCard with its own ID @router.delete("/{scorecardID}") def deleteScorecard(scorecardID:int , scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: scorecard = scoreCardCrud.get(scorecardID) scoreCardCrud.delete(scorecardID) - return JSONResponse("Deleted Successfully") + return HTTPResponseCustomized(status = 200, detail = "Scorecard Has Been Deleted Successfully") diff --git a/app/crud/__init__.py b/app/crud/__init__.py index 608ab09..24844c8 100644 --- a/app/crud/__init__.py +++ b/app/crud/__init__.py @@ -7,4 +7,4 @@ from .serviceMetric import CRUDServiceMetric from .team import CRUDTeam from .microserviceTeamScorecard import CRUDMicroserviceTeamScorecard - +from .scorecardServiceMetric import CRUDScoreCardServiceMetric \ No newline at end of file diff --git a/app/crud/microservice.py b/app/crud/microservice.py index b1efeda..2bf847b 100644 --- a/app/crud/microservice.py +++ b/app/crud/microservice.py @@ -19,6 +19,10 @@ def getByTeamId(self, teamId: str): def getByTeamIdAndCode(self, teamId: str, code: str): return self.db_session.query(Microservice).filter(Microservice.teamId == teamId, Microservice.code == code).first() + + def getByServiceId(self, serviceID: int) -> Microservice: + return self.db_session.query(Microservice).filter(Microservice.id == serviceID).first() + def getAllServicesWithTeamName(self) -> list[MicroserviceInDBBase]: microservices = self.list() @@ -38,7 +42,7 @@ def getAllServicesWithTeamName(self) -> list[MicroserviceInDBBase]: return services #get one with team - def getByServiceId(self , service_id:int): + def getByServiceIdWithTeam(self , service_id:int): result = ( self.db_session.query(Microservice.id, Microservice.name, Microservice.description, Microservice.code, Team.name.label("team_name")) .filter(Microservice.id == service_id) diff --git a/app/crud/microserviceScoreCard.py b/app/crud/microserviceScoreCard.py index 01c4bd8..2d3e2cd 100644 --- a/app/crud/microserviceScoreCard.py +++ b/app/crud/microserviceScoreCard.py @@ -22,6 +22,5 @@ def deleteByServiceId(self,serviceid:int): self.db_session.query(MicroserviceScoreCard).filter(MicroserviceScoreCard.microserviceId == serviceid).delete() self.db_session.commit() - def getservice(self, scorecardId: int): - microserviceIDs = self.db_session.query(MicroserviceScoreCard).filter(MicroserviceScoreCard.scoreCardId == scorecardId) - return microserviceIDs \ No newline at end of file + def getservice(self, scorecardId: int) -> list[MicroserviceScoreCard]: + return self.db_session.query(MicroserviceScoreCard).filter(MicroserviceScoreCard.scoreCardId == scorecardId).all() diff --git a/app/crud/scoreCard.py b/app/crud/scoreCard.py index 3eafe7f..2f0b95c 100644 --- a/app/crud/scoreCard.py +++ b/app/crud/scoreCard.py @@ -14,6 +14,5 @@ def getByScoreCradId(self, ScoreCardId: str): return self.db_session.query(Scorecard).filter(Scorecard.id == ScoreCardId).all() def getByScoreCradIds(self, ScoreCardIds: list[int]): - ids =[ScoreCardId for ScoreCardId in ScoreCardIds ] - return self.db_session.query(Scorecard).filter(Scorecard.id.in_(ids)).all() - + ids =[ScoreCardId for ScoreCardId in ScoreCardIds] + return self.db_session.query(Scorecard).filter(Scorecard.id.in_(ids)).all() \ No newline at end of file diff --git a/app/crud/scoreCardMetrics.py b/app/crud/scoreCardMetrics.py index e06fdba..888d623 100644 --- a/app/crud/scoreCardMetrics.py +++ b/app/crud/scoreCardMetrics.py @@ -9,4 +9,9 @@ class CRUDScoreCardMetric(CRUDBase[ScoreCardMetrics, ScoreCardMetricsCreate, ScoreCardMetricsUpdate]): def __init__(self, db_session: Session): super(CRUDScoreCardMetric, self).__init__(ScoreCardMetrics, db_session) + + def getbyscorecardID(self, scorecardID) -> list[ScoreCardMetrics]: + return self.db_session.query(ScoreCardMetrics).filter(ScoreCardMetrics.scoreCardId == scorecardID).all() + def getbymetricID(self, metricID) -> list[ScoreCardMetrics]: + return self.db_session.query(ScoreCardMetrics).filter(ScoreCardMetrics.metricId == metricID).first() \ No newline at end of file diff --git a/app/crud/scorecardServiceMetric.py b/app/crud/scorecardServiceMetric.py new file mode 100644 index 0000000..493bacf --- /dev/null +++ b/app/crud/scorecardServiceMetric.py @@ -0,0 +1,71 @@ +from sqlalchemy.orm import Session +from app.api.exceptions import HTTPResponseCustomized + +from ..models import Scorecard +from ..schemas import scorecardServiceMetricCreate +from . import CRUDScoreCardMetric, CRUDMicroserviceScoreCard, CRUDMetric, CRUDScoreCard, CRUDMicroservice +from .base import CRUDBase +from app.utils import format_code +from fastapi.encoders import jsonable_encoder + +class CRUDScoreCardServiceMetric: + def __init__(self, db_session: Session): + self.scoreCard = CRUDScoreCard(db_session) + self.microServiceScoreCard = CRUDMicroserviceScoreCard(db_session) + self.scoreCardMetric = CRUDScoreCardMetric(db_session) + self.metric = CRUDMetric(db_session) + self.microService = CRUDMicroservice(db_session) + + def getwithscorecardIDmetricandservice(self, scorecardID:int): + # it handles if the scorecard is not found & raises error message + scorecard = self.scoreCard.get(scorecardID) + + metricIDs = self.scoreCardMetric.getbyscorecardID(scorecardID) + serviceIDs = self.microServiceScoreCard.getservice(scorecardID) + + metricOBJs = [] + serviceOBJs = [] + metric_ids = [sc_id.metricId for sc_id in metricIDs] + service_ids = [sc_id.microserviceId for sc_id in serviceIDs] + + print (metric_ids) + print (service_ids) + + + for metricID in metric_ids: + metric = self.scoreCardMetric.get(metricID) + print(metric) + metricOBJs.append({ + 'scoreCardId': metric.scoreCardId, + 'metricId': metric.metricId, + 'criteria': metric.criteria, + 'desiredValue': metric.desiredValue, + 'weight': metric.weight + }) + + print(metricOBJs) + + for serviceID in service_ids: + service = self.microService.getByServiceId(serviceID) + print (service) + serviceOBJs.append({ + 'name': service.name, + 'descroption': service.description, + 'code': service.code, + 'teamId': service.teamId + }) + + print(serviceOBJs) + + scorecard.code = format_code(scorecard.name) + + scorecard = scorecardServiceMetricCreate( + id = scorecard.id, + name = scorecard.name, + metrics = metricOBJs, + services = serviceOBJs, + description = scorecard.description, + code = scorecard.code + ) + + return metricIDs \ No newline at end of file diff --git a/app/dependencies.py b/app/dependencies.py index a65a943..2496b7e 100644 --- a/app/dependencies.py +++ b/app/dependencies.py @@ -36,4 +36,7 @@ def getServiceMetricsCrud(db_session: Session = Depends(get_db)): return crud.CRUDServiceMetric(db_session) def getMicroserviceTeamScoreCardCrud(db_session: Session = Depends(get_db)): - return crud.CRUDMicroserviceTeamScorecard(db_session) \ No newline at end of file + return crud.CRUDMicroserviceTeamScorecard(db_session) + +def getScorecardServiceMetric(db_session: Session = Depends(get_db)): + return crud.CRUDScoreCardServiceMetric(db_session) \ No newline at end of file diff --git a/app/models/__init__.py b/app/models/__init__.py index f98ae1f..774d6f7 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -4,4 +4,4 @@ from .scoreCard import * from .scoreCardMetrics import * from .serviceMetric import * -from .team import * +from .team import * \ No newline at end of file diff --git a/app/models/metric.py b/app/models/metric.py index df32bbf..511514e 100644 --- a/app/models/metric.py +++ b/app/models/metric.py @@ -10,6 +10,7 @@ class Metric(Base): area = Column(String, nullable=False) description = Column(String, nullable=False) type = Column(Enum(*typeStates, name="type", create_type=False), nullable=False) + def __repr__(self): return f"{self.name} ({self.area})" diff --git a/app/models/scoreCard.py b/app/models/scoreCard.py index 07559c8..df844b0 100644 --- a/app/models/scoreCard.py +++ b/app/models/scoreCard.py @@ -1,5 +1,7 @@ from app.database.base_class import Base from sqlalchemy import Column, Integer, String +from .microservice import Microservice +from .scoreCardMetrics import ScoreCardMetrics class Scorecard(Base): @@ -7,6 +9,7 @@ class Scorecard(Base): code = Column(String, nullable=False) name = Column(String, nullable=False) description = Column(String, nullable=False) + def __repr__(self): return f"" diff --git a/app/schemas/__init__.py b/app/schemas/__init__.py index 5dded6f..a06b27a 100644 --- a/app/schemas/__init__.py +++ b/app/schemas/__init__.py @@ -6,3 +6,4 @@ from .serviceMetric import * from .team import * from .microserviceTeamScorecard import * +from .scorecardServiceMetric import * \ No newline at end of file diff --git a/app/schemas/metric.py b/app/schemas/metric.py index abb6bd9..bab8e51 100644 --- a/app/schemas/metric.py +++ b/app/schemas/metric.py @@ -5,13 +5,12 @@ # Shared properties class MetricBase(BaseModel): + id: Optional[int] = None name: Optional[str] = None code: Optional[str] = None area: Optional[List[str]] = None description: Optional[str] = None - type: Optional[str] = None - - + type: Optional[str] = None # Properties to receive on metric creation class MetricCreate(MetricBase): diff --git a/app/schemas/scoreCard.py b/app/schemas/scoreCard.py index 52d2d33..19f919b 100644 --- a/app/schemas/scoreCard.py +++ b/app/schemas/scoreCard.py @@ -1,5 +1,5 @@ from typing import Optional - +from . import microservice, scoreCardMetrics, microservice from pydantic import BaseModel @@ -8,11 +8,16 @@ class ScoreCardBase(BaseModel): name: Optional[str] = None description: Optional[str] = None code: Optional[str] = None + services: list[microservice.MicroserviceCreateApi] + metrics: list[scoreCardMetrics.ScoreCardMetricsCreate] # Properties to receive on scorecard creation class ScoreCardCreate(ScoreCardBase): name: str description: str + + + # Properties to receive on scorecard update class ScoreCardUpdate(ScoreCardBase): @@ -24,10 +29,16 @@ class ScoreCardInDBBase(ScoreCardBase): name: str code: str description: str + services: list[microservice.MicroserviceCreate] + metrics: list[scoreCardMetrics.ScoreCardMetricsCreate] class Config: orm_mode = True +class GetScoreCard(ScoreCardBase): + id: int + services: microservice.MicroserviceBase + # Properties to return to client class ScoreCard(ScoreCardInDBBase): pass diff --git a/app/schemas/scoreCardMetrics.py b/app/schemas/scoreCardMetrics.py index b8304c5..7664609 100644 --- a/app/schemas/scoreCardMetrics.py +++ b/app/schemas/scoreCardMetrics.py @@ -12,7 +12,11 @@ class ScoreCardMetricsBase(BaseModel): desiredValue: Optional[Union[str,float,int,str]] = None weight: Optional[int] = None -# class ScoreCardMetricsGet(ScoreCardMetricsBase): +class metric4scorecard(ScoreCardMetricsBase): + name: str + criteria: str + desiredValue: Optional[Union[str,float,int,str]] + weight: int # Properties to receive on ScoreCardMetrics creation class ScoreCardMetricsCreate(ScoreCardMetricsBase): @@ -23,6 +27,7 @@ class ScoreCardMetricsCreate(ScoreCardMetricsBase): desiredValue: Optional[Union[str,float,int,str]] = None weight: int + # Properties to receive on ScoreCardMetrics update class ScoreCardMetricsUpdate(ScoreCardMetricsBase): diff --git a/app/schemas/scorecardServiceMetric.py b/app/schemas/scorecardServiceMetric.py new file mode 100644 index 0000000..b196697 --- /dev/null +++ b/app/schemas/scorecardServiceMetric.py @@ -0,0 +1,21 @@ +from typing import Optional +from pydantic import BaseModel +from . import team, scoreCard, scoreCardMetrics, microservice + +class scorecardServiceMetric(BaseModel): + id: int + name: str + code: Optional[str] = None + description: str + metrics: list[scoreCardMetrics.metric4scorecard] + services: list[microservice.MicroserviceCreateApi] + + class Config: + orm_mode = True + +class scorecardServiceMetricCreate(scorecardServiceMetric): + pass + +# Properties to receive on microserviceScoreCard update +class scorecardServiceMetricUpdate(scorecardServiceMetric): + pass From cd874724909b21f8f9b36f14d7b7162c024137f4 Mon Sep 17 00:00:00 2001 From: Ammar-Radwan Date: Thu, 5 Sep 2024 12:42:46 +0300 Subject: [PATCH 10/70] services listing page added --- frontend/src/App.js | 5 +- frontend/src/pages/NotFound.jsx | 6 +- frontend/src/pages/Services.jsx | 114 ++++++++++++++++++++++++++++++-- 3 files changed, 118 insertions(+), 7 deletions(-) diff --git a/frontend/src/App.js b/frontend/src/App.js index 2d0a386..c311a67 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -1,5 +1,5 @@ import React from 'react'; -import {BrowserRouter, Routes, Route} from 'react-router-dom'; +import {BrowserRouter, Routes, Route, Navigate} from 'react-router-dom'; import MetricCreateEdit from './pages/MetricCreateEdit'; import Services from './pages/Services.jsx'; import Metrics from './pages/Metrics'; @@ -10,7 +10,7 @@ function App() { return ( - }/> + }/> }/> }/> }/> @@ -18,6 +18,7 @@ function App() { }/> }/> } /> + } /> ); diff --git a/frontend/src/pages/NotFound.jsx b/frontend/src/pages/NotFound.jsx index e21dfaa..f51b781 100644 --- a/frontend/src/pages/NotFound.jsx +++ b/frontend/src/pages/NotFound.jsx @@ -2,7 +2,11 @@ import React from 'react' const NotFound = () => { return ( -

404 Not Found

+
+
+

404 Not Found

+
+
) } diff --git a/frontend/src/pages/Services.jsx b/frontend/src/pages/Services.jsx index 99f4a94..1647083 100644 --- a/frontend/src/pages/Services.jsx +++ b/frontend/src/pages/Services.jsx @@ -1,12 +1,118 @@ -import React from 'react'; -import Layout from '../layouts/Layout'; +import React, { useEffect, useState } from 'react' +import Layout from '../layouts/Layout.jsx' +import { NavLink } from 'react-router-dom' + + +const ServicesRaws = (props) => { + useEffect(() => { + const fetchService = async () => { + const data = await props.getAllServices(); + console.log("get data:: ", data); + props.setServiceData(data); + props.setLoading(false); + }; + + fetchService(); + }, []); + + if (props.loading) { + return
Loading...
; + } + + if (!props.metricData) { + return
No data available
; + } + + return props.serviceData.map((service, index) => ( + + {index + 1} + {service.name} + {service.description} + {service.type} + {service.area.join(',')} + + navData.isActive ? 'active' : ''}> + + + + + + )) + +}; + const Services = () => { + const [serviceData, setServiceData] = useState(null); + const [loading, setLoading] = useState(true); + + useEffect(() => {console.log("re-rendered")}, []); + const getAllServices = async () => { + try { + const response = await fetch(`http://127.0.0.1:8000/api/v1/services`); + const data = await response.json(); + return data; // Return the data array + } catch (error) { + console.error('Error fetching service:', error); + } + }; + + const handleDelete = async (service_id) => { + try { + const response = await fetch(`http://127.0.0.1:8000/api/v1/service/${service_id}`, { + method: 'DELETE', + }); + + const data = await getAllServices(); + setServiceData(data); + + console.log(`Service with id ${service_id} deleted successfully`); + } catch (error) { + console.error('Error deleting service:', error); + } + }; + + return ( -

Services

+
+
+
+

Services List

+ navData.isActive? 'active': '')}> + + +
+ + + + + + + + + + + + + + +
#NameDescriptionTeamScorecardsActions
+
+
- ) + ) } export default Services \ No newline at end of file From cf5352fc45cf6e82b513fb3b76f7d9788e2afaa9 Mon Sep 17 00:00:00 2001 From: Ammar-Radwan Date: Thu, 5 Sep 2024 14:49:09 +0300 Subject: [PATCH 11/70] basic pages --- frontend/src/App.js | 3 + frontend/src/pages/ScorecardCreateEdit.jsx | 128 +++++++++++++++++++++ frontend/src/pages/Scorecards.jsx | 16 ++- 3 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 frontend/src/pages/ScorecardCreateEdit.jsx diff --git a/frontend/src/App.js b/frontend/src/App.js index c311a67..3f02f38 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -5,6 +5,7 @@ import Services from './pages/Services.jsx'; import Metrics from './pages/Metrics'; import NotFound from './pages/NotFound'; import Scorecards from './pages/Scorecards'; +import ScorecardCreateEdit from './pages/ScorecardCreateEdit.jsx'; function App() { return ( @@ -14,6 +15,8 @@ function App() { }/> }/> }/> + }/> + }/> }/> }/> }/> diff --git a/frontend/src/pages/ScorecardCreateEdit.jsx b/frontend/src/pages/ScorecardCreateEdit.jsx new file mode 100644 index 0000000..5360b7e --- /dev/null +++ b/frontend/src/pages/ScorecardCreateEdit.jsx @@ -0,0 +1,128 @@ +import React, { useState, useEffect, useRef } from 'react' +import { useParams } from 'react-router-dom'; +import TagsBox from '../components/TagsBox'; +import axios from 'axios'; +import Layout from '../layouts/Layout'; + +const ScorecardCreateEdit = (props) => { + const {scorecard_id} = useParams(); + const [tags, setTags] = useState([]); + const [charLimit, setCharLimit] = useState(0); + + const scorecardNameRef = useRef(null); + const scorecardTypeRef = useRef(null); + const scorecardDescRef = useRef(null); + + + const postScorecard = (e) => { + e.preventDefault(); + + const scorecardName = scorecardNameRef.current; + const scorecardType = scorecardTypeRef.current; + const scorecardDesc = scorecardDescRef.current; + + let formData = { + name: scorecardName.value, + type: scorecardType.value, + area: tags, + description: scorecardDesc.value + } + + const response = async () => { + var data = await fetch('http://127.0.0.1:8000/api/v1/scorecards', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(formData), + }) + .then((response) => response.json()) + var responseData = { + message: data.message, + object: data.object + } + console.log(responseData) + }; + response(); + } + + const getScorecardById = async (scorecard_id) => { + var data = await fetch(`http://127.0.0.1:8000/api/v1/scorecards/${scorecard_id}`) + .then((response) => response.json()); + + var scorecard_data = data.object; + console.log(scorecard_data); + + const scorecardName = scorecardNameRef.current; + const scorecardType = scorecardTypeRef.current; + const scorecardDesc = scorecardDescRef.current; + + scorecardName.value = scorecard_data.name; + scorecardType.value = scorecard_data.type; + scorecardDesc.value = scorecard_data.description; + + setTags([...scorecard_data.area]); + + }; + + // useEffect(()=> { + // if(props.mode == 'edit'){ + // getScorecardById(scorecard_id) + // } + // }, [scorecard_id]) + + + return ( + +
+
+
+
+

{ props.mode } Scorecard

+
+
+ + + error +
+
+ + error +
+
+ + +
{charLimit}/100
+ error +
+
+ + +
    +
  • +
+ error +
+
+ +
+
+
+
+
+
+
+ ) +} + +export default ScorecardCreateEdit \ No newline at end of file diff --git a/frontend/src/pages/Scorecards.jsx b/frontend/src/pages/Scorecards.jsx index 10e7c21..f7089fb 100644 --- a/frontend/src/pages/Scorecards.jsx +++ b/frontend/src/pages/Scorecards.jsx @@ -1,10 +1,24 @@ import React from 'react' import Layout from '../layouts/Layout' +import { NavLink } from 'react-router-dom' const Scorecards = () => { return ( -

Scorecards

+
+
+
+

Scorecards List

+ navData.isActive? 'active': '')}> + + +
+
+
) } From 41c8352a184a19bab6b651df819f45cb8542915e Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Sun, 8 Sep 2024 09:42:41 +0300 Subject: [PATCH 12/70] 1- Nothing changed. --- app/api/scorecard.py | 3 +-- app/crud/scorecardServiceMetric.py | 4 ++-- app/schemas/scoreCardMetrics.py | 24 +++++++++++------------- app/utils/base.py | 2 +- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/app/api/scorecard.py b/app/api/scorecard.py index 5d894c1..a75bb49 100644 --- a/app/api/scorecard.py +++ b/app/api/scorecard.py @@ -54,7 +54,6 @@ def getScoreCard(scorecardID: int, scoreCardCrud: crud.CRUDScoreCardServiceMetri # Delete one ScoreCard with its own ID @router.delete("/{scorecardID}") def deleteScorecard(scorecardID:int , scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: - scorecard = scoreCardCrud.get(scorecardID) scoreCardCrud.delete(scorecardID) - return HTTPResponseCustomized(status = 200, detail = "Scorecard Has Been Deleted Successfully") + raise HTTPResponseCustomized(status_code = 200, detail = "Scorecard Has Been Deleted Successfully") diff --git a/app/crud/scorecardServiceMetric.py b/app/crud/scorecardServiceMetric.py index 493bacf..97ea8f7 100644 --- a/app/crud/scorecardServiceMetric.py +++ b/app/crud/scorecardServiceMetric.py @@ -33,8 +33,8 @@ def getwithscorecardIDmetricandservice(self, scorecardID:int): for metricID in metric_ids: - metric = self.scoreCardMetric.get(metricID) - print(metric) + print(metricID) + metric = self.scoreCardMetric.getbymetricID(metricID) metricOBJs.append({ 'scoreCardId': metric.scoreCardId, 'metricId': metric.metricId, diff --git a/app/schemas/scoreCardMetrics.py b/app/schemas/scoreCardMetrics.py index 7664609..59464ec 100644 --- a/app/schemas/scoreCardMetrics.py +++ b/app/schemas/scoreCardMetrics.py @@ -7,28 +7,19 @@ class ScoreCardMetricsBase(BaseModel): scoreCardId: Optional[int] = None metricId: Optional[int] = None - criteria: Optional[str] = None - desiredValue: Optional[Union[str,float,int,str]] = None + desiredValue: Optional[Union[str,float,int,bool]] = None weight: Optional[int] = None - -class metric4scorecard(ScoreCardMetricsBase): - name: str - criteria: str - desiredValue: Optional[Union[str,float,int,str]] - weight: int + # Properties to receive on ScoreCardMetrics creation class ScoreCardMetricsCreate(ScoreCardMetricsBase): scoreCardId: int metricId: int - criteria: str - desiredValue: Optional[Union[str,float,int,str]] = None + desiredValue: Optional[Union[str,float,int,bool]] = None weight: int - - # Properties to receive on ScoreCardMetrics update class ScoreCardMetricsUpdate(ScoreCardMetricsBase): pass @@ -40,7 +31,7 @@ class ScoreCardMetricsInDBBase(ScoreCardMetricsBase): metricId: int criteria: str - desiredValue: Optional[Union[str,float,int,str]] = None + desiredValue: Optional[Union[str,float,int,bool]] = None weight: int @@ -54,3 +45,10 @@ class ScoreCardMetrics(ScoreCardMetricsInDBBase): # Properties properties stored in DB class ScoreCardMetricsInDB(ScoreCardMetricsInDBBase): pass + + +class metric4scorecard(ScoreCardMetricsBase): + name: str + criteria: str + desiredValue: Optional[Union[str,float,int,bool]] + weight: int diff --git a/app/utils/base.py b/app/utils/base.py index 5a3ccee..33b24cc 100644 --- a/app/utils/base.py +++ b/app/utils/base.py @@ -2,4 +2,4 @@ def format_code(name): code = re.sub(r'\s+', '-', name.strip()) - return code \ No newline at end of file + return code.lower() \ No newline at end of file From 4ef982515437bbc82e35f8fcc35c41431d0eaab5 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Sun, 8 Sep 2024 11:05:39 +0300 Subject: [PATCH 13/70] 1- No Changes IMP. --- app/crud/scoreCardMetrics.py | 2 +- app/crud/scorecardServiceMetric.py | 13 +++++-------- app/schemas/scoreCardMetrics.py | 6 +++--- app/schemas/scorecardServiceMetric.py | 10 +++++----- 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/app/crud/scoreCardMetrics.py b/app/crud/scoreCardMetrics.py index 888d623..e77fa55 100644 --- a/app/crud/scoreCardMetrics.py +++ b/app/crud/scoreCardMetrics.py @@ -13,5 +13,5 @@ def __init__(self, db_session: Session): def getbyscorecardID(self, scorecardID) -> list[ScoreCardMetrics]: return self.db_session.query(ScoreCardMetrics).filter(ScoreCardMetrics.scoreCardId == scorecardID).all() - def getbymetricID(self, metricID) -> list[ScoreCardMetrics]: + def getbymetricID(self, metricID) : return self.db_session.query(ScoreCardMetrics).filter(ScoreCardMetrics.metricId == metricID).first() \ No newline at end of file diff --git a/app/crud/scorecardServiceMetric.py b/app/crud/scorecardServiceMetric.py index 97ea8f7..ff065b9 100644 --- a/app/crud/scorecardServiceMetric.py +++ b/app/crud/scorecardServiceMetric.py @@ -13,7 +13,6 @@ def __init__(self, db_session: Session): self.scoreCard = CRUDScoreCard(db_session) self.microServiceScoreCard = CRUDMicroserviceScoreCard(db_session) self.scoreCardMetric = CRUDScoreCardMetric(db_session) - self.metric = CRUDMetric(db_session) self.microService = CRUDMicroservice(db_session) def getwithscorecardIDmetricandservice(self, scorecardID:int): @@ -33,7 +32,6 @@ def getwithscorecardIDmetricandservice(self, scorecardID:int): for metricID in metric_ids: - print(metricID) metric = self.scoreCardMetric.getbymetricID(metricID) metricOBJs.append({ 'scoreCardId': metric.scoreCardId, @@ -50,7 +48,7 @@ def getwithscorecardIDmetricandservice(self, scorecardID:int): print (service) serviceOBJs.append({ 'name': service.name, - 'descroption': service.description, + 'description': service.description, 'code': service.code, 'teamId': service.teamId }) @@ -58,14 +56,13 @@ def getwithscorecardIDmetricandservice(self, scorecardID:int): print(serviceOBJs) scorecard.code = format_code(scorecard.name) - + print (scorecard.name) scorecard = scorecardServiceMetricCreate( - id = scorecard.id, name = scorecard.name, - metrics = metricOBJs, - services = serviceOBJs, + code = scorecard.code, description = scorecard.description, - code = scorecard.code + metrics = metricOBJs, + services = serviceOBJs ) return metricIDs \ No newline at end of file diff --git a/app/schemas/scoreCardMetrics.py b/app/schemas/scoreCardMetrics.py index 59464ec..0776936 100644 --- a/app/schemas/scoreCardMetrics.py +++ b/app/schemas/scoreCardMetrics.py @@ -48,7 +48,7 @@ class ScoreCardMetricsInDB(ScoreCardMetricsInDBBase): class metric4scorecard(ScoreCardMetricsBase): - name: str - criteria: str + name: Optional[str] + criteria: Optional[str] desiredValue: Optional[Union[str,float,int,bool]] - weight: int + weight: Optional[int] diff --git a/app/schemas/scorecardServiceMetric.py b/app/schemas/scorecardServiceMetric.py index b196697..9a3d045 100644 --- a/app/schemas/scorecardServiceMetric.py +++ b/app/schemas/scorecardServiceMetric.py @@ -3,12 +3,12 @@ from . import team, scoreCard, scoreCardMetrics, microservice class scorecardServiceMetric(BaseModel): - id: int - name: str + id: Optional[int] = None + name: Optional[str] = None code: Optional[str] = None - description: str - metrics: list[scoreCardMetrics.metric4scorecard] - services: list[microservice.MicroserviceCreateApi] + description: Optional[str] = None + metrics: Optional[list[scoreCardMetrics.metric4scorecard]] = None + services: Optional[list[microservice.MicroserviceCreateApi]] = None class Config: orm_mode = True From ee10e36d4bbd2152b8080bcb6fc029853aee0593 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Sun, 8 Sep 2024 14:23:40 +0300 Subject: [PATCH 14/70] 1- Changed the Database --- app/api/metrics.py | 2 +- app/models/metric.py | 2 +- app/models/serviceMetric.py | 4 ++-- app/schemas/scorecardServiceMetric.py | 4 ++-- app/schemas/serviceMetric.py | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/api/metrics.py b/app/api/metrics.py index 2193be4..1f4b789 100644 --- a/app/api/metrics.py +++ b/app/api/metrics.py @@ -15,7 +15,7 @@ from collections import OrderedDict -metric_type = ["integer", "boolean"] +metric_type = ["integer", "boolean", "string", "float"] class Value(BaseModel): diff --git a/app/models/metric.py b/app/models/metric.py index 511514e..1d71180 100644 --- a/app/models/metric.py +++ b/app/models/metric.py @@ -1,7 +1,7 @@ from sqlalchemy import Column, Enum, Integer, String from ..database.base_class import Base -typeStates = ('integer', 'boolean') +typeStates = ('integer', 'boolean', 'string', 'float') class Metric(Base): id = Column(Integer, primary_key=True, index=True) diff --git a/app/models/serviceMetric.py b/app/models/serviceMetric.py index f88a3cf..9add320 100644 --- a/app/models/serviceMetric.py +++ b/app/models/serviceMetric.py @@ -1,14 +1,14 @@ from datetime import datetime from app.database.base_class import Base -from sqlalchemy import Column, DateTime, Integer +from sqlalchemy import Column, DateTime, Integer, String class ServiceMetric(Base): id = Column(Integer, primary_key=True, index=True) serviceId = Column(Integer, nullable=False) metricId = Column(Integer, nullable=False) - value = Column(Integer, nullable=False) + value = Column(String, nullable=False) timestamp = Column(DateTime, nullable=False, default=datetime.utcnow) def __repr__(self): diff --git a/app/schemas/scorecardServiceMetric.py b/app/schemas/scorecardServiceMetric.py index 9a3d045..05abf6a 100644 --- a/app/schemas/scorecardServiceMetric.py +++ b/app/schemas/scorecardServiceMetric.py @@ -7,8 +7,8 @@ class scorecardServiceMetric(BaseModel): name: Optional[str] = None code: Optional[str] = None description: Optional[str] = None - metrics: Optional[list[scoreCardMetrics.metric4scorecard]] = None - services: Optional[list[microservice.MicroserviceCreateApi]] = None + metrics: Optional[list[scoreCardMetrics.metric4scorecard]] = [] + services: Optional[list[microservice.MicroserviceCreateApi]] = [] class Config: orm_mode = True diff --git a/app/schemas/serviceMetric.py b/app/schemas/serviceMetric.py index a069fec..595f7ce 100644 --- a/app/schemas/serviceMetric.py +++ b/app/schemas/serviceMetric.py @@ -8,7 +8,7 @@ class ServiceMetricBase(BaseModel): serviceId: Optional[int] = None metricId: Optional[int] = None - value: Optional[float] = None + value: Optional[str] = None date: Optional[datetime] = None @@ -16,7 +16,7 @@ class ServiceMetricBase(BaseModel): class ServiceMetricCreate(ServiceMetricBase): serviceId: int metricId: int - value: float + value: str date: datetime @@ -30,7 +30,7 @@ class ServiceMetricInDBBase(ServiceMetricBase): id: int serviceId: int metricId: int - value: float + value: str date: datetime class Config: From 418c506f405752b2e0c3bbe4b7ddf46af483563c Mon Sep 17 00:00:00 2001 From: Ammar-Radwan Date: Mon, 9 Sep 2024 12:28:37 +0300 Subject: [PATCH 15/70] Service Info Page - mock data --- frontend/package-lock.json | 243 ++++++++++++++++++++++ frontend/package.json | 3 + frontend/src/App.js | 2 + frontend/src/assets/member1.jpg | Bin 0 -> 31315 bytes frontend/src/assets/member2.jpg | Bin 0 -> 17135 bytes frontend/src/assets/member3.jpg | Bin 0 -> 388333 bytes frontend/src/index.js | 3 +- frontend/src/pages/ServiceInfo.jsx | 108 ++++++++++ frontend/src/styles/pages/ServiceInfo.css | 32 +++ 9 files changed, 390 insertions(+), 1 deletion(-) create mode 100644 frontend/src/assets/member1.jpg create mode 100644 frontend/src/assets/member2.jpg create mode 100644 frontend/src/assets/member3.jpg create mode 100644 frontend/src/pages/ServiceInfo.jsx create mode 100644 frontend/src/styles/pages/ServiceInfo.css diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 375db91..304b999 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -17,8 +17,11 @@ "axios": "^1.7.5", "bootstrap": "^5.3.3", "bootstrap-icons": "^1.11.3", + "chart.js": "^4.4.4", "fontawesome-free": "^1.0.4", "react": "^18.3.1", + "react-bootstrap": "^2.10.4", + "react-chartjs-2": "^5.2.0", "react-dom": "^18.3.1", "react-router-dom": "^6.26.1", "react-scripts": "5.0.1", @@ -3502,6 +3505,12 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", + "license": "MIT" + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", @@ -3623,6 +3632,31 @@ } } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.5.tgz", + "integrity": "sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@remix-run/router": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", @@ -3631,6 +3665,48 @@ "node": ">=14.0.0" } }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.8.0.tgz", + "integrity": "sha512-xJEOXUOTmT4FngTmhdjKFRrVVF0hwCLNPdatLCHkyS4dkiSK12cEu1Y0fjxktjJrdst9jJIc5J6ihMJCoWEN/g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.4.9", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.14.0" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -3949,6 +4025,15 @@ "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/@swc/helpers": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", + "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@testing-library/dom": { "version": "8.20.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", @@ -4334,6 +4419,15 @@ "@types/react": "*" } }, + "node_modules/@types/react-transition-group": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -4405,6 +4499,12 @@ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==", + "license": "MIT" + }, "node_modules/@types/ws": { "version": "8.5.12", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", @@ -5741,6 +5841,7 @@ "url": "https://opencollective.com/bootstrap" } ], + "license": "MIT", "peerDependencies": { "@popperjs/core": "^2.11.8" } @@ -5960,6 +6061,18 @@ "node": ">=10" } }, + "node_modules/chart.js": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz", + "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, "node_modules/check-types": { "version": "11.2.3", "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", @@ -6026,6 +6139,12 @@ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==" }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, "node_modules/clean-css": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", @@ -7059,6 +7178,16 @@ "utila": "~0.4" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -9512,6 +9641,15 @@ "node": ">= 0.4" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/ipaddr.js": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", @@ -14816,6 +14954,25 @@ "react-is": "^16.13.1" } }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "license": "MIT", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/prop-types-extra/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -14996,6 +15153,46 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, + "node_modules/react-bootstrap": { + "version": "2.10.4", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.4.tgz", + "integrity": "sha512-W3398nBM2CBfmGP2evneEO3ZZwEMPtHs72q++eNw60uDGDAdiGn0f9yNys91eo7/y8CTF5Ke1C0QO8JFVPU40Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.7", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.6.9", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-chartjs-2": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz", + "integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==", + "license": "MIT", + "peerDependencies": { + "chart.js": "^4.1.1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -15132,6 +15329,12 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" + }, "node_modules/react-refresh": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", @@ -15242,6 +15445,22 @@ } } }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -17325,6 +17544,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, "node_modules/underscore": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", @@ -17552,6 +17786,15 @@ "makeerror": "1.0.12" } }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/watchpack": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index cfafcd7..6d00653 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -12,8 +12,11 @@ "axios": "^1.7.5", "bootstrap": "^5.3.3", "bootstrap-icons": "^1.11.3", + "chart.js": "^4.4.4", "fontawesome-free": "^1.0.4", "react": "^18.3.1", + "react-bootstrap": "^2.10.4", + "react-chartjs-2": "^5.2.0", "react-dom": "^18.3.1", "react-router-dom": "^6.26.1", "react-scripts": "5.0.1", diff --git a/frontend/src/App.js b/frontend/src/App.js index 3f02f38..06335f3 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -2,6 +2,7 @@ import React from 'react'; import {BrowserRouter, Routes, Route, Navigate} from 'react-router-dom'; import MetricCreateEdit from './pages/MetricCreateEdit'; import Services from './pages/Services.jsx'; +import ServiceInfo from './pages/ServiceInfo.jsx'; import Metrics from './pages/Metrics'; import NotFound from './pages/NotFound'; import Scorecards from './pages/Scorecards'; @@ -13,6 +14,7 @@ function App() { }/> }/> + }/> }/> }/> }/> diff --git a/frontend/src/assets/member1.jpg b/frontend/src/assets/member1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcf3c45ab2372a0b9ec7a5d6e56e416fcba5332f GIT binary patch literal 31315 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 z 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 literal 0 HcmV?d00001 diff --git a/frontend/src/assets/member3.jpg b/frontend/src/assets/member3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee8243a8d85832df4a67a9a2dc3dba40c58c9798 GIT binary patch literal 388333 zcmbTd3p|ut|0up@%oL-Gm~^E{O--8Er3vHGgvzBDx|wn-4Hc1F?wahBOVMSJ`y@hy z*d-EDs4!CzyRAkNLzBc%k=p<7WB-2d`=0apobx~DtUf)~v!3;Job?LhEL2(_&yHqQ4YPF)bNyVQe+K%Vf&M43@h{LPAM(KZcmmeQr%#`r^G~0J^$#ES zIt+8LHJ>gMJ7RW?|$0 zT-PJe{|)-He0STKLf;S}`C0D&(LeMbeSdBctP>$q?-RkkN8OM3Q)sShDC_n0^(f}t zKu@l}|2p`)3q6;TK+{OjLiD+LJ6J%i9) z(SN|BiqXpvfBzFqZSBCoK&_)(S1oKq|JD9~C;V&X|GM)Z-_ydr_piO9m~q_>26*~Y zuuXOK_Vf<$rTCpV=*p$6`=5#U|M|uLSk`~6gKo!lEqAN4=# z?L|52^}oXK|Kn@_u?DRB4_!k?CFd6+J8K~&5gEx1wIG6uB9e2+geSOv;cbV)UW9Sp zzGaes=pOp;eERx7T<{5Si}yR~PQivv?RHaK1AI?nec%b~LPR7q7m?8-q>fe~8d`@o zAYEjDSZFJ7)SM&pi!_CCa#;M>I;g;d3xV5+qI6a&(ZYypF&JM@Hx!~M!Ubp~U z818pm9PTnM6?Y9+fV+*W#6844#l672#`WL^aih3Nyc~WOo{U$+ufl8N_3&HpR`}g` zN4z`U2OokzgOA5w#b@J-@OSYK@y+;G_;+|Ieq0X8DaxtJEtgv-rzdABXCt>?&P~o& zE-8+z?Afzd&1TKsKihwH{Op3+k7kQ!f1jf=M{AD7oWpZY%}JYcch1W>pXVyf zrOw?l*J*CZ+@!hXb47DMDJdweQZiLKs1%`;rc|lasWd)MW#0OEHuH|pJ3sH{yr=U9 zlxHfhQr@b3Sow_db>&COy()4lD^yHXTvdKo$x&%g=_Ah|uO?fNkCEfZx5z^Bm-))` zH_qQXKWKj1{0H;jsmiIYQngU^R83GVQ|(ZlT%fjK%L49#m<7cPUM~2yaLGc}Lhi!Y zg(VALEu36LS+sSL$D&J%Di*z6OjxYB*miN?;>^Vji$5(PFELo+x+Hc<*^SqYTMOLsHLbqQv0N?s?JhBrp{NdQ6F5Uvdnnd(PjK)waY$I=2Ny% zJSkTxk11c4FI{fFJYe~?<-+AZG*)Zu(TLP2(RjOpv_fx%+Y0`Q`W0VRE?c>CW!TEX zm48tcsCv{R)MRQC_1mh|tM;urx2j^*!0LsoEmnuDE?oVFHk-DY=0nS-wXd16MsJPB znv6BiHSwAZ%_Ev=nxeJ%wVT!+U7NA?1)WIOr+d+}>7DClt=qEh%yl-A%rmiZ>1FuGDqWP1o(zBkQsC&g(tVC+eH%pVF_^ zpI~lc`ZLRz!v^aNJPd9c3>dC9|!i1ez$q~=7XEFH@|1C zU>#=NU`e*D*>Y@4(U#99znS=&+%frP$}|l(tuvD|+in(XCfusLbSGO+uXMm zZu_#Gu|0HqojK9m%KVafr-hn@t3`pu7fW5saLdP5v#fSmrCPn;p}E6%N7YXJPRpHF zcD}KuT6a^I&)9HcpT<3$%q&n z!-HHS?q#mT&B*Pt+km@~`xW=WBb$#T9r<+B^l0kQkz?k^vW|W8u<^+A_}g=zXUTE- z<1WW5y_CH?ydHb2dk1;HII;G`*%R-4m_CUScy!_Lo(;lZ=BY%s$969#;zTd0PsGZ@R>5bYRRd{yJS>Lmr=M2teMH8ZrMhjzf zVp3v$#U74*7WZ3RQry&e*YnRVtiN#e!r$?3@xp{n37HpXT=crwacT3V{LAw$hg|Nx zvh&JaK7}94A4_yje44Z|DJz+j9FY9(>W-`TQdXv1OqohOlKLvmB&{TUX?jfhw~WIX zFEd%0#aU`uaaogsqk=!LZNGLmdsTMQ^%>VsUhmJ@o70r5ms@aS@r}3}Kl8lu-sRin zKQ7QMD7d-wWL_ad(67eyKQ8@$Mey-iu1h%K9pUsyp|!?&no6uTFa~|3N|xspd@0-?bsN z<8>$MK0S1Q*jw*h-}T7;QTt=t$HE4yh9`~N8Xq-nX{vo<^rZSJ^J(QXy=N88o0{*o zFk0@kGFtBlHwo{GbVc``>p!o0Vfdov<>r?U+sxV;+b!CgUs=C;(XprF&rXNVcYhxK zbKte->yf`s{`I4a_lEc;_N~&}B=J&lcK4d@l6RZlJ?Js(X?efveOIq*uk?f8hpE0Z z{j>X%B+DcP0~-da2e%DA|9IeIpY(+E$EUMH^M=wt(?0((%o=X_V*jOY#CPQH(etuJ zvb?d4WA)?gaq-vVUw?dy{l4gX{)FB{)8xKM$&bLPnNwGPuK8K@%j(ygzmNa@_upN} z6e-M@AwPqtAU{){q@X~WtvYA+tXZ=ctB{pcmn~gRS+-PNeZ}exnk%TW26Sy5 zhMu0@a!sQxhMTr*(A8sLKY~*rk!CB-UNmRUBF0Mfm5l%E_IEv+C$HE!vri7Ef$;Ni za`SM1KSoQy*ZHSmrpk1~;pGU#88hMG!vE+%($FP}|^KXg2gK*ZbOv+I;;aby@y)MzN>A(AqUB2Yrl zqay30l%wIJ@H#xDAVs8UM??7i@(9)hV^)ZyQO`pNtaC)v;K{=?m_x{BTagF?1s2ZS zj?6=ZYw#I(18X=sx^0eilw;TelRADWm~%IyNgO*I%?iGdWJgOvczhk3mrt;hW1;1T zin7`GNH&g3(ZqHD$EI1qcM*+(vv46R3CNWlmUuRS7K4yG$_{rA@5bYKNIqYKhcxH{B-l+OSdvRQCcEd`ohI`6@K6)Q3SdPD-DU}R z2sYS)i>wrB2nQQoO2$Y90TNA4(|D*9Pv#?9EL9$<+R~^B=A~>(fmt@4NP#&DWh*PxfGM&<%(^7*QEE3V86#N?2|y087#ubT zjZn&AOh{@HT# zY&vWKmkLCPREc;tQeeRwJRot{8UmX?y&fFQfyNUk3GnvFQWe%m!S*gnBgO=KfD|mY z(C3o~c63Bi%BLxzIHmbCK3=0J*1inSOTH#7*I`t_0}h4N{L?Ho&X8j1 zJRpO4^gXBPszm;20-56iBawJMQ6q+BOD7?KheAw>gr5ZTL&N97K4AN=$|eX1rTLm{ z1sJzOL>?k2V%PwpG~qXAFeMtdcRsyRm~=sZ;H95|&|qT|t9@lQ9k_{Pa#6r5i-y;; z=_HLhG|$`)Xb2h~5lH+f3f5IrP9pQHh&+WYhyq~a^N|4UCjJAP84*YaK(+%~f=el% zM&(=KF~m=`KLbX7@$wOB0vHw;ZqQvZMobWyR!m02|u1sK?tn@8NlaZPie8Rb{u}c zCJ)D=0aIYdB${8WG8(PSDL;KOEaQ(+}usU zm|C8!1S|zC{?LUEf2as#VJyhu=u#5iUegYwQfVoPLWR8|;pO(Sfu*t8Ha zZhY$cg^Y_1gAB&yw}(Ge>JG?0+`e+4VS^pA>pwd(=ci$+^Dfb!gH%m?j0>4(38Jws z8xu%LK<^j{!d~7!h+}PW0SR!84#In@DsByhjmJlBq-C?^K@8K%RQH42V#CTn*yFaK zQUQ6IoUO<_yda0JNJsXXfD;^@%)8D}$W{_w)vIV>tW~@5p|R?V!?>heFJp)9lUpt# z&ZX+MyLvBaaSHc#x)v*@A8{CH7h2I5cWgVZ!#w<|@jP=x^9Y}6TH>tL*%lPAiI>eW z$Mylw#E!-Q+AB?JQ?@v)X7t?j(hcZkm6dhB2SCgzc`gSk*0B^)96FF zk@cqIt0o%6gn^V5`}M>r>x;(qyDo2BH8IfcQegIG)sZ;s^xruq&5A{jUY9J`GuHBw zSBh;7rUP*x0P9N2>M-$$@U}GkZU|=pP2%XhYlv5h<7VGv12LWkdPVpKOok-l>l=VH z@d6H@90n5Y9t&`ongMdb!A9U_?(kzsq%A{f*Ha>e=@*6<>ubelM*OLB%ZK69-fcvE zBl+Dg^HY;`c>IBe)z-TQ(+3Xb4915mP&#PM97g8VC9Mpl=U?xT z8vIsTL9yq_g-=ygbQbT|B}Y++6y-C5T^r#qEE(iG_7|s!_1DnkBcmuvIOPW1p-nV| zSr}k?Xxii1BszT>0upupe2`yco;`Wm&cWWwW+V9-!DD(=b~{W%8>5BirI|5Bc9Q+S z4L&aX%fY9^Q&@gIXsE6t%U1N_vY+VCXm$^5G*_(ErZ;}LU-De!Wb*p*fim}7hC?Pw zoz@|WV7i_Pshn(8Nds4=m4*gAOP{v*~@u)9m9wf?!Z+)XiJt zg8oD~ahf~?tjhyA5xw68;aI>CKxZ^S$3qq$+0pn^LN+LU_`UuQcUpFu##fE16z_Ol zzN9m~OP?7iJ5p}Ph{+XsDOGH0S*e?ureD6TqAtT{rWd)husPdz@Jw6Y^3JSXXNwhz z(<5i&SDlxJ#bucI*QGTqZe5wpxGX4p0_=yhueVl>dt@fHlPG{_jMn))U_LuMJINMA z1x7Dc2vio&3J3i)8jlWcjbUNbgVBnnEnQI&-=M)$Wh<}{J(~0p4ijbk*B#-`O*Rt zxCLnqBoCSy{y@tnUp_nac89~Ps6cbyqj z6+6xesj}9(e7k7&SJ|IpMwxjUwzl&Rl^7TZ}*f0ug}-2W#7s0*0-CCuc$i zb6pY7hCQ~WYr<9&5f!XCB9IPf85|3)2+TVk&ZRxZ+Q_q|lTkdOZTRg<MsZR!V%-UCKp`Ggr2|zoaO}bmyFtvn_V~sjFk&PKo-R za}yJdNUo%?VXy*Z1#GzhfjNn1$AZnlvsA9b9xumqS5CGjMWFnUtH}dP1fOJ2$ptIl zgl7kPPsQve6nPVDXgr$^Xi#EXQdCL2H#&D0>O!xW9U?w}M}HvZ+d_ z;amOW8~S50Oqqiuxco&*^!-MQu0`cbM0+HnyTxJOigbKlI*dwN#EZ)-_(o3F)fbNS zED~FbPuWmKPG%Vs0s3-_BkS%SzTc`pUe}=;$xt}N&^q$RlelT#MKdE*A5>&^yf)9q zaDtQsEJVl#6OND#cPR3ia`a7}ymFC!RDNkJWfLd^8i}%o#&H3h0B?g0Kv$#zW`I*P z*>=F$Nucofz)xnsUp)PAc--Z8E(cC>a}?U%fH z8~4M2zH4xKTmP6({PC`(CHos0t?Mj8dV!lwf~B`wQJ z-3zSJ3x_-Q>jYek&d+{=ug3^)N!{32S;+Am*l-OnWWg1W0|gwbQGXH9G}t_tfne!~ z4=z6fov6UY7uf?E8Z_!a0)Qbwi-H;8VF0Rt4DlS0*!7X*q_cr3KAAt3(wesFbS7H_ zd*tk89!?n&(tA6qq|9W|g}_S5h4;b(g9Sc?Hp{$x@2joQZML$%H9FX!H94aHRb-%@ z7a!A9vc~sK8PiXv(pv0wk!oH^za3B%mtsd>l)ZahWHW(%q{TimQW0AtAn3tVOam6vLi7OjNxq>AsFA`%mi?q#u6V8 zJfqcD%$0m>NY2ajl)Sn$*pNEfb-}&uQBv!%v6$9^6J8nmlhpUJvGVhSX&Ik=Q^zLC zRr0jWbP5Ix)eK~MPL(>Mw%_$%K26J&RrP3v_^up`Gg6PJw$f6T8pV5lYC%l5WZm_1 z(w``5t{SmQ&9*xV@s>kq|Fk#&_E}uAcVfsN+%B$?0t+L3GB63x9$CR65kVDmF>#ty z%d&d8L#p7P(d_v|Wga{t&%+!#B8wOaci^a^Z15%V0{b;4ul@eesd4Nt&*;&qoat;F zA5o*8QnI-s!a=M**cmh`c~Q>)m>Baq?1v<$uX3ER-BC01*@wU~wxsZG9gdBq z$C28jG4_B}{a$;$Rs5ER0~X+b;#1~P5cH?j4br$Nk4i~MgG9R-!$NDocjr>^fS76J zhzc<5;I_~xY;+ASd}VM*+EhI_ZxZjH@g4u7)0LOv8*<2PG`YlDwcPKS$U(>*Yg&HA<#aF4V|v^rmsVU=m57usTTz213Q1S15* zo_>IzuH-|ZWSA~Vd!@bTxx~O%)n9wAjY_h`TRra$H}+fUya*PizkJgcG!`6JMB=xa zoJJb;MIBqk3ML=uWwQ^%+Mv~xthO9~GspsbfZC)3QN=;n3oJnj<}@QERdy^=0+L$3 zb2^;$U&<77*GuuIA(D5dRDkdx?Le)9At1b$yw9n~`>Bzifk@jXi&J(|J>t!dFT)pl zORhH$G-gaWp8rzW-fhq>8!q0JoOXA|5B;Ay{l4FV;~)5qaf{V-N>+=$eZQ0Ob8g1- z^omr!cAL$|{R%qut-~h{cWb5S2Z;6v{W{j~FLG45&{DqRlQ6KQimSyURxUTGr}Mze zR7^vPiqopl8TYfG&GF0A^1E zR6*>53h}Gk=4_sT7%9NHC78)Vb#DDI{2SRMdm98UnfUW-(D=FQ>S=}(lgo^&_vIPM zBpb^!fBrfeCXPROe?*kclnp%@z3*E%@FnDmUskr$_M+YoohxqK>lb+&diFHcUhUpg z7}|G8$HKs}*Fa|N>0dO~H;@=0VVqxd?^vG0khP#Z#LDu26CEJe&ugLPAaYrS2_oShwQ^YB6 z>S&0L)JCObMOY{|Kxo#jAGaZ?bu#R&Ff8Qovw6GkC0Z$gd0EPUAR(fZYUbKm5u@$@ zksAmZ8G(2|g5B});Kt(FU~t2o6$Tj#Mk&({5B?4)RaLO)?55pb{6)c5h^oP346?Eq zn268SsGH4sxv!%6v!tzUps&U_{`_Z$oo-9R7jPsA&YArl!5snBjI8Z-KMYmg2mCN% zWC=%qh>wjr?@8{Lz8JJgXp(;JP8<5M$VRtmvi8_!{Evv8HW|{d!JV&*0$Y8*`6NFT z4S0Un`#Mq7Wb~IvtxK=>?%Lnm&IWtuIJ{O-DKVf%0#HN>4}ZB%X}J{(EvG92S4}sD zbTs7Fz_gQ(sJv`C0>6#Q0~*Ht6LLjKigbMBCWt)%%5t$+XqckQ#X>$1c2~8HKEC`>PM1aeF+y^jv9#%7(S>P zEpL7CrfG9vs?#EIQC|vuSR(dpDNO&!ITW3}$G()lGAB-H4L4@b;oBq%L2&UO7!mWU z>}$mXA&&w%Ux19nXCWRUuFM823PG5+6sF-8g)FpaX!KW!%0tO;GjrmX$k|F;IPNl$5m7<>Uis~qb7EFOZ}FVBHmgEf zq^+4>@A(bQHI!Zv1u)VjzCyp89Xp?0uHR{;{21a$D|7g&Y}GX?w!XKomPK9UVXFi` z^wY?XbpuI+n|M1g^-P+Hk#*q95_tq*$x<+d!5cvk>PG^wdqKOA;S~<1-mpfDd`1QO z#l|p;>P>*K=G=>sA7SFm#QiB{PL4NP2XDFD?e}l|wo95zsIrh_ z&dXl*)eEbdOwUeyblR*V4Nh>o^Q_gim?}zs`!Fatd?|NST9YiX*}f*occ{@}bc`F; zX`h_LbgS$Q?(ox1TNUD0t`ls*NYl~mr=2OgOuq?10Sm4jols`AD3*HWAKM<&6`OBV z%{QBmGlOL+a5d_X29JVeD*iFjVa&xI$-#dC0HTUBx5WbIV6xy$K%!y+eV7PRr?h~@ z_%s?aQgW)i^`k80ThZs1X6gg|vBI+V!<+6DJUDo~{F-Oi`i%aMr5&@ZuR5-Otv{Bk zH|D$a#}_rPefuRV`#y~OrTTRz1_+-9xduChF<%Fr81qT(72TNSdZ1nAZgwT?qiay* zncIxiXU!?}GD1PF>W20WWsSM~QmYxBw-x!>3fNMh;U}wWZhjIb!b-P70A$*lS1`fR zsMN@3N{Sc{k|;o_*>b+T+-Lz7K3Q(Tf?=22W{U6*{s55=#@6jEs=(Z2wAe9Zs;1gw zU^49Il(_ik?OX0iOn2tpF0JxHE!q7vM@G_!XQ%c4ox|s>benG!Nth>?qqp6cZI_o8 zjTLxWUhL4a4!M`)Gx*dgq9)j{xr941yw}i6e6%>s$e7Wj6(w3HE6=!ZZ7*i%XtosF zYI$BP-*8E@L6}?Bnq)y=ReU@~Kv`M#M9c08VH!Fh%0b!WI_VM2KfWeU7oe^3fGZY~ z7w{7y4MLq~R+^8oW8|}qh|UJ%5nm^OH?deDz)D9sV8>{J|6i94o_}JXbTm|dc<@_K zx9H=Thibnhc=|0y=`bX7xo$o3j^6pNMal+e_{ zZn;fH^^Oz!lC@G(C80j**6lLalO9d|V-q(@)T>p(0#j37m1nILO2Wp|RBTrTq+Zr? z<QD0A!Fby@nAdqT{eMDd(D07AUE`({(OSBpqzaIuJuI zFt2L-^h&hT{kr1D%fd9t3+BDCa?W6!&T@~-YI>i#4c~R!=o8KF3DBd|$87{Wjo)H-H z`%V8 zaDUo`2DS`)zIk9zhjYcp(U7oA;eAO!#*s=fopFLGRpERT(_056x^1FAht3~sT4tgD z#=odCxVOYOJUPpH>5aU+rvpZlGOh6RI}aH-PFX90lV5zeXZRo}#KZWMjX*Xr>E`sN zaxx(+K0Vp6YP8^jR{40t=mP zgP%r1*S$~#p+{H)z$`Z-u|Ot*s{ous=2NH&7)UHRe^B4b^}J~pjbjEWYj!D}Enh0Y zOchXzBn=*sikrPEH$(rk^PP_)lhv8RZw9xk-@50vR;Gzen-jv@M^1KUGQB0^PN}`+ zFESmA4|gBX|I)p?@6qdqFmLxuVONJ@Zk?PsWo@*7wAtuhuS(magg^Qo87)v->e;>S z)5zrQEA?Yu4kJT-tJ6w|)v`jJm<(==XX5illSL|=vS#z^I=0m8V|(1$iM!UGURha2 z|8F^o5MyX0bS)Rc-tv$rgtF!R5H6?##}tRfdaQ^zlx+{>$tGmWVNvCObQ@-XK@&`0 zu|ZJgd+ipt8h7Wl4vzc?ktTf_JlqlLk@Pu$;VHgnWiXs=Q)*lU8Bg_3q{L_8c#sT94%z`~gkf%8ZpV-OL$Kvc*Dlp8dTC6!}yzcayk z!TlSRpM@2fkW}i+q|LjsHd_~m zRgEXC3VkPX3f*UPXq8q#Ms8f9lOLzD@@8enRxUl#iXPc-kB0^R(})=f+nRU0``C9q z2QxGw1p`Zm2!SOva$0?3F>4+IxjBcIgP{vZ86#6wz#T=PB(R5g9H=`gylQ8^F6MY* zME^+1g8O;aq2-S2y>x31h?!nq&1XL!&#s7DyD`h4?U{#@&E`1f*w~kTZ>e+QTVvQ3 zv!VKc;?5|W!@Zt8wVQ8+RSos8H%f0EZ7;95qJAZLnKM~7@n9 z1-*YlSwc4c83lV72O-F305ORo4_|lc1-BhBK}619z7#J zs>@3fK8{aVxXq~$J@;-MaLSm9h|6-QtQ>wf>AZ3L#Ms0+;}Z`8g_W*tLPNu!4$0@% z$@CphTwnT0+V@vW`?i29`?rk;Rbpd*~0!;>8iwPwV~4M#^{X zG$oj|t8Q7W<5rkn_H@k#D>_S=K(bo-FNm-X@%MrC_bn;&ks^fgd63gWN+bkaM*&BV ziYWLh`RT$YAVQvF)gvLk zU!=_8lGP#YeUD#_e42EMP`}R@{dLP&=i}3eRmSlPB$7OX^%qW5cE#-~Ua3_%@T^DS zXzGTS&1o7|Yu9QWzODS2#QV44oCb5QyOY`wRXLi-x0=4^A$}Z=MFH;|^JW3g0jNV_ z1Mnn1ZMs$laD{R}y<@R30Pq^utSn~B!6Q-pA8CD^4WB#8gx@+vFGc%KX_tgm`8QoJ z(V8<+DVzA2u2byLskZulUx@T=r>G`9_{-PtxnmxQd0GaElJ?|^2%}FT*-A7g2@|G(dwu~6;ao~Vj*?6S0&GZts01RPm_v)=Pl^*(moyE%dMxP}>rKl# zbzKtjEy2B_Kis%Fq<5EtIO0`A;M{#$;f9V^jEplYPfDAX2F^P9o+%MgJF`kIdvqFx zCF~h>kPf;=RSx=f2;WZCS_M6>ZcB(Dc3L|H1IXkno|Q=wZHf%I$MAZ z@|D2Lzno5@X%N%8rTIcKij@G}n&mRk( zdg&qV`J;Q?#HXR2vG1M9PU?OiPfje`EgcZulsF&g8|&V@&p0b9!P$9c@U4kzaa5;+ zFEc3Iu=8Qh*Qvi`6ZgLiJsgmH+BPJ43D)5~@%~idwt%?wa!=td&bELQi`RSz_!4+05rZ1BCA;b5kl}3Ce&;^gmfGa zB2V>o1zRD42=a<*0{1wV0uw|dYSizUN8)q#<#m0}3KVrGXxq$j4EkJ=$rSHeu`9Rt zzLA=t+FbX|OO4_Uxnm=}P0S&YD8nXqaN^f_?-!j<8h^O%UElllyHpfkIT*jNQ>}Nr z+w^^S#QyfdMv-y4tkxiFRf!F~ay(ep%pB@-<@j_kUE@RC^Hz;`zU|`(H&*J85U-S;Pt6AiOfda9&zz7=o>nn9I=(6z%1Xe? z#|(C`VZjChVg?}1>}XgLQ`7dK=Wa@6Hk-3E;+(8Dr>ASFQP}qo!z;CFZhZ^FLgH0| z#5%Lx7je(_%XO|(|cC^KPZ;gaq-1tnU{(eBNgvufv5|Ed*F)ecnp zf0M~1iw8f542P2yCGG8x#Z1>Uj#R(Zb-nIcM%r(OBz}szDWo&Xj{z^S8qr{wa?EmL zDJ-aggSGwBn4x-scO%(Q8ipC&iXdmep2g9j$VwT|NWlOsr41;sAQlYrhzJM-z%)sG zDg#ExvaYPF{Ilixl^gpw1%YG6-X&Q!dqiH2VZXH9uLSozx?$kcJy5GVK2lN; zEep{Lz900*RgrP^o%G(IH%&&e4j)E*m#pYxoxAOZI8BJvXWQfc3m_}R6QF-t2u2Td z3Rws|4&rGpg-8J=thg>r;zfNwDR&_@%XNg~gVZBGJtRH0NC0*R;1AoYslD%Uqa zjbT}gNnQRLl0pHOs@?s4nRk}WHMc2od|3Ez6Jf?B$-5pVT>DUR`^zcYFU6bJ|5TY6 zu6@=2D{iXrt?V*=Uxab`$ItIQawOf%)|Vb?zR7R98>GFR#x~xm-C3fx=8C1EhQFdG zWxAs7=H9PC(zEtsCxrIh2K){jD7Tl>fSD{8fM-*#-iDx1tQs8!#U)BeaTH2CK%C%v%| zVRd}^#;;8pf#~CVoOy&p>arJP*d}F(OVyzdYio7!Av!SNk4DPhNi5}#_CLO=d^u! zuO@yC772xp!NZ{!j=SY)+ZbeJ4ttLJNuLSBbVb2^q8rSSmi7);lRf8K-EwY6D^IQ; z@2^?iKJmT%*Xi$~Su7%>Xe{;W;O{DSPv+6Az$;c|Tj9)<$p02Fp<$;?Ue@93p!OSE zIRSJf58QjJdiy0 zE7NEyv-q_K=kZ^L;$_$Sg;U10n+-~y_x6PR2>zM1VqmO%bn@riW=Us5*50}5%tPJA zMn5{joJ8(5y$`d%TaJkMsW1HQ9h%yCIN2Q`nMrOK< zey?Iv>a#^19vd2oCEf#nBcsXqkng9KeLafiUk%e&-$ve&PpqY=ri z$ql1FyS1}UEi=9<6(t44r?@{@Hg`FEADeV~T5@S}uI}$@n-9uvkAInR zzA~P*s>bl!h&b%$x9dsF54}vcHxm0Ys|>%g$88rvoktls<=te@2C8iZn8h!%|hm=PE(Q9vW6`L8Igo5ofnqS;Mj2 zvFE&u+-i3XVxgeg?bhL1t5S-??z=L3A9bcgc&B|lQIaNld%z$*?d1|@6&3~kgewDOk{;Y{tulePz`}@bRg4*O!V^MSO;1{2<;7Px}raa@R zm4z_{zGlCC?z^ zkXx(YfZ2J;FUjhs$f%ja-msSvHh8IaKuopX}>eGCp~`vo@`@Z#=AMxIb+8)@V@3 zRD`ola*46wc>J%UZpFuiH!8}R!)=+e0@2;=o)=v2u80ru+sjB>RCa@*%kMZ` z_D+EXIZ|LpjVfq zHf}xzY+*KT3mpU@G&_61uqtR;B0q^uU3HnA8ufE-g(P$;LgenOdyVC}mer!Vj>-S&Uxud}$ zhT_fp;wrR!B^4P(U5uhP(s2DT;hn*rqT%2USx8TZ?JS@1QJYmpVRsBCq!-*X11=o0 zV(2im4qawIH3?V}@^mnHSc3mjvonUqLUgRiJY)g^FhCzlVgu>2N|gjrVCf_LZrB$> zsbB!Jh;SwVP?Q2ob2=!7EMecMSP?Rfy%kD3K#2(^|3t(rx#fD} z_JhN_bj&0nrfDUN)X3ost;!d1>92`CL-kk=Q@pQ2Jv}IF==(@#^C)v-eOE$Op4ODk z?9n~99x*$u9sP>aB%KE0a=+q%R;j3U5X(dNp0w6!0}a+8X>NJ}Vmz~)^ZqZPU#|7> zXOB4MIdQ3k$T}tZZ76#OlL5lx_#gTqw?NNsfr2OCVgQnm4F$={55c^n(0J1vjHAg3 zFt8M%#(}56!q*WZ`i~N(9j<0n#efmk-oTu#^7gpom@@=ZdxFn-zY+{|P zH_!N2kQVvCAxDSTp<}&m27_IhBZW2L7oWWA_Zwb5 z%=axj-?u<=D?`GG-LcbZQZZ8y?hCM_BzUs*xfIaAb~vuWR#hsE7~@i^y36_6)Npri*Q@T< zu5;Hr+u}bPl(%tGJvhm>D>zJF@$C0pzmiQlCGKlx`wog0pT9Al<|!Sk&aC+r{@p0z zfU!;Ec)$MtWx>yTkkjK4t9yUn8Te3PT>YRMN-EN$?@+h#lqmq z_D0=5`Z7yDba*y~9BT0!5^)|&<1+oi#xxS$9}lm~|<8vy1JU`j5OAWk2@;h5CJktqNiVR1nsMFGwluvtiT zA9yj&$J-5j!efNP2BdgWZ%Wr-E;hXwN=C1on@1vu1 zN%HbIvg%ZzH4`cKp@8<_fRoHbXyI&?&m;hINgTvC4X>Mu?}*Evt=i)sLP zm?^wJGT6k-Jb(Inlq@{daKE%QNOD&t%lHjFef)v7k$!Pdt8RR-*wfv<@{*QG9f~!Z zMseZrXz0G#r_BK-gro7GK)n=t6tEbHnB;;QWJ?O1N{R%QT#-8s-=837sW6!f_8AQ~ zZAD|QfJqe9#Nr|Cw zGU!{gL7)D6j~8K8M&Z@JuD;qmv;?CC%5aW2gJM&aVlbxFPIsggFmm^5LPU-w#_xHNj_+V$1moW8WQ z6k)G@r8~#u1Gp_z<;NIsyy9QAy184S%7e@z1FJ%%H+H58!cRDJ`BEt8u>$o&z(*?A zf$g>HCL3M>Hx6h4==qr-5<9pzy#){yrQ`PQwxrHqGoO^SFJejZ=iy|VWfgZPyqq3P zjg5`TzCpZ@oT1+r>YHvMsTAIGpHVf|H(WXNIzQ=1cVVk^P}J#dEIzfl@0X}vHaTUy z%sp~AOKo&4_%K6gmwlQ1>~U3tvyF|mga3HQRK|q=nD@Es22BR7;ol;5p9o3(FxaP? zK^JNYL(=ag%UD6Z?1US^Y#0r>sdH@BWZO!WOaQ(ae0uqDs@z3W1y#-Aq(ie{(4|! z^7}W4Vt9IIJs(Zjm*tS#m3d)eys;uCjp^qm$w(2qtI5EHclgBBvTMEwXFqMX0N#+i zeTlnQI2hLmV8-L4|B1oi6an9$U@*+W;Q%P}p(BdooX0dIfGArm7UjllXi{XZD)fMr zAtD3u3hEY@Yuqy&D}}wg?TwtRK7>1|XKkApP6*FQ-tnhcIWOx)-1u`1wgOwJ>`XSD497TN`r2zQ zaN-qQdhCb;s3T0cagHQGw@{u3lO|zT>oeX3l6$d@@Q##fz z9CH&IpW0`YwR%9OGwi#pCc?2MujE50(|5SpzPzdgnPU>aThcVzi><#|vQqD-u5zz?_d`F^+6B=Oi`SLr993>z>bBAMc68~ zfDegq&c2V|MnVm1imMvSA8@$$A2VKcaYT7p*X?_6b?H8OL7$Q|{S>u$$WFOGmD#-T zAN|_X-7(_VIu?{(d|T43nCaw{88PLTk|_>}OTD!5Nf*QJeCy+9&A7#_jvlHWcPl-Z zQlC|q-73=NrP0rrfzLyT14+w*l>;c?oPJ{3viPcC2X0kDIABfi?Bf742y^AjcuHt1 z1vC4>t}4$@gs34K4?yz~*i<}-I`Jt2AYB^pG20{;>iYR)9$nR*IQCQf!uY+f!!?e2 z-(Dp-9y`e#PB`wGx5Lp@O@I7mrBy*{Q}bk|Yfre5PnsxgFzlDnJ)gn)HxrYXFW^Ja~xi^ZQ6gi4yU@Of|(>`roQAJQ{k9AzNR#fUW$YBg9N|^m_hi-sRx}e zg2&*53JruVAO{S2I5G|{9G;B1cfg7BEKDHg4PeulSheIc3Jr64OK~nx+XvxAP4IAO zWXL_ip*3)eW1+qcPhxBQ)J~H&{)!(d*<6?_EWh=&r(N3J+HEgwDOZo*Umh4-*?9Y! zP*!mcJH7Cz$T%>ov$vwPe|+LftEj}ddL+ZIlTry^XVGFwiCgdPL9NS`1xndZln?>_ zAp{2~OUWIwn}eOL9ZuhtQ2F-rSXikU$VDs(3QO8;{0ZyYs6$QQyA*CTOYM|~y z0JaZIh4ajaR!UVWuwW5Sn?TYD6QcFGLi=4njSaR15|x zp9jYg6fss&Favo2f)0;xP@W}-F`<2;EjPhL0cOw>;Ve=#G3iV!ecllsiJD41?E>i} znkDC;rX3H#U2cqN+t zoz@no(-V-~BpDxd(t1lD`7)^<3b^U|&=DppF>=)jF6)n3r*kBhI-iSIRdBhaWp>l7 z00Tq8e7eX5Pvfs^z2%Vfwb#b!`}k=SHloUBBOH;32t=yMGaxt!?$IGtgmVGe05T9M z=f~G!=f&YS@MmJ7GCRLi9(Rb(gL^s&XD)za{7U%9$T~z2P;J$R=Om9=gTWP3^v1ta zZ9-OT=unY$yE|d`P>s=Si+NAsOl^1#{%5c^wCwIZJ=#>>At00jyJ`wvsgPgqaX~@u z3!-Wn(419Mx(0%5r5*_6W?h9rB1js*rTME|k#r@1DX-TkWz`y9*}XLFTzANJn#tg^ z%6cnsDZxqTS;%9Su%Z?j8KWF}YZfeO+1+p-xi%q0AxO~fdH9MSGe4RIZ;Ok_3loJ= zBooFHlf3tY+U~)=Z(Y^mP=1xsu^arA;RVi9c>dlcPE=n>z1De)`xoW#&MDA?RmXKM z{L`qwLz2&etqxXpT}3NVp1-g}XssK9$Zk7pdL2+jB$_~gxhe!t38D_Z0x^THAm-3K z(5zys*|5I9zqU+L$8|wqsXL+E|b3R}((wZ1kIq4Um%&vJ$0}qk^@)eWd&`T)K zi1#=ak_GV7d>$M1%K~mOgBAXLe;{&3tjnb4w_&0u)Y~S8S2DyJC+f|mVMy216rLQr4=`T~H8>x>B-D+BBx zaw@-?$b&dZ8feQcNMRzzbiL~Vip!$4l!bOz`jz7Xdu z$*=uAXe94l;LG0ky~qV#6jAUk!T3F9RpG_gsIs;ULU;0_WJN-mqyEB*`-Mv~@Ybgc z{iSte8&sBdN;Y{g00UL;#TS8TkZZ^GxC{{|z~e zGJHEn(`)Pz&g0_pxBMQ)f|H;*lzMrkOpD`H>Mu33UzkWa0p>svvY{EIAL|u{ zbx#ir6@YT{4jE>tmC6*#oB9$A=HZF;J`fN3#};i>7%WvP?jQero3GCK!u%GN~b#YS*TQtt}_qs6@bN|Oet^m)Ju z0&MVlSyLKR1J*N3Gz1hkUqI@$00j#gLOXe6jb~%x?20p{!SQpj6ZLcWH4gqnm$rJbMjY0Ss*PMn4XVh zMK|*3%W(;J-m%*aoCQ2)N%IHUk0#Ko82oELMx*z6>@gGmJF@owEQAv&_%9fl@l!j)5$ZOpKfTZd_ zaoM^(Py;qx3KV_{r3`Lu)VdCVxBzesSltT;lLpO)XV)7M+45RI|^y;PSRJoY?avwr`GyL$zX=-H4>Jc?F+^0NN-61)KdEf{M$J zH*^t2MRGjrJGsqs9r>HthK*@|hEDA1q31T}T(omNdkU(#>Fh(VY7n7RTm$nq$?Bcz zQtSH)q88A^G;nQ=fctE(19^X9Pm!#K(hKkd5MU;1KoWsn06T0QxGM!T#O?@KNu@~< zn6>m#Pn1dAaRlT(8rOT3da|`{0o4BbJhiN>9o+K0dE{q9l<}FxtcCW6ODx@nf0PUY zITY-zdMu=mC|N<_H|@UYEA>!Q?$MF-lW=-iLs;{~5e7DP z9u7@52VD+u0}Y7)|6YFqDy=E2XleohuSiSRT7G5;OP|BYj^}|H0%gTF`1OcV5oioh zIuHwh#i)Y}M^hbI^g>P3^ajP;L`~C96L8C{TSYn00kyTbr_!VJ@;qJ^k}M~0`Too^ z-ME5_#>S#{*Do1K-;iqC!F&93(IXyk7UIjhsGi!A{G{hOv>dhymVb-a+jfA)7@;#% zQMrwVHMxz%uC1dS24=Q*7c1KDV8f9MGQbK+15{Zup#3-nIbsIQgsvL^H3;NaUx5qB z^*np(c2OrDlv*Ha2Z!$NSdYZkH&mju^SVEm0sd7c1&rycpMP|tUk+~pyrL}_=>xP4 za-g}6xftL8mZ6E4)3DRlXn{qJ3Fkz{IOC&>ZR3D+!34a+e=hW~=I&r@YeHf#3LVK!?0$-;F zY<=O8i+~E^T;`iZ6L4>J>w`if`fLjkUj2ETsNxEdfrnFCnp2~vQcz57KJ_)EbsQpzde&a^jAx5ZbzmpVhw0FK!`>vNrzvEqY zeLUwOs!ppo7t2rchGB+I9UM~c1)jnLOm%^3&0UI)7w{1>VD1rYCYA82N+(yUX#{WR ziB_go=|6!=k=1D!1`lo(m|_zd;1FfDIj)EO5KZ866bn%hkSa^xJaW-Q{hHT08Ixx6 zcG(8)Y`CSsMW4;?n3@ysw=&jP1a+MX;nIJ57T_JEbpAjsWE9NDk92USS0YhuogYa$UIhZm<0U;k7HVfmhq%@K zcqLyQ6Nm{=GbvD@eTW{s>|)2?BI=^;kW+(fGkpPO@~liPejCaLD)ItsD*z_~#oF~- z0ILFF<%WS%01Wr)8ps{*ZcmoefbQ_I(xg?mR{iNoI3W1&uU<8xpIFtvYO!NyqT> ztZ{-AeXFTH4ydamw9s}I2kYL{DLy5h)6&S%Q3MVFh<5!pf29nv@B#i$!BjwsSu(~f z*;%IH1@Q7vrBvFRo=$N0P)H&gXgc`a{{#SZ+d-@3zPZH_^-(V-B1V6r z_*+Kra)RGn*23QqZ~lQj|8o^U7#WCyJpgMesc&zjau(Ts)WwyR@Rd8pe{5}jGbFtz z{9^QEVOb*TYQYlrE`8K*)H(<#!MsZhg>6ty`pW07Xfs|A>;zf+QcpF(G~h2C$G(?} zb-^#5;T!N2-n z7cS1&csEV|D#K{PXe6Vv7lr5&62E?LE7+R5798gh-`b$#N+&Qy@geO5&&rWIRrxDp z@%c3g#=WAk#sWI$%fksfqRBbvF?3; zL6wr=G9}kv7lCGD%KEM{fjsv+<9hbVBY5lQ;rn1(4RRA8o7FAupOV51z_be0lkyJ8 zZwKXw^#@l0Xht9@P$(W!xDmSPLZJv_vRzhI!&&ow0BF!ekO?8rmd>u!PRBn^oyPyK z#r?PMHVM}U=8lx{- zYMaQL<1i~9hN&8R*ldlF5MVHj50nm1fu&8+acn3ZL4uL;eEl#D77b{iGbPE#i>%Dh zkU|px&^lWu)w;wA^xk6XdaBr!o|!DAnYhtHO$o0E;@^5LivzaF$Lq4rzUo9vNxuN- z*;`u~?nMGJ>Rjr~04=QW~D-x_J!d6UV1ThD*{_UDxMpXjaa z3NumPm!k5BA7lQs^sXk*cw!;F)i7>MVJB(&PeF$49JO{IK>7oqP~843(RZ=fZN~lg ztn8RDkG(AmdJA(sbo(eUHt%P@Yr+6VA{`12%Av3@RmY398bD*R$m%G}HZv2d^co5{ z*Ip<|`4#e~1x~4-^^oaKrTXJ99bXrLya9~eZC3=))2;6MJu@^AX!`-&lv1&BnUk7^ z`io7b>kjx7Fr@bYow=-78c)P)?YJD=H#f0#@VjT_QgqLH((|vERF-qF(Xl(TEAd7d zsz@v&xCs@Eqf0W3b-oj5y(7f0Ul%3S^M8I5vSRl&=J}0?+H3}S%n4?Oo4`MXMC4JM z4lsJ#4-kx+$@z#pzia~`IUS%n^O3&1U1MN2ZS#}g#((2)egX(z5zyB|mem#YV6H-5 zJqc=Zw%F5~K*6;z>2q7RO7sNLdRPHXIx$fL)WWl!(NJj75ua^Gq8d{U70yOQBtJ>6 zrk(953zUPU*G)A5^i-V&XybW-d3q4if{b3lLFM`=+V`(#-x#E&_Ntj)B>4HiUsA9) z%@%D1h)4P>Ax%7byD@KRFD2UWxzoNAP0k;wP5FWPeXNKMCaHi#9r!dfp-%0W7**C% zK&`)7%=g;1IZW{8BcoP}nNf*?>Dnpl`91IDy4K^E!G zf;V!N)+A1GDe-unEj{|u>!Cwe_2}OTxh#J$q@v!dsaS7faaJB`t0)B#-*-6UA6^g# z{BfY#zw0TW!Otq;_RXe3D!@cpv^VkwRTw|Pps&QD^5fkpj=uHOfuMO@+ej~LW_}r- zzyBzIMc7Fl^) zM)g}x?-CHZ5G36^v@VpA*$bxGpvh|LuhB|qsH$*WT#Lc6OC|+J^O4vr28B)ej+#J4 zr6_{TJ`p^t?HbaLAQcSN70cuePRL^(CuaA+5Z4s_PODr`#fnb%qV|@)PV_YGr{4tS<~M^$7CKL#74aV-R2?k2o|%c3IiJh`Y&#JD0J@saEv~O@n8zvYJe{!~vLCZ9NuoD!K?2@ysPMv4yjD6-pAuU}g z7e*`<{?PBAe5PAftS87K-Xgkjo@5*|b~4a|-$z3d3n6I59Z-wwoodd-e-qSlzZ%KV}ynQ#ST|OH-+|jf*{3B01Pp2#!x@ELaerLA| z#70J_qfH4aS;OxcDLJ2(^o@=c2qZ3Fv0|P0gp7#}%tAa#NTRF;H%EM&h#EE=d+v6q zbp^F|t23WruZ)&2J~;!6v}`ISd1psY(cPBA$OI!07W!d^=n*6^+bOSBw{fGHNddZh z8J+)p>1^gqJ-nIQJNjB85u1&Gim{PX*2rXqMIFQ<>5PTBiDn_j!8DckCy{8LPVqd* z4oY-}`@ntsu1*>V_R(=8`jL6n=|saX6x|37I?_xi6bWmMVuUaNLXt_8-L_p#>XgxK z9uu*gxsA>9xa3v1tb%yUz%!Z9a; z{mklqMqIUEI$|L*>wS8BnviY~W^J@T;Ycm1cRF@Cb}b^R-UCFt5SfR7{L$w5GUM>uoXyk!x~0I20BEx=u*S`6uA+$?-bhgd z)dO3i$7zRu%pcWaoA*p9 z@Jj~!$C(u$!KcRl4RHryc^P-)7eRWQ;Y!Rrk=xsJfaKWsz9@Lseb3qcJcN^B%b%Xc zcZP)m28`KGf;m%iSV1@IfG+)%b*y$VX>7DPPbp<}fon9VH^R zZWS1bdup@u&WyxI;`TiLieYY?VIzaObnFhp{#z8)#<(~`XN+8as}`KWm6?LcnWV$@=Wv5|xgTdJk5 zZi@ec^rP`VGM?_l^EXvJtSp)dw-SZeS+`boeiW~K4xj(NYGnKeskXLzR?tBxsNMSo zO~Rvt4++F>$IU~WaJ)<32(lC0$62AF~+atBzJ3nA&={US695O6Bzk!*vMDxJ!U|=s2aEh~@sa|Kkf0nOf14X@P+&!+bhy6T^A-)5~p; zRaK)u>I4~{XXgW%_l2B+8|m+@T}FxR&0cC!Bi&5^ThmsH!QXP&fbH>$*hg zTWj>+eyr9%-<;^m0ZM3Wvo~S^D-NXsFa|>TTftF~{}u~gi8$?u@~093W|)BCMy43D zJwwt130qs~_R(Y-cPZ9Jp?@K=mh$;~yS>g|JLs=@*yrX`BCZi4O8|6Fn-!t=Rs5Aa zE>1Z1rK^qY@^PBhpqc?p|=g^?Ze$HqR`d))%iV z@7*K(m$a*ct8qz8IqL>3W4cm=D?3me; zWs66&#qF$_AGFf0EW3@6N1o0m!I*pWV`5Pm!LjV`TQh;UeJ+|3yOWSH-1 zeYAryapPr1$POX=p0d-4wZ8w00ll=aas{W$Y&*{Qy~c<43MT|O7o14KHm>Eo=Yy@f zf7u-yLa>g5R|_zi@AFkd{FHfNfUbayg$i&pP6|#N3TmlUMqO)uQDXWTHf7u|u7PFP z7LxEl;)Yt&;`YXh^|5?9XME9E1GKhgj{_=(o@e3QAQ8ar&UzbxV9>C@cvQ%<*lDJdmx>nU3{N?;A(KQM=q^V;g4ri_Mhj4OWxh>f55QiQo?0PU?&M3 zS&W}0cT6sQ&qy*Nq_eebK6AGJaQ~|Ak9L3^4Ve_w=y#qC6G!dB%wPoNC*LlV+G0f~|Tk!@q$nr-l#LC9@}ljq4&v9)`U z=q&3Omd(#8)3Mx-9qrnF*>HHieH1I6I2yx|B-0emvL`9gzfUz%>=llx~)%}P!wp4xbB+r@Kd z6?Yub0Da_J00qrNgirCUBTMy>saK~^YwamuSH~G(s%jU1$wOaJ-vRwhYGch(?jij$$N> zu!og}9M%{=KCS!sGLHUwQeeGRBt$6+{e};87o0c54(VML4CBHDCEVvs9jEOb z>&C&XQLG@VjDZq(r_LU|Kb?-k1w2=+B`J{GlgQJYJ1x4s!=LsV5)Z4A^lZ!%3O6VI zP>gv8KE(aeN&g#S-0^a$Rs8KdkJ8Z&=P;UfReR%fx!;6zK$x@;6={rVCy8ox@l@3; z`_hSGx0QUGgdGx9n-Kl>wDi^|eQ07I$|K|FG87o@qOTH#!3c&v;^XWTD;7s&N7KB3 z>%}$Z2g2_#B{3NT5^TOvfnODGiQKm4F6qO?;Ho*jQ3C35p4(h)Clj+g+N1PJ)5_HL zpbiMmeKburff_03{yLYWSiW~UIYeWndXV%3OJULWyV-=iaZ7=#{)AdRIk@1X^6cs^Xg;i46i_eE1s@34CUOP0q4$&sr_&s#{=z(OZz98Tz(L zSdKNRxYdsMHZT^?Q=xm?GiQVXx90D09y_QEQIzk>iow@vSNfC+)!N0=$#cJ3;OP7A zR>2ec79ffU!*^M+tA-*%LBR-@!qtgPw6P&i#e|NGFlo$!;L%Kv`1rLLeJmRpMh_a% z_u>hb4BN;s+w)2?7butNwWcOPHV2Wpk(%%7^78}ynDzoxWgxa=7jVr*?x@Ov1IQP8vx@Bkqg z^6=D0yqOq7qahy^E}oJDy{Ddt2Ax=WX{NS+Z)s{^jI|4!9{E^5@Uce>D?R!xy(Vj? z_f7{arARoNg=BbVKh*^iIrYpk@U%7)a64=n?i|&Pw2mJBZTh#jJ+H9Mu*zZ;X4+{) zw4UDpVD53|BGZ-IwL0sxb<5IX=Zb~t&s+0f3GzJOZT_KfAV0rc9wR5{wimo76i=+< zq#Oh2QGi{Gv!rS{*EvF*u(95kRc=}H`x&q9RLLy2cbG?JqxJ~_nSeti-Df4lMwg;M7t5Jx`eV2E}wWLJy>X^ zRLS$bPP{)CC1fUQX?J?gNkE>-NM{x7}?ubb~6~j&Y#JjyLIhqYdReXEZA7Pp+ zec1Ir-k54MDK{k>K?KlQ3v(}8q)i$<+5_Ac~d7y4rsnX=pe>E$c_{+1%f>66202MHFP<8A^k0W<@o$XVbD;r! zDj3bEHq2c$oNE0Alm!4ClSsTECf6E00J&qEd9AVPm{>!zi58MFtU9g%fBr>9rx)msC>9dl+ek_NE1>b=Siy0i0(gh%#zmAH>4r&1NX5C*-dbvSF_2KD@3b+AQIz@_F=$6S>bBuZV%jCqmx;0IBzig z;B;!>`L4%JTW`{d$N8K5>DTfA-_&8$WLMr+7k(Df&d*z=!cKJim^M z*cvt4$9)`r>`L^`?wR{A-7Jw(->8q~ze@;W8lO+%0$Um5`}$Um#5~qj?upEVor&u{v896wT>hkTMDa!Lpie$XsJYMY5`GNZm4RkNX{3-Y1YBAsaRg-L5`A6?Xa?R; z{*#B;iv6?W^p?#t)d5$0-=$Q4enualls+Ts5HkZ$m7_ze>iU{2JYddx6U*7#_cU@T}!ycim$b#=SDCI zu5gB-29@MSd`}hVR{G59PxIe*KH+m`c|;*65LOeTk6SgYV)QH{-l#1Jpm-fKm2X^s63hHIwQU)sA&l8`HnD^7zSuh9evkL1Qy9W+Eu3(k&u9Ei<@dN6E z77%H(jVFH!LEbM4@UQ|u+C0P9%02# z8R8k;J)AqLzu*(?w`*5JC!VTcqaow~2%>P7&aHeDpl)UAhmj={6#TMzN{AGw`Zg#4 zJ=Zx~$X65VPT(tj82omaxOz!4dzYI|(f6x?c12&}&C9jro7@>PGB z_lJ}Iinzis?+=)!4VsrFRhd@>YX9^|qp&pDg5Ec@Z40ajeUIoiTH==a>XHB8WS!c& z8%l9GfJv&$yz9{GVjWpV*r$`JvuSFAR+9kpuo%&K;LK58x(jf$iT^GM)ey@J#@EFt z%F?eeY+e^R&kNH!LvJ#mc*pt(=LI|xqo6$}M*Q&|*F1XMSyKI}rSF~Fm7PdOb@6*IFitl;{h$wTM2A*MvQYGHBhZu6iz(-&&yK2j>K7Y{fca6&rPE4&SyTn*;H>^-ZSX&yt?b1Pt<@xNjVWJ-uI=>3BOF0E%uq zjw;(btG^$QmE7OeaD66t*N}$F4h{dFVPb#IfU+%}cyQDQ#MO;nuNnKI1cV+@ zY>VF+E>AFdMm*y={b@J-2YUgsfeT8awF{D~Jj8D9^F_iPg~)p!e|k2dkCepVN*P;Q z50wR16}SZnDw*0Ixfz7sSdjoHw*0aMz2yvnpfgI&Ht=E?P8>Z!uSRED`5dIw_r}Nh z9tFn@7OB5_p?0?Jp^8fHCLe7YbZ4y~Vb2m8)yxX(ia5H9z1a`*+t6?Q$%lx0@FSKY z&|aRfj7Xsjl1Muq4hHN9a&S4{s9reSm2?Ra=0Y<&Q?HD}`^dW-KhyAu)@=rK;i+?y zX*Taq;I30nxK(Id&X#5m(VpP<&TUv<|CPf=cs~M_=W=vy!0VH@wt+j%H?fqowa-E7E$n z)X^y$)o2c;r#h1fbNlS)OeP%76FxDAs_XclgMhI*>7Gh008kXI`2`v~W&7j+h0%p) z`q|QoGz0uw@Dr9n;DgWHV>P#LrwctT@TAq;$(s72Qg^qZ2IrC!H2AjgH!YoL(tS!p zm*k7vOi;G6W>wyqfBRPkei$|9(ETyI0)L4`KMrtyeX1l?m$vL z-b=*GUIQ)2((3AKa`+H~TBe7)`qT$M=i{5CdzA`Xz|h1VK%zyiwT`ozD>%!Ze})Jx zW!IPRL#^D>$WBfNnFqognobPiVfN;7_rsI|{D;kL$yz^^(ksZPT+B}#IG<8VyR1>S zT@$~<-2c9rX()fvuze46a&ShH8U^o*pq7R-5l)Xh4ls5+0GitWei;Jz(U(|g_ z8r=N16fUFPK=)7t;JsuN47}oOXE{3fVJuVBUspQHBx^vlvrCFLZg8bn%|&nqbuLiu zp`}lsh2C(X!K<$z!+DK@HutU1c;q94eVzOHfgtrteV?kie0T(@ZftjBpGFt_r^~_Q5|+@5g&w(MQD8j1 z@|`<)f+ZY;-$R$s8>;da4nEVv@_7y5qyajhN>1~Ew#InT5g3*a-nT=Yt9cE~oJl7) zBtcc|-F5j!EoTox@6}6hF-I$o)8MWC0%krvPd`Xd9gGag7esfZ1sb4zw28OudbLZ@ zP7rC1e9kkCDK1tRn(!77R4pUfU>pPi?_+aRv@+5YR zt>l~fCEPt49NMxXE)g(Y2;u`;KU(q68Kb%F+EYuasvb4Ru^tcX<^?%52%ncfanaQ? z9y#apbc>A?B9qI67XH=KG<;=AZd39|epo}x>1>10nq2^Yb_9M?%gU^?9*~m0p=kVS zCoSazsSLOdJyez!w|_q?yTt6wuh2x<>u=#$tGV6Cko8SIfE0ioPJR|lCcD!6?H%m~ z50#e65?zSbdrI##hzT8f$Qy7xW2*f;1r)o_A4RYh$q7`cw)xqoQ$d4(Ag9Bm`H7!PFYIp^aLQ#7xBn7^Atp7AV4I=bY;GU zm#Wx}UOZJ<+HkKCTj#EP^0LLw)5nJb>>PHS9a10gQBSIH0U%0Khk)}^ij1vou$RJU ziHOq?n*_y_^-j~fr$36eEQPWUR4m{4@j?somM7#1p3>g?D8g@E3~ja(%+4`Vqi@J< z2yqGCdXCxz>#ITr7M!v2-A(`86@yFP`<4|^4V}aKU4u3jana4_|;+6mjbQjPmQ_W`ZJ?l)B%cVg;Qb~>Je z{tmxU(7U+evH)aXWw>Y)cV{|j#uY56OW3@wT#930s3fWm{aWVFsfY!$WMy5Kjozx}$p37hw(D~A96IxCV7zr~lQLK$eXBjT?3=8%Te`4Oz{)i>XMp(O!?3kV7%%!ta7gN|*HHJ|~ zF8pxyhMq?SE1t&X8LDITBgu1^)@45oFTWLZcY9oSU{f^I0=9H-nHS(c20cD}YC=&M zWgw}hmo?^87=#PO$a%JJvrrUj4afl^)6s|&-y+!uY#kggiY2A~T2|(vBlMw3K)6v; zv7H<3EDwHk*O)H+CO|k=0JRqE0rOWtt^4`Fls)SL4W;050UTJf6lVU26I_Sf&_8(j zN;cZZwep*u$tY15Rr;rMNu+u;|yo%O#z->=%r4rT|?;X8K? z9V^baC&U{`;*7q;Gu`uwX0F-y{}6Zt*}N7h%2#zaHfF>&M=wx@+G_V-;b8c*V+wu; z(veu=>(V~94>+j}_Jo+@=H0#>uxi)jqEt8B(PD6AbOZ?Y>gxsPq>7Yc(Oue+sU@6wevmroP% zikqz6m1`)o(E_A3v5QbvU-Ddknnf;-JOOkCTWs>qxnHMrHx0gB7GpOGFuP}HkP4-j z)q_)={U(s7m(9!>ZZ`Wnmpl>Hu?Sk2sny_jafv9-2EiiKK8n0Ot8xA=O8v)8T#Jkw z3&x(30^{=AI%YD+ei))KxcHl93ys~RJ!Fm#2Z0Ya^`sH)@hbn^+>ZG zSNKSJ={8)L=uh$;qm?GQ2F1kBmYe>7^{b9Qus?zfUa7Qb9T08z?l+(NXLkqR6={=S6sB@2`|kj%)hneyWMi@-w@xx_Cem~ zEce|S+X&JOLQlKhk2?d9pQ+1xb!*@F4ReLd2%LC`MGkf$Qh1D5V&8-wFY=a^uN!)c z*-nF>rRYZy&L#cy$Q1pVPuy1fMg}G-bdK(6th%z8ew-$R1+l^j1%PGjfsQ;-I;}(n zr)i@<-ln>0c;jHuY920D*ijP!=2K2$ygn1(ssIZ;cPx ze(#cm*|ha99C{NRR*k+sl}x9qe)l|C6XZhH=jVjN0iG^|onXha^P7DGi zNY4Z3%Cxy!1O5kONH+aFw{e^|fM~sZl?Jq-IGSE%?(JyrgoM^TwRg0&#iQkYGyyLn zI5i5Ki07~ypNO&8ELo0X?4%1itPL065RgtOIO_sz$I@Ow6B+eaq0dX*dGSKTF**aD zv~#Jfz7-<1J{kP4*9K$4suPvV6pm*Rs$%F&WFIRSPUJDl%zJA#A-&xE!aU3#V-7r~ zr|*3xp*dHj=O*P%l_AYI2s%wH6q5&fG4$qzxmR?>-QrNh<{|AHP6u3hCH%H%P@C-sGC|Je)1T{! zkb%2B2>I#6E@lk3d7SomZchppC`je+Wyx~3bylX=d%=(+1YcOUUBy-o6i~K$8oZwu z&^l^~-rthmTK#fa?ai?O-S_co@>1B706z@hN!6P7geLFJ<)DLLudXC2=T%z`5p zczKt+affvtn5TUr=UtFC`*ov51zd(jneiY3u`t&+N2#FAz#szXOyF*J;6npt37qtrUQR7zv5ZC5P)0k8hW6c zx};#kZ}kj8#5pJl&4mUl2Kp;;3&VY9a|S|B7*~YzS{tzy(mytv3OSOwxAES05_INq zi~QU#bgc6b3&V=cn};LAZU=b8E`18zr{NSFr!GOYDxl~yCP{(GpZYklUvSvjUi!?1< z(i^9Yfk6)iDZNO!-|N}kB596+=Qz}0?L&h@ zTdR2kbd5%Ao||CrH;*iX3>!ijV=E$X7hB6$h)$cTm(TrkHbpWgb6v(aS1f46}41-@>R z2_O-z(Are0eZA~v;ZMQV2}h@60~SCwUYYU|J40X@YIIQx2({}DLKCW zk?mJKjGfwxp@K`pyr8)ncduJNP@(ntAjR(q2Y{9R$p2s&(L93wjn5-v(?1jMy+>{4 zng3Z?;cFluoX$Ar^njO=XP(*DML0srU6}2m$E2Y4t;8o`sqOl)D>0#LeH!Af(seNZ zgFdd~^?JM9#Fqs5<%%w(7hp4g(|J^nfA=*j@R#)p(ZRYtC|V=u(On&~y$cQOie`TG zKZf=huT;RyI9+S)esCh#UHc!YNM<8LD-jo1Wb`Q?Er%xfPLMinl80HDG#1&O0V#-y z%wg?$knAf@uRP-M_+9mPDkB!-Bl)m6ca1-^qwEXb2<9VTwA(d4ssuJIF79ela1a@9 zU3H%ic#G}N-oFUw`~LNk0<$Zz3he;+ttyfVDI~M4i-Zc3g@U8PJUL@t6mb(Sy>-oIeegXN+}V` zo}KZ1vuPY1%mhrI9e6yIgVP76F?Iz3$<$?n6KJIW>C~)8T$g|lwvu>_ARuLyTgN$p zKOhxjS(9jhYUM;Wyn4EjNZhE653sw3&YYSg80;b0DZSRlZ*a7`aeR_NYPu_lx6VDm zrIxry`;{3H-YqO2z_cpwKT!L6h&OpL=vK7fv_`wn#PMJ1sjA2cW2w>>Y;}suIrdlb~PkEJwKcj;REtCPBie*Q6i5PUjHnUV2%`n zBM8OZel|q};#dB<`5i1(Id`ghkZf^{sQ$8==|Yp$u)U6dYP)$#s2|G+q1GA`+KKgi z?zH==XU-Dzc^*vJ7*^gr#962{u+w-hTr3?Ki-sw?1>ws39(<~|9c*SJh zlYd?5O7Thl4{gi;+(IUa5J>r*G1`ia!a(d+)m*M`y<24%yzOd>py2$N2FO&oc(;(> zLT3zD;`T=5f5Te%(hDHKmmRiUKtoRcM1E+CIfE~(-@L$I&)>#{;8=;! z=m_2*s=ZKB;E0TBi4Dw+^=LyWX*@sto;Wd$oq6Lm6*Y0Fw(k)=f_wg>@=`$GSpN{k z%59hg9HY;56_6MFpO+#Uyr!uhA1R6@*S_YAPjdL2^s$lrhGUk4q9L+tXSSamhFaog zRh%CU@LG>}uP3yvbRSy<63(V^G27A}`DW!Kr<&T++i{px;qqMuRnCKD#zy- zQ<6_y&1~SMec*1;<0sRDt(_-edzY}g9+HSz7`07yV}k;u4%teuo8ZbLgSg%vWc<&Y zuNs6DIILG~tFIui#qRo|6zSeAqb57dFF0>b*f+eHKqJ>dW@xPQ~_cg`!GEyeaO9+r-1>)mLw_oDn3; zp)+r0tAo}4p_l$2qLEtX_5cyOEPj5?W>Ix(obkR4Pf|f_6U~R77P4DhGQ0x-oN58un~Eq=+*$Y99>H~`JwGFM;@qMAmgiZ)HfJ`%b6`qX680ZigU-$Y=GwrfE8RW_wzJ&kFL zD}jdW_%Uskup$l+h-UcpOmtJYug*MUw0IO$@x-t{3Ug$lt_C>&Tf0K2EhMIW1f|yaB2JC%^On+W}?xQe%AJr(gkB2#Q`uHn9OogIK zsWyI?o+&u_Pm!c+q->sC>)~$w92bt9TQB`@2>@bDrl(ZToV;N!FFkd$?unAU<4zZ% z>81+<7I<`K*u;j8`Bl)kv&5DTVUaQMk)^POrWeDEhcWTxcgAVsxuZDGllg}pwSW_q z2(_^NrxQF8MyrvQ#u2oQF7_dmATGUDz|x2 zLSdrZqap|;&(kB_p-fGN5i5{3`3<-8E_vUshCjb4Y^@0@AxAywhSG|BCqduic=Z%3 zXljVk(?gHMKNzFD9-?Hs9&6`KuRb+oCxz}xVmMbaoDZWuyr#gQ2PtL2Xvj7nZBPPF z3q(E!9Dp&@({VTv63py^1D8(6(6h>|T@k<#<3o@s)zi)nW^RM8&*AwnG`7BVx`nn; zWeYfigw)3%wD;8R{29rsbPOGVRVBcGBYLzy{JK_!7xMPzc29*Fevd^&eYu z?flAu=#j~+~H!s874{l?`-;R0dYia-ErD&|OuhrH_Lp>S+@L75YQTt3hf6XI`I z@&K)WW=RnS)y@0x#tIa18?*n#qpO*oJ91&W8ss4$)|Qe}i{1Y$HE=#>@w?tq^tX>r z%v@hr?3>x%UmX2T8`k`cddCX2Z$gDuF2CErGqLK zpi>*P5>e5S)!~TN0Bhh3D~r#jxiRgwm~SzA+^s%p<`Q@k^irVrhHij*!=wb~w(n{QKXKU{usco^^hZsA>>{%?sl4`CpO*&tPI&K4)3+Dg z$L3vnz_t!c19{rWgZFp?0qyN{Qh?k#JI30KrHto`bq2E9g5vFr_$HDrb5@%N*ARL|fX7+sJ zgok^Yh}X{_DKH03ho(4vkyQv1-a7r%zi?2_*);R*`3g#!MyUo%GOIy5LBDnVEiBtI z>bddB)>wEC1%3UD6HWa6^F(>ZBhT8;U+vp;N8uw#!XNfVX))^2?;w7L_HOfiBhdMp zxr4^%>>ML9y>a@qQ`MJ2N2eisL&d%AQ0J73{{JNu8Bpgjfhg?&5ss|9%rz4^#mpD7 z^4N;+`}cgC$mUG&uH=fmU5KxXca0rv#Ie$0S4-#zoavvzNKOHU){9AkWRCz+jyt{{S4q;L>i-y=wHu4yI!{^+7QQP;kGJx#pTJ(Pgi~tc1M2iM`mz3ycSX z$$XbFuEttogHi_!qnmdcc^`h^8Lw!xba2~+LX6LU14jdv1pv-I;&m4gO>VRW1J)I$ zFY4evsy5!oIu=%s@${A~MWieYA&b>Ks?*BjFLv*E5$S4_Q zZy6^XTSgoXj(N;7G9#N~Rg~;F2W78gWbaK^R)~XRq{PK>a0pq&3El6$zsG&w9{%AU zkMr^VykFzFu%ivd*vx^%4^R!#d1Tv%@(u?(9$piYGL|7m+PB(D4KRW~(xpMQAdHLDo9 zGY7GN&)HCx$v{5pe_Q)X6WGqtil+rslK*$X-UNN_7U<7RKvgbjXsE6;!2w*>mB8ys zaHF?L^k8m({*=|!z{X2p-$U2Yj|VOcu-0I(uj7&w4Li;j>$EN61B+fTj9Ro5;kOh| z0Rj(~2yfd(%m@3_=y0pbv`8SEhWmR%5_Cj5_fyVMu79M1V&utDq8F)S3AvcU{$^9; z|36*Q)G|K<^LCvUpir1X0G|ff05Yg)O4oYdgx+uD=>wNm?r9H6{@0$jjIu{@W_+q+ z*r($z(|wm}1du`Hsho^iZpLT(Y~f8ZiKs>h(67Nwq?7zgpbDd_YvP)5GICkB)I9?R zMh%|GZSA^u&G9_?Ajb2a#aS!U90vtYrP4qB;4ik7loRruTpi9^a&!Q;yM!v@__u*X z6ugt5Zj9WzRIXiD_NsYx31%}n=P*rP)QtL!rN>AS-?O7oSNWesMB7 z3%z)e|G#5GBg7P40Fr*yXsn*U|KD%G^QkXx6G?zy>RcaBqyjWA-d%P|BzJPDTX~nm zwnEEjh)Xj9Meb|3+vd0Rehm6Q^=vk=#1mXB3y(@tmVxye_n#cF{og^)P5eGJh2Fz7LGy-wO?+yo2m2{13+Uj%_?C2ilo z^~3D^$-XctgHKMg2u^xC+bdt6wMt(ep+_0mOwOC2+OD^98R|suA5r!y!|)bwS_ehQ zNjbRvpF6sn`;_F0@5kXLbIHmug~Yc0&1`xH;~dM?t%j&+gyO-5{7!em0`~U>jecr9 z1uzXgT3IX_-O!(d)46J;sr`Kz8Y95A_W66U3qqP^Pl4A2!0xD@-hvcgem;WX2e7Pz zEDiM)`{dIaz;W5Hcj5d^OtsfmSPDwG^b+YT;-d7u_0drL%vzGF*$+AVNVRQ1LOtF< zzi*u+_Wgsc{>#TRKB%@Co=-dSQ2y$Z!vUt@_OYZ4m`odHmjBg-LKb!LOl#-=oth0O zf!+3CfB=T2lH=*kYBX#oeRLj!9+i`d>Rg6>GAU{Jv_psqIGDSptDEB|cD^JXr{P47 zmQ?GHSvnW-4CWYV;R7(?5-dyX#NU#rnl`hDQJ)ZMJG zS)I_LZ+p2AU#IKv{=#L)n%mSv*iP?r-!}IsMKUNWF*aD!N%S{y#xWV4g7plGDcr{(S!GkscxAT?M2G{>`5XnM!)g@nhD!`mLU`NrpmYT zy9@HuDiP4rcRFm&yk~w<_9G>G$zfYA*OHYH+c%XBBXuLRZ7SdK!l*sc(SB<6^Kt3b z4Ml+_sKQ_S=!d{^%IuP}L_={qAoswMvPhHd9<2Xc`?7$2UPg7>)Mm)NiuA-sE9A=W zmMplf#pFUcfeBA3xy*jt3#~UoR+{*{8tnd&GMD>o9^pS3mdBa!PS=IDEA9ISc7#_u zgwfACvl;%2I&MDe__BVozFqpA&xse#!+fPK{tiSjz1N}|slI}AmJozGs{B^A&bVvf zlrC1T^{V+|ni@5P;RQ8L16beC{4G*?mJGtzEN57EU{usbm*~VQ^UI{4Z*m%V-~C&x z!Xg`FBJ+HH=dtA#btKG_QstT`**W zfwDu+&oOkZ2)9;*CgI2-Q(IDO9gK25;LWQ)=$Dh32v-g{KxB>K;EWP(IW%uXVPZ4z ztdE0H6Z@Naia31K#46m+!r~5DO4L&qwn_VK&2tk(Ly!(A!IYv>)c9=J&xDOw(|G+6 zMmIlTIw29Y5iQ1)4!J6*a^~RMxmh#2_nQy6MzBebuwHslnKl0|uDIIO7 z;SS0s7K?^tW_RpooU^2I1`;@tw*YgWk!1yG7{(y7ueg0w&Zj)6JG8+w@v~etI&qVE zdd;GOlfLd+=)lauTI0-a(`*rb1LVA#lKt}Om|GWRZcHIb&=-RAA!A%BXL|m4nZfK{ zi*x$@^FvUdB2SYbMZ4}r!PW!H$yphhpq$h(R$wZGm3n+*d`+$h)B2O2ipGdPid&T& zw*T_@R8-l2G(Pox>c}k-noEQ{wcC(K6?dk`;($#lH8aS5Rx>_tR4mM>K@72-Gh)82 z2|phYA40T*Ij2+x!ORUTrKac+{^rw$&F~17@Z;TH z!ci3>@$Cd)_BtIyJIRI> z$;GptK`*gpEc#7A5g?x6p2BeO*@{ujv^M1u>EOYS@I1CIYV&{#B6_+)akrpl&&2CB z>otbp<@pz%gIKUv#YXv5RK|4B=dWi1n1-!srm=Lc>gJ#v?pLDR;^^;NzdE_)O0Q1ton*9FZXG9Ovt@y}=_E~P7 zTwqaoiO&3x)Ozsb@HqbMblB0%12GRpIiNOzGVB~GaeLXRs&1Y1j)~>t0OicInSPT! z-tQej_S@*)*9&bX#cPPKOHJf%W!~<#Eja?`Y)erxI86-}x4h^dj7bQm)7f4L`?ab7 zYQIR1&vaO%Y7HNRO7~GZ*4<6+YhE>YOfik*Mdic*{C&4VTckM8Gp3JNfwNr1zln@8(yo%$HLwt`CKD;-BR!%;JFtb`3IBP^R-=|?!OQ+W~U~$gW zv&0&~!Q;g%?^dHnWx69U<#d%BLLeflw*D1FNCz{!%YTB$9I7gEhS`Kg*v)siBr89f z-&Y{9wFs%DIaGpN*4E7&K zXosIMh~j(phO~r`mkgPr3yrWWT4r4`3v%0eNV|w0opPnF)0^`CpVOH7M6_(C zoKtsanU>bd^RnVjTSp5RP+|g5j7pNqThJY1jN*7=)d~Tggylg3@@TUW@Fisy=Z~hz z7t^doIq?|Z8aFUC-!E`ZaW-Q5z_13a9NsRTi|DqEPuvHaIO_LlnxLyxE07OU$-~ri z9i5>TyxO*G(7v$U%?~zBA~3XH4?`;mA*8Cz7lLqGubk2;VF;^s-S+mcsj(mb2?l3u zVaRW7b9jW1I|^>F0=5;oELu81-2<=IB%7{@g>2@>sjx^T${1WX$=Ip z_#tdZnWY>#pquD>qaQl+V35;CYH4Ss(nFc8bbw+n#d}XC;K}DTwC7R{?vQk{*l`%q zxrh%pEHL3@8kIJX(i@dE`&7sDUc=9i0~Eqh{L98w)xr^($7#1vVlp}R!s}Z97I+BL z%9~Cyqd-Fem~8riTdT3T5nnA__<@?HW~ZboBstO((PJ~?w(UyaG%gD(uKw&-yy9yMA|Hu@{kq!1=E5~Em>xH9e z-j6eCVnXL;zo-P2n&P=5pKh%j9@Dmq7bSE#hX)ZdWNI$uA}4K~W*QKYa^FMPdiBzb z0Sib3IZr^E1l>YzxOTh-{i9vSS|b?PQ9-kLrn6q*v!MftHhnlLeAuT0y!v42xeQJp zrTL(-9G|HlArc1sEUY+KxS`;D24QEP;sjuJIcdbJ3*u>3S**R%eQ%xGd^r4;t4>2}zwzYmA%JgRb;B;hH35joAGCPbU2rcTXNsirQ>@$1E;Y3A6B z_f2h_*)1aoUu|}~ZzT!Cm8@FZB1`J@hn73h7BCy#0=7^;B7TvQK zF!pe)=jP&nqdRLm168iz^GiLyHJDr@XT z<}*{sZCx>`!5Wdi1-kG1XqtP<3J1{pMj%}N8B>1&ch;$(LS*J|mDv%z;plO9OiYW4 z^{0l3!D&*WA35&dLY1}NQS?dXOhn6u3TN_o1XGABHX?q%8UOiA^&t0?_iokl`+Vrn zGw+Gy9ANbmc8CdE;VR!s|9$)uw#F!HT;6bld_|@NUL7je+nhmEwlj9Fy$Gz1CF+XI z={p+4Cb^sQkeE|b6p&th^Em)9q#g4ZL$gn@R85Rzf zONs7g=@T2o4VC0cP<1qvl|up(&2A1Nhgm1e3ycN4=tlcO09Vvr#jm^y^~lD<#)YpT z+kV55A6uVL$r*C+6dXN9Dv?J3IY|B2O4o`#lSNmpTo1ya_PXric~5}!R<`8yOk{Nx>LWMHZ7-nmPAXEiLxh5xES$^l9?2meb~ zA%9HV zrZtqZtfWNt=%%8qu8@)53sazq1@&<0WR2pz>R0oA|M0kdExBiKa?FZ6AaS?)fxZ1~ za@5Fr@Z~s>TeYF2-H3|4M3+PEEMS-TEmHTyVw1Fa#NDua<@#0}zN6>!Sa)Q_A{Ka1 z_|+&KI4f+1UkP1EIGD-E;F=#(`n`(?5Dgtzez$lP^F8eIvX~LogZ8l(*k(X{f&~t0 z0i3?5)JqvtH7Zwm0Ci^i&qMajERWyfH9#N9ZJV1w2dgCaAr!M%aMRD8AaZy9nY1rD zP|983{L0B|3N0@%HLAmA@9=VY>~DnaHB7|XxUl zygHjPH{z?Rau7nMaO2&(XM0aeR~kZ2^IX0pbEo{MB*$hB&fvfA*RUD7Fz@djuKyq| zMy;*QVTQUZ6#TzQCH7t?ehXw-!4c*jZ${q*ohtdh`N7dmV%4awH?B>lh_iHA1DhWMv$34FG z7A?u|~aC7`J`doPRNNO=&4oit@0kFL{r zrN&q1GzF|xUlqE+O|dKvU_(h$3(wTY_|T>W(17=sWCfeg5f_^=euYEg zI?N^H7M#GzgED2HeL(}EeSrer2}g@_exql)$rBNg7WnDG;NRTb2Pzz!tH6qBafq~T z$oDH`Hh%6S#WuqJoWjo3?oWzxvg(&zwBxtEZqSXlx!KL1eN|j+DHYCDAipDpI+5^% zsKI1}q1b^R0KI$D(f_R_y^-JDih2qA4_wpDmTRzm!7<7W`}F$vbOyJ|3wK~(4KCLi zkkr-o7pz5l+yp=YwA_3tI$^!zBsjsOlVIMg?IfW2mME_dEL0{CW$FS@!-# zIOIMvlbB^baPKvuwFH>b1vL%L@`q3sXKb;I1R#JmSfyzQ2|?80kn+Krb22uAMah1_ zGw@8gav)MuHx~my95VyN&K~~LdN_A?Q06yFKaV**>|l3&vzfLAd#JFt^|}TQIR6yjSQt0KIGmFbc)*M;1e3^>Z4aJL(t%R1(1E1jTiS9f)%7;l@V2 zZ;HK@xK$>Dw^RseKi&uc@A4=`mHq-Smt{36o&It9=I8H|v(|$tzx^T|)7R|e-@enm*ji zA8hq##8P{u-@BR`Ges%1+QN(7P0Y@a_36!VOoDwXt>)srY; zu?jL^?>v7mvD;uhFuKEeB?rJz9yb#Y20+t>3F28^(G?lGG+2{O8oH7-sI`BRXP-2j z&SDA#CF}OybGzX-i#lNe;P15qX%9|+FC^h4;!Lk%c>bv7waY0EjrrsR-O-14RnXn5G8Y&Q<%WPUpWBh;$l6$ovw&r8-De#Rw^Uhlj zne83<3S9TrdX$L?U=`|D3Zi+(Pj!M%{y@el;n$MuCP$j1r*)gmahioL&cMj`^;{GtbN5kZt5bS0i}UJGZm5OMYsvYq7rdn7i64BU>v3R4VA%&B%JXlJWONJdEKEo14u$v41-GMGj zE^TpI+vt8C=o$wuAg2aif)+Ck_-6<^Qwu!>hOtloeqc4Vi_vPPwegoUpSoCDyUE~$ zSe#L65C$r0rV@30h@fu$Te?dC{Hmp*5iz5o0%r^k(deh4gEQ>)0Oz z282K!j6O@=Xu^+f%%FY7pqT@KGH(3&W>#7twU*&6P!1H^aZvX4eaJ;ac^1&MM7YvI zr1oY1c7gpOrIt^4iIZf}5Ge@*z$OP?5NEWc@(O^gg#J%!;+>w9xmGs+V*ZnXt_X?V z`3)FwMHW3D?44{>RFb`LDbA7+D*Y5y>;8kHiP@X+<#lb^1%gpMAFFLrYqIQ2R1n#$ z0kh*7-1kaL^aB@-3AVa3o|)KK?4uRu=lQ>Ag@EtZ1oZ!70?>fit>QWcTD~@8;|H{< ziSX13Ve?pKBS<_=EmH}K_3}^=`eXe)Bj{}2{o8+EE?T2}h?+(;FotAi$de%-<4$HJ zwH44xi}qg+<;Lju-nQ1mFF+XejIb!MQH*^qPs^o%v64*}Z-@p;?~>tmJl2 zxnZLoiXgVBIaWMV?%;&m!M;69Y>c#zmW$iOieSk7S?PI`Alc2zZD7S)OZ`614DytbHoyMEdu9f;?Dhws1veyA zZuHIEc=T4CPyCbY$LWs**>a4k3ZDzAVT!wTCJjsJ8Q7PpoG!)JwAL z-@Y`2%^wR$(-XPsfAJz?<@C2#`Tu(WG*k>m`I;ASdbb1uupY7~xUj>d88tJ=w->v> zH2kTJ$M|)#lcqpj{igDj%v(&fVC_o_glx>AKGUe;@vqCNrcCqE$d=4z{)_<%NLUU<$GPUsp&C7kTs_|7~4r$KacI^;uV6zwddl!^xl7 zE>NBDwMgWC<5(s;jwY4Bhss%!O3EHn>e!bG*{FtMY<|5V=C)OHbgB5^2YYza(S+=s zkNwZ*+;=z~M|u~RZRW)Y%wJ_&WWRj`)Zpo;>)noPzGD^WzuqPB&O$Jd0y~qj{`(}C zP@}&M^&4-UWzLhE-rLMjd@%;|7aYeobHyMx){UBxBiMA4Yba)>e{-B1`r{DCZ{@13 zsxwKg3vKH=&S?++J`es|JntdJ3~E{xj1N(@aC#O29F?h7Islres397UR!bxd-q-(o zgFjPZO~Zd+i3wL|cF9qMpHbKp0Gpb$U=)iJ8|2#>iOK9Z?wt3SSR+LhuUR0!&ukO3 zs+7*MJ}>Ot6HnMG1e+39p>`ycRhWSfkhe%a`06W`J5fV}gg%e-@68E*k9xvM22i3$BFYHc2OBmM{(>oWq<~?${`0*7gpJxlE{9T*WL@wnxU$`;FiiDr{ zl%aZ}=u)kJS75Iqq<5Wv_yw5M|GwlGX>O}UYo&QIs0%xM7&lWh{#$e5G_@B~SKiEA zo-0t#I?u4MI#PbAb6du_;Gvq@$M&)37oQ?&AZFB5F)5N5E;OhsHjb45%15BTNuoZ_ ze50$*l&W%VH^rhJB{W^gcVkb})Xb+769~f4Ypvm{uO+MMK=%;YgzC2Ky4*KOD&7`1 z!@^EEkp3$i+vnT1I|Pc9D81Kr{wsewzTc(dd|Nz|JyT-0DEN)k?iqeSVjt)UTAQt! zkvp6?P%QpEEFvuCxh{}&6#MWo1i%k!w>dx~a${V(1V(VIz^(sMqULCtIs}8_o4MSF zqB&f3njU@k+y$jf8Cd#zFsK0W=i;q08aOpGty;k?TC+4EqZi;YP%}_5y=lANCSqco z!l&z^Meh8LG5VH%TMK)Gud-Os6R3Jz|xW)1%@a+pgqY-9F*98mq7#AZk=$ zyL;qjMt_~Es1U+^TFaSy7SG{V4ty&Qf@~=J3(&Ul4rBEPG-~y|vSKs^Irroj=n@|~ zT>0fRyqa-aRyjwi)iV7v1fofMQSDYO6_q-zCEbHsEi;g31U#}C${3i2qh*)}T&>T` zMTsK=a?U>&h}WeuH^!IBqa27fiOl}QS-6H6gE)kd4j)#L3%$Id>EmO2>_R0|R9X>} zze(VPcaqu9lY|(xXeP|G7{zFqV%5*xN+ms#!^R`RLid2F&ya2FPXR?gC6%i6GRRsQm-(29YI8A4MG(p0F#L`;RAnHZ(18?iXQ00#o1cHvQKuV|E< zqJ-CZD~VOWYaG|#xoLf$AL6_D=2N;1)M3Cqh%{4HTm)5PT6whE5RbXMYp}b&tN3J% z4e2jc^%*T6SbYlQh8gT~;JP!yrN_DofyngxIE-fec~?Np750N-%`-sVL|iKmX~O!= z!iX!sLWqMSv#Tv5fNbz-GtUVxsWYY&;Zj|*xWAWNF}S*cj|j_sF{^T%v2+BWM}Dyu z+4g~?9>I;1hV+JajRJ>p0e8A=X%~9Vd!VUdCkrA)m#$Qaf7mRK}AjKD`-&4OTWCs1UGlcc8 zW`Kc49Xb3OQ1+Ks+|}baW$Nd&Nm{IK4#T&EAOo;fg#kw$t9Bupe5&(ajBkf)uBgbg zV3MJm3a&G|U#w>W*vu6CGpjQPO=qg7apI;ZbzL* znKh^BAa_UGCc zK%T!1l@|M0NiU`Oae7rw8Y&~|Cp&|Zo6SH4RjxPO!^7@{40w_idMo>2KldnCAEY@` z|4j`8`HrCAg0B~}e}`Q$F}fQie(?Czy{_{C&j(^q1pqj`{h&PmDN}(bqq7k|7V=!2 zG1aGAksB5~v+Gn&Z{u$FcRnApbJ~#)4+uI|O>O&avJyJG?Y(?jp;Fqh^c#<>=5(}> zZ8kP@{+lpMQ>?Bg#`B6!g2~|}bkxMZx8(BJf+lI7vfDC}Y|jh?Itm^t=-IdL@m`U> z_TIDj3b9S|IE9nEiXRwaaEGJe<-=ntH~@u{XGu!nI3*q=jdWL7$I2%W?XqE(W!Ns)KA&%cm$c zH3;wh$B=WYM8 z)i=A+cjmH|eF4QjmcrpN*SWDe%{ODHy4It9JauGlAjvhC%%5Jp+Z58J;smrlEsqK} zVbu%Ca)ruVJ(A7#mG`Vh#ozy>3oW2U8KK!L>uW`!B%q&v?{vfG`YrYx6a8&c+oP)Q_228bH^c3s z%G$qTkc&s;L%kGMOvW(djGhG34^nB8i zl}Ram6Yo5MH~xCc)}D5=c|6HDK6PEss_4@6o~U!37Gax`CsbX1)3I!@`mW#hvS1S< zdBi}{0FChQIb37T$~4YMZ@yM!>;goOh)o|ZK^)Y*s*A_-Av@B*J!Z>A-=O^H#ZH4r zl)K(=QGs*1JKAG%_)82sqf*01f15X$n+@5#?`)3|FuuU`a^5`jjS=IrX_w<~6fF^S zYH%jz8+$n2_{=bStg5M_z;e?S*?HX3gzyHI`NEd?D|591&)IF!FLW{nFPKanEHFkN zy9BCgbXU}JIMy+Ty7S)^Ljnr|_5@I8!6c0~g%8*!LaD%UA)7W&mCnZO6hW7WfR;Lk6qnm5p8*#oDIN;M*|V?i!$H&`PxyE9sIcim;uTFX(*rS0jX(kXVu z1iQD+m<4g8Wx^L4b&B@Y8WU^FCPh<}gNidf`U2s6bS2_d6_VXlqNUy6qHsN2Poec} zu|CC`6I&MFa58$re(=jPl*xMhSD<$2(0rk3{`W-pr)K9KcNfhWH#JU9>Pbk5`o_#+ zA9@sJjI{6#{DL)2cq*?Yd2z*72_;n%oUdo7wEF-BK$(w?-NRGn^S=u%u-EbKmy$=0dp# zzt&0P!}ExvTdkFUASDK9_@O6>tLm{6s{AOnvB{I<`>kw5-AhSFb?uhZC ze1c7Qcq_W1$?aWM2D+M6$AVhl16R|sQ?_s4*Ev=+^_}MQbKlmr+int{Zzl%uSl@lq zh$%6(~CUU!$RPkfgc!*YEj@TU}UmtRK|_998;d9q`JN;Jyl7?xb}BskkT`%K1z zfcv*%TCl7l9-S3B-7njReN?iGv#JS!dfqc&Ooe4u>6WmgLa~XMys8`hk4j_Ed;WrKd+MXamwgUJDMOZWPc zvY-_IEjoEYC%aUY@+OyXY72?fE<@9p-Esqs!?8}pQ%Y>3`M7S&Zt#}`$EA_t_G?Ko zY#Ijx$Z63pWOX_5^9N(|Z)7r6QzG&z*bGmi3j9^N9^f=n_C=BnV+0xp9ex@)&qch| zN=+Nl%o<6CzfizCr_6EdcZwS>NiMg0+cPzl4NehTO#0Ga$XzS@mR(r61oi17N7s@_aGa zscM>@EiFfgFz*ekFrPA@v#>ZP9-LeStDZjA^-R|zYID5ZdrBpi*ZoMr$n$Qeq8D`I z$z=4Fa(#uiT9((KsZhhU<`~%@?k>+~qHfc5p z?7nu)vHrsfjLLYuq%35%Q=}mIW|L;&q|d>xWV@{duTgz_rmGZP^$_xC@$9`o7}Ny9B`&{yz{E za#C45PUyRqh%4)`PO6k=6hTyF!(Y(lXwg4sI7ry&TbYUR%X$Qjmy$Qf-3dW2xupgHGg%XNlfwXAx~o30_@f|q(wv(OY*T3P14F5i>mA~* zG^^yZa@ia`y<(YqfBO<-(_<#PRBnZn&aUo8)R}bA0}_g7HkL!TGf7TN(wx6Uyni({ zKHHJ)!aFXJ=#+>wgk+6AvTmhrXbfa*RnNQ=bTz^x?5p>Lqh2Ww)=D@vy&&EdT>`T&Qc_&sAAvRS=r(MKSZY$)T(2|{s zxMaL+&LV04_$VoLJQc&Aq{mq}n>&jGP=hpa;rb6)vVNNqj@z2rZ-dt!o z{@T+rW8Wv}M|qWTW!kbAVL1JDGEQ75lB?WHw#1t)8Bt};UvDt9k+t!?)T6R!Q}Oa% z85t9L>@-2z`gx7F?Mx(xiM${I72Xkp zRJ3IuuBc#^5KpW9mV-!4BX`wIS_Xndcx0EV9gk{1CxcZyENNxwx@PDgyt{UTk8qsn zUj@5gV|;y1_3K@Sf&YlJW$Ot%yDh93XG(;4g>PJ^-tz0+i6pB>T|V9+-ieg4uLT-| z4N+6#_$1U3x^oDHVSg!o7d5^S$WYYdu1e3S+|&1aW^XVb%l+c=9P9N#^^#90*(=Db z(9HFXw4*rfqGR((1A4fr?G1qyiI|rw^}>!)z!$D6J@ zgYpD)F~&D{{8$|E$o?W@1ryqt+5Fp^RUYO<=E-t_1B#>UM02hw=vC5EdAe+G9#zE= zn03YZX&)y^xgOJUWWcRL{%FfC$gtoz3Vo2II&v)X`f3g^?xTV}UT+r+lF z3F}#>5DJDT4~2+RMeK-})*>D$tNF3NwOyYzH(8=QBeFdGIH z5xmbz{7ll4{n~O=R>!?GY$_}d4XXY)g0PPJu-w=Y7oXPmwf6z%U^6qF43sI$yzb6>aII0g71N{?uStXeerge@{ zA9g9k*w#UUptAJR@|AgfV$0L3_<4-S7l``S+P3h9iqvBG>`TS=&*574*Nh-#NAG|tao)_WZ6Gp#v^@~1ef-Wz0N|6*L`-fCCrQ^mgC zH7L$kk}c`VBhV$R^(AT3e=1BFA^2)R^;$19__@Dwmdm~J5r6SS0l5<7f(}SX@h~?q z@+c6WHyg=3ydo}P;HG%SBY5P8Xe56Et`Te2;=A`I%jG}7Uf~!QG9+y`c+c;ZRT`x$ zBS+X`6|^)|ua9btRHj!(ynR?CTi2MoeV~%|n^Rvt3psJ^y=PAO_RFdd%=H-I#wsyv zrfxTdndq`>f3uE9VsDGdxa4(~Wqaa=j>Dzt@s(tXYQ#@|PRX%pZas-;{Esn8QsI=k zQgZQli-%)@IeapbKB6*G*e2epz6omvK<6n-|wxp@+Uw z{eof}p+BwT-UqbK(GWA)5 zH&@2ZCM|^D5EZ%~1s!j3xiT*x0lGW`_AM!-K^o ze32mq0-b_}tm*Hxm5g^AbWDQZiFbIL>ooG@X7m}AHUx097YLx8ZNxh<37d6$G)mGfFBO{$DWk&nVW|3EHHd;J`E zrKbG_JrMWBm?_ADBW^Dk;WN_Pugzw82L$N)#Ogk2v)Xmxxw0}hRn~ymGOeHbuXG(} zWLIff#AbhjA#syTi9Y^^@sbXZnsnTPEaoY%C12*a3Bnjv#G^Fm3H3+!NT>#*ar ztX=g(d4lx-ixK0DWbn@tx7)G7Ex&`_>8=l+ZzK)Tqqn8gU!)B6(6#(miAh)PgoQ{s zCaKat7-A+~ev@_-kw;gr%yw0q<4N{j)fd;ilY;Z3!q@Kv$H@;q{b7~%}egQiYKIc<*Y}zrmA- z{lwkde;_aY1mEK?H#{_nmUnZ=K6(uQ0GH6WTDmOCCCBzp3@0h(pG3I81&4I~Smz}9 zrNNA7E63iW)E`P>K6=`muNpmTA1@6v_I}uvcf7(CocFSEfvm`JNYB=8JzaV}%X-LL z=bk|~5YB4^_I&Vg|4OgG$7j_3lR@&WM9LSV-eTj)qU&pYJIr^ME$2<^S~8`v50kv_ zLSO%Z4Du-%^(}4@4M_3m{2gW`vp5x=4Av#T-kkX_+2$99cCR-gRGZcHW?#ZZy@ZDm z^h?XR2~5V)eEwXkIeQv)T1?jDgB&)2ShA`lBlnWAl+HARUf!c;7s}lwjZ0DoyWc9+ z`rM0WE&_X<4%%WmY{gjY}Qqu7IOOo^<^O$>G% zsi(tj{C-X>ZIUL5^q0^0nSE^|`ML6zq{xDPz4hzEUu*lPMKjda1C#npM5l(V@bX7< zY~}b_mVe?{jHB&i1jQ}uaKbxxaedckpD8^tOGh(PcCVm($E z#V5r{v1ErJ`F{TEEbr`?aj=Bq?X~qmIERbzh_|LA%XNGRu`nGf_9SzVMOe(Px##g{ zy_9Q>Hjo*(1tWu0^|4Fj5jGy}j6!gWkx$y;4a(^u9cLnfN2cbb$qrOHe3!~zj2r8J zC#x>ww5G7diA~~W!s~ZGQtqBgy`_eD`m?#p>C+H1v$R8;hR3pMoY#l=tX4H zo3fSMnf!G2_5_KzQ8(p`TTeA)&M7`1f}BNY!_9Qq`BMp}HE&Hq)F zL=r*|Z@Qa_+VgYXd8vcBX+3y9xo0F(`wlvU7gs` z8;*i($;^b{J!ORLjR}I#jiIQyUoI<-ZD-e*xP@LtDc;dtyjMQ=kL%auz<}_7{Buh~ z%}>85i)Gy3cqH$}`=e(*RId>hNTO9xRu_vCWV+|p(bgGkuA_Wy@G2d-H{-4#(8izG zbebC=hnPprb0^aK(r#B7Ov6_x)io9C1A!+A=)syJL(kA*9-fK03!(o+SX0-Aa=qnx z(_OKm@NaK}F&3S*fpsdl(5KtCAxW{QnT)kIBwVLBvl$-`qwRt#^emUrQ!+y%v4nTX zs3Exv3Z=iVx%-uny!Cn*wRaCuRVss`;HqW`2 zcJ~A3=A@*4ix`rx+GGx15>^X>-JWrVrtpY@DK6RkuoiV8AZ(O<#x!`tn^ zt&yIEc%I1UK&iu5(dM7Rg|jC@{p|pr@f{O@&c`sNd0{IT+WSuew0YtZ9twS&zLCqz zQ)HxfzI2H^r!~5i;8AIwhT(*>;xG~w%O=T5-xxh?R5wbO#~vS{xc@+S<+fAPajAL= zL6h6K@}y-1j9*Y)N4eK$dtIn##5#iU!XF47A|X=fV5=+Wvo-daKU+ViqY%Tv%G~QJ zLqdwOPT(O6E3y7eu}&-ABJmHzSaF5>rCBJckN= zf)bC-`={@b(Z|e}%8k0jM<|lv2QOqMwo58{ugxK$v4-71b6Q(hm=2|TlYau$Ha@?S zbmmp?1^<5Vo$80WfEcX_)JT^p`jTV)hS@u;!MWp`Ts*Hc6*be#9LwQco^N)`hb7GD zpXeJ$@Zzt(SvmYMnq+_{6qxbzHJ$b0{y;uvlybS+G`eL=MefO%m%B}^{DB+_{@%~6 zlumwC6mR{bPJ@N5f7r`7&9qe1wKmVRWxqS#v7EFun)hs=1+**u{|`yu9mw|j{ol{+ z?a&%Eszy)}gc`M1aBC$IE2!GN#I6~mw%eK^5=jU#E3rpg)GQr#C~B4(En=1yMOD#X z`u+Wj_uKP6&w0*s&g;C+IeVBe*~Eq|kZ8zu*wUnm(WWf0YD!A%W7)~$b53B(`1r-{z6*d>YH_x>L1alAo2)(gDduaOoYTb-$pG*C^gy3IZyBe_ z*ST-?;1h>Rjs_yzojAI@!<{qjrnjL%p^T)6_ewiVd%jaa5W6|Od3D}eNOIDwTK_k`EwI>0(Fi6Ib%J@4C1jY?7&7-JI@ow99d=i4)L1nmx3(l5IP=^iTbyGT7%x{@*bK{IBB^vpuPH4$r>4Bvs7n;ZJt^_9Vs3iMpIzBn6=p?XEB`Ftc zWr2Cd4`?ZsGE$Ig`R3QjH-4bUe$lovC#Vx3Yb0H~w7j!FAg8|PMpk$0A=FGedz)Vb zcV;S@L+XR<+s$MdeyE@%-+ZfG*Zr;=w7)?sLXBo#{ihmE`VBLo;OXgagH`_$U@KnF zp#?>;g0FY_L%t^1O6uttUMcbZm?v3nI37us-89tz4{;Tej9TBi_8MACUw-hgCinuiaKiVxc39lQJPsU3lTem?5t6Of2nDJm^Q~*B3R!6F_A`Kal^ruXEj1NVlW&nR6-P`s zs}$sOT0!%$eS5ItNgU~dhMw`W=YJ(cDaV@x)I{E*&Utz*Q2bBs#scBHQsM+7XH|%S zvzd>+Yj(2u^-_H^@hiZ@cRT5vX7^?9zijl`|KY^DS_SDavlim$LZ!E{ z!FD;9fcBn8ioo5v%X8N)1t%(jiv$&J#?r`gSXl5_dDcIU=9oNZzu;xXspedS@_~-* zfUqjuEy5c@5i2w`K)=4iH>YGSLsK^n$}c&94c=G^&+2{KJ($%Jw?-#H6#J6;SR=%; zw@}SJ*PLa77L&3Tsg;e)7*-#o8zgV6W9c1kJ~n2*eKpwfj;GFHm}gc|LVWQGAPhIuj;wRGRSZwof`9kgjuL;ds_^PUec zqplFzgL7Iu%YUB(%rHl60s|f$4943WsT+y>3{qmEJKjB0!*aWW(Uvy-ZG|H2fm7cR z73IGKtQYdF-aXA%Y_aTPmG)w~J}PNeg|Hfpd+B-1mfV1h#h6F_`XbiVQoLp7MV5o5TA7L%%s|O ziqK_0h;jC{cbou%mjjaNIHl|}TjJt;y9Nr}nQj%H%|TY!QBNrp;f7ee&HPsV;rBV0 znh5or&1lWOprP&s7;5Z9$+{`b4S>m zcJQ!3>0;~hy>f3eV@>BCMNR8_r?M*Fe`9dMQzX1aB@XlhNT9 zx}EQ_Q_%^2o8{gY73w4k?(p}TEQ?TFXW~sk^0)LJBNz7&pc~KR97)kUYieDc!ou)o zLVK@cwUkVKp$`efs2kx~COp8}=l1dW^cGhOzcy_MC&uF5scM9QsToRpfk$zV^uy72 zxQlseYG1UWrZ;`=*36m5Xkt_+Xtp%9S`APELb$hiN!CMhvGfMeks8OISgTPF*1MaH z-3=Y-QRuQ>fc0@NDKqAm`{cRq|3vpYs;cBdWTL%LJ99)t*C^Q%nIvNwoZlfY`PIp! zWAxK&kZMHK=ugKuksX<+Wv!d$;h|7>cg5PqjXDIZ!&q$LcHhN)s;#J$@wHkOMDf%7 zho-u`nkz&uJD`lcb7Ga9yPU9sq-|DBe>k^`O_<$qu4YM$#tn30H!> zy^02qM6AfyAillunaqu2vaY4+)OGw1fa4T@EW;(p_N!77Wn&UBv3p0PlV3{QPI*0{ zzA~_$j3qi4J5v;g5w%uP7g$&>2ph%T6B#_Ynsh|Ab0<*vujmCC&(k*?z(4$~Nm_>E zy{DQ~Y{pditwQaBnI)fW%=vDAZZq3gf0qIjBSM-ReR_A?3i1Wi)?%Q%?<1vye*EEk>XZh%_`*p8cfg7%2J@QT!4J#9JMq!!7Wp` zW-Kz?&spG4UMh@JjK^;F)xorbmW-gxNt0aBXWQ57CXA-&3M_Rlm~&v^p7sUYkbSXS zO~=WdRlgHr$^B=`e36bDdZvut(o69v*=hW6ANkQ#p9gNP3CWUwO;KXET(18p){dl8HMbIlgMSmp4g-ROW(8%Q*N+Uob$tD1_vDj}a)?%l%=W^mLYB6< zO^GowV}ZPCZ&;>b7a}HG=WFl!v$a-n!=F1!%xv}}l1y>&F4>(Z$F-{{nJAwzfKtZ( z=+^Sh?qzgVE(YOw)04m(cdKj=kaks9DLpdo&EogknVaj%VGm+(iO2rwL6fyOFU!*` zV*cub;(kjY$O-GAv5qD;wqM$VIjHL7115;B`7=ZfcOhvFXVdTl8!5zirKoW_3N=UV zRU(B2*Kaj^uXaDXBwS5fA02Mi$Gtl^)x@-z~eJ>+<)GWJF5bxnz9J=piMc!ku(thvxl? z_28`#ZW&9SL$guYg^zKW@kyb1#Zpaa!7-hB5!(*MG%YSSW)EMP=f1vm#&|B8$JQB! zBl$><85kSS{h&hy9Y^tdsojM6m9 z*Eb++P{zptl4VdcXC0^Kr295J;OHsMfNJWyqtrR3SGU^pC3#bKUsoR)SMK?FXSH|O zr+Y+#RPT1DhwBTSFY>L16xYU0ckCIt?f1F(K=KY1M>8O7HuGR)k6@c`kDqE%x^`QS zY*&_#@~it3k`iw|as6_m%^fKA{>78=_Aq1?mw26M(ReY_2wwbLRGw|&&hPD-DWCXR zl4&2xHx*-peOWYv0RQ%;!vUS!2OHvg4o2t@$!|_Gk>?5@clRP}v z&DHwi^Zjph?(+ZJ;JWl2Vy7``q%NSR&;RHv(hzx$JfQGFlFhChT?F$j(WbK=vpBpx zmcO2>@q94(oonCHO1`znP1;@#e#f8Vtbb27b9p_{C&)2? zxQG$cSE$`wHoRWHi5uXu@CT1E#>Sk4N)!tBlKM7&?(WPv{yz8n+|4&QHO%jGA9^A< ze|kydkJMOxp9|sPxvRlL-SG%7ElPAWe%oW$6R0CL*g0@9NyhaNR08IqX&~;GoV;m7 z0ELI!O^jEX)iu2!{ZuGCR0-&84^Br6;|FR#9qF?DJ{O)=@(`@`idnvBb`+k?wHw66 z3PBTUV8kb$9bMb%P~V&bsH&_Yjcy2_ z`~)-Qpu_RYK<|c)GDkSw3MI8Uv2@}ScPuf&`dHd8u_=>do(_F4kO;cmuoHo=N z05I5W@5>}9h&By_<)D&U<%D2GS1}r~MPQe4h$lzivA27YqpCR@$F<$mo6LL6Auhq? z_qiJ9-5UmM#kgK|;(v?MWDQ|f%A%o)%3phK5O8--YJ>^ky82tAD_R>b7RblG?3(C@ zeY}M#U&Q$oAIjt#f6x$vp{Bq0q2mO23pfYM_>L-Ev(GYJ!jG8iU-h`9%JOUi4V3Uh z2g}s=j?jA?n2=as6O2&*Hcx0kzsI}lj@Q0I1=})L{>VvdS>4XG0*AAeyMR_!3BDpq zq~`=1rCM0(mHETpoZZk&pC9|rxAtr=8+sQehc6Xy|bL$cd5OSawH+VEuz5U@VEUZ?a91~8ZEWHapL8q=p2l#;Y zUx^{dwGfq}*zaN;a)!SB2Wfzi{B2rstHYhf)oJTUrS=KXb$l~=dCYPI8~M1)=Om4Iq8PNAgd+xQI)y3(m)gY zp|f56oEvJDl>t%jhkF2p-v$nK&*N0%k^{$T9$!yP@2!q1H9mYvi;||)EeuqOR^OU9 zgVeZ%@e;#m>JEbl4o<;@!_4D`e!L_!YQANgMOzNu-G`8n?!t>VgF7kOm;fd#+Dl-z zSRY(0l7jVJk4tt9C1{hbB}hwWO-nd5M8f;89TKMlknOk)EcZbi*VXVXr<$>yOxl+v zCrF;^!$U0tXt$HXak@zc&#(?i0T8LOCSLUW-Sm;FA6hXD{+hxUDZF z;pVqbl@pu3sS_)^>+<9^w~5lSzrsXI&|AkW)}s2}a&hWFtL*Lbh(W*L%)&9ZQ><9RZT%PmUvQz(SIy*XoGIpuBOyH_^g5zE=ug&ewNvA4SjRaVjtK zjFY#D^@^+{df2Qy-CG7Ugn}wi~qUos(S3fwk&*R0)y$UStAwMaqxT z1osJFO58K8l+AB`>a3nJ?ZhGJNc8-ds`3zJBYzg{<{*z+;N0$A znS^GDVP$l^c^sEn~%HFSbZ7;_Cb>iitaPeRM z_c@N?zB&Zbbpy;pqLb!}4$w$*+Owk(_8-^MK5jX%s+s2yJ#Vuzkhu7IQ}+rQX>wFyIzJ!18`8IZ7|2lv*#+ z=k<(45L@5i5B(L6-_18GOSpVpgGo?m`bY{kj*#}&WoMz^@nL2+@i)u%I7Guxu_?f8 zFGV3&ZL*zrM2r$e6#GNo&*WQu{DQZlbJ>q<4jg^O&-rm4ZnrChD{@VOSjFR5zAL<| ziT#z+7KiN_H+T6fBo0i!l3azbGL*(TPHhj6B65X2X^xw+jt_6^SvbyIaCPYJKjq(x zU9drvBt=c3VyjBhu39SO$eOUpE}(<)3&iYB7KW3>!NP|P&kR}eXeVKEx!KmxqD@$ z1iJM{a(8*j2SZI0oMcAdh09rY-rq2Zr4@HKmdk7-&~8b=)KoAHUQ(P-;0@baK>%JD z$-YRbLX%U*{+q;C8=P9+|Gshg9!3Jj`NL)B_c?*iQy2p```mIY)N~`WEP(?05`_$D z4*yKewrs8rSe|^EGb%@#V0`H&h!z_2+!0IVr!!wIAu6eG?0V)T*;JE0A~Qei{Mg1X zn7p?U7E0p(LEB}%H=bDm?=s`-J6CofPB0vR1y4o7Mg{!&c)?-{w>+5zKa%ylgCf1g zQvoJu-!eMu+CPsjc|?%Jx`+Ipe(?UrZ|!`1zl7Y~Hg)Q>DPta{^i8g4Iefkwsx{v< zoW2QUX#hP{%4_^46lGD_XtHz!e^?qh;! zB{*?OnNL!zoywZ+e(N%&qM}-1uI1XFH_UsqWqC>OHt1_!a@OZN=d{iYL8-nzoj?97XIhW88P#mLNZ7Mk zX>gwuEJU`s2zwlwFg86`67%*3Qs#@~` zy=*gVIC-b>AwsfrWr7Cruj}hlMC}g%XX=RjhXDay#k_I2#fN_b3)hn?@V)cn3iMBv zg1MXCA7dX8C;90<%F}s9#%@VX86)ekYxvz^VTTk(;s?_!&yHH>d=v_|I?BieGa)PO zZVTm}9uylhHvAX^_V36Djp(Y|J6_i8Y#?cFkMTLCD<_zS@J;rGR-#|9$rXCHb!tKMB zz8NQf9rymaRx8=cRIvA25x=5jPF!7?w0REcnD+E-0_Gd9TpD_7)2CEuxwLV@xKK%Y zl7my@t{IvdGzQ-2>`=0up2`+O&c0+{_@KWR#FPiA9A}?RG)p#68*bv=xW#n3wzN|Z zR8aGc9^uEq8$OoIjHQMw*E>mdBdtQ=6FmtD)fH@sTFAd}7biA^cL%`}H*~W zILp_$dr8MX?S58>Ea$75Dmpy1;`^v*YLI-rcrjn87fwC2r1f|ob+=$l91Xs3@aEYo z@&_Her%$PGiYN6X0>dWZC$3AhRJixr?6l`f@%YKZq`{|LcXWt9-;p;A2W*eLnePIF zTVP}mLI7ZtDj#iEZ_w8x)#_r8x{{Px_}WoPrv8H|1M9XYPO`UM3e~?D8zy=574S+J zVTsWp-j!@YCGtsM33~YZT*1F-*~xMxH1BR&Gn9qSx5o$~ha0*ty<_Gng1aTV?Uugo zX-?J?B*Mre-v_I7`&vx8Ku!JLnk@#s`|3TASmC`I%5vgBL@6J9g8)L#M|UVFu4MTD z(jbG+)|P-L5uttRYY7DLjw|3)t$zmt#%4dsmC`L6k|Wk}GO@`?iuNjjt;KfAs&KB9(bb0U>(HZ>Yh6+~uZ{Du_sd-$@l}-72JyWx zMg#$}q~O-0N%r;!;v#Gs<+-;GS46m+h4=d0o~t4*e^$>#GSLRZ3nG+%@Vm7V!dK-` zmo@?)u_AlhDT`GaE~d5X|2Fd!7?|~s_&MiScS@p{JkwqKB%#a#>gROs_*N9)(*NF! zc`N4{gNu(-A&t$9jD)zfQC7vgu46Zb%c(A}s5Ion=z4GxgpbmN8~1_1AMIV!?4!HPevOsvSSH ztjif)mxZTnHxrgCGR=bg6tpz8c=GpTDgid8o|o{y&*4@;Yh}TYeeBe3qfRTwdUs#5 zThPkj`UXv-qP0MN&y~>`ktJ*JO!9y9Oy&y3^#8sYRWl;QmD>m&9hNn)9F>wc*JIB_ zzwpR(ybXtPq&-I=0niVMr*Tlka@Jwm7Fgu_?E zbrG;6@bZ20>Jbhr;bo|bG|vx*H(ys?5>NzV!T%`Gy4#kMLK5 zbRii}LcIQ+R*z!E!HaBUyPqMKInS=pJamL3SanN{jf6RPuOI#jqvR}=+P0WH!z@P4 zFi^^w>H?-f%s(T;K%(wjFtXv&#!tl@U6Uk5_2mmcY~LkW;bL)@bmNOa54D274uBtc zG<$gkDW|h5BcW@^v;P?~Rk{8D-hP#rdq-#{WAFnmyXN!vxb@Cn-r(&~{L<8c0b$mK z_8rD}B=V^Od3(oBk@wxi#CA&I^oT$`Yu`+o^dK~ z*>fB#`AfGIS<=_(MiCjShxHv>BSpq{ z#UMKB7*MRLk-l!PQ*=%+#B!pX|3b

t4eqaL~QTPuM!9O1E;dKO#sx|qR_m9a6E52yA&v}{P@Bchvn@Z^Gl0YP8LUCRKU?yh9qioTM*UrUv1AmEM zQFZxT@2(J=;rh9bxk>LjK1nO>-V)3&CyeTY6fGciH&L7}Gs}0LkCp^t7HM}%yo#wX zY7$5}426_EV+C*Ou+8Wy z(}6$H)MI`u@RDR#EJZ4(#U%XR+G>32NPS8k3?l_9-xTNU_Hv^J8}MT>jJmJz0N@@B zYrZvMLG$D|4l^lZzbbtG_-e>^&Gf4kBbK;gY{vT~Wn)Q@L2rNl3_XuWX^-zS)5h{3 zPh%6glTXzotS+5TV>#tehHio?wo|KbQW=)7%z!EH-!B>8Ov#z~A7FY(Sphpu+ifZK zGhnWdnyT|nZ)C)R(6ytXl&`ySv?DU=R%;rdL=4j+=5h@pLNe=aiV>f?XjQ8Zl zu*Kiuy_2$6hh+?}U=O{h_|`5ap_B(%LQQA}#WV%CX{SOmV`YK7EbiHC$8P_EE1s>_ z<}(_h%0{&olFd?o<1AB-C0})Me-ab}_V+4aS5O+Gh61L4;-fL|KOgam)t*6RE+-h_ z&H4)ssVrO(!N3-E&B-VZ4pz>yvUnL361&sq z?g-mng~G7dD+-e`wl9qS$c4{lT!(>Id5=fqyFjr;Z@zHRj)iiQfzyN7z;bby89X(K zYC#Qbd4P5Q>>~`W@jpNPb@)Wp&s*3?0gK`rQQ<+}fzB-kGUpaCmPN?eknxchmtb3xKIO-)|f^J?J6{`~zTwe*^mWtxUt>PK|n;mIuwQ zqG8ra15OcdBTOm=M1R^%*e?XFBH{<|C-qi1fMKm-b{Vo#eP(p9lus$#Dxnsb$Jfhx z$lIr>GjVfGhADOsF}n@w>qHUZx@;tt~YFX>~6kZ=Z$W*L;peG}t8$~Wuu9U)-PSk42yUmd+XU>Qh#DDgfojcH1suj%vk zDkirwsCbunouW%!N3Fms)<}k1QfkFWnf^D};nI-URX%1QZ!7@*B?XXVk@?<}s$P7m zMjh$hF8zQ!s71h`VLs)oxn#f#C|9e1U!w=$ z8SA1fa+Rr{-$$XEU}{o~iR}V>=R~t7U9^p>kq(3{c^?>Q)+@U!ibNDL+*rTSFYrWo z3Fy>AFLgrx|NqrW8(QK`E<^r4mpfV^O*cSFV6NCZN*IMvYp^A0NR=@WDhxvvqo1dvvGl9K(#vn$z%bRTbj~b7ggO0a|SU%*=L6~ zEi2v1F&n~5SweUHQ<-Oo2VMMxwh2sJER4>%4Q16W51L8Wf+!>iQwjwqK9v!We5L^k zG}iTAsVlyt?xRZ%xtEFBt>=v99^j}j`N5yWX4DB4hma--@#Yw8>U59}iGFsG#p z@V&+U-$elq<@V(Vv92A9m~@tE+zr0|jJY$Ele;lbB=UELs>G8-?A4$9W5jIbPu0U8n{$>3y z^9s*>LLgP9Ap+yfhiJe@+c8bFee>QWsA|nqf@oZOnxBg#`$g~-XNSckFs(^ zMWBH0)7`i||4yx|&j`g^DlennE5*~Bq!3Ai)pnfP2|Cqdk`2PTW`<94ks|N_$yR=K z#3fE<0-amnqSCuZqBq^>B))&>dxzlx<9loBu~%=fSJ1LUf@#@Ssl&y9pV825yEIG? zP~A;DVO)=Y8wo9p7t=`<&F~qw2Ev#L50E#2#o(;9`&RelUk>|@$E-eYEhb4{#1XVX zkyD5cYo3vPCMZPh>Aj`}!H0m+06~LSiq7SGnB2I@4-TLy{tC|OIii*_dA{Zk?Dh}sNv%5i6i zpGsK*tWB;LS>lt#1I{&;NQ!gtnV2*$cJ*}KS`&ji&|Z5qEe414*Dw7(H&P^sj5&{t zk|XDhZpM8lPB80?waiNc?(yQdQ+9^8T%Z(SKApmU+eoM3p{^`Ia>Hr>)dRTwe)>tq z^stwn#!OL)?Q#(&g5ya6pZX&eMcXa1Skfb5ga#6-j3&sv3W=Cb5|c||)MFl7TV%kw zE*Fa>VdHh52Jz9Wu02Y&DBgeI0rztzH$4crasMhVlB}UlAWR^eIcH?MllOu^O~k*G zl5jUL+9l}PG84*84AzsByjUN^y{L=m>&mpSg~^Bk^RfWue8qs)m5k${ytHKA{?&w3 zlR#m`)GJ^uNxk`oTn$)1J|<^xc|30S;q8e_5@A09nzO{bLlhAoa+o$&ys~?v% z(OzUs>WHLhC)|W7^0N^CHaz>Fsjl-^wBz%@oyFZf-?{@wZGs2# z_`L@aVu1%bjZjPD_~a$8&4`RgZ1o;`2E&MA0|f-A<^Cw_tsW#liSACd@dZ5tbzXg4niTeI0P%@F7+z&dWT6HFu`46OytzA_<3z%ia>hf-|x@ z{z|z`gNq>nm;S62P_&wmuqw~z(T}}ol)i|K7`XUNph5@8 zv$UqL0BYgc=0!lPx>a6&9N*`1Xqf?*!8u%tiR>aN@10ATa4uZC#DpUHc;n5E?at!r z{GS!>5&JdBhBybwc6TV&Z5RP09C^8CUg&}0IWJ1&EJ09@pix^G9lxLTFb<`b#K?5jQQGZ76Bp}$961jxlmlDq$*h`IIN-tLM!&@c`$ zmm+CEXgLf!4{CQ`MzHUR5KlyAzPYfQdZtkjDM(nMHwpG#RCp4=NVsh{%9@;pN=#Lz zYeJm%w65@&it|`}HovwA-N#Aa#W`8Mua2R@tsyd`;LnBXOqvy8$q4uk&n0e0;ym{J z8k%zq2f2;&1d-D=!_pRKtZ~cJ}+yu`DQu?kgj_bfhhKS(BDDqH{z3y83F*4cCo%GVe@^gD(REJ0{>unWZFWbqMNEf ze`U9iT(Q_fa&L#WS@`PbWfd?DC?B3Pqv0n3qlop!@vKMROaIGC<|I@&@{d3Ne^CdR zn#gGYd-8;eSK+bQ;0dN;qFoO~$w=NH_cU!qaZIY%w4c+A1R{`jtm7U|{FKz!uoxBV$R;W!0zq0$B_j_Fjs&~?#Cc;&LbXrBHbYa2ANVhztxIsB>mIAXdDNOG-FKZV; zi#cw;gZ{i-d6?VJQai=CaeCK^l7ga48mPAy=1EElCGEaI>KR@TUSWoe0;U(^;U#}m zbBO7p9shj)HuE;&qRjBc(n6&)%m3;&gC3QfWi0;sRIxfKL)t~}w46Yc1&oxMJ?LA; zI?X~WLE#>IIsp%b7;WHfLW@R^@@eprJsA!hg}bo?ir4oEq}H9!IZ=mF!eD$_AxF53Dvv;-lGfKM0|-zDKZHT^pg|2 z#q$JZ7*MZUqLkV{ySP}bxsKF#P{77qd9kE_CE|9MevDTCH{rAr%}_cyQk;q7@&{bn ziP5@Wo>h=GAy15bF;EBR=j(Za`h5;spZ9@KXo9{*amS+gSD46nz|M>Ri=KIcpXfu@ z!7ET{=EYBb{O7bzyL`&i0HLW~uo$jS)UG0XoU$_f+o{-nz~DWOxAJFt8ugF15*u)1 z>w@$7Z7G$Q3nsj?)U58^P2SLuLfRx%ve59cc(ye?rS*{#5urW7uSc`3vcRD_Tx&*#0%; zUeEpH@ubJ(=xgCE6C<|_j(Hz$PdKrEbDx4GlIQmB4BJTu7~6@XA56GSN@V4a4kCU1 zCyz0THa3G*NAqg!l$H2vkFY36yKWZ~YI6Q_(Eo^DQv*ncl9?b6&mV<_VD}K-VPG$6 zs&XcB054}wmV90c-Ov9JpSG+ZnJb>W#|NVfRx)Z03k2o|%w$JGPSNYnBn;QPBwuuh zo@o78bB*eCsM3$kFNjMOW7|@q3sbpenDSnX)j{a||L6}y z?6#|h>4ghC7PtQ$9l*f`zjvORoMj#3loAGBbWtI-+(jc}lJzsiFr{Y6(R~!8E(%EEUtKhBV4^c<8eI?aBA7O4 z$is7)iWldJs$uT8K%H1Bc;(aVaC3ZRW*nS;fe0{?OpVqt1T&|G8DMHlr?|wrw~JHL zw8AEmexLI}+AgPgN_vcjWLA4lc*SwZKHeB?miquLl&K#!`RAHr8zEL!#UwbN(dkYMMXXLZv)%Tr>{U1 z$@V76sX{%2wx_QpSGUgY_cBMAg=s}yKFq$`b|MYQybQi(L10jE%#wKF$@5G!0L*xd zGhw{PnXFAPuvHVNFG%oNcK1%T=D3Wj%qDIbq@F2ioT9~T?^+v%sw&)j7&joL(W)xG zC^R!$H#<1{yzc{jb{HQZ*b>tnBcP#Fz_g+Gl40v8-_=p(87MKe$7;iQ;*9*nN$Id? zeh)%(|97UWD#zRL4NA|}1bUmnB=Xd#|{Echq(zZelXRzPcS zo3Z^3__6a8vd+Ya#x#I~(3j9DDn1Mkgi7G74F$q1J{?0=>-yyGsZFda8ek*V9tSN0 zdu}unaeED7S{?W`p2prV2mQPJTZ}5%t>(T7PvriYv;Fhh*07b?d6U%xM}>HBaf1bZb7#7Pud@n2dNw@T?1O&(qx0X92QzfxaSh})$eYLbsuC zzi>BrJV~}wi#E`UkuBcY6#CRBw_|mRCltmezD%2B`F7)#?eSt%Pi9)py4^T{%k)U(BO z>@Rh3n*0nDWPulB8W9cT{tO+EGt#KXq)2KYWsRC_mi6CCj2BXe}6V$|lR zqpdi;{hus&my_nFlZ}^LLRY4@LP7Xv)1T4S6|_8^RE}wM0?F_kgBGT8X((DM zn$UsO|IVCpKtf&nn^%WRkrQ7NY<@k+b}o6Pcri8w1j_t~$}a^T z%Xy7^l8Wg_k#wkyDMm$x81;_4N8c20^=8KOnX$;bH|n!{lzys42Te^Os~=8OX_ims z6GoZLJ{Px<#y9S>TO~2Wzt8yzyG1FwG297~0hx@@prlWu>RFp$MwWnY)aAQUlAER~ ze&zBXWB5n+-%e@&yWS@1g#x;qJQzPA+!HQ$bs)}6jXbkD+S`U2JnSfmsRj8)?PaOQLj$f5-I3%903qH-ETOJkYS-gpqYh-0E?YL5!Vzk|_;jX3(UWp2`gL zU&vw77>&jVkG8g&nwUt=jZurf$6{h#_j8V6l{|<@+X| zSg=X-j&cJltJj=E*iHEK;EU-HsHOb-%FB7BYOhv@iXFJ-?y?f@eOOWKDIM z?8WgSXpod&SD%U;#VB89;Ma*B5e0U{Nb7=p!uc15)GIm}8W=WdKkjMpbhDTDX!>?npscg2V&pYj-6`lMbl<~` zLc9mU7-yDNtP;-Q=?qfbXn58yW}QHrxU9ZSwRh;5jA!@PNuizws;>B`mgP}D_kOAC zM#wC1Pd6dVi=_F=iL!#y+0>zG(2fN`@5XtzDdL{W2`QKJ7OtAaQFnttPCQ!rM-3Hy zdSFK0ShH3U4^V0TK#NH+v&^o@9w;oCx72U*lM-+C6vbCx6ngn8>-AjcGs($+@Y1@F z8FDDU7J-P;C>HyBr3CAhI(sb7^NjTvwh~z`<(MC0us!nRRIXA`+$#oXaIEw4<4<3b zS7>B`WJxJk_XZsKenw4k3lW0{Y9N2yHp(7jW|xgfO7D!|mYz%~r$eDPfoaf)EyKzT z?f9coet31%sJ+>Ps%q=f*(X0VjhzI1*MU@SDc*pvo{e1D^kjoWHPq1yg`$XSxXO_G zaKPvf&Z96lf*Lx&nAFgp^5lN2x)}Hj-=mj*sz@f=kVjS~=Ax?PW1Yl84Mzv8$GN!b z)qug-dqE8q1$VYeMn|(Z*0pE(j!*ahO)lS{5g`>P-z7W?{$BCS5(CY*7-d@E*G~)r zc<;Q4@d}H7QcKT2e&uxhl2Z(}DU`)**K5>03fJD?4naG`$~Vkt!qb7%o>Qq!P4`U! z8TfTy=6M{Lo0o{VMv(HdT{7e}6d6!d*Je971Ppkd%{?HV^Xr!girSv}=diWf%;6mQI)usmPtf z=9`=3rPdBLTB){4B?5kh#9U0C`T?)I`#!^eWQE8ykdfa)ZgI(_S5A+#r^wzuPGR7@ z82I6#ZL-bk;deu>$d$_(dU|?>BBL$Izt9rfEL(Sl*pnl{Ypw6wFnclVC0SR;9vT8G z+inavKQ@U1kgiSM60#l9MHb!T2{k9_5FsgNk7o))+FG?@?HBwr#q>ZH85x9AkrW9` z6+dijqxbIf&0HIu7waJ*8X%k#T(lSWSQoeDkf#_hu8O7|Rp|+(E5bY%7HO|1p`eJ- zpJi}LDQbP>);^fZDV9>+^|z(jqpzA|I_#X`*_*Qi}_r;@6UbT*LA(G_jO$ty&&xEzd7W!C9wC zOPiNJxNLCVPcMMhnS05~D#NHbO=r^+Gmwx)jdRZ7VGgGiI0AaRQB`-?O;I(7n^qmu8( z=m!haw2nE6b?ySGr99Cu@z9j2TO1j?3d`jt0DY zb;3S!L+ULNYf;K=H_KJ37oz}=MGROqzi(^yH#VykE%Y6cMx5&2g^)%wGq7unOoE!x zrJE=1mKk$$_nVb~N_n597j-M}Z!!i4247*n8G`*%toXd6*KR0zZ5=Akoz@<)TAZhh z*u8U+8mgy3zjKg%l*bf~%S+{Z5C@MQYrq}Lt`>A?9A89VFcmgyAEB>YKiqJHdKmY6 z#A4XQSjX`51FL`%!HpbjaM{`;USUKtb(05hMhe!VqLzj>PA7={p4IGssaPSjo~tSM z=^`e`LT~z2VdA>i>Ka~&r&BxX-082L zOKi zL1C9*6D~fOqZq~;P_gx_?nZ|JW0ZbY#G{9|qY#;Nwyb@q^i2N?tp zdthSm-cgIcq>Ow;il&iKmIDA5ez6_a(;A*JP8U_31S*0_n5 zGu2k&%;P}+ttSf4G+ECQRC0kx#>u73!85*kvtwUp%h>~bvopG0u$z>eD}X~e`%)LD zORM8=Vjj#eKUisdoweHhQt5g$2(M+k9xIs@YqP%Nb#P|;OngitTkg!!pz$q4$(gmy zoloYw5+EZ#_kjyu35sr(({CFEdSVR1$>$5*&u2TGE6HUo7WtVTuV$K1Uo{6=p3?)p z^T<(j3(;lWk$7Ww(|Rj4uvvMCKkgs=@3mEv)|J}sM?~mo?kV?k*|uv?wR_L+b8aSJE9}@buj+<3KrLF z>{EA|9CV2&V}v!g&y=$V!+EfEaAUwVkGB3OG4FBg+Oy+IC;1Q5)At^wob~Lg;5xP( z#~2mMIAT0Y)FLK~rm9|h-b;NSd12_@*|)bJ8GLzAPiLljncWfJ@~Q_)=u8ZV|H6R= zAR}|wX<`59+b7&v-*tnG!yvJdK^Gouc_?$WO@Rv+L8NJ|P1gU*Qh%Ry-%}K}b~Vi{ z_P@UlEnbfPa`EtMH-{a2pGn*0XW)|uPK03N?*&Ap45u}|x)Picd0oQAM+t)DH=a3P;h4t#_e(liQ)(!Ta(4D|fn>CkCba1lz`3-!^%tTd}+q965#Qh8>YiT`@2QbRpvxeFG#=Nek@hXSr5N zN7#U{2k2=iLvjyEP+>bE>}KJU_J9(E4JxCX^vkpyvl$zVZuprPjJ?m5r=zd$jl2=N z3N5qw+~~;3sE9C6KZp78;QCJNJGI_{UXqfCOKPKH(@@n!T(o|FYth6SegMMWTm<`F zB^p2E$?AHP+UFEdFb>&HF%=Ya)aMVa)@oS8LHws}{q*)qm!&4u70LDI-)wu<*;S zZ>Bj7F$`ahc?DizH`=jg##cr$z3yq3yiPvcaeMUXt$(At*&Su4s;4)WrpNUMyTU2Y zSVu&{v2S@(ep3?_k2g6`5Hz{V8jKp@M3Mw|ej?i5A55fMW;kY8ubvSCIi(Imtd4Gu z>;mTXGC!vTbji#Kd*$)YF<|oC0v?@k^<$LiGFK2QFO}z*_^Bp-BMBFF?jn|?^o%6| zv<8>Q{i9%X1_TAevKeEOnN?uSaj->|T?A|OLn|c+Key*l@e92~u zv-ZfCF+TSowggWZIH zGl9t|KtG-ngb0*NUcvyzkb!;9p7GqOqaiuW(JbSph@h?8;WLJAoU(;?oz>~ob*MKQGvUG64w8`Lcokf(&NV#Ve}QY&_c)tjG?@=L=mc zLW-aiiT2DJkegcinqFM{YaVMmH#>d*-Pe`4;JtNFXfe$E;-5}=KNE4d;w~@dCh5{~ zmxaiu&(kSqt$2|&VxQ|zG?0`5=iKVJ`tvxFhrAF?J+0cE=z zo~=wVSS!TP%ejaMjBJ9Xr0ZCK49e4hzQg|fGvsN z)O0K;ZhrY(`)IC)ZEtR1E=7PfsGF|$>}J^sCs3bn>Wq~+WGDBU{((W6q~thfNL_qD zd*k?9AGi#?j!}6Co9^V5U=99Cs?^ zLE<@maUzO;)9evS^%O0>JhqYSZhuu1nkU(uUQwc!rJ3Ix!ZC_d;6l!w)fDvf)5`qry7T!y?B>>#XPNH`B3wHh6@2vPbn_(f@DHDrW?>tNawgwW6rzp)30=#vV}kh znu-xOu1J#15j37Di*~x3Y|Fqmr-LA|(SUutc2_Hz;C?0V<366aT9d%s)hl>syQMRSpnRu=1r=zHY=rS6{?Jz3mlQBG3&sEZ zXV$MNW$E`0rWbzNTZt?#X!H~^jEdeLOtL#Qfhs^At{E2e_@=TzEM*|3uIy1Vx_MWn zgE2ERQGdE_qUB(u?jx79vLA(CyQ#-)ZeR94$`=})p8B??bl@Fk+Vs$>VRK8QYjSVk z0_@G59~9S#G2zC3L-Z5Fiw90>Mo(;DE)*E6j2AIS`ltX01x*|WemiX+FQd3Fs<4%-c z&0Q5vNC`|`<}wsY4z!OP0z~6EktcoW8!!Q~u9M!)U|6$4n%AcEQ%2VcBjwsQ?^Nhk zuFAUFA9kv|A@^CZ?2@jdcK-ws&O7tSikw$j7m?+@Lc5>Mjy+gmd`YvdyXF1(G;)*B z!v9h(_P>K_h2SDM_KQkXCl_P0-HNm%Ee#~H3i34WmZgr^a!3T0(vv?U9>=bOTb6Fk88DfFXc~^ z^P}yWf>Vf|(I!dRmJsF8W=UzWIV-zuKbovhiM5keSF*{R8z}T`#s}T1B=T{MTvwa08KyCQs z++sCbrptp!;abnau>k{p+lH})_m20Ty?Xn`iHq9Ip8&94fHI?s{nyg8$Hy@3PART0&xNF2Q>ukxv6g89M#K$>u z9# z@&I{|kxfISmp;zqJLXcb4a7ifxv1NeMx%~mL{znlfO;W~L&1F~LbU8`j51f#n z04YE4pOH?CjL9Yz`;p^YYq`y)bEyu}sB#R<8x|fI7)S+Eo)v7LOncEtEIcs&lAKiP z-#Fmu#{B%`hSE#iQ{Dl`R-2wcIDh7fV$j-231}%l=1vp*htDx2W4!|?4)h9JEcRPb z5!n+wWhKbo#6Tz1YPf#%bWj{R!Z8^l3{7w5DO@E8lEYigg6E25(SaE6|6&e|+^g?43aM zpL|tIOKV?@x+}G@TfM8RTm8&i!gdVaB_mE**?xTK=P`%T0gkMHq!STB^DiDTR{*^_>*x$49L8U5N ztASK~yM$KKsl-enD#H`C--=zmitI!8e=k)T3-=|2IY~2Ev*n}g;jDER`aB)|5j$)i_lLe~6MJhJjOW zwzuIMAt{Lda7YTYe|&;6f?d}&mmBiAvUI3?EQT=B^7Polj7W@vYqGzwY>@O#$J4`C zBx+bS7UQ4S3}UFx=U;b_YT{i1J64X$UqUE%uHf>{GxW{R_?{~%kpI?8KKQc7(&%+5 zAYj0T>)r>iFSQFaNFRLO zhg7sMdI|dXsqg%)_lHxuI)`e=iyE59J1vTh_5tp5i@^hLdAGK%$OjKb;@9q9Ksn6{ zyP=Dv%GP3YZzt-lyjf7wO7Q|6(X$>~4GldFn%ev1`vYI2lgs+h%-rxl%-;{pHOq|;yxDNtIfcH z=CQdyOiClZU!A8IQvIezeL74sg;(SZJDJcNDH%8%&L6=1A(vc|*2Zn=nb*v9HO>n5 zvNTo*u@je|w}TY!ETckRA1gQ10~nPzb1oeny%P6`8)K}HF4mCLUL{^BjQ%iG&N^aB zlk<}Euokk2Pq~o<_VQL4wdIU&hZ|%8X9;iYL*K^(G7Pe{vtjX?#82A@qjlP0fzT4; zOxO2$~8QPImyn@P*%|ZnZL~MomgqV_r7uH1RaNcm=Off zfqnH&x6?tSTq;1az-V&Pw71}^O@`i^*X^qMLVCjnC-xd4;*tVmZV}Izh6{S_9KvTp`1^>gB4sd z5AO*SJalGr(IFSBntcTQwbifh!)DlQnE7tO;mY&Q()_}UDW{UFVJyny!_JSA+marp zgT}GVZyPinIk5& z=8yLx50qbt#r_Mnr6jn|{iTz^;M96P4^nC>8?3IiU7D~Xm|lNssR0aFX%&_qdk6Ty`pEmJa|Pc5r`j%{aD^uy>sh<-I2T}tUg51 z46DNZ;mYB5s%sbZ!zLk&K+z`8Jbb2sW*2Og$oZvrA3y%B(6q;rpx8A7iV)UbaC^m{ zxjMgFL5t;jZ6KFGfr(k7c!dB)E7c`vbO3eOhs0a1}(H&>yq=LDHP5~9VMY+@YmNZPxU zlB0A`S1bU!U%dY1@%oN%tdW{>yQsL`V1Jg@v3#0eZp|;cHAuu}pDc8;5itIGYA=p> z49@%CM)4ND=`p@K9;{SWeA)3W<~8;iAqI#+-Q+*6j2HKq%k?nFR%~TB9ezQ(-$%Fa zPz9P(m2k5-3$u^(82)LlSie9E7)SLQz|nna~yi~CF`9vUW}b8tDOd%BBqsn ziW>TF)0%&3#vAGv;RjT(jGKLVClAc{7KMd|%@`F>vI#1#b4RnUX5~D;mJzpC@xQ;) z&SMqx=;8!4oYSXsmmqoh-pw1GRzwQC-mDFED@{sG`RePoj)ceH%s@~_-}Nw1Doe)C zC>rzven~c#nR{WmXwhDCXHxF{NPcUh;xmUWLSvLil+h=n=dWh>pfg-#pp9}P5wV}& zexDVzVHGDeo+}bO{9Y!3>_?Vi}vzrEZKs*mD$^p`o;2!8;{cZcVHK7E*4N z&<8!dm~3_cvPUG%bi-rnJNIP|;q%oUMicQ)?$Sq{*=#;RIS#nyA2!tQWF}YX zD&v7(^k1dw|qskSohk+tP44Pzup(e&Z^mcy^*tw8UsE1U&{ioKa*`0Dk&!zJ!gouula^lhx% z1+kY4t5?u9BOie}RH?pPy)NplyzXqZ>Q07T7J5RhCjQ(3Db-VnS_KU4g#t|(3M@=| zJ$k0Do!-4mdn?ed+{tfM;>!xQYK^Q%KJi>f#h$^=9RMTTkD$Lzhdb)-rjvsY>+WeEf@$Pwo*zZTrHS}W$WPbIc41@@+_;BB zcWGi$G-z>A{&+$IBkPR=XvB8%$tLfaHXF2dQ&HoHR%Z4_Y)O2{jW1v7$p+LfYtP+^ zEiX!{U7jAdNv})1s2Oc^$yPWs8cp3gs!_sQ$_$kFCB5j7lz&r!Je+EN6X?QF`bUBIzVKFMzd&s81f zYRVF=t;4a8iGCH&9B7r%@D1N3X^zgx`7N1o17+;aBnp7y?N10A3#%pWjKH}ZC6^AWQ+TT zM2JArA`37GD*d=sC=a}#p>b%iK?Q@=BrdgCO1`%YC8%{=%OtjD$@DiH6BJ6e86Y2hn!*ZdM=!Zq49}u<> zG$|SNeRK2Uy6wRlcZ`TH3_4!Qb-&|eOak~jG^!$o5oknm2Gsm8B zL}+S2v^4M|z&<95_~kOLwIT9*=s!FaHK3XnK#DJLk+`Gg>O*(lbHHyuee9l@nWZ0X{Ww?bJOgEgD(B z?mFGiuAz3C$_ONoVEKu@8`D*tr2qb!3Dp91%*`TAS>_ULelsO-bYNM<>W7)qlfSeM zbqE--AZC7OfLbDRx2wS=?Nar${VEtL1r~lAiM9VRO#1_x4|W~oX$)H;O$q1?D2NFH z4Jbz%+Iji`jq6U01J}g1go;fO@88ctV3{*sd>hI_?5rtNBCIz0!E^1x_7{Edi;5{X z(jx~CCdZux>FV#5+^n`bxo2oCL#u7Z+;#eiB#d#MYj)TYU@snKnZ<*sO>rd>?Wl*| zr(I9a5)*EP0R&zf$aoj99mB>7dG9R$peV5DiFXZ5h9$Dk$($@IpJ|Q%+|cNP^iyn1 z_)|${=$OiwJkm7o>9gh~^vQIVfkBVIW7nCq8N{kDgV??htUp6CQ!H7WvnonAq2UN|aec0gIHL@O(C8u78yeC&x)uak3jSd08-h%_O} z{C9{ZPB^{#?VM}*yjqdD2`2ZPEN&K>60*2#ES4(7ju*+{c1mA7kya2V zm~Xa()+J#rR;-TSNT+qrd?WZ(<Xkr;4CB7UD3ZWfdq)5ILjOGQ@JhBqR3s(!i|4m3s=E7N7Z-mUhV0h7Bf=jSj%(+U zA(A1qX?G)L@$a##K2~5sF~CiYd$_#uC!SEC9BI!Jfmq+Y)`3sfG=RPV7XK$MpWwO-GUdJJZ(&^hKhVbmraTjhd@}Nkg)QpDwlhZx+kXzA) za6X=*Av(YwYriq@^$9Z3Q*($^dTU8P3+TKfwsLhTd|_~{sFMgibdLJRTczQk!y zWpD?Nn;Yd~01LoPS*E6oR<(cK!Y#+bg(HF_R3q!CZg{D6GE$ySl(kMXR~>p$kNt4&!OgX~=%`E9xuR(JS6CFZ zi>Y0HnS;KhjF{ndDPNKd%JK8Y9?E}6l#`{`0*`P+z*PD*qPCo@Ujx9q;XX#6(p|T+ z)gbK86Izc^-;gc8-=S%__TYCz$GE^L%UuI%YDj7V5!7iJf|48QHBLYw(Er6X;f zIXr?blrQQD?N1T6+9TBki)GANE%qksU8ZK(-x_qFz{i(2POD>NE`O|=Z(gpYPxv#37ef>Q4Jx~D(Q^bZDajdMYut$u7cM))*X-8Yp z2x}a#Sh*8Yf-yjpW}oieFLHYDUHOov$C(ZGJYPU0%B#+3R2^=R^+^@65&Pccgt5)@ zp3spdC0eG+gMbg7AP-8#uDgq^^1eb`4L%YT{#@Glps&{}@Y5sz%SV|a?Y6RliI*;? zyryM%Sz_6D@PK7;hs5wsO3fJ>?_%IpX|XbF6e~2aC>0kdi+hoQ)RPtKz)NfIJYl^E z%Y0}X+?AZ1j87N&E(G+HQ;Imi#%IMd<~+?9mq(c<5nkBQjD^zTUD!O>iR0?%o()gQ zQF)rvIp25BjS<#ebozI}r~v5%=xgcBaqawX?0;@)D*$-o&fP)W>fMrmimq7t`^yiH zw1-7jmf94ww2SZ|h7^j5wD;$$_Rh)@^97W3g7MF||X zrY+6a3M>x-_~S5GtVGGnap*UQYs8#?JQ#c61zM;E3H#+-_vp~mAi=WP{RqoR@Tnhx zygs8#*IdJ~e2S)+z!Z@+w#~qGORJ-QYS_c-<^WU6NB+;U_y^#dVMnoRhJy~j&w@eg z{{GWZie~fF1g3Z_#~|ln0&u!8KFddYksYrSLJZ&s5mj=#VAW)gRUK z0b zll~$|I_m2cCn!*l%?&>_c(xK5Q?WdgnhFAa3>-it5s6Sm#H`vbZQLzv4tER41nQxe zB;J93X97PcZ_~YJ#DO{{Y5_q}S;P-1n@1Vc16(|_=G}{+rV0|hhP;f-+sAyN0 zc4h+LzhN7P;(<{)xBtOtNQLQBZG8t&gh8N=;71=T)U$i{v>vv3YU+<)c3Ft7gY$a_ z&*HNm*iR(BmsX`g`!q@UuJhE+y>~xWq|V}W1R9JRel5n88-CG(J_h3XNyUt%EDsdTiQE?tTsY56*54+ z^B@;>_*p3;I2=eJvDHBW89svLF9=%T5Xy5@BK1bBHKz`5`lq#R95`AUopP`^Dzcx@T zH8_tuNaET^rx_GF!hB({_%!+9*V`k4Vo^k*ySR6TbCuT1sjTW)TnEGdp9CPZukO;^ zOYcaNHm!_x*nm4<2gpBIgZPgETy~0DPvB}fkg`)oqp|LcX%n^m7u0r3mZynCE)U{L zZ%9u_?&T)zCOhvuf1v!3%>;>1{Zjck`vS{sl;4_F(04L2{5OEmO*yc!xf{qosd+Xb zmYy1xHv9IdM02qINiZaiXe_7CIUaQL@Y%+qJE@%Hvg+>>eOkXwtFLr0!lc*(S+GG{ zsZ>kT=9g3a0p*gBkxlR)z)nFzl#_;1r_tg!WNjq~gJ}v4Wkk{NWU`>O1TTR8|rhu>uLo>I!+P z6LWbN7NwC+Z}vm~wjM~w53f%2ZGOk*$RqM+Y?LtqeS!~?xG{wYpYW)9taP-kAKJ1@pPsSP z<-8TmX>Ok_rva5>dZo3o)1aSIJFYAwfO8o$uur-Mh&_LFB;Ep~lK5qy*vXapMdPuj zeV9$*RcL+xPlJxm1JDzD;IDO%9k5FV1*Kt>0`T=uAKRL{M>~4>y{%$6>@@V>EhLIJ z!7HX?AC1r5UzG%qV;oRD0w5O|0=21%3lLve!j}&$vNUtFYVp>1!9J-}d4+wadYXD` zuf@Gz|L&vS2mgl!6@jU#xc332qlVzdK$#otlV0so=vz{Tb)yWBTpezSuEu`w|K4yz zTJ{R~WP);CRs|_%=4$#}3K&oTymnHb2872i->{oQu}h$u6Mi@6vElBnEbPGyw6ziA&HemUkAh9ja0;h6uglY{k{#$*%uX22PQ@*G1FXAFTWcN{+YD0U z#%;${)AO-+m7hh#W1`suydlZwg~556RO~xn*YGSYV=bf$x(5g)$%nQSIfGOFVMHxI z!73G+|8$4krY8nVcO&$_2F`hAyJcMCc%5|{b-*i@0k&oSbVy3O9YULzrQg&0BRepl zJO^Tn+8eD}W0{PJsxkF4@O4~&4i227eHt;-D!HA0fxh&PVI zA5kK0w^A|x-b8$))2zGiqX-`xf%p`Ef@08?AhxPM)V}_^7c|IfHFUC`<3~nkrl|FH z)O9Bt)qi_lYfopP31~DYyUOe^Jql@iE;%6Tqvo|e(C0_qoSin~s5jp!UkHbE^~rm8 zhDaJqqxp*+k5IzYxq+AcG^j%J93YC1uO16HAxG$IAmz$MOR;=P{_FVbDCnIoR$A(jE_7^69L|<_5x`oBC*S`k}!D{*{U$XiFp4H5$2zP0h0b?PwR)1@8dD% zqt`?SX9NnR9k^O>0~5r|#`9n>{ImX$a{UO$`+D9?X>B6t4xsY$=W#x7@U`s8tNRM; zg}@CA4KD$DjBGw?z{dnStjLHW_xfk{!KrY*#v;{!@Z(ker%FA1KMzEv0e~FvwH8ut`Y|^zWCYfis}M@*Oz62?j}98AfJD za;*c#`>!sLd$mWP)`(2Y51IXU(c)`_a@$>pMY{Z%+Po{W#9}kinA7S$vZ1zxym$#< zR^;E?CvYp(ebrON`;5eiV9bP#8)<%IvMJ+k6#5ovG(7>zPKeVX0CSS;m$ z8^kbnEg+r&&)y(2B1anB)X@2{QO0~{X+}6?-6b1Y%%czI7c7uXM#-NJvwIqp ztSZ&5v~eR0pwRF#n7Q^oiBbgopa2J0@-Dgo-=8arZv1Y))?H83-B{=$G#@-1@h7&|^zRerZ?URjZ+I_c% z!jWs5s$?OV?JKIDoF=bU$k$63HPqp6rBJ6|a4PWpgPyH(; zQ{JXvQq;fTW;J2kpj(t)S~yG~lMV?%X9ZUDR|?kJpG_p&@0T%}#BU!-mk~`))T(9F z!bGV7BbK1T)|>E#MAI?9kq8|HzUvT4_S!FVH6;8cyAUa@ZznB9GZ!5cd#o>8hd20a zZC7c4zb(Vlv+Lzq`#)hSo>Sdnx$QQ;q{12nH!bE7Z4|+WDK#9j&CC6U<}j})(Lmn_ zElQ~j@g#w{HqIQiCOn{dDGoc{4D9+v7#|cf!R$!%LyrjGNfl(m)FgGdF@fVOKMJPH zS~EV0odJU>wfXV_ly`dRxW6B~qzWp8B(4vxGU_=wVRdT^ zB7aF3OuN@74XRLtPmni2Ii=!OV4!j*yUf6WW2i}3@-7CE8D#U9pasfD7-SN%?}OpVCQVkLPR@-eYz z5Syi9FeWg&{5R={@l`c3m_NIb7SP{_E*yVXBEcJGTv1UfFo-$;Dl_E2?k_|uK!^K# zMd?$_1GgTu!!J zaB0E0h>+lP(|tt+ek9BUZoN_;PJ71mEGI1RUHhAK+Y?>*ll{%lUkE3bo5-~iB~{qO z{{4x}z(F$>R@6W3+Xr%2;(&bdCK)JdpXF^S|5el3hMH2% z*CsCK1v?|{eicdz+4YxEAU~1$+AoA}=FJ=n=IO>4LQV3#X;gv_`K<1MR6-&} zLN>?-4ErSlGKAV6IA8>-$R%XP+!o@>XaSw-eTHRS19U5R&o*AsW1y#05#Av7NB5X6 z(cu%=`x{J!TZ=bx{WIAWvUrTelEP^ZCR2HYXB|_VE5>^hYljRu!?UqbXD@5>{1Vko zt;KL<4Bptni2mg9WifCCEt7^QQwL=a@!VG9L6J;Y-`=ktt;jALvEGW2dlT<_o*A3A z7kH;CW-TU6=<`7QGJ8GdS#s<<`&Hn^!z2Hw~o{%U#F z0>q#*8G`LIiLHg!Ki4V)Q*$$LL@d+#O+PnY5k8gZXB|vLx(8&4(I);@ECgrS z^D{(}d&EYE!d478$Pm0@wXcnMf@&&{Og}X|!r3ZTeDCMcp&l<{ed!eQoVGv(vyrAK zBb$m-zhol|3-sr~IF*5z`vuw~WH!bJsEGHQJ4&OGrQH(}jqv#o94Jb;guDUpcLf97 zpfFj?yWqAVRF5M9GlGtv);vK1muEsrdu{-e4_F8Jt-lqZCx|C7O|guwfpdnMk?{4^0q*F%tXG1!5y*jNl=io*&##@=Omr<|v7KzMvw}m&`d}+Wq7QccxG86M9kM zzDIr{Mu+kNX=$kG(dBD+4Z?0rlhV)a(>q{(sFW9r)yO{(dCkO{{VYtcYp93Jn4tLO z=HcplY}W!Cn{%#%tEy&37vAY<1N_g7aTu&qlyF4VU9x80$3COk@Tn7$TE2+PB{k=;>WcQxEyG8y6z5t&9 zv`bAIVS(Q*rS78|8m5QzPGHNNvOMil+5q)!715`TB+6P%fBOnML*y8^zWASu@b_P$ z=DYs;Ye!`H!}mGI^7-9P(+_nJD0{21$sPRVNc1OC{xOx+@T(6stotT4P!@lK)g|3e zM+@TU2fT_#dc~r7vK|_cWlF&^AN}sE4ILt#@PhQ+^zW=Q4>QMh>F%>uh7a1y*;M+$ zk_H$VXCd>Y1+T_fA5^GI^G7+2C^PPzA&I;44jC7!l0o4$Tty*E-%uRLI|*M>32li3 zu-wKskZd<(DkJ%RbcTVbbzC2$&Ndxm*6|KnY;fl-1&t?mvOfmVYp!hNw#fWld%!I% zR>^MpBTxUK$GlpdN=27he!#+CMR_>Y!tbjI9S!|s8|}xh{*%-x<7*FDzH(7Wt@rq9 zRdeQDE=98mWf99I!l;hFM?9lJn@+Q^8+*PlqYvNE$O<$OSwaWhx%JR>Gsi54c(b6h zbn;8-pkz2@$&V!&3Wj{wkl>FKP%DSgt^JArlG@Qd;}M;;58-xQQMMJ`x3u;WIg@j7 z>4!}Yw7|A4jQ~_wvlm-H-(gBDWCe{cbGbgN$E0FU zl1amc`f*hHA-0Uh>x6@dx<2t6u7VG({sjkkZABlIu!+0+b*WLgHZ1Ade@)Y$D4(xV zZ@Vf!|1i++$a87M$>S8e%x6~D%jZKI1g3+Xeaf#bZI9K6VvkOK*OcyI*ky8@T)q!4 z>-6BOwQAsV#(Dv1b#3yIk*Eru(#Ltz4EKUq5uc@^&LcpgRm<}7t$FF_1U9+tLSO@8 z_Z9P79dwjV&%^Uj)#t+$jmZvsREH>R9cg%gKofijs|n9)N`bQuvG>;V(T~n{p5!do z-x7YEG~F%9Q1$8|=9wkHA1k8t;XNpu@+OP8!LtxA$o8Uk1bQKF3G1Dd4XHEgZv+>->-VE&b?>r;(dP0+icqW9x2)!w_wf~cDLPutVqE>0F& z@ReATBH{Nvm2^Vm8xO*Z&(RG_PP5`4ZlAMi8APs7BXY%AR)v>Ow|K_*MFo`(sgAo5 zogz@<^IGs&uJ0G4R%ZKT$=#_yeo`r zg?2Zg(N%{Kcfj5SC=cDChv#T4UDsdb&Fd0hlbxKZt~?Bk5PE(z7`A+T(nm{o-jHf< zwbfkl`Bo%6yy{U_vFoGozJ|deOM({qLspBxC2AzRuTN;LUhFaJ^W^Nf@EZ^a&wO{` z`y*7u{cXvrppI87xDOrw+7+_n9ZsCvtFOW6(vH5B#aT&|q#8f)U6by0RJr9#uh%c8 zH4{CJL^lpV%D>CB+&FyJ_#)L(E-+%+<%G0Z>v%_94L`QAe8wv)M*d2yT-8T;i#t7g zO4X0tCSz;{sjanC^kI~Raj@n}fy-~Tz11aQ&DFOOWl|^oM7UkkQqe(~x<7MHIZV#o zg&t*Ai6hlK+II)vggh#7ueZ|M$<^)2#RDbU{0wZ7w!V=PNus*N=>cHK(|xDrea^Tz zozSwJPo#P++xL7k2>*p!%tt@ZhS|W2THW?}N-*qp$|cYC54PqzOb+hbrq{Hob=n5H z-Ds*s9q}B(!|R17&m6v@<+H+aX(bjPJ70euUo^Q)HxL`Pi$7gkcK6P$l$*w5ce|ZO z@<#g_67NM;{3@zYmbGf?@V5Kj-A`qttH?yJ&cItZm`hN0KR`CFrW& zSY9nC)WS41DW`q-3aKEUlgc&z5S%S;iFOcdzK zEe}3XD^o6<*EDE4a1-Wt(It5sv&Oj)JiUrKlO|xu7N_n_SKoE1cGana_u_RKPFOfB zyfvp5Ne~E3hj!mUgpaq*l{~duhdmfjleBAWY)SnX*Ifaty;mQ3JUf_F;4~-j3ycb> znX>rrugtz$={*f+dU5-r_rFVShCZRe#|J;Z0Fu2y0$#SmF+#7rS^ABlTNb{1eEZ#k z#Uj&%QL$VPf9dQ^LWqxHq;*wezG!{TWQ(+nOE$q0g_v{V0oCi%ZEq@)L+M;YP zkAIh}8HWetjoF?zzE8X-Oi!Dh3YT>&aE&=UHFuMVn=EY7FFc|;-oo_vXszvceXQA= zZHEnSK-^(jWK4Y>4CMS<&$66%UavI@1TNj&?;5p13w2#Qq68qQd1kN5M)1?5zN%_>Ru?;Ta9?#ojup_Hxtw1t zU(|HJvM^v~c9jV-1=RdppbJM1rNZhm4*+TZl$1$NGn%4oJErCZmKu71rGANp+`r?O z$3QY5Q?9?nr3lJ@}mXgn{~y z3#IN%Vb+!R2nta_5&F88a{z=Q_GafG5#1R`VYSyu_Pj;BN#n~6;mDz{B%!m{5A3Mp zG#646Ibe8D@4yP=(rQmSfJ7nDJvAP~@o3_9~eh|o0)-0ql0~PNzZG0)x6rQ0#ta=1mr{uwp)EZ5m zMm$9e;&rNi15B1R(ud%0z6YbD8ERqiiH_&`lL_?G@o))8NI);%ywb0cmaw$F5YWSr z==-ZsVIVz3Yr9ROGD-6;?H2iAlQoyd8dhkFAy?O_n^w!&re5csNGTeo?&_F2Sp*zv z20h!Z>=I`eX23di`1lxwvOdUj*pR#^O6X$r8N%s&ZYTyy`EJJNB4h|OQPW$;q9GB9 zl`N3qrKJbs^-oC0SuBnzXTt20I8nioz=`hl?h)I*D#)K(#vt)vPpxr1l^Mw6K+HA> zM!aO7kasg-)QD^Zc-C#f7Y@c-zYrCi|I1CLcoc}Vsx<+J@LJ`;n~j3aB`3|_DE>^A z+usGf(#x?7w@2I$`90Ww}DjutjM$TFN za1fkGarF^OPji#AYOyH$dl)+MGemng^q?|ybj}*!P{#WW<}Un`cokRk)@P}<_HlyL z;sCb27?|x8bRcl=J+}sy1Ee7SnpI!5h;vZ7xsBi!qT=T7o%rIZ$F<=SX+iYW4j{Ho zA=gd1e5k|`2c%HVKi>8d9>&0-3{A(*L8bJZ*`j7LLpQF3#jg=ZaGRgmnaY|HSe zI8{b+IT2|)2M*z-X(SuI{OI!UG%$dNA^M+y*BDx`Nyk>t5cXPLW!DLWWLdHc|o>VwC&zJ$fONA?{E(TvPutv=d;uhzgQ5jOu0(kOUxj7;@#Hi zNP!{bvcV>thf(lm&^50`yH6^xDQ;#zveQWdLH{ZeStAyH+3&NRL{!&m7wBEie3B`f zqwu+aKE+ELoXLeM3jrB62+A^_{vqj`$Q;OInTI{^?Z_S7g8)Jwlh*Rl?@W)VYh+gw ze@20cRTs)RAmAIC8oP)C(b2DSyqHat>m9t-hn=z6Da#xR>=VeO*jMsAI%XOxGI!{r z#>uYx7HnXNiwBOwnzI|TO%z;V*}9}l0P!@OL+(=uzyz!Uf|M^ zFlMuAjm&ugr9%a&;+G!tFC=!1@yO#wR8{Sb*F!W~Gbs2ueJ}OQgT#c~tONVp->P}I z$cFde3KRYha&chij6sw>EsYI(Bah8rIQgr0ZTCSoISdtvtz5Ls7EV8Tx9Zgd7J_5Y z3%m)!wQGp%g88C@*rlCAu@jyn?UlJXgh)M_%AQ?CRYbC_2O;AL^!mDLuIh1A<9xm10bLz&gNGK-Oa*r@ z^9iH-iWQ3I3L0FYQg8kZA)lFtKac+{cw=n;hn3uv#lZgdzpDjwBya?vqgkZm$qY$`;VBtdHF`kSS z1$_x93?tGKT7@yRFb%))x7c~)FFHg=h^(Gi1tFRL6g%tcje%oqyI^lEfyFRoc%YV2N3 z$Ld6<)-8t;=F#^CZDHrEO3-SNBmy1;qXhmmRn+jQc~7TlLgS^(5v(leBBCbmsPn9H zC~X(yaIJ9vl%XnB`Z2M}{G0K7So6N)bXz$3;Bjxck1LirtWjgQ*Euee7cZ*)l-;5?Ah<62qXr)nCMxJ!no2*(>K3?8wyG)!;7 zM#@;08|%3IT9Ey7ZEP~tFCc}~^Je{EwWitZqR%7;m@m|f##Hj%YP24q&PQ~a-19*U zRhuX#x#ey#v`!$_#4D4(Mi}i8Y}no`ykN4d-MJ05^Osbu#^GF)lUV%cVl4^Q7Z2N0 z)U(NZu=yh1_ToeXVkPX)Ervue&QO{UJD|U7_qv$gCvZ|-Ju@(}seCp&$JhV$&q+^XeMNnP~Ga26j;~w;5ak)tigCAkhD!l7e8~Gn;i9SdQ-1hjjgSS zO&rKf;0lp4m7=@c5Bu8tPBciZ#YNTd2<~p=;1)evN|g&j4q7AvzBaT6Z4l075z=aj zjJ9NC?U|8Hh^)o2>+S9KS65c1kc&o_n8IAEuj~2kZ{R(ac+y!oq+Y; z(IogT&DEWRQbOQrBbSF#LoVCh`T+9eR=~mcC$VO#B6v~%T1%{XnQ;DB-w>|+RCGdt z{qW%W5^Sf(6enfSGr7Jv)0D97k}qbjI4=-Ck1~~VNG3bqAXE0%k7GB}5B9;jgk48# z2sQ`7yq=>M*+ey%p(>qllpQ^Oe9X8V@De$eDjCqOheo3%W{ZMpkA>fC(Hj@g)@V-V zV=9|j*bozPaQNCxHB&_6(l!0ny%rf~rO@_h9uUJ1U%Ga5Zps5XVO=K?Fs)~c5Jq`8{#0|KHWjAe1 z!Xpj>FcIM|c5|~fg*S283=4;0B(H8Nf$QG!vPl8bMQNts0JCP;9-mw{cG6g_qSl1O1VMnTc=J(|9Q@m`z8W7g>?3m%H@C)z`)#i4;BAB85N}705f$RLgVM z2l))>&2*~9>e63h5jrN437K&%3VScR8pW;qrJUjRzUtnPRhz8AQV9MDEbUWX7l4?f zRf%9pVWq3ai{53t^W-~v2(}=l9)WTtvTo!e6Im?@M!3{Jx2j9F;Ofw7@fTZ5y^Db8 zb*YioO{v>0+&2T|i8)KhwsN2#CU42M(cs$I%`7l*2OZBpJZ>j0AnE2ixVJY!j_Ba( z_W_ZttYYaCQR6i!DIE~U*~B>R}Vu7C?DG8cq@8ME>1K=jxpsK)~F4`k5J z)}mt%Us))2p35|4FCk>U_=pz{(+L?yT~KftSDoBi+Y;i0HGLHf;2O{M*VJ5I8S82n zTd=;J?D+6_Nge$m@e4$72scMI{sKnHmf{nf$S|K({NNeC|{MaEBo5gYhXs ziHU|tJQ!}(C~&t|PjXZ;Jcn>BRD6eF&r>`hYEmvso}{?aP%I-?AK^Jm5N0oWLxh!! zl2}~TDcGoSlIIBPWd{vH{=3r?w|Ql5$s;!3HdWR(O*9-dJdX5yq55cqM&ju#1zH+_ zJk=Qa*&u*1>l+O=cqA@cWz`oL4-S5>k~kD|WL3GoUPdkv@yAQE0UQFEt=vuO3>SVP zOCg0SKEu|1w(-ymF+mA=Rd&Bdl&@P$%NVbbIZuaeCzE=c#CI%L_swh zMA+NDnY+4G(n6hOD5Xh~+Nct&>hIjDHP^Oa@=|Dy`l~4!Qs+e^N6;_87P18s6<6rt zWWRmlhUG;U+w*ntRNmrocf7C(RXj0)SJxL0ozXP4;#$W)I2D*lhMPSCB^O(YdJtZUh{rd=~4lR#(N__(&Ae;M)zBhs-OfNB8p8sSW&kcTfGE7)YA8g zf3M>=l8{@pu$vlXgHvP+3$Uz2bp{8`Jt4%KQN_zUaU$SHLGvKiISRL^B{!e|SPXuI z!$?=t-2o;J?jls+3qwADfQ2T;Ky{gD*=& zQM3sOiI6BYlF*-9EIh2i!N~l{uUIuagpmHFzMEzT8p<3(b5H2(gGSpdF~B)gzN1Lb zG|h$j>`p?Y=b8SQr%f{lNM>yKm5)0; z2cL+2{lg;(7b0+=*+N!wUvr2`i$0*xCo)Iv=c=`i4Qq5gGqG^i|G)M3GPhAlz>+(q zgg>{c(mN?GWgsg#e}IpDzSECxI0m8Oo;po$k^JLCgy?@L@S;M_vL59NhrsHpNC|mT zu|kr`;mXL+(bciLDjNSi?O3A}r{v9au(t*TePAk!@Q8UmJdjM@^Kh^HN&p*z?@-ScD%R>%=JgxGPmAFD-{*V z`lQo_I?$rxSvqXC@mqvL>o~9dW3XZ_j{6Dtu04F~rydatCP>hW96%ZtUfO>Z{d4Qf zRk7lhAP(g@f`EhX+F&8Ys;%la{%UReW*fmmgcSao;6sUbIS7&&y>gLC3VjnS-)>=O z1L3vn*B;`l_RSe;$ao(L7APbUf_J(Zyn=;8&XMH;>;fMmc)(MXk@67z=^Y7P$H%Rv zPq>y#8%ig?S-1*OyI5NFkbXxzYe^v58qOvAzp(F3Afg~8^H#ke%Zk~!UURc$^U|^_ zpsONmQxrtkQfGk@KMj9V!dm;N5uXep64jgbck!w|o=!tIyC*mZJY8ktM2jL0XR;7< z;r~)iJ_X+GiaKJ3t$M`;>WgyF8Uw&Q4qhoKg{?+6Hzz#W_bf@FMMA@d?#JABp!c9o zWBn62>bH`TkBorFd1f239S@LgJ(trS#Kj@J6_vQg;P8`;bB_fKuomur!ls>&ld^3y zR*sZ=MyukfX2JMW(_m2H=k1Jt+%z(z-p{ZbiYB}rcs7-vW9@EzuH(rgqo@p;pJF(h zoFTe!gtJ!*(!(}huWkS!S2{$%uPh*Jf^v-kL!j~R;ekZ1vwPSWVVXe2hCrbecUZfrWU~~ylL`*{ zL&@XW>td7S;m^oI`{>}y$$qW+fEpF|xq@(3gx*xN@K4t_hM8#i=cvVi9!589;1 z4wyKYV-@{guZt+7+>NMMK8;4Q1*xmN`om|B|wxYh-klWf1A zzG~0$cc5^^fk;$g(fBc8@X`h@t^sDU2gg<;jO7WK#qud^u_F2v5qa_OaM z!HqA~`o^@L!NNuI{`w4~@DE@q2S=q|osC1}qx_=Gsz46dHWUObVFlTe{Yrd$tV0$6 zRnvpziLc_JZH^nY*Hv=T#PStmkPnf#RL|pEqiIPVR)VMh5XVNgH`LPF`<_;ZXzJg@ zY7eE5f6P->^LoF8JU%yb3_R-MH4yA~w&zn&&mOCgL57T>Rg-bVmj*(sl@8mj zqIR?*o|ae!HD)LXa*GroVgW%g6z-8Oup}J37Q8p(i2*;U;ixTXB zVlbFd)zu_?<2jKMVFo0~^U{~tw}EsyX0u6p*21loU)@D}4UWG3owJ*WnrjouVe-ICT7UId$`O{6A#ULaOSr;f zSnWt`@bZDZqkl;pd~Ol)r20SVQqV@u*Ze-bC4!A1DJAli$K}e$f7Y2$x%dD~(0jXz zi{C0(_joe~jLP?vhRy{=2*4d@ev)^W-og@m9na_b5m+6{!%E&OdqS-V<2d!ivk-Q* zgyG1M17f4rN-}5A9Ln84B^fbWE2;?njZs5F3bWkcdu3{c2kNm<*4_~_cwAokX8^Nm!^ZwVL^R!`7(<>qv-d58~bBuEw)dRE1ci5 z??aN&;de$&vtMWXNC24+zolbzjk*D;3NC5?D*>ePYg=0B*OZpZdK!g3}y^_pGikyxscjS@5 zE7BRb)}t@p_WHZC)Y`=t?i<*Wmzh}q+~VO8Dz-)$KGZMRZSJ^nvlzDp_5Bd|N7Lrn1(PeGr5u))s8@B`pKpeeg|i0BC+siPE~Y9GvQuEp;PG zNYi>;K}4EL@nhJ+kVlM|Y)cBAO`16Y@1R3$1S_%?-^>Wa4UrmcfiVAEE(~Xn1s^~1 zyvZ1xWR0Kv7kvMwBmKk{o(NuI1L1O(_-vu+buyzWaFqGUssfEsj*tl4Rd-!N{ktk9Y8d#TB1F}#3HG5 zk?gDNn|{a&)W)|ptc*_S;Hy-9g=!7JXF=k~%MypCeql6npg)WJx&4sNhsh`53&d5E zCiR=&Gz&AfW66s)mIA$r8pBM6SxR(h&DC*X(7=K3q@jdWTlw*yj!$(WV9sB}DSL>R zLx<%R3-x^yBJy0thfFrfJVpL@fCOjPpEBFSVdOV`o6Ca{p6bE!sWB&9ou#w>W*dW4 zzjj5fikAb^@k*AHuyriC!MJ~YBTV-6cRHV0&(KicM!K+1{blB538$rWsIq#7Ice*J zm)>-8D(PzSTgTFkWHyL9n!dtcwV00OHR+~61PXc>8VbmP#=kAfVVMhR1G>OPWjeIo zRJN@LQ8uvE2)4*-w#yvo_jRt}+(b9DZn%DGAF`ynKUBE`7^SHsj!Uu}8mUEzL21AA zHvRtw^56L$fcihT9w7o>msb#p1!;H`HNMOy*jf~bWgxGw)pQkXc}1{&Aa9FTuHWPa zRT1S!4TaJ_vQ0<)jn*8v5g{1)az0)5HUA;uIi6#^>$Y&ogTPElgIyLzBH#7r=K|Wi zQS1@vIays&p_U%W+cUBEB}=vdolUqg+U(AfKoY9mvPGDISY(A9hEYdMtU67P__H-& zb+fi|2zy#$X#oE9{hA4zoP4UK4S6O)&c1gLS7_TG4yc2mD$e+N;-Spvaz6L0`tW)y zA^x`bPgoLOd%n!9s;W%)Qk^z``O1jA-G;pTf6*g01TM%c>xYcnci5CbhXq>rqdIupwW79NRsc_oH>XMaoB@_2H% znpG6E9nE<6Ev&^Yzv|F#^QW&(_`@PObJc2EFGwsMx%e`7bce;2h2;kXm$0{aReTxc&|k9cI1tyu*I0r-<<-dK7VVByWI8SdO#*o- z4tq5g1uHv_!UC+4pT!~n+`5#U7&=43BgthO;?1#Hjv?x$f>T`Hk!>2XoOv1O_CL4! zuZ>;ZQUV8(xVdwLH?OBJXq*X4A>Efl-jOo8lP$ZETp3QZ#1+oIAI{E^5=n(U4DT#e zrMD(8*^78)oZ=sP{JFK?v2CxFn7-{M1L4x_GS)v;#kn~uZl1+pYf`exw&9|I#Rceb zKa^txXByFyAoBaCh9b>3OrUz>L%W-bYC4HLm&q`Hg9L%Uw>QJ8 zz~b>@XH{y{!QD!tWV#ZXC*Q6*t8g z$F!+rbO?8ZHM{LAUzl|Si=K*T(p2>tc9B=}7wQSlInC-N-mtJ2=HGsZ@^BPj&&y4pJu9L`TBo4BTHTNOIajR&e6DDc7hPk32e0WjFfcq6f3TjD^T z$0`z~O{u&D^jw6Jhrw>mS-E+t>SV`v1pE_2M(PNsuUp_j^Px)f#tlK5jM#?{|5sIf zb58czta6&QJ|x2YA75&pYAVIlP8ypuk0%3uj-E3>T<#dfhonXL;X~b$UIf6iEU0}ZAUXg;?2nD z91Eqjk(>~B(x2%7Y7AGB_C+m3VI2N@gmA8=!S>I~b%TTr940Ts0z|W*_?bLqM~K ztCJc^2)cxCQOlgeXcD~vzg6$kV3EvbH#0NGPGZSG@Uvxas7aBO35<9$dl`o|57ii| zJX3yJP*CeYayeBn+Qas49!kLWbC%!#+xvbZ*5dtt>5ry~GtE?D@6IoZ=KaK2on>mk z*O^(9-+Y&_p7Fxi-#Oso$qdg-0Juh}R!~kq7|?LppjJ!~rQw0KP@jLPv4u71&3<4n z8OhHsd6+efC-(%+r7V7a+hAdO;5to=>zn^Uk^EZaOQZ(+qAd&_L6!{Of%p`*p{l-$ zZ8ww=yo|kOXhFt{1zNh6d!5+oKr|YR-NbpkBP5gz^dEHUoAEf+w-+;o*ejmvA=v)h znnrhL$P!L9<0oM6F?j|!*UX!Me8lW^ZP1Us6)2nWA>hCf=kYcS4yBC#dN4Ng)HSKi zXzW+qP=P2_+=$3-6ggcE={0QXU@99EExR^xX?o(;2lxybcv3=;>c9ro7)|HpQ^fbZxuw^9z*o0Ol2iF2#$24Yh26uNujkjNdr? zJO{F^h=G&|+x&)ig3D7j*|DBnD}veGZ|t^QWBf%k9~h4-3YyQx70AwnHI{5qW0Lv~ z!~#Wu3Pv6%no8o|WZpMWRpxjTf~y*QPj*PP;{ZaHc7vlOhPw1+e&Zy#Z>`Al`=im;AsW^ajxv)MFm!PeRU3enX9SRwp&BH z-OQ>3H2X^ZP2*(FWq!HbWrg96eE7q3`_~GC^oE4*(ICznU|YW3F7>-~EJ6s8RW(36 z67+;~QX@tA4h-+#8G#+5--$LfIqk(a>Avyamw)!f_nS2z&LYvrqy(wZA8=3AxLQ6l z_(XVIx~OEUFW`{+5S=1iE|h6BA21;F$g9&a<>$TTOj-z`1uITEm-&+IcNY!4>3^ z7jAnA8R%Q z@h!L;4aQDd9AQ7>MGE*Rk@@GAlh<}cu1z-4HK&VT6|)SDka$?(K;Th?77AZhmW+sL zi)M{}hxRYER&q$Yh?=`yvM{^cR=El~yXTjAQHwH^k zooT9VL7X$YwrIy@vz)OP7l)Ly$-T#2!kf=__hzFVNQ&*Bj34g^)tWdr3SCVGZIfBw zjkNsxX#_jwVnb^giUwEU3KBGI_|_P?IcVt=bSDg-fH5(`K_{jW%N1mMKe#_LNXz3 zv2#l`lEHC$n-7gP3GXUzjGJC}k|q7(nGt51%9Bi0PeeKihAS(j8M;%lck}>$pZ!01 zU>{PWQ=XL`*^3p=&`Mer_AnusYxdq_fW(hhGu~%f27W>nCVm0%N1Jzbm*UbHu>d)l9*VroR@VX;E1P1P_LcYe40LP8Tg z+|kfkv;!`E;C;d-cD>3_vxeqm zd@aulz$xJxRIqs(G_PIk-)vrHlu>ZS!7h{~FR97+hObHM^Oq#m#&DLO1@oa6AlSe_ z{c4jytkI{sZEGfT0_DUtR^Ts283nbR^kf6`)Ur^yn0NlFG$3hCc<{nPBNA5{Qs%cy zN{mh?`ZQ$I6R)<=>-)(<)u(i4T3eDGrppYqM}Pzikc8m=Uf^Fg2co@(%R9DB`#eK^ zom&=lPQgBo(fBC_Wud2{dG~hyFY2|b?A#VZMC@3CzoH{vKY-aK?fLW;LJB#OU?s)w z0^g--GIlD+34fQ*B`=-`WaIF>mB`_4CJt*_+%~>7L6o6yt=Q@`0J>@itCd!kzqfTa z?@ZI!sa?v=6uwiM$efP5S|}3fj5uGC!8v!&EIs~VGnJ26zZs&ICi6gYM23M^`!yT-t5V{ zqgHRwjR(v+^CnnsUwspHW4U21XOyoq1==)fQZ2oA1HNc7U9=gV>b&&-%26P5S4rFvc0xsU2MWE z@;YZ=|B@2lEG2o&R-#J$gnRZXye2+42hAp_9?CB9B*2Q$aExH*kOxk&9JCay`Hp;6 zFDP-f8y!wq$%+!;W*8~Uy1)E8D{AsuPw5{u*P*%aPqo6wvwlGx#rm|C-l6|(a2BU!?mC2$r==Ls$yI?zND{yH!WB-=iPl_X8b zt=f!{=GLu>03JEisAGP+@%4|1vd#^IIe-L+me=9k~3<`0!T)al;5u(y<}77G-lf?TL@h;yC3^%O0L>&n67ddYV~|$YQf&5 zVGqo=_foCeQby7;c_G=t%s8~fC@q72M){kF!Ac{b_uc-9%#np`kc z#G9yB_Z$Qivo1?2Vo4!SdLDFbJJ-cp5GHZhxtz*i)zlw3^YUnuaI@9 zD%KwD9cQs_BWS;T=rX<`*(#cd^h={X97J@jmU?gy-wTd>zge(MwTe&4j-JVe zRZA6`R99)(7gA`u(}$Ep&A)`1zHsy&JAm!QV2yz*9SZSq1VpURHTwF?`d5?e zNe-em`#@-+=hOi*yzAdKms}>*t|{;E9{QypPfd4&)O`osFSskw9=98dHVs)U40JrG z;-pvz#|BR$DW+=gL`H(h^jST>1=h~aTbEupN!qy^nDx(txV;zO6k*B!gw`F<1TWoa z865JFmRgt43}mRn45v6s{&$XAB`T1)Y>NhkoVe1lhPu>u7_cM{{sz|Q+u0|aNx!&@$*sJ`Tg<&ZvpC_E zDl5O8@n#Kf6*ONEA2nS%?9Lo56M)!%wtp6QqyY&pat^i{zftro{h02|`yiN;M1FDj z1P-!px>jcCX8bWceC*tFv(SdWmA{Go-eshQ6S4(s$L5XC@7!s8EGa(5lWSU>3Z*Z$ zVX=TZBxG)W^sIj3XhHS+{#`unResM%#wT(t(R*O0P*q3mAZRYbXSsxTM$R+kc5!;P z^k{>BTO$K^jIw0hcHde>WBVGm_7T8`5XtMl%tt19nzi?DB%+ryWpqmj1(^q|(8PL6 zXFUmq(PM+rYr@>y%hmK1-o*66AdR{FSLZJ1UuuR0S7KlNY_h&XB7?$<4hGZ?rgQFo zmdV8zSsI>7rU-uD@9WVo*ssY@kdFg}x&gKMUtNE*bZeNDe{%CUWhJOxn25V=zIpK3 zUb|yIP%7U}GCbbX8x*SM@%qS>mZ)#9D(m)ow&QMot|2@XTbkV(5C!P*(3ofuJ-vtJ z%W1-BM{{>3U)`t+=gy?Dx!RI$uRJD)S~dDxBzw|v&NkUG&u8cx7g)fCdBuvY&qkn` zup zW2&K|U(&OrGSaqus(g0FKTiYSB5EsT{A*ryfa<(>ZJ039^vYsJa8;v}v@n;p>~#E_ zTbq#G8a>~!MW0+Z+Nkw^{YF+>G<<=SqX-9}WL?zX0YjJ#dGcj^#+@0Ft&<9IxBmhZ za<27XN!pMjIhu-DLw(4R{?w;|+0=m1%d~WBzHH+|AxLG3)bhQb zmODGE8Og#QGsO)1Gr{rcppyFv$LfEj8LRgHY8KouYu=D>xB97Ofjm=<;NEhDqU_bm zuCO2{(1sv zawFviB^7{}Gvd~6{@*(lHN7n@6v3pgVmz6oaKYYJrGQbuv}wj!a~4lX@Fd0T!CWi? zN#oxMd^uNGuh}zcvo&wY=`I%IA1I@^C>}vV>1vtu_l_f(-2Mg|F3$Ci^*HtpE~c6s zx>l#>L<3>MFW^u)S}2lRy%@cg7-aQR$Dw=XHT8s_L-pAZ#JFQ>bO|x|+X98gd*&ue zV47}QrA_3L_qELj5uGz*7o8T_P0J=yMH-MK;&8@HIu^TuB+AQu%`yIHU9u}6Q12_@*Zs@pg9-7-rjG-fl`wW~iB}`Gc;z59e2^;KF3QYb19@ry)auoPPxMnvQqjoip#^ zh{YzEH!)%7mHEGm{R;_taN49L}PnvO5iYA0~r8c=V~ z^w6X$PfN%95NX4@hY z3#rqU*6|sm(m++pPq4NHGL|W7dfn63yF`XPo%vwGUt%Ldf=3Y+S+mpt1tC%%YP}LN zRO$#AQICK5gy!!6e%ZRizXGeA!+wy%_QR~87gc+1JIi^N+5)H)KH7@xH!Un*R9>k# z%;C>ng-z;esU4wryC-12!IJ!nTST!h7P+SOFaKhhJ%iZw>e1;a3qDmQAP8U4lm}1O z4fjrijO*Cdz$r%cny5Zz+lOu((@s)GPx?v@WR-q$40%&6-qERfR9QCZ@)xLv2 zFT+S{P}4?Ht`_|(y31yQ(~D2_X9iMC>!&PBr>a-Q5$t0nGz^w+ z^K_`nH8fdbLQ*HNtQcjv8p>nx1Gm{AU$Dw%u=AQubvw$-d!qCok?8dA)w99Af;s8_ zCtMdP-b1fE&fnycL|=Nxj%HL5a00Drgb;w&YFW%i^$&9I|7PxtUd=!WD-c^=YmWCz zU}2npz-;rZtlV|$yc%tC%CmBV#xHVsq4_VurQsPMtm#xOG)KP6SM?){Pt6@IRET;KbM-lToR@N+QB(C6ibzUMRd)>HOGD6wp0F1@5OPN) z=yGS7($24vJUF;@LlcZVPsEQDA_)~$YoYToX`#gb0F8=j(HQbs7vCZFDcERlDR3fA z+m%1%h;hJEf2Eai@JSs}J|JT$)NiWlh?@_n24ed2U>Fziq&b8JzRl;5Q@vl`8j znKfOQpW-JZLjBIf!Qe-MpM6a7&KJ6Lt0UMiLQZMuaX6jqD*Kf@>XM1HQzkFgQ$5P< zcJn(aDN9BvF;(&y>D-NkJ3hqe{E2`0CyslbX zQBE&*npBkUEL6}a$f}i;%#`S*3Y{_Bsy?Szq1|SDv=%R+e2_B#07J#|lb5OEN8M_q z^2U^USoR4X3cUwTuqC3Td|$;?m!VhpbeKO)hPGu-SX@_#BB9rUqLdh*=>uL zM^wuiM2zwJ0{R~@h_EB?PL0nlGC3iOW-FC4N>-y~Ds~k+U9zf|;YB*?X=|InyRyfl zAJmdwnTXt-NXX>}C@rYA6UiX;KKz={RV_~}8SFbAtbZckg_g)_BU993UsA_uFZi5~ z2|393JAz-asbiBApL=vaRC#OM?p$u1jg>irb!tU1 z84I<=Z&CINlU-G64EYvJ$`vHKvnOJHf-yglROa#zL2g?iiEK_tGP%yjkns_qTH z$ro(Gta7n!4t}TPH2NM_u#k($@Vr!_?%J6Uo!h@6a6y!?u63DKlqJy|fcR6MCAf|LNKcPF4m!Wr&X_~Yt zh-|xERS&T@tFbj$g<_lNW_cZkoXAJOs-u@lbP-NSG6^}qQ#^~Iy@%XVTk#yOcP*LI znVxn!Ze^gEY}Tc&(2|7)?VU~|K{xV8sq7^C>OLrincVm))n8#_$n`M4nV4AT3gbbA zsU`@1r0P4#v7e}-%V&vJ9Nr8mB&VYw&da(quD)tT@- z5wXo0(-%GIG7nIZNG5h9ESY5m!yGG$lI#sNBjYgASGVXSQbnaP8 zF7hdYZ4{OsptGr&^$}0hmi~rUKOuwR_&j~jgB)ZXE*{LPNYE9J1;XLn%oZkDnL(I! zeFxZBZp*psh{_H3Wys4@mHvThQbGKZ?2-8kXT;LUXTfZMv$+|1mseybmf?LtobRcT zY>cFsFC?o;vCCuKlMFLE7yXNU39_9Ir!2A$Q*!o{UhrmQ+4%}SChUA4aiZh;f_a_f z@L1*impNn|!#vABQz>QYgLcpEGC5{g>OI(!%QEhL2|oUhhotf0N5QD)?|n_rb(rA2 zKSI_sJx)mHxyc32$9IvIq*$AGF6ECz2)hPM6YqM96ZshzW@q1<*!Y*Z@Nx^}bF<81 zZ&5(y24d`UvD~r@&Qm6GAEr%nC$X8y11ZE`Q%uXDnIC@jJhYI#&R?aL>RpH_j^cgb zoep zDjcStV$jlg5cd@`7bN7vuw`JKiz}I=*_nG8NwHQPNJuPl^d-AY1y=4tS%V9oe4USp zB=|;kM~eE7d|4QKld3lqtCIZ=aB5h39HJ3>kxoLJla_&z%Vdn(GWmj^nX*Su)VmCi zzBju*9h1e__)2sOmbqf;!F|TGk)^6KfwiIY6lxur&LF*{vt^D=tJvj{%cxLG%pq!S z7dmWQ`{f>o#Bh&<;f&{*dP=9{N_U)#qJ_H|W>Y6ShGc9)Hbsu24qKB3Wv)W{n+sDd zOv1=T&%MDL9$Zf6DbVD|?nKyDhdLR_N^2xXXPANy;El$MBILbH*k4r~Lf=z% z&5?Ze5eS(&X)fUOKJ?zm_=*o@Vp;H9!Qo4|Nl$i8VLR9+!bhna9FehWvvVQ^1Dd{v zN-oO_Qh#B$>LAKat06*vGxZuH?=9}nha~%lbKu9==MN*WleyC7NGRGxh3bEj+k!`_ z=yHLGRv1iJjm)gk(|rf4C4yR)W>y~Jz7uj_-22rt>U>vYx$tvAZ=rLP>d)AxSQDgq zl+!|{wiSKtBSrPh%oBejlovAxIg=7y#3Fu0g>ne1Tb%t&;ddUSWPRd= z-1x7#@Pj#Q9akk?9*Epsk-U{vKI?)E=H-_XeW#|?Iq;)u}rR(B1KUCDHcEn<{^k>>FAbr;m{ zRoPNgx#&R~iUhSOwniVRc9)@LbG!;iq@6n2MJ%zOsj`7Wx*)Zza=zw5)Hg18vpuaJ z@jf7v#R&LWob&mdu8dil{L0++Cq!EQ-4!L198Wu)Dd`$jTX))L+5X z^fbsb%;yqiBEzP|*_DsFrP%m(4`CXg4cO&-Qb}@^z1VsKjdN%4a)qf2>PXJ!=Im;r zic5Z?b_(pW6liWKIbQH=hFH5i)bu&*bY1r@pv)s<&>NUbQk74-4!80cqvm%0N9qY^ zXpWm7GBaTbLJ5NIOv@vb85eUq6H@sfc1OgL$vzsL7+l=ui+|{&KT8@8XAJCRw*3?bCN}^*)E^Vli9J`RdMcI*dPHdF3W!bAPeb0vXr1+Du z?DIYn&J59+&NUjM`?B^htyzUt(@sL|c1tX-MC30+T!b<{rj(-D_Z;XkV$oz|p=3*A z!%5ZjERo7GI#ic%P1w#z`;QC$C&X}%hh=JbyA!F&S3Ok&uQ{@k_dQt)HYG@3F{P;m z^ZpLz#Z4Dy`DXVP$lSRJ8XB_s3PMu(nV)mv`X3I-;Dwp(AoxZOR|^>(k;@bL31j5&3|iy;u$V{KPxkr zV!;SM$U44AA!f?Ic1dEyv%5vkokO`bXR#WRUwn-0Ch{FLsO*WXGWOCf_(t`SpXkEe_D1rqDyOt;?LJ;03((< zRiv^OhT)J~GVFwU8J0fbTI_s53nStyosSd|klUMN9ZK5`khi-s#k`)D39IN3v(zCD z_F0xYl}owUlwFp&4V^g=nRYlrlFB5=*!zt=?0i29GuboYm}D{@LyMxvEXmANAl!o1 zL9PD)aZ2hOlU7SZI1(>pL>4Xxu`SG^7DdT+8l@T_WaMs6VPo6TR?PTz3Do$Txp1-9 z^gqBNPF-4!BtpA+9apa}Kw4rI?1uCu=qWnBhRB@=M&Y|03H#Lrg{gZYDOsC~V#>qT z2nkvcSsv1w_eaB$&x$2xKwjr2a?Ztw&69jvnwHdVtJjneZp^MLe9dK(#QG8tLeKd+ zzJ?eD8E(jJDLvINYR7!DERD<9jahH0Ih!PJW1Wvuum5XFeN2rol z8g(-b3I>+vcJn)KTk2av-uC6pG^r(s?hswwi{5P_axA6y9qdB-8yVP_V!^x_mw6u5 zJvBVXby9M<%PX@fGbQARS?UnI=b4|Wl#9@M7*<0QtLQBd=Ez$NSW#5Ip+(8}nYg-? z>)5hMZp9fLRyt94CCmJR`7MIMW7)&blgxS0B)BSeIbY}!?#l&++mfbT{SDhKnSP>K zF3Fif7KQ$T?VzR4VgCRH>?_!})teyQ>Day87Wbsi=T2LMW?1mS;!Wi9J{g0Yv*MU% zighk*k<0r?ry%uWZpFT$!dQry_nBk~uzGGS5!3Y^qHN0gNfYYN)I$Aj0dx$%Z1bM-G|85zq9Bd_QPghp+T36QB1eJF8pJU4om z%)Q3x(77@46`L@Y&vMFJF6FHPD*6PQkb8P+?0hpP#odAoj;#&C*Ec!ljNxo=2V&Ol zbmzHypWOcdV{&SQZb8*{Y(d;pk+L>Lt#Vz9Y&{T7L2^E4v~+yWG9i}^=kgFjIoP&k z%%07Cbd2kgX2Es z&Ppyp&gF|6?siu!xijwamV%ZxTm--36kn*uC%3%eJ z%NISS7p6y|m(06>vCm`L zrcURVGO^L~3l=T<3Ou!cT*&T=?%7;i&OwjNF%HthX$YYrP0=;V@ne!V%QYcMBrnV1#@* zC$_oqi=~kBM=573W_K=bdXTAMH7}9sa=Q{)7dh;MGUh>Z?yhst_$ueHvL>>}#(!x} znVjr*F1-iPiy{y1{tZUoyk=PHW<&l(1edwt?tR}A_htz`36satiQ+OTN5-(mw9w^X zgmk$*OpdFQ7Fi+Rx&B$(V7Zyf=Z43E=iFUdAyZAMN5VZtk@3g(EQpJotXVXI)}j4H_RLGV@2k8#tJ4x+`5tC!80q-x-@OHy8Ci_|9MSfsfFlrwTlr*T)8Jbkz{yb7bN?lt?QxK_$jctFoN?k1QqUVdYtotwY z)=S>3{{Zq?`f1qbWM*@)W@JI^+3-9bMLKF4XNRd~czbI0KFfn{8qTfEG@@PEFCy6< zB$lMqcp{smYLjkU-{HwqcFu@L@c&Ct`c)pw-c%V0O{$az1hR! zRh~^A1lpd$iWM)himbFg;e{WXN$g{D$lP@1k6?xW0Pk@!>_WRGnCr;@0P@E-Ne4XH zcG=6NN&f(-<1BcbQ%PSNg+>QPXfDaEq~28Oa)RfwTb~$7@a{TQwLEYAM;HCRAMQRs z64<|FOC42Om6>mKWRC=xq7NPY+WKlL;PLpY4k@KA4lf3k@4U`iwk%bwZ}6=SQ>pBv z{Q0xV38&p>h83w^^C|xTNyGmDYlYQZe#rYea;Gv6vEjV4A+yCRBieMS)LP1vdn=wP zKRJW*2|gdgR!40Pds4HgbbqH^6zlq#U3t}2*(`5Tr&5^Zq97-N}dHD`3ceZZR$@J^=V1f@>?Hxt;FI-RaV&ot`m*MoL;O}IZo%YmUtxm z*(2LzWO)MX*y3?&eWd$8^x9hyEwY3h3{jE^C> zmHM6tIWI$$)ZrG$`#KZE{{Udbea1L+I-_H*mrtq(=y(zBJD-`x$C5R^&@$(V%Fwag z=CITDj-@JcKFf<`#6wRscoz|Sm1KJa>EYDV?0>URpB9HqpVFz)`wQ)BbwaRwj{--v zlzwE{fkfOiS(tAZkHg!0iit5GHHcLb zHbXeevKl?4aVn`%{iQY0WidrCU*37K*IW5+W3S}4IsKm#EgANlKX`_C>EhC{Qr4Or zy-&JMr{&T%c_itnN@VcPEj1{b4+3X~ioX}*IjZWVwvb}oosM-#D0v&N4@-z!EosR0O)Ih#>ZVbpr)m2vlc2AIrq04J_YnX`p=FR z5q!>RjPPd8a*woi^;Es;v>jY5k006b9rR`@J>nUMhfOr_e$MrejrO?QMKq!komuuD z>L`x;4mX5+3fbhlq-$fG>q+btPL`EfGudI{W__(XW<?TIO@?bC;3J1rhT<{{Ul*zKB@9RHS2*;@?#D%Wqm_@esiji>OAyykxVcoiYD6rb z?n?+q-z6WD;XIqgO6g}jNc&zMPc(C{g;hOH{-i5fPX&B#J#oX~=9XvK{{W+*aH-!? zTb6RMM-5ean5fQHXAY{r++8e>*qWWf5%4Q#lWv-_C-Clb;kq!Fe$|?Gv0{Wg#;i*a`dygh^s&1L~kkNjM_uPt+%GO}(i0o6tPpj=QG*^z6@j+E< z^|i( zN+~iv>*#)I>Um20-1ZQ!CO$TLQhr+mAAOCFDQ9EHhlZt+`m5adGEXU*JXWjlmNUr&_!3g%O_6YL2{Z;8gDX)n~+P}fW(K8nkwEqCrRPj1# z%9L$V%^#MycayrO);3I;wKsZJ4O54NFt)YyPhpw-jyNpZbn9NpX0O z{k>qvNgAJ(IC_weG2s<)c%JPlS@wJ+_{{W4V{{Z%9C-Y7Z^IJcaqxVFA{dUjgDE|QaQXi+_{{Z|FXZgt= z{{St+{{Z2tfBdM3a2hE|XZb^BgPfQMb$?Se)ssE!ZZYZLRFcZL9dtu@R!%r6vu!u_CDj7({F2=xC~VeU zm_;I+Tp~2}lx2fm$=wrMXj5kgMO>}~$&J$g07tt$3kt>Fk+i^5L7E-%4X1*)6+|-uS!N&m#3M@Rk;WF-mooZ~ zWFB%Zkr599l>Q#hPv^QYSulk@3_&Yu(>I9;*MnrhzkpWKB5#qB8#f#wSCk(~eaERX zmdOnpUHyi{WucR9!n2Vmxf~mh=qMEGuMUI>vF$dtjh2z8o}ConR@%$RlU0&KV&-5; zcLwRJq^b5kam_G!V-S{G9l0uH#cGY-VaZiSlpIePLtKLCvNURM$QcXS{tD#%_TWY# zw4Jj8B(3bWA=_{)F2+G9_DrR`DrWAO^J$IyjcvC700CQ#mug-{DK*K1E?R+d(i=l} zEZV$^InvL==vJN3dY94_BG|9MlMrNe!oc3eyX-%yc3chT1=@IahDpGZH1Ld?Sf-@L zFARXNk4Gdw~vZHztKRWs-Y14aWk* zz`{k%8?~ZbsR++}merUNsl&-G%Cmv%I~-4Eqqeu%8F2DQdLv|d){02M`{P?`Q0XY8M!0aplDbA?N6!(pk}ZwxFCjbtw7T%#gCFCsh@L2G8-!zKv%CagA7S zkiiUMdzOguWvwpkQa3L~_1n3@yDm1^?W!E2dAlbPfjNxY^ zH?h#Gf+ZUE8@S+2quR-OVIkye;4jqSC)6JBEz)X{=8)M8m} zX&QMJYT4j)@KFLuuOg*jI5*Bx*p|@f!rGK%FGf2Cd<_C&=vIn+NdEvAC&-<1_6n9& zc3wfjaFr;fZ2XdIK|#0nFD6*TIg`lsp>7jspK#3w94o--$sED`hG3vWKc*%(OD%q0niPpPD-G2Qs>~O5v%lnQ2m+8I)3Uf~#+DB`e-Bp7K=Ac^fqAV^~E6Unkf~?+g1IRa%cY1?AR- z+OnHyn%kj`DmF!w_CntxH3y{%(tIPIgw5F(0jR-A_#E?j6OK4ybiU@!hKz9Z#>|N} z(j4~MWmLAi2-@}&HF^{qJ(mz7JJtrI@cc3F2dl%tH;06JViiVwNsvJw;_O_pI)9U5 zC!`X^>|wliG~Q%Yvyt3;DY%^@J*xV<9C*W{Hha28!=$Krab^h$+q|xd-5c8*+VVFE z3S*$l7D|xSJ64xQ2 zwZ3#Ww%wl{L2*70_E#zxxBg)|E`y{!3h*{v%p!~Ck0$$KB%NgRP6bL@)(2Gf1SDEE zXa(hm04Z6|M5oG3j5`xCA2}z~{{RlUEh^dViP!fHSgPF?m)ixR9(hJ>3gH{YCOHg~ zrXz!w0U9hvU2~Q-Qh84TNwC5~MG03Zb(T669g7|@2fGbo&RfGA+er3X+?bk-ewX zJ9BI7tVy<~Aev%|p*H}Ll9PdVPv~V{gtb#_mxdJsOCx&V^`cGL!BJDU(SxUs%o*cw z_?fB@%{(6}i(ntjk@|#wzNyhE*pXJ?NGN*-dt9W-tdXS;ArCpR3AwJxybY$Pv!#OK zuw*c$hmR#>b0yKYsbj?a@OYt*Aud}ZXqM=bGd_`0`$Wu{G$!HMmEeVJ#h}`%qbuzz zsw|76rUHY>AKcX15+vprsizJ_s(hP<#%yfaeV~d2Mo*~@wbu{s4Q~lSmJZiQWn|(L z_b}79+ww;+IevE`y3%I=)C|um37$xv#`x%s)C}~YF2)elCG6)TK~Ip;i+n(TiMBIj z6s6O3&qL6d=_$kh%0>;^0i%e&Qael zQoiWU;_Uf763XLQUQQ}alw{e6g1+ezPa|xbY?%v@U{`GSCLI3&--9%KxHdz?nMxdvY_ZKZJTnv28zSzZ#H=ar;QJY!$78~$WWl{RAktW4_2DrC#pU~ z9!20}{{RxRVsI?!h(wtQ5}v8StSPI3m2rxPk*3}q5!lvgLlqtwV$;&aq7av6Bvl`k z;DD3EGlBhv(+iaf>|O&`n1uzyk(U}pOGX?8DqL+cx5B45+NE%75iTHjrtaY3%S7y4 zxEb-;f|R8DdmUmm&u6hkv238nigJt3oQsi#oQWyM!ZG~a=vDrMSk}J5mh5b7If^xv z9;hfbl@Cv=Di;%gbc>=cS?FsAtE7#px)@asO9WF3Y7GuisM3|_8Wzu%#3X--DA{g| zGwwZ3IjW;sD)J>aVJpu9S>13o?INn0V_P{?`FJX2lLg7;zKo|NMlRFVLQ*aFLb`cz z(CsqAXr$SKhfV}*6-=qm1DV_;sEm?|7&RE2U5ufqv7|pPnNvR`>`6hE+zrOf zxe(q?M*MVP4+!P0AuI~!T3a%+F{0Z>N#`ib z;iW|JLT8)cy@g&$>?R*D$Sp_SQH#$b5}QMG^!G6G+GEl1a1l&ypBg?=!GAFyt!MZN zWr>m%@_X4zmbssPv}81-vSz( zFDO-;Tq7oagGi30{UL<=gT=+pUdk%! z@X`&y`BZN%m>O_O)_5mDKOSS4RzF_ZBhe$G8)N zbX%!ta%-))`i-tf4_q2446|PZd<|?WylH6tDjg^8B!7nTTzd}o>lzucmBboNdq!Rq z=O{x7o2-N;p*cMh`h&(fJ{2x>G^?6EdH(>1 z60dNSw|FwlZ`sijo69L;rBPV7DRg#Zub|?*qQ1ypCE*4-Dcb9dr_(EXf~M)ELkS2rsJK14B-w)3_c*vpJ8!_#TE%xXoZ#{ zy@b)K4VA-)dbe3z=sl4A9e@)*k)!swe5YX~+hb7FT(R}RH))&u48W0;x@@fubelnp za9oK!g+V-&-s=tayp6RJ(jRVOD<5QysFn?S==<#8|X;q z!KMg(OqzA7iUf`~(5mssw=RK|$-wEPTq6(b7~`RvXob`?vilX3RYw@xWWjv_ayb*t z(e-24dj{tGU=A&nYh?L7}lw%N0Wp)s@3 zQ$CMOO&_C7Bm6N}433#6z?_qi%w^;hA-H3e{)dUouo~E{7hS^3Sj&st!b)?LQXKkYN{^DA#Hk%ZYlbKLxMs-B5iaf zO7(&g?hX(%+t(CsuJZesDZ*WJLRu)kd=ILC#;;nFR?@2%xvk}0k}trLX|E)-B+!{GRAjVNk`|+O$7NXI*`q;PSvFub zd=`J(p>O*T^Tr5N^QXCD%PowOnnAlGf>=(NDznQlL{x)S{{XXK5%J;`?eZ-0Q6}8z zMh-H`rj~?ZlyK}I-Z_06J7XPiDhBTmOzFS+ zMqBt}wNhzfGP!lEa8;euAW7<1!WF7{XFLrllyR~13ySwKjRiS0CXg=d?g`OS$q>Z% zAdzAgQVw8H7@z7Y%nx8a(L*5|OgIJQna{?x$>kbB=h-A$F07ogF z{1$R@U9(DXQ%y%GRZ6-Wi)TtimlAa0-A^hE{ES5<+43cfS%kU)IDBu;f8QPTZRenUIrfuZNywc>h z*q=O@(bn2V1COxsSC*1FmAc@j{1BL5a~s|!(H!j)AsNdsNeS)ifwYFQ?~{!ZCULko z88vr!8MMGtl1!w@Ff&gLoCELZQ6{AJA~h^$W@XT|kM}Rt?UJ z0bQaNRG-*e{l|ifLb4~|XLXrww63I}*fn}2_b8jrQ#Z>R_2N_T}V^MJ;C0 zI_H)M4dw?jB0HDzfiZX*E+;r;SF;9sCaAP}B$7qQ*(2eemjc+&XMCTj zoD}eXgdT?DYA=H&NnZ1VgPN&CE1YZ>f$ATZx8PTXxe1d9Ydnj z?joX+u22lGWc%qKt zB4Z0Bm%fj1pD5;|l@2pLrcj$4plQkW6X?PrOLXhd&f9HE;8f}Yd=*QY>#?-}4E^5BQgT{Cs?t2_UBz3kbq`5;{ zrVn87F4l=&#a_ddl{}S9;tHIKL8t5n&lP=zBgyvJ4p7kP5xxRiQ9Tl=`xkB4oKr1k z=|O+$0EKd;XhW9>Gc{6RnK_C3j;2h#k&x!FZY$n<31O2{f+^&?CE~_dl6hO8Xor1< zUE^YAnn(0P6u4uOn$OhqZ7dIgHiou`mrsVIxIH49$?!cU`w7GJBRdw4@N!k)z!|l{ zbZZk5LNaT}A;9nw;Ko7kEf5^{?n z#nJx&0!X66hsD_SkZh9?q{|D~oH~JC1es%fx1nQE;n_LWwfH54-(b^w52{4l$vv}5 zWo`L0+o2vpSKLcHNTp>lD~Zamk*r$01+39sC3N~}I44Z%*ho9Ob^V7g(I#N!+QKO; zxu1d7XF5BfOrzLC9wwx;I+)gGhOHAp$*`GARuXia9OuZV)JG`{X;sj(Cv&ceYkyMQ z^xixTuhY`ym5u)ZpqO0V+c6QRl#=ped?!QF)x5G@r%sIu+X}i!c~w6lC3k-23tJBA({az2* z4>6ziAzt74z|*0wZ}=Aw6s%@UOACZGR?6vk;CJr?L~9ox0ip@F(l{8#I0u#`k;T6_ zEJHZ<6r+4gVNy2m8?M_w&WS_#%>GKpxMx6Q$w zB&tL=NL+a>4WhMchu~F@GQx^8E3*>v#S}hB>AwLRl@VN8G7$BlQ?eQ^1hum(pn9!S z+Z9tEfm$1W1fB@SgG(kIA0%-{iB2VwQ=pY*_Ez?46?aRfCJs(dFiRJJk^_ittU)k3 z-KN#pBbDodZ{$lu4hGm5C1M%yOdlaWJ0dHKvEier_diPh;p#*D8;dM<4MgukoWRe5 zE5&^hBg`!3v>R$)^hj=714_CG`VfsK=Ld{+a2UZo6UIj;jM3@}$u?sK%O(E+ON$H& z#GEQbXWfjH!|bMEqmn8L=AA_bAk@w`+#-#9g+KH)IC3}gLo3gIS3_3z39d%wcje8M zP2=uvsL}Q{;8q_kiLOFuYT%C9V++rUifege?K%=7NpnUw@F#$?Rfxej#L*0B?NxX` zBW7$k!t1z(c?D@XNy)J!%#o6bVezsoudte0O{$|Zc@?DZ&_*LjWITxqQ+u%=nuK5? zPV^OB@uW9e=xX6F2!&FUFTgQdCC$*%z{K)+ACrX>h{o%FPn9uvJ`8X+pA!JxKSs7_ zBlXPwTB3JCX3OMwt%N(+mk1P>KCunsCMyys245b+%Sn=X_c4VS*F;IX(Ann(-1r|h zQrmgO;EFSr;S*3!+{U{YIUH2F$xU?oAC$`zh6w!-iVjwi9_5I$?0q&5kz`dVq`EOZ za9dvDZK#vPycWf_4e;5E%CeVaJ9~ws^!o~$DT4Zp8Kq0QP8l7k8T1k8)DoZ7{)dH1 zNaZn^#AbXkcm%&ekg?d^)VmqhXqdbZ-a@SV9`nK4O>&GSChud##C=YQW$1{IZQFCA zl5;{REart(OSrJclJ0##v%?$>_~x zVfHMbJ_(O=*2ChgE&;08)jk%30_^=2M`8X8N{L5D$`dASo#>LpsFgoT>0w!AXDFjYycg$o7Jx^Ctbr;0wvXt0_RtSdk>a!DLZ2CHVFBRy8l7{U zTn()QPaTmL(-?iilXK~Q!Yq!b?Izon=+YS_t-0(f-4exraL6|NjODw04uV^Bgq~bn zK1bcvF?_7SDHA0(uLFGMIg-SmU^Qp|0M-hgO6!s9PivGb?Jq<+;MKS8P@aaUZ&jpR zB9#jXefD5Ycn#t|_aXb4qzW2ytuI)Wpl#_9Cl`i8D^$?HCdAOv#dR1<>~|h0g>{N8 z#?2c?YI@R4G|FVtqrO7+Q>KeI#8gea=dr4j#eURp#tj2+mu87=w2WC)`YhE?($J(OKQ2c#tLYw{#A#=iSeH*sw#7Ht zn_+F_z>93Ks_cZtysE_<6s#7KTNSxUbB86nVlx=sN#P>~j9CT=-0c--235gb>*u8I;G*dE5k(- z>58@*Kd91Zg2E!*w1rDQapRc}LwF=-Y`0<-NVA{97=bk4!vGenY(Z@Ce?u!Z$wK>9 zCgajIm0D*;J31TZflmS3^13x;=Fu-B(&|2sxrZ>>y=r^!z}Zjrq_DM39gIrip7Z-R z$>*^WH-}nd?0A9d$Mr)qz>8~>vQ!~mAqz^!BU?^<3A-9%Bc=`^Ckb{<-VP+)jja{E z6K2nq*zMUTuEloY@HK_cBRv-|)8ywEBu3nOjj2iGin$^3;E;0v0H!Rankd`lh*cv2 z9{O7q6W0b-mlq8(q2W9Z_SlV^Y*|@k&-w~AR>Us__%afos(OFGi1<>k18HUjT{Xcev!Lugq=QSttAVdQ@!(_2?loyXAK=v% znEjkm432uLr$&|+BMVh)LE_skI~A&~x*%nn8%SlZpd+H9SQCEfh+v~#*U802!$Vsq zCOH;a&ZXGX%X~5hwtc`;nvFKe10m!jPjxX*1JDG25By+nli7*Ls;A$uLDE-n5e0|r zh}qQB>}|&q*5uV&TgjGIx)*qX8{tNh(CV>*PY0pWwrpz1dH#lK`N*xZZ!UzuP_Vs- z-+XdZ*TAFy0MkXhX+8NKzD9~#>o){;zh_2VD(FRqR*Xd)M9XE->&Q~%^r-?dEb@HT zvU+d`{Uag!3qNIN@FceC#{zVc&)`!pN-|Rfq$ZHCl^U)mvnIrfj|^=^o6ym&6kF`) z?_(=b=t*tCcY>QVB>Rf9SWgpej1wFr^eW35R}gzn^X<_ZdnvHdU|r+L%M%UYLX!a= z>qn-~0DQGQcp!a%>2Yq@bl_id6o)<0?N8*4%p)(LzUJ^LJS~Z{2Gm!PSC%5bQs*^g zXTcpJlT^USvQGs~W%M}|wBj~ODu?*-V3dP{bs~us=libLOTB*2E4;4#- zLCQE%j(jX0yxw4NG3d9E?+55s#@nWTszEdS5}2cd1#Nu~6H}qSzxE2`bAk1eqg0RX zo(w{@$>A7H%oG#EW2CzQuN>q>B=d4Awy*B`7^PJje&YN0802DSNk#)oqV_e>O-wAO z)I!r)_9xs~LCmP{lrHkS$dW|HMEp9(OnQDy?}2*B_wm_3H#!E-=)@}eeGrcoeMSnj z$yjKsIhT48-mj5mBF)t$ZJm4)k+K_=t)V)_l#<^;`y;~$dYUqMG02)(r(7mC%{d8{ z#fZXe*d#}zC6Y#RxW*Y5f}*n}htS0qETq7fL?K0BHk>53(#CC|T!y6L(BeHK^n4$! zTtOzqqx=z+C5^235xKUQSi4b31+dZD`r$1$z|VhN=giSh6c5U%*?4{ zLi~?!_CAPI=Nfb~;l-rA#N1&k!KC(GHPD!WH;VZo=0Bp6Z>Th9A%TwR#?u#>zq!Vu`e~k?qK%c<4+stm!s!T0En5CKauV5p4z0Hl1?V`CDyL z^1BqpPJCp>(wyWk3NwG`Ag95LW(-=l14G7{X#`T)r%ZL(0j{-#h8kH@KT#5L7}ex) znzc?0OCz%b1QPoPR7{#wxo=~AM${V8T?|-cBxvT}65)*%Fi>ErOID!S=SqG^>gG;H zovQ51J|9f6mF1Op(MwKO5J^RW4|%~qcO}r*Jf%d-X3e%F@qcji)bM^o6>hiox;HIx zk(sdCxFzJfxI4VFk-EC*ZPqwL1}gK1ra6{x=z2rrf<8w8x0ChDQyvu`;ElN63YTI* z^~pGCS`u$7@G-BY1+$aaf(i2p7KqMxH(0ZVDU!k4LRXR!cnW13jco`|O|ih7H$Tz5 zlkgf6{Km@!ZRU#JMxUbJ5deX_@fnv(=5|hD@weD>KqmPQ4 zNX~(sH;-Z25W^bDSGkTt&lgi%#4A(jcx;NhA1qi0PDecq{n0BFYa@zOS=EC9_R;y| z2ImsM>~cr6YV9j0%H%@>n{BgOLP*=R?bYDou_QXUUv~r5F{hOXM^emIHtmiGPdQx+ z$*7i;60OSPXX-O1*`IR}x+5?C9MQJLV8SP41+oMU{SQt>z|Yy{hU3j@~8lid<`?!x$v`N|?H+wts% zPlmn1z8aNv(PPVz5tn6z4i30ek;j@!pF}Adj)t7TWl^Gr1 zZjphyFdiC#7a|SDj~xdgb{u;d&}pIV`wO0?!P3gB1dRU2k=DS|DfYxJq=z3Z=u51o zZ#L`b9pzU;3gWhD7U`qwVPUMLvICT#>*8}bru!U5T>$538qbhkO$>+yLZ~csx zig4QzO_WTGUjlhkDUQ__N8I$loT|)Swn{m8V}V_YIW}fS9Zl!xHne4A-hvdRON_CE zh^UAwINY>5Za$|i@J?>onlY~-oFaY9)1lKRQC<+)r$j<8g7PBSE(Ei#%&Yr#Uj(>#%@Hcu!07!D$zeux%2s@tJ5BCK=n#!-`L>*yy|Vy=s_ zac~XH2(g3BLew#1Znk2o^U98yMnX5zk)swGG`JoZm&*PG#vb?+1|sW{6*Hl&1VL={ zgTcY-k4SngpBg?sPtoi)2kK$`zZZ-d!Maki*8(Kam)xEm)I&-3JSXl-#Qy;BB(yw@ zd-@PXzNwOYOx%7+tv?1qow2dbiNVs9R1%8g4fKSq&0a;U=e9X!vSK8L$sR?>G>=Qj zX3k~6jV{KU<*Gyexi35a0OW@a6mO&|<|eVUL*P_K;vx-ChY?*_u3u$((?40E zlx7H~kp{;iyGYI9uLmX!iD~REaB!XstH7H^`@odvXy$ekpBP#EM`^Eha^JBk0#mUkx@fSPjeCYRBI4HVX~ShFx_&{c-WfO{%cA(0jUDVZDoI0?aD|bj zc!Z~OgVbv~4eiH)DE`%ynO(aG#Wqv|qv3fvGk8~@A}Y&%L8|C@ZE%Fx-<;iE-hmso zRo^s)w^(NZu5S39_KKyJmA|OSOGzhNwldTFOfO+JhDvukugPG#ItzTh!iS6LWOfC+ z>@${82t!BE$2GqsA!~aRt-c9@5zHH{w1;*Y9+H_dz!w8PB%3)sVd(UTez6?v{e_>& z^YNj4VO0L z=7_~U(4T|!GO9yJZTHCIB)jCqsoC%m>&`;P`9I$3R{$({12&c(*550?dP@~1Dyu-{lesHmjd2&CmNc|9)|iFi2E>v@vV*}!NI`K)~vEI5&j2DBM_FvV4Xhc{nQe~{{YPQd80|oofFt%Ud70?-C{|r zH_2-Z-#9U8S(q)QO&4N@q#t!v3A^IZb|(5A3258;2%i9+pzeU3?06ct$nFAt#u2B` zsUjp$wmSyC!o(C(ZdDERgSv#8^emT+dQsk<-zTDNwn|PzW6Zsi$ki+(*}Nh&=)!O` zh?{+)miHIO-BTsx3rCJ&$LsHiT#%0Sf`Z!Jn*KJGdk?e}R^nSHbpa=4>Tsw?`gNBxZMl zZ}2$@6*6tC=(WA_#dTO>%F^S5t<<{gRp_R^rorUnk~HscLq}%{m-ae|Ol2Y@Zc2== zT(&R@%Uv2%YY(W2%Ri} zP_u&=nw$1;B;G0JPH6A8nvq$9uv6yjYn$|8q4I}^q&tbVus2(IIDO<{Yl&fd3_(R% z%wrsudM`fmB9{K95%m%)?js>%mY-Z2aB~u2${s~PbqplWB z?~_slm1iT)4+i|3&he2eOF}67?8U?$cBcBmecnWw?t+VzH$;3RIDCp*!bFEstlZ#B zqUnL=s&Miu=e7O`EhwKRx06t9Hks+TE)h{Rk?RnUYEe;ejKVhbnjlQBAeoX9m2xz) zwUuQwsgkc@-GPHQ*w#1O9ukj$dqWP=@LX~$v23Uk-bd+7O#8$waH*wo zqseknI`U~kB}A8SPQxE;GB5>p;cQisjmRT9wbLD)kRRn=XeHIVJpyxF+N+?Cdso%L zUg^l}IIo3al4VOQ!TmrX@uctT(U$qn*_vlk!VJ>+HVOOa^X0$B|nkP{XQOMuWM zav)7ymnZ9!?mxjZHm{NEN-A!ygl`R%IEyunyX3}HW9VYDjBTSy#{%Edjbz&7aAACk zIXeeBA5(f_Vm9uE28}Uz4Y=#^OGR#{QeaflT@?*0U6B`(ayicfIUI0EGUiw#>`M|U zger^OF~YSQa54jNo8^}ZnyJ}hma&C-Dbj8;N?YLuw6H}{v<-$e(Z&{e78uo@M3)Wh zdkJqZ4Qpcgz~cG{h&#M^A6Tnk>9cxdo?O|%wkD+<=~hYhl*MS|I$bf%TcQaKn}cR5 z!&v0T6Z;u5>v?%j$BPNi!R(u~ld;yVpvP9BsjdtE09bL$F8vM@!eaZOw7ckBo97@m z$5eYh2UC&B;PLtoh9Tt1jN{0Ta1bcZRIx>)dO0R?2zWnNK`#Q){s)A?X$7@KodlZc zNO;zR`W}P8-zzC_CycjD+ly$#%dj*|&2L?qn43w}UPo6FdFP_ExEeBF^vwE!HfuF0 z%WYUohAA6P92+kOJc*SOC&xl#CJuvDWqshr?kplJTi8NOw8S=XX_rRCoWY8U$1F8u zPMr&vV#)A4HQayLsT(?uhk;2YD=|1mn{NYKSZcaMQHa@Q_(N=NirH&TVXd}MEhVYQ zwtb~_%nV+mMO|;QFx|$II?`$$BIS@#HCWZYL?LOcjp1GY0HIDGsHgsNEXGD~pBMTj z+7_Gj5*ZO{h(du=LPWRtDb|#(iN9Oj&57m-Xmc=Jm}cr_;AoK-COm1#>Dp@u%fmu< zc^m6O>ri1CT1|FPYG8Q4lt(8ccp$`&bAX8fpjaG(*l>QOiJ7|3@IrYnsFoDW_TMEu;l-PF5 z2K!KW0!tvm#Gu(AY?b5+TV!a}OdY7NuEmW-8&d zCYfsb@GxO)K3m}pl+?4#`Hkg?T)b&1S~mtM06Im?V;pG z8k#~1m88{MPv~qBP?Gu$AAe{yfNXnjWyi&we&%x-xrD`TC161rq@IJwNY;sVjfK-2 za8&%C&~0{kgQFzElpbe@IoS}xM$v+YAreFoUI(+$pQ~CTlY{ndPvj`T#g61{`J&1! zW=gfCgAPqcswhh85eZZafY_W@^g?XgB1^F`CWL$RWT_z1e3B+CKj<+zQsS}JL87!Q zEpvSYT%j&p7)}UkEh*knsYH^{NjcdftlE%IgwwiD17<00hSp0L*oi>iCUzM&7XoBX zLEyMV=`Ft{#-~v*he=FcL5r4JZzt?#Vyi9SFn)PjY-rP{v(RPS7DTcRVTRX{oHv_E)2!IaMSzytXbUw+)WoY_u$_vr{{ZI&!H*l|va7rr?eI1?t9*M7lWoqD=vj7M^h=`r zhO=%;LA;TRu_f3v#)kAf4302au0(c|MlukBfjJLDQh~vvfe`&>vqSt6vM@~yop2hm z^d|k6XHN1e;bdDi8FiCS=wQNRGpc_CGXu`tYjI4Qxca8HQ|Eb@?_ENPXpT8v}G@GKPIrP6ecAWPpE*4 zRNz-G;djVFII42eMP)>$ugD@;H*NVRsBVn4ks9+{o{(dn+$O8hGvu_n zZ4BLZ_BN_zB@pn5*%KkN$)^z4WTS>yt>A@+rUL@7n9$UH6C}xj57s*eCWrVb=eRLz z{{Vu@-b`(=rdy8Tikyt4!4pb4{EXab`7$IkNeu|KZeh`((C%h55j&PdLP=>o83|*J z@XD%rwN3jC2)po#WT@cX6Dm#%N$RuM`psqMb1Yovf zJ{!NeUO~&%VvK0)K&$|?Ji>N08Q{Z-ANA8&jo=CU_MrU=fTK=!U7WViKgIO^`|7ZyGt0*Ll+?*@Tx& zdx>_{@h)6{X#W5OZhjDS)+3rVPo>HhUfZHexcV0=DJo;DO^Jv( zN*4j?DEAYHj~ukc794ALBKG?2lM@=x{Lqqtn?s}?Os9d|l1@u#WyEvWFRz0n(pxM0 zj!oNojJYw&2(2*zBy(~gzOga}(U#7XYefeYxp2o5sKjYYb&saUMN>Po;yL{0*)R;gvF=J+XC?ic8L(S@pvemAvVBLZcA+s=+M?~!$c?7TaH29<@K=Iq zV5I%1WF2xhzi|?HKv?sWHWn99$EFiyzbu=x2;n0mUSJ~y3(kpnOaA~;1Xho;d1(jq zkdovLo?9?~5{6?*u3=9lsNwc(zrhHuY%5ouz$`ZHh>@JMzJ;#jP@UQyRc0W8CCZ}I zCX+8A;f>aN6`~U3B3(9lk zjtOQq)`Ok>g@u;sRppDDTC5=-LAn{ws%{Hpyv>H08*VF+60MQjFbh6GamM>sp8^!n zjOlw6Z9dPq5p5z%I~g-=4vyOf*Ddy3Ta2RRi$U*aLeFO`w%cw*N?a~|hYiNV$gQej z2`sl^j3{K@5qLs*5NR$(lG4EZi3#lZWm7E)pxPIp}1D*K2qK?VDVQzGG){L!N}9<8knAubZs@E2yKpn zlT3-GD0vBm(-e{$e&bAi8mcVf3Pr$hw!O(ycrjqdDr|1%Du%9h86vT`uVXO&^PP&+ zc*U)A1ZDfhhJiLp6w%`~aW2H?O4n~AWhW2qR9Xd(a5(vKoN)z2g1X-Wv6T9g+Qc4qhBJNC~Uvcj*4zPoXmbkJk@2fXp9|$M9$SB zkBSL0ZVm8%cp_SEGCrg#WU0x^;fuVy7;Sbv;NwRI(KDmVWi*i6kQ+Z>dS1`)TG*G^ z7A6b43$?gl!lhX+C&-VvSxpjgCE+m<8rH_zUQc35_8tOdbyvHb*`PBiiIi zc@w@QT|0(WkA;D>&m$Q%r^B@HA=fL|2VE@bwoi7VEL$H=Ym*`bQ2IQHC~Z5uPx>U< zB0#nalj59qIP+V;!LX9bXUO|%&sTw^kpBQt66q$#Mxm(J2zN?BVL8d+r<)F6&}lOM z^|m67LAicO66HmY{)W^n6{r6I5M2c{K}<*8^2fB6m)I9<!Kb4Qj8w@w>uS>VJrg~(LB%XmLw zTO4>lUeD!AW=nb(kvx}mm@PkcJX*tD37k3Bj*r-L=*z>iGctLm?JOMG50su=O&NJE z2B{Uj>5Y#`Zo!7q65D`vo}IF-d9ZkjWAo(jAf z5*%B4KO+*wT18oHJStge+cIj8+{6AYf*$tRpwh2`8X0p;`vPuWmoo!}qP`g+qi?McYS)y(W%vWm-{ zn-bP=vXJy&afKNNYw|onS(axDhqEekpQ0(*32;fnV|AxDkB0hzHt zP`@bPSyOVvl7@M+q9+%O(j*eo%rQZYH_!eQCTGL8dqS5;+bg8=2ax;`$+YXG_=nEMD5GdPR{8 zJ-QlAIi(Qhg%HK>C15Vi#@;D(H8!5Zf-2+0ACY?tzzvq#UPUa{QX)=gWYBrA!`&9D zWhS`(qNJiCsQzc;8Pug@gKfrq$I~D{d6zs{W{=#gXYW>Dj9k46|Z+)X9+&TWmwq511@NF$s zI58$-2(1|)uF{DczrwZQ-%kf|SB;`+{4RmVL(bRkljdllC+(WJ{6@ zK{M6LZ2he`>N4l}3tzdfu|)7#xR|wh?HxC{mAcxd~X2fi4B3wMV6R-)jq)6sdUIeY= zqvSv^iI9v*mKlLT)xkC(+Y^~K7^`NJ(T@v5VacsRH-!zUI=LE{um-GG7vv#Y}HO>gR-D2C$8Y&udX>ex%m2=;L;xB4;CZw(vIUAKnjv}h?YB>J@Mhe>_JD5OVm5i~` zkgfwnaADK3sfgm-Rs56Wg)rhaT7pM$E=)`|AF|S%h5HPyqd=CZN#5Y(Y@R!`G9^g_ zR=I7S5g63Gl+RGHx+Mxok4AtTw(*e_DI7r8HkS* zR;`H!GkuIisJYgV5&=IqViua~8~rm$2m=AGo!$4E?}g;1n;~ETYxm z@F$hYL|O6^)vf0o7#%n?xhs zE#UInY{`-94d(*MT|cq3tHCtShtQj+O*XnT>x`Ic!&~($CrLk>IT=#L4tOpnlBPIP z*(?5yvDr&oTJlQwA(s#Si!~{-CQhq&=&aCGt7ArnyGZXnmc+Mf!b)gBzTwUx2Gbf* zp;l>{{^-$amv1^1B+*!y60E-4Fu-2lfr)FPB~OsHyh{b!HN#`_X6>JVZfUoU7f3@z zrx+x%n{gs)Nl2zU5>``}8HU_pq@L-}#oHATaAA3P{FoC681_8~{ku{6)_)^gKGX{s zrrE&0(67D^{xQiy?r_@R!c)Dc;Dv#vh3v6v7L#W!wv{0oMZAcqTU@m8XPa%>63iwi zhq;DZz0&e75fS8Jo1={sbVOM8dgR1;(wP93Y8 zm?vD8sbaUYy4MH0e^DbA`Dbtc07q(gQ0Q5)CXrH2nPbS3cMegNEe!XRGM1-He&aWo z=%cS+(1xKb2-rExFma>kB(a9WT{2bK^cpD7+u!m(z$ms-+Ta%s8R5e#xgq}mBwkXP zU5)#e=##-^TFHpkV%n%ooDpHAhGJE`)x{92{{VXpvGpax+@ZFVsMUH&;K#~RCnJ%S zooeR&#)f*~)uMC5Tw8wSwxjSId)ZYON!XL!9hETWFOpy*&m(Y>RxpMjr@o-8M6jdl zp+5M@J44mbMUf<{Qdnd}o(q--I;qf250ajy1KOl%Pq6t_Glh8-G@Q%8T!@2VSw|>G zrIE;p9t|y5IUaeaub%~poY%Zb=yf6$Ou1gmjiVRk0k zDo=(w4vos%h7&D1WUYnIr5E8F8G)KKrMU}93!-Wdi!Ao!sZw;^wlb!J(!oy|SvSE{IZ1_V6PlS;f$VCYo!Zk!*r_rR*qT*t2743ym?s6vShRJCH{c z{I)*Uqf!vjL}SYt(s!=V_b*XXs|}1$Kr+%G5z@ZFqn*OK4|&_|Gg&7zUEqO-<7uKW zXA@d)$j0QgmKQ;Yy>hNey$Z#3@HZ?JlXhdZVIXytAIfqPIr*5!OVw@qz6{_B@n)2}YL) zi-cvS$K`^J=7T?RKkyUIXu)hS<`1HjS$8r&D-O`t)@_kx`$6F?5Jv%YhSW*3HanbE zLf+m_mS`hx85(aal6O}{x2=xEqLbk;ou!QkF|)1+Q{$oD(36Vf`ysb+zeW6>%pobG zcHl!BY00ip!ra`u|a#o>{q#0C)kW!AZUql9Uo9)44*psCD z7NtrEEQ+gHnMuO;q&3SDS%y|FT#AgO-9cTV zVi`(2#^939)%6$3af&)pI-lGzlC;ZgQncxUWN(O;ycD*#!SUowA?97>_(G#eQ>aGt zf+>>TMEYW*ZB7wTjEP=K0FDA0S(&GVhNwv5(hqtr*1WP?XK0;o2~G%jjUs+SWvqQ+ zU`D{oZCl}vaHf`1GgG@GBiLtme?g`KmU&}IO*|VF&N9eXD^qhsB&$#T`;QB0&p)uz znN^=T*=4zAoigHYg}W|$7BQ(tuaXklv85(6RL*t>iIX*%R)$=paQ^_=3PTd5=$C#4 zf^#Q<8F69THD9q3TOB5uFS(epDUO*Z!6X~ulZtRoK*8hcQ};B>*#7_kq2jK{JEJ0w zccJHxpv|mk*JI4B-b`{gBU-6~p&+C`0Wl=c39`)B1RyDH1~%^al6obwCkrw1Vv@k` zOUQ+%b#nptcs4Ha1=;vf9mTf&!hQPnIUz%v+0M#68+iaXsIj zfq~4;8x?)oCoE_Mmp(WkDzvjD3tdh5>LF7)_S83HtF81of*09F#;8|Gh+J+y^l^$l zC$NX5pHNw>*~@!l8VSg@!!*kCcUnb8Qy&_;FkOtPU|Ag7aBmY8k?lJETN~rRym7Kj z)ft`t0Qwe9wRDjTNb|s{xmE2Ow7frYed}UOl4Frgvv@H}f+%HQLe2NG+>EQ>VkaFvNT#u&I-v-7kFei4#lDQK!c3Saini}Hl zh<%pMSi4D+1;p@F$47R!=6|952_iDYSH&uJwvuDqQt!x^sCg;*B3a!(*phiy9V_T0 znoih$!k}YKErn2uZQzsOLIkpSxfw&zO@-ud8T)}hp&czDw%!uqAr#G(HtdY>60vg5++?3ZaY@r9ZtC!D^A6n|nB7-{+@f~j1Lq5q|GRbq^IYo`PY2T`qkM4H>? zw#cRAkk8U=Nwfa|Lq%a1=n+a2X_T{uy~f)zL1&4XBIU`hhdvV^)^UXX#KvD~ycbgjcElX))#O_U_JUo5X9(jKB1`Z_W_9Q%zzLd$DdHXJuPAmJJ^!!0uQ_EJ?8#T?m5m#cfib9tKU%jNu5yB4Ilxd0Tjg0vhFvmPkyH z!|Far*4KiahbPp{q&Kjiq2W7nI&4oSz^A)|XYP?aAI(wg50hAW2$Km+ld@E3Nww_~ zF@~AtZ2O5P9yX|?zt9%ZQ=!R~;7CeNa$=3nz;6NKp}g>Y#{C^mPjZ%VQZhK!OGM8; z){SDvfx5QVb(21qXTXvyXqN&tN;8-hSi*T}nd_4)d9Q&;IAFW%t0GTr%&W+?tt`k( zPqE#$#HDW}XRy*Tb&gvX(P0>ojfPN~6t57&Cmz{9;eZNO-H1qbdmec=Y*-b$vf0V9 zd4Jjnz#z>@oOi%M!jU zY@U{dWTlhpCPUJS9N!={YD~f$O60awZT*j^n^$Z$tf9CYS<>)bL`wj!@8Lo(B~gnG+tz`!1uz@>$NyfzliD8#150rC5+h_z4XVThyq9 zjaKggKX}c!#g!k>`a?cZtqNN-_*@)r8>nvReg?Seae|6?4b!R9LX-?zdQ;$M#)x@?La$+pOGX~<%kEJ&rs#?l~MZ=L4oht1Jp; zd9p=Z68Y>h;BQ+KVEdRFMe&m93nzirX5JyG!@(_iw0qwMC!7`@ih9>XhZrW6?efj8 z9HSeCGb_?e3ly|@UPw4N9BR+uOSa@rpvEvfBG?YhWQq5xFsmuw#a~&DEx-g zXx59oT0bQ&N_-Qxe)gMZ_!RAlk*qP|A7oU~Q1gL~NOe+{?~*N39prIioRF0;($e7# z_bl2Px*8dcwj)~xU}PDr@>X;3E7XvPfu{x#`-P~g}fiTEJOSVwp+JDkE#t| zLqvm9bX3bIjVkD)DMFB|G~o?gi;j#Ik}~Z) z4cE}!KY%1f;Qltx+7l_;jTxagO1NQ$McBu5s<Rab}bSQXW*ayn<%omM$WHuDtB<0xeNG&WyWa5*=i6# zdMyP35D$L@HBd#wBTYWdJc%nU_^T?iuM% zYGxK8$BTwEHwj9_IaS`lpyHWqAvU_QxHc?5B@C8_=nVOZRzD^+k=)Xrm5;M_9&k8h zaCb++u?REwIVboTn)b3}kd{?aianOe{{X?{p^-~z`5lI|m$#jC!|~)IwOh)~SiW zkq#mC8*aGO66~j<0q&1hBsbJ^J-!6maeJKvkd?#JFtRSmuHfdydVGo3DyqLhH6+LV z3c1#jgWNh{`c{a{5O>|irq~lzfYE96Vg_QJlaYTy+VoTn$3?VZTvB+gPVveMWg2*jI z28RMz-6Yo@N;ffe*#uS@UAr8trf0Ef1S*Y2qyGTt2`j*<6m-+r%uF{o?rcA(=-$bZ zV8W_!*G626p(U!G30?*8`V3zu+$k_-vhsqOO}w5dqf+5;%Os^;4dt=NXg68uPgXP0 zCfrJzxCw^^z9H_w;DkLDGXf2Q5dFeulj3Lc{!fA*DI7k{I}n~3HCV67k7`y%PUzF{ zEieFrW3kZF%c3J6>`&$(X=n|oLVg6u-L-Hr;O0$*^hQN}nZynnSN0MPB6lzqTd%b~ zdiE30DR}t>q{(zc5>>wH@xiD(3uK8k;fg4)DMppRhipeyJ0z2AT&Q$0Ww_E7=Q``~ zB_V0IK=TsQ(2=^U;N1<7y%22p27}3aV+bhfbIF}DMa6I>!D0CnxllE)c%OCna1T+&JDTk({6QfjS?t^b-#cax%B<4i~-T zRZR`yLi3%r;N&Z`f5DP!7q^x-Om<6F$NCjaBKa*Yhns2P=RB8DG@jdG%R7B=b5d=+ zhmP!|h_iK^ro4zU+F!4+QmLzqK84^;-UK3Qu*UTYV0nB}6#UYfv1(Q*_Tg^Jp?1OC z`w(n+UPi&5kO4yOXdAFM4gy-pf?>fP>ix&a)8r04#^TH6M50=>i%;(^PjEwZ^eb_F z7`9-=k|2Z}7}(g)+ow;H`K>-Qd?@%oD3i4F*wN_oXl*$WREraqK=O1_d_Q9*r?EF) z)Uwc?=g`Vy?r=&g3CP|gE2O2e)4Hsw{Y=DfrZrnjk{bFt6A)0aZ_lx!6l;nxmCdD0 zD4&qLjV!sb6OCGQX|mkQLd#`v<4p?4A5Mm&42aTr#%!yt$%f=tC_vFJ)Jbc>EJ`a^ zg%}k!+aN0xGt(ymN3gLAXqP6!;MGd}8X^{0Uom7G?!AQU2|WAG%owfK_;}!Mq3Du$ zkX|jX&)k6?t!1rQTu&S$ zBTZ|QeFmQc@{j1ojjD>e-`I7?pRo8Jk$)G}6~e8p8q)UP?lq8IC}ftJZ-o7aMhf%n zVk~zQMHuL}2c0U0v0H?bC7mSMx1m(3HRMc@Gi*M_oPN0Fn{O%PHEqC(u8oY-Mkx9c zFG<0vZdovmh~JAPN43RpUB-|uj@!xbB;b|yKlu%p%O>2953eJqk6}u@PqEpTBRc(q zG+4_vYA-^1`kGIyvr<+60MK%AIDOeHyBFZl^3=79$GAm(IHI+vND0d4x9@fR z_Q(D_*Lh#(ocFoU^W4w<8rRrd+h$DP+HW^>%m2g_HRBa#%rvR^$^F)~7>8H63l7hf z#MHieN2NDs2N79O+gtpd&W`yakCF$nO{fRM{UrFf1uOlI0}TP)Pf)V(r4M3tHcx`Q zZn_U*<^mIuNUTJtt9lnw&L7zueCJ5a%4^~xb9g1iQO(FU?ePn5JEk82WE?c}TBjouK@#Fi;oU%Z8a=K@#m5bteOFct)GPvu0K4 zWo_OP@H+-AJ59-od&hV%iJ!`!>h#&~Dc0w5RxYf{LJkP#>`dW2Tu;J{1{wSBypYRq zgF2*?eIrT*#Hm;yZyzV*wTv-4mjq?a)iORT3Jm5teF>IPp2D;V1^z-8nfv9gSW!W9 zf1-I}R!{p&guU{W^G4^}kL_?-qkjdz%Q6TYOKik;T|(~J1XNKzA4t#HH4*qr&9he@ z;FED<7hXGPZi*59%fe!)nuuRa4`3bBR$CorkgBm_OE>uetufuH6D}f&axACIK|)4N zYabohH&}nd^1T}m2Q)kqdzM6{upK>8K0w3qQ4DZ^ec3d#!N7p?B)Lp4%gWkMdPI3T zK-w^kFZvx8hpc+n-ONPzzRSqG&sX%W!>>zhpRJyIy60w1gtOImbjd6#uZ2!#j6}#G zyx%R1xy|rhWfWP~Kl_opTy(SV4M^==sdJ9S)nTNgLU$s~?1{Lg z%~utfkc>vL2r)9!XAX3)jNP#JcueJc)46bn2gB!_P@b^s0%H7(UL&wEARG*1+3Nmy zB;8$;XXOi^q9ReEk4(fsyLVg6GRs?px{6VF9f z#JVmQ#6fhe+&Kb-_Z9o1$tUsQRO+SkIKTB>j%?>WQv7@@KjnV?h+1#(f)BAH5v_Do zQ;(7yL>DRD@sT`57;m(NJ;~5)ivbOM)tHKqFP2TRaJy?Nc@R#m<2CF9Kaxp1Wh9x$ z!d}8;#OG)Ca>~yXeCj~QF0u_=djZaAet@biq0b}kph~Sg$)y;+XOcy4OJ7xY-x}{m z#%xlV$ue=cW`)fn`Po0h zk5G)u-7Pi^&DB1bc0pV)HM6nQWP5(K2#mS6uO`#BUviJM%FEkCaTy)KPIN^3t7fA1R%L2GX zT=dkBj;-zMLtWd6Y>sJA-u4*nf5<(>m++bAnzo3E6t~d19uKs`x|#~oUb!Jk$JH=F zFfe66lx$}X?hyWCrRV$cIJJCshaRnq`eP#;*k=1gGfwd1{9?|vhC>FbFW>}AwTXq9 zl)?K_d$m{N{$mxn0pv`60SOh74KDp}G;&G(3MLT zTE&W6W5;$gEL$N;Z#Vl(5)0Df#4g}ljq?k#kJv_+bBL~1Xb4m&`Ph;Ni>csgU#$U5 z4!rma5{3{hOJa-$q;Qu9iP{?~X1&=5?NBcLLkm^(?@gwPG*-E+b<*`DC&cHX(CLSCbRtYhJ@+$`NRdEa z-yhW~q7!3L5_iP!X;4;>C|Zj?KihXySQNMBrt&vqdhmz3zZoajN(runLt`H1-;pn_ z(*F(-tBzZ~xpSGbd{xff>lqgGJcFr7jX0B6K>DMHPiL=SX#b4;BCW&Fm^%|{^RHKB zYydwPw#+k%@@%k?CJ-X3n<9i#M;ZmZo;#m%i5f7B&F)e@TFto@YUceTT&x!KepsP+ zv!VB>-?2sJ4WE5;UKFWvmub8c2E{zvi1PADOe5!N(jDD` zts7P`75JNX>L8=lcc3ouF?@uI$lia3iREHSUxZnEUQ?e2auP)=JztF|5zUo!Zs}SX zbmk!j7+H{g`nk0H_R*Z-;)AHMw{AeYitW2SYT9@A&xP#%qoAfXFT9PBtqwrjzT_yY z1=`;t5PW1$!|e}{j}YEX(5}VztKHw2!p&ZcF)^HpHj1IvTDl`y&+vxNO4bN2eZQ{r4Pe51HAYyG zQY1~w4`M0^JH1c_n}$2NQWIMo7xYK4X`cS+^)MdodWWZT%mzfAsczhG^QyG*{U7e4 zjg+~D@2VBGb*;y4V9vGakO5=n5wbj@iP>ovS(UBXo^KL(6A!E;ER;=*9NPX}Q>wJZ zOEcT5**1*(h}1M@@4s-eIhF=24PzmYY8Qji?ppNuVviQg3OKZ ziq{b&^U5S6moqFR;GR1#toCU}3z`jNg#1f0$6}u_h>;a1qZ3Uu5T5R7lFviS(a)d+ z-{yV=FKw@5<8L^zaj^?d$3N0=E^%y==(Ku(Okr;nIdPm3^>~-I{VyGR_M5GVdgX`= z6lub@@;azdkLVN7qu49>kM%L@8CQ4PRvMMF0q^FE(l13NT+$U9x?E?-HiI%0t@qKWVKm zG{|GHXcS{;3I5IH9w^})R717g*jLeN%-CP_WI z-xM|Q=Ri&6(={!n7PYF{I?_|sQoqQVGVJoLI~PzATSD{fukV{ga*PXS(XQR8KHQWvd=kOUkw}zGdnHiXA1MStFl0KEu zEQ)`3tY&Oob+LbvrZybU^i&yl!eMrzqKbZUfLq&d?$*^*5Om^R)d5!iOnT8 zDIbZ=?zK?u@9-D%4GF{~4?yu@Do6ix&Ni9%Ir=83A_I4*{I)qB_^!gI3awZwig?)V zHh0%}CI1oaq$HH^PcZ9 zo>2tlzToJ;xu37T=gEtHFHjl(U4NKeCeOd$8R9PFMu`W_$T<@DcbBG$rbGkUC*lwJJ-nY^?@!T zZdOGbR6_0q-l>ivl&bao;eJG`=(7F2*ib`9Qz-0C&)~T2{kz_e+^@YHV-r9c@o-<1 zZ2nUIbD?V^K3k-O1m)toOeEHRHj0y(E}J*^Df>U}Nm({~FPn?LD3)IQV=YM3>bf>8GFy&A5LqJn##BIq9w6$?hrB07ld zG#AnV3hpQ;*{bzkicLRHR3LSq({%@)!@ic6cUJ?Q^89oz8;Ywu6gLAj z=d6CR#*Z38`*Tc#dJ8;%S7bvL@@wCMt-c*C1UMOlobBL9vEo=lVCxBk?=+u=XrPW0 zlIAXYMcN@Zw!vvBH7;65;MvvsU*O7`sFbPO9J+NVJcDR-bYRys5bD?^-Qzy{{TiD| zDHYhEjFYxv$C$dbl`syEGXv(Ap6H7$l3d~E5(5SHKkNSHhhp(?V%hMT;TJM;DV82w4c)lAB@ z7&7J)Sn|NJEnUi>9nijXNRSThSn$alwE7zZ@moruJx?-Lo3A00%r@)C-$F{<2(hvu z)av!M&k&bxdPw2ZgneuwSG-bNeUFLwv5%AsNnurUNIo+9nzhbgrtH3x()P8pjPCdL zx#kbvvC_Z4g9x15TDN={Nf+UcN>{ zYmApPv=CO9Em6&N;77}7=zKd4Ca*g7n4k8BZ2{)T4W*FKYSjIa&csOz+bW_<{_+a& zt_;0jdBmQ3#N9(LO}@VFobVxADZHOPz8f531#6RE^81`M^t(4RN61<##rk^ zy&i|>l2{|B+hKb#QkvE_5#BwdMoK)YYVbb_R2qE_!EE>a1wA>@V*VhnUU;X$O1)_I z+)ea0qXUl4#y}zNNJJLZEe4A61EjZ(=s;(uaNvH z3On{#ps0hlT1(OHf+q0Mb*>||-^_1W2@|?aT53}=skx7pmiW_pYTMpCM5!eJ&p9xr z{Kh*Ui|*>bS5P%cPMu%>Vzg0g^&dq5RS@QA_N~83nRoIQe`40XsIFJ^2qnDBM&PJT z6f~^CWAgcJr<5I@JM;kr_s(p!==_v57rr4&0Z(it=5xwT7OK_$TJN6+s0NN&^qRY; z^F`00B9hw22cS@*91_IENyVYf!OCJ7R#Ab{v>VROz{A?EgJd0Nl(}aNeW6{FhW>dU zOOdyuRw8=x4r27&2l81+0(8qJv#pshy6z&&ORNnd-mD-Dc!~6lwEZBMy6_A)px+qb z_nlzF-LXuW{6KZU)Fns~-NK#u&9cQL_l)n_y;C0R0Gyk~QQyD9p6C!-8)lOU++7t> zt5zYS#~EshIn;67QgLiL1MURZwV65Bxx89uT>}zKeQ08i_Wkv9pKMMJOSez($T2zN zaOKA^qs&_{J`YX9*x_YK@R&mwmw^MKBmc7+4cnACUt9E9uC*@$@%H5V=k`URa z*OUXOGSh_8sXSg5taM1%{vZ_MR~=Tb4&P57YZ8i(-m5=GAg zWO7X26N^{84osl;xjk;hDj8aCkgY?UV4qEdCE?$liN7G0^&B!lnMb`~PX5L#nhZ_= zZtG{Dd8k#_g<5g?ezeZgnA3$QBcuWo0<{Q&{?wl6li}M(XculhjIe!vEOzkxhs@m2 zShk(|M>B3Z##dD|QR+Ui{A{UdlKQ&dey+AJ^Im32huSajyQZfGDKoF54f~Z%sP){d z1okF9Y3ivWv1&PAT}NVs81joD^7Ou4J+?e@LgN8~I~HJ`k@o9FNz?si$;9{k;6NvX^<`6+_+WL<+G4`_?hq1PSp%uV|Lv zE?hjLfW{aN?n_$W!xWc`m{Dsa9r$)~D}&J3V76%Qo6)J?bI-7za~brYl=MZ~SPv9T z)%%}$*uJ;tLh^>r^j53g)3kN^)uwL>3&yhIWgE8rqJB%4S*<@cG$M1jQt@2pJi7D= zjOS}DoBSq>epTL{YMmJ`Et$Xdeh64+{Vuwe+731 z^LeX$&ysr?L(dOwN{Motn7rP+l79tWC^kI|@gGz$W-NIJ%Id!C*(=~I+HBEsuD7Z? zT@ra?A+oxhKY=H3wt%iLMroNHZ#(h|n34A^)MX>1Dg^Mj$i>k`wp47emt<@i8kj#Y zq>T&>8fnGbk-ihNB}fXP|3nzGM`SAp{mHEtoH>`5@?Uj^0}7KnpjhueLVX3#bbh$Q z_|ro3iQp;;lYV!mb>b_YTFYF2l|1?Z^zNKD@Mv;h^4CXE3*cjbt>cpk72z#Dry!hAU%sYtrM9nWfRUGc zj9Ce8pL@2JeK{;;(?cY%a(+zbd;Rm^k6()R%}jGp%0bb75psNfTij&&aH>tImwi?F zA*iPEl5W?|gVr65fo0Ht*)+Cx#)Y;01A&)JDt{rLH!1k><_Xk$Z;}rF6~-xmYWKRo zD*}xt%;eaTNzHMM`U`D*Ew=eMrd^Qtg(mJs5vL`dI% zguKNdcdH84J=wv(kfXtI2^jr6^%D9fYLmP4Wv-Fk^sVgJmv>$stO)qr0-Bz!3lpq` zr6N_(WvAZdSSs*I1_u2#zrcu0zT2WiJxp(Tm*Pv{$WzLlQJVVXGQZwkfmbWqM0O=0 zT^?Bt&h~|e*rY4=9S6XG(ojzU{)@=4@6L9Ct(QWJ8Z zbjpMy+$n5T=}@6F%_RRTp7hM z|0F?xJIh+b}(rtNB!(_phHX+qh_ zIV_3hJicD*d_2E#nDAPtv@QA}y0~cFMag#&*8SGkG$077gL=(&nMiO6yA1b zS0VRr?qQCUy?pVA2_r4qk5NhlejAJ8GbR=io%q-CSDAJU#jRAzslrYO`*94RZfxXt zO4}IlsF0@5*1FVgq#D{gL)(`cM(oM!D4z1AF#tWu2$Jdd?&BqZ7Yre5M() zSn8i`brJl9Ts0HAc|7u7u7mgW4}qTdyzV;vN5QD|+{vKR&q4jmm~5pLPlsnvg60Ev;h+gg;0@;5doIkwdgtmg%G7>L8+X#BZ_S2qRY2Tn z{8x)pyT~T}Y(IImT>C#J{+wZQkADO_ys@D}mhRhxgwD7FECKIcO$SDL$)(g(*A8X; zjv+T5|L9p(dq)NJsUkVQf|55l?=xSnsliI%n|L`~-9P*7BKDx71`90&@5*|^JF<~# z%ocyA%8>E>{B=fAthR=XtwZYmI?bTXfJ<&u_tBJs$Fg3El&h88Ih)zbwn~q%R_G0ex^K&AHF|Q354U;F>_vl){Mi#avjzysP||uWq1qN;E< zJoXj!5cnwgdv3@_0ei)@{nwET#WpZiMc3Rf(e)8eRg34->_WI#D?iN;GFxqKd)};t zQR{`dvYf{|*3gu~mxor%SGv#9-_7We{x%p`OXO<=KzPjqkCV{{02fV)Bx~Mv-O+TA<*DP z^?SRXM4@njy7BRFdgWW_F9Eo`_R!^>f-(Tgc!(oy>|4-|K-sT*%IiZ4(z6?FHSv84 z-m;D{91DF6=0ZKgV2}sDFpnAP`~+R77L4K4GW0(3+<=|&mE9W4%&tqOtTHi z5`y}00RZeWo8U%w?hUq&Ec%`$2WR!cuPipI&d}bduc4Zc;Rt8(8r(l-uHYEW=;!n1 z`KAbNQ=T9q93YcN(oQ-{Xa`9D9xl^~bbIYr*KEqZ;d_)WA3rqQ9$4;|uW+}b_m z3K%ns(Pm*W`5_g`LaK%VrNM0693snl_h8*FhCSc#xsiY@UQ3)(c`rwP8O@28tsRZ**cm2_n`-1^OjIAwsxJC&wF z5|h%kl@_VkZWl>g&hS)Gg_wKugYd%xcj!F|Twrj4@x5%?j#=?E&yTg2!Z zB4Lwp{Vy|PrIVMt{TX4b^!XpY!Q5AL3I^XDPk92SSa!gs2L=N8^0;x(Chw_l1+0zd zdzMIdLCw+B8B8|2f+ez(;k6g*zB18BzAy_s^X|G5|LBBQlNH+-jm3)}+)wZ~{H=Q` z6hCr|JxVito_?{QUH{3*F~d(vS3*9Utbe{gWe5;7`Oba?DA>?PLAY?@Tq8Y+bH|y6 z1z6cUUhWRXbML@qucJV&V(A%gC8zF(@xbfo;P_My>%$yXg*J*i(@F&tp*L%~Gk%x~ z!pJ%j4mMbVG^nN!41>*uiu8;ZS$xe&KeKAAOyyA;wVtu}QIxi!OftH}%@tlBIZG!>O)8wbhzg~fMlwf+Zn$bl% z%<`rg;sm&h@MJIDO#aS8_#|Q}rmYQOhI{s}S3(nGm7i^{4nxxsBtdfzx;Z9pd*PlQ zxd6i&>Hwn3KPXsDlkT^*O$886;l)2QH<%T=#kmcs)VsMv@ryBjfy(GZA8A^spC#01 zo-KtX+SGzO+%Bbb?GJ8OHgP6wsy-_|S4D7|JZ7n)drQwWm9?%{_)ovCAw&?lC2DG; zT&7ZQ3KKr53s!ScAx`>Du6Jg{`qz(Gdftm?%nk7|%WX?p9kbq;JdeC3gMQ|^$x#|> z1${*S7-><9VGdm7$~g2oR7x5S)kkAe^&Z0kf~mc;gDI}zd<;oXCX28aKlBBteQo2Y zuPgnegz-kj9|ZL!)Y^vLQ9dYO_7BESkVpNv#qQU>XAU3O1s9`rA&?@ofFiYTMrEp{ z3x0f1D3tpmFi4;ifmMnUEO1QNc*ve{um_ZukhhKYRr>&+t-s{P<<0aV@;W-P1Hk6P zfB~`~0z#~0Q`4|M| zFFXltJzUdatwSZ{HJ(4#^#zK+!Kw8^KhD`Cp5C^f%z|VP!%b)#Ckg{9b$I>V{-bzy z?d6JpYjqxJ`+cZc$tl}Y4Vjss-VBT_(d`~Di+`AIMxRYYG*B6DvUsNBxnjKXrU^#9 z%6g%OIIq-og}{J-MW6EVuw%Hnlt7j*f#^W*h1|Gt`#f zNs&BIs-svf+TX_7BURLhl-fEA(J>P4y57xHK~%3!ia-PYIDj-FpbJKUEvKC=!!nR| zUM4$fiV(d(f)A8pH?Hf2U~><7x=)>_AyOQ-rBQR_`>)$eXH8}#FBYN%=BKRYD+KDG zrpRQUk}{T5a75Bm5Pv3brts$pJeeS(mpu+PHBcU_&B1vU88EN$lMtvN*2~*I)NfWM z*o5&dbEEYPkzAJNJYjej5vgCe;s;8);q;7c{HvI*nQV0)u@im0at3zAPCdQE(5iq8DKsXEm#LmA=MX zQ|LwD&y4}0iDHyUEJ*|o&=EkKWC2es#Kx)g99Z_cO&PI_dK%A`?xj_#qwn23)r+zy zg7em{V(V5{mnI8-DDU<805JiyUUfTxiTO3{o~a5@VhEiG9=WOzLf0e$h#Okn4)}J% zq%%VZnDKS*uNaV4`JpxL`^31|i)jB8k)(smGsC61Kj773fs4o_ngHjt98RQ26*e_}o=5Rm6by zAU(L|6K@0wMNi&qSRs1R|53zFTp!f=QVa=k>zYhWoxp45yq} zyk~4YNPn{^H@O(0O{5G72sJIg@oz8BDfD>uf)6}R&4MwGr|3v;)Vbjtm9}avu{i1*i+K~-qz6D* z)25{T%a}|@df;RjWBI`pq&S1_r0E9mi8CBr@TTvRkI9eOlZ*y9qqn0U+m6`4$f5;A z;MFU|`os9v!p{?wBXh>VzZ(5v!;)T4;sm>=n+_UC_8T_S!W(GG{fRg}yrun?UmZy? zkA>P6@5xl#yP3k0l4LDINNJfIy#*LTWBTZbp!!-@XNvn zEh}8gV359NDx*Rg|8%9ik*!jkNjHP4t@GFaC=QRgJ_LqSd*Y|bM{V}C1sXJfsNg1F zgAQ5HEbj#k0Q^`fZL^~uj@`u!5<^?DMAWqxgy|u;187Ue9h!T;>~u0m2*|}1#|iq% zfuxih&<H;%6n~__ma}_d?#fnb+sa)3yJCH&fPZ;*J!Sr$<4pyE-qh4o zxY5j(Bk2Onr0)sEBl(n;Gfiu{T{xo;7fJaOiY(9KCXO|QfPxeNJ^Pv7G?OOS!E`}N z;~5~ucIFMdX<>ejg9TqU*Jo@QA{=(z$HANvFUJ6HiCTJ*ob{~c%Z>!rx=@l@Scz1 z|CZzqKnX}&<2p~Mf`s%^uye2)(wsu~O0mG*ni;8sanoN5)qE3n7r-r^8MXnPjBYze zUrVqni!|K1`x-=*1GROpvwlE*v;I-fpds!pCI{h4=Y|y*eS~fg^juxV0`)0b@@gCB zHk>nksb(wbzMkobvH=cR(istN3$}_VT?RPiL-ru_rdPnt1YvC8G|P_iw`5_&lAcWP zAeI5)#CR0wIzK1X0X}Y14E;y*@ef~M{seU;e*uE4zBh*Q*p}9*4;;@mnTy$*i(tPY zaslV25@@{diYWq8!E$#MSia6+dK&wWk>tf5(n7f}m5io?|E-{D90*q+cMa_qH99 z#gkFeq>u|3r=QUV)iXbdqKC5zDom%6=?n4!UypSGAmohz%yisXS-~bmZfYi3*HFZ? z0B;}J(={~HEj1r*%3*@S~%` z^eW#+4%U;R{`#a|1I8g*uhdVpQ#Lg;O=$Sj+4}YNDIXgSxwONc%g}9(-2hL%;6Ea` z)*fbkPi0)-4@%|YW{4mYoVPj+2xkM3z#EiEt`)3bIZQ=7ZV8&1F6p)9*l0KMQqF`C{-kDFWfs(IhW~f z&rX&(-YXUwj|W%q^8-vpzmSY(2;hwFkl9sguIZ!{-|^wqWB>)_TrI9?z@Vo$={ZZ9 z0KmFFv;>{$GY14hDY*XK)Rz_A_kQ8jcebH`f{_i3|NFC$Hw~M`ya0Fouw47dj!i3$ zbxxwYU9FOtbmRNS2=OkGrv(EnO%3|U%VpO?2v-1m@gGG*18O}zvX*#ZY}u_G_Or(| zMZfZ6SftfSSZA6~nqsU-5dq;Fcr!+YEznBEa6|r$7kCy}$S0ScSC~-;PBozI!A#St znG_Qy@BwZ1`Fl4^4OQSbX?UPXESXmLjq#FLYpsH?1Mibte{{rZRd? zCmeq#-tZuR7}tv+sZ-O3#d213^-$vp+zNJLLx74UU^*p>fcJKOLIu|Mgi|9BOq3U) zsr=*wmFogqy zSB-#o6AOY$1Fj?{UV_Ck0K#z`t)eHa-;G1uZN?6i7vnS8{-Y4`sRI~N`RH)}cA=RQ zxB}Pta*0veLa2DymkoaO%?@@R$qwCH+M;VbE`(8$1xW6>?Ew<4P~c78YiPM?(gjy( z>eCCbbt5^vJxnG)Nq-h?udMH#N`(y*a(Fh2hMOyemBr5`-6oR%*P%D72!r6q-5`on z|4{@wWDOXQ1HW#W9fO{GU6X%ZPd34KFgYG6LQ8E#D^ftJ$_$7ZA6}k&Hy&tl3C|yv zbBn3sUQMO-d?~8T+hcg#12*Voqk?k>uTWG(f^6#5!Fk6VAj0 zj54UB=*9ozREDo9FX$oR0&Groy9noj$c^#;D0-y7?qs%c_~_(_@~?>a2=Nw%@fvp6 z>C!&G+e7(%{13#-^*&e2Cwy4Dpp5RvgJU&sm#am!Aro51z#nK-UcZCi&ui^mBH)*I z7AtU`4i%k@RviL2&{|Tgv8?6&Zn`O7W-Hi)q$L7HH6XKt^)R7(QsBbXH{zPqy21YA z{I}*ZM7lFldZ#s5DXxR2zWCU!79fe<(rGXD!Mg4c7z>)FJJ9x5Jpi1tmE~SOQ&@5X zrI_mtMk1&L-{|S1n)EWBQ&H$LeIpL6z<=M;td--K!Rqyv&aU{c^pFdZ)vRc>VH0tk zdwvVflGfvChbP+gRtE!k>N%i{(#^%N4kq64hB8g?`^CM{rDme%)tHOp^=q{<4Kdrs znr5;ph)NQBkMi%UvM^%Ou}$mHyFyhQimZln0T+*144>SgOa>MG2d0r zqUC1_Cp~2;hNxx*#{g~}1w`e&F3*AK@oeY;_*{_ez6K_k;!TqqrgcStCj{e)nYy=u zSz|dGdG$mC+#)Tb0$8u0q0^rKm)5D|z>MU@}g2s1*#n}%-{OJZy3}iqcut|zZi>ZDDpdX&=957{LWGyo|rYF3+s7air zo}EfDtRaWW9Q!*SglL5NeAY!AS21Bhv5Y~qb(tzalV^eeT|j{~Es9fo8U?K2=b8Zj zg){EuQsJtVAYdxbX|Qi)!KV($fpn=K=35v!*=W|jzgKlSo+(&uTQ#HjehfrtLGb6R z+{tMb-E%@-SA-l7cWI{YO*^AP$pLByry^5%8$XW_ z-QP6KB5foRr{y)3X+<^y+h@m(6;s0YC8A`RV!@c>3Qcf-Jk2YRzKGyNzOD(T91t*b z4PAqOKYrlO?*cNW@-}uxaqYu8hI#l|N*YZhCzC zS({3jcHaJH)lUHinjff(dj%{zfltq%v(Mr!)1|x%JcPtzujZ-ZJ54wZ-Pe4qzMk>~ zI`f3W%`f}FeQcPbUYK95Wz!#S|L(1>IpzTwm)YU_xc-+xo90`L={;RfN5Lmw>ifmv zDwDmUWvR}R=7R*FNT32<&8VF3wL$KA;HN9_W9Awfyp}h0GAt89<0%rS;->-q&VRb% zSWxt_-@8L*wI__*kD02l@QscJ2NEr%LJP@gfONCb6p~i5fbi9H%6dE($50u^0w`Jf zoOcQ3A&6=KaM^B9do9p;K9J@lCOo$}9Nw z2f+R{?9w><9%Pkx=M{fd4?r+wjw@C`Wq4bcRv)FS7AULTmmZ!eoIL3ot8bZ=BE&!^ z26&d~g))GG11%XCblCyIZ$rUSv@{}08*m1BVOK^rXG&p?>GE+4rm@EJw-Fv#9FO2y zqZeq$Iisw5m}F7HCthQ;&iFFGjj3hA+53^L9Wi?3R$2VE&)%t*`n|t}s1}7h^UA{s zwR^wVj*Mx|Vz$(pc9%_AzUJE#$VReyVhDD_wm5jIYl6__p7sjCd1tK=pDJ|x9RN)b&dt>pL=H!d^!=!uWcgSF-E-6W10IQ4wXiMaw%1L5Q(=eo+r~#DRleM zF-JXZLRs9n08@sl6T01EUd7xwaKV-5Juig?H3nTQESk#U?9KG64h9T_vzxk#*_g;n zxaPR0ark>-z!s2n?g_6p^cZF1dA40h^Xg}{_gS!(b5;$TI--wTOZoONFB$Bdr%jRQ z^&bVs8E|x=jQ&2ilCH(nqg0_H%}MaTrKFO>_}FH4J?w14+cq||!UVO@+e%VpzM&k1 z4Rtxjk$%s~I7G;le(DnAS*kTqz3;S{xh3{7aC?w`GX+Vpke#6)sdLUMhSkYyet&Q$ zVqx6BaNX#ztC20chU-{c7%xhhR;Eq?Ba$;~C04bWRP>JD4UM#Zzuxj76Fy%-%lwhQKNz?!SzF<)!{JskBknc)wfVxz(bG;>@Ra`Ff%#* z_^>bJz)iKP=ov5dy;|V4XyV}Vt$8WrwX z9@@W5s|4hDIVTNc!8i&A10oE(;kY4I1p^Q*r7F0LQC-BWoHnp*CQVGg9IR#hgviOv z;`$Is$n&6IRJGV1!}6%D8Wj^me}|BSEJN{C{*x#Pz4Ub#s|aIfa>|;P3*=e7%x!iX zvFaWl^waRw(5sj&hngCAgYRzbAj0ZFL?25k^hUKOa)tjdN0o?T%EGXsOmdNa29)L!l?H z-`HvK@>cP*vb!QERFocBiVSf~=U-f-)Y3edLuQDVycSf_NgV?fm33#|HP$R{B=j9C zpmY(QFWIp}7wKWekPXx#qp=`nq?R6>oQx7P?xyS>Uqu7v>RN=UL+hD*nHdM9VRtzU zF)V0hF9IEWi>D6zSClzS7_Gtt_dVo+qt5pvM5QhPOjpJ#iZAqj8{AWbAGv2`K0C}B zO%45Z#wSWsdY$7%mT~8a%m-$(?|G%uEPuVdiwgt}Cgg`o2TgRcYizGAb5iLjNEZ`N zSDu&$9$LvhGS;JbFKgMGGgoOd4XWQZp~{k{nXus%%PxN4p8ZbP=Ln!OKMWyYP6o?U{bZkP-oFBc((5$cg+0yPc236gm*t1xLb=KKXjTiwK;5k*~=j zc1=aTXm1-9A&M}B9VCMb(Sn7&5u!z&rrrj;<+)t2@DaJm^!GNdyR`>89a@Ul&-{hkD5|W7<-VNp?(cUCMgJVS zI}8ik1imf%v>sVT68BrhzX={TY@S=ssUNCQTM{{5gbdgrMO5XKO&sG@L%vGeqW-p~ z=tZ(N7t5Bee&gygEmv2HR&}lr3H>}z`+??x{3b(%BLdJ z)?$;GRnn7*7^wGzxZ98)8yl~_W0_~lz-?pd0{tbA81aOx;a`o{>ZOa#HIAk=G?*GN zF5M_yvH7H@LKKBCpxDNZt^FUS=C|_M;82X^BGOP0)}4$H0>M2wP*2`aQmuu;0)4r2 z{c}SY3p}Mcmiu5#>|3k=rcfr;u|r>Hangg3ZQr-|LVu4RgtC6+h>36# z;wkAeL+j&Qg?RG2QaWT@BV^gAOp(B6gvq@KZHR>m+B+(4|K;xa!!^kwvh)(}#U6V3 z9|ct`dt`c;dl_|o_RW%Ga#7s*Mx)-%Lh=s|rl19| z`FighU*(U_{ZNY>1#Xr-7?Wb5rW7h>DyDEDdM}}_4^L=+TKA+3 z^zmUySLSUKzAH13f$#|!1ElcxhlVywUX+W#0H{n$aIzp|iZb2BuaE)@1f-+@L7s)C zezr(%T8NKjx}{}#N1oRR@9d+Y2xDFZ*umG!R2Gx9dIP+8#lnQo(Vg@d$SAk*!#vY@ z{eT>*zthnqmGF7au)%GyNN8g z*TtY2qSqV4M@5T4EKWwsL=hX8BYBDG)b&f0h3{WmP6BFFXn}WCl+7}0v~e(fKKo|m zwHE>sxE3vPr@7?PcBX8$T_x|-&QSo(f88skrYbM@a4V3y(2bWuoYqxFu|nAefuJRq zpIEZebht0L;>Ll3V12IG8xq{H$kseSbiscj03; z5R0$!{E^ot9CbV>X4X8t7bc2$R4>JW;q5u1j{E3$7eYTOi*8$9J5noz+f@2| zl}0WNnXNW`pNuChz1m2Gqi%)NM&=&(UedDXrg-9&e8qVaa@ToSp49~`H2U$7Lr$>c zfyfkaLr*MvQLXyfLy}^r;Z$#;4d7v~ z*{s$wZJ5zTV9c(SUfr9H&oCHK>Sd|FWc^!xrtaazoTUWy&!C<=ZP4@$by^OrGJ4MFM?TO>IuyqTZ>DBNWG zKaRdTEXnu#Ul9>f6VVh$DxkOxN2n#FheV+Ti&wXCwoI`%f>q`Y1FB|o`vottic%#Gij`J7o zY@OsY<+0=zyXcOO4)@F+w^jwRH-ccnw%UnknJ=m*;VLh8;L7@MxE8oJb0D=gFD)<# zbd?IFDHTG^V5$6S_JssUp;?25?J|&_+ip!J0H8~(5&*;u(NJ$7LbD|*95Si3Fo^K2 zDbP~q8y@eM#6Zl7E-izX6@R69%(73>u40xF?{{Re#@pGI5~$5O0c&rPXP1L$+UMs& z#Sn%2C`azXkW}8l+p55C=+&{8V=Yl%bm&8KI+%rjS-(jZgTKD%IST%dFL6r~`ygvt z0iV8wEcf}Z`261|mS1A{^#bo9IzR3j&I+C_(e#@~#1!tcoYAY+^tP324Y0e5|56lF zZH`I$if+2pz}!9at3Gc9EY68>nDnIXpwl2VrU;3txD;bP*EQGC?#d-VQ~80`e7p~k zWg$Qim1vANLnztvseqNCrlHCNlBqI9oj((N9!x5PH539Tip8}duqrqLNIpWwN6_`n zM^68PK6o9Pk0EEkUmrj`ly+q~e*)0&D6Ms=w;W$enG`Xje6%fJIF8AcbIv%BmZCpv zgSdHay9(c%1B?{#cgn7d6=L610e6tmajeT>aRVs9R=e`{LPnUfuEf_3uJu5ULyp*+ zRgSX>K11&C#7MjB=<*5c8HEJQ;utL8qduzTXu!pgq{Bab4GiMmPQmosWXk7z?dP_? zi(ondRztr&gGA~@(+;I@X_-n;K`6kKN;u71a9LUXP#S`-&`b*okN|igz;FP+7ElXp z)&?5Bh@LxfSP46wOOUB(GRx&3Ie{48MQD&V0vmJf6^G9Fx7hQl0LJrRlA%)N6phEr zRM{cDUhSG*1)(ReceT&%OI&4Z?Z;^Ba>ENQ^mR^6JP#RU_K#Zs&}O7pZX$r^b$R)I zwbc3l@sT}P|KnTIMqaqTbaSkD);+%C+C=G|7=tr|YaxKCjzeQ= zW^U_+U6br&=XKd=*ThzVQLKpzW-+vO>!QcsjHX7sDAaTKof?U^#aR(}v#vS%=w!+s zU#ck*YTC#EwiBQg2rxo0&1?Y%tGCZ0ho)8t1VH$72v9~R6l{j%ZG&OL9N(Pq39U9^ z5eO+}VfIlYuOwKe-rvL5{L5mBmp!>YFmz3jdJ0H@mnHUXRQ18Hcmtuk+>yikqDcids#l87z1{>HAOwuyrp~-f9+!K zM|$i1|2S9ER|i{qCH|(Z9IwfXH`z>(K#p0ews7%+8yQ-@nU2T!*YoCoh~2sou99># zJeTx8zSv$|eTUoV>e9`XT?Mc2W|;^}o&t&4?K$N7A>=s$!4KgH@J6u1L~)wKl8fna(DDyamr9nutVnis|?sJWXUDnH?u>JJmF7OlrimLE5+7-CZT^)LjTgISH7p;9D^o zp@x&8X0KjPyi)Eq09g%C_!_-Bp}pl*^;;|-Pt(z!IG-4JDFKnY;x{z;TjuI{ zV@In8D^`p!8(|4*%dY%P)wO_+RZ}6P84BqR-r2*8T1ac~r!gK!s+|!EvbDSsiv_`QIQ7~9Z1v=`=Plbt! zP&T@-(r|`M%9D(DLi0JGkLl{ib2@VK zbJ^(KbXDVK{QL)oi#~0+2``#+231ENF~~;w*9JFJ{SuMEI`8wo8a(d3NM8yf zM_d!XxTk1cz-ztO(N_DxcZ_jYHX?Rb|NRAB-P}N2!XeZvpo~}*4NTzg;Q6nFI#5^>Z~tB*PcanwNb2*Tv4V zT6paUxS_hc?PLAxF+0W|^Oz@m-Twl9L&M2V0f$=D7TinA50R&WeHJ)|5Ab7jot(K5 zgvOPwqp*+iYqSbIuI7jF${(yDWt*Q$2N+zv$zNz4rBe&;;?dRkC5`&N*h_ZkKgMQG z=!Z9~) z=FU9o7*0F&QgY&KE(8JiFW zyE`_PR~A?UAaSo+*4tuR6J$uj;yG0NpH|x-sS)~dYvA8uEuKr0kFRU6a5*!tLr zKs&ovcgMiNw%z++=te{kR}I^9Pd3N~3K3ED2ZgBp+k}o6HG3JPk!t=isPcyYHLAc*^3- zBvQkj5hok5-{N!ifGKl{?WhaR)yV=v*6npD9dkNXutvBjn)ZW;yz>qcWBCF7d(?R8 zHOJ(`QtgKa_P{9US8Qynu}s8@ChPs2+q?eZizr2xMfWqIrS@9)iMev#WZOTZ7bo&e zax#Q0W42tTp82oqawIPeO?24%y|~zLe0y*~`jq)^v0`GsUV(k$)T!m$#3Qd#QfkA0Bs5S4g6IdZaO|vE#Rx;iIVOIM{=9`5xm>}X0 z5=q1P^D7Z}o1Fr-<6|5K(o#ElXn_fa@FRf;U?x~uS0PtUAx8@CtWehXxyfR@oTfhAM)g2Xg zTaBvi5Jw-6qe+*TsHN-dSRbjev?u01zEvK(LpzZUp91Msc{1|u9C~!6bbouT)0?bg z{+jkWXM3$y!?ND*Tb*M>MvMuyR_rjk=4x~IPE%?#YjW==>lVT%tj%({$>1b=2+8UO zfZ#@uhY+C%V5+q>Oes}~mqikwmEzzS`MSent<3R3YpyviG>sC$rHvcJCK-rOk-0)l zadme4kmBGgR3GWxZb0A8M4iBz1M%5!F)W#NlQ8hMtkXRxL1UHq=%JJoqAa}|^F=e- z|E>qzuGx%N6E&pKJSITg&l0RN7!S@!Jms(O?e>14@?^>D?d%=rm`$yL!{j@{s@9X2 zh8@Q@gZM3I98D$vb>o-^n$BX&b)am4MH?ml2kKD(3b0X;UtRkQ+-UZ5&r4FT| ziL^{Jj0y#T;P^s`cwiC|np(k3lfXH1Xgj)T)~0(hyuvGasFZb5CzQ&EF+gXME(W@Z z)(vj5Wq!P{xyI=LPM{~#2m``1wbO0X`L*X&7XywO@{*59S@QWl@s-ieKqgD!K%_?h)4wOM2ZCyEl)2&ObG=BbMW^Kr!?T+xg)^@GDZUzE>v zVlNbfR+U7HHj1|pHzYsK-?mo?z5UHT?>2I%E)B076IFD8l;|EB62HfPuHWLCS+|g? zaj*^XI^|VABBbp3OUEwY2=_#auxsS&>&~SX-Fk^~ejm&pV3Og~^({kcSSzd@i$iTooen z0T#iF2VdR6x0UCf24W>bOAp__3i12UV=`r%%Vbjf#^K6s`sDxDs4?Lbk)OeokJc~wO^Tt>~L zRN?t4r5!)}rrVZ~ysjlL+1DT&XBCq!^;>6oiEq?rQ7q3|pz@N}b?g3F$m3rP{#K6= zSCr0ge%13|mAES6QnQz zk<_#&@b|8$89QrPsAcu);h#o_zVbRF9U7k}C&U3)OjKqV{2{=zy@42EIg|XmrK^A8 zPY;|&yT32JmADe~@JOJit5%Yj;_6X(ZyOrvW&joo8ut;o7Z51$@Q%9u^~8AJ2hLlr zB@4s%QC>~&GzzYWFQR=7v z1ja9&DNhp@C2aH17Vw^bh_A@AS995_-adA9Apc&4_XI>A`%l`TPsI`s4Hje`N=WTX zP9@gF``BVDlF!X1hiMPMWdq|vHfKkI{tRfwF=Pn~~fE!v}x-lF3_@ z9Eo@~wJVJx-)grn)^QaUJ$a?*fYP_)w#*okJ$=rUGhXA^Zbc0d@Kp8w%5aO;|7P%? zB4VKV?gydj8t1|5~Hii$$!p#>EN(iM+WgyQyVoebL?h8ER%;84-><5Kg7>q~=8DIrc zXZ;+VtjZ#kxI8M!ngS+(5!6i~*^he{>utS7Artnn>b_ z6Djd=VzWnPoh)p*(VtH^cAcKW$|aj8$V1@IIfaK2Sem)xg#kf@t{9D2oS7_ajv7|; zp+Q>aHC3aByzp7iiEInUZo4KV`21i!vN^B9EV=Viv}?tNBXKO@#{~Rs5n}$)v;Ttx zOEF1#5@C%^Zk-DXBb{MAQ=xmO?~SvbYpnA0cjw_O$i_qso3#tSUTOXBy>SUT;Ie?D z<#^g}rJ02e&`M=EgEAm&j+cURXK6}GJUmxHleE8~q8_TPaNk0mxFb)k?J@`l7#SqR zCfOHqlW>Sla1!c06^~YS<%3}`Bf1*F$|Ril0kC4yTmM6`RG+*QZ`7IOrhDXb^{hN* zg@lPYQhNaD?;)90?4=2Rr*pV6TxcKKPA2(Glq=t{Ywz>Z+_9)youSkO4lgCK(J4o6 zc~OIsI#_Sh$~!`LqX$>mpO$Ray(ex&zCUtZ!+>yfMMN3qeL6|9-^gv!^FYv6Z?HS( zVH`%e$m1d%6B=RF`UNFXlBdpeO?h}kk0z2V#n3&sI=EwKfZe|+i;>SX5$mX{4;f1R zwkAN@6$xQZe9i_cDMb*(L(@A;bO0>lL#G>MKF`+gMrQjS4|y#d81xLfS-Ri3a4859K7(>VX9 z?oPvN?%zg5eqbmid@C95-UN`# zL40@B@o3tfEr4w=(X8CV3VO9%qT7p}nf;+SI4nk)wtoe`kyU>3s9MAL+34%`prQqe z9VPM|P^R@N(DhXM?04U{*IXnt_7y1)I)l(GVzd#Kq}dqYQ79M<*{yxK%U$lXgB^#SB)m%mkT8bjyLV8 z&_)I9x=E$0pUv?V)wl^Q{Eydsjt z@RnWchacaLR(*p%q4I17hxnEOLs43N46<+PPX;;3t zU69IfjzZz|$s?bb_4^K6k#lxqK@SF#WlA1DtKU6EoS}dRjU-#t2{n@SOodF-S$nWO zL5c!Nhvvys;m#sPO5LahDny|g2ZI!uL8(L~0{E|-0@Qr14hU^*_Xn713G2zvFQ$cT zd+tLA=Bn679=}8hA7XKRZM_8>wP&x4?-|sgAr3H%J@3QrUy#^~0%8VWD zGf9<4PZo46UFf}1;n+Wb2_m3sWVFi8{g&NiM^kEg274QZVol!YFyy0~?$brW9{V!c4Bv+)*rZr%8@Db z1*YvQCm^!x19718L2tLhZT!ea%fHNW*~pH{vMwu-V`t=fL@~QVJlu_O$)RKiwOY|tz0A^ap|0x$Xm%)?pRATT0=2rY+B#C;){c55OvH%~#wbI;GGZPn(0#Dg z(1a9UnfOp{0g=WJDLXTVTa8TpC+sua`eI~Cak(-PF!%DyQ9C~flyPqNsP}I%E&LJ;@>It`xb+7GUM-~g0{8We8RFIjf=zLYN)6@+m*g5*6bXO7PcDJcf@ww z)qLUFg<-!>%hkOI$B@UxwMC!odKH*??4hBMi6y~<0rZ2sdP z{cydAf|Lrw+ov>S!@^jh3+6wTa!eBB55&}#C`-$~$x`R83xo{LWC3`vt^%kHhH8tj zQ_~m<1DQXqxps*5jAq`tB9ub+{C6rj1(dvs$_N?ukcbZATaXk_)x3(j1*mmV?C72?y&4)?Ovlj0w#Ja$*vmm{6<*f|n;&3W`p zNwv(v;9F(a|MJ*R?o=5MdoF7H`wwYB-8PrNDG z{FJQ2@HAdR6fvB|r<1DsAc1=@#ICX_!Q=}?oPG_p(Vd3!eIgtfwksn{o!cm0 z)=sXn?)5qe^Lp0(NVfoAOv&Xc`{;EE22NNsS7q&v_T(vyD&Kof4oQ|QkGFI$DK=|< zZCG^m5KoEjaPFwjtc{OgRYYa5SW~B+6xIhv3+A)VFxn%yE%2c_7!*o_LDNXQ?Ry&t zC76Tlt8gwjaZVu>Ft^>rZOB9}brm|)-r}n~Wt3)2l+D;af3~eUu(3Q+*g-8h3>whXg2`O0J*IY{L zw+tUzYSsUyYG5qO=hA^qj2x|fFS7>mScQhoMk;47%X*ZlD~RZ9qawfEvUHu29m0M< z-ZlBVJW$RTxqQEz(4Jj7RV<|l08AAJz5~>(U;F^mq>!^yKQ z1+f1pk}3;D{vvUWjc{g~5wGpl|D_&E2(YQt5ZMz5=CYt8?XmWSR2&Q^{vEX_vVU_= z{PQS=!Cu;j!NoZp(byKlS!w_xk*QvahoxNIJ#Vi)7{mp>l<+M+DoTIKO>j8*9>JG$6b zix``|#|}Poz5gV_pR%!Q7zvBpwdN-SzVg=IY283U4C(RUF@I*^GG?gX_lm&CG z8r3y^J z%uSFp)EQd#zdNc`vO7DUfUPj_i57@3wyDkk?ynIZtx8h~L<5o&<^4uuu8e%j*vK1= z{m|Gv@AO$^_f41Pr8rcFWd*Nu&Uw4hB#9flp40?}a60MMhgkhI@}x<(<+EQwu|Ftn zZ@w^W?^PmlrdUjTW!9F3qK0IfuN}th^Ugg;rPncy+V{!1EI;$qf~8JSyFSmjWo??& z#s0rEil)lI@bE(cojyaU6H;x&LG=_e_r$liQ`DBXQLI2+Nh?Mwe1@2A-mWkx;?J*q z4KxXk{-)am5vhaMk%9P)fT8}6t zHmPi*ViE^Re~b2J{Eshf&GJ=)0K5lhdd}`73&0Ub^(hOzA$k5P=s(fE_oA}Okw!YhYZ=V8x=V4Vi75f5Z|Qej z++#GxjeBj zl;1Ygc!Uqmi|>B`YPm36X7Wc1hP-9tPzMTjh|zO$>&Ziu)lNtqsg^og?Wx85+NUB! zozjYojzrYb~vHDy>_$U3jT#BA<9gK&F z2~cPc*px6!QMhS@bKY($E@qj|%<`JdYGDrt`~4{sfh%QcaD)DhcACNwoB~$2V;b4w zI8}B*BL9?(F=PiXQvKuf-0o&}$%5E;(F@{efwao$`C4ae58mOQsM^To*aqtMANjsW zNSer~t{+S{Dts=TUU_;&INv7va<7%ez1*qk=6*;qxYGE7lh)6yZ}iBHo+f+eWvs(-irCrj}D0v?SUL7j%U}pYKeZ7Ol06Yk) zFPj9c10c|Uhi~+v7D`g2Zr$?U(7ogE2dFBtO8C#qNW|S|B{wwa^a9W`ik5da-r(83 zL|E6T?Q(*C_Fs6_5BpA5QDO>8y_@CGb~ZcKXgps6?$FW0AK%&kODYAV^|_b$JSu7KRhN!t+*^ZuQxv#*dG_t??MJcUW{;WLD|Ug(QWk7i|2UDA}<@Sk~ zU_|$7a&R8BqFOJ(e2s%c3bQ_#^CC)vSv?37DD!zHkB3sAm4iGfU9g^pnge^|33$RO z(~%S~6oWl%d!8<{DN;Fif59}AnJWpyg&iEd9k42a2-H6}CmjPxptY1ojl69wS9m{C z^|{DpwY0}jbIyJtzy{WWIP41@=y4u<5BUSSC6-k-HKO6+urt zYxQE`W0CVJovt*K?lJ17$hVG$FQlJa%E=WY%%Ad4__t$HMzq#G>H=}b2oNTOmyjzd z&6?T+X3L0T=|TWw@gF>B!t0bZ5r9YQramjkN%VvOgInx1$-NhACL126l=gL3UY{Vl{pvT8f@$A70j)b9Gj4nbfm^=yL}UJ zCB}r%qIXbm_%G-!X(Q|GfJ}sMQFp(zq2Zj(rz|99<1M(n_U3fX){&7bmiPSRAy3=) zVBb!_JXai->MjU!;LH&y1&~cpbtAgzJRHZ|Hyp);<9D+ z$PUfs1Kz7OtJ42Ve%N3w=xW;9Z5&l$f{`a6^95wS2mm4|mU2iSn6SLfJFN=@ycBA# zwtH_6k4-|c!7{AhnM*THsMS5K7lE)rwIqt{%caCiU3(6fW`t2Xo z^Wv9JKXX3=G8yH(X)?cg=g|0_9&Ps{w|A}8n@M+FGdd#Id{H)z1_o0c_qh1wU$bip zaC*K!9=srt5fQ{R(tgnS{igi`Ru((D!?$zi1a`5m%>Ll=H}dP_J+N2%g4cVASetvA zEGvL3;gN^oywsiH0ffY`obQUyKt6N;Q%Kx$$TLiujfo{6HCUPh#7DDlX#H@82 zI6qA(d<3;2C`}t|Z*K%lY5?H8I0bIJ0-v1}5w6t`g_B^9I|Le?v3H6NAQEgyd>QrD z$8Tj(9*M167lX2P11^2kw-YvgVo~b*o%P_RoI^j2F{!uxn4Zb`H-5*bLGBm4)8VFy zg8RRbu&C;Yfjp_0`~I?(_Ie=^z7n?62Vj>oQ&Owloi6bw5#@asS_|!%X6||^d$N6S zHx^sYfE+F;$|^U3WJb9_iftPY!< zf1KG$&omV6UcJ;;K0Cz@@1@21$z(>Bt8Ce>J{e4$J!Zgc6~HISmd*ST;rUsYK)SU& z#Tb~PMj+MSw6}+_mb#HtAR3vakg3io@JMRw`iNpEREcjl=GzE#r(!Hc!zA^AE+B>6 z5Ku3OKJ49ty(U~=r_z+ha|RH+hD}gYcq5dk@mmRXci5(A!eG>0afM0$1@_C$OHIYM zGzilt(~6Jl9L;+Zr@ZYSz}1S~&d~0g$F5nK@>uMs#JlZu7O0m?yinL)uZD**LXi_gVA;_SRpBtm?~W z)ApkJqCqEAKdBv5Gf!U+x?U}x2>s#6xlq!yb24m8CFp0)dIcoWV43XUrrtB^lv)l> zc)7WOXnmV29(kNr_|kUc$Ro_HAcj&Av!G+I>9MfDM}%T%C{;h|R`ZKwS(tBeiTPq3 zYI(C#h)RYVGDJdzhK8uZ46r@4qJlOF3rJKaj*Oru(cnGCctKG?TJc<+kbrn>N`UoP zXO4he4r+qcWzdtUEYw7vV>COh9zM^^C0T7(q(5$qNQ^&moN+<#2jfF^SHtDQ7LBk5 z6XQqk08eVim*%Zeqi0#K+35!5fGeZ+6{~HtQ`b_xt{gfRy5{-wi@DFdfwAqYNTMAr zC>c_%_gnq0>s4S!=h>R9*Rw0@At%*adm@DuG(4kw)O&8bnu+9m-pGF8aSAjs1GsBp zo_Gdm92B=)CTNoB`L^2%u7!0$14r&?E6Fs3Ce4!Un#mNdG2W^B%K<>Nki<1(1>$8> zLhaRPBhJ|v+6XUb**8KdiU1z>i(=K!WOWGQ;VF(bIi?39Nf(|e7YSI)p)+r09Xn)I@))!B~?JIAkeKW*D=*wx(kxF&kKmsIt_Mf7d7Avh$5 zHx|#{>ZHVFdO?S8Q_VcKbSL;fJz6PtX(`~W7FuDSDnLJObj;#<@Yai{EsQ(&b{$ts)h-Dl8FdCEiV%)ix9VI#tKf&D9v}@_| zPnPDdeV(5cattWrR2mKWQzddG$LfwkMhAzR#2W>j1)=g*xuQa_K1rJ&!vo%^w8e;h zk^Ll`F%C-Sq3s9>doM3btjzoB`$g|V*Odx&DbRwid3R(sLG5D1YmiQP|17~r`a{vA zUG()NC)7pxyzWJ7^h5?Xpv-_Ha?dcHWpj~14l35bw; zoL~A}=GYsiexrqmbVw;HB)VwIsP3rTIpHQW1KwFDAYK+WCP3B-`u4ns204*`Y^&y> z6}u)xQ@F`L`-7mf6lv$d2-4wRrEg4D_n$1rqvaWn9j>OgL9XeMpU|7tk20|cU~*09 zjT0&&u`%S3(Sid-5Ga%d=jv7~w6Q}}M=L7O2*@BZhXBdc;p+h+ctjCrPyGAr4Spv- zCx_abY9qRcyp4{BA{b^&TJ{PGoTR&?RgIy)&WDaBnd{!F_db=5_)pn;y_KIB?!bP~&c&*Y5JBN;5GCdn@ow^rg}*^~M70bIugwHjrFT z7T#29HMd!_FH++D%Gt~}x0dfbvG2)Ah_Z0RktZr^MYm{C!wijEpRQWn(Uxe^>~HbU zekPefXx+9lf6I?^=N?FK@+AVJiV)-5=x<_n33}x8voe7@q`kRM zGtUvCshv{%xm0r;7B8EG%;fQdx=uu;2r!}@5y~P$xu{e&6t!3<$Q!IPu1ZXakf$oF zU<-%e3FK!bC>K~hFQTt9Q$uxgVen%bk`MR~j!6*ix!3TzS(3lk`ER@T;97n{3Zs%m zTQ}*seqJY&^d9w^Kj>JWsMzWGKzOF}V~j8j8m>MHPS_n=%xH*%*_g>|57(I)*oln? zM?q)~@A%3rk#FXWA9wqu7oZHBe~EV65-aVij}o$->Wk^yHf@b}KzpwQ11#rdAD3`G zYU;RAozOjya zvM4kV1&YP6xyg7Qp0(#f@_^3#CMBj&n!utW03V{tWR5eoQH!)(X7D7)Ob)R)hlFBf z@78@C#bVO7kpZs(^MYM_zBf!noh;AjQ}pg^>qcJ5kPVjpCX2EvAO|6BWIbYx>$1-= zh$aZTczpVtVatt4bfQ)c<9?^(^yQM+U<0P;5B~SMQ77D%Rgd)c9DiT}JziSb5k^)_ z(|Gf`gVyd{=EvY;b-ANn2 z&+>C#l{>GIwf<9F;Xh8-@#-UxnpyVmIX0ZZaA}YS z=(!{&064-6b=zo!t}Y~#kEYF|X5wdvNvJvA4hYrGwcaxVCG|)H&JwYYK=p%4i&g) zF@YD@GSs7`?PFIPv`(II!quJK#u=8Djm6#`&ca6S8dW(#x-Okyw}iF{yX_=x9yxKj zK_htN%sb@$N39d3-zDfvHspEa$_exr$n^yAsIPfHYigk%W;*Wfm>N%mt&?mJLL>1vHPD~K}l9ZUGNT3{$p47E&N`qwb zU}KDvQn!*;rkSFmsw#7^Ag8E=#TFOkZ3L+aq?+I!hb)xn$|$sI&Rmz#@uNQu4CD=g zA6aY!+k#u5DRo1iA9Rq`;M-nNqj;D2@q(88iR_|^lgAozBsW+S+|jDV_V@KaeanA~ z8H0H%G??ZEqZwvUay*JE_Q_3hI1=z!Y1TiiCm zdeF%%=iw$oeljymLfN-#Nq;=Bp=05*{)dgNdeDP7gv?(qC6s zmo_rUyXq0(dRkIFOHP_pkiJoy3BxNV>CaVGRJBa!`M~M=3@vj7P+>Di{v$l1(JiEV8ZDOw%jF09Bey1L4V&`56{*^Ye$ zGVH;>vzS&Y6FAL&S4Lb)PSo7pNfG|(-he(v+j^K|p=zN!kwZNHYwnP*#+!4y=&x76 zcc><(_9UJxWIz`-#-WLZ)E4GnfBkxfIfbm*ho2NgoMl1y42rq9|Z{ zBOI^M0ziDby>*G=DIAlsS!n++S`q92(HJUuyLj+mD0ku zCg)>`>#xHf5=&!-L_K^axaP%Eo%Ppmw)DI@|1ZaHRmQM`@VeaJ!E#@>WVEN95Gkp| ztI3fm)?+!HDB`Lt{uhc~1L)AR5@kQ0>L`28$|<#foR zxCzauXVou}u{b_nuBRw$E-bG{0C%-f)Fnn-F(H-_3G9dn=nmDP0c?#mWC;8__u(q1M7O>Btz#9W!A?qs!dfTE$BRXDkj;+zEtVyIVD%|a^Mtl5tzP?%_Bsk| zHvI8Ib05sHeQe5ve12$h)C)VQb>k<>Uh5N8+W0=oSO1$)pWcsV(!nE&+h^QN{iDUO=WD=QFPVo`5^8gx0O60hL0PS`WbH;yat|5&pnug_8T=pP@iE zy~qMjl9iElw&^*^=7ZE5O*OPgC`2^XFpD?pXPOg~8wyA5o&Cs8cJ(ssZz5Tubb7dbZ`(PnX{;}*EUdh*wX^@hvii2}a(PHJqf3@WpZ8&l|DzFO*>{cH z`)&lkbl5W7b$RtVS{XAnwJLkxKd{+m<%N6qeVSg1;&y9W#yOhZJIKv+Z%ZMABwpq` zmGEZE*~J|{d_?8m^5Kx{9QGT>L6s z&alE5O*s^oCc+2D1j&4NodZizz@}gyzKU%`s8u5{X(g%EH$9biYQPG)N=$_sh1`#@ z?gUaU8fai8C9dpLG;H!%C5aM;muK5W%8 zF7j!B`b~`5yjP?zW`Fc|+r7rWnGwAm_v-_?8UlRf7~#4&R7>I zkWUT|64~Qb#6y9IP%u)wfk)amj;9r~*rt?PBJY^pxB*(`p;=Lxx_Q23EMQKi&^*R+ zI2l9NeH=rdA>5TCWGPiC%~eh0eS9V(fZ#A~(R!KU2Xd}c+s7v?+fJS0sR?tN3HsL2 z!5*%=%Ds8l08WBqL3zWUo(43p*n`G0b+|e{l%d%Pvm<|UR9TWI_&;bAnba?71*P+V9RrFl76LqE!nV9H&Bva7ovQ7G>tgM%A6MDHu?3{C)TX@eEv4-!BlHcZ`W@+O>^;&@n1=Kp( zLpFbbVjZ$Y%nQC3|a(k0=V~BwJGc3OfFcVIR3oMPWEQ;ikB5+T} zsw}QQom1Db&hp<`u3C}bQL(vyG01x1iQgz&F|yQXIzD$6yJs<()wtuM7nP;8cGTMb z<3mO6A*{_&@Oi`1EH3UVq{ue!O{dy{q>dVVA(185?~mASIDR2iR3r%=t6N~s7jg%b z@_(vZfCP}AE&%oh#6Xo&pjNFT4cl0~67EweH0Ie@624<%uo&|R4hVx23&eTt zh;JjnfI|SVDMc8}4Zx{)Xvr%KNOIY1e&!~V$;o%J1c~2)7?{<@*#B5|XVm6m58o(K}>=5g=$qD?%<|Hl`U*VD5! zWPgeYxD=DM9V3{`_L$5gp{qac3b)9G2c9@}OH^eyEqn`lfX(SD`2cWOGhZGf9Pc@~ z8#w^B9&YPO2+2OvV6gqjk1^pIO+gbkoTpP$wo!N+=pg=ZXd(KOWE>g48n`w7R%@k$yyD;91ztaNI8X3T}n;v-v6hc z?Fr(kN(kaNVa2``W=#^^(>pT6x!#C5#%JibOwoN6;Pa{UaBiezxcA zd*ACKi@y{`_Rz1XLszN-E&*Kt+ zNlFpg8C%ZO4JjY-CZx*ts6h`Fti|%)RyHTuL@+^1_Mp_`fz>*%Ah{?UoOctRpIN^w z{fSL>EPCm)Rmx7fz!){grGFzys7^Hp+zvCpFnk$QoZu^MJ;@_p-W*ctu^f&*7G$-Q zZ}bD8+mhX2?qdu$G1hDR+S&47u=4Jq2*@XM-JpWbUmX?$PdUB99{|p21kBwXA?QK` zY#+8;lq<5Xn|~!kgb^lUW0YRv%tW?<{~S5LT%E3WA%3LNkPBLk!14JYSf_8N2VpezX21)fiwgdo8=gEaodXkbiE;LM@ zK3r%uNUZ{juz+VeGK}DJjSZnZd!V>qBqweX@g>tmx5%uW6lRmF3#a%`H$Fm^fit`2 zYO)qs*4OCj(IyQq9F>1(xA(op^eN!>Oj>7{p;3Mg7du%c&aP9a#xrsU*3lay$EI zz_6F`yn3}wXR>x1I!bDmiDT-%Hz03LTlcYNt7?81EDJrAq0tPxa)1V_r^A2qKZaQ| z714`_3_A0NbamiD}7=!J>X+)@sg1Wo*^j^BG}++u6KV)#28(>ih9V|KnrB z*IgQe*0blmeRl=W-}AU_p|I-qEQDLZXk_CD;lWL(5`99g+%@>(c;-_yGWR{H5S zZ&K%sX}KX@{))YEv~_-v#=GG7=7R_S@`BPT{%yBw?k$`5dw@ybJmUTzMd#s=)cS{U zK*WQB;z)6XAgEYsu1HHw0Tow{mZsNGoP}jJeq~lNoS}f4xpG^!Ma`_dg(JmLuA52wv$h%Y zp`_7E#2*t1oH7HGU+BcVKF?#x2PFcmM~&bcs0{_51L)ia%nWovF+k1f1UK@tfUOfq zq}Ut=%2x&@>WQYMwn`dmU*I2YyeB5(1YLizG2Gott*(5(?y3e0+!bt(kOBP0z8>{h z8J}fWjjqow8HpPtACXu3xqppVHhC><{&a+%+2iDXWA}lxc|Dv_3FBdeV%CEEe#?uI z*l^v{Xa4znqDybS-br1{UAVB$j(MeGQa|DGtHJ}8neGN5&*H5<{ni@`VFNsg>Il^+TmaIAQApd?4;eF@m zT>^h=%;HK|t-FJxy?3Ly6EqcZYAwN59@s+1C))uox>7#GuZQjl1q%-FCA{(iM7RU7 zp}sRNz(lP&-)7;s^i0Jx-$Dz1pKyipTqC8&?$CWw_>%l$!u$8>Db6_U(Zr*tVuN35HP+lQtUZ_8a&?KQant(7A37iK z#a8@|!!}k?eDWV%lBiYvfj37S_U^Cm-X)i;dHx&wa^%y-Ev;qpg|>4`YvU9PKl9$+ zbukK$$)B-_3SMo&$liK>wwJ!<)RM5pj-VHVrR!epzQDPYz3f=g(RTk_*XgwHM)X-? zSs&`+vVGc?vD~-Yl9RVi#R@1C2bSk94^T!dCcn*#?=iL;PNAtk*7dlB9>FJbA zJHeJSane@~z4704{IdLd;zTzJg&jcVPq2UE7rMTA6ZfDt zCH@^<`%}-9m@9j$g-oMZJ$`C^`M0=2wN*ZFaXu4q<7NGvD&g+sctE;cz&lRZXyRAn z+imn^;}Yupw^ftfg=$A!opd(W!`o83%aNAjv`e4iWvMs*h0v16U6H%fFSN+lmkAz8 zb@rd-yQK(cdT!*CKFvBUS1k>^smU>r-&!wQlIPub_*(o`bk_Zd^M2`bzrK1|%KSz? zX?CQ~?T{zG5b7ruvJf7EZ^{2Hj>r=5s0m=$R8!rzqM?#0@oA ziVL=}wy}BJ-Z05S@mb7#y9(6~s8?Jw&;ScvW*;?%)(BXb-kG1?ml~%wOpeg{DoR!- zq;GXcA3iQ-m zjmLM1%VmE`T>OZP;!=DsJ?ea`5M|-iVRLAwb-UXei&`u4_4+j0oNuCs0@bq&m1KkG zsc|>~3O9u8!iX0*xO`k`^H6%ap{brmG2{YaNM(hRzR4>eHTOn2uG&q6zW`dT2HMQM zNff8%awomqMkbTufprv6v3{Qre+C_#Ob@D9ZRlQI*14v6pV@D~<=f(c9J=gTTcFj+ zh%>H-J3aS>y_U_=f)@=;Q|ngJa~#X>zBU#bl>g0gGO$jr>+u}jMT=e4*11oYwAa~S z;lS(q{s%s1iJO9*uITkdRI=^%Hu;zNcx0EYe0eFqf|^o}*Lu48?zB5#koad$>t$J6 zjp@SSlY+vg{B^8n78|Zus5sq)=K43S^!Cae+r1Z;St6F_(I|`v=Hi0kKPa#Qd~DLU zPWP2e3TQ{|p-vNy20Y#DAx^23>{O>gOE%l9}FwuxH{IupQR5N`I$Uj|% z9ur)dS?B>V!F-i5e#a?vNI@&bhR`r32|v^@Hab{g1` z=+0{Dh_v`Ql}&00DOI{V>orkb8T+gwMe*%BjP1b7{HT*OiSL-%`Bwd>ARZE_z@Qg3bP5YckO- zc~clf*(}qiWd$xf{x=Pu&kii%yWL(`^PhF z9I6xF6g*m@^YqA0!QGt6=-j8N)${od_rmj(MLv=;v+J2XlSgC4`&?>E2K@l}JeP6q z=6L&`yVwV7wz=$aF6eilw1*v$e*wE^8`2z3#`u;_?Z1|HH|Osi1qG1~1K*Ik%?CQy zuT~xyG2mFH8%+GLXf{1|J|^mUA|p3;L%r|>df9nCiT$(jo*TAL%=_=Z62N^L(W~E} zD+P<;8EF}g^+;S9p1q@=d)7zyO)$Vd%VJWV10qHQ3%dcPRbrrLK!wDUO>MF9HHoWB zY8cl3xr2?5c*YC-Ol16T)Yz5~PX1x1AFTPKIy&$Nj=R62ee}%c^L=-oo+K9^IIibs zS48Sk{ZZkwTRkEVR~w6!|4>WUPCp*kIY0jT(mDAcGq_{Nlbw{o{~a1*q}vM4l~3MD zi>@?HE;!t-qF%h~_toZq(x19KF@EMsA-40e_1Y1atIEQ6Z^5e9z*w2mU26v)ywof# z5CO`nZ9msn&?s-Ei@v+~6Q0FL6Fq?odc9+I;*0f*4#I)vLH~~CBYJfja zb%2}`Xmhp~5{F36cP8LntNlZEppqIeTc=nn&Ysk&O`^wzm?^7{_(u~F$W^Dl72P9$|fqzcxN*YcMa%QvmBj*PE}iumegGfMNZBUI%#8N z1)C0(Qo`CF321Nx0$Nk z4&O`jPxz{1@2l!Iv9%f)a^7wG#kiXwEB(QuGlayX9MaQi+2~RDs`fV&dTf+_%Do?@ z=T&7up+oB}gZH-_e7GS^MZQnxGSSLQ`{wH{dzw98_|LyEI?7O- z&p8{b%K7f&YR)xZlT~t~F{P2yE&{Rs{UmVLq{3jb4tqY(teYOz+7VhWK}E8p&uCuG z5r&vFLTMxP^f7}L3AgYIB6)GgbQ2sh5C^DvaDA|b?sZVpe92{#ChUyLA?cEb8)Qsz zWfPVF^B^@0eTj3ewX8M{Irw+3q|l`#Vbi`P>MGZ!qKD7nTlV%v#igYEVRa4h5XX-` zX0#oh*JZo^s==&#gQ^fz>h3EukkY-X!l|T=T5($t}a^t!gjZKQNvqFQFTl zHxgvgCkEWnWhzfSlf`46hMDZN&={STo?1t6O(8(6>^OiT7FTVif#^*z%;_f>xWt23 zISxBR??G(Oc$fq$U+9C}zm002Va&15N9xcau(0!(+!6&VJarY*+7hlPKev;9KW6KHf-eJCS!P%|{fo zW8lM$MbaTRZQId1uGZr2FW>bke;LXrn7nmRBjCXCvvH#_FAZygY_WSykJ6L#Mlw%p zH>>;{j=8-LI_t-I=Y|`LR&`-f8yW=& zoXph_&MyztN@v~;$p{)6msv;DEHa(f&L!_VH%5HEMiAX4YYlb^Li5l5!UhDs_PO+r z9xm1OiT9&2J}Yc4+T!nHsB7A`Tb~@%)$0`han#3shx(7~gzb;nf%D5iwAsnEiSd+ZV72Dy=V_>Z^(!&rr|9F|Bp4@hL^u=&^kUl<) zM%T2U)14}Dx>g2e4UB)P3fnd$j%69M9fsEsJ~`H!*5v&L#}leg)I`UOtH zkvqEjW-}@7H-lWdQ?C-vlU1*uZaEmGj6JO#u`o+H(_9ZWiN?gUN09R9{aJ01z1}{< zvy-I%xu;tj2}lCpC-a57Ua4ZM-7(Li5_icb>CdgXGx^0;zXw)r2pn;^Z~)~%-urg- zo`LSlUIM~-$|pS&nD7pfh5P{pQnUYy+!nt96|$IKOob0Wnkz_Bf)kUsTk<{;0~*KIkF^ub=pJ3SG-u9v~u6V>O12 z8XQVanPZFi_=&frpe46{J+|rtodM9m(1vhOZU_OdqE-wz05lBA((H%bbCz7t8y}z% zA_}3YN6U6OZYCHFW@5bvy1ymxSGVSh7DSV!#tprN5jCSS?6b!U!j;efZ+Pg=p7)Rj zp&*leaK+Tk18WDkd0PLtIVb8>{wUIYtiwu7eFuB>9GRkXEDini7*4Zt6Ly!^cXa8Y zTXQDpYVdQipHru*zTwdQ*CdT&;$ADYEj#j^kzcj=>jn4fVINBz*Y4fWx$xI<+nxlW zapT`(h-Kk*_&}d`p}xrftn4pOzHw|ky?1H7Ki>n={}S&!kN0c9*a3A)b?F2$e;TR0 zf$d8Ygc`Q&Btr1=s`lwnScR5xT->ntDGt#k(d*vf~fL=UK z$QSGg4NVR&)w809Zmj6QlY5ZnrW2nemwA3Fd!JU82ga_}kS98^B|yFW*=-{f`b^uA z?~dta^ry2YBoCjoX6D^W9NK-L{Wjz3pQqSSiO+(b-2W)CQXdl+qU$?8_n_jf1BS+| z71d_!OUzvwj=bAJ75iER0k*t*-uZ^=f^8s?VqROzlKKbsjVXdYvnvdHG>9+DYL|0!W=*uC zBXOF4wj&efZ}lW@xu6_6@?5>S#-jeFIMDNds6YON)VKd}rQfZ7#rq=vpK4?C!Pp{n zR+B7tp!CkkC?oPob5|B=sI5k{uK3%Ap@WHL;?wiuRfL?eo#P>r)I)ZZ-bnb`?R!Gd)trb17aO^1<-3x+uPCZ@Tv&FWaYtg*kvOObEC(5N9k_|K7=b4Ga8c|qA(qH+G0t|Q%WDFgh;rOr&weIwK)te;Y4>ZhneIsg|EC{nWwpafAwT z#GxGP(_?C5LqWk0Bf8vZi>lL`B)4@tI?(G5ZAy?0E+!*tv`-8MKV0wA|F|;s`ik46 zYeZEivmYHxOdd8h+~K`3As_x{{k6VL$O(yA?f?f^j-b7+hsfjNWp^|HQ_3jnRR+O(swT5C(Y|M}UZ( zFw2T^hos^Ar7RZY5fOfJvDY&YJGLW@DGM;S`Q%i71b@raT8I09@GB_c8X@1>%{1UQ z4>wqrDk%5$89LCn|6d5#_;mK-E$q{~W`K)*O)JlNk0;ifS|g6`_Y2$pmf_8JEE3Wc zcXT?!!fjBE3dSDVfBDn@Q7(1+P0hyLn=FviD%vl>Hh{6hMU=w^lQld@@1Qj1auth5>G?L)|8dh1HFE>$f5IFY5gxXHf0D9EhRIIlr@ zvR_&m!LYR+*Ezg~yXG<9p~HTqq-=Zatfc54qf8<5@1$!>l|;?v+(v`xiB3YqS@%Ns zgefxzI=WuEGR~3Mc@RpIWMHY&i=Q!>cden?z`JvgS`t~&#USU!x%k3SpB0JkOcW@@ z+|8gW1Kt#-jk2NF{_ZfC1x?o6%BDi$>g8gUx0)Uzw;rF_63<2?X4a~CZnQetJ3z=w z!Y`*2=N$|4m~~nuuRIPcdR$xIMpo_~2X($fL+IAD1fW;n!mGNeQLA2PH$9Nl|F|TA z1jfv?o!;YSa#a|yx%FcDhWH--9ltB9^sjf_3y??aT@d}2o;3E$QhJi`Pj$>SEP9qE zROiDqERN}G?jlOb9t7K4`e*&myCeT2vWPGCjx6+4?+T61ZKzB|vC=Y{-hDv62(ev0 z6dZre2oZV0)yrzzvR-=-q2PP$>cU`ziR&6RC}1NIas}+Wy=m^4+)=8hCJhN|0>jAzg5Sq#{F3^Q2bpS9({&Nl|lV3U&o*n36i;Tt^3 zcyRvH<{k8j%5Qxyn>U9JfPJqx551wKWoUzP*w{0Ao$ze= zjP)ZE3DkaUH0h3^BcGVpE82Ohk@N!L{Ucl zWQ2& zqR@H2;5l^sgFNkTv~;bcVV1UC zHM%S=%)CCif2o3VZ``dh3X|-&Tmkfcf1HwiU-7>Qe_2!i-2Ad@%X0z$zDKyC&F1Bs z&z_q?w!M^2xA@;|mFyW29gp36p?+aS6MnsW-;|vPGR~Cl3DUtD70rer^k{8NdL$+& z1g3+~vdREykd_!Wo8eu}K`Ys(cLYTQr>;0pP80I(E`G~n5FHrNfHw#Xq2dY!uC&dB zY-jr4LQbs(#_w`$z}Aw_wtT`HS%2pFWH$cUgEj!$>HNB_p>@EnvtNhQ+cbh}f9N9S zOmsOKZ_AYIUAyn*tnsNJEj%)Je70X=fundA;n2=gC1(OBl6RhpT~b_ZCcnha1`?eU z&37R(UY4{gZ%l6p+2NT##Cu}Ar2AI5D>SH?T;qFwK+bp8k7I2ni%WxijNv@0@@a-~ zXT$?Pnj$?O-$Izc_Q?i=Md7d~~Skt2Wsqu9y`*D}^ zBXcr(qKRVLfLLOm%s$2qc$VM)-Jtnv{oNCJf3SZK3g9POo@V%bHPJ5(c;|ua$VAuL ztmpM&-1EmCFgCRPk+-oyjkF^=$0cd7XNk-o$qI7Q zH@wd$SbBREoAC0YVTL{3+R-|PQYXXk$%3S5Yyly(+539YMX2qk;XQkIEvSojUT%Ly@J&WI)X3vv_?a%t zes%5$G$k~lJxRs_bjDkgqv>WkyM4J0>@_+vFhT)}>BU;2Na7oN~zKK^#^ z2*Lb`Q{+9XKXrlSW}6US)Utvt2hIHf1%>-UL<5%8iKRJJYtngePdi!B4X}>s!87b? z$%Y4lhc20!GIJMf&Ye=NIRZbC_!AXgvO#$gf6YEQhH5Aio|R7f1{>Y@A923#CHvF7 z>_AWvCgJ7QN9eM#9V>YVk%EtGVTCP;2rw*#kZjnGQE&H#an$Q*ZYJp7*+#nV6$j}n z$A|Pa*U~(}%1O`Fl2ocKzR3YZnS^Xn z!dh5xtFvP7qxKh>^6-vITKV7aAZbFnUZv4ToNzy)8sWOs3wT%ULi=WRgx8ctGDX}T zG29)FcOZAznU%&NxN@*rdSiv^&~Q_T_3&eEZ8$UwvB03O)Ald9TUB_Jr~M zUtutFv4d*JXb(9bg;9ugww<~Sde9Hq_q5V=7qWVpyI}b~QmarcuLSa>BYQ%`Q9EL4 zCirJgB{9S>LXo8*_%XUxoCkIoq8DGlDrbtsOT|Oq5fsO_;$Q661jLVR z@djP52uF@T;)CrjnHNjx=yZ}JU@t2#oadh`;CYzC++6Tco_og!>bzr>8E(3g@5paG zZSELPtf?VZDayZ4PxM5rPpswPuh$>{E48Ec*M|*z(!G9{@2LdcOB#ryzM|#KuV>>u z@`-+Z=TC;+?t^C^46(X0)OQHCL5>8zL&>m0L{BS231VsNklZJzmSsPgmv9>x3>oST zh0;SQ#0lO}eK#ED*~{tp_zp^69BhvYRPGb;CQ#fRI6y$EVV`*oAXv^1a~$MZ(qrb< zTbEJn1n{u(ZIlfDLt}NG6+rRaSMLD7;0@=AziT(8v#DkAU&;w+gm>DB>^_s@p19;g z$`OBFXJ)%~S^Ad)RCHxefT~j}M9;_`16btCdE5$%0&wl^Y?9c%9LM3n)e%T_F zq9$GT?Kd%TAt2o9|JlLM*jkdshQ|@hrICq+I-Ku@{SHqYorMQ`I=#C8M0C&R>Aryr zdgsi%IQY$)7)Qx1U$sxzn4ES?LoYdgu)))^@zpq+&GHC?lQO?-RVXJ-^Jpe8c;@(b zTvinaLeLps*QrJ|xwgga_215Es3`qG#pXJx<$)x*cdh^A7v8o>?JMWzEZp|iJMq(6%0(`DoFMb+9a5OViIlm&9 z)#O3yf=`R!XUU z;83BcGxH0@A$I5u)VzuLfL_?T02+5`W;{bY-e1d4W1-`q+51!uqA29T9-MLaVlXfs ztASk7b-X&ffoyQf$n;dK;gGdxW-92IGSg-tsQniDuyuzo7q_$Qxwh>6^rkQP@qcKJ zZMUq|{-(vYu!HOI00oHBbG1U2Ih?={oLS0Dsg((p6%SDPp$+4N!q93Cr!9Qyz^!!n z`V1*XL;}E+MK7>fO$2ijpv+idEIdbH1(^vE-}(;T&*8#x5V?=bA^|I5OP$zf{$dBm z>U?Vy`RUu&MPEXXGdxUzfU?P;rO}X{k>EfbrpI>u~(|{ zBgVGjzN|O%3md*tF`=zOHUMjc?!m*wHT;Te*4 z%vRSor&{z-K%T=)2t9LSty?X4NY9+kaH@smUIN|3W4@jPeSaDDy0~FFPm1?{i!l2X zzg`UeRrV{#wuSi&E)YhfR#RsVZ1kiVObK?aHVTobukEG18D7u0Dg=({(yh@e76p5S z->rN{7g*Cf83wteAqikC($d6WW+uZqA3=t?R?D)?L zvr-dF4Mh3oq1@gxd~yd=0n?>U3DfgS*wtt!WoltpdEM84U>>@@!>~F$7Y+wy3`}c! z=#KPcA_jDcWHx0EWb%bm>0U_$Uug2T#k35A6dl$$!Mu68Qp?nKy@LzM@@m63L3$?g zj5W+N=UnR`%4F!{bf7$!Uvqt}_Q`=O__|*rX9a6`nA4u!IK5ncZ~Ts-b*>EG(8)rr zEcjPBzRw=N|Cr6HI{asAjr{y8w1zJ^;eqewSf$=u+t8K=KeW`Mb#i|9{eCzQjf}kS zM$yxK^D)8LGuQ)D>YZk%L4cHJS#9Nz9b!A5OM{EGh@thtBRvbkfbi0xN|1*O_%(Q7 zd%T{z;ljq_m<#M%9(YgBkTbp+pk^FTTuuQ%5hcOgLs%?`BY(*t=uE{v`xion!8>Hr zVU!nxzY3{m^yZRNM&(E6^WUx~CNAu$c-Mk*Uf9;-_Dbh*+10O@p?yU)MN!GqTlI_G zW12Q9juo!&3{>I|?dPPs1^zNdM@Q$S*lHn(LXPIkc0@=A@9Ss^MrI*K7aTjGrQKF> znjuYAQuTW7Yi>UQS{sNH5IX>31(M4FBckj^5eoa)Npu0Bpqfp1@5YNi)k3#`pt?jsTTrdNMx-)vg|V_mpYCMvx6w1l?gyP2o298#gKIW5 zxBTVH#orqiw^jW9{c>Jl8G|_YRC1VvXIW_)vhKyOC>>QLCn$>QO43FzofP zfd0Xf2|!VP!D>3#w?YNl5Wsp`Hf$Vhui*Dpno3g<%6%2s&l1g)9RR-B_+28-0S599 z*p(KJg{0gpX>VbT$anteMvY4zVgE$FfnoGEQwO3;S0dl3OU&!m#SK@1$Pk{|<}C$l zbrvos`?ew~49^V3`Q2mpD1#R^w3dJgSNv1gdS#r+1id+Qr_<4H&win%-v zSy@0zKV~}JKOThMwk6U&#Js+@CZM6P0>jv)hnXHg))Je>L>$1&4WPzh@IDS_A!+8Q zqo~w8i+e}ScnO}+9aKaYhQNEYk;2q+tRvI`J(Bhbtus2(L&8G#uL=p*?-Cl6@P=;o zn$?#Sa+lMc+45h3>OFUBgRooIxHxp@Z<*Xyw6;eYVL3HdQ~01ZZk2WlqWBLz>alY_ zZ7^5U78@4wTL1Q3_N6z+48)ioUB90H_}Y+VkvIM;di2Q#xbJuE zm|)qU8LD;IcD0-E%!xYhZ7WINA>j%ZUEk$-taJW{Q)4+|Tldn_Fkg-Kc=ZOv{ZjiU zhWJO6W4PU|(-={O-U*Gefen|NHthk!CX(~LD~^V4JC!zlBFClan>leV3QmHsK}Uy= z5ART{Y{p7k%@J;~+se&z{grW+fj11Ek>&50O%8I7ZDmmBsZy3YkV*Cu&S3wuIJ4r0 zbhc%_@;Fx}7hRBMH-1j$Y_(z4^8*+Dm%BQ5+;x^g%j=&yd4d1SS$l&m@E1@tY2DauIPE#ex%XcZi?A#)Q7wpsfdAD}tEdjm~#<7YtFU z+ofVPU3d}QmT;59j?&il=P1V0%xz@1RhVLz9@)NP#jLf`jxnABJIx8LkWTYxdCR^N zHM{;BmKFrlf%h?0V-7X}1o=y*kIzF5*(j6?Ms|e3;ag2%u~q6i#&c>e9EAfwoJ(q; zdg%V3dblAn9L*atw5d{lM*6;!JrNzD@@|L%Zp@&i>do2(-bo`^pqxS@wZu?FcH13} zEe59;l+*L~SHVGdg}>V*ee4c;!n=)^pZ*J&fIUg%r2j-Mo#_#a~bb8xmzUvsZ)17enHLr3SWh5wQ`U!JX zS8pp-FOeoDTVWc^Ck$q1L8S!dMs~jDf1N4gYGyLbVkW(*mjs#2y=?3|u!LE`bew!J zq*8@}6(hef)(jWkMtJ)SuCa*Q>$~#_bRo2DPA{U$)$!|d0s@goAUJt5Kl=^zT=7;W zCuADB=L>DqerlUCXpu8{fmZRYjJnp`uAKEGhwq_OZN`5Q^Hkk8fhCh%p-&D_=%j9_ z4RmH6ihW@O!w_&H`h9Gt3#2b0XfI5c%a21cT|G=S)jdge=4}oa?#pt3UutARk9sQ` zo89;YTSO5QLPT)^yI&)1l1V6*37$5^0ck-iHEHf!?*Gu75?|gue!h>tn7;XdJb7Vg z42^_s4|Ow>iIH%bVtd43nO1x-?FlIV!enJcm)=5rLOj$EA2)So8EntFA%S^>whgyq zx(qOUB$^+=p0tRCUK%-@Wr#t-g*zn@0dq`9`!YZxF0-K!?_(Ze-<27EpRls&(QI38 z9s9*7KJ7K&{FwLH?}A42(3_AL?<>M3lLr*lwu)>|>BJB8<}iuj{Tx3|@;p(xS7^nF zw^jzk1eL3>ok(Q}ticn6J@GTFY)>a>h831Jxw>HkT=piP;!`~>Wv+D4!RZf|;jgL5 z2)nWfSq6HZ2n2PKIZB5 z>xOxwS&bmj!fPhjFlTVl_SL$LHg%uDV9o{kuHO98W;;l;scCLjjh1ha4ol6Cb8%(k zAM8utYpjAR8VU7a+x1w_K#FW4`Bgp z17T(koom*c=HT1Z75Kb%F#mmti-eC-3pii0KWro-*2c^h~jW}k1OZ~ZiG>tf0k_9ScE#jP4$ZMxCz zUj2$`VY-=y_4&eMg*=h!A3FJTXu!;S;ySoT5PjwkH3uYMM4o1(~o_0`GsEfd# z_}!2%0$5hgd=fqhdn=rDR6`7cgbF$LS56pN7~s%{o6EwX!0f=dLm9?bmLk45rY}4f zFWb{mKqO$|rtRhO26-(+79~rmNNH3VYkV=u@qNe}UahuE>bUqhmSd8NB{-GdqPSuW z^sZp!2-*$8*giU_hYDjd>o9g`UZz1^P*`=n4-~L4SF>4o$e=P4E5O0beW!pda9Pfh zZM(=j`4@*cSsGi7keU{0tcx2njmvC>{dBU(c`0jqc*xe|P+aMmd?XwQ##JD5yQW7c z6u(FJb1wK5&kIYSf4SIAweI5GH_2-NXMLk_Li;4RgFVwEG7C_!@Q>i>-LF@Wya2hVxARUvgF}=oDh(nG455)$%U`Z(_Ij5uNx<5S&Yw=8;&x!Y15%# ztgEVhA{TD_M&^~K$2BlJIT%7eS>HYv>nkfYU}&*6N0P$?@%pw)4_;Q`P_K6NNBh*r z8Y;QL7nF8nQ9zzIGmMWEvsb<$+$Du*dT3m2@jv1lbB1g9S5>ipF!#8|-;tF@APlht zs%Hc}KAo*k+Vzq2XL85Y8P$Y)>4mQKm~|F^O#`~08b;L(yt4YW1enp2>0V%{N@k98 z$sCKB1Ge0>zW8P|E(;p5f%r}xkVn8LX*3bu=uCM_hQO4_AQRLON3mgi#)AE84XZZv@Rpk)MG{nRhTg>CQ73S0Gj} z+N8!$SB$U#CnV}yGvoiv?ZKGa=S<#>79F^k6T~P_ZPNN1Tq$=HPq_pPEI5 z-1d%G4$3b)OZ4l_rh3(%#Q*mV@IsMr66P7gRK0v@$lJRRCK5x<4I5lNbX5|aqgX0V z5c)vpxp93J$<@tN=23l`t2R-;WI}wR(Q%T)DXdN2u*bwXy=oj8z7B5M8H-}(u`SFs zGOhAZ_h_$;-$rPM@{zBZrgzwFhkT zoA4Y|e!QONHn@(TOu6s0hDIFg?M6R^<3=q_ONskKeo5~baaN|dBR_3piyGnNIfo8^ zU=h0i7o-Wh;$Ki?J?hE!4hU^zo`HDrGdEx#!Wn*zX1xWcLM^Ua5#7LOMNjPzPOTAG zQi6KpuBnTlO<8jFk9v53zw2~XM(^y_?p zodnJSY`F`|lOC=fOz}dmIb4HNOc0!_I{Atpa>S!QLS^@IUEI->*lt~qWErLD7CEuY zkyMtWvdfE$`~&qxUzzOSyRNQfjW)TUZtCc8CM>^p9MI@JQwcO^TxK%$Ca!1&^jqSA zU-~!>TU(WB(1_Of$mY4}kx&&q&^U~PU9Fy6DlOL^`X@r}lsNa$|G9?Z;*uquGb|s- zP!br7&(XL)tMiuSb%dqzfs8wz4YW`ik>%FHf9&2)WUYa&PP|i+Z#EwM*RG?;YnnA3 zqKYN5Z?VUlQu54zRyvSZ8d7L-0%hjq3D2!=;#=@o+7~OWfZ;HRh~c+jxJ4(%dx3z! z;LC!x{d!wdb<9lz-``1sa2CN6M{AVnLxhaOwljAu*{0;- zTl>vwT9QDr_^WV~OOW6o?!|8zzQVz~OEP4lp1sjLxUxInAUdDip#OF~P!#!9b-zSf zalW@@eAbb0Rd0>|3tNxJtZnBjf*QyqfZG2JL!8#B)Z;<$G#vNK3HbSKcmkaGnotWl z=H^OR7^Y;{RfhbPo*DX!hP_{gxL?QK4;u$lLv=s7J1cs$M0VyVkBEVRK3v3ihZeD( zmRiK;Hm1y^LaF7m5&VM3*_4?#^}-}I*RPa^K1%suPmtpI0yF6?OJO>y=xdKRXQjEJ zxRwW1SmsYegPD~*cdNEfN9&pFo}H4pAilJm@JcfylnQ7 z2EUWFC5pJD`!Wze(-@aPp-%khi}fyIPz*(SxeXqaBw0W*fpCbH)?t@4$}&Y2ny}of zw913wcxZh+9bo*T;j}qtE#g5KIF-5QMgwcaEe3`9HF)!jIg*7RTJebx!n3f5vJ zJWYc*Ezr|}O0F9iqxUh0UlTJZI#imyZ$Al;f8K1FBPgF27IDKYJOed1a0zVz>xKHV z4zPf31}sqkQU-0=cIB9xizEIOD&QbS<()H4D?RUXXNj)D-XE`KX-;(cLei}D<6`7r z*;sjhks8w+(Y+c!MOc;F%UAq&@esocWEtvpEbVk#B=|8OvURiZMg?_|UF_)@*cF5^ zNb4E;aoKo5F1Iy^pEMkTI{J9vo^0-drx{ha;k2LjOrNKL$mlNDis%Qvq(FN{HC zsDklZkiZ76XwPmd%+!cUVS(Ns@fVc~H#$vOmT?K^@(1?%Mgxb9U+kh)k#w^-5npV2 z3}{@)St|Ln7w;_ChMtO58Jlq@(yVl-m@qg$a~nCjryDH@QP(%s-D~grvl8$lIlxhV zm*P-<9|~(qm)NH8mZL6shVmDjpmR1$I4&xm1N*{R7-N~QT$VFF1LDSnRRNj%t$UC{ zYtgCk=V~LWV12c?T_^R`cUuK3X@N!lFR!FKi{0?uMxU0B0A949^&L>K9Ii5HUBU2F zP{6x&#Zim!ri-H{>*q_kx+b5Ya%QNrwL zwJjvdzTH5}uRV`T#b;jk8gku(GY& zQ4=Bnui|R_PQ+NOL6E}oP?V;tZa{cp>3;PdUlm2i_7?W}(^f6!-%Kz&sV$9$9}5We z7WjQgEmh1qnpNq6N5y=kIgz*QA4c*TQ27{nwd~3W&y&(&dt9!%WS^;()V7qn6+ah% zlBdC2SZm*>>F65FHkYx#`sV(HfXXWzabjodo^`e(9)yjgy#2bFI!$ZGd*NnLy0R?N zUoVER7GMZGe98{4h9BF82WKA@i=Q#oWP3}~b(5QI0z!?{rO!pTAP+-`@0s*v&s`tV-r>FW_W=PF#E;Iqrc_*Vr{JN z-No}8f5V?{V1)~?$rLInNUhGN5ey>BZ5%=W&-jvDHMY%!_y`6$umo1jg0_X{g;-`o z;9>LJYMsSsutS8)mfn|b7&jJCt{X4vK0TQ_z6%FsRM_}WOip5ErD0CkuC zzidrCBIGMrk>a;v-qLqCZA0xX#g~aU_g<)CGzyQj7hgV#2|wiCu$JB6O?*w8mlWoo zL~B21E$IyctO%$7P5ZGOigPED$5xBKRIEz$qea+K=$H8cHo6v=tic=#7??!U4#{PJ zSmFbHtB#~>(X_HIF6W{6OuF$XdC{87=|XXWbB3dJ&`@~We`$Qn@_(N|P-;*JOjk`8 z0>O~qq5c`haJ(G!MLK0EicI;$2QFvl}voxb+aD&~W$i zcF%(1e!RcC7SF|7-u-Ve%pNO%`umrJ%1%2Tp`rM3DGd56LeAQ2sQtqaW}7 zkQZSs@9urq5P&Z(x84`^f{XcRb3+V)Xgaiy)#LGG)|lD%emn+1sr4erAMaLKasfj1 zj}O-tn8gtmSx1$IkR8W3a2{{+_^cBK7ahU0=ICLvazAepLy;0TmjbA z{^H)6?~RaNKe#i*c7ckSdaa8MM5%pnhp3y0hDr7Pwm&{JVDSaV-iV+m+a)ks{R*Dro(^{y_kz&s z0dGIjri%tNP1hwpipW3_3SCuw5Xkx4M=d+QDJ}u{yKe}^%OA{!>#{^J0)*uGk2F+k zw=DsJvKV%)hXFr&vox)Xj;G#jnZs>tsOf6%(m&l%$0y-63|ez-J`15zI;IZ}(JLT9 zq>%7zJSmtQ?hS!ZYXIxJUG-ctzF=2f&iDNV-!00E1MwKHnM1MOQZEEbHCR#yhwa(m zl{59h^8h*Lj`H?M!riv~yD!H`S$Pn=*Pp5(+XgzI%fmz9B#{rq+Y7_XvW39h(}pbe z?kNkr((u;00U#CRr*QY|&BI8s&Ra2AwrO$*saJ&hi|U%ifK+^J2>p1nJUI_Y6@1U` zw4rahz#+}#k-T6Sh0r}Viv+4Xp%6S1VSC>f11mOzcp0dvV1SW+jq>%qr0)|k>?GZU^ zo=ill{=t2_+qDe9SCh_WV?+$kE}P=F@2-(8!RODVy}sL3hnXxOeadp^(*fXXAkJC% z2rt_oGVJWT^9+sKNlkjX98wmfu9Rm$7$Xggk)0lTOcWquhcwnWei%D7;2wGX=F&U! zgMUHpo3&=4@)wK9%$z5S+;V)wTB+v9^|nfgEiBj|4Q8nzm@Q@DvmlVAha0`D_btR; zJN2P0puRg7?4aLw|6zv0=s+N=Pc-CV2-hMP7J84(Uu#IJ5^frM);03XeV0GY!I^8U zmippt?Ay!xZ(n2<00ff^!nMmxhpikm50&`|@1zUB$RQn1vY@jcxB%(SZ)-|q9qB-2 zbkbO`!GFV}8$61G>v`Q&n8P@Ao+=cN%S?OXi24`uFC^&jAmVJQ*^}5Sv0ZZy))yB;RsnZS8jG|(7LZAG5o5RhPuG{n zL-}_9-@{-q7z{?Xp|O*(6*V*%`@Zix*+Ws5)EN5`vLzKmwp8|1(qzq+Jxi&OP$>JJ z`rY+;zR&mfd7jUA=C-`HIvF7fSfh1qz|lwc^5oeiO0uF zV1+Q3SRf{x0BeHh@Mx5rfZ*<nGT6A>RdnV!b~ z9NE*uH(+?`k*aA?%kDR3<(#^$8r3{M0zWoSoG|awzGE*TJ6JUiWTfNPTgmS#ND*HO z?)&AVTuAbdD)CT^dke&U5W408Am|EUouw^YC?Q7;5SFS8G*iC8q5WZpsyuDP?`7K&ze&_dwdSfqt-U(rHvG;-*T`7CL323{AIv_8e5 z@s9VQY_r%2j+KZ-?H7HaC&N8Qj;?Qa!4(#UTGT%G0aVZule9ksy|(@u(Xh&XJQ9<`m;r5r2j zRI7T9;ozGeU73g5FJar^$_I!HwNXxSGbY}4>4bx!;=?6UqF|HF7vg9;RfI&UFZPa~ zA$x?8LJU!5tIqEQ2Qgr`?Ltdg={E558p_wji}D;TT1TnYJT>qfnC3fh^g}NduX2+JMtY6nh0}6 z;HRctt)}=&kghbVbudjR^JxS+^X8-Kj}93pBj0jupR{bd8#UOdTMovOY&XoESZinD z6W=|C!dST=nWZz*tCIprr_u2b0-r{UBRBn$BL|9o&>BEG`8*M3=j;y!6rnbnU7S%T zKVEiEexO2nX&6);_WI7-7uG~Fd+P*TW=DpG$JFbk{iRc0h1fX*tcH_oIC~;}F%iHs z;^<#hO;vy`XwBhQGD1eS_kIED!Gpx2)SV1h6P_!=P&Mo%>q)*~!esEmFiiSD;61IY zAXse!xF@gb$N5D>#7w`u+Rb!ndS2SOf8mNB9HbxNm&oXF*#J2LK@N8ovq~iU%+|rs zq{By*fU$&-C~0a5e=(sZ5rGoTQ>1eYp0_eBA63gPbnN}O^iz+$sQ0JuBi-ij>lc|w zI+cZ{TlXCirrBKAF53i$D73?a`V6oiZVuwgbEPh{Vb&9{eGiKdXVTN8NIWY<>THSx zCLJ zobKvZTCS)!Ywd8QcBs5XDT_1)fuY8u=Uzd!iYX7pz=3P#AsO>&iS%@t#6Wv2kDu(` z{|K6PUi46xqu_eiuwl7Cfrxwy-OB^pg6e0!?eUkW(@!K~Q+rFa_b;0}T8FlJnLA3= zm_xxLT+>y24{mP5)u@$Bm{nmkjR!-S66nTQJmf%#!l+1D#B*FGlSfu!$0mgxPHQVD zsnLE=S$Iaw=vUCIT);{%(YBPHyfFSk>i$J;hs6+2j9tJl;EIpc;V2xT0mZg6RrA%f zaC0%>hy(}L=mPpr`F7;u)1@!P?z!`a zQzA0Q>6%eGm9;hD#_BJ?aY%xRD~=Z%GazexEfZk2lkdZzTH%O^XDqmx2|QJ|@Vc>V zG0TZP;XTQXWSC@bv|HPuKQZLq5qh}}g22drT-Ue}bwB?`ob&JsQu++0WkZm|55^>^ zoU96UugwbA@p?o%cdwqE|Bl9i^VyE0#&$SX1B(1aC`4rRiz9C;7xgPGORIjBYCK#f zF)kjrbtsP|Nj%qTJN@ar`Sv!C*>3907Rfj?s{{lXdl)nQKBoZT$ zG`y4nb4ePCTfZv;g;bsDE4G_z0aRIs-_m@e@*v6?(RZVlG+n=#eTF=Ftc%JjfiOB$~ z_wxh?pHt(ZLwQDD>bzIz)#j8qTyr!}QXLZI%v||LVG?x#su{4P*U)okBsy zSbeG$NOd94v!@O()uI}U`JOy^JWLpKQ_$JxOcxVamFVM?!nT5`&Y{@XnihaI-Flgo z;anDqER|d%&EVty9VVED_sVB*ilA)?w`nSY+$y@MP^ z9&6N}HtI+fV>e{(OBpa6+2LLWuj>1HS49Sn=zEQ5FSzpdOoruF0UpA*f^Jt9q86JH z%nkPg2bsxs4{}j5XWs$3G@jZWccL12EkmwaZhwRjP?`dLLnkVhgef-!e|$Bqh(lJn zpSvV5_K3q`YP$PmF_r(>{%aufzsWarQ42K-Nzj(X79tUhQlo0X;l@bh49PpNg8tg+ zl$~?Wk4(=8Bq9uDNk=7B5!Y={`C2B;krvX`jeD^&V!QOp`22ud=6Yl&(d;hrg8v z`R{m4G(?&zZ0Fi?X-da2DQOM}SBftwp$iU#bHzPlpCLMR%F2EL)>CvY!yMC5e*U$b z`If#94nB3KKDc?VXFqRq=J*MM(&&VdGQU5*8ZNkA)0(#_-!uWQQDa`4W0ut+CkI2c zqtX)%pHk_Es+fqU3zY}InJ~ETM)(ET2J4@C`GPX>NBvfoln{h2L~8;MYg)hvZN6vUFAIjIgnx2t7Nkc{61g%p=(b~ z7(6e=Y8g5i4pB@L6Z`yw9scCHoEe)`8Cvo2dtd&InwqJR{G`8_6rSiX7l&-s5}h@Bi|BG`pZ z>I@TcjeV6i_E86--I4i^S@wb+*T4-L=o2gR>x4W;N;%Oz*?A4sviBNxCvfr&t?ly=(o!1G`qUe;t$n0QT3 z<)3`W{+eGM2vs(T}_pwd~GZ};Sxcb2z_L5;_-B{{cFu#az*La15)0-|;gH-Ca+pa^Y_HYJj=RB<{AljWi|h!gNBQT9uw z_e=1et$O}&wLhY=r!3bGbE|c6$u`qcgwBvNFVSRfUxm#u|C@bq&X;p%(>eQ3RfI(2 zgTKzL4yGdTv4|_bfTL?i+rNN&&aF_yL`)BYme1tLYcYtGnBX9C%S|FVfaI+}wXEG( zd7|+^K3~VJGWogP8dKi9vo|N7;{KQWLv{npFqYT(;h%cvZp@){e*xd{P+0{t3#A54 zg$yXb#JcPJo21`gw+uCAPV(hpnsYJOkQBhI1-a&SYTLCS|68RJ(9}DV%y_+90axlBJs_n1he3^wO%)ntXsM>|J>D|m<1pg&C?E+Eucu-5p2 zY%MmG?P(wAb+nKZ(DZdl?`E2KKs5I~l9(W+=SN$l%e_RA{I^@Fx;cr654InQtOZwo z0c>S@{?CY4;)cdpFbFng!J{@B`B%)CV*Yw#M_gwH`I+u@g8Ea;+YuX|s9 z52t%&pzbd6;drIbViO9Tt0x>!zqNEgesrb$9ldv>xF4rIJ5zTrO%UJE$P3f^whAnQ zhEVD$){Omu$qSeZ_xZMrt}4=RLR2=GXh4oue`4ET%MPv})QXK%q6JjSnUpt(@DZw) zPss_975RHAWlZQ1Ti@?}XDfN0lEB;JZ6DR8EgQrh3(A&KUwqCYSsZ6s?>iipQOvgL zhki@8OqbtXdjo^ZNne4myx0Y6#6#>LNYv4=JuA7_1v!nT;ZPv8V4sQ=^dcyE=sKQ7 z5AJJq+m)LgHaVA)eG-_$J?5!_JUn&{qKhd+9!o5Nf^N2^K@036KF4J@bX^D8Y zbWfA#dck_jDY_XyK|#K22X^-cS823n-<0lJ{`{bgk2a11eHHwf(wl4XA1P2V0nocc zG=lobxdB{lFKx=NmWNAKkQ+{2~JZqLe!Pq_z+x=^lgXtL`>UFrQ}DN22D z1!g{{nAh`Y3@prFy!-UL_>SdE?%C&wK<96Cumlk zbH%_6xGANk4GMVMPn+eTZsd|dg}c;FKi+XA=omoLK_6Zo&$E!(-jIAqcG`m$FE6Gk ze{U3@$)!KBLl@B}`Y}M_Rz|YwN0Qd;Xnjf2!ewqVYswO9w3Cf*!h_N&2Ma)r7O(`3 z+^8>GTdqSKsGvsR77b|Jb)cuzkaH=?Po=ATWg3r3XC_6|>4?=O2~#FN6+gvL?wlx7 zm-FgP3AaCdLz0@2=cJvfxue_gl;POHJNg9w!A+-+vCf}?gvWoqMMX>(r!QQ*FIpLfK11(ca~+)pbIrGPFJ6kTOLXH;X?#JGf8dd$EFI!y zrtItcEf9*@>gV7a|K_#xXm21}ptiAq#<+=ZKj{y?w>{h$&f86DM1FH^*!L0 ziW^Ch;I68JkzYlWb*-XF@0LhCVpXGaLg6w?`d@qyR`fCK!lzytj)%$Gk4n}dzoh&` zs(cxeqQ1novBJ1}!E5>Dj}0}bK-A71h1ORNCsRz%nF~@ur2qspj)XWOIuaag+Ffoc< zG%ZZDSZs!}Fa1=q+Iwe_)!lA`$x3Pi<)>twoG=|TpMcn1u(Wl5d?W@Guk$>+#})^G5+wN9m*R%QK(m(h@#_D znVSr*yP;Ns01$WtnU15VGLr|KYI={W?(Lw+#H8wiAA)I6!O9fLIuUeo=Q(=80cLRq z2?EtbJ$JwrDh)*Pi-~u>A7ltJ6}xc*Dm&ySKi68JCIKh!s0Ovb)cH{)HWiaD)-4EL zkRHh4GV7IX@@pyXw!ZgTkaPf?KKxDzm#ILpQrSyF+A~i(8is5+$HE zLGl6HG*5eK@F|JUp=jani9%0OLHFbhKBtG7Awpsp(3wtH`6QDL06k`7a;}YmL52bo zr0ONN!j2y(>5?a}(>8U3OLw`EpPG8#vh20OsGwI3DuyV5cTE>3py}O7`-<@?s}=OE zcUZrX9(a*@xEd3SGp`%D4Gr+hwF7T5wa)t|@xB~QUBC&#^EwSt`w~8ztE8~vGDekE zI95&j@Y+!|pLt`f=s2RN|H_RHK`I!0q%_rjFJaQHSblkl*5yuzG!@{Y`e`ulKAQBl zk|a-clH8*>qlp%3Rf(j!D03{UEgbjy%=~aT(<`2fo|TslK`;J7GQb@Ez=F>8)B1R6 ziLf?q^tH|IYutrI=nS>OQ$y8#L9k2Ap4ueATC(U}FzSSc%}+x1u}zGEBzKtU`Vg)n z5n=8~Pj~*oQc9(KzStH$teV=cD)MwCvhlu5J3=I0qN)&1Lp4R-P#x2XA-cnvPr7ceDmH~FC~9}QeUC&lzET>(hA?A62q)uQfb4ok&M!zxqHx+W%nyL0 z(R3n{(EybO1KnUlqHvvGVpDguLf!*lR^zh4Ak4BgxBSJ7Xi)Wy1{40rn>-(*#&0%- zueGNtX{QQA?M_$;20#c#o+Ujf(@E?sFO>Q#IZ~pyV!4TJo{Z((#?qWvBNM6Hm>DYp z#(sWvyRypT`TA~Em!dCW263A$J?6V*^L`Q3W(~YyPi}3$Q$ksiM4xY8&|Fe#1)HA0 zP8-+T1}UFSMpCgvHpCEsh!m1zkZC-e$y_2r=vK7oAL87)grGeqfppvqm{Zp!*}g1R z&5GLt1Run$KdK9P7k)z1I5}Xb;@;GxT>WE5AH8eSr}!kG93VN{w{8~EIEbybAva)P zvx!ABW6cAK8NU^Hi#7qNhI?fAR4*0?EFl6)wN^D#5p_!U;*&&0c0c?E2Or}PhdTEJ za|b+}Z=`*Ekk0!e%Bz(b$!8-Z*G}`hV;}2%1NOYwIQq2?g&<9Ziv!Z@x~G-MjfW?w zMvW^Fye=?W>>7Y1L$IIV0&hj@=!+=y;sq1?um6JI?3Edc8B)*q`WPJr>#f~Hx8p{W zF6M_ncu3OIU7NwAZb6(3p$}*|8P&2G=Jz9Kk`uz@*h9 z%m=m7B;ShwU~UWmi@Y`+@!{X82-?Xg5nu~YsH4Kj_0n!e*Gamk>0okg8mBJ)VdgIx z<{Q_Khz;nVshh@c&Pw9lzoe0)#cnQFKd8a~;b%0F?7yBc8Y+sil5GLZ+dXE#RXy~j z9DX4IfyuBzTs$?7iy3IGPD}EqpvFl}t7=*QANuAXbccs8=te*ck>o)tznLPp z_%z$I8o_@<$ARGz4lQmyA9OJd_U2|R|7mk~->vGj-3*AXrwd{LcB;aSb+EU;!3TLkzm;^hufe0B$29CLq^H>X>y28(Ogg0nHb z-OGR|xsS@oaOxZFFXq6hQn;tpc$B?RWs(@>i*T{;644zm4Z(}qwFt-j0j>QX8UNOP z^EK5S$w;SL`c;n@*b6hcHu){ho49Y8{_Gh=y+T;IBg1neT7i$aq!#>`< zMPOi1n8!Howqc{?`TLBjyDdQQbqv5jKUj#{O!)s`L5ljo1w){F6;}fw`nJ!O+{#{g zZF-lwQ;5Dqy-)rzP4`ccQNgp;5 z8W)FggSLU^|DgIHZUYJ@wxL@f4qHd77bi;*pV9}p1vWkjyv@9O36bmjT(@|mv^SxN z`I+a%j!#AxWy3yaeuV3CN%@pigqOLsT57|}-_s=AVUc|Dch!Fz7<|Mc+QIy$u<%9w zW1S9t3DZN5W{g#M*Qn5OcOc=Q^WpkbI!v28{A^CRo3)X} zUHY-HJR~F%5$ji(7jew;{$TnC538}ztyhBzAEUb7o7TmSl{N#7VV4!S)jKCU`c$qiNA zr5+P|I=SlXPn(UXw@-(O&9|CF52$U0NwLUnriIv^y5SQ$VM~>}{gdq#6~EdK*?&g< zBNUSq!Eo#RmkPK2*VZ*F{Ewpv8F|{XFZ=kL6yY{PoZD-0JtT3umYg4O)X;nF9d_e_ z{ot{VRt|^I(zm~Wf@f{x$1v8Q>;GQ_X)L|3TGJ3c-LUqPQFtT&Zm?MdJ@MH(Rhkf% zK20yEAZg}`a6JFVf#>k>jta`P4u#U|?{#PISZee1>Vn>5 z;m03LiB2JYkBhd{y8f=b!rcFgV>5eyhW0%ZUkk_7fe<;d9WO)`DPmMsolj>zsQffJ z>0v6zO;;|YbgiS8NRsCpCvFc@zwh!lAD+w?dSpBBaYeK9%a4=If5U%;*7!GmHyJl^ zX>5s;^0fc-fYEoxvQR@kpFZH?zu)ve z4h!@bmAzfuwhR}2YWr-wqhE{InJ6(J5uUTKp^1?1LA(0)T@x!~R*nbYjQruN4zlGp zN27Hrr+lALHQ92DB%J>nJ0Nn`{}#t$-_FTfFFQ1EXxn|cK;KGyHr-+$u|WOR{)hKo zONEvKdu27sW10T=i#u5gCoM!h>$T||Y!eXSED8(NGVnSBCNO=}f9n5lk8yY|3<1!7kDzv3Fx3w_wWc%Rddr7&E>F?h2Kj54FtRtVTbq}EC zS{_{chG8k^2&)`v^+E-rwbb<0q|uT&P077E_$l12b~*tyJDlq} zh8(GqGbHfn#vTV5F;_oQEk*-R-wsO*0W0aM3hk^JXva ze}UsRdqwFM!YsLoYeCtSH`I;z(&e{br8D26l8!-1BppxbNnEazyx)Yag2{=8iCXHu z>2gR{JZ!Qy^{5{=cQ(0K2x)7}&Ox(LgXE|GCo{jrb$*?>CF1V67B$jFt3x!qa*~5C zs$vpaIg@KDLh91?5~$3r2*l(h$RreSe^YHiPdye#zlA(KPz1Bi*=Z7P!K{3}2fT?F zL8yOv)>b{O8Cc{-B2RLTD}lRGWV9dm5DhO@0)@$_aBILj3LRc(>wV4tD%vnK#Zp~M zg^M&i` zT%t=j%u{b>MTD^;E2&Gk2HJl8SON77S%|@drWxK0TH72eSdldWNuPszU#u+p&)RPe z(iuuseW0~s>ga{lb{9(-seC4rNmvIelC1?&{)P`bU7qb~$!0NZA!D~a8^>5;WOhsG zcwbPcg?|f!3mrF3Vj`wa$K#)=2l;CGepk647TJCw229DeyUpWVXc{c2CRCXTOjP0ukVrEWQ?x>G~5%X;xy4W@%e0b?IN zhVaSg#V-=^=+A-naIq06;{PIl?ZNVg<{?=r5sQ?8ptq{EhrJ?%9!5c0dZFMPjWaGE z;vW?!rx1J0*fc%q#7kIca_uZb`@@B9Tb2oM)N5k(-`8X@7Ly_W7x_|taN7CihG@X+ z@&WZ__ZRH&Xy-^R@$WHKBbw^>-i$1k-CCxk+@)zKTqlGKncfO!?R6ETSF=`k;PW^H}U=t{BG=C-J}D1BEaOTHCv`UdRjA`9BT69aQnLX2Ses~(Qx;)%B6_eMZsh6lChVS5CxkTAK&=*IjGJNk2ZA;Racf@JaW&?jIj5)Rq%M5) zjQhO1eV2+CO&Tf;NM6EJFpgA~yvlo_CTA=7b#yITAb8i&gO(2$f;8<&cV*p+5a`81 z?RhQ^qW{}FLCQ8*a7DMB+jdp%*H0{oSgAPABQHx3n&B?w9JHg;Gj2O>x8hqfX&;gJ z5ITL$pN?8K;h_RPV`f2}ysj8Fb`eB1rAK^BxoNWt^}l0~|Ftyg;vlY&`b7pyUBBr! z+{PQ#i%!aHPksTg3wetVPdyxsfBMt?Yw^-v9}eLlpTB-0L-!3bRMVPCodmzgYoL+C zVb&}xZyk_Wy*8=@{DX!2K+0&Y9uB=c6SN}b(XFjm!$_{sujyv@IFz>EIF}xHhM}pQ zHLR&k(w0|KHQ*+{tCdw~BL~_<9{}8#v!mOw%p%;^xv z;#@Lkn>BbalD=pgfTaH?{`#Le`$qDN^7Ti}Kbx88460&GV_`RBdYCg=@)x4?&w5yi zmrJz1a_U#PW!UEah%=PVGAcILlxxzk%nA`2Pd|6c<2f_g`gn{A5upC9>ffFbCfw)% zU}g-lmAs}KDj*i-?yKk};TjRbl~;fD#{Q)4RnC&7ygalczx_InnGn>>>Pn*?+Q6+# zu(mB_r1AE7t4xzVx%{qGUQsRxP=hP{4L?qSx*OL*BXn?=mHA5l*tJM{oa>V}<_te+ z+(cz~))hoY0$fE;_W@Wne!BCEYt-1#Kt!_cd+?&u~Z+)^u&dn8CMsEz^IX0cN z^frF;TI_Atl8mSjlq>WV&{9yl)(~zsdwHDRpXBK=I`=pH^=$?) z)MabeEq6CJWq3!1;hxx4m&9*x;}|Nf8eOTPdY(QAKh9mo=2~VFUT5n%mKjRTVVD|o zEa|FW&^KQX{m(@zN$-~cfJN!w{IG%NVDJE7NZFrNtzkKy_Kq{=H1+Ah8tzV)l%P<9 zg(WtjK!Sdww+?{$=*j)5J}!~lGGyC}E&S3)$IuT3n));g(Rr5+a?4$VZS0`fP5pNO zK=p6`Oa%UXptk}k`*W3D&*D}{sRIXaKc1xPimn#yK@caYB8zYA7>0N4!jSfe9^Yt} zSF=}-`b$j>Ckk{!3-NO)HH=>EKb71}w1s>-*^h%e07MY-Uk)Tj{sRv%^GB?v-QWEj zvLEn;q5bLiq}m`Dt=Lo=@ zOeJ!Tm4*r5E`=8w5LHnE5ux&bd1uRC=uo*p%He9Zl*&#;)=9+Yk{@2Go5eoH)2<8Y zB%_R#E905Zi{KYfmM^WEVyI-}x!qa12hD%>mArS&X!YP=DBmAdr7;k~MFTYkbI1Qe zHc&7h#G(I!r#ox+opKP!sl0Tv>$_?-SI(sZ$yfZO%MlV|jJOAE3_=TK%GCbr`O469 zI}fQ)!}jy(7YrP0hcS8FV^L+Fs?=|J4YOS)HjrQ$%`>Bexb{D=n>v4?1JolU2QrkM zTFO3=&lq1MpYhbnWqtm$y44SD(LPlJD&E`P`Sty}B|{RUZZYk!evi`=E0*o^2aX)3 zY7-m-Vsm=5U}#nhY;GfJ3yiS=kzr!^Klo@G+{^EjsilU))rw4Ak@O}7!H>a? z9$F80qPMS?_xd$LEOIMXO1ub!ErDK%M>CB!;ao#KA5lkp%7$CF2ARTh&h?)cuM?}^ zp3Wd(DUadPj{-CPr8(%CFu}p&Ut}nU=dK)Qcg(ykpPI9vd|e$T z3LjmgCnq5!#4ZkEHZ-y4A(#IL9e^0Ad<+_2_9}aJnc@}=V`DrSV>Z!_={mvt9L%DP z+*ngkSyy^H2H^@F>$NfAYA=N>#lq> zZdOBKaA@T(2?!{{v~419k#bnw_~2V*k{W=ZAqKN{u=q^~#*L;qrPD2*<}9%fEJ0B6 zEw@JfX;9DoW;84iAsX5fz^siopVP{XE#`S$PcaOt$;Bm(e2J!ro5`n|PvQ zm6A6?h(H`zROq5%U;xKPH#04{B5!hyiBL3h<9y@B3y%q-mr41x;MgtLocPhUXXoTf z@)9HRvRc!G6)cN3xyn#Z9Ldyb%j$DMRRoK(rqELONO*$U&ak=R4EmA5C{0E~iw=s%vA;@rjeZPE+ecGgsQ-ft8zmD+Gnm`z}dI@C^ML zAtIXYNQ-0fZ8*n8O>oik#`b&G)X>fhe-H6dC)uu_wW<(tDS0BY)LzBBOG$J9@wvc| zSHsX6Lv>hW=1)sLqM!3ogtRW$zHtsfO)tt*IP)7>=>U2(i4@U7+<8g-Fcn7EnqMSY7Jimm|9Z_O4n7rvn-%fQeLMGsNw)4v&&&?7XO>VRDd<&CL%k0I7(2B3cGp^q(sx@4gN zc2D?FG*aOD>#UA~BF)s1L*VeaJd>>P%{xYpX?+9HJYxzH1IYRENloIH)_Lymsb^Po zD2W5~QV;+s`ux5`^5vs%7)w^@^KYiZ12)^!o<~Fg{SYG;3;F!<7#cu{wIdN~lxLri z+dstw{pHU@R(O_I*1mGG;HFwW4(2Ma{9NWigWIk*aDq$je&%XFu*|$&vsqY#Ql~e7 zOq|;5%Q#Zw^NJ#$|W~_6nFHM4n5HXlz zG>{ksAV`EKLzJkNDilf3Eq?sI3vdCA8RzB@q#&Q>sB)kv7*aKH<^)}44p!Ba0+6-KDg=CC7Rtg1(~$)is3)YNJT|mrWcUsH^XT1}{^- zp=*PmZO^p9V0T2>NxE0hLBzL7A+!M}dgo&IiD1XV6QzR=Ds-f6LGuDYuwN{eh}{DN zv!@HK$xK|E13#ByG%s!Q)>8#puc!_$4~tNyw-d=a%onsEc7bbc%UXC6l2+p z&*68{64yM4`Qb%ST|68If`cDOS4Fn2!Z^2VEMElxk&wUxtc;v)p}lZ9a8j`Kvy&K{ zuic!$N7Jvn`BpJzeB-jyc|OWAOvq4V%-Hr}uz+bxom>aj2ou-u$Za%^V3aO9W}u#i z|AP&pqr#zvB1Qq!t%|{60JUK(ni&>jl%5p$GY^11RlyZ?W6#9LL5IW$NoY|ZfLb^l z|0XihE$daODY`w>vd|Eh-R&s*x|UIyX-G`%9vYGEI;VvcB>oGYJ!X%SjVWUiKa;3B z0{~k^P&^Gxwxlt#a0uxB8Lq9wPIh7{&`oeej}UR=Zw+I74*74@UB_*Ro6t;hD~IHo6O?+ka|?e4b2)-GT_>#V#5_4*-Dud<|7BYz8Ku&8GVxa}|3Q*CJMdk>Iwu zeXgECrNj|(uGRB9uSO@=?#DIfr=A{sov=m{Z6^tx#u~ZK*MYp0o}EF{nn{VGCs)O|TqC1AzSQ(~cHFY?eu; zfx#i@@S0>|D#oN8<4cMyCc>zb+drj?PCv|fx7=)EBStjvS46lHw8I?ox8|SUdH2#0 zd(7wc>3Qdm-UA+iI;Cbc)WE$$COVW3G(uC@`5{0je;5PjC~&yIs-vL&d-!~t%nQ+A zs=3Y(mV8>FV@GIy3uuJ9r8KHLT3U}Xy<%Zfyrm>GYVmDeRwQZSiG%X7jLQpWu31g3 z3n6ydsxc!5j#jy*P;=NF)6j)w+~(C97cE8NF<9+1urUJw8pqVrU_Kl21Bx zFkw0j?HUfJPvp^}Y%!KF8dKApJN|J~7s7-$28=7X&roOFcsrfdY3>sHW2nwG1$k4$ zzy7uX;;qaJcF)7B3kO9AGdx_B9a)qkK?E}=_&+4-BiB+`slXA+?Jgy#QnZ0og50y0 z-;WfBFvEsYT5wM<8^yLv$(xa?t2~i9#QgM4zj>#_M2m}0KG$p*sLkK&O1WrJcdf_@sL!>H%bbwa%u5DM3P8=jfq!`?CB=qg zP;!0z&tuNY<^yDE)UiyQl^1)BX|fFvOiBWE^$Rd`VtEpBjhuc9w%V2Z{N9hj@~F_N!a)9< zpOKCdr?sQPC67)tSzOg-u3elshs&Rs@oRUy@m6x@@z(b)o$sSx_w3fRySw7gQu8U! z*x&mPLg zOvTG~m9Jp~%=%Bxd##S48<>y*&T{ck^WoSCn~p;L z1ToF@_vyVIu~HGzv&W}$RYxw&ROwYbuJ-)}usWYmK8NWv@RC$Avf|7r7~mM`(%TRI zDWN*H(nzp==|K;rzS6`#VuaWB+HTU$BH{XkNn=2Q4FpcI8p0-HUO|{nROuOOMW%mm>OU<>DBeZ$4 z=r~`nxLv~3w~>5l@UrAzI@HOp++k?Jua|c%m;Sol3iK4Q{pR`oodAT=>8AA zo3Zoyj*|73LTA?=JL!Nc|Er8`oYJnAC-ZbG{YI2i--xp4>zT93j%(XhW5WDCcg<+m zf7P|L%akm0L)E75bp)m5zIcA$uj;{!_8v|qM#)Udf*|+o;(b&fNXIm{(Uzl+D@KbsB2y(sdNc4t$c&|9wD3#nEJf4t^5$UZexS!t~+B--@p z(3xyYs~G0@Q{akpM{P6e!I!azA(cMPEY2~`XWpv3(5JEaS{Weo?rgwp(_}-Xa`mBR zVd&~j&#h8zy{g=oJqGwpMw7h!qrHrFWIemCU z4t;0Ix&O!1o5r)9e*gcSP8XDpL@8=1v5Z(lQ#(_&##XT}p~TYCY9o|tFs-FxNs6Wf zZEBYwYHLN6DIu2NgP_`&A&6RQDUGf3%Y6TL{%*?k_K0ga=e(ZhdY|*Od{I?+@_rMK zX_Mux*fEVWEq8YGWq|8$M;gtaTMwA6;n-B9Ur%-`n4c(4vo_<|Ra>QIyWGC(bQnBA znxKSB)gr~+Bj%6IA0e(hm&xlFhtJ8B&#nDaKE5AEG2I|rDkX@R5;n#CEYhuX!7~7*LDOa;liP3GsMwJ!c@5jI5FLmkjnW0 zAPj7(Ehj&I7{@9%?tnJzDA#A9TvKOO|;S zu)p`{eC|YB%ZB`RtJ~XkjGg8Pt&4C#9?4+jLt>{WhnC=xTg21q|Jwk&e2i~$8PFwc zR%kv5vdq}u+HRN%kTVXVX{S%V?d?_FuGP|j2-^)7FF0ukrW;&nSqF*NMIcZ=ebg%g z{mwe6gOj+v8kY`WhkoT=vw1<*_g_ukbw4A1`;tf0s$|3V>LOz(bKQ14JL52XyUL{e zd)a_hF+(}`@=}xmeBeO*-n&)~W!Wuj@eva#nJ1pHZ*+8PYbtN;J2(eSuDSP_Rjeqn zSyy{cEm^X>u&OP`w7lN#-M~%|8+B{b^P49l_4;RxIj^j1;hgF36MH%926KMopI;7b ze!);IGocVqJ7IORVh^h~YTNUBrAG9<$M6pgfvJyfujmz5HBI>Xc$b6#m5`DV9(6v{ z0v_q!Kk3x=MHxzw&v>xImfR$WurRmLl%ZxR`Z#Eyt*z#YWUrY6hO)!>Yi~8atG*64 z$*PP13~N*t)t7#du2%v8?4?SDehGBnRR6Io@APiqoLos@eRIBxDNbmy=Kis>EdeYM zdCyA>W&#W_6fgG zBmdD3Y`CbLqgCSG{Yh0UH4~v6paw5HcfUu?J%S-mlrz{$kb4;}p6k`X#~b;AM@eI% z4EvtD@B>taYc0i7C?;o}(&8RIfk7lrisD+H)uk4uc%{5BRjc!RRBJyMF<5u~THT!L zOhkpBho(=$S<0Ib;YXM#nHN@&Zi~3UOO9K6mZ5EY~r&T=k|WU)l*`=Xb9%u^T=XH#{P4E zf_my{eV>*SQT){kuQ~b}@9(Cc!l6AD4BgJP68#^{U71ey?dID!Oa{+rbNk37`q1=Q zhDN}AxqBU~=Sf9Gd0j*;Gye5p$e?XY|} z-vLhgqqKi7R{<%15V0I2PR>F~G91(c6piN>J-hH%s3Uc1czZ+l%))zW!d|IqkblCb zIE;H|I^o-^ww2@>3G15mfpB(JOQ!f2A#qC16MqC7k zF=xY>f9n?s&l|gUTmEK$A_?QOO{Lsj%yL1#L#T6l5_>QRY;4YzJ+T(BAJ#P^rB9~8 zRNabG*%slEDz3#y(yk^03rRzO( zskuh05wc7-+;r0W@~cwRPa&)7#>Pe}^*wUlCbYv8Q-_K4T7KCRzFjAcz8Le!{W*o4 z0GJqias6y?;$q^3=&9&ESNnm@|3Pl*aa&+7zQi6BPL=`xJ2YD&o`q%!80V_opDDGI z-VgNmW(9-46QQUxnH5Oci77{n?fyT`$q3Xu1NWe6iVY2`i-)VKpi@+sIO zH@D5-UL2v}D*K7oGTCXa-q^5p`G;A?l)aBn%Ve8p-&BU@{6x&uK=S7{Q&@9LIHe## zd|YzJCRco4a=&@e^?#4t6{9A_K8Ne}oby>mwDyW`cDzLH#B_GcYe!n$EAPuubiZc$ zK|Hh};^f%pw;DmclFM1q3|w18?E@PJj5N<^2Duc7x?-D3_pkjle>20$9q%xaQJV=m zC&Y*}fz0ERai2G*BIoZSHz8CRZMot~%bLL$n&bWDT6a%arDQLJA6Ygni-0!gyYFq0 zrsnJklx=3jeOGZ6ccVai2@S7W~vV6>8KWyTpGoTQy&R)urnl zzG=o#D!lqWrfGP2-h~^l@)x{Ga(&7x;%!-5gNnJ_PZA;^B2x8~+xLdAV<9m$;!~2n zI+ThS%6j#tO)s@|nL3D4nW^tRg#A=Atx+dwOb6B7|FNDa**Mv&E1?0B>=k!+tBtOl zXCOW;FE3D=sfBCrfC*FcuA^$}iq?I3DGl<`&I{f({Fo=CFx{&m3n|p#?*0X~IaRd2 zS++jLw)+u~9nqI3Nq?fzW4lmGvb*=$t055Cmx`3^7HyzYSJrc;lAChgH5;>wuIPg%#G##eX7-0>GRb1 zdl*l8XUc1p%1%^4-@0Rq{qzy*Pw=OBv ziy@y3XvF8X`FUg~f-vqb|MF7HDKbKHEe{YH4eA!W$x35%(yhiF zJUad`+o!a|A-1=}Es?6XV&5=8);=c-`XceGtODXZfl%kOY}$?rF#oM3W~`&&$dqPI z@S6+sFKp3r({~TLG2|w>MkP$ydOE+=`q1ebkosfPe)%t4Ipw?B4gQv+uFz+xg!U`d z)U`wp^D|enE)ZlOZb-9&8x`q+xEJbmo_0ReXN*vDBXglQ>4fxmWs*7gcOlUY$d(w& zs=bfD^hEt=4linPVl&%f)UAgG8J12c8R)&$4Z7tJf&im2DHT$hT&9g9?@rTl*f|dJ$|= zxlLHr-EsxQt?j8{Tn+-c!!wkyP>^Mn3%I3vrWqx4#EzMurUSAIkx$?Dmf!})rff4s z8-$F@-XU7H6uz&I%YrK6AUsUWuDz(T4JK1E9%jLSnE<|g--k})zAnq6U`Kbn6AMNG zVB^F>xad=u3G@rDZ$Ak}J;)iW3BbODueqnp66VU?)JtYFJQ2|803ov(P=%XkbS6Uc z5ppXU+^Z-`B?!3*{?QBBj2SbNA2S9UF&yG?g;Voe`0$22`QQggAebVq-6-klXWCA> zhsCX|B7!}=jvhv>0BR(RU<5V6<#BO$a7mc*LdApL!j1ZuvY_%zgt{z*H_ogNZ_fdi zm3xLb2P=&AWEj`<%YzAmQhUqrsO8@nr|)QZXV5K!?o$U|jZqNc_|yPxp=I+7pW-&V zyzt3Rc`x6rpS57On8`M{`=YumxTd4?tYh>+4E{#Tq{CiIMWSAf53;=THsUsg`pm1x z-92t~v!?3vgpyKE1(m@2%%r}`u#B#Juk6mZ771|_vpe6*l@5KWx#lW_22+qfQ!#1= zoLll+g}M-xF!mlb3D zGZvHnQr(q(R_mVb32O-I2}CF-hPGMP4J&vpFVDzlK3n!sPFgYgv{54tqrR#c4A3%i z!(Odp*w)4;KF}aL`kSgA-*#WmSgUb|)d=A=Jo~84yV85OoXAe2mIi_FDpi2^G;EBV zLCH#}X)_M$2u`wpkTZ6F8PT#YJ<${h0%}Hg^>}`%(4jO;ed*{tQ|@n|6pcTf=wVWr z9nn#^eA}bWGvmGb!c@S!3S?(MNwRh`b;l=`+P7{f*+5zmz~t`vU2xoKuYrE_TH-GDr{dDS^J_j69K_be7+5a8-1cs30Ztc ztD(#j4pit z@aj5PI>O^kdV;cj<;QFSrMbCf48WP{&WNCz$s~Ft9T2E(la?(7l{u5Qr4VhKo`X}o zbN=+kq3m$?3TS6#!o=<2w%K+GWD{UUI2zX)&nG}|bG^_2`)+tiKHzTMu-tz1v@GQH z%fjvWxQ@R~JQ*2B>xLTfuosy%HE`guWG}~R7ZE2B5{?s!&Fbl%g3Amed07HBJR*`U^i`IL6hy*B*!X3oRZ@ z^2>H4uwouJEDibgn&vEI?9dAtUyx&;S+N^RiDx?WD~nZ%fu&Q4datB#t>0Iv1B5LQ zb)He1$PmHCG45oiz8`R`(cNAyT35oG;GZVpAA>d{0wl`Y-+-P|mQy~}C8!+d)bfj? z3~G7Wb<7klf5#K>ve7L3=OUQ}BmV0YRaFSXSJOXx76)3e42PZvQ?|Uf(c~Yee^1=gYS<*#_vM4*PA#Q{H4YkLJMY*jbjdr&Pm*o=0~KE znT>Yn`Z!RU-^l6V{q)UOlV2XR`DF27<>H>J|2dQ_vhhRPutaB<|7|r{D7A273THxV zZ+98fe8Au$=bSDy$@#@WCd)dEf~JBOXERmYa%z3voPiLtzN_?L1BFy5pM1YG%;AmUnMM330ue?6tfEngsJhm zSX*kt>{#Kkd^rY;?B)Yj`vL3jn7KTU5f{$k1J5U&LY>k%9J0g*>wxCe*uUj8AJ%NQ zaC#wM>hW-QYomnDGo4{jRQ+Rr!9o8q+vXNfUD7j#L-feX%=hB^9KU*JGZS&F+2m@4 zllTsFveViaY||n6-9NO{WMZy^l=>ekR{H;=;{Oj8{{j%btnh!R_@+xB>d*WC2a8Ys z2aAu_FbPRg^*@{IXF)ssR}PbFc2{|P`nG!qqmgtmKu^|abN*2FVcEe438YgcH5`c~)VuQ=m2WF?4dhDaPHNY|e?*x2^kN-)nE=O^5(b2c01@bgJ4X6(M& zwfx4yuagy1mi0=Y?V6pKQL5^@cV+g=GrdL$Ca>7@RCV4^(v&zk=8-i^y$SdAYx>se z(&`?i^-Dx1LGc493tIX7CHo+5Yk5B7C%E?&do1zE{sQ%L;qSF?Q#?`OeokDQFq=|- zW4UUMnFI}2_*0@@vG8SXi8P_^c6d@Xd~&jab=`;G)Hd-rAgWZg+0sJEw6R6pcGNZ; zt6 z&x;cYrKO4nQ;>1@F-1fCsfURqe1Pr;&(HAzkxDjz*#mW+s1h*#Q3N5XqsWL$wJyZlf06pg|{lTncAwH8X6VRo`RR>p?U0eBJ1YnGOv%$nMU zck5)I85C)C*_1YBI0e{(?#FD`SG8ON1F&Z_YLSx7x$nVcl}2R?j7{-`Q!phI*l>7_ zkj0Rw0YpL@_Hw3V7~NBwF>6-Z?}bLW78j8pxiZk zQEQu$Vnwl#c;MK;#7YpK|hHz0G3Rv~x6iBUW^kF^p%_=U=j&zccnA zP~yiZzS->MF2%YfVja%8jFt%juGv=D>~zrgI2XZtv~xeDv0$s0`83xr)^?B5S3*{3 ztR&;*89y7wL>#Y1DF+1q*f_8l{%VmiL57!TI6&(X+Y^CB_Hu2thhY3~~AOI)X?C2~fEnk4oTUfYxssHi~{QT~O(=M=c)KsF*_jLIO@tlpaM*fJs$^wqUG~lQi zeszdW{Ti@a6EmvzSsm0?uq2@%3~9^30s*FwqnFXWOmBi~W8p-dwY*);=PT8pUkw-i zdXyXM!{9eqVWs1_Rlk$r@4RxvGd4V|S<=%ImSgUZZRvL3a}+JJlJx(cvW8q)Tf4H+ zn*7AQBz){@p#P`gejo@4ktgE&C(xIwEU^IVCs(ULt*=<%k67D`>H9fZws}neE`Bzm z-`E8Q0U8@0u;9k&wxfU<&}n`L+6%o()_`qwo?|{lc!Laqzj!fY3+Lx{!h4l$zS?l6 zGB?zKWd&XAYO+m6ujJ3v6N(jRB|Eka&Kz6+Snixz`V)_ea8D>0kk(Qc5io`$f*3duk1J=(;4-}`(1e7H*la}ka<1bHzGCY0qo<4Po1{uyE6h^ zaDksBq*Gxkb{Y)HSgdhd_aFGXe@3N&H*q*q)$;ENkvI+S+K6aV&HC^S?0K6({LECw zr{=9m@!p1OkDiG&acuxcQg`c>J%g9sdrJg^Y;%?PgXXSUzlv8C5rVswiW2IVOwZlL zNS6l#kXe?O%|zlrJdvEFZjQ_HZ*O(5l6i1N5Z4CB;70r!Acwb||MrBQf)&_`;AL91 zY$HweP0KHW4-Gm9gwL;S8BYV~ce1YR$603TeQ6r^%!Wa=uBIq?z@-Vjo#}6_DEp%y zCKn>hCk3CPd`}j_SjzTrR`pN*-l^F%wOrYQ`x%x-Tb5gO*S7@byzu6NC3CugJ_hl0>uDb%kr;#=V$QV@(0u{#{HylN+!3gy5z1wU{s`5a2 z?V)LX_*d-3F~@48tj?6KiG-P!xvOweouV$s%?1E2-uO7Jo@`46UTmO7D^t~|e7?oZLSz7Bg;y*Cb z5?<#P5*ga15SS^9lDDi@xFmn;)ZRL*Nj(d_yhN=<{hEvHa2pUU@MJ-HO?by9t| zf!8!$$5hlnrC7Jf@R_frSGqMlHb^vMUz%g)kf@`6>4#`fI@hf_J%iJr2v(HsRkASC zD*P$kW{@eD!-SPZhTczMQHRUe=zDP*6z+kjCSudnr2+uJse+ak*R zkcIm{Giqe}_znr7lMSP0MB7|7{2?!o5Uu8zKzm#0pp5;!J06fB#i_GK>A3WbZCF;l zY<(VH2DRLic(x%^#)rN}H5F%q(yue@|29Ewf~f5%VNY?MC<+l{3O+a-hN^OcB4%Ji`Gh z&3R6+$o(Rk> z?v!4eL*i8nH)=$wLHdjv{CQei%@Bg0JSv^iH5KO-ImTPozY`yovCvQ~w&`n_2#^3} z`t^C3OI!`oD5q-lK0vw4SV&wTAOJ&{mly*M?Wy$Cd|-6CyVq(;_1Xn4Uk4^;}q_fcSMKXuB-+ggPkWtu?X=odG%90WTW7XL>V!&VPlR-p4cmq8p0-^t9 z%eWxM6QG{KRSt*JQBnay{D}ZCQ|p6qnm$L&_cFKrER|#EHh`XQ(9If3`{<}geUy!K z%Ra5nDWM=eQrX5*wHZ{ZWvm(fX*r0v z8W!>AA!$aC*-ZaW+$jSF0^fU(3KNS_3Iia%niRkdXE7O5G4BaGZ#@75&M0VV94v#QYIGTkN;525B zfh9Xeds_1yqdgbKeK;m^1bHk%O6;gMh>kL@I&kLUjQIzDS#5a;b87{E8bvKwNd=4s zWY&i@w|&jF%i!MwXfqf*2b@nol3cAfS@&$_Pu`tR`Cjz9wqu=}O&vu+|DKriU9NA< z@OqAmnDfjqfpY6h&2@j={`bU_*mWrxMl7KB-SJg$i3mzw#RPgJQuMjPH%ARRH?%I5 zw9|%1*Dv12}lqAYZHJ+b$VIx)aS{ z;BNcNpm7;nR*5Q2jR_fR)%Sum8Si3(Utz;2AJ)FV@NVe&a9rXq$v>9RDMcH}m3r|+ zXklmRUZwqd-~#|PxJYnA9&2V2GWyo0xa zN;@1At(*f*P2%?<%uL^Kt7zxQyN{AiJB-CYRP0cS?s5LU#xZ;~gX&4#fZ*CA{CYdA ztji>t@gkr>d0GVVlHy&Yyj*O&sT$pBn8Imy!DW2yH4m-&TziP;J@Vqc`HL&PgOvP= zgO19R#e2YZYaAd~V9qnA&jqTBDu=>oJSkE( z2S&O?`X7Bi+PSN0$PbnhOi3YeA$t1fq&CCvFo|iZ#pY;WO4lP*cUoGrX$^Yvm~R?rTZXrpbjpWyu-nSU)S5Axz4j=<$sR2ZXxyc)ODLw zmU@E1!{bSrW(fP7)b zy4Y%?w}1sH+o2apgdB1#$o!1ou^rlv3&ZEe6NuV08hI;@oi7Cr$GFjUP;iv;U@~Xnsa)n`;pc%PmR!gT`(nUBuEkuxBaclH3Lpo3{zh zD2A(UIYi%pUJa}WLP6yebt|h*)%F4xY^@y|{lj$qBZq2v))B5n55I9p)M&Sj1tk8_7VhM7V(b;gBt!SZgHuaA6vRFH@D zea5Oz5>4X_-*m_`8CH%3WAs*lOW*Cbm_G@9iAz1suT=MPs~Es?vw3Zxf8Yk%G%`4s z8jybYjIA%v3HX|?zH5-%1lHC4TEqcX=}S5%qYL;Q&_Wfv3tC(qe@K-))3NygSevVk4U3X>fm7KOouX&u2FUv2V@A_6fTpxpN+ z6MJ=#Nh8vE{Gy?{-spl{V%<>x^B@Kgtu00dWB)yY{w2g&kItjfV-#o)Ng5QSN>x-j z?P2bgz=kJLM6X~2-O7OEyRx%50RH(??KYod?}st;=5qM!1y%lof%ODiqqX$BihgL7 zu_^3gYiF`oZaG91f;N0cC&ME#J5sLmtn&+@cgdb?E<&^eX=X^$KNFs0MM^e5i3x@G ziV@*@i^EI04J%^v!K`9C*SVj;2O-Y)nYH~7i#exQwRWyVW_${scwC9)igAiaAPkJz z97vOmBM_@sQ2GW>iIpf-+DZFY;r>cO$XzXGUG6m8kl<60%ge1o&)*>wW~Wpy5{NXz zf@-IbemZ$`F?SYLY}@bs*vwl{aGwQL?!~xe9levZcC&+*nL4K?qpd^O#gKfFjYJtI z)t+3m`NfB?s%ScnL(Uoe;Jfd!(m>*P`_8PRmy*R zOVD)|SEdiW!hRnzG#toQ61H*qIf^o?665Tg4EI-=&l&-ia{^W{ZcDlqPM3o`kYEp$ zN^UrS{!t3i&!o9)(iDafAdAoll30~FH&pZ!DKB zY8^n-W@d39fkf9WHr7cwaY>Bm34S>=@+5$jujQA|)Km7`5g4%Ly((uBqDqu|muQvo z#RCNWU&-RGXsm2sACDl&aZ6K$u=|xmi z{{sWPPeLydd90_z{co-Zvdob_0yZi>U(oxx-iC!$zSg3%j&ir&99@~CCStc@ElEn{ zRt)BrfP*g4b|q(E<3qK z&6F1NUEa#mW6qeBGih7!rTOX=0E^?N49od(61EZ^8JVbW1~q@(bRcdnO)?qDMRDEe zJ4!mvcQ-vhN4Vh1WQ_!RM)-zJuNz$s7({P*L4A9a(NXuM{@#0s(Q12~RLtJT@1WCpJqk$b(mm^j7Jg zfcZhfW`rQ)Q5~^|fY4QnG3Y<|l1{ z3&#WGt)i5o!e_aQKLm@i^bAR9OC!1zt0J)Du$Et-uyv&Uv)sxh!~6}0k=)y(zsTTUugx)ZUqtfh;)M;7HUaQW}uW~Kw5|mUEQkLfgD!xFv!eqUyQhq zrtzy)a)3+S2E`*g;K~I7E=m=+xH*Cg=DP7mJ> zRPJ+QN4^f?5y(;ewdFgtAUEcaGrU32Q;%6|5%MgL7UDQ1$kM(?{YvFk0X_OmpSIJ#E&ozqwSn^B$*+ceZ z89lTHM~B_s`w1{^^q(U%EDW13B0Ux3PceBv6r;yZhQc``Pn@f}Yz|@7xqi~cBbiy% z&S`EuHgDW?@ELpQ-xIFs1ILceZz6>(OOIfa}fc5t;ks8~KL>)g2jwWY?v8K;SY- zSji3^%m4lH`LJ%~k!3bNKyedhz>~0s1TU-u{#3$X6KdQ{3vK4TIr4Q&)-kt9Fjm>Q zo313>ixE4>kMa*@j}UpwMM~`-BmL&-tm&vK(H*VXpWIpJG-Co7B?xT|gQQjUSS$vK zq2We_T+G9w{|xbnE?-#CwooC1DX|8r{mir_Zpe$+%hRZ2DS-XE>d%(t-H@nhpdl^x z$%dQOk>%s(LyW;R7wuc%OVj%JO=7Z3>G28YjNNCXJg|XQ?(>8M zrvH25mTIfm#a8?LxWcR-`s73;_z+jF%vSE%Nc6K2<1FcIAe_@+bit~0A}Q6j*}l;u zMCA4FC%$PIUY2^B!BzYsi6Vw>s<=itTs!@BXtm6q{Kwh9+OHYZ=6rhNf9?bs30#bP zYkyJ`z|w0yw|qgI}LU5hZeVLsS?9Z;jvh~ zAwxFAS4$^gNSsrUVzSsj zw=1iLtgq|F759@}mH9n$M4ZBUhLK!h)aBjZqI9)&hm?IaqMi!FIMl^ceqYemC!{5E z*WKUv>3FC5wKoAg>mDyvx=Q=~ij=;vEJD9gMq#_e-@A+m05W;gAM;ImL|@a{3#uQOJ}k7)vn4koE*o52@6@2{|rnH%Q-21%P4K= z)5W8%XnNPSYeZ{~!`xOLkDs8x`TlGFxRoCr&c`Wb|9gTgMrHoaj zN%8eQt9V3jiK)bDBhp;cVR=N_No#vL!CcjK$L?xBGZsx_axBnVXF@BSO2|y!JL2Y> zJPmdaLkdUruQrJ{t=Tw0uVl zvXEF)KBKs*Hk;5RH}IRNz{%Ce_P?>jy_Vv*Cj16cQYZVMXaDr#xSqfXz!ge_08!t} zqb8^~)1-zBa3Y3?x=FEAM?nxZ-mCgx<;Aiu=Et<(K}KPp9w^s5-1=^l4LmipnhbK$m4Hd z11vZat)R^I>-$+k+w4LcqFWEh7;r$W-lCAbS(Ave#KW?=5EG zE_nWf!vG=s8tI&HPRc%t==wGEh6U67zM{eF8KVN=MC{8ZBiKJkwxqAE;e>d+dS7Nq zNrS-rRb36`Cla4zbe6a^IXF%ffpSZ&rAFoIl}3r=#}#U=Y)o+P+bY-m454@s9K57 z(y^zG?c;2kPlkjGmtG?N5n0T-KuK|}O5V80#VHHDFgo|*7ymPh=cGBOIWHaS(K0&4 z{hUPTW$Q#=QnCUV!_F%1b&Kv(=p@@2=H#16ZI8Tq_?XC~8IUxND3~2V!$Q(yn(HQ; z6?;;LRYhKL6k8&KjS5x8W>s}2%UjVZVR{8gK(SepY=4YO1-FD8GIT%y=_@;_Omp4# zAyP%jW>R1$CBKuA@U8qOip;ar+2G+&{}ZQ;s^em z(bD{nqJMyz1s;|W^I~Fi&DSyGc54&G0or${{DtfW( zM&j&~6L&&v@*?uFn3>TO!q?aCEO8N|G%LuN1*q2GQzDN$4>kw`6x)%}M6Wci?ND4E z5e(1+x*ZA9nOQXY&m1ibi$|76k@Vq9J+{O1$!r<~!_f8An`0gkX%CB-Q)0n9Dfk`I zMRPF8BtYj`QDN8!5T!M*CB^3I6g?Fs3G-CS`BACyuHeoSryzb@beKnk^SIWqqF^c7 zzCj8vm}Zb$5#%cC&$-ZZ9|gI0s_}L+tugbLZWi?Mc;|81USPO%;pum+sk2J%1^VJN zw26)Fhf{%pdZASHB$pbvTbX=R&tGq?P)C1M$9$Lk`UcA>^(K7b8m>QJ-T7*}qpfF= zcB+ec_5Mxk=2sZT2{=`@_oPSA>D%d1wUoEg=Vh-gI^909e2ura8+XRn?X+|3d3 zygw_U*pT1}d}2k_GD!ShmCSq};_4~lDvd{;O{QNqY#9mY(z*Xj6!|pdoIXboKU;C) z_dWYa_{epGFDp@reXn2l-sK_~6-BdzUx=D)mq$1KZ|Jv*o&i}e9FpY!))_P?hB3)t zogiyiZy?#5Ij#>N@Yw^|g~baS5u3}c+Kn|AvC+eBJ9c4ox2`%zH34DFcMztkFq-Ik zaF!TX{HXW``amP=2n>vb5rju@VIRp`sAPj@x!*(!k%swKx+0zRu8gEPg$=hT801#{ z<(%fJXG}U3t57>Y%s1Bx(@VcDw&JEbJZ-NfLBG%w*>K{h%(GEdqcr;j8`z*h{q06Z zMnU`wl%Jx^8^!K)F>;e5J(zs|&Gxl;SU8jSLib!eRIZVH=WN@P1FOfGA}{o=Hb`!X zFJ3L9T|3vJ8zcCu#r6QaWB2zSpSX=6iOo!S!T+SX{XTYw_CJhcRVrkZ0l#8C!hRh$ z(B0M0EM%!zUGanP+wYa69XV*|#!4zK+q2E@N7m?^K4b6@-+K1ijrS#$7ygc@9(6V> zaNMh=fSj=fnpm&lMb-ym7#gLDHDvN(wQZ!;Ahb0?=Zh??I8+4iKF?uXie`}akmQQq z4jcMUEW92W#BSR$ef9oWl3zD{0A`=zTiTP$_G=VqFw3~i> z7Q&&rIdqH7(f3*GqLd>kW+B%Zm`PA2MoshFxHc%#QyQIo@m@*vl|Q_1S}i_J>2BY% zjPtzjQ*-JBg~jo5Uu@MvYD$)twrG_aDkKuKGeRD;4}4dMqs_C1@_OGp%M5l+-$t)K z0lU0r9)DZ}2!_6aPaQJOM@mPY%=8>A07R7TYNAiR)(m`a&Ve=}-x>hxN|^xf7h+AR zy9JbA-&XRx(*>Q%G~PJ32LJ63Hpq!vBG$^~_@w_DOS@ybe~pvV%n=;bj^e7_qZoi1 zvzih?bMc;ZiIbj=_V)7Gcp8Q>yl~M|yTSv9?EGU(R4h37s_?g)sb{@uHk42{^XVqz z?v~b%U)-OzVo@z#JHilmT&PHu-V?b#u*_f9yp()ZzCcmrdIYwT;NpCn8)HBqZblln z_WE(fuHiVDhnz|&FG%vGx(@>Q%#cl|TEL&;_ED zbJ5Df!7YVn^xpdYVhsQH1pCG%?|7_jffny_|LOZgZL?CqueR^K=-yI@xQyk7>~7KK z2Dr}UyndEYS8oaQHFv1pZ(^`VT2n0O`e5I`CqSB38Hmu?SUT}QXG*hCNIhxh&+6Z& zCA}SSNa-h5Z)|L$szvVI`AcFEmBgyN8+gdlCsfEhuznL||N0Vz?w1kgs`FaQ_sq2y=RDol|iJx@MjXrbc-N>66 zcV_Mi4S|gB{G$|e;`J}^L+_w=Ti(mIQ&QXD4A&zki+UZQw{u=}IoLg~gJo_Vq?s~<_Vr56-rh8fL`kCKTC}%~3nyUM3 z?Oc?t7ecxyhN{2?T5xo~7eU4uJ#XUt1PwALV+GNiMP~vj)t)509|O{cx-b)ZAG zb@GUtBUwYke8Q)17EUxIW%t9IzyVmYmg5M&rlx5>);pKR*JmD8mk3PqruB7UFQ-sG zjFY01Yy0U3#lvAk?5x^;*TulBH4^INbjM}6XndvlHG_wN!0*e~b8JUP``QWBT zD~L|*^%tcj)8nVzuWh&w2G9Q7uI>A~3>@BBZ&ItXT6U4tfV)1mhYJ$YK=l!8uO^2tP_cQfnE&MOD$aH1K4GiSi8Ui8jN_p|&WfqxEOH>Ney_CxtBp8zN z%++&pa-J1!{MS)?ON#joXv`WlGsj}LTo(!ECB0QkOx~8V9SzP`P*8JMqHDn^XI)hm z6zHZZR>Xzn3-asDp%hqTDR`3sNthXECTNg%N>4ddsn|J%gi~ceG&9^;j&D4EStP#O zEdAx>xk!b(Z#FS4%#HS2@ zN;xU9_V!TGr(yU8b0e#rmRa6+*ZtoUwCG@8-@-Iuxre_NUu)^N+F^aURt3>gBdJBv zBglVd-F1?6=z}5n#XIhpTZ=!R(&_*XOw6>_mMOhNs7i}2fkHV;9&fY?!lLO!x(HL!CXUZi*|*d z=DP6=g8ks6Y{!&wwBNGCAn9@IkNI`PxtOa zWmWsF7B#D5b~`0>;FZ6i3lPfJKRNBN8R!o?l}IMs%pa>Se~)FL3Jt$4Y?L_$LUV?+ zmDn2oU_xX%?XXod3(2ynmjEgIV3UHSH9?kQ)n^DZh!-<2MM~WLPUCvDuu0@tA9i$N zpurpKK1*Rk6yLWd08FECr7b0pGlf0zV*e(hlq0|}3E-pB&1d#IM}oCe0Q-pX=_-ch zhMOYz!kzly$L?HPBR$W4+ue)gzhM!D^1h`23Xb81V_#O{iA9m#=@Y)6g8DW58(k0; z!lL+0JDX&K`%RE<>B&FpB8#TZvt5-#5W0w4k?Y3}ukn`3DmNuI*uA{Dd|Dt(lg^fK zfn)BrtvePWJv;ZKHt`8+?PEdOF+vI;)<&Z{(>jP@?(#2)eX|xUP?7#V_K5T%VUJYt z@plnbE1zaR<4NCgF3p|*|6Rl!{VAg#dV1wsR~HtXX0&Mg_slVF&|||DJRulyV4a{v zn%9cKeRm=f=pO|QRa+!+D4}0$f_6C6$zV{Da)f0z3`PP3C>wkqqpS?!^c)vS8s2 zVN^ub;ysSzG~vguY`|B!-sWz0GgovFI9`udV4zL_? zW5V<-I&hAE6LUe!roQ0WJ7(ge^8lgd{M8h&Z&JeV+G_pcH;4Ow$^D#Iit*6q>^+0fwLe9pn2zZ1GAh~VbzEi@9G%1ef;<297 zyKf*fo#y3IYqy37etvLAo;U?jt7cY@i1emGeaR-D@Qwqw&D)~+N{sCixV(;QZHvDP z8|}nYpB*cyu8YmmoHv-8OD=xUv2wr%0pIuQXP%UI$!e?KkNB1(_1@*CiqWPo_uzJ? z_~U1zoU`0lO~bDE|1leyVYz9?-Sh>!Qw^4WwJQT*S5eb5P>byi(2#4Z)?7z2^4JWH z=0EiNpa^|yn6RX3&9iBm z%v0WLP%NM(rv*QTiJkgn6u`&>RNmdWc@EzP|x9!y%YfbhpQLP`ex1i#7A zH)9KIV0}+LGLS%@$Xo(YET&1VG zi5LITt5*M&yPHVgMrj1&iJGpzAMB^p5y}F^Pkkw8eoiyUts}MermJ%Z5SgC&D{Dg( z4^kSq&b~lf={y7OG{=cZ)>K34Sk^YEHIX&toNzi+$28M2Ql;yVtQrz{0-k-~=C&D( z`%b@wdC@PuAte0a401QSI-M86{t^SJ4^q$+wLTMpi(civW5xnsd*&u#wrR0AJ&!6| z-=W>8G56qA=j&ktE*wKGlrCenbkKVTlB!Y$`IQ=%lkX7!C@;J}U-Hpvt}|(5K|;&$ z9X~1{&N1X3qsI(Vr~@u`bwoZ$?&~2*us_++G>R#d*3N;QAe+1>IFev)DWs|_T6$T7 z32LKXJ!t98+fr8GnqvTeEMVirW%*VYuQN+Q)1M+XGd?X~tX)cNVN-e%&D~YU=e_Z# z<d=x3K;_7jy7a3L4tF|mN!=8PMtG#<6h7b)H++RCsS3Fp_y=>UmC%_+O?$8_j}xGiKh){Cdnx-8 zwHbCHa(1 z9v3A-8Jw%U{}N==?;|qy58(!3nN|BQs?e#FBS?-Irocs{=5idb2&2rKWe&$s(~Eth zT_&vA#uKekV(}&XKN8lS%rr7`-C5#>n{&GGfH%eDtYu^Mb8A|MN}n!v=9ayi@wE)_ z+LRrE3f(<$cE5ov*gRi&2 zM|ce!YM#0Nqu;tyVt@Q*qRCGI|8&#jQh1yKES<*1zUXHA;E&x$Y30mDXa7le;>#bR zVL_9kyQ+OIF+89pyzcJ|6l>FpQnx`nSoP8s>&P1A^Z0)0Dz@eHiql>z4nFP z0<pZ=|8cJU3=`XhYVmC*edX1 z<8y$Ua#S!;9*J1KzmjnvB>fAm#C+>Sxy^&sLqn4<))t+PhDIDqfBP^EKo5=Nvfi$8fe#nN zLtTGK0)xUGF7$?mj_1F4znl>@fI)Xo`S9}lGy5?%Y!vWtT63!lYAZDlGcDT}easrx z0mePCZdM)FSq8w?C=`b2NS^DAB+tBj7ZwT6V%nxxONEb#7-E#AeF&d0_8`ccRrU&~ z0iiUk>Pn`!s5g5+`^*@Cu*Z>x>p^Rm>E2a)Y1h1>WwWf%k4N-WU8+pDmpym$|BREk zw%Un;H)MCEfOOiKhaT*}G1J6DiPgG5H#D&}n;z=9JAJ<6G`C}WN}r(nWBYx%j0bif<3|nS2`O(9a>ea5G{vW;*<7ue-_6cna zzRBnuE*_xUVdp^Nb((7Icvkc!mP-knUYcE~0l2r>Hh)FFa6zI7q@Vd%OJuI`lExLr zx3K))!1KmiE^8k4;EfPAWC_5af~(Zi>X`CmgF8nvgjYDg@X2yajs;n6f>5f*L zd(PiZIK-a(2hf%3R^k3xPAuM%`)oOhGaqKGDR?~MW9&-p4tD{(4;_iV?wT;rOp|riZmdNT0yYDKA zT^5k4-xhi4k}WZKvvg0@*orj?#^0NN3IRi*jXPMq&ef)`nID2VwrwTb^2}yUSH(Jh zGD*dJWI`cWSr`PJ^6Rz914EYY?pG3SHr=S%HxT|bB-pPpwpoEqZc#T`gt z`>aLFv5sH`n! zKy-RDp7zpdrB&^i&epXVp#_azg}0bxL4o`7-rqXY^>J3Nuu@ZYPQ!&bXf=9;^s_@F zgT}Eyl_16KB(iDcn&3!suv|K)S15B$uZ}=Ub66@pKp5%F3k+z2R~|0mPT^$m$_#pi z&hXAThRzf4cW4?~SDlFTRgC;u5-Ar1Ni$M}8c;^9JQPl(soZh;3R^%Ro>0HX=imA} z`?T9>x_PCrK@^BTML_Nbvd$=_wN}d0F&NXk5VX?2<^(eAK3F z|7#2Fl2JysoXQ6pM}T2bjz)0!CH2YF`ZWf}Dl7a6i_BpAU*|o&mb+Uxxw#!_qcC5o zA@O4#7cM#eHZqP6!Ygm`vDA?0&UEV?zmkp8_n5*9YyI;48Z3n(D+}tP>%=G*SUAPx zQsN@Nkk8v-v|)K`$Rj8*ReHRj&M`>s0z!4U>Q$MWM%Nts^@Ol1tfD!sIqCXG!mQtQ znM^HXajA?ob=5WK?p^O=F`+725;IU}Z&WsQn9dlYqwk%+^~b)#^0DiYPk z1`|{b#r-tjN^Lb?nr|Rpzc%Zt`JY9+OZgB~z(Y~Wt~&pY)2J03OV0@A1-DW30roW1 z>65n@p%OJZgK`bKa{sxkeoa`1)>cCX2m`sZGU{NPunXI7%1spDm+_Uc!P2;NwIO%r zHOMsO0|EN@3p^%)t<1@lAQWlBT8mO=`!obg72K-dU2Mvi6~g*g7NAv3OL*hA91ni8 z9I06qen%fF>q&zJ>@Rlkk9C>NoSABR7_P3$NT!Zm2<%cyIz;knzO&lxbX!43l0WUH z**)q2$4icHt2~xy8d)t#Ev3a!ze~+od~Z{KLI% zs#S#AiP|b%cb0^w&FV(mk~MX`eZ`IKym!1+;)C#`VCyn_j;QusC(m{{i&jbpt2BKB zZ|C0J#}}lX=FkhbddBZ-A7f}YI~(ZUsO!Idjr9$~YI#@bySm9+gwP2=VH$H~s&ITZ z1mqXxuQ;cbL`~B=!m6S{xMf>cB!tzQx=T}8Gt#08Vo>_kG{>MYF%-l@zI&-yHiy1Q z)2qBjhfz5i3XPkm@PnEL4Xm`yu*e4HQ#!&^X~a#v-5~$M$WxHg$5*#(X0J)!f2{npd#OPe#lHIhg}UsNsX-y(&<|H~uoB$-+=KnmqB6fSAn!Od zJs6a1>k{((gLy?}&6f#F`%BV<_*bzBx*MH*UlQS8MRJz^v zWrrfJJzk^)cV|~u_1-cu?JQv|8I8SNB5cB~{v!5VV4{^3S$TKM3<40ms<7>1j0NwN z3o|gxGfymkrC^<}-Py{PL8Y=`bECdX>e~&aq{g_Fe93q$gVNmW(*CVuyu!~)_vMGKv`N}qM%q{)_pjbA!MN z38D9ybknHFi}AF{kc3?VzxxZiJxsnofPdN7u-4jw-?+cRn4~-o|Lux=`(1;-Cg%-> zb&X{^gfq5*q6(`)ZpU^5n6}S;^H0vFjzu`}@kKan3c3MFU!^8Q#TFqH7NxDk zFa-kqxnV8Xm70cxons?iMLM!_nRZt`B#cTLZ0)R|)FPD0*|m!ETF1DfkP{ItKjL3` zvNzRDXKC4-^6N^2q$~=rC7U0oQFI!<_r$5rN^twnN^VM>)BLa8J$}4bQ3l{0OWTVT zmjF)f>33KS=5HgP0<>Rn<>HK*=N&q0MoW?0g@aM)P3G(@!Opid)@~Z2mXWN|j~25h z>AU{%q}M3#7+#5!vzZ%0tmy*fy(Yu3?V@?tFfA56YqWQ?bi*oahS=a1UiC)ctxU`f zEI=at$-l`36ce_)a{{Pv zfi*A_0j72-?ER$Z&4(%}Og+pB0y>c`{m1HykJkR3vum}mkx`>~Eheh>6pZD6n9W#_ zTzm!ci~XrOICU`eQ#8hG9g2+0K55^ z?8;O_Zp89?V3INLMmJE3N~lJx&X?c$|2D=DeA=zAMw8Fbc@|158XPIqdHAK`92S6K9y3v-ym=Z1{#yT|4RALy4+E^?(UJBB(c zZmtxTcP!Jtt?00pmEzw$4CX|KNT8XY7)zG#?Z6te>0m=RKEXp?fhvfk?r3p4J){F@ zX7DvbU8TE6 zn9%QyV4J*|XY#<2gpuqMDXBH{ERvmbWM3fP-1H+Efi8x&&HL83e2bemym zKC~_RI^jrL@^#_)9Q|nmQEL}!e+_R`fjoe-e_DevYxZUmx6n1y`qRjO62~?rA@5Xt z>SjHQUp7$jXjd;Oy5;Pu#b`rutq~46~oeW>$Lb25Y4xLFmU#K zbgQJRAWTV3{0#*svX*L4^dvcb`DF{5mxA-TukkasK2#OeIQ)={S=8fs(YqM&#k;%Q zBMi8~lv=qX(F=3l?F;FV9ZvC|ZZX`i6`8NL#n#FpU_kXo|(4H7i1 zBM^vkioY8;VI42uu9y8gn<{v%fGm%56}Sf-Fveh==xnls({u~aS@B9ONEVOfm;dwN zCj_Zi$Q_2%E8j7{MwQ{9)e&WG!gRKs``PS&YOLnOk2q^Mvv)m{XVsC^E|&GuW95Ff zQxe0--RsF^c!ja=g%*ExoP-~oH|CLOUZN;5;ps-ca2?m3&GbkemB{v9v9Cv}nb)Rq z)CCg`5B=;uscRBxw+nC(#If5YOE}|r`+op?q+G?7+LO&in@rXZdFL>B{R!H9ZK1lh z;WwvIv52tmz0V%?N~n!S^Ua}O3DL$gr<67Jux0)qJ1aZCY9%y&yRTClZ&hbl)b{?N z3P50D2ssBTXib~8%1XMI0MM*7P0(n2U?bL2pkX1T*0ft4(Z=~fTQVyyCM6?s3?3j5venJCyP<%lCnfdqOB?*ckZRpOIosdh{+LLQNu>V(5E#|$jAqK0EmT5tUU)`= z6z^8Wm^HFnxipGuz~T;el|BR}4V|_wcp}_SB>J6i`rhJUX!*;}^eE=V-_=CuB|rG$ zz5ZSh)>Cu;ntL+ZGQZ>v4U(rn(7-$q?o66+7o>e{So2QDO|>3F*q09O!0P7Qj07ZW zX;wE7^5NRzw z)s9YvBQ?s36@Jy(l_}&W8uNtCR_Ali^Od)`i60XlH{{rTfyOy3_$_)hNLj~=Uq>iJ zT?qQnf-%4hw+6Sn_n0G6lT9Qo|5&eiPrUq^|LyKH_RhX2<098uS0#(b`-_QFnBLSY zCCM%xcaEq+XxZ)B%P_#iY zi;EGH^|6wqU3!83Q9i$Ae`S$0rAxO9O>oDwt7w~rsAlVttD2w zMz9{P-}L)X0Y~pRtG#~|R}dWXs}8)2n}}Z70y z&+-edP!SwaVnXl24(El1BXsvDDo6b9XBn71YAQB2esaME`vksJjk0ODcve{TpxmJBCnI@2e^8 z(_UZo?vM^7RG?OG=AK+gO|!JrZoEFs(!Zf#7si;_ym|^Q@m!3X{zHmm>3RFsVFXpU-y&-Xx2%HIlOB)51 zGIzL(k~qD-Uj0?zE-G%F+^mWi&p@=%`lrJ43k9iEKK6nGDdk+IR)KwKAe{?N3nUcsnDz63dyl;ktX#I|o_M2e|*v+^Z z`W5WJUmwWL+_ssT?zSA^Z z{Hg4ftA!pB(a#Cj`kkcTAbNF?ps6VSAm5hs@(!^&EYMvnpp2jkby$dO&=t97UsJww ztPX9#_)c4^&|)Eu!FXOx3YN+fD|X>&W9a?QS{b&@Al3(#TKkeB3!~RyMQ=@?BXbR8 z&~4STQ=LlBJC9sXSu|IJd@-_T4j{;_YecDsuK4RCku<7Iu35ic~nze@AABP z>bwc)olx#5@HjQuX1lE7(I>uZrbzCR{{S+R9V|W>1#B_Rp_ezW{pB5fk@N4BCwTGzil~Nkw%DWgY3%+eM2JpoB{5F z&k%Lb`&Dik8QL2{SU)(}*cM@RhFW(Lg~udKl!&G;M44^%u$}(_T+5ka>LFe|)!~S0 z!{wzpF^`xuEB-}e?BynFmAUy(S#$|jrJ==vqdXN}eRaVq$Vd@|#OO6#sjMT=Yh732 zmC{St@+(@J&fKd$T)fUqu8NkA{_c)I*KTPw@SlOAlAI8@50_(0lB+5wJq6LMjf|P0;kCuM z9qn76b1Rj3t}UO#8(Es>)qk6?P77e8&&(~Dm|5J&JwcqBuc2+-mmXLBZQJPcd81=D z_JGK%P4R*}dPA5CGF`)bBt#lwdGjbdht7_TL7? zu7;*lB{I1d*T|-C)@|0Q;C$(ZZ(IXBRCk*cQn&f@4z2vSj=fNpaJ<@GcCjFRJ;Ft; zBb;le@0nVQk^Tb&4!LEJ;e-?v#K4KzC-jntGQZ*!2m+@UIK2-ST{|{cYRdN`3dN5x z-<@g>JY)?`vI(YjCIoU#+27;M(oh<`o4Okm1#2*LOcWD5Qk=EOz?|MLP6SFLxg8d9 z2ol#4P8wD;cC6%L@D2{+0;@>E%!S%w^<-=W7&bot1@kwhKHQP&MkJa(Iw;MLvzY#5 zHdaAf=^r|$s>g$y_Pt8ASvln3(auUB&#C;y%vG+cNw1x;lF)(8$7Uae83H7Tb>Am* zcBff;&+U{$7LTC?JnOuWeIXO!_Z>bNcb)m|M*Aoe&3UVS7PhOGLUTl^)Fn2Uxb>N- zk9A!0%cedl<`hF~E*`xr_uWErs{tZr^DGOKcW+31F0u@K7LLd;`wuX?HGBq-fZN=j z`YXfs4KCi0RFr}p$#DL6?VN32$6HBxk!0fTQn%V!#9A9#|L!(xCX{)~AlkKG$b81> zSVBAv&Kj2*4*K;OWw=>XJ&$`AueS^Q?DIn6(jY?`)u*x9$Cso73!rpmONgBH2C@+_ zTv)R)DdNU1!bl8Q$mrLbc_Cdn-R^v9z8CzFJ<{*ffiT?i@}`-y#J``5z1-Tq*4g~{ ze$hEf1uU*s0nKgec8#cRoX+tF(@x~pEqiYJQ^%IIQSqukTM=S)z7l1HCj@wiA9YV@ zcy+`GzWy!#g|R|laR=Xxcye*LfIgXOov^tw2{LpHHcBa?rU_zB5%gh#e5RImtOymW zvmugfFoa)tye^~GAz9802|U89VUUNR@Kd03`IZsz$P;pBCLzu-e9H}W7+9@ebULcF z_p2C~TwA7Qrl;Fk>Dw8STr}BxDs3?k1!i?(FJx}>IPKFM-ntne>UB+{JHt~Els{5s zk80K^+R&^)FbQT@4mC@F;@*h>^s2a&Ix4#lbWRok#83nuw8iU*#X`~FK1&p!(JKRf zDejfs-yp_$nCtPDRAgrRd#{fckDV@FzDV2EAqID?&qQjoL7vzTR{fataqpDP2U?)j zu0@2sr_)tmIHYc;`-s~rlV;KZx$`bEt`PxxSFN?Kl5boEk!JYfpIk|g>FW8!fE0F3 za^BhZ>2>_l0Nn?#ls8N>bgt5GDXx>++4^x|w%!gDS&7SYExBeP4kbGGxp`b>B*a1i zM2Z4gG|f!t<=AbE->sNrck)IZ+IM$vnY^!WC+i5aexxzpg7|va%jJkFb>E82(;#w6-b$3F^zc5Qgnd$Y zaMxbKFPA#v4orSb^SiT*DV<>pSU+g)t_-d3KyjVJo_A>T!w*7u1dvAhBto@uvR*HR_M`v|<0T~j34$4|*Zkpf2-Y=*RU>m01opa_Ur z+OaX~b)+Q`=Lv+QJ=o(joTs;Z%E#{8#DyWn^NG1FII4p~c?*z4CY&h?3dCt0;R(8G znh)X&)sWIN{(CC|`;IbHy()UO^%JaZO{36N+)O9Znm6@C{pSmzV$l^`m13l!1l1Gh z7T_!LLr8~L;~KkbfO*p9eo(~--+zF8K^eKaDoTHw+Cz8?SVd8;^BIW=*T4SkC+B^% znxwGO^rKq!ntue+!NaB#{0T6MUR&bvR(-d5)u)m%;t?*#ra)8s(Fk?h*A2<1E!D4@*L1wA9`%@~(`A z&z&-$f7STH;>Rl{RK48tu^~qpqD@%mrViKVn%ep@28Su%L&gQz5YTs9&JQLJ_v7Gv zl6v{(A>-~#^SBRN-h)TR0CH@l+ixpzmt}}{vfc^fgYOzn1+vOmOaoW=9Ow*IXms^? z_~>Z;mH;w;sd#T5>U-L~GPg$r+Y&y6wc-vRAkj+=c?rE~Q3#-G(_b0-LE+kIQujP` zfoezSwxgT>87-@I#R=8=C%{89txeL0(5adlGC0T|1P*dh)+pn)8KH4?)Blae)qEZ* z{d%=9%4QQIcf;hha+S%wFE&l9Ne$zACVA+pPHojq#ZTJ zBn+?1TlJNnVo8%MWl4H6B>orGT0)=}>=`6`islxU?yws*{aN+c8 z^(*mT9P&kPN}Laj#)bXe$SCt>fy?F)4jG@ll?1f?sJkbuw(~e#RAl<)`^WR6^3z*6 z$Co6T{sYAG{Hyap6f^u)KPayZyPg)G_&5Am%jtKhy>K0ZuW0|+btHfJbq6_;T^Rq#b`i`)SoblxtzyW=p;o zp1}MDRNmCIoGs=!=yDD8H|6m$bn3d2lVtDq1O=xRj|Q(&>h@yGJT%J ze|HR@TRd{@m@%?O9o-F|g1}D|16&A44Z*5Wy<0w zI^JI?k0n4&W~$OU+(UCgEki(`G@?)0Cr>70s!qC29?d_(t}$vjJmJT3+spZov5pX? z%*Qt{73WIhh`TamazBEe8#QStXI1C?$)gSkug_E9 z2aV}BF8O);Z#^kgsrg*2XfAt0MQS38f9F+)=z@~2?^3>|doQ(Aii`K1fF(es%W!bH z`Sr~B{Xy0o(4t6Z7mw&26WWozYD!5i<_3eF_wZi->jwwHFO>%FSkTPV^Fo{U<7c~F zeBN*UWxvdokeVeK&)=cx*3)w{>RUilt@|gk3X4$qr^z%CFphgb%X}%*T8@zN&m^`DJYVvm|qeMpIDl}Idvi@ zbAvZa2YPVFY#?aQnvX-?Y-tagS#yQf#$gcIL$b4f?7KulNh!^(;9=E<(o+SscKHH7 z+?Y(hXvmldt>Ke#-^H&K@6E!ZMk#*_jno7U_!l_B6}1@;>lZ>uA#|GutZq8(J+Xlk zC=loFxVLqpOrU8l8bRnQ=;a4=RY)y;+&DaN1P8&f%SYnJ9=3S)pzE%U4p0IAaIre4 z66%G}H-^uHfe?cRZDY>zy(we4G-N`@6#DL-W+gAppftOW<{|4+T9&zb5Sf^iTH!1h z9*NG^=J`_8UQoa|nIwu8<5UlvtmwWLDa*%jcN4wN6ZwR$h=@>9Z}=vCHdO9q}kEm{pT77hChjtBc8&+NHhyAHc<=>0{~S0S5d_$H}Gmib&O#L3Do1 zj%oP=CtYU?)3}I)KMFz0v$gwABy(qlST316cg=aYeX0O}qGMZwoJRr!2(8XIp97VU zD!L5T$7SZ(D8`-cL9@JWWzs%UzabW#%-kuH@l~RVB{mxksGqu=Le!aze4CVJZ@Ozd zL}~HyN2&?CjeG#Q#It|?4=_pzH~Fq6Q@~P^Fu|F~;<;GB7VcHpPZ|5k5U%0=5(AfF zYUTD9{|wP?yz=9x2CMnfXa!XDZ9&#_O_B)UPrBA(BG9diWYv~3;9;$hWiFZ6Ms)WKlu+ z#4^5a&IJs|9j?si#^X_Ij1>yk;xAV-3+SlL^jdXiD}RJ?s5<_=_&h#U!xh z68EE6)1|AE5uG2t8T_!i$Y=RV{d_k0t9^l@y1bTB$MfU(|7^6GB9UOcuW_0iz|~h*DO^4#3I7j}@J(gN<{o}%t5`6P z(v_JxK~c$(k@V+vHq~b^ncyTbP6hokKFf^;C>c)K#_k8dk^W09@YV3s@NE>$GC-kh zZW%6hN%@D?j}J1hN81B*v}g{MqVq+s2N-SRCghP=RGKfYwr-^aN%ulHD%8P-J-}q5qF8yy z^IaQqw}W2U8{jcsuWqs-zI=yLPurV9=~XN2=mL?ln6w$vky?|H8oYNGmSM~z-%ZjW zxmp$sS6l1nl=5vw--Iur0t)7t*g066UG)Mb5UiPIhsct%pGyhEbfgN_*K-0u8h3Ijx@Wk-(a_Si1HNt zvv1H7W>R%tt~%J*(^X+;|J*uPt~qPv=EJ`~MP{u~jgx=d3ubRU``1C9Q8!7d5+=o) zpJQ##@anqjFJ)C7M^r0-ZS4JA?WNhK3~5gveP+LIC2p_iUm2Cj+$HB4Vl2|A)F70U z$S-M=#)QGwNn0vOos4C0w!Jc%Fp0N=ia&y~28TN=7hz_@?8x=h3|&pczzv9m%IChoHK z3%9S|C;9bXsJv~m#;0irCrUhRPUBJ35lW@dN~l~F+@qNT@msu>~8T$?6Ek87i# zWbTIpzft{bgvfXop{9XrmR&Mml^S{cklUujQG<@NaH5b*;~E9!QJ`xxaaB@I=0>E<3v8#Q}e^F?^r{+gTM|> zTdqZB0qSS#dZng8Y7u!zsV(1K7~GxFr(>gL4vY9h$MF3qdcU?HyHYK-`u`OgH#!YN zJ~N)E%>n{Rd1%-P__^MLx~0(@`RDe_`gt1Xi*Bd{1eYnE6c#=uQt&h~D4q3jzDPj! z?nT5dv(oO2`mwGn(a*F`^lnIQCzsqBLj|& z>mwhnvP-J}u_uNzZX1Pt;m%>&8})7~O!!`Q($O0k5$5%3o~^?tXhRD$ky6RP-TTVN z0L8(&QIiHeY`hrqm;uZpK`@3$O!(ES3#|OGdwsyI>6@Yc%cSwp^-HFrRHZt`B5Nar zup%k5UX6jXe+nx8yCpIOrxr)~Sx$dH4a6ibDsUdD45{DbF%yVzeJ`hQk?N~oJh)2* zjFnk=#hUP>94K)U^f6IcaRcgpQxGzb4J*^_3pPm*ckQtpdoc|+FYL0)OYK{mwazKx4>P1plxH{MFn*9msbpgsAl`%RGtjc#?8m2qSoze8#|+K+?}r%wmF%oG zcsy!oh1XMWI_}K*HFnwgE7fCRN9BC7vMrJ-NEWZr8Wi!p_(4|H7amjbj_C$2!$glo zdv^IzoU8UCaNzds;&8q^^yimegywfuj^JsHVb36o%&tDWdU>ln6tG`;#oAridp#`f zp4lF)kQB4L{VSKgJSCro5)b0&A}z6C(s)sESW1~JNG8Zi1)p5p9zs*ZVGcFv(u>bp zhvCmdd~Gf27Hmx9CzdVo5V2gF2zoIN!9MRA=Wb2L9s7sE={yFBCIH7l?xxmF(=All zv@{P85c^XRIzSh}i7`YIL_e4gj&NkNw~CS=>%kgFD%5M2#Wr(`86u>d$WBI8UfLZW z2^w~cDVvHBM+5D!FVIZsxp+MI?W8n@cH;r%>5I>I^5pwW+`9uqC!Hq>7!TdRli!50 z3iF0Ta#bv@YutXq$q}2@?HiKZ$IsX^uGn&ldO4+6XZ%R1RhU+{jSq^6;MEEJ8|HL6 zf90+c#aT8=Bu1aquSrO%SJ+MBVIj2O{@pm4gSdPv4^ZvX%Uz7C*wU+MuC`kwv<$wi zYv*X|ek?M{982LV=2K4+cKtPja`Dbu_=nuRu_Sg!L7lH{8(ZG`M)-@yF6{oNd&w*> zzPLO)(F@4(=dXU-teVK^b;~N*YRhHUWSr3FY*c6-HfU#qU zGZ*Uo zi^Nnn31*mme8F!jnimx!;%6z-wkFu-+o$oy#pia8fAE>(l#eT{_`%J&136q(_Af2) zO1-QsWDsQBYxk_0!bg{D97DFz`|%V_g%%MO*f2b7Tam9G{Hu<%h#-Xq`JTu)(0f<) zikb}%Fu$l)R!FKq6QvT^eueG?`zR1b>zH1ivqI1fZlvtfV>OQ?h!c|9N_Ch^^JsRe zNhf@(MyWZ)|Ebn{9=2sfui#_&>YfM7T&jG9&)ompbikr%A3(BtAAA8;&rRuzm~XNb!)aT=oR=Hl84AfmZk4E z6DpqUov>wWJ{I^6=M%Dddzmetu>#k|AszfHPe#k0&6>P5$1aIr4~^}*`Ok@_t~{$1 z^19pGltrb`I+NSj&2u7JgK(qIXg8b}!(ySqq|-sFV{{kMlEh25tD4!o`{Dca~rqZX{-Y4X$2%v%Tg%Q z3YyDCi{mX;p}Tr%4tp$lC;6>vUgdocVa~)SUtFv2^8FxcaPr9V9LEeW z+v+C>?|o3EuM4vd>&&w0)9wYmN|3J-eZQnY*5laCFns2k5z$Ix{H^Mm$jpV=s<>1; z*hffAhhz|JVNF`J7}5K-@ud4b-4*X}rU#CpVJ;M6Bte7EkHXTRAaEj#GTzLSLtk>o zYE@2txYi&HQ2<*-kmyMCG}KrAPZ?Qc54uARwIfw3=kk}hiczgk!Rl-6eB7)lqe&HpMRXhY!hP<%0Xr4;Y3 z+v8L~SDm37vT({hBscvmij73)IKOlu%;8m&k9T^^O8=B<6*#*3^FI3v%Yow)T^6lalPW+M0Y|YEWEV*@zw~4N55P4Y$rM@%{$aPMT(1Zv)h&x0 z#t(63LKkmZeZF$PbM6WJn#i$?`)Ph5^pO!;Fv*EI|5{k%d(}sw4LrMgYz{RSwHOHG ze@5Q`0+O8WSO-3o>rVa?JiQ6)E#2uSac5UyBKN}}tpRHYJ|+%U+u>zusxmHC;Cs8LW`xRmzs={0k?wsx+$>@SANr-O=H&N z5KF2ni@QD$!!bmY>9T2XebEBB{FL@FruVYfcPu4O53ch%+z2FbB(i6_qb|%H#!;M8 zC9=*5)pgiBxFHG!n^Z{_)J@|X3}Iyq5^sgPzrOsGJ((AgR}wf#OAtdx@Lbdn;CE*D53WvS|6QXCeD>4I6~ebt%10X>I;~tQtGpWkBb_E0 zK@gy;^izmVRg)>}Yq$`;JuHBf6@~hf z%Y7f(PkVcIJ_oyV`XVzY!7rPN%zq_znUrqn{cJyyfCpW6KeGyr{nw{DNtF`qy!6_C z)9nx&{kPQL2h_=_={ujTCw8w@4gST~V_VqW;J#Ss2?E5e9bWcEv{}!4;y5PGvwsY{P9xEJ3v4S$D5Hv`vVNvGY1CCS2v}eb!DTle$^xU z&L(n;k{mDCO8d;6XZpK)OBAk0GOIkHsIC71y!*&+=zmaR^Z82aNG=25Z31VB9wNDO z{#Z+f-LqPtEOdNWW!iNSXYgjCbes$7eruBY8S-?ye(0@ec;acwg zM)UNGXUX?n9y<_yvY9gC@Rd3&&uoW~_SK-@RU~KWf&&*VN7=>;OeXM|=&0Aucz@NO z&Y4}H(COx-^sr3^ce9_tXpXAg6ZH$PRk>O&e-LvQVV{X`uO?@?WDj?t4n^kqs-8%7 zo;FC7sl4f&U6Q(FpYW5L$gy&o0LBdotYd(Ni=?n-n`&M5WqY_c5@Vb{T4nPeK=TN^ zu%M-Xq^m<8F;;3xC}ZXa_niuw)3lI#sG~F|&#UInm5KuHP`F)|%Mpl%K&4b00oCb_ zMe04X-D%&3w`O9cAfTFKh%T5y^Q8&6FbTj%?W#qEVh)^_hqES1i3)Foth5Pcd}eb8 zJP;;R2FnyCJWj?Au!-`(C#-eEoA^RL(Q11ec4AqB06$zTDxCTBNP0SJkMWbC>W zWU-YA77b~aS1Jv^p0LYw4>xs&LcEYne=J1v@xqA*ArY#f9mUjevf*)182q`NQAo$b5dNe)hGLRSjL0) zvW0!0AkPk*m5t?IqRw|u5j|AGzW6)P3ClY>SA2jvU}-6Tl8LPB5sh=^y{VQ_FjVtR zF{Y>odha0IbtaMBTT)#(U+MWq-ss{z!g!H`hRZAV+(FhY42cSglG4kte~Z{Id0e~` zGTAHJhD2gmf}boBa`&JC?;pO#xMCpAaec1xQTS0aXKsv|MOR?r3j+Q50LR<+2w}yR zMRYgk7C0;|$|~)P7A9?(b}!PKfX4$5mxtU)xRh$TFk0}plv6IOLBCpDoU^Q97*^lD z_`@j+I;3du03~&VDyUm*hbwNLmj1sko>II+Q4~O8NZXpZ2w8lyKR5|;O${ApS5EK7 zjWsA?Kca4ld$n;v3_fMG#!0Dt%SWg?I`PY;M!?n6w_or-8nc8m)s(G&@1s0xwHq<$ zKH-n9b4j$)JP>mjXVZ26cNPe`7RGw^tzt)}(1yB9L8`0)H#C{uS3AK*i>+^WE07Ai zgNyOXna5y^T>32iWy+i|AL#x4$0tJTkqnDVe+SgAX%;hU8|%l%(vDx=} zlV!raVAXYda21RUQ@03E%WU5I4m`7t?d0XJ`PO22>=HQz(64>&p+ArAi&vJo5)~9y zNa!wM7o1U!u5#Y??cJSx+i#HH>D%VyVylyQYMJwph)6b^9Q55RTfM1t1g3IELFwS$ zA;09}1(~dv|50?7VNJhn7#`h7H%N^b%_IhhbR*p%-6Ak4MI;BKq}dSZ*yv^hRATf1 zV=Br-m@pI-MMO~1|NDDC?l}0igJ;ik-`91Xb?aZb9WM`kqe3=UPp|CULI*yy#uIAd z3lgPv#(6A4FZ1mDdD2Of`UQD>Q&XE37uimF4IVZpg&ru7MxbBZ!tk zP3Tx+cs|P?X)<_7BN;t=GwNo58b3jBHOSpBSuo!d&p*{4dEYtX5qNnO%hz{wA|$AD zh5fGj?a`}|=$5yyM{drT4#$ZD=bceiW-le^)Aq`=xNCw+_B{m!5x&X7p*3)(is?^L zIdQi<+V>Nv1AOD73vy0mv9GNf)sD^x-G9%|jTA48%4ozL`r3iAiv43Uo6NT&x}@H& zvkp}dx?GJ|t2T}gM4Wb+L71H@Wc^{)Rp1(V4{E`_{*{}M|2Amj7a$O>D1hX?_+NsIYD5GuaHjdtw zMSbu@@yh8}6`FL=>cpwem`|_X&gEu!0-NTu1ce=r7ZMaL!E4rdhF7RQ4zD7+iJ^Du zL-dU)^8wRSu^v2~YHp5VHAM9(NVl^}^$T7?%qJ8whX2n4=_mI~VHC=W!c6BwlM*jc zVnTh;v-W=@{Nbrf{BP8aDXSh0A#5{G<$TTBTZJr|zkjYA@lw)Y{KS{O;ntUCE@=?Z zAOk}L0~}H=oNH0h?fb#_|3IL7g+FIYN_>`acY8?<-Yp6wobVkzpXvHdFTa+jhn1=wEn&Hd z;j26Nc;No$`?;~!kA-)_mM`wHGi9i08gwy8e6PMIL!%q>kvzBtGpOP!JAW7}q<&4+ zN;$43(yLLjv9bEQh|qoeU{|ecRLR45fk4YI2pnYYjoG~PLN>ym!X_2|r)uG|$^*gn zaI0>&lrKExuT5#z$I#ZHmBNf&>Lsr-=#;fACK7jPp1C?TS1)f!tVQl}yeCi2Zm=FD zAaf!b-#pN;sC=RK!sE~z!tGpeAf{>SSDDN*;uGB)YMQjNfa3r3taV)jSH!F=6=~La`C6h_INvM+GPycejw4TGH-g=0-wqC3sRdaUq&_DTe z835J2_I=S|0eSWnddL|L-A6^)7WJuT8Uoc^RQZq$^PwxyHw9>XRG>J5{JvWo^l(k5-Q{nNskzVeHu%9B71oLc_u0Jv=8Rbh4*Zx zYOeRxRpFM=S2>21-^caBw(|?hCZf>DA}cTZWAU0fnv819^9S%t;&YKvTi$mMd6nrU z8Wlu6l|PX91O!*;Cttjp038FQ2s`zcfDZdG)^U(n=(~*gx-#5NKKNK2mL+e}x8LX7;R*P)yr zbvVjgS8WDxDze)Ju6BPlglU~p4eY!;BdUCQ-**kG{#w`Y4qFx~)cg9cl6;uEkL%%# z&CxAcFMK|JmlXZOKCiToO8J5q4Ob4^W^5mo5|hx9$dPz)cbKPJ%^03lsEN^EENbeL77K!+e`gZ=(9-_Qv(clo*1n4$S1< zKe?^i>^?_66M{xK&u~*|_#3&RM#K7MM4)9JIn)p9o6ujrhs9)`EzY>3OS7OumKMR# zt(2{!vNsqvB(gE4QK&2BErWx=__e|AN%}qIepi@X+c6bV@JTF)Li^RuqqMRI>gnO96YkCEdP`nScDlffV%qNU4i2Nio_kP5s~eJbMvG1N z6LP-14*>lzH-cZ9&!44ZeHq2MJJ_4k|AT``dp2P8Wk+*_m2N2j1+E+`ll^s zg!=0!#&i{CQ(_suV3txE#O47$af3p0wV3VGXt6QFsHnTM(!Ko$B5r@J3FkV(s_E<+ zmscyCT|?nY8g+xN(`hp@3B7K@z|1_&+OrgFjar|QpMQ^KNpL-f*kaY8$Zw@GP(~Bm z8i;F{{0d{5@2QSl$1FH3rL?os8Y8cpEpGiV9(*+fypP`GFvo;62pXCIt>@>4yD|@8 zgO$gPzDz%IY?<$Y|%^)q_hfwU@5Yy>EY#5Qe$rd3h&hE%1HOr{gF;}y9E z(Vwj*kHqS3T#VcHiXLM%u)jPrSo(x2^;)7jL9I97x7i-%U2NdYv=Zy~sS7y2`W5Xj z0@SGt-R-vp7h-T9bz5(U7de>k=?yF2Y;p*Vn=17ji2(kI-rm1%ddrh2tLi)I>QO?tY%e(JVl;vGOmm_xPZ4ZN^7;}eej%ewy7uf#o z@uE;PwO@IqY4?PKiv42!uJQ-5T5?F*)x^+>c<^jOD{3@`R7$^e<#GD-9n);T zC3~729yrbas#L5@Adb}v8{Dd7<>yg~plfj{oEBh{Bzx9X84!@3qnK6IHrFacgY`K` zx>;1!qj2>iiYw_q&^?q&GHO-PErjS>AFc^EG;GDH2AQanLccEu?>Oe<<9nzux!iG3%Doc%5!?#<+L+&^bjts4jn$yDm|J|y> zVGUYzyeI?fbsjjgrHdJ0x}e^%0syyyi5^U#cDT+}&9g~gTM_zg3e54X4&JJ$(jQ9& zbH-NiU#KEY*_szL^`#L!-3fgfxf{<+qwQFlZrsHLzM<%U1KVlm`6+%?zXX>8Mg?(0 zHbL;LFDDmOGh6WvSs@usC{f5C3U`MjTe{!8_jG08^e#3JqF_w;QKPOML$l)a(+Hu$ zU3*BI;rH6`8kc}MV_)k8wjnSEV!-zCt zsz5RJf9G6sezPURw}4>-+loKnDaq1%T5?E}+Tt`XtXbdq`oM3wB60`PW|IkVO}@fo zM*;{+Sf!Y=P|DpY$)tD)-xy&eoOc(1YvbyG>YBw@e1e7y&|iQdT8U)f_n%0@`~nUS z*JCBo6o$p4D-*Q4HDLWn(^zO`)a-W zoj+BiJ9|HQ&@I)|J4vF*fwtSsTV6KY^LjC4(lnq^zp=*ScK|8mA;)WGKG!79cwh2j zw}qR@<9sgxN$U>Fo(jH!k=3#nRE<9`e|d_f@6a+ut#Q2afDB9iylH0S_bgyWq#$sL zc(f`R7NL}OfkMOeob7-;A2bS4dDbcYT=(%Gf`GZv#CU!sBzIf4QmJcRiXq{ZhWXfQ zNQYZ=2S-Xke`K7+VleYzE1B^#E@)4X4(_6($YC=rBASKtUC?ab*O0~JDz3|(Fw_g8 zcB1T;@d>UJ<+;?dhHup)9uQl=_30QKWDH~pW#lz^cZy`G65-qCg>j^A-x8pe08ej8 zSe&`tkh?-S_c}TeJ|FZbux%TQQncC2#;30>X+oG$zClY#CF<#r9) z5uB0ZuC>TctR2~TiL#FNcRL72wy{id|Q|oFDUw& zmzqAKj~@S}o7RMkz7+Td_eY(Qt=^3E3jUnuUKiw@Gu+R|z^a_6+MfVdFzB|+qC9q* zEy45#e3X)-w=Wz&CR+{k3Q;(NHzjIwH2z#6U=k)iC;x3U!La(>g>vlulzzPL1O_v< zMLy<7O|u0Clq?}~rj=i+2K0SgtX^k)f1AOd`Rz$<6()6qFZ(AMKUz2cC$tfpr2pEi zj#>EOzqV>uWfgheAg>84_IyLr2Pn|~yjmzf`3GDgu+o~G>;2)+B0F1)y{>frh~3cm%3bA6*%_>@;r zb?<7Zm4cxSF&V9hjYWDjh!%;(!jZ!Nff#sA@g+9eB*h2KZJ!8s4h5Oucxk|c188Q7 zGz4t#;a!jbjTwn0l4gYgSBdzVJdbnrgA>4mR zGk>>V{Df7Yi@#-|+r%$7S|(GsGK+P^mJW`ViqWe3Q{c1|K_8@_^7311;7z2H|ImB& z?Y|zw_lYXzJ5zwe-RYO&bnL}JO7Y6gm)}k~$}oa~0q$#BElYrRW$<+H)ikIVeXfXI{!^d+T*Q_`TxR>D1I>d+;2azu=VdW*%N^f} z%x8ZN9qEkOk{;eoVQHPQHBo1wasBp}XEQz~^jxj7#Qh_thD_gZD zJF%+5#$(8tvwZnCMlXZikoGJkxJn&Gob$Q)fxGH9bywqw(P#%hLGKT%w48v zsq&Y$ujH&Lt*z9u5$k>3@N?dftRA047VI5sXDB&Jv_Z=dR-~U3k~U))j9);fG*B&x zCHr_SUTy-#me@y*wXM+xJc;l5uLxMA-7kUo{0Dk12<2Df4qd4OZlLAu9SgW6Vh$M) z722YMNoQbt;~G{h$=y%=RuQ?|#JvMbX){SH_YJkJL9--;!gthf*N!bPkL9~Xtt#$z z;ok6DJ?#XNCPnD+YUct4xN?xZRC%4RtQKQ`BXbPb!+4+0*jhuBPumv}y!yA1EMV;;_JEBf_+) z^ZVr~u3st-o)^Js9UVW4F@=bb4cppAG)gsEKXW3^wgMmS;r;OL7nZN0A4KxU+ti;b(U(4?dei%W&3Xos zs)$0k7dSPAOB!Qw9CoOh)L2tkaowSdjsW+pekFn6>fhdGeGTtfMce4^8b^VV!>8cW z0$-$n(}u3u(6T6qvo!=Vxn2tp<}80Th=#_i`r?I`aBqyu_x3eNk9Ktgp`;p0m@5(> zBS*n%kgx{MkPtjP-(i+C8Rn;6XH#cWTDP911c2eN=hiV~JZhHk2t1Sa;eG`gj!st9 zWNgA-Ab(%rdIjC75nr{isS$={{?6pMi=CTZ#53#bKEJ?jhvwLO>fBDM(=IO{DG1)< z=3?*An9nf2ZAf9U86kTYd_QtNEk3Im>FgGh0oz6#(%JZxALfPX^RFMXWIlWCLrxwv zi4Zd%b{4u45~EySZAusjP*DAF%)ik1X5LX|o->TSi*=d3TNq^iPwIe`D(Hkna@V?O3 zoNYNwvpy+Y>pax>d(XV5d_!SON8EE)yW#WCisKq2PjLVqA2}6!K&2(8ZCt z=uAGBu*>``+zz~cyD?j$ieJm zayDH`a)T}zA(#D?7+TbJJC|nIttC32bvRu9h(G$^^4u7`okXx%{IsB5%tWF>S2g1h zn^($cqSUJ1$KhfSq%}XzE&&aNO@iWQ(ji1Y7u{>iNX`lf;~D>f>QPYH4^en zR?E=tYB(0sW{t(W5m-=yQu)7%WbofhkA#oBh-WMWa4;N-Jc_GZR5mDj)64yU&gZgk zo7uL$-N!84MS_(^;@pSKhx{#)z1xh63~D7ZVFNy6otYWqD|@-E@!9(40FE9GZ=Zh_AnFs+9j;_pjU!8oS2V#VlnI zzgp(c#sM?eN7)!<)$e0i+Zl$giBqM$Uz?`H_GNjda<{)yq&LRHZ43qeZ7biIhD4H^ zX}(?kIhfVcndd+@5C8HNZA5FKd1;KGNP;a7bse_zWsNld_(cB6tsl#`cR&+YBX4)- zkeLRq{WK}1#xg zbc$ljG+D}r^&(3(FX9=v&tNq>#_6@JFrNP zl|Na5C1Eo51?ro+05KrTF*RK|j0F#?fbWD-^=nau;58X}p(@CpSp^dBf+~+ni=_|W zApo(I<^8ptD{5FgE)^j^TLQMSrN&03Ii*>pB27|?= z_O$ZU($H1&L!RyqC$X$i(X;`_;c!`tk7?Pgicu;QB`*GJAvY;4|ADX@&)7cYI}7&z z2SUT|-=(sJT3+b;H`5sUO$)(LkQttJ=+r+klyQUmMV-EAJm=5lJhcm?*{{XD+zBV<;~(xdBlkz$uB6;|3F8}q2V5dbKG@J0Xo(1DB3^n=O*=W zWo|3S-Q~V~PD#@%W}7Si{O>raRA>9*LC|@^{xnqx^m?s$d#|R%AtvqTV3qc}@WK-w zQPo6KwmUP(#1V_0_gvfbX_b?>gBD?K?b-!1w)q@|$$F=~N~avjNBw_oqb%NNmmZe; z=-VY!_k6#La@4TA{c4nAn!3)!jEv2j;sSZUen#1*Di{mMrGU;i5uDe&M z0(wM)H+E5sYo1my!S%VN21+tkJJ`GPp4n4DvvV8*{U3-%CIk!^<>MC@*RLT$_ z>;Votmdn;C%^f^e13ZT(zUR&VlS6u~DoVl~rj_piD}A~BS(KK%W@^Pjnsd%&@tMyq z(JlA$1+-b!P=)sV!#Odo5yxzP{DQg?GRGcw)EFO_-ttrLSnrp0+5&fLgVv7`JKI#+&F5Fb=O zzco%_%=KjNn)zJ(in*XIM_T!lCzJfIO!k-2YeoNokR|nW-2m_Ove$S>UZGX_Lyf4e zBh+)-B6F1s>_cjQg#2m#!RiB@eESXjO=yv8u(iacz8~_90O@}jSwKoc{S0`<@ zho_Q`m<08@ccZ*JmAt-y`%}8`#?956qtXX^`JV*zBz6$fiIgCb@8!SSqcusk_T0_0 znuy(xQ2J>Wqme>YcX?Sl6f3Dwx8`yg8+nexL2M6r{<&}^{`Cv{`z3yWk@xKA%1$-X z*sG7rX>>eL+zhDG{{a>tnjL$DUtz7Wq7|h31Z&KKWB8%l5XwSAmXfAiXW?f}s1kuwLaHMByKEMQs&BK`e1#TYlY8w*z?Anvk@xWIGqw##As`U| zUN4c-fhI(Gz~e6wrGA2&2kAcC9o8A*0K+jE7Uj9nOx_Z_Edy>flQ6*Nbrq8@U%p*Q zoA<^k>?Q0e=nJ2ZqxjAg&yV`oiBuLCeLFqH{g-UJe>E%YiTTLd`x&FZO&kckA>H2@ zl1lRzAaqRw*Oh)LsX2b-R4gqBAYdmaM*K#H*eGmH)7xm+r;wAB_T(Qs=|tcZEhDLp z?2+#07VZ$3_a|PXsqNS=8FGukZxdI zf8`j3*iaH%wGk;{-giley1Nho@nEo5x7%<%h3+vf9a{8W4PW4D*hquV2>wtNRyM{BiiNWz<3$Z<|`_=&slU@sB zXo|a%Mw$KXi+^o$6<*v`-`1Im6?A)=Vr(=9+D@&VPTG+QnRey1%;NPo*^;8p@6#OX z1a@mgk0sm}SKUgh7F&Lj_4H7-#Dn83tj4MH0*hH&wC>NjCqaJvfFs4;j~kej$Frgp zlNos46#fweFz;m}q>S@~NBewmC&fAU7XUcw(aC_VAO1uwK=ct19vFg*M-^G{xkE2q z$&r?holOr)&;q{`s$->TA!;hq9ygwF2hAUt~)<)82dey@1KCH%kTqaYE2Dd7v+!d=+VB_~_uV^knDGR6S$X+lyNpnQh zsHUH|iz8{xWSBcPbQ3Rj#JLMRcH+pArE^Ur_A};eJd@Z^t*|YPtvXh%-yeE~tDc&@ zA9@CJaEb_nd<}#=4M=twHm1CMk z{~Be#z3F%wztv3=+){4a2NAUE%D2gAYbSz=nvsk>AMiL8naB!bF;WE=2a4$+$1I)r zm9%(H0A1{N1@Tj^=G<(TZNfwiakLHay7BHqzfs{3y(;j^sqi{dcoIw>t1gx2nAA!xyj0;sMf>4F2rz;)sr1ld4Tw&M`A|uZjX^ zp#`8I4%sdwyk~=;uvb>?31@d#?M?F{c5Hw`Z(m-0M?#=&PVg98)Wj)+l=~z9Fg>p6 zG3%&HOcG&E!RDf20Ts~`2|VZ91s!k|8-dQw2*G^YzX+Y4b3KugR|$+CbFn~_jAysH zBAWI@T#d^!P??SERRP0W_O3q!Joiw64v$^iutI@?BG;SSxQACGw)P~?VM2$_wZYF{ zX{<53FbuZ1+lv@XQ@7=W)qLm26=~O{PB?kNcLzil3a(#zD)#B6MbwwfpnSLf_-k>~ zw5Y~Y24~Q8@*n)+WKj8$5l$f$cIn((lIkGk+7;Is_90enl{kK%Fav#9s3=y59#Y{(MCmc~sk`ICk?2!P2k1P&FtYcTGJJ3?OwU6Bmb)!(aqHxDxvech}UCyRiuioQq!O{nknh+a+3hx z#P;R&zs~#~KTCQXpL8?+C4-#tfy&I9m*Pn_xyD(v2JKNtb-Yedy@7W^U+fbiexb+z zWF~dT?3-=jGPad&6B03w5x=Oq&z)LE1I6!Ae=f8^%ywifiodrIiEOZlilhyki4m zj|+-DdkX~G=cWN!c2UlADV1mT?xp=s%dzcD@u9s^v`^-K7{$=8t0NoRdXxkuycYN^ zB;SEXk8Ar*#RXpI^BpU+>R!^vd4u+$JEY|d<&Vkix;30E<*b8zffoPTuJYe>Z#ZW1 zq*0obr7ztwX3cWN4;yMO7v{v}?**4tXTE_6ckqAEFG)oyS-_lC;1*%NZ5uAs9o~3E zX{=9UT$lN~KZU)W@i$f|?i>Xy{c*PnjlAckJroc$2{Q;!`XkWXqrG@`@aq0ABr~h@ zH+|yzp5tIw)9)-5%+Lji7PANQ}g)Z5j0<8Kr!XhSB+}b-x|StKG+m+ z`m73k2l?a4`$}E)zl31Mc-Uo5XGY)4yGnD)%cu(v6fm}ubk_1e1Ah7C5VJBEy2#+L zm-i!A3wic{PKM6nBrefAI(w7Ru+eu3MH}_Q`yHq9S(b zso$ED@pi!X73DHPwihSJ0H8$qm=rLFQC`r|gt|HMCj0Ino-5FfrV$$Zzpsv#ZMPu^ zQQW?I`(oYvO>dJD5ab!{rgHBO$9&+p@C~cr*~#)9DQ|ZE&GXxp>{m=~ID+Sbio(_6 z0$`KI)y~=Is8+Sjbji9>a-W(pgYT^=W)|C&LOTT}OcGpxYX>%f^G zT79t}0Oz-b>pI{8H=(_B+M0OZb>(^(Yev@U;k6MovQ!KO6@n1*Qc14m3A%e+ zwq832e$cGW?Rl?Uz3bj9s+@;pm+L)!J* zw0o$?ref9yMvZr-Rl46Gz}u>{IxNYoeN+Y%`SlHqpT@jgWJL|HEXBSSLTTga-RA}L=WZPHZu72HLJo0Y z8zN%&M2H`dw4_^vld#`Y>*W{lF1oDVDFMYQ98vlXQdTrK`w4B>`T9LGw|31Bo(%kp zoC*tvbaAU(GdItLH2`@bmnK^{_&=T$C`D( zf;TROVB|8z*>C`^`ry6&Yqok_ zQ&oBHrhM5F69X0q4VAh&ai(ah+#U7QPS{{@XkmHYeDJ0A=d9|C*VKYxOkI}98`heW z-$<}WvVJ%z;GqG*pw7OUQ|#uzifxzHb-O#Ad9fuF8JEguu~1RA707V+iz#0a%v2kk zH06%$CJXLht~t_&arFCTu-UBcnCDFxN;&l`Jg9Fm2KnKueS>61@L}^k7#bh+narSe5M3`yFi%h#3~44OzkUpC3H@b5j#M4+@rX7y zq}ZZ`v1;1Ql4jRwShbxdz50ZzaiVucL~#;fTFW4LiqF_ahXeI{aC@8?~4)5+b$<6 z{zZOGm)^DUnlbvwo)MYfE$7%lHVtRIqi1c-(v}gdVPbP^(R;bgvr~da{ldZ@oyXXa ztb#8OWOSNqg>K&3m#+0JP}wf%3n7pIv0qW)F0`Wb8cG@rz1VDfm7Hq=nF;xeXIoR5YEezjJ;yhVtF;+b6gFU0X)8% zZ9!1VB(WqUgv2~z$kekY*F59m+)VM)q!235hgU{7JOf}R&7cFjHSjvX-Ctd7B~u-^>Kuv*_lp2+TlmtswWH*9FH`!KNAYo` zbxx_9w3Hn0qdRudogzIsn9MTss#=iV?C`RIofVVkrz|}zqO3BRfrG^Qh63yC7v%~j z(cU8<+G3h(Co)Bf>GDt?Y!;hNSJZaGU?N4F#YG?dj~G*x_-J9BHE`PqA4@xSicWhz z>r-}?nm`-;0q} zc@^r>3PUE8*jW_*MjS*O7Pg=W+2G9Pq~YbFu$TNJDZp~H&vCj^<${KtO%KHT=o)Uz z&#u$$-(tR`dI>10hN0|_=FG9qK0`uf$yQ2kR+OiL;y-tuM1OC4r4vG;m;d^RGC$20R8B%Hi-UO! zwL9X!Oo1;zX;mF?of5>jzs!xzG!;bi-cP9Eo*$MT4~G~VS{))S+Hy4yL%bTReZw5R zsUnb;UP^)wXye!^R-~AV-{S~G=avB1ykr;gvvzFqy1?-Q63tD*u@gh z#%rX0qp?n4qdMdEbqeb@ zy3FBN-TCS*Y3}&J`MBfH#ZTkaU$9V}yik0s9fqOIkj&9n8m}ekeoEhKEy}wzt4J$8 zmOqe@`dvps;KaOe@|{!ixDhn`SC(4!T0+ovV&@^<-7T+n3@I&7qgOWcebZkvc)7h& zp7LZ!Qq>0oyQ!+%6gAA^r>bXpPkHRuG`Ev|SGL;RSYO}LK&Bk|c80>zEUN34UTMuO z8?^RB`LTh9@+d`j=mgk3A{Ged0)-zu-k~Gmt{>U)2ijU(y?0S>c=~8^13x03j*O8m z_woH~H(p7|sLAT4$a|u9GL*k6*4Z<&oAt)U+(Wb$x)@Qn>sSwIw_Mm>SQxRtH*Hx! zr&kbE1L95oHHT~T&TZVWP4uSR7C4k+iZGpgx<}=S|J}7PCJRUAi@JWJB*5rmw(c15 zSs}BBsQk5%@@a}D=KAa+x*Vr=o$0GaSg2-QGDBhX;D4Yk$+y}UZX|5I{ZrFCv4nOM znyHu6QrH&b_ATJPq5Q*KlPps8JlSm7y$!U@2`l06NG-{7hgLgzWfWH4u4Wg`1nCfy zy`OV42-vBQUqP|Uq_JBRp-a3g0m0z+)VUc?nHn@9Bt(8yxu^t8O&5{t&>)k}?B-+d zEFZz@L#bMx)hBS&G$ra9Sw~pFj*K)+DJnY0HPB;t1}UVZ$KWTKX7v@w^IStK`jmRHHky+xuzjl1?j@1UgY)Uh3wyc$f_!4Z`93wAG> zds0|_zvpV&(|wRAsXs7jb5XK*YyKX0zYvZ0FMl_ZEQn73b;<7{&0yg=n(qU?-xy6h zBfzzTi&bwvk*+dd>z**&EGg^ZQ&CqUCsPlkh3ZrX{BtDTgLQ3pav;5H5Ll+NN`^($)O7+4cwP9V$F zPBZHG!^x7`7^!=j_YMlQ=S4bCsO$o$u|c;{jwwHObuB#)QkUoiSs-OWnO@=ZN|rm^ zlFPhjYlCA9l!jVixH`YblC{lckz*6tZ7X0?0TK-Dt%VB! zuKE`R-UoWZq75_&Wfe#@?jzj>!T;;n>J|rG>)S)uv(yU>g`?J@{G|_l@J`L;NPvvf{=~FTLa0RuS6162GyN3JX$n&)MnRsSL_*d+!wI7t#ID zGRM>N>1{-=kANEvBO3c!Yr`R7n#nh#kK(+i)Lu6wz_=N>&Q?7H8mV|YD>&?wq`0K4 z67VvQ115J1V!1*0XKJd`&TV@H`(TsZbVfJqh`TD`47KO&w=MzDF2L?}$+V1?%J1dL z3@v3TkG}BqD~ALV{T}MMI0<%4fAXc%NO6A;nM(CC_LS@$|C#z=-D?%JSNx?ddzdU5 z>5)d-FEY*xkQ)8|$iT*ibUWPJOL=5w%)#$KE2J9Y-kE1iAdJN>$IV`%A zXr~km`_vc9oYFP+ajg9cwy~LW4XxgY?ykA557VNfpW}q$tM~Kb0xn8!d7_wK^ZEEQ zy7|BSPDQ+nf4&lIF5-BK%r_MmR2KHSDAV$1p1&&aorXX!afrob>LTWx`YK(A!QL)& zkILTmr9@hNL)<3Mq)`yuJ87ewk%Et&f&qU#1Bo%{bMD-LoiI10b#frK!rZSQhpnRN z9tD)v>VULvM+NPzZ8X_N^aImP&wi` z*jGk14O&|RSWl8K!1o$N>UVIZA*Xbjnwn7PpQ}UWkL$=&w6+d(V9;0Z_uId@C}4wRWRxS^L*RO&6ql5=XW0z{mN~kDQi#W0Q)|pOk@y6IkjBs%4?(70$l=V78?#}dn$X) zixr2M%Wh_Y=^ab=11;f{-Z?`GL!Y8(Xmp}RxEq}ZM*Y+gavjs&6`-wU zDU!jbd$AG_MTc6@cmPpar-;SPR^AsRK2^}zieYc)2y*b-(|c4$?#v#O!Ykw+0#6Uy zJMNwek&&8d%|bl|4&G700fDHv63LnX%$L1Nf7u#dt*gIt;ZMifnGR|2ze=h_>r6qM zT8UZhK{JE7ft&o%x0J$%Kb;{)87+GJ>Y80dRx8;2A!tixN|p2NkZRNj2vkoym)`jB zwVp!DpDB@$Vcwet;{qX>u?qR`P&dUi^Bo@wI{XI;oui$3e!|no7;ZPa&TG(fwPG3Q zooFP?AACBLro|TVzxxZkhP-bc&^h|hl~Gs{PS4SB)!Bm?1qr6CbF(6KOM0UB?j_Ax zDw}GO2fS>Bi!F+k>ZQ%$ivyjwl-$M!jdCjFwCdhV*e3aKg;xjslADTsGg0&$ndPW! zG|}eT`RMQ(7)t22)8cllJQ0jdz8D{VuGH}K=^X-N$DCzcCZk-qW*cy?f&yE20vU^0 zBGd?2D7q14Paz&C)a@#?K&)#pS``*Ry4}(c=DUEtk|16V|0{qd8>}{vEv)|}(9+>(yY;wJc*W**hr%?MF=Vmu^h7i3w zLHxz8It(9=K%0e>$YR91UqMg4CYPnzAOfzBHDE%VuP+yc6TJE8&f2E)V=r-ZiZ%_7|CaFg#WpNM|s^6lzvD`*F zv8v;;%4F*`M5m5;epFIcNEO<+$i8|R+5YOT^Do-JFE0I^nHyi4b}johKw=n4_iPto zT}tYn>*?WqLcqR^x#9e08a45(fURX!g2I09WwE2!4&eCkR&H6VVLtiz!^iB1pwVQY zOY`%tGeMZzFm622S&mU!dzY}OVdb=(TI5g_Dm6xJnOM$jmBfv4T^4JujC>x_PBXex z=%4T(h)b5BE9dreIfrhMfl*hu{N(i0*v5Y#%>o;YsN`do-T{I=xW|GhU6qh(~= z6`GSnmn-~Uy?ZM{KsRrWFA$-yDVC$?I_cW&YN-TD%{0%#ftNg@10F0J5RDu#0wB{r05$Ay4!Dx8`9ttBQsQyqOQD_w@@RvuIVWg|Q|aYHP&aU2Sc|vX!-e#~xPIKcxM3g`KRdjOvB> z|8r&*=!J=06{t&w;Hw{Pg>C4@qg-yUl7@n18HXSOHP%gGokHM+4p*d3h~}n%{@fXn~grU3vfk5dgLQ1<7~j|@F%Om z{BoJo^XVARuyHDTE9hN@Q5*wQ(An~c!d=#TieLlJt5wa7=eG~GfP8>VihbU zZuFNbt`?VZ6^dD|5YpTn>lsFwZZIUAX1>B%t>!z%+@b2y&SaBR+9@D}bnniT*cn39 zBTjhi)C?LR;0XPlDZHf)-F|D!W;*QQaICi2T>N;S=ihHuP6x+PpgJD+?yV`pAqlup zCkbcqu+jcS{WX#((37nC`>&CWB^PU9*tpYSq$1sSl63s*ffG3P2?-% zgLcbTKO0BzCXZgSf3q0;GlNF@Z1nFPaDNG0Ogd3L!e4D{yMEIKTeS>l)rF`7@E`=K9IR3o@CLyELDfAV7by8|-Q142{d6Q<(n2Q+AG+PD>!FDKI3 zd@TYXehEYD&)appVjXu1Cg&P-uIwH&US!+`j9ygzDrb!bb}*^I<-2W_VVlKSPO>1^ zJ7j|X5e$iLtU)XMU4_DtEW$W)_p1GYMg{M;5FIH1rFksFaz@6(dC{u76#o`nlx=LR zD@(gF-UHUaf>uoj%peJ_cTC}Ma-D765@Ab<>=VwLQvPp;TxFKR#gM}I*EZ)f$EhY3 z_ZAAb0ul5A;hbmCMB-A07{^gFp9m=a8D7IO%79`F?&#~T>1d%=I^4Fpj~KX{;cLq;&#kFCfgAIMcZ z^XqRtu(fvlxU=6l_OPkhQ?+D$)7g*0!@Vc&@3a%JPG%vK5dYPMy zhac(E`mUuHg(p^6Cfx%`d^%kgy-8a%Ya+B?h%d2|)U|yi9X@<1^hz>oRp8v16l9ON z>H3E4@xlKnI`?>{{y&b-{VsRrmfKv0x!+1cu5)MZlKY)(ODL6l=9b%RL%FlL<&s#b zT;@J>(bZChDV0b<==(dr|NSwKot^jR@_Id={XO@JA|m**IWhN-^2A|v54H|7Rx2N~ z+yuq+ar4^y=kp(-Q7`L$H;oo^<+lk7g~|}6)om<4|Axf%v%fBuGXjZRU(gx9#WSFH zy>UQZJ5O8kcY$@zNrT^@G%rPl=BevhR>ySRc#~Pzrj)m#m=qAQgpEj+GbYH!^U+BT?#p5Y2~smZ;@ zCli&qLs7dMR0~wUrF{OsP|!=K$_?F<1jT%P+x~DbW#$WE&7RIetA#t-TJn;0);`KR ze<}>s%>An-cydM1nL^9hN!c^L zDO#U@rs-yDbAWdK{h;cybu#ariRcrM(GpzfOPlZ_*9GR7EP5p?@{#vQq5b9-K3eU` z;=jWhzT%2TRVpL#;r>2FGvnWUKZP}8~Bu02UXZ*W?fh2?{D`}3{Gja zFZ>eN%}(#AhWSHm>)@6?PC;^GWCK`qeR->u^ksAVm#1%G;q0o-a~Ak?o+bR|TS~^c>;COpDyV=!r(X{C>df+ zr79^YEE!{&(FS^oGE?iNwGt(fYq97!h7EAH*t!yS%x6caWu+DS!~k(QkHk-8SU)Tf zGJ|tpJ>{{oXI!&TP+FQz=fz^oTAGXOT_=Us-ZNKyoN(V@exGR(5uZ_7IW-(cYVfg( zQ9meJ)r=Kw3(}6OLbcyY!EQ{Q-$Q!mFjZT=@!43sNQlq%7UjM#qS=BQ6VSL*WITlZ^*u?7 zyJ(@2v4J-&L0X&DcjS|f;%)PBSJcma)s?F5E2h|6L*7KjeZ&{`&+w;?vLC+4&2oAh zG|Wd)y|cB$K{rHQ6Jq%O8mf=@WXc4VZa<07P9^(Dy!}vfV|2!MIbsgC>gLJU=&+VH z%jYM{vHj^!W!&b>#o_181tNyy!(90H$V+ak?;S1!)$0YNdYFTxK z#vCe!*4#?@(v$fkP&rd!=r4 zrPth++EsC}*#z}OJ+R@zVVJ;j-eE-u0MpRC5)wd0(ZTAi?uD&ozFI=pN=pg=f3?th zgdi4xk~7fiMyv-kM>O<$@v7X^-_%d#jv{~|XrvubhV1Eoi^e)E~JRKf%_3{(4z z?)vqYz0DU3hvqyM@X(&tgr-9YOE?QyuSz`Cg(nRLZ7pf zD_a`WoNc)3K6V-}#waZg-IFQRpA3EEf628-&FG$QHd{`h4uvu!W~>xfCFfnI*Li@I z13fef5K!$gLEdMzMlA6zHeP!MY0E2ItqWr7sHXN=qGRc*4?uM2=$2^I0-+K($q43u z|DHGzdVbsSP$Uk0cHp!w8KAPchzt`YAYC6BlL@~| zSQDq4`;%8b%EiBtJV_C%-Kz)1_;yhqyJysg)-m+(Nt#8$nKr(!g*J7+{{w{;K@^Gu zM-*ySOJ2qNt3R`3>ep9=eFv>*yAt3&ttS_?uL>a|qPNz$Z);1{#!-Hl`%CDKTU1Va z+&u#opW%5l`taU*I9s^)bGjS4{~O2lrt)TTO>mGKNP%lSSk^>=#0>q?JhKmpbJP0U!So@BHtCo9}D|5$U}$L0r{PeR!Sv z_vVlurU>-wO-M9JGhngCm?z#CaV39zJRoEZ&A;3E$um{ z681^H9xp|G%!NOs)|Jz9>5lSkQ}}(S`!KbC^8Vi@h@gGq%h%bDZwx=>^u~LnEli-9pF&2pC(0)@K1TBn#a(@lK7i z@;#LW9SlB34?|V*f!7wlvnpGk?M;{L={|T>YuQ_$TCr#K&g%9CZ&CE*+HlFnq;FgV~s0G4-@;g!+i_vqkPNU@273 zIUD{$;#=t}bB?c}JzF07>JdBz!8Y94^5BxI3hti-Sy_=&hPP60F%``5`3o~o1eqP+ z5Dyf}#r`$(6nJ2)V`-whEx$}!E1B4z7;pqaVbL!tgB7153seUZtg7K%^`$TQS zBPnNup)*($EZyB%rv4V>{IEXz*iAS*M;%42K6r*Qxi@-c$8Kh~&h;*ESQ6q%vt@mfd_m zd9QG8zAQRns3kM|{LsQ)%kY!#(IidOQd%Vi6ibiHS1x)4)Q;xe7atvoSI}{Fx%j#HDSd_=5p8jiqHolmNma!eSYI-${ zbmI{dG5HU)7L#5q)-9D+n({aVr^(?aAnu)L_~;a?Y80%w1Bq#oD&9Z8V-@%AaoMhl zP=Ly3ASyGZM_;Ge*(5kw*OCE@2XOa8s;(}67XwRTw@DMkori@_qlAAc?LkHpltZsB z&~0_7rn9x;9vCBa;Z2cVZ?tQz_<32C@e9C9s_BFABAKEQF#tQi>>Lw|b}c8o4A_f+ z3>uVq7>c}B5gMLST|xSTd~CC*3iXYpPbI3@c${~Id$M^rB=)7!MN8Y;7GHg@`+Vwq zw`S=Ud|1aZto&onxmFe;SYR&v>3$W7tZ)bJ_ws*(3=M@8E zE*a$C9!@F#X5sVp{0HU%djqjg*@iyMtnY7mGU@p%%{h%zfr|&=7r0F z@Zd0ah3VRfm3wWkgUu6qb!uh4rEk~j=YOR#u5U;{%xbyQ>eop{#AGZFzbPXEC6?c- z-^tYyHQ_44Y4SwJUA}RO7Wzxw77ZDGU3~rhpOG&*ANf&At{+iSRro zdmYcJs6FHH3BvWoSbHHW;!amYxFd> z>8*>}w5wC2aW(d&TfcFrAB8F-ymJdRb}p4p^O4j1O-9Pi5h2Ge9s#pi4Eo&Y#aXIR z;;we2mlZ;=hw~&pM`20Jh|M;_xw&n94%L@f$7ZrCMe>Mu+M!2_33@Ga=P-jW@ZH}R zNjLJB1%fh;f1aLRBTA>VL8Kh9?=K-2#zfI^Ee60S ze0h|kfD`o-n;nWO$NJmi^XC3vSGkIN=YDTV(YjKlE}+dew?gGH#f|wzIJO*^ zSr3>c1f!l`71!2D%ZmHxJQ={FcO47zeJ9S-FkWo(aO){P=#2Pt=x%5=v%=Gy&Ca}z zs9Em^|AFEj9dw4CjBZIqS%|3l?$~aLT77Tl`BbBaWN!6t;;xIL38g1U^c7E+99iiD zfA~OD?8nBII+L5zlW`l%h$71jzlYa*K13LcyLIL4uAyCN~r5$=LxFexyS|qwq>-aQ9WrVzg zUa7I0_$gFJ4IuAQgGoMBw5LkG2Lbe(yh!0E^qGxKUT*L+cd&}!g0dj4r?Gf;SnBQaE zQer=f!tt)A2zDM`e-|~e`S^x9H&te>kAq)97x#^cadIzGr09?rLWQDpIx(CIoy)A_ zO!gw_AFqt}t1{1cniLk?u#Q!a{+_RG7~M`ntMKxb)e3H7b)r*&LkRsSb^UFfl_uv>EZ7pjU8{BI@nd@sN{N)erU#)*x93!@7v-B`vM@Bgv zDR3!0H`M;Qyyk1>F^JBd>*EL}(z6ww8~^x#0J6vE6>Q|g1_>}9)1~*+plE+cW^4oZ z7)#~c)0Jthihw(RTVosz<%mLIF;(>#_(QSZ_YI~lTZ1PQ?Jd&3ayWM2pNt(u+043zJ6 z*~J*|)6CC%_qjV^jNWdEOku%@qQ={l`g7=_fp28%*D~uy#SJ`|9}JIgZt_qKqW~`7 z7H8#IVeZWd4$WUZV{G@NjPgX+498n>_tM~o7eNLAy$3xt%t z%7DSO^24ffOw;kLp?zuR2+WSF4xUgeS$Ig^@kn!;p|(L>w5eTd2CjsfX_Af^Z?~LH z0NLZP<^m-=Bn?4#4mN{IRhQN*Q@(>N*hDn;BI38fs?A?-$A%eqBz+TjSTk!zNRwmctvTly#i#jsPh_J`oVBaq z!RCQtM&ZL*v=pej`wU(){bxEMT;XBR>683&_t#e(IA68YsfsUXiQpNQo z%ns!^Dua774N+sal_pt2JF4Y}OvFfGaYw@w4JQ+VueXF&*wc0mbDTZ${GS#IdRSz1 zQ$yAQ*$6ozV{S3hzlvr>NKqj*F5>VS+p0p)R*#2=IIE$oM_&I~k*L>Z;Q}(8Uktvc zyWPG}x+UFPoH(@|9_Z$H$;(WcgE@Pnd&e#9os5$XF^9=rJtj~7!Viu!nV~V4`bG_G zA^_X>gNvpK`DY+DH9@a5PZRYUSJn*UD1s#jVZRfbH}v7pACIy_>>iEXrg^X~F&QOz z)lbL=8wqC#gYGz-!)|);JBbm*=WHo{0&O0fer%Yipd)hByWmC>FV${Vv4_E{f|INx z*jph9v7DfbngjbnLM`nqmiiLwY@!XQRVkved~ZgFC~&O9r)7*&HFA4Uagm9;@eo@% zgMid3hq8W8k@DB74jP1OYWDww5DcDbMYCLk5P$njb40t=H#zbL-geP3&Jf61_((p& z>`2amo^|I+#U?K;hc&-P7PI@k2}_i=hC8TJ%~?!kX4y8r4_I)0?`%$#=~jc(CQ&te zzsd}+s1Fwf(M8+_#oU+c3R#|0Qq1~A9AY@);=I-0U@$k)7acdd=~HX%Yq2cG+O%Qz z>%_Ob*K!f~6-qBsMHd0MfNz1O;8l@;D6F7n0>Jj8j$OtuJMIGnk4;-}*;+dp$P`TK z>bXY#=5xMQ_SrsQntZUCT4U>)ZG@kPm~URYCvOIYXJ?aleF?QMWgDT|di)zB;w|7j z!N;Uzb+Q$AEkM_m84==Mv{i&w?h-Ob4`m@GnrAt~!;9EQbv0`6nTKe{&f5~y2hhDeQ&F-}JE&)z6hw6COa zJiPebOTG8e(EN0n$a&hEa+|Ymy!;ZXD}NPua^JO8T=F4YpV3_V=kxGKCvh57f)uFZ*{YOS{xWZX}8^);b~CKT>HXuG&q(}l_R0;wj|S2 z^W}5#J)aF6*`jV``pOQ&=V94bd^4FXW6nXOJ9(DOIF5l)IkM8kgEteh2%f9f#!gD3~UfE{f8M|g}h(rB4*+IZZ1=hzc zS1)mu6UWYIyLJti{GshtDp8Zo**g17W}s&9GFQ^s9jz0Fq)p4#Ib~loPcrFeMcLBC>B{ZIju>%&qks zHh2f3>|jwRGjwBSR2(@$$cTgOnXA17{bSIM0DNZ+b)L$1r>Ed#U`v5>!hCBN54RBd za_a-eNYTqTS!(~w#OXH*ftNX0epLF+NhW%~$aDK8CFLTXr;*mS0IX~pt*L@M` zl_VRMMOptA61Vu~i6i`}_4l_g_f-!*^jm(|+A?_D0LBe976zU{oF5XjCK}=NRNr;X zD#r@;UARQ`LN)h)a($hVZgNprDdYXQzZD=ZH<3oFdEIYpTTP`K>PH65=afBlph9Lvxf>&R0>@LZQ z-1nM8;21Ms;Qn->5`Y9@U=i!IL52h^7*7|bZ%j0WMUFEZNQb<^X6mG!D-O!jhcRgc zm2sN{;T@$UGXrH{Rh(R%O+vxWX1{ft6|xm5n(?~oih{EJmg=0!owXU&!@DbEbMe&*&Q<;T)9$GzWd#>6;C zh$Jfs7s32QhtRiqH22;ML!a`d)WXkt8|cnt+z_56Vyj9W)(4N`B|ct0%ump{=u>y0 z?VIt1`+`U>lQ=BtqD>LI=2h7kH{0H=gma6Xj$s*6S_yJAcCI$s9tGqUZ1$Qwp@Y_3 z$&^~1Lqq2<4lyQAL%gbbdQls?-@7{UKmMetS`Ou=o6!0>UTTHq&|gb`<#9ljUm7RZ&JQ%>ukA9?5~2L|R0zdspFx z6UWY2|7ua@%8-1Yabk=SBgfPo0tDJ;L$Wc>h*gY{~)y)Yy-r5Dtdcn zd~>!QfJ8fQ!e;GnF2Kl#^ecz#@)SbKdQ|illL?z>nD?#%0#F)q@2Ue&#u!)cP4*Qs z7bS9*MMx@}=#qm|5vI3JUaE}%d( zI=+7Aja+|9#;cOAW`o(1ml12K|I!@Dw0 z8NMU7hj%nQ5Zi}1LpQHwo5!2J+4i>F66Cq?N0$n1h0=ML`oU46k{46ugJnFqn(yzb zp0&+;wV(K2R0G8`(Y)^{9Od}x^Z@putVDwBB+oONJH!#x1{`d6<@P)9Lwf#-J~s%L zCgUS~bd_a`C?Ff3jT;Wm+0^!61B-Gm`oBi~i{R%?Hz+?+a=9HQ!P-{J)mIu_tlqw# z$xi&K!TCC6c#t2lKqK8$Wh;2EalP~N&TQna;LCq(k-_!+)tc=n+ASEfv7@{sT!nesXmVTQY;e3y)Jv zl|o57{hK4qlrRnX1WhT-dSC`Zln5k2bqp`Gout(f8q0jrm zWRK&STGm4y72%C7VFL7~WR~fK6QQi0j1xDYyG}h>(4o;KtAdIBV)QLzpEq&7H`g~p zY0Y9E*oa2sy8nTi+S;5|0~+qi+aAHCtcU%3K|*5UH#{BltQ2Jj;`%B+dT7L2If5TF zUf20XgLJypbulsIO2o?U-r5pLa-c+CIwF(~t3zi@LdN8v9MY+IE#|MIPiB?1%GM#8 zJx|YUip0=LrB4VK;R7x?<4h>BCj8vE`B`7v(}_WHdUroD5WC?rkJtuj4sxgV`e)DI{RC_EP3t(@k4b^3uKH@4J% zs6 z^%Anwrl<#S`AQ(BmU;{2#V8k5oST@g`(kl*Rg>0u>W6G)9J8;$9V^eID-Wdz{b>)b z>hzMksf$<3V~4Q>DE@VTFeKK#HS(bZ$#u$9oK&-y)0K~u_Vv7e;dp{Fqy1q_)9%HX zem2W+V`5a@W1ktykL0KfCIR|;xj~JUkKKU;2?SbiUXSI`t)BusS7TkJ9_$j!1WGt8 z?hFXBMcZ4V4#qgq zIWouH1BsUMONAf#>+(gRql0{b{Z}s=J@mP*WNbAzOMh~{|CU}!N~*(cWQ(w-7Vn`j z#lW3IR(4;sU+c!4D33j;$N}+@El^>b_ngH=l!iRK zGtZ4brj#f#G A4t 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 UQt42-+&0+}OCVQv{P*Jj08W?yEC2ui literal 0 HcmV?d00001 diff --git a/frontend/src/index.js b/frontend/src/index.js index bdd62d2..267b658 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -1,8 +1,9 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import App from './App'; -import 'bootstrap/dist/css/bootstrap.css'; +import 'bootstrap/dist/css/bootstrap.min.css'; import '@fortawesome/fontawesome-free/css/all.min.css'; +import "bootstrap-icons/font/bootstrap-icons.css"; const root = ReactDOM.createRoot(document.getElementById('root')); root.render( diff --git a/frontend/src/pages/ServiceInfo.jsx b/frontend/src/pages/ServiceInfo.jsx new file mode 100644 index 0000000..b786668 --- /dev/null +++ b/frontend/src/pages/ServiceInfo.jsx @@ -0,0 +1,108 @@ +import React from 'react'; +import Layout from '../layouts/Layout.jsx'; +import { Container, Row, Col, Button, Card, Image } from 'react-bootstrap'; +import { Doughnut } from 'react-chartjs-2'; +import { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js'; +import '../styles/pages/ServiceInfo.css'; + +ChartJS.register(ArcElement, Tooltip, Legend); + + + +const TeamMember = ({ image }) => ( +

+); + +const ScoreCard = ({ name, score, lastUpdate }) => { + + const doughnutData = { + labels: ['Score', 'Loss'], + datasets: [ + { + label: 'Score', + data: [score, 100 - score], + backgroundColor: ['#36A2EB', '#FF6384'], + hoverBackgroundColor: ['#36A2EB', '#FF6384'], + }, + ], + }; + + const doughnutOptions = { + plugins: { + tooltip: { + callbacks: { + label: function(tooltipItem) { + const label = tooltipItem.label; + const value = tooltipItem.raw; + return label === 'Score' ? `Score: ${value}%` : `Loss: ${value}%`; + }, + }, + }, + }, + }; + + return ( + + + {name} + + Last updated: {lastUpdate} + + + ); +}; + +const ServiceInfo = () => { + return ( + + + + +

Service Name

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages. +

+ +
+ + + +

Team Members

+
+ + + + +
+ +
+ + + +

Scorecards List

+ + + + +
+ + + + + + + + + + + +
+
+ ); +}; + +export default ServiceInfo; diff --git a/frontend/src/styles/pages/ServiceInfo.css b/frontend/src/styles/pages/ServiceInfo.css new file mode 100644 index 0000000..724456b --- /dev/null +++ b/frontend/src/styles/pages/ServiceInfo.css @@ -0,0 +1,32 @@ + +.info-desc { + width: 800px; +} + +.team-member { + width: 60px; + height: 60px; + border-radius: 50% !important; + background-image: url('../../assets/member1.jpg'); + background-position: center; + background-size: cover; + border: 1px solid #bdbdbd; +} + +.member-add { + width: 60px; + height: 60px; + border-radius: 50% !important; + border: none; + background: #e1e1e1 !important; + border-color: #bdbdbd !important; +} + +.member-add i { + font-size: 27px; + color: #838383; +} + +.assign-btn { + background-color: #6482ad !important; +} \ No newline at end of file From b3a7e360cf2459b97a199b7ac0650a3908559696 Mon Sep 17 00:00:00 2001 From: Ammar-Radwan Date: Mon, 9 Sep 2024 12:53:52 +0300 Subject: [PATCH 16/70] Update ServiceInfo.jsx --- frontend/src/App.js | 2 + frontend/src/pages/ServiceCreateEdit.jsx | 12 +++++ frontend/src/pages/ServiceInfo.jsx | 58 ++++++++++------------- frontend/src/styles/pages/ServiceInfo.css | 4 +- 4 files changed, 42 insertions(+), 34 deletions(-) create mode 100644 frontend/src/pages/ServiceCreateEdit.jsx diff --git a/frontend/src/App.js b/frontend/src/App.js index 06335f3..e4c25c9 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -7,6 +7,7 @@ import Metrics from './pages/Metrics'; import NotFound from './pages/NotFound'; import Scorecards from './pages/Scorecards'; import ScorecardCreateEdit from './pages/ScorecardCreateEdit.jsx'; +import ServiceCreateEdit from './pages/ServiceCreateEdit'; function App() { return ( @@ -15,6 +16,7 @@ function App() { }/> }/> }/> + }/> }/> }/> }/> diff --git a/frontend/src/pages/ServiceCreateEdit.jsx b/frontend/src/pages/ServiceCreateEdit.jsx new file mode 100644 index 0000000..2ceaf19 --- /dev/null +++ b/frontend/src/pages/ServiceCreateEdit.jsx @@ -0,0 +1,12 @@ +import React from 'react' +import Layout from '../layouts/Layout' + +const ServiceCreateEdit = () => { + return ( + + + + ) +} + +export default ServiceCreateEdit \ No newline at end of file diff --git a/frontend/src/pages/ServiceInfo.jsx b/frontend/src/pages/ServiceInfo.jsx index b786668..31d5ae8 100644 --- a/frontend/src/pages/ServiceInfo.jsx +++ b/frontend/src/pages/ServiceInfo.jsx @@ -1,5 +1,6 @@ import React from 'react'; import Layout from '../layouts/Layout.jsx'; +import { NavLink } from 'react-router-dom'; import { Container, Row, Col, Button, Card, Image } from 'react-bootstrap'; import { Doughnut } from 'react-chartjs-2'; import { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js'; @@ -7,8 +8,6 @@ import '../styles/pages/ServiceInfo.css'; ChartJS.register(ArcElement, Tooltip, Legend); - - const TeamMember = ({ image }) => (
@@ -18,37 +17,27 @@ const TeamMember = ({ image }) => ( const ScoreCard = ({ name, score, lastUpdate }) => { const doughnutData = { - labels: ['Score', 'Loss'], - datasets: [ - { - label: 'Score', - data: [score, 100 - score], - backgroundColor: ['#36A2EB', '#FF6384'], - hoverBackgroundColor: ['#36A2EB', '#FF6384'], - }, + labels: [ + 'Score', + 'Loss', ], - }; - - const doughnutOptions = { - plugins: { - tooltip: { - callbacks: { - label: function(tooltipItem) { - const label = tooltipItem.label; - const value = tooltipItem.raw; - return label === 'Score' ? `Score: ${value}%` : `Loss: ${value}%`; - }, - }, - }, - }, + datasets: [{ + label: 'value', + data: [score, 100-score], + backgroundColor: [ + 'rgb(54, 162, 235)', + 'rgb(255, 99, 132)', + ], + hoverOffset: 4 + }] }; return ( {name} - - Last updated: {lastUpdate} + + Last updated: {lastUpdate} ); @@ -60,7 +49,7 @@ const ServiceInfo = () => { -

Service Name

+

Performance

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages.

@@ -74,30 +63,35 @@ const ServiceInfo = () => { -
- +

Scorecards List

- + navData.isActive? 'active': '')}> + +
- + - + diff --git a/frontend/src/styles/pages/ServiceInfo.css b/frontend/src/styles/pages/ServiceInfo.css index 724456b..7766b08 100644 --- a/frontend/src/styles/pages/ServiceInfo.css +++ b/frontend/src/styles/pages/ServiceInfo.css @@ -13,11 +13,11 @@ border: 1px solid #bdbdbd; } -.member-add { +.member-more { width: 60px; height: 60px; border-radius: 50% !important; - border: none; + /* border: none; */ background: #e1e1e1 !important; border-color: #bdbdbd !important; } From cb21d2a7885439bbbf22cb051e5adea13e8e1bc2 Mon Sep 17 00:00:00 2001 From: Ammar-Radwan Date: Tue, 10 Sep 2024 13:00:02 +0300 Subject: [PATCH 17/70] Basic ScorecardMetrics Page Frontend only.. - Still charts section Updating ServiceInfo Page.. - Creating a carousel for the scorecards list. --- frontend/src/App.js | 9 +- frontend/src/pages/ScorecardMetrics.jsx | 120 ++++++++++++++++++++++ frontend/src/pages/ServiceInfo.jsx | 119 +++++++++++++-------- frontend/src/styles/pages/ServiceInfo.css | 5 + 4 files changed, 211 insertions(+), 42 deletions(-) create mode 100644 frontend/src/pages/ScorecardMetrics.jsx diff --git a/frontend/src/App.js b/frontend/src/App.js index e4c25c9..60be83b 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -8,22 +8,29 @@ import NotFound from './pages/NotFound'; import Scorecards from './pages/Scorecards'; import ScorecardCreateEdit from './pages/ScorecardCreateEdit.jsx'; import ServiceCreateEdit from './pages/ServiceCreateEdit'; +import ScorecardMetrics from './pages/ScorecardMetrics'; + function App() { return ( + {/* Services */} }/> }/> }/> + }/> }/> - }/> + {/* Scorecards */} }/> }/> }/> + {/* Metrics */} + }/> }/> }/> }/> + {/* Not Found */} } /> } /> diff --git a/frontend/src/pages/ScorecardMetrics.jsx b/frontend/src/pages/ScorecardMetrics.jsx new file mode 100644 index 0000000..2a9279d --- /dev/null +++ b/frontend/src/pages/ScorecardMetrics.jsx @@ -0,0 +1,120 @@ +import React from 'react'; +import Layout from '../layouts/Layout.jsx'; +import { NavLink } from 'react-router-dom'; +import { Container, Row, Col, Button, Card, ListGroup } from 'react-bootstrap'; +import { Doughnut } from 'react-chartjs-2'; +import { Chart as ChartJS } from 'chart.js'; + + +const ScorecardMetricRows = (props) => { + return props.metricsData.map((metric, index) => ( + + {index + 1} + {metric.name} + {metric.value} + {metric.weight} + {metric.lastUpdate} + + + + + )) + +}; + +const InfoCard = ({ serviceName, teamName }) => { + return ( + + + Service Name: {serviceName} + Team Name: {teamName} + + + ); +}; + +const ScorecardMetrics = () => { + const metricsData = [ + { + name: "CPU Usage", + value: 75, + weight: 50, + lastUpdate: "2024-09-01" + }, + { + name: "Memory Usage", + value: 60, + weight: 70, + lastUpdate: "2024-09-02" + }, + { + name: "Network Latency", + value: 30, + weight: 80, + lastUpdate: "2024-09-03" + }, + { + name: "Database Queries", + value: 90, + weight: 60, + lastUpdate: "2024-09-04" + }, + { + name: "API Response Time", + value: 45, + weight: 90, + lastUpdate: "2024-09-05" + } + ]; + + + return ( + + + + + + +

Performance

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s. when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries. +

+ + + + + + + + + + + + + + + + +
#NameValueWeightLast UpdateActions
+ +
+ + + + + + + + + + + +
+
+
+ ) +} + +export default ScorecardMetrics \ No newline at end of file diff --git a/frontend/src/pages/ServiceInfo.jsx b/frontend/src/pages/ServiceInfo.jsx index 31d5ae8..b221c37 100644 --- a/frontend/src/pages/ServiceInfo.jsx +++ b/frontend/src/pages/ServiceInfo.jsx @@ -1,13 +1,24 @@ import React from 'react'; import Layout from '../layouts/Layout.jsx'; -import { NavLink } from 'react-router-dom'; -import { Container, Row, Col, Button, Card, Image } from 'react-bootstrap'; +import { NavLink, useNavigate } from 'react-router-dom'; +import { Container, Row, Col, Button, Card, Carousel } from 'react-bootstrap'; import { Doughnut } from 'react-chartjs-2'; import { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js'; import '../styles/pages/ServiceInfo.css'; - ChartJS.register(ArcElement, Tooltip, Legend); + + +const scorecards = [ + { name: 'Scorecard 1', score: 75.3, lastUpdate: '2024-09-09' }, + { name: 'Scorecard 2', score: 22, lastUpdate: '2024-09-08' }, + { name: 'Scorecard 3', score: 50.9, lastUpdate: '2024-09-07' }, + { name: 'Scorecard 4', score: 99, lastUpdate: '2024-09-06' }, + { name: 'Scorecard 3', score: 73.1, lastUpdate: '2024-09-07' }, + { name: 'Scorecard 4', score: 60, lastUpdate: '2024-09-06' }, +]; + + const TeamMember = ({ image }) => (
@@ -15,6 +26,7 @@ const TeamMember = ({ image }) => ( ); const ScoreCard = ({ name, score, lastUpdate }) => { + const navigate = useNavigate(); const doughnutData = { labels: [ @@ -33,7 +45,9 @@ const ScoreCard = ({ name, score, lastUpdate }) => { }; return ( - + navigate('/dashboard/services/1/10')} + > {name} @@ -43,56 +57,79 @@ const ScoreCard = ({ name, score, lastUpdate }) => { ); }; +const ScoreCardCarousel = ({scorecards, slideItems}) => { + + const slides = []; + for (let i = 0; i < scorecards.length; i += slideItems) { + slides.push(scorecards.slice(i, i + slideItems)); + } + + return ( + + {slides.map((slide, index) => ( + + + + {slide.map((card, idx) => ( + + + + ))} + + + + ))} + + ); +} + const ServiceInfo = () => { + return ( - -

Performance

-

- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages. -

- + +

Visa Auth

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages. +

+
- -

Team Members

-
- - - - -
- + +

Team Members

+
+ + + + +
+
- -

Scorecards List

- - - navData.isActive? 'active': '')}> - - - + +

Scorecards List

+ + + navData.isActive? 'active': '')}> + + +
- - - - - - - - - +
diff --git a/frontend/src/styles/pages/ServiceInfo.css b/frontend/src/styles/pages/ServiceInfo.css index 7766b08..5e01906 100644 --- a/frontend/src/styles/pages/ServiceInfo.css +++ b/frontend/src/styles/pages/ServiceInfo.css @@ -29,4 +29,9 @@ .assign-btn { background-color: #6482ad !important; +} + +.score-card { + user-select: none; + cursor: pointer } \ No newline at end of file From 1b3ca240d502cb88602af7c9fc19a61f6495a47e Mon Sep 17 00:00:00 2001 From: Ammar-Radwan Date: Tue, 10 Sep 2024 13:04:09 +0300 Subject: [PATCH 18/70] Update ServiceInfo.jsx --- frontend/src/pages/ServiceInfo.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/ServiceInfo.jsx b/frontend/src/pages/ServiceInfo.jsx index b221c37..6634c0d 100644 --- a/frontend/src/pages/ServiceInfo.jsx +++ b/frontend/src/pages/ServiceInfo.jsx @@ -71,7 +71,7 @@ const ScoreCardCarousel = ({scorecards, slideItems}) => { {slide.map((card, idx) => ( - + Date: Wed, 11 Sep 2024 19:20:47 +0300 Subject: [PATCH 19/70] Scorecard Metric Page Done --- README.md | 5 ++ app/api/metrics.py | 1 + frontend/src/pages/ScorecardMetrics.jsx | 70 ++++++++++++++++++++---- frontend/src/pages/ServiceCreateEdit.jsx | 2 +- frontend/src/pages/ServiceInfo.jsx | 5 +- 5 files changed, 69 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 693fba4..e6aba12 100644 --- a/README.md +++ b/README.md @@ -45,3 +45,8 @@ sudo docker-compose run --rm app poetry run alembic revision --autogenerate -m " sudo docker-compose run --rm app poetry run alembic upgrade head # and you are good to go ``` + + +# to solve the error of ':5432 fetal error: auth failed' +netstat -aon | findstr :5432 +taskkill /PID 15732 /F \ No newline at end of file diff --git a/app/api/metrics.py b/app/api/metrics.py index 1484509..0705e35 100644 --- a/app/api/metrics.py +++ b/app/api/metrics.py @@ -159,6 +159,7 @@ def editMetric(metricID: int, metricInput: schemas.MetricUpdate, metricCrud: cru def getAllMetrics(metricCrud: crud.CRUDMetric = Depends(dependencies.getMetricsCrud)) -> Any: metrics = metricCrud.list() metricsOBJ = [] + print (metrics) for metric in metrics: metric.area = json.loads(metric.area) metricsOBJ.append(metric) diff --git a/frontend/src/pages/ScorecardMetrics.jsx b/frontend/src/pages/ScorecardMetrics.jsx index 2a9279d..9c93cb6 100644 --- a/frontend/src/pages/ScorecardMetrics.jsx +++ b/frontend/src/pages/ScorecardMetrics.jsx @@ -1,13 +1,33 @@ import React from 'react'; import Layout from '../layouts/Layout.jsx'; import { NavLink } from 'react-router-dom'; -import { Container, Row, Col, Button, Card, ListGroup } from 'react-bootstrap'; -import { Doughnut } from 'react-chartjs-2'; -import { Chart as ChartJS } from 'chart.js'; +import { Container, Row, Col, Form, Card, ListGroup } from 'react-bootstrap'; +import { Line } from 'react-chartjs-2'; +import { + Chart as ChartJS, + CategoryScale, + LinearScale, + PointElement, + LineElement, + Title, + Tooltip, + Legend, + } from 'chart.js'; + + ChartJS.register( + CategoryScale, + LinearScale, + PointElement, + LineElement, + Title, + Tooltip, + Legend + ); -const ScorecardMetricRows = (props) => { - return props.metricsData.map((metric, index) => ( + +const ScorecardMetricRows = ({metricsData, handleDisplay}) => { + return metricsData.map((metric, index) => ( {index + 1} {metric.name} @@ -15,7 +35,7 @@ const ScorecardMetricRows = (props) => { {metric.weight} {metric.lastUpdate} - @@ -70,11 +90,36 @@ const ScorecardMetrics = () => { ]; + const lineData = { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"], + datasets: [ + { + label: "First dataset", + data: [33, 53, 85, 41, 44, 65], + fill: true, + backgroundColor: "rgba(75,192,192,0.2)", + borderColor: "rgba(75,192,192,1)" + }, + { + label: "Second dataset", + data: [33, 25, 35, 51, 54, 76], + fill: false, + borderColor: "#742774" + } + ] + }; + + const handleDisplay = (metricsData) => { + console.log("display"); + console.log(metricsData) + } + + return ( - +

Performance

@@ -95,19 +140,22 @@ const ScorecardMetrics = () => { - +
- - + + - + + diff --git a/frontend/src/pages/ServiceCreateEdit.jsx b/frontend/src/pages/ServiceCreateEdit.jsx index 2ceaf19..2a60ca7 100644 --- a/frontend/src/pages/ServiceCreateEdit.jsx +++ b/frontend/src/pages/ServiceCreateEdit.jsx @@ -4,7 +4,7 @@ import Layout from '../layouts/Layout' const ServiceCreateEdit = () => { return ( - +

Create Service

) } diff --git a/frontend/src/pages/ServiceInfo.jsx b/frontend/src/pages/ServiceInfo.jsx index 6634c0d..40314b9 100644 --- a/frontend/src/pages/ServiceInfo.jsx +++ b/frontend/src/pages/ServiceInfo.jsx @@ -5,9 +5,10 @@ import { Container, Row, Col, Button, Card, Carousel } from 'react-bootstrap'; import { Doughnut } from 'react-chartjs-2'; import { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js'; import '../styles/pages/ServiceInfo.css'; -ChartJS.register(ArcElement, Tooltip, Legend); +ChartJS.register(ArcElement, Tooltip, Legend); + const scorecards = [ { name: 'Scorecard 1', score: 75.3, lastUpdate: '2024-09-09' }, @@ -120,7 +121,7 @@ const ServiceInfo = () => {

Scorecards List

- navData.isActive? 'active': '')}> */} + + ); +} + +export default DateTimeRangePicker; diff --git a/frontend/src/pages/ScorecardMetrics.jsx b/frontend/src/pages/ScorecardMetrics.jsx index 0a1032b..c7e5adf 100644 --- a/frontend/src/pages/ScorecardMetrics.jsx +++ b/frontend/src/pages/ScorecardMetrics.jsx @@ -1,18 +1,21 @@ -import React from 'react'; +import React, { useState } from 'react'; import Layout from '../layouts/Layout.jsx'; -import { NavLink } from 'react-router-dom'; import { Container, Row, Col, Form, Card, ListGroup } from 'react-bootstrap'; -import { Line } from 'react-chartjs-2'; +import { Line, Bar } from 'react-chartjs-2'; +import { metricsData, stringData, lineData, booleanData } from '../utils/data.js'; +// import ChartDataLabels from 'chartjs-plugin-datalabels'; import { Chart as ChartJS, CategoryScale, LinearScale, PointElement, LineElement, + BarElement, Title, Tooltip, Legend, } from 'chart.js'; +import DateTimePicker from '../components/DateTimePicker.jsx'; ChartJS.register( CategoryScale, @@ -21,7 +24,9 @@ import { LineElement, Title, Tooltip, - Legend + Legend, + BarElement, + // ChartDataLabels ); @@ -35,7 +40,7 @@ const ScorecardMetricRows = ({metricsData, handleDisplay}) => { {metric.weight} {metric.lastUpdate} - @@ -55,70 +60,51 @@ const InfoCard = ({ serviceName, teamName }) => { ); }; -const GraphController = ({metricType, data}) => { - if (metricType == "integer"){ - return (); +const options = { + responsive: true, + scales: { + x: { + title: { + display: true, + text: 'Time', + }, + }, + y: { + beginAtZero: true, + title: { + display: true, + text: 'Count', + }, + }, + }, + plugins: { + legend: { + position: 'top', + }, + }, + }; + +const GraphController = ({metricType}) => { + let data = []; + if (metricType == null) return; + if (metricType == "integer" || metricType == "float"){ + return ; + } + else if(metricType == "string" || metricType == "boolean") { + return ; + } + else if(metricType == "boolean") { + return ; + } } - const ScorecardMetrics = () => { - const metricsData = [ - { - name: "CPU Usage", - value: 75, - weight: 50, - lastUpdate: "2024-09-01" - }, - { - name: "Memory Usage", - value: 60, - weight: 70, - lastUpdate: "2024-09-02" - }, - { - name: "Network Latency", - value: 30, - weight: 80, - lastUpdate: "2024-09-03" - }, - { - name: "Database Queries", - value: 90, - weight: 60, - lastUpdate: "2024-09-04" - }, - { - name: "API Response Time", - value: 45, - weight: 90, - lastUpdate: "2024-09-05" - } - ]; - - - const lineData = { - labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"], - datasets: [ - { - label: "First dataset", - data: [33, 53, 85, 41, 44, 65], - fill: true, - backgroundColor: "rgba(75,192,192,0.2)", - borderColor: "rgba(75,192,192,1)" - }, - { - label: "Second dataset", - data: [33, 25, 35, 51, 54, 76], - fill: false, - borderColor: "#742774" - } - ] - }; + const [metricType, setMetricType] = useState(null); - const handleDisplay = (metricsData) => { - console.log("display"); - console.log(metricsData) + const handleDisplay = (metric) => { + console.log(metric); + setMetricType(metric.type) } return ( @@ -154,17 +140,14 @@ const ScorecardMetrics = () => {
- - + + -

Enter Time Interval:

- - - +

Select data time interval

+ +
diff --git a/frontend/src/utils/Metrics.txt b/frontend/src/utils/Metrics.txt deleted file mode 100644 index d40b38a..0000000 --- a/frontend/src/utils/Metrics.txt +++ /dev/null @@ -1,139 +0,0 @@ - -const form = document.querySelector('form'); -const metricName = form.querySelector('#metric-name'); -const metricType = form.querySelector('#metric-type'); -const metricTypeOptions = metricType.querySelectorAll('option'); -const metricDescription = form.querySelector('#metric-description'); -const charCount = form.querySelector('.counter'); -const errorMsgs = form.querySelectorAll('.error-msg') - -const createBtn = form.querySelector('#create-btn'); - -const tagsUl = form.querySelector('.tags-box ul'); -const tagsBoxLi = form.querySelectorAll('.tags-box li'); -const tagsInput = tagsUl.querySelector('input'); - -let charLimit = 5; -let counter = 0; -let tags = []; -let cancelBtns = []; - - -tagsBoxLi.forEach(li => { - tags.push(li.textContent); -}) - - - -metricDescription.addEventListener('keydown', (e) => { - counter = e.target.value.length - if (e.key === 'Backspace' && counter > 0) { - counter -= 1; - } - charCount.textContent = counter; -}); - -function createTag(tags = []){ - tagsUl.querySelectorAll('li').forEach(li => li.remove()); - tags.forEach(tag => { - let tagLi = `
  • ${tag}
  • `; - tagsInput.insertAdjacentHTML('beforebegin', tagLi); - }) -} - -function addTag (e){ - if(e.key === 'Enter' || e.charKey === ','){ - let tag = e.target.value.replace(/\s+/g, ' '); - if (tag.length > 1){ - tag.split(',').forEach(tag => { - if( !tags.includes(tag)){ - tags.push(tag); - createTag(tags); - tagsInput.value = ''; - cancelBtns = Array.from(tagsUl.querySelectorAll('li button.tag-cancel')); - - } - }); - } - } -} - - -function PostMetric(e){ - e.preventDefault(); - - let formData = { - name: metricName.value, - type: metricType.options[metricType.selectedIndex].text, - area: tags, - description: metricDescription.value - } - - const response = async () => { - var data = await fetch('http://127.0.0.1:8000/api/v1/metrics', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(formData), - }) - .then((response) => response.json()) - var responseData = { - message: data.message, - object: data.object - } - console.log(responseData) - }; - response(); -} - -const formMode = form.dataset.mode; -if(formMode == 'edit'){ - const pathname = window.location.pathname; - const regex = /(\d+)$/; - const metric_id = pathname.match(regex)[0]; - const request = async () => { - var data = await fetch(`http://127.0.0.1:8000/api/v1/metrics/${metric_id}`) - .then((response) => response.json()); - - var metric_data = data.object; - console.log(metric_data) - - metricName.value = metric_data.name; - metricDescription.value = metric_data.description; - - metric_data.area.forEach(area => { - tags.push(area) - }) - createTag(metric_data.area) - - metricType.value = metric_data.type - - metricTypeOptions.forEach(option => { - if(option.text == metric_data.type){ - option.selected = true; - } - }) - - createBtn.value = 'save'; - }; - request('PromiseResult'); -} - -console.log('hello world') - - -function removeTag(e){ - let li = e.target.parentNode.parentNode; - console.log(',target:', li.textContent.trim()) - tags = tags.filter(item => item != li.textContent.trim()) - createTag(tags) -} - -cancelBtns.forEach((btn) => { - btn.addEventListener('click', removeTag) -}) - - -tagsInput.addEventListener('keyup', addTag); -createBtn.addEventListener('click', PostMetric); \ No newline at end of file diff --git a/frontend/src/utils/data.js b/frontend/src/utils/data.js new file mode 100644 index 0000000..41a07b2 --- /dev/null +++ b/frontend/src/utils/data.js @@ -0,0 +1,93 @@ +export const metricsData = [ + { + name: "CPU Usage", + type: "integer", + value: 75, + weight: 10, + lastUpdate: "2024-09-01" + }, + { + name: "Memory Usage", + type: "float", + value: 61.77, + weight: 60, + lastUpdate: "2024-09-02" + }, + { + name: "Network Latency", + type: "boolean", + value: 0, + weight: 15, + lastUpdate: "2024-09-03" + }, + { + name: "Database Queries", + type: "boolean", + value: 1, + weight: 10, + lastUpdate: "2024-09-04" + }, + { + name: "API Response Time", + type: "integer", + value: 45, + weight: 5, + lastUpdate: "2024-09-05" + } +]; +export const booleanData = { + labels: ['2024-09-01', '2024-09-02', '2024-09-03'], + datasets: [ + { + label: 'True', + data: [10, 15, 8], + backgroundColor: 'rgba(54, 162, 235, 0.6)', + }, + { + label: 'False', + data: [5, 7, 12], + backgroundColor: 'rgba(255, 99, 132, 0.6)', + }, + ], + }; + +export const stringData = { + labels: ['2024-09-01', '2024-09-02', '2024-09-03', '2024-09-04'], + datasets: [ + { + label: 'Category A', + data: [12, 19, 3, 5], + backgroundColor: 'rgba(255, 99, 132, 0.6)', + }, + { + label: 'Category B', + data: [8, 15, 20, 10], + backgroundColor: 'rgba(54, 162, 235, 0.6)', + }, + { + label: 'Category C', + data: [5, 10, 15, 22], + backgroundColor: 'rgba(75, 192, 192, 0.6)', + }, + ], +}; + + +export const lineData = { + labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"], + datasets: [ + { + label: "First dataset", + data: [33, 53, 85, 41, 44, 65], + fill: true, + backgroundColor: "rgba(75,192,192,0.2)", + borderColor: "rgba(75,192,192,1)" + }, + { + label: "Second dataset", + data: [33, 25, 35, 51, 54, 76], + fill: false, + borderColor: "#742774" + } + ] + }; From 19204c22c525e82f186aec2344db1d5eb72f4d42 Mon Sep 17 00:00:00 2001 From: Ammar-Radwan Date: Mon, 16 Sep 2024 18:43:27 +0300 Subject: [PATCH 22/70] trying to figure out the best charts --- frontend/src/pages/ScorecardMetrics.jsx | 63 ++++++++++++++++++++----- frontend/src/pages/Services.jsx | 2 +- frontend/src/utils/data.js | 45 ++++++++++++------ 3 files changed, 84 insertions(+), 26 deletions(-) diff --git a/frontend/src/pages/ScorecardMetrics.jsx b/frontend/src/pages/ScorecardMetrics.jsx index c7e5adf..fdc1cbe 100644 --- a/frontend/src/pages/ScorecardMetrics.jsx +++ b/frontend/src/pages/ScorecardMetrics.jsx @@ -1,8 +1,9 @@ import React, { useState } from 'react'; import Layout from '../layouts/Layout.jsx'; import { Container, Row, Col, Form, Card, ListGroup } from 'react-bootstrap'; -import { Line, Bar } from 'react-chartjs-2'; -import { metricsData, stringData, lineData, booleanData } from '../utils/data.js'; +import { Line, Bar, Scatter } from 'react-chartjs-2'; +import { metricsData, stringData, lineData, booleanData, scatterData } from '../utils/data.js'; +import DateTimePicker from '../components/DateTimePicker.jsx'; // import ChartDataLabels from 'chartjs-plugin-datalabels'; import { Chart as ChartJS, @@ -15,7 +16,6 @@ import { Tooltip, Legend, } from 'chart.js'; -import DateTimePicker from '../components/DateTimePicker.jsx'; ChartJS.register( CategoryScale, @@ -60,20 +60,30 @@ const InfoCard = ({ serviceName, teamName }) => { ); }; -const options = { +const booleanOptions = { responsive: true, scales: { x: { title: { display: true, - text: 'Time', + text: 'Time', }, }, y: { - beginAtZero: true, + min: 0, + max: 1, + ticks: { + callback: function(value) { + // Show only 0 and 1 on the y-axis + if (value === 0 || value === 1) { + return value; + } + return ''; + } + }, title: { display: true, - text: 'Count', + text: 'Value', }, }, }, @@ -84,17 +94,48 @@ const options = { }, }; + const stringOptions = (labels=[]) => { + return ({ + scales: { + x: { + type: 'linear', + position: 'bottom', + min: 0.00, // Set minimum x value + max: 10.00, // Set maximum x value + position: 'bottom', + ticks: { + stepSize: 1, // Ensure the ticks show in steps of 1 + }, + }, + y: { + type: 'category', + labels: labels + } + }, + plugins: { + legend: { + labels: { + padding: 20, // Add margin or padding to the legend items + }, + }, + }, + }); + } + const GraphController = ({metricType}) => { let data = []; if (metricType == null) return; if (metricType == "integer" || metricType == "float"){ return ; } - else if(metricType == "string" || metricType == "boolean") { - return ; - } + else if(metricType == "string") { + // return ; + return ( + ); +} else if(metricType == "boolean") { - return ; + return ; } } diff --git a/frontend/src/pages/Services.jsx b/frontend/src/pages/Services.jsx index 1647083..07c2979 100644 --- a/frontend/src/pages/Services.jsx +++ b/frontend/src/pages/Services.jsx @@ -54,7 +54,7 @@ const Services = () => { useEffect(() => {console.log("re-rendered")}, []); const getAllServices = async () => { try { - const response = await fetch(`http://127.0.0.1:8000/api/v1/services`); + const response = await fetch(`http://127.0.0.1:8000/api/v1/services/`); const data = await response.json(); return data; // Return the data array } catch (error) { diff --git a/frontend/src/utils/data.js b/frontend/src/utils/data.js index 41a07b2..3e7fe76 100644 --- a/frontend/src/utils/data.js +++ b/frontend/src/utils/data.js @@ -22,8 +22,8 @@ export const metricsData = [ }, { name: "Database Queries", - type: "boolean", - value: 1, + type: "string", + value: "test", weight: 10, lastUpdate: "2024-09-04" }, @@ -35,38 +35,55 @@ export const metricsData = [ lastUpdate: "2024-09-05" } ]; + export const booleanData = { - labels: ['2024-09-01', '2024-09-02', '2024-09-03'], + labels: ['1.00', '2.00', '3.00', '4.00', '5.00', '6.00', '7.00', '8.00', '9.00', '10.00'], datasets: [ { label: 'True', - data: [10, 15, 8], + data: [0, 1, 1, 1, 0, 1, 0, 0, 0, 1], backgroundColor: 'rgba(54, 162, 235, 0.6)', - }, - { - label: 'False', - data: [5, 7, 12], - backgroundColor: 'rgba(255, 99, 132, 0.6)', + barThickness: 1 }, ], }; +export const scatterData = (points) => { + let categories = ['A', 'B', 'C']; + return ({ + categories: categories, + labels: ['1.00', '2.00', '3.00', '4.00', '5.00', '6.00', '7.00', '8.00', '9.00', '10.00'], + datasets: [ + { + label: 'Scatter Dataset', + data: points.map((point, index) => ({ + x: index+1, // x is constant since we want to display rectangles aligned vertically + y: categories.indexOf(point), // map data to the index of the category + })), + backgroundColor: 'rgba(75, 192, 192, 0.6)', + pointStyle: 'rect', // Use 'rect' to display rectangles + pointRadius: 10, // Radius of the rectangle (size) + }, + ], + }) +} + export const stringData = { - labels: ['2024-09-01', '2024-09-02', '2024-09-03', '2024-09-04'], + labels: ['1.00', '2.00', '3.00', '4.00', '5.00', '6.00', '7.00', '8.00', '9.00', '10.00'], + categories: ['A', 'B', 'C'], datasets: [ { - label: 'Category A', - data: [12, 19, 3, 5], + data: [''], backgroundColor: 'rgba(255, 99, 132, 0.6)', }, { label: 'Category B', - data: [8, 15, 20, 10], + data: [''], backgroundColor: 'rgba(54, 162, 235, 0.6)', }, { label: 'Category C', - data: [5, 10, 15, 22], + data: [''], backgroundColor: 'rgba(75, 192, 192, 0.6)', }, ], From 695f7a9d2f7af33dac7e2d9110f483bfb7577ab6 Mon Sep 17 00:00:00 2001 From: Mazen Mohamed Nayef Date: Tue, 17 Sep 2024 14:24:56 +0300 Subject: [PATCH 23/70] 1- Scorecard Apis work --- app/api/responses.py | 45 +++++++ app/api/scorecard.py | 170 +++++++++++++++++++------- app/crud/metric.py | 10 ++ app/crud/microservice.py | 7 +- app/crud/microserviceScoreCard.py | 10 +- app/crud/scoreCard.py | 10 +- app/crud/scoreCardMetrics.py | 20 ++- app/crud/scorecardServiceMetric.py | 115 ++++++++++++----- app/schemas/apiResponse.py | 5 + app/schemas/microservice.py | 9 ++ app/schemas/scoreCard.py | 20 +-- app/schemas/scoreCardMetrics.py | 20 ++- app/schemas/scorecardServiceMetric.py | 12 +- app/utils/base.py | 106 +++++++++++++++- requirments.txt | Bin 0 -> 1498 bytes 15 files changed, 458 insertions(+), 101 deletions(-) create mode 100644 app/api/responses.py create mode 100644 app/schemas/apiResponse.py create mode 100644 requirments.txt diff --git a/app/api/responses.py b/app/api/responses.py new file mode 100644 index 0000000..3c858fe --- /dev/null +++ b/app/api/responses.py @@ -0,0 +1,45 @@ +from fastapi import Request +from fastapi.responses import ORJSONResponse, UJSONResponse, Response, JSONResponse +from typing import Any +from typing import Optional, Dict, Any +from fastapi.encoders import jsonable_encoder +import json +from app.schemas.apiResponse import CustomResponse + + +class ResponseCustomized(JSONResponse): + def render(self, data) -> JSONResponse: + print(data) + + #message = jsonable_encoder(message) + if isinstance(data,str): + print("message") + content = CustomResponse( + message = data + ) + else: + print("data") + content = data + content = jsonable_encoder(content) + return json.dumps( + content, + ensure_ascii=False, + allow_nan=False, + indent=None, + separators=(",", ":"), + ).encode("utf-8") + """ + def response_handler(exc :JSONResponse): + exc = jsonable_encoder(exc) + print("Hello") + print(exc) + if isinstance(exc.detail, str): + content = {"message": exc.detail} + else: + content = exc.detail + + return JSONResponse( + status_code= exc.status_code, + content = content + ) + """ \ No newline at end of file diff --git a/app/api/scorecard.py b/app/api/scorecard.py index a75bb49..db920b6 100644 --- a/app/api/scorecard.py +++ b/app/api/scorecard.py @@ -1,59 +1,137 @@ -from app import dependencies -from fastapi.exceptions import RequestValidationError -from app.schemas import ServiceMetricCreate, MetricCreate, scoreCard, microserviceScoreCard, scorecardServiceMetric -from fastapi import APIRouter, Depends, Request, exception_handlers, status, Response, HTTPException -from fastapi.responses import JSONResponse, PlainTextResponse +from app import dependencies +from fastapi import APIRouter, Depends from fastapi.encoders import jsonable_encoder -from pydantic import BaseModel, Field -from app.crud import CRUDMetric, CRUDServiceMetric, CRUDMicroserviceScoreCard, CRUDMicroservice, CRUDScoreCardServiceMetric -from app import schemas, models, crud +from app import schemas, crud from typing import Any, List -import json -from fastapi.routing import APIRoute -from app.utils.base import format_code -from .exceptions import HTTPResponseCustomized - +from app.utils.base import format_code, check_metric, stringify_value +from .exceptions import HTTPResponseCustomized, ResponseCustomized +from app.schemas.scoreCardMetrics import CustomJSONEncoder +from fastapi.responses import ORJSONResponse +from app.schemas.apiResponse import CustomResponse router = APIRouter() +# VALIDATIONS DONE +# 1) scorecard is already found or not using its code +# 2) if the list of serviceIDs contains duplicated IDs it will be cleared as it is gonna be set not list +# 3) if the scorecard is found or that id is just dummy id +# 4) made the func check_unique_id to check if the metrics passed is the same object passed twice or not +# 5) check_metric_weight to see the sum of the weights of the metrics +# 6) check if the metric is found or not +# 7) check the criteria if it is in the enum +@router.post("/", response_model=None) +def createScoreCard(scoreCardInput: schemas.scorecardServiceMetricCreate, + scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud), + serviceScorecardCrud: crud.CRUDMicroserviceScoreCard = Depends(dependencies.getMicroserviceScoreCardsCrud), + scorecardMetricCrud: crud.CRUDScoreCardMetric = Depends(dependencies.getScoreCardMetricsCrud), + serviceCrud: crud.CRUDMicroservice = Depends(dependencies.getMicroservicesCrud), + metricCrud: crud.CRUDMetric = Depends(dependencies.getMetricsCrud), + scorecard: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud) + ): + # Create the scorecard. + scoreCardInput.code = format_code(scoreCardInput.name) + scorecard = schemas.ScoreCardCreate( + name=scoreCardInput.name, + code=scoreCardInput.code, + description=scoreCardInput.description + ) + if (scoreCardCrud.getByScoreCardCode(scoreCardInput.code)): + raise HTTPResponseCustomized(status_code=400, detail="Scorecard already found") + # DELETE + else: + if (scoreCardCrud.getlatestID() == None): + scorecardID = 1 + else: + scorecardID = scoreCardCrud.getlatestID() + 1 + -@router.post("/", response_model=schemas.ScoreCard) -def createScoreCard(scoreCard: schemas.scorecardServiceMetric, scoreCardCrud: crud.CRUDScoreCardServiceMetric = Depends(dependencies.getScorecardServiceMetric)) -> Any: - try: - scoreCard.services = jsonable_encoder(scoreCard.services) - scoreCard.services = json.dumps(scoreCard.services) - scoreCard.metrics = jsonable_encoder(scoreCard.metrics) - scoreCard.metrics = json.dumps(scoreCard.metrics) - scoreCard.code = format_code(scoreCard.name) - return scoreCard - except: - return scoreCard - + # if the scorecardids are passed duplicated + servicesIDsSet = set(scoreCardInput.services) + # i need to check if the serviceid is found or not + serviceList = serviceCrud.getByServiceId(servicesIDsSet) + print(serviceList) + serviceListToBeCreated = [] + for service in serviceList: + if(service): + serviceScorecard = schemas.MicroserviceScoreCardCreate( + scoreCardId=scorecardID, + microserviceId=service + ) + serviceListToBeCreated.append(serviceScorecard) + else: + raise HTTPResponseCustomized(status_code=404, detail="Service not found") + -# I get all the scorecards id then go to microserviceSCORECARD to get all ids of microservices related to one scorecardID -@router.get("/", response_model=List[schemas.GetScoreCard]) -def getAllScoreCard(scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud), serviceCrud: crud.CRUDMicroserviceScoreCard= Depends(dependencies.getMicroserviceScoreCardsCrud)): - scoreCards = scoreCardCrud.list() - servicesID = [] - microservices = [] - for scorecard in scoreCards: - serviceid = serviceCrud.getservice(scorecard.id) - servicesID.append(serviceid) - for serviceID in servicesID: - microservice = serviceCrud.getByServiceId(serviceID) - microservice = jsonable_encoder(microservice) - microservices.append(microservice) - return "Hello World" + objects = [] + for metric in scoreCardInput.metrics: + metric_data = metricCrud.getById(metric.id) # Get the metric data + if (metric_data == None): + raise HTTPResponseCustomized(status_code=404, detail="Metric is not found") + metricCreate = schemas.metricTypeScorecard( + id=metric.id, + weight=metric.weight, + desiredValue=metric.desiredValue, + criteria=metric.criteria, + type=metric_data.type # Add the type directly from retrieved metric + ) + objects.append(metricCreate) + check_metric(objects) + for metric in scoreCardInput.metrics: + if (metricCrud.getById(metric.id)): + metric.desiredValue = stringify_value(metric.desiredValue) + scorecardmetric = schemas.ScoreCardMetricsCreate( + scoreCardId= scorecardID, + metricId= metric.id, + criteria= metric.criteria, + weight= metric.weight, + desiredValue= metric.desiredValue + ) + else: + raise HTTPResponseCustomized(status_code=404, detail="Metric not found") + try: + scorecardMetricCrud.create(scorecardmetric) + except Exception as e: + raise HTTPResponseCustomized(status_code=422,detail= f"Error: {e}") + + for service in serviceListToBeCreated: + try: + serviceScorecardCrud.create(service) + except Exception as e: + scorecardMetricCrud.deleteByScorecardId(scorecardID) + raise HTTPResponseCustomized(status_code=422,detail= f"Error: {e}") + + try: + scoreCardCrud.create(scorecard) + except Exception as e: + scorecardMetricCrud.deleteByScorecardId(scorecardID) + serviceScorecardCrud.deleteByScorecardId(scorecardID) + raise HTTPResponseCustomized(status_code=422,detail= f"Error: {e}") + raise HTTPResponseCustomized(status_code=201, detail="Scorecard created successfully") +@router.get("/", response_model=List[schemas.listScoreCard], response_class=ResponseCustomized) +def getAllScoreCard(scoreCardCrud: crud.CRUDScoreCardServiceMetric = Depends(dependencies.getScorecardServiceMetric)): + scorecard = scoreCardCrud.getlist() + #print(scorecard) + scorecard = jsonable_encoder(scorecard) + #print(scorecard) + return scorecard +""" @router.get("/{scorecardID}", response_model=schemas.ScoreCard) -def getScoreCard(scorecardID: int, scoreCardCrud: crud.CRUDScoreCardServiceMetric = Depends(dependencies.getScorecardServiceMetric)) -> Any: +def getScoreCard(scorecardID: int, scoreCardCrud: crud.CRUDScoreCardServiceMetric = Depends(dependencies.getScorecardServiceMetric)): scorecard = scoreCardCrud.getwithscorecardIDmetricandservice(scorecardID) + #print(scorecard) scorecard = jsonable_encoder(scorecard) - return HTTPResponseCustomized(status_code=200, detail=scoreCard) - + #print(scorecard) + return ResponseCustomized(status_code=200, content=scorecard) +""" # Delete one ScoreCard with its own ID -@router.delete("/{scorecardID}") -def deleteScorecard(scorecardID:int , scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud)) -> Any: +@router.delete("/{scorecardID}",response_model=CustomResponse ,response_class=ResponseCustomized) +def deleteScorecard(scorecardID: int, + scoreCardCrud: crud.CRUDScoreCard = Depends(dependencies.getScoreCardsCrud), + scorecardService: crud.CRUDMicroserviceScoreCard = Depends(dependencies.getMicroserviceScoreCardsCrud), + scorecardMetrics: crud.CRUDScoreCardMetric = Depends(dependencies.getScoreCardMetricsCrud)) -> Any: + scoreCardCrud.delete(scorecardID) - raise HTTPResponseCustomized(status_code = 200, detail = "Scorecard Has Been Deleted Successfully") - + scorecardService.deleteByScorecardId(scorecardID) + scorecardMetrics.deleteByScorecardId(scorecardID) + return "Scorecard deleted successfully" diff --git a/app/crud/metric.py b/app/crud/metric.py index 843ba8f..dbf95ba 100644 --- a/app/crud/metric.py +++ b/app/crud/metric.py @@ -13,6 +13,16 @@ def __init__(self, db_session: Session): def getByCode(self, code: str): return self.db_session.query(Metric).filter(Metric.code == code).first() + def getIdByCode(self, code: str): + return self.db_session.query(Metric).filter(Metric.code == code).first().id() + + def getById(self, id:int): + #return self.db_session.query(Metric).filter(Metric.id.in_(id)).all() + return self.db_session.query(Metric).filter(Metric.id == id).first() + def getByName(self, name: str): return self.db_session.query(Metric).filter(Metric.name == name).first() + + def getnamebyid(self, metricID: int): + return self.db_session.query(Metric).filter(Metric.id == metricID).first().name diff --git a/app/crud/microservice.py b/app/crud/microservice.py index 2bf847b..69865ff 100644 --- a/app/crud/microservice.py +++ b/app/crud/microservice.py @@ -21,6 +21,7 @@ def getByTeamIdAndCode(self, teamId: str, code: str): def getByServiceId(self, serviceID: int) -> Microservice: + #return self.db_session.query(Microservice).filter(Microservice.id.in_(serviceID)).all() return self.db_session.query(Microservice).filter(Microservice.id == serviceID).first() def getAllServicesWithTeamName(self) -> list[MicroserviceInDBBase]: @@ -51,7 +52,11 @@ def getByServiceIdWithTeam(self , service_id:int): return result def get_by_code (self , code:str): - return self.db_session.query(Microservice).filter(Microservice.code == code).first() + service = self.db_session.query(Microservice).filter(Microservice.code == code).first() + return service + + def getByCodeReturnIDs (self , code:str): + return self.db_session.query(Microservice).filter(Microservice.code == code).first().id() def check_service_name_exists(self, name: str): diff --git a/app/crud/microserviceScoreCard.py b/app/crud/microserviceScoreCard.py index 2d3e2cd..dcbc232 100644 --- a/app/crud/microserviceScoreCard.py +++ b/app/crud/microserviceScoreCard.py @@ -1,4 +1,5 @@ +from typing import Any from sqlalchemy.orm import Session from ..models import MicroserviceScoreCard from ..schemas import MicroserviceScoreCardCreate, MicroserviceScoreCardUpdate @@ -22,5 +23,10 @@ def deleteByServiceId(self,serviceid:int): self.db_session.query(MicroserviceScoreCard).filter(MicroserviceScoreCard.microserviceId == serviceid).delete() self.db_session.commit() - def getservice(self, scorecardId: int) -> list[MicroserviceScoreCard]: - return self.db_session.query(MicroserviceScoreCard).filter(MicroserviceScoreCard.scoreCardId == scorecardId).all() + def getservice(self, scorecardId: list[int]) -> list[MicroserviceScoreCard]: + return self.db_session.query(MicroserviceScoreCard).filter(MicroserviceScoreCard.id.in_(scorecardId)).all() + #return self.db_session.query(MicroserviceScoreCard).filter(MicroserviceScoreCard.scoreCardId == scorecardId).all() + + def deleteByScorecardId(self, scorecardID:int): + self.db_session.query(MicroserviceScoreCard).filter(MicroserviceScoreCard.scoreCardId == scorecardID).delete() + self.db_session.commit() \ No newline at end of file diff --git a/app/crud/scoreCard.py b/app/crud/scoreCard.py index 2f0b95c..20097f5 100644 --- a/app/crud/scoreCard.py +++ b/app/crud/scoreCard.py @@ -4,15 +4,19 @@ from ..models import Scorecard from ..schemas.scoreCard import ScoreCardCreate, ScoreCardUpdate from .base import CRUDBase +from sqlalchemy import func class CRUDScoreCard(CRUDBase[Scorecard, ScoreCardCreate, ScoreCardUpdate]): def __init__(self, db_session: Session): super(CRUDScoreCard, self).__init__(Scorecard, db_session) - def getByScoreCradId(self, ScoreCardId: str): + def getByScoreCardId(self, ScoreCardId: str): return self.db_session.query(Scorecard).filter(Scorecard.id == ScoreCardId).all() - def getByScoreCradIds(self, ScoreCardIds: list[int]): + def getByScoreCardIds(self, ScoreCardIds: list[int]): ids =[ScoreCardId for ScoreCardId in ScoreCardIds] - return self.db_session.query(Scorecard).filter(Scorecard.id.in_(ids)).all() \ No newline at end of file + return self.db_session.query(Scorecard).filter(Scorecard.id.in_(ids)).all() + + def getByScoreCardCode(self, code: str): + return self.db_session.query(Scorecard).filter(Scorecard.code == code).all() \ No newline at end of file diff --git a/app/crud/scoreCardMetrics.py b/app/crud/scoreCardMetrics.py index e77fa55..2eb8c65 100644 --- a/app/crud/scoreCardMetrics.py +++ b/app/crud/scoreCardMetrics.py @@ -10,8 +10,20 @@ class CRUDScoreCardMetric(CRUDBase[ScoreCardMetrics, ScoreCardMetricsCreate, Sco def __init__(self, db_session: Session): super(CRUDScoreCardMetric, self).__init__(ScoreCardMetrics, db_session) - def getbyscorecardID(self, scorecardID) -> list[ScoreCardMetrics]: - return self.db_session.query(ScoreCardMetrics).filter(ScoreCardMetrics.scoreCardId == scorecardID).all() + def getbyscorecardID(self, scorecardID: list[int]) -> list[ScoreCardMetrics]: + return self.db_session.query(ScoreCardMetrics).filter(ScoreCardMetrics.scoreCardId.in_(scorecardID)).all() + #return self.db_session.query(ScoreCardMetrics).filter(ScoreCardMetrics.scoreCardId == scorecardID).all() - def getbymetricID(self, metricID) : - return self.db_session.query(ScoreCardMetrics).filter(ScoreCardMetrics.metricId == metricID).first() \ No newline at end of file + def getbymetricID(self, metricID: int) -> ScoreCardMetrics : + return self.db_session.query(ScoreCardMetrics).filter(ScoreCardMetrics.metricId == metricID).first() + + def getbymetricIDandScorecardID(self, metricID: int, scorecardID: int): + return ( + self.db_session.query(ScoreCardMetrics) + .filter(ScoreCardMetrics.metricId == metricID, ScoreCardMetrics.scoreCardId == scorecardID) + .first() + ) + + def deleteByScorecardId(self, scorecardID:int): + self.db_session.query(ScoreCardMetrics).filter(ScoreCardMetrics.scoreCardId == scorecardID).delete() + self.db_session.commit() \ No newline at end of file diff --git a/app/crud/scorecardServiceMetric.py b/app/crud/scorecardServiceMetric.py index ff065b9..a8fdefa 100644 --- a/app/crud/scorecardServiceMetric.py +++ b/app/crud/scorecardServiceMetric.py @@ -1,68 +1,121 @@ from sqlalchemy.orm import Session -from app.api.exceptions import HTTPResponseCustomized - -from ..models import Scorecard -from ..schemas import scorecardServiceMetricCreate +from ..schemas import scorecardServiceMetricCreate, scorecardServiceMetric, scorecardServiceMetricUpdate from . import CRUDScoreCardMetric, CRUDMicroserviceScoreCard, CRUDMetric, CRUDScoreCard, CRUDMicroservice from .base import CRUDBase from app.utils import format_code -from fastapi.encoders import jsonable_encoder +from app.utils.base import parse_stringified_value -class CRUDScoreCardServiceMetric: +class CRUDScoreCardServiceMetric(CRUDBase[scorecardServiceMetric,scorecardServiceMetricCreate,scorecardServiceMetricUpdate]): def __init__(self, db_session: Session): self.scoreCard = CRUDScoreCard(db_session) self.microServiceScoreCard = CRUDMicroserviceScoreCard(db_session) self.scoreCardMetric = CRUDScoreCardMetric(db_session) self.microService = CRUDMicroservice(db_session) - + self.metric = CRUDMetric(db_session) + """ def getwithscorecardIDmetricandservice(self, scorecardID:int): # it handles if the scorecard is not found & raises error message scorecard = self.scoreCard.get(scorecardID) - metricIDs = self.scoreCardMetric.getbyscorecardID(scorecardID) - serviceIDs = self.microServiceScoreCard.getservice(scorecardID) - + # get ids of metrics and services used in this scorecard + metrics = self.scoreCardMetric.getbyscorecardID(scorecardID) + services = self.microServiceScoreCard.getservice(scorecardID) + metric_ids = [sc_id.metricId for sc_id in metrics] + service_ids = [sc_id.microserviceId for sc_id in services] + metricOBJs = [] serviceOBJs = [] - metric_ids = [sc_id.metricId for sc_id in metricIDs] - service_ids = [sc_id.microserviceId for sc_id in serviceIDs] - print (metric_ids) - print (service_ids) - - - for metricID in metric_ids: - metric = self.scoreCardMetric.getbymetricID(metricID) + metricCreatedList = self.metric.getById(metric_ids) + metricList = self.scoreCardMetric.getbymetricIDandScorecardID(metric_ids, scorecardID) + print(metricCreatedList, metricList) + for metricCreated,metric in zip(metricCreatedList,metricList): + #metricCreated = self.metric.getById(metric.metricId) + print(metricCreated) + metrictype = metricCreated.type + print(metrictype, metric.desiredValue) + print(metricCreated, metric) + metric.desiredValue = parse_stringified_value(metric.desiredValue, metrictype) + metricOBJs.append({ - 'scoreCardId': metric.scoreCardId, - 'metricId': metric.metricId, + 'id': metric.metricId, 'criteria': metric.criteria, 'desiredValue': metric.desiredValue, 'weight': metric.weight }) - - print(metricOBJs) - - for serviceID in service_ids: - service = self.microService.getByServiceId(serviceID) - print (service) + + serviceList = self.microService.getByServiceId(service_ids) + for service in serviceList: serviceOBJs.append({ 'name': service.name, 'description': service.description, 'code': service.code, + 'id': service.id, 'teamId': service.teamId }) - - print(serviceOBJs) scorecard.code = format_code(scorecard.name) - print (scorecard.name) - scorecard = scorecardServiceMetricCreate( + scorecard = scorecardServiceMetric( + id = scorecard.id, name = scorecard.name, code = scorecard.code, description = scorecard.description, metrics = metricOBJs, services = serviceOBJs ) + return scorecard.model_dump() + """ + def getlist(self): + # Got all the scorecard ids i want + scorecards = self.scoreCard.list() + scorecardIDs = [] + for scorecard in scorecards: + scorecardIDs.append(scorecard.id) + + out = [] + + metrics = self.scoreCardMetric.getbyscorecardID(scorecardIDs) + services = self.microServiceScoreCard.getservice(scorecardIDs) + scorecard = self.scoreCard.getByScoreCardIds(scorecardID) + + for scorecardID in scorecardIDs: + metric_ids = [sc_id.metricId for sc_id in metrics] + service_ids = [sc_id.microserviceId for sc_id in services] + + metricOBJs = [] + serviceOBJs = [] - return metricIDs \ No newline at end of file + for metricID in metric_ids: + metric = self.scoreCardMetric.getbymetricIDandScorecardID(metricID, scorecardID) + metricCreated = self.metric.getById(metric.metricId) + metrictype = metricCreated.type + metric.desiredValue = parse_stringified_value(metric.desiredValue, metrictype) + metricOBJs.append({ + 'id': metric.metricId, + 'criteria': metric.criteria, + 'desiredValue': metric.desiredValue, + 'weight': metric.weight + }) + + + for serviceID in service_ids: + service = self.microService.getByServiceId(serviceID) + serviceOBJs.append({ + 'name': service.name, + 'description': service.description, + 'code': service.code, + 'id': service.id, + 'teamId': service.teamId + }) + + scorecard.code = format_code(scorecard.name) + scorecard = scorecardServiceMetric( + id = scorecard.id, + name = scorecard.name, + code = scorecard.code, + description = scorecard.description, + metrics = metricOBJs, + services = serviceOBJs + ) + out.append(scorecard.model_dump()) + return out \ No newline at end of file diff --git a/app/schemas/apiResponse.py b/app/schemas/apiResponse.py new file mode 100644 index 0000000..31bd100 --- /dev/null +++ b/app/schemas/apiResponse.py @@ -0,0 +1,5 @@ +from typing import Optional +from pydantic import BaseModel + +class CustomResponse(BaseModel): + message : str diff --git a/app/schemas/microservice.py b/app/schemas/microservice.py index ffa5192..06dbe3a 100644 --- a/app/schemas/microservice.py +++ b/app/schemas/microservice.py @@ -25,9 +25,18 @@ class MicroserviceCreateApi(MicroserviceBase): teamId:Optional[uuid.UUID] = None scorecardids: Optional [list[int]] = None + class Config: orm_mode = True +class Microserviceforscorecard(BaseModel): + name: str + description: str + teamId:uuid.UUID = None + id: int + + class Config: + orm_mode = True # Properties to receive on microservice update class MicroserviceUpdate(MicroserviceBase): name: str diff --git a/app/schemas/scoreCard.py b/app/schemas/scoreCard.py index 19f919b..a06f575 100644 --- a/app/schemas/scoreCard.py +++ b/app/schemas/scoreCard.py @@ -8,16 +8,11 @@ class ScoreCardBase(BaseModel): name: Optional[str] = None description: Optional[str] = None code: Optional[str] = None - services: list[microservice.MicroserviceCreateApi] - metrics: list[scoreCardMetrics.ScoreCardMetricsCreate] # Properties to receive on scorecard creation class ScoreCardCreate(ScoreCardBase): name: str description: str - - - # Properties to receive on scorecard update class ScoreCardUpdate(ScoreCardBase): @@ -35,9 +30,20 @@ class ScoreCardInDBBase(ScoreCardBase): class Config: orm_mode = True -class GetScoreCard(ScoreCardBase): +class GetScoreCard(BaseModel): id: int - services: microservice.MicroserviceBase + name: str + code: str + description: str + services: list[microservice.MicroserviceBase] + +class listScoreCard(BaseModel): + id: int + name: str + code: str + description: str + services: list[microservice.Microserviceforscorecard] + metrics: list[scoreCardMetrics.MetricListforScorecardGet] # Properties to return to client class ScoreCard(ScoreCardInDBBase): diff --git a/app/schemas/scoreCardMetrics.py b/app/schemas/scoreCardMetrics.py index 0776936..046fe9d 100644 --- a/app/schemas/scoreCardMetrics.py +++ b/app/schemas/scoreCardMetrics.py @@ -15,9 +15,8 @@ class ScoreCardMetricsBase(BaseModel): # Properties to receive on ScoreCardMetrics creation class ScoreCardMetricsCreate(ScoreCardMetricsBase): scoreCardId: int - metricId: int criteria: str - desiredValue: Optional[Union[str,float,int,bool]] = None + desiredValue: Union[str,float,int,bool] weight: int # Properties to receive on ScoreCardMetrics update @@ -38,6 +37,13 @@ class ScoreCardMetricsInDBBase(ScoreCardMetricsBase): class Config: orm_mode = True +class MetricListforScorecardGet(BaseModel): + id: int # This one is metricID + criteria: str + desiredValue: Optional[Union[str,float,int,bool]] = None + weight: int + + # Properties to return to client class ScoreCardMetrics(ScoreCardMetricsInDBBase): pass @@ -48,7 +54,15 @@ class ScoreCardMetricsInDB(ScoreCardMetricsInDBBase): class metric4scorecard(ScoreCardMetricsBase): - name: Optional[str] criteria: Optional[str] desiredValue: Optional[Union[str,float,int,bool]] weight: Optional[int] + +class metricCreateScorecard(BaseModel): + criteria: str + desiredValue: Union[str,float,int,bool] + weight: int + id: int + +class metricTypeScorecard(metricCreateScorecard): + type: str diff --git a/app/schemas/scorecardServiceMetric.py b/app/schemas/scorecardServiceMetric.py index 05abf6a..1754638 100644 --- a/app/schemas/scorecardServiceMetric.py +++ b/app/schemas/scorecardServiceMetric.py @@ -7,14 +7,20 @@ class scorecardServiceMetric(BaseModel): name: Optional[str] = None code: Optional[str] = None description: Optional[str] = None - metrics: Optional[list[scoreCardMetrics.metric4scorecard]] = [] - services: Optional[list[microservice.MicroserviceCreateApi]] = [] + metrics: Optional[list[scoreCardMetrics.MetricListforScorecardGet]] = [] + services: Optional[list[microservice.Microserviceforscorecard]] = [] class Config: orm_mode = True class scorecardServiceMetricCreate(scorecardServiceMetric): - pass + name: str + description: str + # Here i will get the name of the services then search by code + # to get the id of the service and update the microservicescorecard table + services: Optional[list[int]] = [] + metrics: Optional[list[scoreCardMetrics.metricCreateScorecard]] = [] + # Properties to receive on microserviceScoreCard update class scorecardServiceMetricUpdate(scorecardServiceMetric): diff --git a/app/utils/base.py b/app/utils/base.py index 33b24cc..547ed37 100644 --- a/app/utils/base.py +++ b/app/utils/base.py @@ -1,5 +1,109 @@ import re +from app.api.exceptions import HTTPResponseCustomized +from fastapi import Depends +from app import crud, dependencies +from app import dependencies +from fastapi.exceptions import RequestValidationError +from app.schemas import ServiceMetricCreate, MetricCreate, scoreCard, microserviceScoreCard, scorecardServiceMetric +from fastapi import APIRouter, Depends, Request, exception_handlers, status, Response, HTTPException +from fastapi.responses import JSONResponse, PlainTextResponse +from fastapi.encoders import jsonable_encoder +from pydantic import BaseModel, Field +from app.crud import CRUDMetric, CRUDServiceMetric, CRUDMicroserviceScoreCard, CRUDMicroservice +from app import schemas, models, crud +from typing import Any, List +import json +from fastapi.routing import APIRoute + +db_session = dependencies.get_db() +metricCrud: crud.CRUDMetric = CRUDMetric(db_session) def format_code(name): code = re.sub(r'\s+', '-', name.strip()) - return code.lower() \ No newline at end of file + return code.lower() + +def check_unique_ids(objects): + id_set = set() + for obj in objects: + if obj.id in id_set: + raise HTTPResponseCustomized(status_code=400, detail="Metrics IDs are not unique, Please don't duplicate your metric") + id_set.add(obj.id) + return True + +def check_metric_weight(objects): + sum = 0 + for obj in objects: + sum += obj.weight + if (sum == 100): + return True + raise HTTPResponseCustomized(status_code=400, detail="Sum of metric weight is not 100") + +def check_metric_type(objects): + for obj in objects: + print(obj.type) + print(obj.desiredValue) + if (obj.type == "integer"): + if (not isinstance(obj.desiredValue, int)): + raise HTTPResponseCustomized(status_code=400, detail="desierdValue is not correct for integer metric") + elif (obj.type == "boolean"): + if (not isinstance(obj.desiredValue, bool)): + raise HTTPResponseCustomized(status_code=400, detail="desierdValue is not correct for boolean metric") + elif (obj.type == "string"): + if (not isinstance(obj.desiredValue, str)): + raise HTTPResponseCustomized(status_code=400, detail="desierdValue is not correct for string metric") + elif (obj.type == "float"): + if (not isinstance(obj.desiredValue, float)): + raise HTTPResponseCustomized(status_code=400, detail="desierdValue is not correct for float metric") + +criteriaStates = ("greater", "smaller", "equal", "greater or equal", "smaller or equal") +def check_metric_criteria(objects): + for obj in objects: + if (obj.criteria not in criteriaStates): + raise HTTPResponseCustomized(status_code=400, detail="Criteria is not correct") + + if (obj.type == "string" or obj.type == "boolean"): + if (obj.criteria != "equal"): + raise HTTPResponseCustomized(status_code=400, detail="Criteria is not correct for this metric, you must make it equal") + + +def check_metric(objects): + check_unique_ids(objects) + check_metric_weight(objects) + check_metric_type(objects) + check_metric_criteria(objects) + + +def parse_stringified_value(value: str, target_type: str)-> int | float | bool| str : + try: + if target_type == 'boolean': + if value.lower() in ('true', '1'): + return True + elif value.lower() in ('false', '0'): + return False + else: + raise ValueError(f"Cannot convert {value} to boolean.") + elif target_type == 'integer': + try: + return int(value) + except ValueError: + raise ValueError(f"Cannot convert {value} to integer.") + elif target_type == 'float': + try: + return float(value) + except ValueError: + raise ValueError(f"Cannot convert {value} to float.") + elif target_type == 'string': + return value + except : + raise ValueError(f"Unsupported target type: {target_type}") + + +def stringify_value(value) -> str: + if isinstance(value, bool): + return 'True' if value else 'False' + elif isinstance(value, (int, float)): + return str(value) + elif isinstance(value, str): + return value + else: + raise ValueError(f"Unsupported value type: {type(value)}") \ No newline at end of file diff --git a/requirments.txt b/requirments.txt new file mode 100644 index 0000000000000000000000000000000000000000..78fa19f277ae383bcab0264bc2ab0022f2b0d9dc GIT binary patch literal 1498 zcmZ{kPjA{#5XARfsUO8rZ1Sf)^pI=SNU3t_2~jXH2{slsC4Bj|zuEOOMrwr&7CSpT zJG<}w`Mt1)&(3;V@RYW)jNg;Bym$76&$V6IJohHg(E(JnvJ;ih{*XrcmCY@m$oH$X>XpdEFtcP*pBFq8Vjp=k~%548xVWf-h+B^ zTx%8ogw`22brY3Vbkfo13B?uo#!-cHB~0mcHdLM4FDgpgieK^XN4#>vfidJ>8 zA;N*ZJ5vpnH19am%Iw&%5`OK!+^F!n9yQ64*qM%~?iAfBaqnF2&a-`|_5(aiXRL>v zkylbO8+mjxwGT0aI2VDCs@R%z`^CH!&3&rVXy~28^Nu_6vU6?vm8ZIqA}d@t;I%eH tr!nrCsH*R{xsE97UB9}N!t;rY8#HElB=VEk4(uE6Y38|~rBEwx{{pB0*jWGo literal 0 HcmV?d00001 From 1c33bdb8a57513514105d1f6f6b335492c5fe6af Mon Sep 17 00:00:00 2001 From: Ammar-Radwan Date: Tue, 17 Sep 2024 16:25:26 +0300 Subject: [PATCH 24/70] cleaning and refactoring frontend --- frontend/favicon.ico | Bin 3870 -> 0 bytes frontend/index.html | 43 ---------- frontend/manifest.json | 25 ------ frontend/src/App.js | 38 ++------- frontend/src/components/TagsBox.jsx | 16 +--- frontend/src/components/common/TagsList.jsx | 16 ++-- frontend/src/components/layout/NavBar.jsx | 7 +- frontend/src/pages/MetricCreateEdit.jsx | 21 +++-- frontend/src/pages/Metrics.jsx | 6 +- frontend/src/pages/NotFound.jsx | 2 +- frontend/src/pages/ScorecardCreateEdit.jsx | 8 +- frontend/src/routes/MainRouter.jsx | 83 ++++++++++++++++++++ frontend/src/styles/layouts/Layout.css | 11 +-- frontend/src/styles/pages/Metrics.css | 9 +++ frontend/src/styles/pages/Scorecards.css | 3 + 15 files changed, 141 insertions(+), 147 deletions(-) delete mode 100644 frontend/favicon.ico delete mode 100644 frontend/index.html delete mode 100644 frontend/manifest.json create mode 100644 frontend/src/routes/MainRouter.jsx create mode 100644 frontend/src/styles/pages/Scorecards.css diff --git a/frontend/favicon.ico b/frontend/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 zcma);c{J4h9>;%nil|2-o+rCuEF-(I%-F}ijC~o(k~HKAkr0)!FCj~d>`RtpD?8b; zXOC1OD!V*IsqUwzbMF1)-gEDD=A573Z-&G7^LoAC9|WO7Xc0Cx1g^Zu0u_SjAPB
    3vGa^W|sj)80f#V0@M_CAZTIO(t--xg= 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/frontend/index.html b/frontend/index.html deleted file mode 100644 index aa069f2..0000000 --- a/frontend/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - React App - - - -
    - - - diff --git a/frontend/manifest.json b/frontend/manifest.json deleted file mode 100644 index 080d6c7..0000000 --- a/frontend/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/frontend/src/App.js b/frontend/src/App.js index 60be83b..bb92170 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -1,40 +1,12 @@ import React from 'react'; -import {BrowserRouter, Routes, Route, Navigate} from 'react-router-dom'; -import MetricCreateEdit from './pages/MetricCreateEdit'; -import Services from './pages/Services.jsx'; -import ServiceInfo from './pages/ServiceInfo.jsx'; -import Metrics from './pages/Metrics'; -import NotFound from './pages/NotFound'; -import Scorecards from './pages/Scorecards'; -import ScorecardCreateEdit from './pages/ScorecardCreateEdit.jsx'; -import ServiceCreateEdit from './pages/ServiceCreateEdit'; -import ScorecardMetrics from './pages/ScorecardMetrics'; - +import {BrowserRouter, Routes, Route, Navigate, RouterProvider} from 'react-router-dom'; +import MainRouter from './routes/MainRouter'; function App() { return ( - - - {/* Services */} - }/> - }/> - }/> - }/> - }/> - {/* Scorecards */} - }/> - }/> - }/> - {/* Metrics */} - }/> - }/> - }/> - }/> - {/* Not Found */} - } /> - } /> - - + + + ); } diff --git a/frontend/src/components/TagsBox.jsx b/frontend/src/components/TagsBox.jsx index 7f8da25..b1e0a8a 100644 --- a/frontend/src/components/TagsBox.jsx +++ b/frontend/src/components/TagsBox.jsx @@ -1,12 +1,9 @@ -import React, { useState, useEffect, useRef } from 'react' +import React, { useRef } from 'react' import TagsList from '../components/common/TagsList.jsx' import '../styles/components/TagsBox.css' const TagsBox = (props) => { - // const [tags, setTags] = useState([]); - const tagsBoxRef = useRef(null); const inputRef = useRef(null); - const tagsUlRef = useRef(null); const addTag = (e) => { if (e.key !== 'Enter') return; @@ -15,10 +12,6 @@ const TagsBox = (props) => { }; const createTags = () => { - const tagsBox = tagsBoxRef.current; - if (tagsBox == null) { console.log('tagsBox not found'); return; } - const tagsUl = tagsUlRef.current; - if (tagsUl == null) { console.log('tagsBox not found'); return; } const inputElem = inputRef.current; if (inputElem == null) { console.log('tagsBox not found'); return; } const tagsString = inputElem.value?.replace(/\s+/g, ' ') ?? ""; @@ -27,16 +20,13 @@ const TagsBox = (props) => { props.setTags((prevTags) => Array.from(new Set([...prevTags, ...tagsList]))) inputElem.value = ''; } - return ( -
    +
    Please add a comma after each tag and press enter
    -
      - -
    + { setTags((tags) => tags.filter(tag => tag != tagName)); }; - return tags?.map((tag, index) => ( -
  • - {tag} -
  • - )) + return ( +
      + {tags?.map((tag, index) => ( +
    • + {tag} +
    • + ))} +
    + ); } export default TagsList \ No newline at end of file diff --git a/frontend/src/components/layout/NavBar.jsx b/frontend/src/components/layout/NavBar.jsx index ea19d33..406a55c 100644 --- a/frontend/src/components/layout/NavBar.jsx +++ b/frontend/src/components/layout/NavBar.jsx @@ -1,11 +1,14 @@ -import React from 'react' +import React from 'react'; +import '../../styles/layouts/Layout.css'; const NavBar = () => { return (