From aba7a1574602a2430ed4c7f87c63bd6825dceb08 Mon Sep 17 00:00:00 2001 From: yqni13 Date: Fri, 13 Mar 2026 20:38:31 +0100 Subject: [PATCH 1/6] feat: add form-data parser middleware, refactoring --- backend/src/controllers/tickets.controller.ts | 2 +- .../files.parser.middleware.ts} | 0 .../parser/form-data.parser.middleware.ts | 21 +++++++++ backend/src/models/tickets.model.ts | 19 +++++--- backend/src/routes/tickets.route.ts | 5 ++- backend/src/utils/common.utils.ts | 3 -- .../repositories/tickets.integration.test.ts | 3 ++ .../files.parser.middleware.test.ts} | 2 +- .../form-data.parser.middleware.test.ts | 44 +++++++++++++++++++ 9 files changed, 87 insertions(+), 12 deletions(-) rename backend/src/middleware/{files/parse.files.middleware.ts => parser/files.parser.middleware.ts} (100%) create mode 100644 backend/src/middleware/parser/form-data.parser.middleware.ts rename backend/tests/unit-tests/middleware/{files/parse.files.middleware.test.ts => parser/files.parser.middleware.test.ts} (95%) create mode 100644 backend/tests/unit-tests/middleware/parser/form-data.parser.middleware.test.ts diff --git a/backend/src/controllers/tickets.controller.ts b/backend/src/controllers/tickets.controller.ts index 8f34398..5305874 100644 --- a/backend/src/controllers/tickets.controller.ts +++ b/backend/src/controllers/tickets.controller.ts @@ -55,7 +55,7 @@ class TicketsController { client_id: req.apiClients.client_id, user_id: req.apiUsers.user_id }; - const files = req.files as Express.Multer.File[] ?? null; + const files = !req.files || req.files.length === 0 ? null : req.files as Express.Multer.File[]; const response: TicketsResponseDTO = await ticketsService.createTicket(dto, files); res.json(response); } catch(err: any) { diff --git a/backend/src/middleware/files/parse.files.middleware.ts b/backend/src/middleware/parser/files.parser.middleware.ts similarity index 100% rename from backend/src/middleware/files/parse.files.middleware.ts rename to backend/src/middleware/parser/files.parser.middleware.ts diff --git a/backend/src/middleware/parser/form-data.parser.middleware.ts b/backend/src/middleware/parser/form-data.parser.middleware.ts new file mode 100644 index 0000000..24f60db --- /dev/null +++ b/backend/src/middleware/parser/form-data.parser.middleware.ts @@ -0,0 +1,21 @@ +import { Request, Response, NextFunction } from "express"; +import { logError } from "../../utils/common.utils"; + +export function parseFormData() { + return function(req: Request, res: Response, next: NextFunction) { + try { + if(req.body && req.body.data) { + req.body = JSON.parse(req.body.data); + } + next(); + } catch(err: any) { + err.status = !err.status ? 404 : err.status; + logError( + "PARSE MIDDLEWARE ERROR ON FORM DATA", + "SUPPORT_middleware_parseFormData", + err + ); + next(err); + } + } +} \ No newline at end of file diff --git a/backend/src/models/tickets.model.ts b/backend/src/models/tickets.model.ts index 2b011ee..b6f4aee 100644 --- a/backend/src/models/tickets.model.ts +++ b/backend/src/models/tickets.model.ts @@ -9,7 +9,7 @@ class TicketsModel { async generateTicketEntity(dto: TicketsCreateDTO, files: Express.Multer.File[] | null): Promise { const timestamp = CommonUtils.getTimestampUTC(); const newId = CommonUtils.generateUUID(); - let paths: string[] | null = null; + let paths: string[] | undefined = undefined; if(files) { const filesService = new FilesService(files, 'tickets'); filesService.transformFiles(newId); @@ -24,7 +24,7 @@ class TicketsModel { option: dto.option, title: dto.title, message: dto.message, - resource_paths: paths ?? dto.resource_paths, + resource_paths: paths, flag: null, info_browser: dto.info_browser, info_os: dto.info_os, @@ -55,9 +55,18 @@ class TicketsModel { { timeRange: 30, apply: (status: TicketStatus) => status === TicketStatus.CLOSED }, { timeRange: 0, apply: (status: TicketStatus) => status === TicketStatus.CANCEL } ]; - const factorMilSecToDays = 1 / (1000 * 3600 * 24); - const days = Math.floor((CommonUtils.now().getTime() - new Date(dto.created_on).getTime()) * factorMilSecToDays); - const isPermitted = deleteRules.find(rule => days >= rule.timeRange)?.apply(dto.status) ?? false + const factorMilSecToDays = 1 / (1000 * 3600 * 24); + const convertedTS = (ts: string) => { + const offSetInMs = new Date(ts).getTimezoneOffset(); + const conversion = 60 * 1000; + // Javascript turns - (-) => + + return offSetInMs < 0 + ? new Date(ts).getTime() - ((-1) * offSetInMs * conversion) + : new Date(ts).getTime() - (offSetInMs * conversion); + } + + const days = Math.floor((CommonUtils.now().getTime() - convertedTS(dto.created_on)) * factorMilSecToDays); + const isPermitted = deleteRules.find(rule => days >= rule.timeRange)?.apply(dto.status) ?? false; if(!isPermitted) { throw new PermissionException('support-delete-prohibited'); } diff --git a/backend/src/routes/tickets.route.ts b/backend/src/routes/tickets.route.ts index f56083d..af6d164 100644 --- a/backend/src/routes/tickets.route.ts +++ b/backend/src/routes/tickets.route.ts @@ -14,9 +14,10 @@ import { authClient } from '../middleware/auth.client.middleware'; import { authUser } from '../middleware/auth.user.middleware'; import { maintain } from '../middleware/maintenance.middleware'; import { observe } from '../middleware/observe.middleware'; -import { parseFiles } from '../middleware/files/parse.files.middleware'; +import { parseFiles } from '../middleware/parser/files.parser.middleware'; import { requirePayload } from '../middleware/require.middleware'; import { validateFiles } from '../middleware/files/validate.files.middleware'; +import { parseFormData } from '../middleware/parser/form-data.parser.middleware'; const router = Router(); @@ -46,7 +47,7 @@ router.post( // create router.post( '/create', - maintain(), parseFiles(), authClient(), authUser(), + maintain(), parseFiles(), parseFormData(), authClient(), authUser(), requirePayload(), observe(), validateFiles(), postSchema, factory(ticketsController.postTicket) diff --git a/backend/src/utils/common.utils.ts b/backend/src/utils/common.utils.ts index 49aefc1..a2b6dcb 100644 --- a/backend/src/utils/common.utils.ts +++ b/backend/src/utils/common.utils.ts @@ -1,6 +1,3 @@ -import { InvalidSourceException } from './exceptions/common.exception'; -import { MailSource } from './enums/mail-source.enum'; -import { secrets } from './secrets.utils'; import { v4 as uuid_v4 } from 'uuid'; import crypto from 'crypto'; import { Logger } from '../logger/config.logger'; diff --git a/backend/tests/integration-tests/repositories/tickets.integration.test.ts b/backend/tests/integration-tests/repositories/tickets.integration.test.ts index 2a1119d..2cc193f 100644 --- a/backend/tests/integration-tests/repositories/tickets.integration.test.ts +++ b/backend/tests/integration-tests/repositories/tickets.integration.test.ts @@ -45,6 +45,9 @@ jest.mock('../../../src/middleware/auth.user.middleware', () => ({ next(); }) })); +jest.mock('../../../src/middleware/parser/form-data.parser.middleware.ts', () => ({ + parseFormData: jest.fn(() => (req: Request, res: Response, next: NextFunction) => next()) +})) jest.mock('../../../src/middleware/maintenance.middleware', () => ({ maintain: jest.fn(() => (req: Request, res: Response, next: NextFunction) => next()) })); diff --git a/backend/tests/unit-tests/middleware/files/parse.files.middleware.test.ts b/backend/tests/unit-tests/middleware/parser/files.parser.middleware.test.ts similarity index 95% rename from backend/tests/unit-tests/middleware/files/parse.files.middleware.test.ts rename to backend/tests/unit-tests/middleware/parser/files.parser.middleware.test.ts index 53ed8ff..d28336f 100644 --- a/backend/tests/unit-tests/middleware/files/parse.files.middleware.test.ts +++ b/backend/tests/unit-tests/middleware/parser/files.parser.middleware.test.ts @@ -1,6 +1,6 @@ import multer from 'multer'; import * as CommonUtils from '../../../../src/utils/common.utils'; -import { parseFiles } from '../../../../src/middleware/files/parse.files.middleware'; +import { parseFiles } from '../../../../src/middleware/parser/files.parser.middleware'; jest.mock('multer'); // Tests including multer parsing mocked files => tickets.integration.test.ts diff --git a/backend/tests/unit-tests/middleware/parser/form-data.parser.middleware.test.ts b/backend/tests/unit-tests/middleware/parser/form-data.parser.middleware.test.ts new file mode 100644 index 0000000..5a96adb --- /dev/null +++ b/backend/tests/unit-tests/middleware/parser/form-data.parser.middleware.test.ts @@ -0,0 +1,44 @@ +import * as CommonUtils from '../../../../src/utils/common.utils'; +import { parseFormData } from '../../../../src/middleware/parser/form-data.parser.middleware'; + +describe('Unit-tests (middleware), priority: fn parseFormData()', () => { + + const mockBody = {user_email: 'test@demo.com', option: 'support'}; + let req: any; + const res: any = {}; + const next = jest.fn(); + beforeEach(() => { + req = { body: { data: JSON.stringify(mockBody)}}; + jest.clearAllMocks(); + }) + afterEach(() => { + jest.restoreAllMocks(); + }) + + describe('Testing valid fn calls', () => { + + test('Mock form-data parsing into req.body, call next()', () => { + const middleware = parseFormData(); + middleware(req, res, next); + + expect(next).toHaveBeenCalledWith(); + expect(req.body).toMatchObject(mockBody); + }) + }) + + describe('Testing invalid fn calls', () => { + + test('Mock file-parsing of data into req.files, call next(err)', () => { + jest.spyOn(CommonUtils, 'logError').mockImplementation(); + const errorMsg = 'parsing failed'; + JSON.parse = jest.fn().mockImplementationOnce(() => {throw new Error(errorMsg)}) + + const middleware = parseFormData(); + middleware(req, res, next); + + expect(next).toHaveBeenCalledWith( + expect.objectContaining({ message: errorMsg }) + ); + }) + }) +}) \ No newline at end of file From b031fabf85b41a311c32b139f2e1f31240c03214 Mon Sep 17 00:00:00 2001 From: yqni13 Date: Sat, 14 Mar 2026 00:37:15 +0100 Subject: [PATCH 2/6] refactor: use finally block to close db connection --- README.md | 8 ++-- .../src/repositories/clients.repository.ts | 28 +++++------ .../repositories/demo-limits.repository.ts | 12 ++--- .../feedback-rating.repository.ts | 12 ++--- .../src/repositories/feedback.repository.ts | 48 +++++++++---------- backend/src/repositories/meta.repository.ts | 28 +++++------ .../repositories/rate-limits.repository.ts | 12 ++--- .../src/repositories/tickets.repository.ts | 28 +++++------ backend/src/repositories/users.repository.ts | 28 +++++------ docs/CHANGELOG.md | 6 +-- 10 files changed, 103 insertions(+), 107 deletions(-) diff --git a/README.md b/README.md index 1cd7849..2e4f933 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# yqni13 | support -$\texttt{\color{teal}{v1.4.4}}$ +# yqni13 | $\texttt{\colorbox{cornflowerblue}{\color{white}{SUPPORT}}}$ +### $\textsf{\color{brown}{v1.4.4}}$ -### Support hub - handling feedback & ratings (`/feedback`) and bug/support requests (`/tickets`) including file attachments across multiple applications via REST API built with NodeJS (Typescript), Express & PostgreSQL in Docker container. Created following Test-Driven Development (450+ tests including ephemeral database by testcontainers) and hosting env:prod via Render, Neon and Cloudflare. +#### Support hub - handling feedback & ratings (`/feedback`) and bug/support requests (`/tickets`) including file attachments across multiple applications via REST API built with NodeJS (Typescript), Express & PostgreSQL in Docker container. Created following Test-Driven Development (450+ tests including ephemeral database by testcontainers) and hosting env:prod via Render, Neon and Cloudflare.
@@ -64,7 +64,7 @@ Alternatively run application in Docker container [(see docs)](./docs/DEVOPS.md)
-### $\textsf{\color{teal}Feedback \&\ Rating}$ +### $\textsf{\color{teal}Feedback and Rating}$ User can utilize a feedback & rating system to rate the application in use and send criticism or praise. For every client can exist multiple entries for the entity `Feedback` but only one `FeedbackRating` which holds the accumulated data of the pointing feedback entries.
Resubmissions are handled in the database by an `ON CONFLICT` upsert query [see upsertInTa()](./backend/src/repositories/feedback.repository.ts) on the unique `(client_id, user_id)` constraint, followed by an atomic aggregate update to the 'FeedbackRating' table entry. Both queries are executed within a single transaction to guarantee data consistency.
diff --git a/backend/src/repositories/clients.repository.ts b/backend/src/repositories/clients.repository.ts index 6e85de4..2c7b319 100644 --- a/backend/src/repositories/clients.repository.ts +++ b/backend/src/repositories/clients.repository.ts @@ -22,14 +22,14 @@ class ClientsRepository implements ICreateRepository, IUpdateFlagReposi try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_ClientsRepository_findById"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -41,14 +41,14 @@ class ClientsRepository implements ICreateRepository, IUpdateFlagReposi try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_ClientsRepository_findByActiveKey"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -60,14 +60,14 @@ class ClientsRepository implements ICreateRepository, IUpdateFlagReposi try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_ClientsRepository_findStatusByName"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -83,14 +83,14 @@ class ClientsRepository implements ICreateRepository, IUpdateFlagReposi try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0]; } catch(err: any) { const message = "DB ERROR ON INSERT QUERY"; const method = "SUPPORT_ClientsRepository_create"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -107,14 +107,14 @@ class ClientsRepository implements ICreateRepository, IUpdateFlagReposi try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON UPDATE QUERY"; const method = "SUPPORT_ClientsRepository_updateFlag"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -131,14 +131,14 @@ class ClientsRepository implements ICreateRepository, IUpdateFlagReposi try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON UPDATE QUERY"; const method = "SUPPORT_ClientsRepository_updateStatus"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -155,14 +155,14 @@ class ClientsRepository implements ICreateRepository, IUpdateFlagReposi try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON UPDATE QUERY"; const method = "SUPPORT_ClientsRepository_updateLastStatus"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } } diff --git a/backend/src/repositories/demo-limits.repository.ts b/backend/src/repositories/demo-limits.repository.ts index 77d6f67..a404a97 100644 --- a/backend/src/repositories/demo-limits.repository.ts +++ b/backend/src/repositories/demo-limits.repository.ts @@ -23,14 +23,14 @@ class DemoLimitsRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return !result.rows[0] || result.rows.length === 0 ? null : result.rows; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_DemoLimitsRepository_count"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -45,14 +45,14 @@ class DemoLimitsRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0]; } catch(err: any) { const message = "DB ERROR ON INSERT QUERY"; const method = "SUPPORT_DemoLimitsRepository_create"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -67,14 +67,14 @@ class DemoLimitsRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON UPDATE QUERY"; const method = "SUPPORT_DemoLimitsRepository_update"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } } diff --git a/backend/src/repositories/feedback-rating.repository.ts b/backend/src/repositories/feedback-rating.repository.ts index d0251f6..ba924d8 100644 --- a/backend/src/repositories/feedback-rating.repository.ts +++ b/backend/src/repositories/feedback-rating.repository.ts @@ -24,14 +24,14 @@ IFindRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_FeedbackRatingRepository_findById"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -47,14 +47,14 @@ IFindRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_FeedbackRatingRepository_findByClientsName"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -66,14 +66,14 @@ IFindRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql); - await db.close(client); return !result.rows[0] || result.rows.length === 0 ? null : result.rows; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_FeedbackRatingRepository_findAll"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } diff --git a/backend/src/repositories/feedback.repository.ts b/backend/src/repositories/feedback.repository.ts index d218d03..9b84ba2 100644 --- a/backend/src/repositories/feedback.repository.ts +++ b/backend/src/repositories/feedback.repository.ts @@ -22,14 +22,14 @@ class FeedbackRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_FeedbackRepository_findById"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -40,39 +40,39 @@ class FeedbackRepository { try { client = await db.connect(); const result: QueryResult = await client.query(queryData.sql, queryData.values); - await db.close(client); return !result.rows[0] || result.rows.length === 0 ? null : result.rows; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_FeedbackRepository_findByFilter"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } async updateReview(id: FeedbackId, dto: FeedbackUpdateReviewDTO): Promise { const filterColumn = "feedback_id"; - const sql = `UPDATE ${this.table} - SET reviewed_on = $1::timestamp, last_modified = $2::timestamp - WHERE ${filterColumn} = $3 - RETURNING *; - `; - const values = [dto.reviewed_on, dto.last_modified, id]; - const db = DBConnection.getInstance(); - let client: any; - try { - client = await db.connect(); - const result: QueryResult = await client.query(sql, values); - await db.close(client); - return result.rows[0] ?? null; - } catch(err: any) { - const message = "DB ERROR ON UPDATE QUERY"; - const method = "SUPPORT_FeedbackRepository_updateReview"; - logError(message, method, err); - await db.close(client); - throw new DBQueryErrorException(err); - } + const sql = `UPDATE ${this.table} + SET reviewed_on = $1::timestamp, last_modified = $2::timestamp + WHERE ${filterColumn} = $3 + RETURNING *; + `; + const values = [dto.reviewed_on, dto.last_modified, id]; + const db = DBConnection.getInstance(); + let client: any; + try { + client = await db.connect(); + const result: QueryResult = await client.query(sql, values); + return result.rows[0] ?? null; + } catch(err: any) { + const message = "DB ERROR ON UPDATE QUERY"; + const method = "SUPPORT_FeedbackRepository_updateReview"; + logError(message, method, err); + throw new DBQueryErrorException(err); + } finally { + await db.close(client); + } } /** diff --git a/backend/src/repositories/meta.repository.ts b/backend/src/repositories/meta.repository.ts index 1d99bad..58fe673 100644 --- a/backend/src/repositories/meta.repository.ts +++ b/backend/src/repositories/meta.repository.ts @@ -27,14 +27,14 @@ class MetaRepository implements IBaseRepository, IFindRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_MetaRepository_findById"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -52,14 +52,14 @@ class MetaRepository implements IBaseRepository, IFindRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_MetaRepository_findByName"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -71,14 +71,14 @@ class MetaRepository implements IBaseRepository, IFindRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql); - await db.close(client); return !result.rows[0] || result.rows.length === 0 ? null : result.rows; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_MetaRepository_findAll"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -92,14 +92,14 @@ class MetaRepository implements IBaseRepository, IFindRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_MetaRepository_findMaintenance"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -118,14 +118,14 @@ class MetaRepository implements IBaseRepository, IFindRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON UPDATE QUERY"; const method = "SUPPORT_MetaRepository_update"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -142,14 +142,14 @@ class MetaRepository implements IBaseRepository, IFindRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON UPDATE QUERY"; const method = "SUPPORT_MetaRepository_updateMaintenance"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -163,14 +163,14 @@ class MetaRepository implements IBaseRepository, IFindRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_MetaRepository_demoError"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } } diff --git a/backend/src/repositories/rate-limits.repository.ts b/backend/src/repositories/rate-limits.repository.ts index 27fb192..1aa05ed 100644 --- a/backend/src/repositories/rate-limits.repository.ts +++ b/backend/src/repositories/rate-limits.repository.ts @@ -29,14 +29,14 @@ class RateLimitsRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return !result.rows[0] || result.rows.length === 0 ? null : result.rows; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_RateLimitsRepository_count"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -54,14 +54,14 @@ class RateLimitsRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0]; } catch(err: any) { const message = "DB ERROR ON INSERT QUERY"; const method = "SUPPORT_RateLimitsRepository_create"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -78,14 +78,14 @@ class RateLimitsRepository { try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON UPDATE QUERY"; const method = "SUPPORT_RateLimitsRepository_update"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } } diff --git a/backend/src/repositories/tickets.repository.ts b/backend/src/repositories/tickets.repository.ts index d9a5a9d..522b38f 100644 --- a/backend/src/repositories/tickets.repository.ts +++ b/backend/src/repositories/tickets.repository.ts @@ -40,14 +40,14 @@ IDeleteRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_TicketsRepository_findById"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -59,14 +59,14 @@ IDeleteRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql); - await db.close(client); return !result.rows[0] || result.rows.length === 0 ? null : result.rows; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_TicketsRepository_findAll"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -84,14 +84,14 @@ IDeleteRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return !result.rows[0] || result.rows.length === 0 ? null : result.rows; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_TicketsRepository_findByTimeInterval"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -105,14 +105,14 @@ IDeleteRepository try { client = await db.connect(); const result: QueryResult = await client.query(queryData.sql, queryData.values); - await db.close(client); return !result.rows[0] || result.rows.length === 0 ? null : result.rows; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_TicketsRepository_findByFilter"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -127,14 +127,14 @@ IDeleteRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0]; } catch(err: any) { const message = "DB ERROR ON INSERT QUERY"; const method = "SUPPORT_TicketsRepository_create"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -152,14 +152,14 @@ IDeleteRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON UPDATE QUERY"; const method = "SUPPORT_TicketsRepository_update"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -172,14 +172,14 @@ IDeleteRepository try { client = await db.connect(); const result = await client.query(sql, value); - await db.close(client); return result.rowCount > 0; } catch(err: any) { const message = "DB ERROR ON DELETE QUERY"; const method = "SUPPORT_TicketsRepository_delete"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } } diff --git a/backend/src/repositories/users.repository.ts b/backend/src/repositories/users.repository.ts index d579c99..3fd8531 100644 --- a/backend/src/repositories/users.repository.ts +++ b/backend/src/repositories/users.repository.ts @@ -28,14 +28,14 @@ IUpdateFlagRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_UsersRepository_findById"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -48,14 +48,14 @@ IUpdateFlagRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql, value); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_UsersRepository_findByEmail"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -67,14 +67,14 @@ IUpdateFlagRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql); - await db.close(client); return !result.rows[0] || result.rows.length === 0 ? null : result.rows; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_UsersRepository_findAll"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -88,14 +88,14 @@ IUpdateFlagRepository try { client = await db.connect(); const result: QueryResult = await client.query(queryData.sql, queryData.values); - await db.close(client); return !result.rows[0] || result.rows.length === 0 ? null : result.rows; } catch(err: any) { const message = "DB ERROR ON SELECT QUERY"; const method = "SUPPORT_UsersRepository_findByFilter"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -111,14 +111,14 @@ IUpdateFlagRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0]; } catch(err: any) { const message = "DB ERROR ON INSERT QUERY"; const method = "SUPPORT_UsersRepository_create"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -135,14 +135,14 @@ IUpdateFlagRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON UPDATE QUERY"; const method = "SUPPORT_UsersRepository_update"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } @@ -159,14 +159,14 @@ IUpdateFlagRepository try { client = await db.connect(); const result: QueryResult = await client.query(sql, values); - await db.close(client); return result.rows[0] ?? null; } catch(err: any) { const message = "DB ERROR ON UPDATE QUERY"; const method = "SUPPORT_UsersRepository_updateFlag"; logError(message, method, err); - await db.close(client); throw new DBQueryErrorException(err); + } finally { + await db.close(client); } } } diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 4d6e52d..826c144 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,8 +1,4 @@ -# yqni13 | support - -### $\texttt{\color{olive}{LIST\ OF\ UPDATES}}$ - -
+## 📜 $\textsf{\color{salmon}{List\ of\ updates}}$ ### $\textsf{\color{skyblue}2026/03/09}$ From 62e9d7fda0a490bcde8539ce897f1af8887cf43d Mon Sep 17 00:00:00 2001 From: yqni13 Date: Sat, 14 Mar 2026 12:19:00 +0100 Subject: [PATCH 3/6] refactor: clients dtos + mapping --- backend/src/controllers/clients.controller.ts | 8 ++-- backend/src/dtos/clients.dto.ts | 30 ++---------- backend/src/models/clients.model.ts | 22 +++++++++ backend/src/services/clients.service.ts | 42 ++++++++--------- backend/src/services/feedback.service.ts | 2 +- .../repositories/clients.integration.test.ts | 28 +++++++---- .../unit-tests/models/clients.models.test.ts | 47 +++++++++++++++++++ .../repositories/clients.repositories.test.ts | 22 +++++---- 8 files changed, 129 insertions(+), 72 deletions(-) diff --git a/backend/src/controllers/clients.controller.ts b/backend/src/controllers/clients.controller.ts index 17be71e..f6f16ca 100644 --- a/backend/src/controllers/clients.controller.ts +++ b/backend/src/controllers/clients.controller.ts @@ -2,9 +2,9 @@ import { NextFunction, Request, Response } from "express"; import { checkValidation } from "../middleware/validation.middleware"; import { ClientsCreateResponseDTO, - ClientsStatusResponseDTO, ClientsCreateDTO, - ClientsStatusUpdateDTO + ClientsStatusUpdateDTO, + ClientsResponseDTO } from "../dtos/clients.dto"; import clientsService from "../services/clients.service"; import { ClientsId } from "../repositories/interfaces/clients.entity.interface"; @@ -14,7 +14,7 @@ class ClientsController { try { checkValidation(req); const name = req.params.name; - const response: ClientsStatusResponseDTO | null = await clientsService.getClientStatusByName(name); + const response: ClientsResponseDTO | null = await clientsService.getClientStatusByName(name); res.json(response); } catch(err: any) { next(err); @@ -37,7 +37,7 @@ class ClientsController { checkValidation(req); const id = req.params.id as ClientsId; const dto: ClientsStatusUpdateDTO = req.body; - const response: ClientsStatusResponseDTO | null = await clientsService.updateClientStatus(id, dto); + const response: ClientsResponseDTO | null = await clientsService.updateClientStatus(id, dto); res.json(response); } catch(err: any) { next(err); diff --git a/backend/src/dtos/clients.dto.ts b/backend/src/dtos/clients.dto.ts index ab95c0a..5ef8e57 100644 --- a/backend/src/dtos/clients.dto.ts +++ b/backend/src/dtos/clients.dto.ts @@ -20,17 +20,6 @@ export interface ClientsLastUseUpdateDTO { last_use: string } -export interface ClientsExistResponseDTO { - client_id: ClientsId, - name: string, - api_key_hash: string, - status: ApiKeyStatus, - flag: Flag | null, - last_use: string, - last_modified: string, - created_on: string -} - export interface ClientsCreateResponseDTO { client_id: ClientsId, name: string, @@ -42,27 +31,16 @@ export interface ClientsCreateResponseDTO { created_on: string } -export interface ClientsFlagResponseDTO { - client_id: ClientsId, - flag: Flag | null, - last_use: string, - last_modified: string, - created_on: string -} - -export interface ClientsStatusResponseDTO { +export interface ClientsResponseDTO { client_id: ClientsId, name: string, status: ApiKeyStatus, + flag: Flag | null, last_use: string, last_modified: string, created_on: string } -export interface ClientsLastUseResponseDTO { - client_id: ClientsId, - name: string, - last_use: string, - last_modified: string, - created_on: string +export interface ClientsExtendedResponseDTO extends ClientsResponseDTO{ + api_key_hash: string } \ No newline at end of file diff --git a/backend/src/models/clients.model.ts b/backend/src/models/clients.model.ts index 4c74f10..35251b7 100644 --- a/backend/src/models/clients.model.ts +++ b/backend/src/models/clients.model.ts @@ -1,6 +1,8 @@ import { ClientsCreateDTO, ClientsCreateResponseDTO, + ClientsExtendedResponseDTO, + ClientsResponseDTO, } from "../dtos/clients.dto"; import { Clients, ClientsId } from "../repositories/interfaces/clients.entity.interface"; import crypto from 'crypto'; @@ -28,6 +30,26 @@ class ClientsModel { }; } + toClientsResponseDTO(entity: Clients, extended: true): ClientsExtendedResponseDTO; + toClientsResponseDTO(entity: Clients, extended: false): ClientsResponseDTO; + + toClientsResponseDTO(entity: Clients, extended: boolean) { + const response = { + client_id: entity.client_id, + name: entity.name, + api_key_hash: entity.api_key_hash, + status: entity.status, + flag: entity.flag, + last_use: CommonUtils.getTimestampUTC(new Date(entity.last_use)), + last_modified: CommonUtils.getTimestampUTC(new Date(entity.last_modified)), + created_on: CommonUtils.getTimestampUTC(new Date(entity.created_on)) + }; + if(!extended) { + delete (response as any)['api_key_hash']; + } + return response; + } + private generateApiKeyObj(): { keyRaw: string, keyHash: string } { const keyLength = 42; const charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; diff --git a/backend/src/services/clients.service.ts b/backend/src/services/clients.service.ts index b0160ba..930ad99 100644 --- a/backend/src/services/clients.service.ts +++ b/backend/src/services/clients.service.ts @@ -1,12 +1,10 @@ import { ClientsCreateDTO, ClientsCreateResponseDTO, - ClientsExistResponseDTO, - ClientsFlagResponseDTO, + ClientsExtendedResponseDTO, ClientsFlagUpdateDTO, - ClientsLastUseResponseDTO, ClientsLastUseUpdateDTO, - ClientsStatusResponseDTO, + ClientsResponseDTO, ClientsStatusUpdateDTO } from "../dtos/clients.dto"; import clientsModel from '../models/clients.model'; @@ -24,23 +22,23 @@ class ClientsService { /** * @description Usage for testing purpose. */ - async getClientById(id: ClientsId): Promise { - const result = await clientsRepository.findById(id); - return !result ? null : CommonUtils.mapObjTimestamps(result, this.timeMapTargets); + async getClientById(id: ClientsId): Promise { + const result: Clients | null = await clientsRepository.findById(id); + return !result ? null : clientsModel.toClientsResponseDTO(result, true); } /** * @description Usage for apikey authentication in auth.middleware.ts. */ - async getClientByActiveKey(key: string): Promise { + async getClientByActiveKey(key: string): Promise { const hash = CommonUtils.mapKeyToHash(key); - const result = await clientsRepository.findByActiveKey(hash); - return !result ? null : CommonUtils.mapObjTimestamps(result, this.timeMapTargets); + const result: Clients | null = await clientsRepository.findByActiveKey(hash); + return !result ? null : clientsModel.toClientsResponseDTO(result, true); } - async getClientStatusByName(name: string): Promise { - const result = await clientsRepository.findStatusByName(name); - return !result ? null : CommonUtils.mapObjTimestamps(result, this.timeMapTargets); + async getClientStatusByName(name: string): Promise { + const result: Clients | null = await clientsRepository.findStatusByName(name); + return !result ? null : clientsModel.toClientsResponseDTO(result, false); } async createClient(dto: ClientsCreateDTO): Promise { @@ -49,22 +47,22 @@ class ClientsService { return clientsModel.toClientsCreateResponseDTO(result as Clients, clientsCreateObj.keyRaw); } - async updateClientFlag(id: ClientsId, dto: ClientsFlagUpdateDTO): Promise { + async updateClientFlag(id: ClientsId, dto: ClientsFlagUpdateDTO): Promise { dto.last_modified = CommonUtils.getTimestampUTC(); - const result = await clientsRepository.updateFlag(id, dto); - return !result ? null : CommonUtils.mapObjTimestamps(result, this.timeMapTargets); + const result: Clients | null = await clientsRepository.updateFlag(id, dto); + return !result ? null : clientsModel.toClientsResponseDTO(result, false); } - async updateClientStatus(id: ClientsId, dto: ClientsStatusUpdateDTO): Promise { + async updateClientStatus(id: ClientsId, dto: ClientsStatusUpdateDTO): Promise { dto.last_modified = CommonUtils.getTimestampUTC(); - const result = await clientsRepository.updateStatus(id, dto); - return !result ? null : CommonUtils.mapObjTimestamps(result, this.timeMapTargets); + const result: Clients | null = await clientsRepository.updateStatus(id, dto); + return !result ? null : clientsModel.toClientsResponseDTO(result, false); } - async updateClientLastUse(id: ClientsId): Promise { + async updateClientLastUse(id: ClientsId): Promise { const dto: ClientsLastUseUpdateDTO = { last_use: CommonUtils.getTimestampUTC() }; - const result = await clientsRepository.updateLastUse(id, dto); - return !result ? null : CommonUtils.mapObjTimestamps(result, this.timeMapTargets); + const result: Clients | null = await clientsRepository.updateLastUse(id, dto); + return !result ? null : clientsModel.toClientsResponseDTO(result, false); } } diff --git a/backend/src/services/feedback.service.ts b/backend/src/services/feedback.service.ts index 87c1f40..a9d53ac 100644 --- a/backend/src/services/feedback.service.ts +++ b/backend/src/services/feedback.service.ts @@ -15,7 +15,7 @@ import { DBConstraintErrorException } from "../utils/exceptions/db.exception"; class FeedbackService { async getFeedbackById(id: FeedbackId): Promise { - const result = await feedbackRepository.findById(id); + const result: Feedback | null = await feedbackRepository.findById(id); return !result ? null : feedbackModel.toFeedbackResponseDTO(result); } diff --git a/backend/tests/integration-tests/repositories/clients.integration.test.ts b/backend/tests/integration-tests/repositories/clients.integration.test.ts index e3831bc..5c5eaf1 100644 --- a/backend/tests/integration-tests/repositories/clients.integration.test.ts +++ b/backend/tests/integration-tests/repositories/clients.integration.test.ts @@ -1,12 +1,11 @@ import { NextFunction, Request, Response } from "express"; import { ClientsCreateResponseDTO, - ClientsStatusResponseDTO, ClientsCreateDTO, ClientsStatusUpdateDTO, - ClientsFlagResponseDTO, ClientsFlagUpdateDTO, - ClientsExistResponseDTO + ClientsExtendedResponseDTO, + ClientsResponseDTO, } from "../../../src/dtos/clients.dto"; import * as CommonUtils from '../../../src/utils/common.utils'; import * as MockUtils from "../../common.test-utils"; @@ -31,6 +30,7 @@ jest.mock('../../../src/middleware/maintenance.middleware', () => ({ })); import app from '../../../src/app'; +import { DBTestData } from "../../db-data.setup"; jest.setTimeout(60000); @@ -40,10 +40,14 @@ const testTimestamp = '2025-01-01T14:00:02.000Z'; describe('Integration-tests (repository), priority: entity Clients', () => { let dbTestSetup: DBTestSetup; + let dbTestData: DBTestData; + let dbData_Clients: any[]; let apiUrl: string; const testVar_apiKey = { keyRaw: secrets.TEST_APIKEY_RAW, keyHash: secrets.TEST_APIKEY_HASH }; beforeAll(async () => { dbTestSetup = new DBTestSetup(); + dbTestData = DBTestData.getInstance(); + dbData_Clients = dbTestData.getClientsInsertSql().values; await dbTestSetup.init(); MockUtils.disableConsoleMessages(); await runMigrations('clients.integration.test.ts'); @@ -62,7 +66,7 @@ describe('Integration-tests (repository), priority: entity Clients', () => { test('Repository process fn findById(), result: "SUCCESS"', async () => { const testParam_id = mockValidClientId; - const testResult: ClientsExistResponseDTO | null = { + const testResult: ClientsExtendedResponseDTO | null = { client_id: testParam_id, name: 'TESTCLIENT', api_key_hash: secrets.TEST_APIKEY_HASH, @@ -81,10 +85,11 @@ describe('Integration-tests (repository), priority: entity Clients', () => { test('Repository process fn findStatusByName(), result: "SUCCESS"', async () => { const testParam_name = 'TESTCLIENT'; - const testResult: ClientsStatusResponseDTO = { + const testResult: ClientsResponseDTO = { client_id: mockValidClientId, name: testParam_name, - status: ApiKeyStatus.ACTIVE, + status: dbData_Clients[3], + flag: dbData_Clients[4], last_use: testTimestamp, last_modified: testTimestamp, created_on: testTimestamp @@ -146,8 +151,10 @@ describe('Integration-tests (repository), priority: entity Clients', () => { jest.spyOn(CommonUtils, "getTimestampUTC").mockReturnValue(testTimestamp); - const testResult: ClientsFlagResponseDTO | null = { + const testResult: ClientsResponseDTO | null = { client_id: testParam_id, + name: dbData_Clients[1], + status: dbData_Clients[3], flag: Flag.WARNING, last_use: testTimestamp, last_modified: testTimestamp, @@ -168,7 +175,7 @@ describe('Integration-tests (repository), priority: entity Clients', () => { jest.spyOn(CommonUtils, "getTimestampUTC").mockReturnValue(testTimestamp); - const testResult: ClientsFlagResponseDTO | null = null; + const testResult: ClientsResponseDTO | null = null; await dbTestSetup.addTestData(); const testResponse = await clientsService.updateClientFlag(testParam_id, testParam_dto); @@ -184,10 +191,11 @@ describe('Integration-tests (repository), priority: entity Clients', () => { jest.spyOn(CommonUtils, "getTimestampUTC").mockReturnValue(testTimestamp); - const testResult: ClientsStatusResponseDTO = { + const testResult: ClientsResponseDTO = { client_id: testParam_id, - name: 'TESTCLIENT', + name: dbData_Clients[1], status: ApiKeyStatus.DISABLED, + flag: dbData_Clients[4], last_use: testTimestamp, last_modified: testTimestamp, created_on: testTimestamp diff --git a/backend/tests/unit-tests/models/clients.models.test.ts b/backend/tests/unit-tests/models/clients.models.test.ts index 0abe852..74ac0e5 100644 --- a/backend/tests/unit-tests/models/clients.models.test.ts +++ b/backend/tests/unit-tests/models/clients.models.test.ts @@ -1,6 +1,8 @@ import { ClientsCreateDTO, ClientsCreateResponseDTO, + ClientsExtendedResponseDTO, + ClientsResponseDTO, } from "../../../src/dtos/clients.dto"; import * as CommonUtils from "../../../src/utils/common.utils"; import { default as mockId } from "../../mock-data/id.mock-data.json"; @@ -48,6 +50,51 @@ describe('Unit-tests (model), priority: entity Clients', () => { }) }) + describe('Priority: fn toClientsResponseDTO()', () => { + + describe('Testing valid fn calls', () => { + + test('Convert entity to dto, params: Clients, false', () => { + const mockParam_entity: Clients = structuredClone(mockData); + const mockParam_extended = false; + + jest.spyOn(CommonUtils, 'getTimestampUTC').mockReturnValue(mockTimestamp); + const expectResult: ClientsResponseDTO = { + client_id: mockParam_entity.client_id, + name: mockParam_entity.name, + status: mockParam_entity.status, + flag: mockParam_entity.flag, + last_use: mockTimestamp, + last_modified: mockTimestamp, + created_on: mockTimestamp + }; + const testFn = clientsModel.toClientsResponseDTO(mockParam_entity, mockParam_extended); + + expect(testFn).toMatchObject(expectResult); + }) + + test('Convert entity to dto, params: Clients, true', () => { + const mockParam_entity: Clients = structuredClone(mockData); + const mockParam_extended = true; + + jest.spyOn(CommonUtils, 'getTimestampUTC').mockReturnValue(mockTimestamp); + const expectResult: ClientsExtendedResponseDTO = { + client_id: mockParam_entity.client_id, + name: mockParam_entity.name, + api_key_hash: mockParam_entity.api_key_hash, + status: mockParam_entity.status, + flag: mockParam_entity.flag, + last_use: mockTimestamp, + last_modified: mockTimestamp, + created_on: mockTimestamp + }; + const testFn = clientsModel.toClientsResponseDTO(mockParam_entity, mockParam_extended); + + expect(testFn).toMatchObject(expectResult); + }) + }) + }) + describe('Priority: fn generateClientsCreateObj()', () => { describe('Testing valid fn calls', () => { diff --git a/backend/tests/unit-tests/repositories/clients.repositories.test.ts b/backend/tests/unit-tests/repositories/clients.repositories.test.ts index 229e8ef..e20c0a9 100644 --- a/backend/tests/unit-tests/repositories/clients.repositories.test.ts +++ b/backend/tests/unit-tests/repositories/clients.repositories.test.ts @@ -1,10 +1,8 @@ import { - ClientsStatusResponseDTO, - ClientsLastUseResponseDTO, ClientsStatusUpdateDTO, ClientsLastUseUpdateDTO, ClientsFlagUpdateDTO, - ClientsFlagResponseDTO + ClientsResponseDTO, } from "../../../src/dtos/clients.dto"; import { DBConnection } from "../../../src/configs/db"; import * as CommonUtils from "../../../src/utils/common.utils"; @@ -160,10 +158,11 @@ describe('Unit-tests (repository), priority: entity Clients', () => { test('Return data for existing entry, params: ', async () => { const mockParam_name = 'existing_clients_test_name'; - const mockResult: ClientsStatusResponseDTO = { + const mockResult: ClientsResponseDTO = { client_id: mockValidClientId, name: mockParam_name, status: ApiKeyStatus.ACTIVE, + flag: null, last_use: mockTimestamp, last_modified: mockTimestamp, created_on: mockTimestamp @@ -278,10 +277,11 @@ describe('Unit-tests (repository), priority: entity Clients', () => { const mockParam_id = mockValidClientId; const mockValues = [mockParam_dto.status, mockTimestamp, mockParam_id]; - const mockResult: ClientsStatusResponseDTO = { + const mockResult: ClientsResponseDTO = { client_id: mockParam_id, name: mockParam_name, status: mockParam_dto.status, + flag: null, last_use: mockTimestamp, last_modified: mockTimestamp, created_on: mockTimestamp @@ -344,8 +344,10 @@ describe('Unit-tests (repository), priority: entity Clients', () => { const mockParam_id = mockValidClientId; const mockValues = [mockParam_dto.flag, mockTimestamp, mockParam_id]; - const mockResult: ClientsFlagResponseDTO | null = { + const mockResult: ClientsResponseDTO | null = { client_id: mockParam_id, + name: 'TESTCLIENT', + status: ApiKeyStatus.ACTIVE, flag: Flag.WARNING, last_use: mockTimestamp, last_modified: mockTimestamp, @@ -366,7 +368,7 @@ describe('Unit-tests (repository), priority: entity Clients', () => { const mockParam_id = mockId.clients.invalid[0] as ClientsId; const mockValues = [mockParam_dto.flag, mockTimestamp, mockParam_id]; - const mockResult: ClientsFlagResponseDTO | null = null; + const mockResult: ClientsResponseDTO | null = null; const mockClient = MockUtils.mapMockDbClient(mockResult); const testFn = await clientsRepository.updateFlag(mockParam_id, mockParam_dto); @@ -384,7 +386,7 @@ describe('Unit-tests (repository), priority: entity Clients', () => { test('Throw DBQueryErrorException by catch-block', async () => { const mockParam_id = mockId.clients.invalid[0] as ClientsId; const mockErrorMsg = "DB ERROR ON UPDATE QUERY"; - const mockResult: ClientsFlagResponseDTO | null = null; + const mockResult: ClientsResponseDTO | null = null; jest.spyOn(CommonUtils, "logError").mockReturnValue(); const _ = MockUtils.mapMockDbClient(mockResult, mockBoolean, mockErrorMsg); @@ -413,9 +415,11 @@ describe('Unit-tests (repository), priority: entity Clients', () => { jest.spyOn(CommonUtils, "getTimestampUTC").mockReturnValue(mockTimestamp); - const mockResult: ClientsLastUseResponseDTO = { + const mockResult: ClientsResponseDTO = { client_id: mockParam_id, name: mockParam_name, + status: ApiKeyStatus.ACTIVE, + flag: null, last_use: mockTimestamp, last_modified: mockTimestamp, created_on: mockTimestamp From 83fd50036ea8b7e756aff88f240aeaa383489e1c Mon Sep 17 00:00:00 2001 From: yqni13 Date: Sat, 14 Mar 2026 20:28:08 +0100 Subject: [PATCH 4/6] refactor: reduce create-response for user requests --- README.md | 13 +++--- backend/package-lock.json | 2 +- backend/package.json | 2 +- .../src/controllers/feedback.controller.ts | 4 +- backend/src/controllers/tickets.controller.ts | 5 ++- backend/src/dtos/feedback.dto.ts | 8 ++++ backend/src/dtos/tickets.dto.ts | 7 ++++ backend/src/models/clients.model.ts | 12 ++---- backend/src/models/tickets.model.ts | 11 ++++- .../src/repositories/feedback.repository.ts | 2 +- backend/src/services/clients.service.ts | 5 --- backend/src/services/feedback.service.ts | 17 +++++--- backend/src/services/tickets.service.ts | 11 ++--- .../repositories/feedback.integration.test.ts | 26 +++--------- .../repositories/tickets.integration.test.ts | 40 +++++++------------ .../unit-tests/models/tickets.model.test.ts | 34 +++++++++++++++- docs/CHANGELOG.md | 16 +++++++- 17 files changed, 129 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 2e4f933..a02a579 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # yqni13 | $\texttt{\colorbox{cornflowerblue}{\color{white}{SUPPORT}}}$ -### $\textsf{\color{brown}{v1.4.4}}$ +### $\textsf{\color{brown}{v1.4.9}}$ #### Support hub - handling feedback & ratings (`/feedback`) and bug/support requests (`/tickets`) including file attachments across multiple applications via REST API built with NodeJS (Typescript), Express & PostgreSQL in Docker container. Created following Test-Driven Development (450+ tests including ephemeral database by testcontainers) and hosting env:prod via Render, Neon and Cloudflare. @@ -168,11 +168,14 @@ Preventing an unwanted merge with unfinished/failed test run, the project is set [see changelog for all updates](/docs/CHANGELOG.md) -$\textsf{[v1.4.1\ =>\ {\textbf{\color{brown}v1.4.4}]}}$ app
+$\textsf{[v1.4.4\ =>\ {\textbf{\color{brown}v1.4.9}]}}$ app
+- $\textsf{\color{teal}Addition:}$ Added form-data parser middleware for requests including files. - $\textsf{\color{orange}Patch:}$ Updated: - + entity ID's are using now nominal types instead basic string|number. - + some model functions are renamed to keep consistency and improve readability. - + some api routes have been shortened to keep consistency and improve readability. + + return types, mapping and handling (part 1). + + calculation for delete-permission by comparing timestamps (incorporate timezone offset on database read timestamp). + + 'tickets' request: more accurate check for containing files. + + use Promise-instance fn finally() in repository-layer to reduce code. + + documentation headers and display error on symbol (&).
diff --git a/backend/package-lock.json b/backend/package-lock.json index 10d1d07..36f4289 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -1,6 +1,6 @@ { "name": "support_backend", - "version": "1.4.4", + "version": "1.4.9", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/backend/package.json b/backend/package.json index 7980648..44b6337 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "support_backend", - "version": "1.4.4", + "version": "1.4.9", "appMeta": { "db_version": "1.6.0", "docker_image": "yqni13/support", diff --git a/backend/src/controllers/feedback.controller.ts b/backend/src/controllers/feedback.controller.ts index a55595b..af97058 100644 --- a/backend/src/controllers/feedback.controller.ts +++ b/backend/src/controllers/feedback.controller.ts @@ -1,6 +1,6 @@ import { NextFunction, Request, Response } from "express"; import { checkValidation } from "../middleware/validation.middleware"; -import { FeedbackCreateDTO, FeedbackFilterDTO, FeedbackResponseDTO } from "../dtos/feedback.dto"; +import { FeedbackCreateDTO, FeedbackCreateResponseDTO, FeedbackFilterDTO, FeedbackResponseDTO } from "../dtos/feedback.dto"; import feedbackService from "../services/feedback.service"; import { FeedbackId } from "../repositories/interfaces/feedback.entity.interface"; @@ -35,7 +35,7 @@ class FeedbackController { client_id: req.apiClients.client_id, user_id: req.apiUsers.user_id }; - const response: FeedbackResponseDTO | null = await feedbackService.createFeedback(dto); + const response: FeedbackCreateResponseDTO | null = await feedbackService.createFeedback(dto); res.json(response); } catch(err: any) { next(err); diff --git a/backend/src/controllers/tickets.controller.ts b/backend/src/controllers/tickets.controller.ts index 5305874..3aebc71 100644 --- a/backend/src/controllers/tickets.controller.ts +++ b/backend/src/controllers/tickets.controller.ts @@ -5,7 +5,8 @@ import { TicketsResponseDTO, TicketsFilterDTO, TicketsCreateDTO, - TicketsUpdateDTO + TicketsUpdateDTO, + TicketsCreateResponseDTO } from "../dtos/tickets.dto"; import ticketsService from "../services/tickets.service"; import { TicketsId } from "../repositories/interfaces/tickets.entity.interface"; @@ -56,7 +57,7 @@ class TicketsController { user_id: req.apiUsers.user_id }; const files = !req.files || req.files.length === 0 ? null : req.files as Express.Multer.File[]; - const response: TicketsResponseDTO = await ticketsService.createTicket(dto, files); + const response: TicketsCreateResponseDTO = await ticketsService.createTicket(dto, files); res.json(response); } catch(err: any) { next(err); diff --git a/backend/src/dtos/feedback.dto.ts b/backend/src/dtos/feedback.dto.ts index e042d8c..65fe6e3 100644 --- a/backend/src/dtos/feedback.dto.ts +++ b/backend/src/dtos/feedback.dto.ts @@ -32,6 +32,14 @@ export interface FeedbackFilterDTO { created_on?: string | string[] } +export interface FeedbackCreateResponseDTO { + rating: number, + rating_old?: number, + rating_average_new: number, + blocked?: boolean, + created_on: string +} + export interface FeedbackResponseDTO { feedback_id: FeedbackId, client_id: ClientsId, diff --git a/backend/src/dtos/tickets.dto.ts b/backend/src/dtos/tickets.dto.ts index d894b47..5eb6d70 100644 --- a/backend/src/dtos/tickets.dto.ts +++ b/backend/src/dtos/tickets.dto.ts @@ -61,6 +61,13 @@ export interface TicketsFilterDTO { created_on?: string[] } +export interface TicketsCreateResponseDTO { + status: TicketStatus, + option: TicketOption, + flag: Flag | null, + created_on: string +} + export interface TicketsResponseDTO { ticket_id: TicketsId, client_id: ClientsId, diff --git a/backend/src/models/clients.model.ts b/backend/src/models/clients.model.ts index 35251b7..e716a36 100644 --- a/backend/src/models/clients.model.ts +++ b/backend/src/models/clients.model.ts @@ -10,23 +10,17 @@ import * as CommonUtils from "../utils/common.utils"; import { ApiKeyStatus } from "../utils/enums/api-key-status.enum"; class ClientsModel { - private timeMapTargets: string[]; - - constructor() { - this.timeMapTargets = ['last_use', 'last_modified', 'created_on']; - } toClientsCreateResponseDTO(data: Clients, apiKey: string): ClientsCreateResponseDTO { - data = CommonUtils.mapObjTimestamps(data, this.timeMapTargets); return { client_id: data.client_id, name: data.name, api_key: apiKey, status: data.status, flag: data.flag, - last_use: data.last_use, - last_modified: data.last_modified, - created_on: data.created_on + last_use: CommonUtils.getTimestampUTC(new Date(data.last_use)), + last_modified: CommonUtils.getTimestampUTC(new Date(data.last_modified)), + created_on: CommonUtils.getTimestampUTC(new Date(data.created_on)) }; } diff --git a/backend/src/models/tickets.model.ts b/backend/src/models/tickets.model.ts index b6f4aee..18ea75e 100644 --- a/backend/src/models/tickets.model.ts +++ b/backend/src/models/tickets.model.ts @@ -1,4 +1,4 @@ -import { TicketsCreateDTO, TicketsResponseDTO, TicketsUpdateDTO } from "../dtos/tickets.dto"; +import { TicketsCreateDTO, TicketsCreateResponseDTO, TicketsResponseDTO, TicketsUpdateDTO } from "../dtos/tickets.dto"; import { Tickets, TicketsId } from "../repositories/interfaces/tickets.entity.interface"; import * as CommonUtils from "../utils/common.utils"; import { TicketStatus } from "../utils/enums/ticket-status.enum"; @@ -42,6 +42,15 @@ class TicketsModel { }; } + toTicketsCreateResponseDTO(entity: Tickets): TicketsCreateResponseDTO { + return { + status: entity.status, + option: entity.option, + flag: entity.flag, + created_on: CommonUtils.getTimestampUTC(new Date(entity.created_on)) + } + } + async handleTicketBeforeDelete(dto: TicketsResponseDTO) { if(dto.resource_paths && dto.resource_paths.length > 0) { const filesService = new FilesService([], 'tickets'); diff --git a/backend/src/repositories/feedback.repository.ts b/backend/src/repositories/feedback.repository.ts index 9b84ba2..c609719 100644 --- a/backend/src/repositories/feedback.repository.ts +++ b/backend/src/repositories/feedback.repository.ts @@ -1,6 +1,6 @@ import { PoolClient, QueryResult } from "pg"; import { DBConnection } from "../configs/db"; -import { FeedbackFilterDTO, FeedbackResponseDTO, FeedbackUpdateReviewDTO } from "../dtos/feedback.dto"; +import { FeedbackCreateResponseDTO, FeedbackFilterDTO, FeedbackResponseDTO, FeedbackUpdateReviewDTO } from "../dtos/feedback.dto"; import { Feedback, FeedbackId } from "./interfaces/feedback.entity.interface"; import { DBQueryErrorException } from "../utils/exceptions/db.exception"; import { logError } from "../utils/common.utils"; diff --git a/backend/src/services/clients.service.ts b/backend/src/services/clients.service.ts index 930ad99..e8f4c92 100644 --- a/backend/src/services/clients.service.ts +++ b/backend/src/services/clients.service.ts @@ -13,11 +13,6 @@ import clientsRepository from '../repositories/clients.repository'; import { Clients, ClientsId } from "../repositories/interfaces/clients.entity.interface"; class ClientsService { - private timeMapTargets: string[]; - - constructor() { - this.timeMapTargets = ['last_use', 'last_modified', 'created_on']; - } /** * @description Usage for testing purpose. diff --git a/backend/src/services/feedback.service.ts b/backend/src/services/feedback.service.ts index a9d53ac..af9f608 100644 --- a/backend/src/services/feedback.service.ts +++ b/backend/src/services/feedback.service.ts @@ -1,11 +1,13 @@ import { FeedbackCreateDTO, + FeedbackCreateResponseDTO, FeedbackFilterDTO, FeedbackResponseDTO, FeedbackUpdateReviewDTO } from "../dtos/feedback.dto"; import { FeedbackRatingCreateDTO, FeedbackRatingResponseDTO, FeedbackRatingUpdateDTO } from "../dtos/feedback-rating.dto"; import * as RepoUtils from "../utils/repository.utils"; +import * as CommonUtils from "../utils/common.utils"; import feedbackRatingModel from "../models/feedback-rating.model"; import feedbackModel from "../models/feedback.model"; import feedbackRepository from "../repositories/feedback.repository"; @@ -27,13 +29,14 @@ class FeedbackService { /** * @description Create is used to create new or overwrite existing Feedback with new data inside database transaction => FeedbackRating created/updated in same process. */ - async createFeedback(dto: FeedbackCreateDTO): Promise { + async createFeedback(dto: FeedbackCreateDTO): Promise { const message = "DB ERROR ON FEEDBACK/FEEDBACK-RATING TRANSACTION"; const method = "SUPPORT_FeedbackService_createFeedback"; return RepoUtils.asTransaction(message, method, async(client) => { const entity: Partial = feedbackModel.generateFeedbackEntity(dto); const result: FeedbackResponseDTO | null = await feedbackRepository.upsertInTa(client, entity); + let dtoUpdateFR: FeedbackRatingUpdateDTO; if(!result) { return null; @@ -50,7 +53,8 @@ class FeedbackService { } dtoUpdateFR = feedbackRatingModel.mapFeedbackRatingUpdateDTO(dtoUpdateFR); const update: FeedbackRatingResponseDTO | null = - await feedbackRatingService.updateFeedbackRatingInTa(client, result.client_id, dtoUpdateFR); + await feedbackRatingService.updateFeedbackRatingInTa(client, dto.client_id, dtoUpdateFR); + if(!update) { const dtoCreateFR: FeedbackRatingCreateDTO = { client_id: dto.client_id, @@ -59,11 +63,12 @@ class FeedbackService { }; await feedbackRatingService.createFeedbackRatingInTa(client, dtoCreateFR); } - // Delete blocked info and use rating from dto if no other ratings for this client exist. - delete result['blocked']; + return { - ...result, - rating_average_new: update?.rating_average ?? dto.rating + rating: result.rating, + rating_old: result.rating_old, + rating_average_new: update?.rating_average ?? dto.rating, + created_on: CommonUtils.getTimestampUTC(new Date(result.created_on)) } }) } diff --git a/backend/src/services/tickets.service.ts b/backend/src/services/tickets.service.ts index 2a2eacf..4674446 100644 --- a/backend/src/services/tickets.service.ts +++ b/backend/src/services/tickets.service.ts @@ -4,10 +4,11 @@ import { TicketsFilterDTO, TicketsCreateDTO, TicketsUpdateDTO, - TicketsIntervalDTO + TicketsIntervalDTO, + TicketsCreateResponseDTO } from "../dtos/tickets.dto"; import ticketsModel from "../models/tickets.model"; -import { TicketsId } from "../repositories/interfaces/tickets.entity.interface"; +import { Tickets, TicketsId } from "../repositories/interfaces/tickets.entity.interface"; import ticketsRepository from "../repositories/tickets.repository"; import * as CommonUtils from "../utils/common.utils"; @@ -38,10 +39,10 @@ class TicketsService { return !result ? null : CommonUtils.mapArrayTimestamps(result, this.timeMapTargets); } - async createTicket(dto: TicketsCreateDTO, files: Express.Multer.File[] | null): Promise { + async createTicket(dto: TicketsCreateDTO, files: Express.Multer.File[] | null): Promise { const ticket = await ticketsModel.generateTicketEntity(dto, files); - const result = await ticketsRepository.create(ticket); - return CommonUtils.mapObjTimestamps(result, this.timeMapTargets); + const result: Tickets = await ticketsRepository.create(ticket); + return ticketsModel.toTicketsCreateResponseDTO(result); } async updateTicket(id: TicketsId, dto: TicketsUpdateDTO): Promise { diff --git a/backend/tests/integration-tests/repositories/feedback.integration.test.ts b/backend/tests/integration-tests/repositories/feedback.integration.test.ts index b12b074..b292274 100644 --- a/backend/tests/integration-tests/repositories/feedback.integration.test.ts +++ b/backend/tests/integration-tests/repositories/feedback.integration.test.ts @@ -8,7 +8,7 @@ import { default as mockId } from "../../mock-data/id.mock-data.json"; import { NextFunction, Request, Response } from "express"; import { CommonExceptionMessage } from "../../../src/utils/enums/common-exception-messages.enum"; import { ErrorStatusCodes } from "../../../src/utils/errorStatusCodes.utils"; -import { FeedbackCreateDTO, FeedbackFilterDTO, FeedbackRequestCreateDTO, FeedbackResponseDTO } from '../../../src/dtos/feedback.dto'; +import { FeedbackCreateDTO, FeedbackCreateResponseDTO, FeedbackFilterDTO, FeedbackRequestCreateDTO, FeedbackResponseDTO } from '../../../src/dtos/feedback.dto'; import { DBTestData } from '../../db-data.setup'; import router from '../../../src/routes/feedback.route'; import feedbackRatingService from '../../../src/services/feedback-rating.service'; @@ -126,14 +126,9 @@ describe('Integration-tests (repository), priority: entity Feedback', () => { jest.spyOn(CommonUtils, "getTimestampUTC").mockReturnValue(testTimestamp); - const testResult: FeedbackResponseDTO = { - feedback_id: mockId.feedback.new[0] as FeedbackId, - client_id: testValidClientId, - user_id: mockId.users.valid[1] as UsersId, + const testResult: FeedbackCreateResponseDTO = { rating: testParam_dto.rating, rating_average_new: mockResult_average_rating, - term_accepted: testParam_dto.term_accepted, - last_modified: testTimestamp, created_on: testTimestamp }; @@ -161,14 +156,9 @@ describe('Integration-tests (repository), priority: entity Feedback', () => { jest.spyOn(CommonUtils, "getTimestampUTC").mockReturnValue(testTimestamp); - const testResult: FeedbackResponseDTO = { - feedback_id: mockId.feedback.new[0] as FeedbackId, - client_id: mockId.clients.valid[1] as ClientsId, - user_id: testValidUserId, + const testResult: FeedbackCreateResponseDTO = { rating: testParam_dto.rating, rating_average_new: testParam_dto.rating, - term_accepted: testParam_dto.term_accepted, - last_modified: testTimestamp, created_on: testTimestamp }; @@ -205,15 +195,11 @@ describe('Integration-tests (repository), priority: entity Feedback', () => { jest.spyOn(CommonUtils, "getTimestampUTC").mockReturnValue(testTimestamp_update); - const testResult: FeedbackResponseDTO = { - feedback_id: testValidFeedbackId, - client_id: testValidClientId, - user_id: testValidUserId, + const testResult: FeedbackCreateResponseDTO = { rating: testParam_dto.rating, + rating_old: dbData_Feedback[2], rating_average_new: mockResult_average_rating, - term_accepted: testParam_dto.term_accepted, - last_modified: testTimestamp_update, - created_on: testTimestamp, + created_on: testTimestamp_update, }; await dbTestSetup.addTestData(); diff --git a/backend/tests/integration-tests/repositories/tickets.integration.test.ts b/backend/tests/integration-tests/repositories/tickets.integration.test.ts index 2cc193f..16f0ec2 100644 --- a/backend/tests/integration-tests/repositories/tickets.integration.test.ts +++ b/backend/tests/integration-tests/repositories/tickets.integration.test.ts @@ -1,5 +1,6 @@ import { NextFunction, Request, Response } from "express"; import { + TicketsCreateResponseDTO, TicketsFilterDTO, TicketsRequestCreateDTO, TicketsResponseDTO, @@ -24,6 +25,7 @@ import { DeviceOption } from "../../../src/utils/enums/device-option.enum"; import { UsersId } from "../../../src/repositories/interfaces/users.entity.interface"; import { ClientsId } from "../../../src/repositories/interfaces/clients.entity.interface"; import { TicketsId } from "../../../src/repositories/interfaces/tickets.entity.interface"; +import ticketsService from "../../../src/services/tickets.service"; const testValidTicketId = mockId.tickets.valid[0] as TicketsId; const testValidClientId = mockId.clients.valid[0] as ClientsId; @@ -398,16 +400,10 @@ describe('Integration-tests (repository), priority: entity Tickets', () => { jest.spyOn(CommonUtils, "generateUUID").mockReturnValue(testNewParam_ticket_id); jest.spyOn(CommonUtils, "getTimestampUTC").mockReturnValue(testTimestamp); - const testResult: TicketsResponseDTO = { - ticket_id: testNewParam_ticket_id, - client_id: testValidClientId, - user_id: testValidUserId, + const testResult: TicketsCreateResponseDTO = { status: TicketStatus.ISSUED, option: TicketOption.SUPPORT, - title: testParam_dto.title, - message: testParam_dto.message, flag: null, - last_modified: testTimestamp, created_on: testTimestamp }; @@ -417,7 +413,7 @@ describe('Integration-tests (repository), priority: entity Tickets', () => { .send(testParam_dto); expect(testResponse.statusCode).toBe(200); - expect(testResponse.body).toMatchObject(testResult) + expect(testResponse.body).toMatchObject(testResult); }) test('Repository process fn create(), priority: with single file, result: "SUCCESS"', async () => { @@ -439,17 +435,10 @@ describe('Integration-tests (repository), priority: entity Tickets', () => { jest.spyOn(FilesService.prototype, 'uploadFiles').mockImplementation(); jest.spyOn(FilesService.prototype, 'getResourcePaths').mockReturnValue(mockPaths); - const testResult: TicketsResponseDTO = { - ticket_id: testNewParam_ticket_id, - client_id: testValidClientId, - user_id: testValidUserId, + const testResult: TicketsCreateResponseDTO = { status: TicketStatus.ISSUED, option: TicketOption.SUPPORT, - title: testParam_dto.title, - message: testParam_dto.message, - resource_paths: mockPaths, flag: null, - last_modified: testTimestamp, created_on: testTimestamp }; @@ -465,8 +454,11 @@ describe('Integration-tests (repository), priority: entity Tickets', () => { .field('title', testParam_dto.title) .field('message', testParam_dto.message); + const testFindByIdResponse = await ticketsService.getTicketById(testNewParam_ticket_id); + expect(testResponse.statusCode).toBe(200); - expect(testResponse.body).toMatchObject(testResult) + expect(testResponse.body).toMatchObject(testResult); + expect(testFindByIdResponse?.resource_paths).toEqual(mockPaths); }) test('Repository process fn create(), priority: with multiple files, result: "SUCCESS"', async () => { @@ -497,17 +489,10 @@ describe('Integration-tests (repository), priority: entity Tickets', () => { jest.spyOn(FilesService.prototype, 'uploadFiles').mockImplementation(); jest.spyOn(FilesService.prototype, 'getResourcePaths').mockReturnValue(mockPaths); - const testResult: TicketsResponseDTO = { - ticket_id: testNewParam_ticket_id, - client_id: testValidClientId, - user_id: testValidUserId, + const testResult: TicketsCreateResponseDTO = { status: TicketStatus.ISSUED, option: TicketOption.SUPPORT, - title: testParam_dto.title, - message: testParam_dto.message, - resource_paths: mockPaths, flag: null, - last_modified: testTimestamp, created_on: testTimestamp }; @@ -522,8 +507,11 @@ describe('Integration-tests (repository), priority: entity Tickets', () => { .field('title', testParam_dto.title) .field('message', testParam_dto.message); + const testFindByIdResponse = await ticketsService.getTicketById(testNewParam_ticket_id); + expect(testResponse.statusCode).toBe(200); - expect(testResponse.body).toMatchObject(testResult) + expect(testResponse.body).toMatchObject(testResult); + expect(testFindByIdResponse?.resource_paths).toEqual(mockPaths); }) test('Repository process fn update() without resource_paths, result: "SUCCESS"', async () => { diff --git a/backend/tests/unit-tests/models/tickets.model.test.ts b/backend/tests/unit-tests/models/tickets.model.test.ts index 1e5cee7..8ef2c42 100644 --- a/backend/tests/unit-tests/models/tickets.model.test.ts +++ b/backend/tests/unit-tests/models/tickets.model.test.ts @@ -1,4 +1,4 @@ -import { TicketsCreateDTO, TicketsResponseDTO, TicketsUpdateDTO } from "../../../src/dtos/tickets.dto"; +import { TicketsCreateDTO, TicketsCreateResponseDTO, TicketsResponseDTO, TicketsUpdateDTO } from "../../../src/dtos/tickets.dto"; import * as CommonUtils from "../../../src/utils/common.utils"; import * as mockId from "../../mock-data/id.mock-data.json"; import { TicketStatus } from "../../../src/utils/enums/ticket-status.enum"; @@ -189,6 +189,38 @@ describe('Unit-tests (model), priority: entity Tickets', () => { }) }) + describe('Priority: fn toTicketsCreateResponseDTO()', () => { + + describe('Testing valid fn calls', () => { + + test('Convert entity to dto, params: Clients, false', () => { + const mockParam_entity: Tickets = { + ticket_id: mockValidTicketId, + client_id: mockValidClientId, + user_id: mockValidUserId, + status: TicketStatus.ISSUED, + option: TicketOption.BUG, + title: 'test-title', + message: 'test-message', + flag: null, + last_modified: mockTimestamp, + created_on: mockTimestamp + }; + + jest.spyOn(CommonUtils, 'getTimestampUTC').mockReturnValue(mockTimestamp); + const expectResult: TicketsCreateResponseDTO = { + status: mockParam_entity.status, + option: mockParam_entity.option, + flag: mockParam_entity.flag, + created_on: mockTimestamp + }; + const testFn = ticketsModel.toTicketsCreateResponseDTO(mockParam_entity); + + expect(testFn).toMatchObject(expectResult); + }) + }) + }) + describe('Priority: fn handleTicketBeforeDelete()', () => { describe('Testing valid fn calls', () => { diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 826c144..db087fe 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,8 +1,22 @@ ## 📜 $\textsf{\color{salmon}{List\ of\ updates}}$ + +### $\textsf{\color{skyblue}2026/03/14}$ + +$\textsf{[v1.4.4\ =>\ {\textbf{\color{brown}v1.4.9}]}}$ app
+- $\textsf{\color{teal}Addition:}$ Added form-data parser middleware for requests including files. +- $\textsf{\color{orange}Patch:}$ Updated: + + return types, mapping and handling (part 1). + + calculation for delete-permission by comparing timestamps (incorporate timezone offset on database read timestamp). + + 'tickets' request: more accurate check for containing files. + + use Promise-instance fn finally() in repository-layer to reduce code. + + documentation headers and display error on symbol (&). + +
+ ### $\textsf{\color{skyblue}2026/03/09}$ -$\textsf{[v1.4.1\ =>\ {\textbf{\color{brown}v1.4.4}]}}$ app
+$\textsf{[v1.4.1\ =>\ v1.4.4]}$ app
- $\textsf{\color{orange}Patch:}$ Updated: + entity ID's are using now nominal types instead basic string|number. + some model functions are renamed to keep consistency and improve readability. From 72ecdf3536a9b24b3e80370dfd242bb3795e2882 Mon Sep 17 00:00:00 2001 From: yqni13 Date: Mon, 16 Mar 2026 20:16:54 +0100 Subject: [PATCH 5/6] refactor: code review changes Refactor code regarding Code Review. >> SUPPORT-67-repository-return-type(1) #85 --- README.md | 44 ++++++++++++++---- assets/img/observe_middleware_diagram.png | Bin 0 -> 102450 bytes backend/src/dtos/feedback.dto.ts | 3 ++ backend/src/dtos/tickets.dto.ts | 3 ++ backend/src/models/tickets.model.ts | 4 +- .../src/repositories/feedback.repository.ts | 2 +- backend/src/services/clients.service.ts | 2 +- backend/src/services/feedback.service.ts | 3 +- backend/src/services/rate-limits.service.ts | 8 ++-- backend/src/utils/common.utils.ts | 3 -- backend/src/utils/enums/ticket-option.enum.ts | 5 +- .../unit-tests/models/clients.models.test.ts | 3 +- 12 files changed, 54 insertions(+), 26 deletions(-) create mode 100644 assets/img/observe_middleware_diagram.png diff --git a/README.md b/README.md index a02a579..7ca4b86 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# yqni13 | $\texttt{\colorbox{cornflowerblue}{\color{white}{SUPPORT}}}$ +# yqni13 | $\texttt{\color{cornflowerblue}{SUPPORT}}$ ### $\textsf{\color{brown}{v1.4.9}}$ -#### Support hub - handling feedback & ratings (`/feedback`) and bug/support requests (`/tickets`) including file attachments across multiple applications via REST API built with NodeJS (Typescript), Express & PostgreSQL in Docker container. Created following Test-Driven Development (450+ tests including ephemeral database by testcontainers) and hosting env:prod via Render, Neon and Cloudflare. +#### Support hub - handling feedback/ratings (`/feedback`) and bug/support requests (`/tickets`) including file attachments across multiple applications via REST API. Built with NodeJS (Typescript), Express & PostgreSQL in Docker container using API-Key authentication and rate-limiting. Created following Test-Driven Development (450+ tests) and hosting env:prod via Render, Neon and Cloudflare.
@@ -64,6 +64,13 @@ Alternatively run application in Docker container [(see docs)](./docs/DEVOPS.md)
+### $\textsf{\color{teal}Tickets}$ + +Main focus on this application is the creating and handling of tickets that are used to represent bug reports or support requests. Tickets are authenticated by client (application) and user identifier and hold information in different ways: `title` and `message` are used as the main description, followed by more specific but optional information like `device`, `operational system` and `browser` or optional file attachments that are stored in the cloud.
+Tickets use status to signal the process and ensure it doesn't get deleted before solved, canceled or after a certain time when paused. Deleting a ticket also removes the respective files from the cloud that were originally attached. + +
+ ### $\textsf{\color{teal}Feedback and Rating}$ User can utilize a feedback & rating system to rate the application in use and send criticism or praise. For every client can exist multiple entries for the entity `Feedback` but only one `FeedbackRating` which holds the accumulated data of the pointing feedback entries.
@@ -75,21 +82,38 @@ Furthermore, if an existing feedback entry has a message stored, but is not revi ### $\textsf{\color{teal}File handling}$ -User can attach files for any support/bug ticket to provide further information (screenshots, images, ...) on their message. Attachments are limited to upload up to `5` files and each file can be up to `1`MB [see validation](./backend/src/middleware/files/validate.files.middleware.ts). Currently only `images` (webp, jpg, jpeg, png) and `pdf` files are supported, but more will follow. Cloud in use is `Cloudflare` (see Figure 1) using S3Client for api communication and files will be deleted when a ticket is closed, canceled or expired (time check). +User can attach files for any support/bug ticket to provide further information (screenshots, images, ...) on their message. Attachments are limited to upload up to `5` files and each file can be up to `1`MB [see validation](./backend/src/middleware/files/validate.files.middleware.ts). Currently only `images` (webp, jpg, jpeg, png) and `pdf` files are supported, but more will follow. Cloud in use is `Cloudflare` (see `Figure 1`) using S3Client for api communication and files will be deleted when a ticket is closed, canceled or expired (time check).
 Cloudflare upload demo Figure 1 - Cloudflare upload demo, v1.0.0
+
+ +### $\textsf{\color{teal}Observation}$ + +In terms of rate-limiting, penalties and ready-to-extend functionality, the observation middleware takes care of monitoring incoming requests by users and clients (see following workflow or `Figure 2`): +
=> [middleware](./backend/src/middleware/observe.middleware.ts) // used for every user-request +
=> [rate-limits engine](./backend/src/middleware/engines/rate-limits.engine.middleware.ts) // executes checks for ruleset violations +
=> [rate-limits rules](./backend/src/middleware/rules/rate-limits.rule.middleware.ts) // rulesets +
=> [rate-limits adapter](./backend/src/middleware/adapter/rate-limits.adapter.middleware.ts) // handles update/create of ruleset-check history +
=> [penalty handler](./backend/src/middleware/handler/penalty.handler.middleware.ts) // set violations (status/flag change) if triggered +
=> middleware // throw exception or pass forward +
+  observe middleware diagram + Figure 2 - observation middleware digram, v1.0.0-beta.2 +
+ +
## 📝 $\textsf{\color{salmon}Logging}$ To monitor errors the logging framework `Winston` is used in combination with Logtail from `Betterstack` as a Singleton: [config](./backend/src/logger/config.logger.ts) -
While working within local (DEV) or test environment, error messages are logged into the consoles. For the deployed environments (STAG/PROD) the logging is set to send logtails to Betterstack (longer storage time than app-hosting service). For easy access and monitoring of error messages, the Betterstack UI client dashboard comes in handy (see Figure 2). Additional meta data (environment + version numbers) help identifying and assigning errors. +
While working within local (DEV) or test environment, error messages are logged into the consoles. For the deployed environments (STAG/PROD) the logging is set to send logtails to Betterstack (longer storage time than app-hosting service). For easy access and monitoring of error messages, the Betterstack UI client dashboard comes in handy (see `Figure 3`). Additional meta data (environment + version numbers) help identifying and assigning errors.
 Betterstack logging dashboard - Figure 2 - Betterstack logging dashboard, v1.0.0-beta.1 + Figure 3 - Betterstack logging dashboard, v1.0.0-beta.1

@@ -104,14 +128,14 @@ Testing of the application server can be done automatically via Jest tests (next [PAYLOAD] { "demo_mode": DemoMode } ``` Use `https://support-0hsq.onrender.com` for {{url}} to test on live conditions.
-See Figure 3 for the different use cases & responses (Postman, v11.73.5) - from left to right: +See Figure 4 for the different use cases & responses (Postman, v11.73.5) - from left to right:
[PAYLOAD]: { "mode_enum": "success" } => retrieve current version number as request without fail
[PAYLOAD]: undefined (none) or empty obj/array => retrieve exception for undefined body
[PAYLOAD]: { "mode_enum": "%§$" } => retrieve exception due to invalid value
[PAYLOAD]: { "mode_enum": "error" } => retrieve exception for intended failing db query (see data.message: SEL instead of SELECT)
 Betterstack logging dashboard - Figure 3 - /test/demo responses, v1.3.1 + Figure 4 - /test/demo responses, v1.3.1

@@ -150,16 +174,16 @@ or simply save as script command in `package.json` to run `npm test`:
To automatically check tests before merging feature/development branch further up, a `GitHub Action` is set up, see [main.yml](.github/workflows/main.yml).
-Preventing an unwanted merge with unfinished/failed test run, the project is set up to disable merging until all tests have passed (see Figure 4 to Figure 5). +Preventing an unwanted merge with unfinished/failed test run, the project is set up to disable merging until all tests have passed (see Figure 5 to Figure 6).
 GitHub processing tests - Figure 4 - processing tests, v0.9.1 + Figure 5 - processing tests, v0.9.1

 GitHub tests passed - Figure 5 - passing tests, v0.9.1 + Figure 6 - passing tests, v0.9.1

diff --git a/assets/img/observe_middleware_diagram.png b/assets/img/observe_middleware_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..e69bf7b24a3441d6aee199fd407fb1f9adff39f9 GIT binary patch literal 102450 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 on|%h`Vee%GyN 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
rlBS_j{P01aY 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
rlBS_j{P01aY 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 literal 0 HcmV?d00001 diff --git a/backend/src/dtos/feedback.dto.ts b/backend/src/dtos/feedback.dto.ts index 65fe6e3..41eedf6 100644 --- a/backend/src/dtos/feedback.dto.ts +++ b/backend/src/dtos/feedback.dto.ts @@ -32,6 +32,9 @@ export interface FeedbackFilterDTO { created_on?: string | string[] } +/** + * @description Reduced content as this is used as response outside of admin environment. + */ export interface FeedbackCreateResponseDTO { rating: number, rating_old?: number, diff --git a/backend/src/dtos/tickets.dto.ts b/backend/src/dtos/tickets.dto.ts index 5eb6d70..0e6f254 100644 --- a/backend/src/dtos/tickets.dto.ts +++ b/backend/src/dtos/tickets.dto.ts @@ -61,6 +61,9 @@ export interface TicketsFilterDTO { created_on?: string[] } +/** + * @description Reduced content as this is used as response outside of admin environment. + */ export interface TicketsCreateResponseDTO { status: TicketStatus, option: TicketOption, diff --git a/backend/src/models/tickets.model.ts b/backend/src/models/tickets.model.ts index 18ea75e..117c48f 100644 --- a/backend/src/models/tickets.model.ts +++ b/backend/src/models/tickets.model.ts @@ -74,8 +74,8 @@ class TicketsModel { : new Date(ts).getTime() - (offSetInMs * conversion); } - const days = Math.floor((CommonUtils.now().getTime() - convertedTS(dto.created_on)) * factorMilSecToDays); - const isPermitted = deleteRules.find(rule => days >= rule.timeRange)?.apply(dto.status) ?? false; + const passedDays = Math.floor((CommonUtils.now().getTime() - convertedTS(dto.created_on)) * factorMilSecToDays); + const isPermitted = deleteRules.find(rule => passedDays >= rule.timeRange)?.apply(dto.status); if(!isPermitted) { throw new PermissionException('support-delete-prohibited'); } diff --git a/backend/src/repositories/feedback.repository.ts b/backend/src/repositories/feedback.repository.ts index c609719..9b84ba2 100644 --- a/backend/src/repositories/feedback.repository.ts +++ b/backend/src/repositories/feedback.repository.ts @@ -1,6 +1,6 @@ import { PoolClient, QueryResult } from "pg"; import { DBConnection } from "../configs/db"; -import { FeedbackCreateResponseDTO, FeedbackFilterDTO, FeedbackResponseDTO, FeedbackUpdateReviewDTO } from "../dtos/feedback.dto"; +import { FeedbackFilterDTO, FeedbackResponseDTO, FeedbackUpdateReviewDTO } from "../dtos/feedback.dto"; import { Feedback, FeedbackId } from "./interfaces/feedback.entity.interface"; import { DBQueryErrorException } from "../utils/exceptions/db.exception"; import { logError } from "../utils/common.utils"; diff --git a/backend/src/services/clients.service.ts b/backend/src/services/clients.service.ts index e8f4c92..37e2c6c 100644 --- a/backend/src/services/clients.service.ts +++ b/backend/src/services/clients.service.ts @@ -38,7 +38,7 @@ class ClientsService { async createClient(dto: ClientsCreateDTO): Promise { const clientsCreateObj = clientsModel.generateClientsCreateObj(dto); - const result = await clientsRepository.create(clientsCreateObj.client); + const result: Clients = await clientsRepository.create(clientsCreateObj.client); return clientsModel.toClientsCreateResponseDTO(result as Clients, clientsCreateObj.keyRaw); } diff --git a/backend/src/services/feedback.service.ts b/backend/src/services/feedback.service.ts index af9f608..b07e42d 100644 --- a/backend/src/services/feedback.service.ts +++ b/backend/src/services/feedback.service.ts @@ -27,7 +27,8 @@ class FeedbackService { } /** - * @description Create is used to create new or overwrite existing Feedback with new data inside database transaction => FeedbackRating created/updated in same process. + * @description Create is used to create new or overwrite existing Feedback with new data inside + * database transaction => FeedbackRating created/updated in same process. */ async createFeedback(dto: FeedbackCreateDTO): Promise { const message = "DB ERROR ON FEEDBACK/FEEDBACK-RATING TRANSACTION"; diff --git a/backend/src/services/rate-limits.service.ts b/backend/src/services/rate-limits.service.ts index 54ef9d5..0146b9c 100644 --- a/backend/src/services/rate-limits.service.ts +++ b/backend/src/services/rate-limits.service.ts @@ -17,21 +17,23 @@ class RateLimitsService { } async getRateLimitCount(dto: RateLimitsCountDTO): Promise { - const result = await rateLimitsRepository.count(dto); + const result: RateLimits[] | null = await rateLimitsRepository.count(dto); return rateLimitsModel.mapCounts(result); + // TODO(yqni13): null-value handling missing! } async createRateLimit(dto: RateLimitsCreateDTO): Promise { const entity: Partial = rateLimitsModel.mapNewEntity(dto); - const result = await rateLimitsRepository.create(entity); + const result: RateLimits = await rateLimitsRepository.create(entity); return CommonUtils.mapObjTimestamps(result, this.timeMapTargets); + // TODO(yqni13): mapping from entity to dto missing! } async updateRateLimit(dto: RateLimitsUpdateDTO): Promise { const timestamp = new Date(); dto['day'] = CommonUtils.getDateUTC(timestamp); dto['last_modified'] = CommonUtils.getTimestampUTC(timestamp); - const result = await rateLimitsRepository.update(dto); + const result: RateLimits | null = await rateLimitsRepository.update(dto); return !result ? null : CommonUtils.mapObjTimestamps(result, this.timeMapTargets); } } diff --git a/backend/src/utils/common.utils.ts b/backend/src/utils/common.utils.ts index a2b6dcb..c381983 100644 --- a/backend/src/utils/common.utils.ts +++ b/backend/src/utils/common.utils.ts @@ -6,7 +6,6 @@ const logger = Logger.getLogger(); /** * @description Testable function for current Date object. - * @returns new Date() */ export const now = (): Date => new Date(); @@ -78,7 +77,6 @@ export function getNextRankEnumValue>(enumObj: T, } /** - * * @returns {string} Returns substring or empty string if endChar is not found in text. */ export function getPreCharString(text: string, endChar: string): string { @@ -86,7 +84,6 @@ export function getPreCharString(text: string, endChar: string): string { } /** - * * @returns {string} Returns substring or empty string if startChar is not found in text. */ export function getPostCharString(text: string, startChar: string): string { diff --git a/backend/src/utils/enums/ticket-option.enum.ts b/backend/src/utils/enums/ticket-option.enum.ts index 5d76b4d..7495482 100644 --- a/backend/src/utils/enums/ticket-option.enum.ts +++ b/backend/src/utils/enums/ticket-option.enum.ts @@ -1,7 +1,6 @@ -export type TicketOption = 'bug' | 'support' | 'feedback'; +export type TicketOption = 'bug' | 'support'; export const TicketOption = { BUG: 'bug' as TicketOption, - SUPPORT: 'support' as TicketOption, - FEEDBACK: 'feedback' as TicketOption + SUPPORT: 'support' as TicketOption } \ No newline at end of file diff --git a/backend/tests/unit-tests/models/clients.models.test.ts b/backend/tests/unit-tests/models/clients.models.test.ts index 74ac0e5..c11c30e 100644 --- a/backend/tests/unit-tests/models/clients.models.test.ts +++ b/backend/tests/unit-tests/models/clients.models.test.ts @@ -127,5 +127,4 @@ describe('Unit-tests (model), priority: entity Clients', () => { }) }) }) -}) - +}) \ No newline at end of file From 7dfda76611987b991e43cd84b36a15f0523e33e5 Mon Sep 17 00:00:00 2001 From: yqni13 Date: Mon, 16 Mar 2026 21:29:07 +0100 Subject: [PATCH 6/6] docs: update documentation --- README.md | 12 ++++-------- assets/img/observe_middleware_diagram.png | Bin 102450 -> 110572 bytes 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7ca4b86..fc7d403 100644 --- a/README.md +++ b/README.md @@ -92,16 +92,12 @@ User can attach files for any support/bug ticket to provide further information ### $\textsf{\color{teal}Observation}$ -In terms of rate-limiting, penalties and ready-to-extend functionality, the observation middleware takes care of monitoring incoming requests by users and clients (see following workflow or `Figure 2`): -
=> [middleware](./backend/src/middleware/observe.middleware.ts) // used for every user-request -
=> [rate-limits engine](./backend/src/middleware/engines/rate-limits.engine.middleware.ts) // executes checks for ruleset violations -
=> [rate-limits rules](./backend/src/middleware/rules/rate-limits.rule.middleware.ts) // rulesets -
=> [rate-limits adapter](./backend/src/middleware/adapter/rate-limits.adapter.middleware.ts) // handles update/create of ruleset-check history -
=> [penalty handler](./backend/src/middleware/handler/penalty.handler.middleware.ts) // set violations (status/flag change) if triggered -
=> middleware // throw exception or pass forward +In terms of rate-limiting, penalties and ready-to-extend functionality, the observation middleware takes care of monitoring incoming requests by users and clients (see following workflow or `Figure 2`).
+ +A certain set of rules checks for incoming requests on a total number for the day and within a certain time range. Before the engine returns found violations, the adapter calls for an increment of the daily rate-limit count. Violations are handled by the penalty handler (setting flags/status) and the workflow ends with either throwing an exception or calling next() to pass to the next middleware.
 observe middleware diagram - Figure 2 - observation middleware digram, v1.0.0-beta.2 + Figure 2 - observation middleware workflow, v1.0.0-beta.2
diff --git a/assets/img/observe_middleware_diagram.png b/assets/img/observe_middleware_diagram.png index e69bf7b24a3441d6aee199fd407fb1f9adff39f9..b41d3a147b937a6f4cc5cb889ccf9dab175b4fb0 100644 GIT binary patch literal 110572 zcmce;1yq!4+crEFC?Hr!D6kcfl5P-CkxuCjkxuCbML?w_N4keDDajEKkZuMT1|)|@ zy5YZW+|RS0e|_)&f8V>_wZ2(rlXb;fa?$9elvQC{LY9yuNi2D>gL`9cW>!*Pbe zE(Ki00l(=pD;x%YU2ss6cn&MUIEY7>?AcEU@*ca=>H3? zw%M;?u(M357td5&^;R%Wt~#ipF*;YlO@4Xt&~O=*_;xxCJ@9x{v#ligDG+{6} zDc;f&a5$SLY;I#A%OXH~QWttEFwnZZB1>^3OOaKCv+Q=gtn^^L_38Z@k)wqU9y)Da z3_M&X>Mv?erYici*GIytav|3(tg_V|l+zj82`y2(%x!rYuj8DJ=SY$_@0);ie2*1} zM7R4}OiQ&*VB_Ldhk0h5IB+k%dSD|T0-q2Y2S$>##v*k2#i%3B&-7UcbfyU}orZ`R zuzefGuPr7TGdCy&z&XE1wBW3c)r(oG*C*9VM$B#;&USRmus{Y0hxvTNEsiMVtZ%R1 z+tlt*v^9e+UqBb3v+WrHHO-{j5Bx6O)B!Z)&%nYIP4B`(-Px*cz+eU`S5B-Mu!9c< zFTfJ6vB0%ysm0q&IBVVu_StDT2Pz{l;fm0q5{Oqoisd`-RuLCwS8>3>QNGY9!{xnM z_I^{6CO-yIC?pL@MZ<^l9XKI<{ zF*C1QOf%(0b4#svGDZwn26cP(peRK#iOcr6CjH0`_AY3`_T^lU z1`y26pLyO3fRP*F;W@#b`R~6P_)J7*Y}6wc>~PrUne2q62%Z0QTC5L#zc*!va+}6s_HG8}%C`=-!skc2Ma-9c z6IdZT^50B6;E3GL&AmbPwDuSn3v9v#Iyur6vsww4{TLot!reZ*X}dJ=&3A+6;L5)n zNX!VGw}g#BkUtHI}zWBGtcuE&8$yWuLK~k>&184M)olZb;aFjwq3q%1ja!MQ# z_^@BKcB{lB%MMg$z7sAe>-MfTdA(qH@u)k?YcAut3Z4sf)oblCkQK8_nzE$_dVdF; zw^5jKn@1D3lu?e9NQZkYVk<_~a^WD1YBYFX5 zhk#@N20Kxl?9I00dn~nibdqanCaZS^8yl-kw|JY%yGZz8YR|l3Joela!wjDO-Q)Lg z-1Wnmrn7!zlDoXm0rqxoL7oEC@7=p6Rk|!y7?wFgBYIJ2^eo(S2idC--I`nGh0^2Z z=A~n8bo*%&$3Zavh4d59KuE-3-&4f?(*Z*mqjLpZn8A1MA=SKsOomf$V58zH?aUhm zNIfUc)&!&CBMS`JGEDV7RkdAKLRqzI4MOL8l2Tg`CMQRuBvIi>g;yL*bJ;``5a!Ym zaavks4tv6Nhx1GF9&)oX3Ml`edGi-iCAH?}5gBG&xrYJb)|2HDdBfJy6EB*A@VIPu z2|^xIumoZ#C+A(Q6M3vAV(gMA>>a*3HL1cGn&5@p_joM#>MvE>O?g5M2e^oXnpMDA zI>lF53=C65WSB?NnN6%LlE*~THnH6a5m(i7leNv)%G+!=x_0CuKvBIB*P*JTk+KtC zv9uFyIn#l&smGikA~Vw(9MQTOL*w6QNFkt9SbmSEV_9xst|R6r8$sP>OK#NOgJ_$c zqQ4a61C>2?se02D@;?- zb5Id&(Zg~P)F>x{(M6-eif6gTT8^1{tj-iUp;IdC-TC@I4Z7m2@w}Oq`qps6FHVTKYRlC|QY17_e)=^;2UchN8?Fvwum?lHGc^uFMbIMBTKoSNfPSKh@3dxbmF*>-u zH-?yznIWciHPqI$5*?kiHnb3)NiOtN#h6%PXnwCX%ws5%Bqtj>Uuwg60{!ZiFtW_) z#*3>$c8cMWT;BQY>EdRGQ6KGVbiblk<2a3Sr9a`%U@a@-rS}jyWf_uhpDH?-$PPu| z&jUGOsX6(<9$;*0(V49@G&r1BSpT5@OlqdpVy)AB({FI8lb-OM@(mgOo!Yb#snl2HQo$*ca zid)s{-gx1sbX5zpvWruT%8x8o7Q#2b=~`HCWz|-&r%Q7iEztmN2J0x8EaNt;8d&UQ zM(G#e&v&bs1SmLrppHarwk0VTiWDv5RVM{>Jer%U%{H!($0SDEtq}(50!tLfV_l6RX6&fk-awo0IH+ej^=$v+=A#iQdTdqJ{RNeBWTP>HkJX%zk zs|*T(kUk904vkVbn;Q!mEAc2ICy$FtjAqCh$XUsk1uMVZ=zm;$KjfZ}62iPaem=Zo zPDN8Jb3&{1Szu^X$EtHX+~x}2l>>f8#-Hjmw}wJ79_8+sN2;nQdLVu_a2b{?<$$i< zLZPFXBi5fCL*LlbU&kSiPYs@D+vV;t0&P*(ua~WA$`6=B%$rz`eHC5iwH zO7(8L4A)~OrdEW`uoiU5%dHj%he|v<*S>1sVZwQbAfU`+{jF;;=U2yXKp9 zCO@-`N6HjCZ0)F4Qm)}#J9LXLY=J9Wwat%ua zmQz4SEj4$BJNJoNCNQ*1cA8?12ZnY4AB^ki*9HP`^OUi(@I$HpA4qXoP*mC0FHw;` zgGAp$hP8GR5lWdi+-Ed2R__pow`m_8AIV&UDU69xTgCX$*Pp1ubu$tSH9s}K8Y^8- zq4ZvnqTo|OfcY4iiUwPl(N5bM<%IBP%htj=Amo`HELs_z1j&t4AJmE_Gw71MUP^?i z<}JB~5Z)I^o8c}ef2s8t-Z4b`*W&#Z(tuQO6ieZBNkd?M#-b+(>bYph>Hrg^BcJtr zs#wq4D_YOXp*%MfwP2^||FAC``27wpxlt=b#mWe=?eTi;*{tG}%KA{h*cLZXJhA}j zC=RhRJ!a@`pc-ijt<{WN(7+$eW_erkzS&F&iNL&Q{jd#9pSoCGdmbhC$+?whv${jG^= zqe|#RqSYybCeeO@9b9P{8ugBrW|gOx1%-tC+)A@7hs)Z4(ZwZ#FWQC)=j2-C3FG=b zTNSj^0Gs@Tw>7te$SEHxYBy4i$iN>948_0f=ROyrI#%pf161!_LkeT4nt9W_wSarR z7I5mreT;d+s}mkifj?IHl1wKhV7KrgNoOO%d0i+)=!hs6Q6cPYLz)obm&m36=p1O^ z(0a>&M8wl%3O?5t_jqh&Sk#*P82y_Jr7YHOz9JJbiL(D%nz36Yp;n0bY_AvTg-c`! z&MqROk6LE>C_ATM04NY$fpr1Wvgd+W`bz+3LKrEMYCqBB)Th48L(z3(l(p51#^gg* zfw!p98E9xSwlFu39t+$7YOkO%anGwx-6B~TxN6|OttTp!frYshBh$akgj#Zyv$lVe zOz}hs0oT)x)fuPEzauR)eg;sC&=DcyeL^N`OdePVja1~LU{#xLwwx2Utm@MlZl^Ke z#GkM38Ki_zaY_>gihBDzjjvpl)tszYAIn3`-vtIbgjDYi>z-@=L2z2%mv^a!XsP~* zOM%nRK=1{?uM`C84Q`}TA1U7W_(BzJUKraQr>%7-q$MIq^>gyQWS zBD@k{jtCXEd`9D@S{jO+Y?Tx*O&j?oes=QsI8|*_dFucr_V%zx05=3OCVHssNYLC;RUO)xeI=#z@>%^88@OY{kxzcL z*6CA4ggGN;6JEA`pmE1yvCQgTaSc{i&0D1)%dk5(?VYEwsj>8G(}>f1|2D=jRp<^P zW-Y0n%SBi$Edg5vJR+A50BZCMYh}deJJtQO)5Wo$Ar7Kiadg5NFC|0|+rA~J-2kA$ zBf+k|po?n#VA{DxWh@6P7O0VrttJj)s1Gacnt9Vet@JQ(1L3{w8|B5m{N5@TL=Fr1<&XP_xeI1?D2AA!>jRSE4qU43P3x3??q z6%OOB)ho}m-uew48{byzt} zb^`ullTq}O$PGmr^6;^y_u-h%do)sHixUHPQ_9LJ7;b%Jyc=Y`Rgrkut>8U6vrLCP z_T#Ze#}*fiB`df99Mr~zdwLwNtu^B?qkrZ|qy_`cFrYFA< zZd?EmA(@1F-_*42(Y` zTUX^-*3xS1=rPODUBl%a{i)P*AcBgZ(RZ(I2_+A&l}_g3=CuTYz~LSz>jKXJygepqvC1G%gT~AdtJf0VRjsl(1Lu#F4dF#mfa*m;B&i@glXNPSs+I;ziU_= zKtgQM{^Lzs-p@rxv+;%SuV^`7ohXFV5^LK(mjNgYOdQy!T;h}Zj?en?S)v_x^;1?l zgWqqyh4A9Or{qBue;lWS#U>+$F^`Yj$C$AZ_uPa?U9a}+=f^4dhIdGT^R4+wawXEj85a1IZoBSH=PHe9xVw={|QyCcJkp* zp*W!?JRghYrE=S|2jB!pSDl#?c(r9%zQh+}?v}p${93iua%k9Or@9S5 zFPRvYPgFHCqa-BrE;T1(A=)aaUiv0BF1JRFy48R@fFcr$yP>`I2->1Zgf|{QdadN~ zVf)l&GBwQSmr(U=qu6F99U%oD@R_ttK{Qft4J3zJEvGve!_?ZSu1ZG$H08J`7F2T? zumC_JayzH{UlKhc0R|x=fxU-jH!14bZxke1n^zxB~#@~vp@ z(x91;SNjWNV-xzjK{@%;X6;p0n_Ko=042mCa-iTAQzBTOpFf=qKy(y5k~*-d5QH?k zY%Ykq-SGvP_*jd^kv0kLp+)1OicJcWT8PCn8ab zP$XnJYhniOGzvI{9vyB1qUE3506A3K9gt>(|(KG;| z4E;{K2oB??O{L}QMLT8-A7>D>C_d9G)Y8%(nkV|X>g-g7>|$na@9tK4`7B9x0Fl<{ z$^3;=H0W+;-wK&>G{DEzhd9lzh83;bdQ!j+fGq*myM5J}!BnGSzVk~i{(M*e^nrup zRGJ$w;bpZGT+6~LltcBG0_QfqaXa<%8Jn0uVb+$30_u2_lgqmO1+yNTgoBBEByU$b zNI4|d?3wQz%54}85Ao8ox_sGmaCjZZ117Q9c*kFD*XIc}4=@B+P|VYdfU@D~Q*EAn zIeLezgV$r%=7E&3?e`i%3irn8`ml~KOOCJ3yg3JRJPa0iY*I-pdeWyYq=?ZfMNJI{q;!9>d)r2J#@r8&_#qV`$3D zdxmZiO57^UfdbvhvFbzDDx3u<@3TB5kvy2LP}sXxhpXaLD-IOQ@mKFn$nYPY=u??f z9pFHdw1DNW{#b*GhOP=kc2FB_wZ9Qv% z()*kqkriORiFqTPY*!PLbmvMegig2d@d67>quQZ}XY9K69kcZ-MwRF}M?L^~pjiuC z7t8nSWVn(2NnW_yBauvHmh0YEL?4g^JjiN#aPCSWQO#famgF|2THw0DopYioy!oSa ztimDe_|(^mC;ka#<)(c=8$5{xoDYZ~>Ne*sgm%U|+5!hZ!Sx1qbvLwYy? zB8B~OToxd~R{i)=xj#K<1Z80p-XW?j%F8uES|hmLv^(nB&pBONHu$}fnU&}0n!2=f z4+N-;hOxjJgZu<=>6qQ$pEDp#^g3htdnz@XnW#W zY;G4-FDGkl8c-nGBA$gEo{?Wt?2F8 zu!%ecpC9g+t!^~8$?F_o`jj0?Cv?gS^+l^drV6k@l;`ssd>*aa^F7_z9~i6hNCq3G z0jBBaVwoPuPW-KE`va_IlQ-512Ilu>v z0w6^L!s!T*Jao!9&W?+Vk5s3y_gq|Lq|nQ*J``7_%#+q5NVu6ZKhnlP{$QYtE(%(W z-vx-?0%_$nSGmNB)$#NKL1)Y5Pz+F+b^e=6l1gClAaan&_AAXTNfrK+ye|9SC9i#H zI*ZQJ^`FkYJhW@r(}-{#wyXb|=3$OgV`+d*YH% zY85!P1ZFxSXK?7CsaK?hMtnJwKB{n48{!uER@=kw_scLP$@(pUdLBm%DZu1E3a>b;Y3ij)MGRg`rz4gN|2^wqTv(2yRGnT4ij zCz9}_G=#ajnsOUEWx<2mXE2tu&A2uN+eYxc$4WtE10 z&Z7P;wP#EZ=wr8XN^YJ(I+C62svP#JZ0(clHxFxcP5q3iF#L%}IP#CW;*)d+spAc4 zND`w^@bKRgTwU+?yx2cK(D2zCnq2LVTobk3*_pI2Kl9Mj^nL;H&=yvF=AQ>*TbCnQ z1zD>|q3JpPO#h!mI*>_vcc@zBm(F=nMRzVZniQnm>F^`}i>I^AFxYlHkb&L9+116^bt{QM>Z_kM$oJ7!4 zl0F0cY1dn1#}{>D_jiG1g2Jnk?6f|!FeONq_-^6q?|_CtH$PAVwi?FglQ7v38V>lizdvlQ ziIWY4`sR?qKL3dRJfQdw#_+*;F!%RYpxEW_Rxs?9M@b?ie<(EQcXoOP06t#$r@_A| zMd;iAstD!#Uw1>^-=09rdH@rI#YOM~SN9b6Z>x&K|NnjlWBd>6X1e*Pt6(tq^HeId zBv4}jSX|gP-hX4s=lx(%&Cj2oz*YbEN^PKS|986hMTP75Zc+ZTQa_c)RWPj3pYz4C z*PlTouYuX0f*hO@Aap=!RF9fUlw#+Jr{Op zl~~^`>XB4SD(GkE!-tzd^&idoeIaA{=kxzvY=rXxAcF7zfhBMxA6FUp{x6>X?}7fu zl401X?fK?0RAT}vVTeDzpR+ZWW{E+TONHC z{ggc&$==5%Hw*N6uK=9C2er#OhzN4;ntBxqCGlW<`hOJO?|aT=PCb2Rd#G3m_Urzi z%O|)9s+b^Kx}PCC;4PgB?cyH^`*?bp%baX`7#N|aK4joJ17Lq9`3xMulZpDS@&VKi z_|o?_^JctMLL`M3 zc;sDoa`Srfu_tx7WILrJ!d!txAZuhL3wyZY49d=uM-E*lJ!-sdld={UPRBh;h2+;Z zWmt!2rEc$3`aDU?&0U&p7K#&bsd%IimkpSf+`__`j=BD2+d^4AYsD{u9x*X2dfBbX zo?5tslmH_`3Uw~O1X7?}PDhD{ zk>{KphxM2*&9>p;_-U2eB({Xz%W^DIpFHl~+wS~C62Z&AeBN_aRej0D=eX2+w_}oq zRoEKpdNY$2bn(;D){Z1ec9tPwRk7Bst5_e2tzF1pI;{#_+8lx9(=POwqvkIPcdF4$K3UWCsSe1B}K<;&iL>+ zOC*Ov&}FgyNF=d#Kc6fgI~0jLK2>k;{Midf9$qidtbE|c4rE>Q3zUu^&;qr3pfD>p z=Se;k;BpP$T>4deJ7`1bal#QO&jbHGzkmd_RfEI*8HY2`xguJbh?(o3D)?}Xi+r?CM*YsD{!qEPer#(bIdGfVV*CecNxZ~kjal99m}IcsUHw$bQD3d*Y*`3 zzTmf4uTCuy`k7`GU8yh8-d^sw(fFQ{)&=t>-Uhj20%A?3J9vQY(>?4{@J95dODu`5 zBPC*E$-c%Tj^FwYGQ1aZT_`@?0tomEd-_h5g11h5g_Wv&Hyg;rN+Habeur~-ok@rc z#WSf(MfCUgZ&xW`ityo&mE5baX}^3ja56<6xJ`< zpRAA|`$VWbo)}`V`ktDTCsPX5t0e=Na+}c#q59)OK^s)D;pnFq=>nenA5IT{i|iE9 zB}LHaIt&rJ@9Daj{rI3H)t@RFxKpZsDjv{<=<%FR2l=j;CL1_N-#;dY7PTC7b`Tx8 zRw;PbI4U4oat-gpiOFhFGai#~udIOxfqp-uwv${Yaw;cxd7zB>Bvr4aZEenU+CxCbZy&IF zX$FQx?d1e1{3-XYj$8=Xv_>!RnbTRSt0J_;l;PO z$ijHrTKRQ1lwj1y2Kj=hiCQp9C}yj zu&j#MDfZ;M>J4Pc4Mm9ImpdIfd;O|E%G@<p9&~ZadW@kQkXsp&aZ@wonT_#31d&m;CsGNMHRJm96 z+O=e2t6NZ2SvjvYxoqhdFbO%0?=FI)Yz<^sUaTra7nh*7a&vR#zXcqL92#Q0m%DNc zg$wDD+{G!wB;Yz_DxfZ6Xw2!}b~q7Ize}!b!=cLfAOs|S4%-xbQhkJXUE58Qa`nbt zG2FnSyIam#SdUids_VP?i-+7#6**g7cb^+VIRW8Ym^LP92eiXZoRfvQ^$vtsWOhJv818OyL@BV0m==`wY#xOgLl6^DafVAPa0S|vF-G*x9)z7l`{ z@j$gJ-6W91Ht4;2h*t5b<*53GUsS50hqWUjMb!7SRaK<~A+|ha&r_|e`sfnFfVJD=GrnevE(O%?XvaOdw1Xo(w zi^-EoTY6Sr3E-ZH%AC;7UVA>s2l0jr1NyE{fzynj@!D>p>SgY*?L9j=M!D}Nhb^U2 zc}k>=`Wn z-U{?i8Be(HHO;BtJ4J20Vee!SRg{w>$A_HY`Q@UQH8bW>J-o8=xNasCy^RVy%Sk>x zR=8;7GS|a-!3Ol_-_31gvk7&0)9R8|XUwwmY z+uYjXvTSh#tPU{=@lto?WG-9;?ybA{q^8AZ#A@t0Bd&me1SnBiyvmW~n&@rJD{-k4t$RN3+ zv4WmZA+1JgV(Te=DYJ}GtqTq7nwq)!$BPXH&tZ1^lCjR~qxXD743GH$#m<0%7Z&-< zoh|ktkD^bHYxK=W{bgQ*+PK6-V*N^9phGiLvX+*XjpLd|;vo?LXk~o7J>7b+weFoc zod)>`;3=KPl+!@{$+V%U&(6FS(fubGPyb4R0EWm(pNrEZ?)p$vTO^H?@*@Q$L+^S} z@*@1ZzGenJ>D&Qo;N%ZH7uy1Zm(7tm;~sl8JLR}kz3Qi1LD0pj2J~b>K0yDVhjoeR z>_E(GK2m6JQ)+IBiFM$T{&Bwd#sJk4T;wDilmSMnOMUApHSO*Nb&Ny9!;3?x$xlUF zOUt%76}vCK*)jH%mtLD`g$l+3L+>x%%5WS%nsv~uGfA|tu!xS2k1RfId*5`Ef`LiF zb<*uaLqkSErWB}?2Vh1v`x3#0M67%Pz%?mIW;bG(*Ll*SyE^H4V(3%TgEHcczd+Tx z&6YsW%(I?Nb0)6zh5A|5j9oj^qrSsvPu$?*F`oG`<3XZ+A={>utex(hg);`i_KuhtJBnZ#S)bDxa;3)Tb~+K3ZJp zV+89|FR&Kk<-vLPOza^Bl}LDLM@KM8fstZQ_-;^ULJ)ASnVFfiBr%1zTm?6kY$&d%8>Ky z)`hY{FOP!Lj-q11Gf$X(ci7hI`5d)UA2x*fFqRWF>}(}_>Sxk6?R2dl zKZUgW%yXy1V(VyUg2X^^t!{P>1-Yl%ERE`W zpD`I58!t5!orb9uXrdQo<&jDCSEC||Br6zDPVV}otW;%jhjw0m&j$KtZxLLfNcOMi z8^t2h*LWyY^R4P$%`HcwB-^-F+uK=9TzOKc{>if@FaTBf^hi#2+3D_bb=#SW)Ntmt zIgm4h4{Yar=hZiIh{>yP%F=pAe61slyXfV!v4@#8L4$XMKNsh71`gz0*}__MF1*CM zdC#7_ncdd#rxcm_a>W-Vnon+N@> zy1MD%)Y48TQ9Qn9y*Q~l?xn%~js5eh8zVgSqY3{Oq z?eB|n32b_xo{X8ffRTmq1L|ZT2bk25^45r;nqpnMqTmRA4qG?L3Qd=vq{7%AOt$ZK z+UY54i$WdlGZuC4!BM?#v?8q&wGqn}n|aEK#d7uX75HoA?}o-Vlv1kDy&QLg7)OR5 zs>fBLCqBZIz&j%_n5mqulNj8P3;03Q+-+~_tVJ1mT-ejq3ks>WZxav-t#P*l4=lE+ zdKZG@9iMy^NUbgP3nc6?A&uj-M6lGnj$Nys0X0MS5MA1pxha3?7aI07_m5++EL;y>}cO z{pGLwo&%?X`h?XFPHqZ8=`)3)3qVvSR^ztA)gkx8QS9_w&EDF;AVVa#ZTDjc*J`oZh7Q|~WRH*EUq!n- zEvhr@y2RA0Uw)cK-k9(~efaWr+^^%q2j();+J(%i^LrY=;|Ls7L z6ICeIa=ORE$i%6Pf46gJ^IqYA$D|khF3Xpq+$9U4-TlbiC+;f5(GuKln?MzWAi!p=_-<_#6;S_ zroLrt+*0j*=RiG=nIE3~5oOLNH~{BaG}Q7}F9s}wC=lL(-C7LcRbSfkIn2Yu$1D5& z?m)|X#;N*rEN||O$99pANDkH6Bx{D=a8PCtiTU_QpH{hh0gv@4qZB!Rnu^R_W);<) zjr|>7-b%BjC@DxD3Tx)2AsIgN+}?Pjv7~ME< z1@Vc?qmT6It|v1$6*D+{x@>A~*wJ;tV{5NIB_jQF9puM|L1IL=MYUTYxrph}_LBtg z?k~me&=W*-Af+Td01n)#vnJ8F%0zoZqy5eJ#8)qunP6~$V>Neule)XID)3|h{F+v( z2wBCE`UE&CP;Ln-UFm@U1EZN;J8jl@!xUo;PfpI#TkMFa*lq z0~wT-P_hCb**Uqn0(1PG$%3GSJg$)#Xv?w|`i3MVTtsTZy8j*Cadn1P6GW3Fy= z{i$ZPYbq$5x*f{tvt}jr3FWu#SOkz^X5=`w8=;VxR&<6sQ4MPPA_ElS%~dgQy)|x!ao%r8rzr9w9V|a!4u&+1S$8Sw0?xJo88eg1zH~R_(tBz(ImvXqv zC?v9zvGF~pdfjhtX)Ld(_wagrnR6X+G00;P$8j4~Q+ga3H5rdC~FBLt=;+Pa|*yx53SgOK(=bJK618m%Q8-86YkM{-H>ZR!ZfGn*UJ zkd*BWOPx}C0q`x??xX%3yaq?d`Pe!lc$eQ<;Qhm{_BTC>BP-sacTd>74}i22qoAM+D{?cg{-`OL{th0kt-X9Mzx#_mNsUxr{f3IWVvWzp0_4Cuk+l{` zt|3*X-k7wkDB!-A>lx6q%aQP3Wl}r$gnAWNlC6y33~F^*GT&}r4lPm9_O&{FtO!F|UZF zJu#`TnB&`{(({iF7S!|fr(%YzBv*P_x`w7Ug$ZZ8%r=Oxqf&sQ+$CVQ!v0{k{0o+K%6V`Q2_UK@7Qj_Z;17 zf1;NRNLM9ZeHK#2hpCG8H@n}Z>IC8_@!e6;b`Z6HQ$)%W4`ivo)c%~*1mmo6+_@)O zd;wdr5K4E)>-5Lud%!-+_kDQp1fzL)?xtjOMFvgpV6qmaCW~=kDag|@;SFshMTjV{ z5_L<=uwS#UO1=;@NwTb!9!IdZiGe62;YJEs6ZU8ATq+nQ!6=TA_;j`FnwVyln0>X- zHDj2(0X+}k7S%!wNqJ!3VbYWn1LQclN#JGZ_u%#C$e?PryW^2MT=WU<`B(nxRv$Fx zt5EDs{!RJxA;c}%wPeI$ze8ek5xnFsPE^BQC5fn8wo`z03s>?ARb_YBx%fF<hEH*7pINLii?{nxB5G(-jA$-?^Tviow40@!z*_eDD<=KH^qAvheak0u5Xh<*~! z7)E>{veBvwNANQ)$yPxS|c!;e2rE+A@rfSFB^0;c!7>dOg+@ zcLAy}*^X=2`|7J4b$=zeOS90QT0u6#jpf@k3;eF`@@K&U>;-|eo93-?#Yy{_`q#O2 z&#bGC<>4`y=_qsft`)&Dul}OX%(X+4gFsB2kH2WZ18!97b{N$`xyMPb)m2K#^^>m> zGp3r?J6f624u{SxpCUohEMw*w&E4Qrh%O-AkU2fQ)G}rJK(`9QFH^c6e^E; z`~g3eAfeP*8mY{chW26g-J%dJx$v}Tr(gr`dt0JqQ!(c7O=S#bB}%YM@$sW_u9h+f zYYnDk!o_HbcVoxy8r;z@n_oqAMIm$yP`b%`^vE)-ew$TAlIX+jiOfpDooM92w!c2Y za;b69hh~@}h;cmWS{YBPibqruRfLK%nKBn+^D8A~-Ta=^?$}qP5e3+=JKdM`u)p8$ z^<|_c!V)wmg01H6gnZ_uu4xq?V@VzgZv3$ah_XM5r98%eXGO<3P=+%`;5BEaq=wen zE6K@I#USsq9Uh@m2V~NT=u@8)`S^MV{UFM-D*dkO>|_C4o(Va5lXKD&6!MW%MsoZK z5xfJ6eP*0)B{a~!4x8axJE--tMP8x`jtuphR-ZMLEv40ve*F+)(kGGfHR(8>*A{sF zJHZgpdO)}iXpQ8_7ht}gVr{fA_oooi)*bg8c&xMsIgamg_({;lE|PuOWe4S-PY;Zc z7p-$Vxboc}WsscS`iyMGb7_&~E&om4vLbRjVQpf^n-P7lZywd;SE1fM`qftEh4v(# zi+1JPhKC11m!?8(Tw(Gxp-;2Y10nXq_1sMcFFrwbSG{h(;%q#tg;Z0e__&nmlklat zPB1U&x_M8_hga-OR$utwwj~$8Ka~;*bbo)*FMM&~&_8P6*1|r7SbSB^3B6@dWb!LG z8^r9tPd7J^Y7P9omRQlVM8wTVSuyJVc!kS5gSMBzKTW{3^)S%J6DgDAnBMVvGm-A& zWF>!^&vCIF31($*_KLGxe}Nuds&AR8kw(#zTPj20gH8U%^Q2myb;^-g^xQq?v`T4Z zYgxhJ_dD~q8*Dr>JL^YM@eA$gi+()PKFT(hD`&UXB^zcsBXC|UXLqj7SzdQy>M~tu zMqYs=5MGbT+$fdJG#ypZCmw2=+_M~itQ=J2k~`(9;&b*EiFSZzXp77bgO#jmPz;NB z&xXOnVofY2<_M$Z*`kx2rmM%|jK)gY(@4(le$Yp~=XcgU=CNF(o@5i9Ah0CNs5W|e z1?@r>Bn1wCF%yY9w@K=LM2BG{v$X&Qt?qZ_;4@5rd_tU8iRkD-K=7`zq|NGoIW!3sMv=KMXeC+9Xjr-sOsjOQ*HnztgRnbB9*?Mya zGQ2MSK4olEUh;ic1KwP&HvIR$FY(LK4DfueB9E|-GHY(peWSFHZi$Was1l_tO7#^% zaQ6f{ttg@bCRLX5Ud6eEgS!+BkQ1n7%5A?iTw#Pjb6b36h?leAqZ}CTNQ~o}WC=rk z#u(Nm*ocay%gX8fQj`&um52-#1iN(cZb_HgT9xkLD@nu{(la;p{**$P=#A8`Hrz&6 zKM7bntd$^{m{kFei_o;+IZ{q8!4%c7db6A>$?S5HN362)-I2Lna=gP#e7GRDVa3jb ziFE4cG9xFA0TMwj&wK`3gj}jGu}&rjn2dzQrN!^d5L14@p^H~vI@83IQlFW!dHs)N zdynhasVptV32F$-k|!hXCB#+#WYMp9kkx^QPawLPaZkGEt6sg8C`(u>caJ}pb%`i` z(Hr_M)1QeZKf=(Ez`6LerB}fPW;^7)j$=vq2Z!$miS!V{>oA#(;XGAOhBsJ{13AY^ z%JS+cj|642fnC+Q^*QLCfe_L&V?JZd&8CJ3LlUCC+3HuM_9@F9Xus03i&lnDtSPA# zGS`n!aYboc4FDBVg^K}5H+{_dZ7g+Brr_w6BybVaRl2**S%n_SOmjQIiH0a}isO1r z8u(>WXmx*8b*Hq`S@_s?caH~`*TN|YOQeRR-p z4N;zu6%8*gv(%+Ym3LWCz|{YKl%=ZAX=PCuw%FTUxZ~6iE#Fns`M@R4$t%!BZ0O6w zk(y)qEOEJ#0P832Y>2NyH-ScNuburiTa=TZgOAP1%j7FlU{yIL26t5ro!0h8&^Oty?&Q)h|c@A!HPlQ>i!{X*M z9jWhImXcmH_Lun+8k3CBkO?^R<(_C4h|hF4$h*hLku?!e2;CXV3&Sa294clcdJz?E z8;Q2`Cu&Z&7WgVy!hT>)<&@_doFl0*R>6_)bJ|-Z;j;uJahUxpe*UT@WBRqJcHQJH zv*{-_1fsc5ZuHHF5G@o{nr@%~Jes1^N95a=%eQAv&9tjnW?!mO>`#=^g%!AE= zQJZjmm=Ueu?`S6R0^Ar`la+K2N7OuL*=j*?C}l7`>F1@q^sj>X0efaI#*o};qJsIb zU%jE(6P^#Vt8>46l8BGv>H&sPQMRO#tIZt$E-``Iz3!$Zyv|hIR!qi7U*2Xy4$ON#FC~!$YOI(*w7t6$yeE5B z!PBf#g0y@ZF5O43d>gBUO-wRRY-*smS$8O@cvSIXc0+5gWr|CMYfPn$FaDt+Q;OTk z#%Ji%bqyk0E&b(r;=wj<6Pc_K)Bw3kvNe)>oGQ_IMV;TV&6=fZfIuu=sk#1x-jO=J zo_gt)H6x{Ud!)@OFaOBmw<2mf?Y;5>eneN1|4s{1bgYUeUqhvxm0OjqG0MF1T@`r0 z_9O@0gl9$0Kgtp~aM)?%UT$ezH>;L~C!vMWzt1Atb-iTYv`W;bM2=*_>`L^`5PRLe zonnC;dq|><#hNi8z~1Dc66K3d%hl>4_muu0rrrapsV3?gwkt>x0hKOTKu{2=f`AIr zLy;=Iw-9=0bK8RR!v*I($VU*=rm%ZfD+qJo3IR>#T$*(;FHn7FoB#g=6qhcZ-Kb69-HyLKcQ6k%9Lou<$h6xv)QOunj$Vp}3xgBTB7;@I-h5)J z-&Gkzt7G-Ju{zHXRL@^RTZw!UFYM{<`7{cH7xVM9TcxcPCh zok!uo>0Yc++&U<&Ehxu1DU=pfocY87{W;eBIEz*&!=cqQAWdhp#O+rV+Zc!~rh}>> z@g&-R!Q#XxjVxiR?WtYA#D@m2=!{O4U_P*G$RE@yZlzu{CgXItNrsI2@Z@SUxUYKL zf-%O_g!9gFHf7Qh8+)A2xfX-ysQKcsA)}5pOud8d#cYcy%$P-gE;!#Q_Jv-PP@#2r zHmh9shj7MlA4NS=m-BYOQ;Ct!5QCJm2a))net#2B!_1j+C2-#7VZEnS)U59V81SEX zqTK_}Uv{cW^orz;6Gv>j!A~i_eyQXA>+)UqstPP};B-yS#?Ma;GAxfcVGcDKZ{Tr_>s!WGi2~e5+fd*t zhzh2Y4fnDJbVyweTxJg*k0c}BwNOj2hXIq??}$D0J2J=l>TyOmb+cJM{u-vJ{>Zk5 zo(qS!$ZLi-)N>(#M$YJXh8{EywdEI zhrh(|c)n}W>#Lw)n_JNPl4INd*^vQ&=KlQ^mbF+}kaf^Xo9rJ%-BQLHs^jQb_VeAp zK#8H&D!&)XupUZeZ}qld!V1dES;`%bH4<9X4Ajt5${K5u`dT*Kd3o6bO}l4Y?5q7b z_MS?r`Q@VWyZm|M{rUF_IvQOhIfoe!`>$csqb*L~R7;$tz1$b-xPl$nrZ{Z>` z;6$t zyMz|HvtQD;15%j6C;jjnRZ|4lNm(-nz0oO<0CXn8h%e1~d#k$>VLJU>I&DG3L#ePz zqVt5hz}NNKRuESIg)bXjUwJgG6`ltD>Eu$@I~?bdZ)4(L5ucOSXM!j_GGU~Gqf!B7 z;iE&Ly5Q;lkhqiF3#TOIXq?A+`(NY;O&W%MbQntcVn%xQb7ZN2%~bR5RsBXKNX1z8 zz!%y{Ri`a@9$OcO%aNaf=`}rQoSv*-NIn~9{TX^C^)6XhK;yeDE?k?jmopwSNZUPFv&1&f2;w!{=^w+9LX-|BUJTC-xMUn;a(sGi3bCVAa(EZSA%Fhv<*GK_CLvZt zQ=oex+<###0t_M9+wpf*Yu|2?qy7lqkdb2i)ce+|n=Gsnv#ox)jOxtQ_z-Zod3zHa zy&eVEBuOP*Ts$*ynlI^3(n0#@}%E^g7lwG4JFJ_F*Q3AuN zFKP4ca^mF7U}8{WN#DsM(^db6ki_Ywmv$O|>yh?s>lgMXtWui}7q(o?Z{2+rjpJz1 zyd(W;_5frHq-iJe+ci7Zl*T^_Wg?qAN{ttP&6qO4f-ulqeTM?&FE&M*|3amKbicTrwnU{rD%=7KWvWsvD1bN>(z*_`PjW&-ctEV znN1zcwkH*BJ0L7tZH=7X|Mw5UO<}O!g#>Sa1byMpc7zdYahOBixYo0Sa|DdAW0TnQ z``dfQIfb_hjEl#O(2nIWylKcvq}=(fMfsq3QZyg?=ViKkA|3s8$w)!WWP#>UYfG=6FXKqL=naSuJL^U`i8x(q(iaVgFGCWo{AReks}b>(1M z^ubA)F)(1ynj2wEbgyJ|L4dSCCBq|GYI`p!$$Zr1cVk zZm}O*AN}HlzUIRUMyFY(d;O}UV_X=UgVB3~~~40_y+`% zO?&*7^Nw53ZvR*zTgIlN>VTXfCT&lK~S%)^$h+ zJnyrybJWgj!t$SO((IhWxj-Oc$e+*6YS zt)Z`3N{jV}o}fn~cj=OY2i4~6X_>|2QlJQPGb18ItX8Yfg$KoQsEn155qz_@_pB18 zhGa{0>F@q7hi(LbaGm-*suSA~7jN&y#^bd@#^Ts@Ad$X$Qp@942Ppe7>Y@?3G~+zT z>Eaw!b7xWCY^D<;j8aj=UpH{@jUB8dUJ9yl6`XOQkC6bPOLR?we2M^|44%7aBW%3b z|5}72$O1^yV`4O$IlPHq`?at~M~{KD z-JtBcb`6QSbr$OIV&AaOb4;)B4}cQta~=4J`Usory}Zo!)- z)_9AHPj}EKMWEm6DNKcbpkV{<9doo%OWK3_smwM!oNMJnvK?V;2mM9(x6?n_MuDt& zO`qwcPx1EHuWCB6xuVuf@6F`EamhbEUOgijA2vI%8^G(b`hG)RTJyKR2y}GG_0-gw zhhc}nn0&cA5@}|U=%@;*)`po62aeoP>D~5~mr4atZ3{K}gjs^U!cTlu9cqYfBGkzN zQ%+XXna%*oHAsL-4F!V87HR(-^{~Pg>09d-cS~E5@9;S#MF0qBNNdOi9`92Gc`q5= zpZHXdOG0j^%R6x$_om_C2f_K{;ogQVtY}OaQpo)mNeoR>dd(qfX{{t?W`qXf zSc;|X$R69*-+_;nscbWyIIE|)8nlLwSgLsm!(IL6O`_LvVT%jI_}@oMLkwI>g4LWXn8oi0 z(1!~2!L{i$h1(9gVcb22fBOL*?3G*>c+5-}xa@BhNXn3%Jf`ybSdu@Faqe-(geD=)M z&j4O?+y-*U;sX&1P7^p4=SJ7<;!gNHp5}o@ak8eG(Gy?OWAb~?|Cg8a`i0Tuc@6Yv zn0k!AKS)WoUX0Q77xjIH_ZzWn>Ba@d=lm^4P95EeRptG9$$j2*rC-da;a^V~!I>Yf z$4h8G6yTs5hrS_f<7$68NxG1-EkcL=DUm|=nv*o%2(t?kna3~m(*(z%JwM`#k%Ro3 zfM5Xsbc=fk{l_W%n#r8<<4{v`$|8M#H6x%Zc-k!{Qp}q}k@@M)|4+H0snYshs&&(S zDoiU!1rP$&_}B`0ETNJ}a86WgqGqxxHk?x)j+eZ{OTyR3zoyiTWP*2=>5AOZ1ZCY= z*?;&ci0Ro6z-6(DjeY@H*d&v_T?}N_Zmjy>g*;G!82Zd+%AaP@WoLxZ!pU+C3dEk9 z9gj_Q#OHT<(+X5M?q3ZDIR8*%H;0j1u8si)oBJsa1tS(^`^}U-8`gV;ntKo}ET-Eb zYW4Y^COY%*YAX0&gE>zi0$?`kKP+SwYVi;5zhwwM|QD`{*O#zj{>!a?@r0Cs3k^WeR_4z0<7{J}>w zFMbY|z(0jP_9^VPW_{dQvV10$T?1;C(Y@lfR3U9*J({g9jS=oJgs>o{w<{|f0+(ScfFy7(23RM!d^zu zE_RypUbxhE%nkBk5`I8lyDjT;i>-rUa1TM|i`{v8e~A}c_|@HNSGB*7oy|FL=1nAg zO+4;ULOgZ&a@K6!r?TPvET#I=U7vv z+piSHh1V~1QPDWK*GkWjRhEV@hR&DCDBez&f&=tK(^qxjR^nE3nbiR=k ze1|_N2OL<3Gxo`VEHvW;UmCA@ei$d45!K>2c|G-B{A%>#>a?qlJcJNfgbhTExXLug z_$_#`ZPd1I;o_cAf-mI}sqk-d>xZ={8sfX=3qwP)w~fPeZ!XwjPC6S!GY8cCRLrpfncuD-t* z+qRmyznjb!0lnCJX>7#3J@?r6(kaPl+7)xv|H?=IMU5mt03F5+elaQjkDBmga=P`2 zKc(`(`yn>eTB_>S=l+M|aphRZXqw_ri3PRxr5%K?w!>1jATQ zI{1|A9_8&W0pV&NoxX)Z_u?3>JaqAbZ;TYq6&gd{T?U~>R~PXhaJk1DgtE+Z-iSj` z!UlFG<$b%b@YZ|FX8?(Dl$F0&n>SS>uM`-inA>&s({7O8n2$ZMF6QVOzpUH%`l+F~ znAwbF5j-fIyaHF8&lTsG8a`?o?p_#pwLn}s+*?^{BJYUcr=eW@|3CZZb>N2W0-!eB zcmmi8L%IfOT6PV4ycO}kA$-JW_s8CWMZwPg=s1}|m-maA@jZSX z`2M{L#a*S#aZz95jc3G2SzTY!QJr{rdhu53M7;Hl37dBgYi~B|C--I?t}xpZ9%_%kI3$BjCkNi=MRPy@&)h!g0vwyEX#k4EWMuK zihn$m%leJ=A{;OFwf-qlSzaM{JM$%RJWI+XeJxpl zqkYrD1li|ahR7Ax($QzmoKO9anbMgHa%;b*lx`Z7pRb8QwM{Qd*)Q?kz1L&uVE0MH zH$KR7bhxPAs5c=S!XQ&#N%{~j^|@-#L0NOznRu0ufAshp!sxBAOy#&-6_7m~{nu~< z-0ICHt|_JLIRo@*>T@oLEof*F`yV-rWnfav`La?F7YJl%!Z?%c8Hu#r32TmnkMEZztA{xw2lhe zwW~}3JG13_PWQs2FRNl=_j`~I>ip1%d@-BJS_gGMyIOO(SB@MypG(+Rang3kI}?>L z3mXd%lu>yHm-&v32Ar>EVAMNslb{~mQ%=-mGbUFK_w28oUqU-I8lPX%m${^9HRf?Y z=frrpSWoHYPT{%~?W9ac(VWf`s&V*GHS(#hIp&eho|#UwDLyM)Kdp|d7NUtgio)uR zG7VhMfb~zMl!?AsKnCHkaaMfd-}?S{d`qd8Y2oFrs8$FLmsP1yo++?pthdR^0X2)$ zns-D0+n_1w>^}YVN|fT9tIWXD2P*CVh&DD%ykE%eSqy?bY%5GB{ML#(K_$x+)|LQZ(gYhe9+*~1j=M&V0_i799Fvv*Ng z>{d+yC-c7go(Zqt$*zg`oL|o_)G(z0K&DbtPVcUnH$T$J!1U({w=8c+YOvpGvBg%M z2`@?igF7B8qZ{TGPicnM7_XR;6>KqH%43nPozL8@7cj#=QVdk@rBll5S=Dpvc{@9rm zDo%`Ng25L^2(@l^)=Hm%Yz`soqK|}qKh7p z3+~89YoP5p`sTp(5CN~n_i32RK2rEpm>xH#zkqYA{f@N>8u+nCCgN>YgCs20Yw~t% zn6I;GFRW8JaXa^Q`mD$D{t~36D!_?A5@aJL*f>}gs3p6k+VEutAy#-Ykk=%?kje`R z?-au4aMR{z-Cd;K`T0E>AWTM*0{H6t%J{HYFJ_8eg{Bn1&hbvRYak6I; zVkUh<>o$M=a@a~zIudx(E|)m{<#poaKJi7O&@244xGysmOYNQSWdzk{TPNfN8_04e zwdhy$C}$iPSyd^HI*CVnsi!4)H}GJ#UH_<0Kwl`&r&kqA8~4N`N&oeZxsbS1JAJHE zXJ6q~{B^eKY^mF+5Y{*tesMXt!5$-4{XKK(9bLSb!qz4*$lp5T{XK$RyqICIQfA)} zW|Ohm`460RACYM1p!i8%(O)PD;S3uFl12RWbXb3+OwePDPi;q!^jkCV@h#CnhiB+1 zX?)TBSjeZOts#x(rX#<<{Xe9OT8vDu4M~{823IAj9OP}451=h$#*Da1|HBm1<)KCA zqMhe(sICD0#p+C+9OnOC?H@W*RQm&Z@hpf>Ky~)=!I|~7zg_Dtfo{*xjT-U|h4Sdt zbtz21cf!4^k;>4nx6}$bdv`SEd?9-+!Wj3(*43fBLF>E*n3@R0RBQ_6l?Msq#(3QP z=FeF$OsM!)!+v?GoCGs^G?+WXqQA;2KUj*ZUQ`octpcYiZ9I3pgkqJ~7d1yZc{*%= z389Rx_Tt63O?I@+2V)Ja7R*=|F)>m&Z=nuy;A*Q_bAuS4B2jFKvM7?*d!I~MtTxVO zvnehu-|XsG{{>&l`hdTl_CskSMu!Tu6rAXQlw*)J4A!kpH1XkBos?NJaRpZ5bz)^6 zTMBkiVU}>=BMbK(!sialUzQ?ObB4;yB)nH& zqt}Cszn@y{79DgHK#caR**A23c<6o@D|4l4Obe(_c9~!==e2XeGLF zC4F}Ie69xA@n>d|(nm&-Le2efjd+ZhrA&4AG^vq$yy!Xg3oDP5u*mTR>{66kN1f>X z9$XOJ@$Of?v?G_mD7v9A+uB#O3-&KzP+c%7tQm;BmR>?x7U{)-Q_Fs{#%80k{td6X zDfG3{7Oiw2i`1Ky*y5vi*}~QDUTSh34<5e}=YlK;!;wQZisS~e>FT&h!%?AgshVse zabnn0!xtwUFztUJ-RF*%;xP|Oi8s9CN}c17{R7}IjSpjYVo zqu~rsX%e}r;8Fd#?<)VNJD^xR!vfKnOD29?Xk>G#G`j(2gy971NBd`Xg<>zm-)QM$-uMaHWb4)8<9cq z?uW4B*Op!QYR1XWw`(W0GFN|#EwovwvW$7*1|hMa+h8o4an-?VWkvteVmXYA5}TZU zKJRo~5#>_^I*fOq`AOOiWZb75;GNMmL#Lz0!p$$kn_qvYedkC0HFh`jG;k+YYc!xe znk3h{=cOBOHL$h261rhqazYY?#oRpDkAfV;!Eixkj+KDfLiM8+oTZU$TXuQNvPaTO z(YqYbNQw^*C!*4C9epBJcMf-J@m-BiIU@{{xh4f|iK4v=5*+lxC#fTtT2Y~K@t2l` zN22%oGC?%rw}^C>*=c%WD(m8K?g=C~iHBpdS>q>`^HkbB`<(Rs$j@r0zW%>nM7;uR z{PG|MDs>won7U0W)He3EwiBVeX!!8!T6Scnbq_<}-rfZWNZdB0YaF)B>dXYr^>O$dc*x2V`;t%Da(gZlWSQ_2+Iemk_cTJ9hKQ9*LN=S(TB#+w9fu?=W z8h~=D?eLQay`IV4)(%}~{1Yu~e&}gDK=)?eyH2y>`mfh$zW*;VEv3BbKr!;(Wt4^e zG4mwoJ$U2BMZ!cHO{Xs&rJiFwIV*Gx+^IOgBPtTvz2oU@j~IiF_`m+#u%3gohH+4Mi_ zw5DXMY$QIG3!L@c(yTtyFYbyV@pMBv7Hcf5Clz3Cd+MiDg6I9DsV7+*biURZw$+CD zRt5%K_*!dc_OE|jZVsons(J*z+~j9AcJ!2 zFLztQuEC`3dd|O0vBgW~O;&lPZz9?iwDllFB#9UpFg4YlQLfJ^ah zK@pw7VOE5u_rz4G`HZ0_8vfyj8PRmpKKzt}A#wXW(|Z*b!PF)%_b^U`K}k~}EFtK1 zV1ij4ucl9rs*awTE{sIpP-n^a8{;sZ_dS%D`L4(P)&9Q*LKn*2Mbv!nfz1*738vARYbv?iY(kJE&pnP}#$8#+66e+dpG#svn zZ3mP>YAXB0dXCSp$L``LsUL6Jr7w&-jtvRAahb7N>m8fY;014n!(T z%f8A7xwwJaL*z*i2pPv(!a;;_v_yJ5=7Go*M>J}U%WCImOnpI}zoU^XULgE&-{+@j zc&6t4^`&vV9eI}$5qr(rXl~4hbWx(bOrHFt;y1HV*Xf67|;Bq_5v>$liVn>@lmz?-FHQKlcpt(kl9H+;zN$mruPSSj-O(_x() zx3G*my&V7V(K(XYz3YlnhM>*P^V0~A^8c4vIrt3p2<}zTq5`>dx_~Sl_bA-uBu5F4 z=|icxcsh<*g{Kg$3I$^cf%M3w!SOWyaYjABv24ET(lCvps4)N+YAhw!c*Th81JGA3NexX> z>q2o2va18tJ`H-NoO+O4__3O+7okMxbxsmMV--MwwKniK3j9iCTz2(x8e-C^RDJv6g(zLqiqDUsEu@Gb?1Yqd}8P#hA>e zsa~6b`lgyq2|fY1?4s$}ml~N6*MlUb#OWDbK0Yy=0(|_4bMkP8aY0LTZ0OS@PVCDE z5%?-1*OBl%9M|lXr7=nNjV-Ce=H6<^b}EjB7u>28^x(_;g*0B>`86w61>^;wmY^rv zr33->QLtR)8EtPG1Qk2aoHiosv=k4UE1vGi2eIXa1<6c^@P2jE&MIjLC~z* z(>uvXkj>96ip~Vyn%>j!6&%ioui>76^Px2V2eGDPm*0Myl=E##RkE|e3 zO&iaxe;(&ulLV2&0Ljg*GbKbAHA2KUjg<+qk_Hzoy*Xf!guYZGc=70dpjA=_QlQ=U z%TkS_In3~6WGtbP4I<#?@T@>hJT((O_ha{~c-jLt(qO1bxKW6(45mX0dE0k6EFs!m zpaq6SZ+uIih~Eu(&fwTx{!!6(TyI%~asDC57PdyV#Q}&@^k`BXpbzyNVNdAfA3KWY zHaI_`S$eIeOOJBGffP%1#7C1x-bnOkE{)G>(?za0-BG6D7USaj#0nX4@VPJ1-N@+p zXGi|_1V8*_p!Pv^bD7Y$>bYmh;_?GYx>(lXANvs$A$xC zimZY{9f3Rt?m^K3{?~6rP|-hoCvaLdt{b+vD(8R&JmDU&X@RvCfC6}JdKD|(wdp@! zu(pd_a?aRgHTIP9p-hQmj-g6K+3|P5Gz&s+U)}K7?W4cJ`j}Zym*^B{r`aM)jtS0z z{Cj|4?|@H`_z4sUN9eg*E|fdFDHjSxEv}X1i#M_lo;UEB+yPYc$$jBkR;cxU+gTKK z)tzG}-#&vuph7@)AUONO5>bll-K$=p-c5&DU;UVVqV}{lXacnqMH;K&FP35B;b(B^V(yHOc#qtMQ33r}c?^8IcF<;wmSn`H-?E-RZ$i)lp2jRdGT(rcDt&8oVl!Tp zmdhRsXs7(s*M~<~knQRsKxD&BGGW7|Wsvy<@co7M@?cJ#0L#9;_aS+#`8lZZ@*=j= z9yIk90GcGL%&_iW6W|gVo*rX6p<7BbUvv2Fr2~qM-o;c!puX=ZfP{&ex)spk3O6teC||)Gwy9MdSWoX#xpn7`o(kf3T*UEKk9hotO3GYp)V6OO z#n!g=Eu@#`+;gpiP?T+ehf2}-%_SN>8w3*>odGi~0vycA%M_VgYab5qf;dJw28yHD zy9COY$Q_yiB?*WTly9PR)&A&5&J$lk*!3-EwK@4QlRd5HuPEXX>$4Zi|3_|2W&3~S zCAOGqhfo~=Z&6?$wY7f`a}GwFfv6(Dq6wJ|f-JKy6ULERx<zGqq_`e{moGmgP8Zd<731;!Txv?_s#@`hITHXkiE-mg$jq67-BMqd z(f;VXcd|OOVWZ^z%%O2_zOCdGiHUpRr~`jt!H$x9dvx%Bb|7IkjqySL4+f9vSQy6! zE=5!72!WTezU`#&%b z4?8vgVr^3ojzz{BE#XvAz@o+hSVW4)K#u8BhbPEv4!NEgTT?ZhJIH#ePGJ;$GaoCz zn?+SgQthj9#6m4W%{>d6#wtBI1h~#!y%M53FT=f2QNY;Oh>Jh+y-TQ|fRjh9I8tRV zuW*Yum7mj^qGSp>vPkttQ8=|ow_j2k3xPtI&H@HT2rNL1X_aMQ^s5?s*DqnfoK;Yw zH<~`fAu>sQBW5|q=>!)6w3A;1dip^nm~x|S=MRg~h>O+s)(Z7);->IKHBd99M@*Mu z*ltNxiSW20GeJ~2Y+$?~=3Zh7^i@YIM3~W$Gha|~Z=_=KJ-qa&OiypEWBWUA()85< zuBHLxMxZvJlor4D1ielwm-=HOwq2vQ2u7OT#h_)^t12HIg}!6iZ{V*`2;m&PzEDb- z;~kz!RSD5cY}=xcxznTdOF!Fyqf#uOxPSv%?3U%MNfG8jC)9P`-GU5rL=^%W1~mP$ zBe{~BG=5ckuPGmh?uwy>m1jPur$^s@(9l+3@pOOO=ZGTj13XrWXQEq;T>Lqw0r_g} z)C0tvn+Ihfm_ZMOwCmQ~s3<=Qt@KrD9NaO4=tM;2jOW>OMYe$fgN7{fXXp+yK&7`#|1YNBUKVDXp1J_;g&%m(9=X?Xf8H>08qXTj!EXAd|7To1Ka%JqyqaO*0H14!-3bt)ygl61 z+e;Ygkk*M2Q_|cI@J9<_)`QP4u_jt4%CTcb{LdH}q>rc-X9;JG)s!6kk146fa(wIC zwE;+JCI6%^r{(ZxSfKZ;R3@q-pChVcwp{I6`L>*Nm|=^Lv#2CMJ6uRV)>0G z&nOtHbdRoQAgITao7d~nPYSDOON5Yrm$2vGPW19r&X{oBu)^Z4~lH0 z)X~{pd!L$Bc_Uk<7$V@{{gS@|H&5RPToL>JypExJ`|6ix;hm<^7+o zT}nGel>__Sli=)a7ld%Gu(6Zi4!+_Y*LOf3yZ(DKEgAf~Exq}BXOH#fB0U$jMwab6 z!t8F2qx+`kH50c~s$0lKOVNYzIFYJ;g6J={g3HUqJ3gtFF&nE;f7~>KZ0W{kqWo8C z*-~~s$4jR=lb;u5p!84u)fw}tXUZT59b}nlF1b);5tQVw1{YSeEJWWv;~|izt^Rj_ z`jsENOIPAvzn&!J z4(vmdBn}Ss=w%UYA%!7VJvPpN4T@)|J)DdL&?1fcR zno(xa#eUXVn3bJ>J$4xDAveD7eCkij^(VXAm#Dx!GE9GuW?mI z9(}e#)S}24P|~ZDb?=-$eQf*i%Wh9Yr<0{=?iD|H&Vw}nATK4Q1D{{7?3MP8P2ENW zv~*rw8_IqY5s@#Vz#`V~c)HRogyl#*$=~dW_+&~XZSAhPoLOq<=7rSE>!SJ4j}LvS zMe-+D8OZD~lfo+u3=A9yaqBQC1qkcJ8@{fGMxwtuub1U1hgRau(NGe7^zPbu%|GM; zIhm2&sFR;AlU7{(YPMU1TNb}w%LJHNbgLqa$Z&tFl;?FJ^AtWO~h9^z1*u4GoM&RqCQo(@Tw-==) z&h0#RB2_-q5&Cu~Purmqy-5lX^4QzDce+PYscP+9nGi#ja@Y-Q6 z=!cxxUJ<=wYhj#APmeGUKPjOX^yC;AfrjVHCyj6etDx37@QHB4cVF?k^rd91LN)ZU zYRFRJjR8bx^N`WZ(uIi)9|5GE$?&m`)GjY=8}%;(VZ1^45=NjN;T_(HdS&q%$Y|IP9F z=ij!z3>5#!MLe3FNL5$v-D>tx&${Lp(wx|P%)#Rg+lsCB`~ka*cwBjo7HR769d=S? z^{>i$b<{n_8V#?ehwEM4kG=Ac^c+!8mYm4)DW3PK(*Sl>`Cu%4M{3FIY>Ds4+kw2@ zoo<`cS${>>d{6se*pr5FubZGca#%!9 z7Q3pD@gY?7fz?&fU&}%kTQo8>$d>o-Yh+V@AD<~XEMmzsoso;}*Bygoue%cG&DmxO z9)UO~?Evn*ounh#360 z*U|LE#Ql#Fs^L}aryC>=%KSaoOdU%vF3SC!X0&YkS<_uRO0V*ZGhaR<^Gth&<5NG^ z)6x==5s*QP)oTpWxTs$oIW7I~rPPyP->afNEQ;ucS4>`QI{6-j=4WXTkBm?ou=uXb z(Vk}aJ#_Sf4SoO2A2WucW@zXG{iw!IQbYQxyD$}^go#c?=*LZtrKFW zx_#he?0s}o%s6T?^+oF)$1>N{P}9`bTPwts9;M?$)`{=mg^zREwxXhw9*&<1Q3;8U zVl8*lzC|dsO+vBS&|aZzc6r`K?nTiNv{C&u@LeBM9#~9!Q-K#BE}7gK^uL@h%V#;$ zVD@D-t_%?#I%4zS!iT|`f1Wfq9_!H`a8uolx-fTe+j+kYKX0$or1|rWwiHcjeoN;9 zt1yY@#D95$?{CA2*f;0cbM|Q;mQSAvODpd9w@G`$yF$*rDyZOO0&G6G-Vc@Njlipa zb*g`H-n3X#k)mPE3&-EObyqtiU-Chu{w`f?#*pUIm76E~H6`1YySF*A7^}dDTQf1? z2u>${8ykA2hl{sQ>{Df)KHZb0x;*9ZJvi-H*h7@{rq4&ZJ!`KU{)MNFXn~LWVKZzo zDaT_D~~8(eTf! z%-M8|+PrRf{Bsv=E*Wri;v$yghys^haNM7KPSlos8NxghyP z3F~7=B_CH&2?GXCod;)NJ&OY8F!qY(r`HRPZ!5zhQuiHL$1gr;-*=?ku48Uhdnn;n zk57*En0>^lv>zGgQiIAFX8VR_7lc^XCr?<FnQBp*4`WaqdRNK zP!bvNWc z){4shim-a}Y;V}JJK75CzslP4^k z?~#nQg!30Z$YI}PG_U;)_k|_85S;8ytXqE-_yx%IMP6n+?~Ek|V0Z_8i2$zi#6>s3PLK-sRy z!29-AI_*Ag*xuDapDw8UUGE5^j#fGlzrmA1c)^6F%=^IlH;v`R=)0|Va;mhP+eK%wJu=>`7|tQxFV9?r!#V~e z2Q=xSaNg~sVJ|6+l-F}d&9wza)jAmVy==HV!b9phI|mie)MEspDGH}rF1G16;U=~0;JkLu3Z_TQ8wP`*S~N!E(C)x%_l#4j-;t)h$3NO4!z@+WKq zRR1LNW3Di0EBxIl=mpaOE}>i{Am~~k#q`qiEib( z+5i6IUhli!DJ<%C3T=0|#UH0pab`W_Sv4=BV}Rdq|NX$AMKX3Oy4&g#{lE;FZ0 zs+3(!*xAUXZ8{U7OH!2UxF1~Bc2`kfyYlYrR6H+%h255LiJ?09JqM4IL{P?Ea7mW( zpDlhyX{8qDXzJuY84w z`!9zMe*NE_sx~CQ?kcD~9=i4WYxvMJ%D85K%z8Y%8W`-z@-!o~ zl6ez+Fh>-O`6PG}qsI^x3DHv5>4@fh^=76eEX#aaHqyXZT~xK3uFzgiFpQ?FBRMZ4 z@@%fHo0KWR?wh0Z#ed|E%nfQ$V6~~^cOE~cn$={zm^}~?*`*5ieCnbh-X6{J?)Yf` zUW|&JVyU&?N&0X6;tT5#B?c_0L13YwJcnjU4tP6a(J%n*7?#D9I_2=(rDjX7H%TXd$P&}q61ClAyxBW}ARnsjgfD;oc9)($ zrOwA5?&J@i*TJsAdc2n|?Y_N?%^WxvOM0oN7oBJp$dQ5At46;c`$MkN)+u0rYKn!P z3-vUA*&305u#SP#{gFJ}2-N;jbS=<-Nz=M&A|-{}rgJbv?J zV%HyWCPzlFel6h1`eI1k*5AuRkdEaLdbuBsvGcQ=r7^OZ6^jjAYwL%7YbyvjKuDId zX5|cA3z|3#Co*k1o_`P^%K*B)YWzu3mzwixl-hZ4BU;e}zPI{O&h3pAi&N@1`eWaC z;+OZFJOrfCZFs+mt?qlY2=Hzoq3sSu8%~=Z)k}fp^U@VhI4?I`sw1O&#qk_$*Q{oB zs`5Hl;0DXGnAor0-j@=!s#nfAT$$+36$v<8T6jIvmZ)uJmg(YDJL$g-TArGT8Pxu`olbk)Fftkp z1pNh*rK>HSHa7wWRhi#icKWG@qT60si8$zCJmGopz_8h!@#@vT!VZ5=;_mL=PxM+76@8j;`>-P5PSf7X#lxju z<8qH-)+f7*alt#jv%`qfr%H~GAgHE=u;^6xvEMpni{q=p?$5agU+VlJi(3t+h}E5B zb{Id{5nsjBT2vaX|H;<07*2r)?=F5i|9UrAE_-UJ6)YxIRNLDk!RB)!NX-{kRy#7v$q)Xi-^CjDZBZEF5ckJQU_O9b`vKpt=WegvP^GpT6hlVHy+QA z*AXJ8E&IQpexn$IGOnE|&rAQYBI7SinKbuqh+(eAgJ_1PbW}%29)ET?Odc)NYSyfLB+Y2gx&Cq5sRf5o)4tW$oaE60 zE_qZmK8NVD-q-Cd=NbM3I*<~_CB3@^oAl2j+G#o#6FUc+u+3MC&w6wW&Y6_WH+`}1 z4r)sx)wpH!wsYCq2<|xP{otsYQse2qpDCDQU%j;TrHW!+ZDc2zlroy;_qUMgqoY zk0j|n?Y-=rnu>Le&EhL%{0iCbRwI$Uk9zxPI4y|^gs)Q*up13R4UkX{sBdIL%&Px_=I>)kH=yz zLU7GugPh4fFPsO2DNzHFB9qyrEPqI5Sr(>Qm()`QqG5M@=C$5yU;IdxCXUzq<=3Oh zE#8yEgOc6e64s#-dzvU}!CT;6@{fMB266({Kt-i>9K3zsc!{y_+!p!I=7Uzq6rCLo zbao$zx0@TXNhJ1%jJ(LW)o2jQyW!W~L)e{TXn5^bqH~_=MTi7jNf)L3@#C#_jUOEk z#r!Dw2oMc&YFoAF60Et#PJPLnJ?jn4^Jlq_-xHhEM^ip52#2MZ+2N*1Q} zCCe6fakdb!U31AHPht`rnm}2d1*@N4IT4*47H*v=X}=)pLvv-hr%!ojFL%zv!o#}~ zV#Owxn?(0^4WTvevo|(zVsT}@8!i^bMut<BSS;ypK*ZuL`R>@HN=+vsW~DOdd|rhMH71F#Z+zcpzF{wA@=0-`c%!` zWc`8d?N_#`st?lXL3tJ@0~98{&?@Uw8t8^w#f*X zj_2=&-!t%XWf!|TbcSs031oTrQeTTZzzjV0%$_`X(zbH2(9O`hySt=@_ARg~`AjtR zfx#K!_SJ#m-hlVc(j~6=qnr}_Q{;W3-p>s59ZNrQX}aU>o7a!PuO}q9^WbzeC=3r< zcReU}2fVMPdYUd%e7g$iwx5}p+`3=zd3WF1-U!IdxK0wVths1Z|oZ`_5E&O$X|Uj5XtZ9;iSMixg674Y_=cl^q+ewm z(|*$KszA*&s3_lC^SQX%bWN=pby=s*3LCti z`*lhRUKo7sV6LJDrHqTqW0%9fO(Rw`2y;-Jw5R7PUjFj@NJh_w%?80Ia-K+z}A#gO*1i{r8 z0KZY}TUrCCT}|aw*fH=~ZET^mq~D&0?CzagdUpI^Gdp|_+Xu5D_RZJ$y;_Cp9N!ru zJ8wlVpB(Ysf+@t8I#1Z$Affq%ZqA*Y)73Fnc(Q>A6X)ROL)CU`j!R_c0a3~T)lje( z-TT7LdHe%eV7%h#jR$85I`>XoPZfPG`)k&Jv@5EpJOB$QXvM$-UrqEtWZI5@K-ioQ zpm?;Ob@sSoXY>YMzg-2^HxL4LY}6+Qq8`^X{Er3f3fE^IS&L;p*TE4~jhD?qS0t)h zwjXSMnVad2bpD4%qP6sW?PU_>UUSXLVnc<7>G`fKJ)T_g9B zV}g0_tHN)+L)A{!Y$^sU5=y*g6AnOX5h*}h#XiqgON-({p}X|xZxqSU$zSsnYn0y% z+G?hX)kA?fdnEKrJA9|wun32ak4puPAq@6@kf>@zjWhG9Goq#TIqYfKSm@5|0$u?X z78Z|U!85dma&(_amIO=A#idfnN3ZdG4!6{Kg&m8AkH~yb3>n7h^3_P2jim3~Lu|Wt zWzb`HmwEr3D#>hfvQEj74ctPZ;dH<|;`f(#^x<*zX<`|0=uk?E5)b0xsL)iS*RIB zt%H}Ms-W$6oL&&waFIT1G|+SJ#+0^vrRev(w~SfWJ5o`kePB z0ODqZQW1k|-*{eFet+}k ziXk2x9=uV~ND;i$)drwcw&2R5|4v^g@K`uJ47ZhK>0YD@A)Cs@0(@6CSz|A5wL$f@ zzrPDud#-XL0ru+|nXu?^M02O(Z-CE%csN&&UVR6^caEfU~v#b3@a`n-1@KvO-s9~*IZ6%U?Sh=T^mtI(YyXPDgE`tY!} zluCbWANzDd?tDT8|7JQ$dk0riD9W$u##fZX8y@C*mSYr+!(KHkvOKWgc)S#6`mz3P zSeRFBv>8XR@_OZ;p_cIR=_RQ|dYOx{I{SqLwPp!BJ3a%CZ5FoEKdjS!y($(qHXZeI z;FaiN7r!)YX3L4`LU7w7{ryq>Pe;;+)?Bnp9q@tRsr^ro8ZHJ`Xz$ztfvyBmC*Pa~ z0fT(}oti0lm}jHGiI2%p!vkI(58B>xe~~1TW#0>yY7%?7oms(@#{xL^4VN^9+I18o zpOkMP0b%R~@i}f{+r|-U(&=_+=gCz!Ll}6P$j38*xzzr5e(1bCnP@f)?cVBw*UUyS z%=ra3i=Wd&!17(ymBC%RWXgc7&eN5&;82=cwY~b|?I|v==Sb7kxD=GW4s|mQ_0zkj zKCeszKJ7h!t|KeezOaSpeis`$vW5a9vi%XkLBbYWj_+qojO5XvNByCCtrJYSgOxT3kbT)d`z zNQa#1b9UPx{hVYdW^nGe)BDe#DMlF8+5o@M_BqqPqn}?dH2sU)5{S%^U?RtDkw8G5 zWDl+AXZWM6iUQL+9RSVLq>w=?=DM~a&T+~LjXXhmA zB4l91xZ=C!qr&MB`h?J}x<>pnQLUlMblC0)M=$Z-<4j`RAJ-SJkmH6~;mx*_lk1L_ zTfRaG6$3ct>H2USk~gSZlh#@NWa!et{(@cYJPpH&GYL6Z-;+un{TZ;#7tC*;6_SRx z-!PEr4%w@L-D?&TGGE5xVn*}0qR@=oA!2X$Xct`2*aUL~%M%`VABUS97Wv^D;aY?X`QIS_n9Po}o zm29plVLu^;5u}nSvsa~5JXxfNbM362I-7J`tp+oja%f|(m2&=&k|yHP`^+_#Hmfc` zfs@tX_vYU0yS!TZlp@4BC!z)t2eimX$HpLs^_c&d%q|xh$9pwHN^aBzSwEGFV3k*I z215YnGaX#ZeRCsjL&!Wzp{_WAkWQ3gm>^#$?(TQ#8nF__`e^IC)zS9rSVioMJ{S7% z9FlEO+wis}W)gNy6*2#7K!)=~0iE!35B(*3_YTRPxvGddIxYDMD?ivgnq$Ukf~ zDB=($VRCXW(yHq0=lv53T*Ja=IZN;P$%qez_GnjQua;%ZO$h?SRyzP6pO??3(SgN? zX+ro6i&~B7{kP*Cb!8^=LrrBu#4n?pSR!l{r9vz5enwW5it-X+3_xdrD7gE6*#euy zlBUNNRksL6Du}tVW4I0GFr(V^A-c@>-G;tIOra-VzSWy#Js&^mcDztA1 zYX~9ZyDBM5xCAM^Zb0la6NoLm4g)ATBl1S6fnMLswhKoOi@7uQELX?6(Gy%%73J?N zp&R7MX(Z`l78Oy80wvH7|DTiYtq=c9n8cT%X`rqVQijmvO~J)Fy0$?&bRP4Em_%*o zN!C%?>@bE1F%UuBL%C4{QKa4ikgUMR4<3C@V7*x-^;#Lv1te8unE&@porK}=?W%c~ zN^yLM&J_8pgy5gj(xU3#UK?M_%g?<{14A3Z<5&$c`71-{zFukL&~FPpg1^rfYu$ut zSU2~*Id^o)Ll4LG4lHZfBEZ1PAT|}8pNDqm>QZju?;?lfac|v`f>LDt@t5#y-00aH z!;COy?x5`|c_!-rb)lS~`>o>$uRsOJG^`W+SJ;SHz*m8sV5?1Z0MMa^(T|}nsHQ_A zAlXZ%{G!tbj6+`r@)GA7kQDIKCH_RH%Lt}`l*=p|xR#LQ=WmKcqFx|Fc=wJ_rwDjG z+X^4zxRn~h?Emw@5BQ%av5xX>|0(nf7oY!1DgEV}S%Bul>Tmsb%+k{MA(!;wUhMxB zGCxHPYK(!<#_ajJVaBbILlBDstVI`I51^=uUI$}f8c}woGUKZ+bR`@or zxEi9O#WSuc*_-A?4tJ)|=KQX6yk66tbswlLZ9Y^3^h?)Sbn0k-_Xme*ZISa|IRe+y z6?la3XhW^SCxhS3AU6H#&q+H(519T;RDjq<8vnC8ujj+8cb^H{H)69BIuU+ETvOhfX;)zc{=7G zlpaTq?i%BDw7GTf&aFyaB=DN%nNd6cx?^^qgWo=SerqxjwIJde`5iF05}0$fT3zyx zD26gJ_1XdMb)?u0i2XhPYY+5T(W62z6MBoPAuC=^GVI!g`U1z{v;#oum*!hwLa}#n zWK(x*U}#)IdT^?JEe?<_Gz;)Sko~1@!kF7YD&h9{RW&srdxM#x5&UQ%L)2=(0wP(lt3$1dQ9mu%i zAyCH36$cGuDPD_nsx^Y_6Ziyk{ac~;hT_e{TM>q_VvWv@>rs|alB`feP14Pc1h6lq zED2KK;J4d$dBcz;Qeq{OcEer%zE&e^1xt@l5ofxF3!9WhowOl5Z?c)9J12wyw;@o}u|w(?Z`9Qn{VqfMmeKExS4j7U+E^+1_oM7S3_|pIi%H%4^u5k_b#BX6ma_YE~i3VDV zFqjnTZ?y3*CO>es_h)W3T%Ps5`tu^$fCnwI>0K-njqhW8xe+n;lTA7(ILyiq9Wtl6 zBrR#aP)l>|V!PN$uRB=_4L|;>{TRKzGYt3ajF!; z6lGk)0*`egK8jy{wu5rd_p&+vCC3p#XTK-jK(SxeD`Y_P6lNEJh58HkYaqz`C?#DM zT5P;Yf)X&lmX}dXpxM|pT{jHDsEUD<;9P3&JpH9ok=+$<&hx_& zqbl9fYY7&&?Vrdx@t{1b49e^v!N%N#zu`~^K*87O==h?GT$+k zDNPX11NM*>EI?$nKr~_ZEm^<=qvCvR&)jYx*3$R0G}7lw#pWx(<{BP;rCkB;)X~*( z_W>_446qu}lPP4+UmUhQ;J-!+4@YPI;SO_kb(L3A=^WECAd$a?)Z%GA*frxm9RL)2 zA+Mync*YwEHlgo(8!U9pKGJW{uk#<~wy!xEUzr=qy2R4o2sk4Q*!}fSJnJy9lxrUD zES*j^nsb<#nmX=xJd&B}A;iR|q>Ka%-NMLV^OMT_bpLIg6mHLZY3!sK{tJdTwD_=@ z)>4f3RX}+l8kC*T<5>|oGLZy?Cl|Hng{88vD<6CPrj?#kC$Gn0zPV9Jz6?n1DrX9j zUmwRNJM<7w7yDE=T_3A{rl-dS_Sg)n7-&XG)^o%j__FF`bN^?+Y92EY77Z#- zbh^ucj(N+ADpcF_VmSX(K#Fbx zsuUHt8w^V7(Zw?FeC6h$z;+RmoS_2A*xfc~wS^2}`_8b1cEA%4&D*ws-MAN=YSQxr z;s++120#Yt{TK$G4E~#^S6uG8@eJ2)7Qsv2ZyD~~;u)%}gTMbk&(!*y#{_Igyd}i( zcWff?IaVBKA>I?(ZaQ~F-{h@Yoyz6Ea@czMwXaV?#*Db>+PKVXJPxF}B}yg$5mTG1 z;HJrV=!Fa{3n&s%ouP8*vV8b@qL~HJ7gr(~e6_4C|7mxqtsYv8`+lf-C*aTcmW=+%Q*Z?`pb4K#o8e z^G>iab&=i85VP;J{nLP;XARHE0Z}LevZX)F`vQJEhvZu7==>TCHKN8gba17;lr|6; zYMZ-uW!jv8TXhja0vk9#X3H6~GU9%FYlJZYUpE?6EEBiN6;uoqzRkVMMN7*$qnt<& zlX&FQP|xyp*k*3;apgxcV0Qs2+f~VORqo#ZBGd1_x_bPAgFvZc!gXzA_8oHW#igaV z)C72nJ3yYVrxo`v`k1>gFlE;Txmu{+W}~?2US2l_%;u+F z5RiCR40W*o)!ai+BysLA2(JNDb)Naw?jJY@(88qy4$`dFjZOfO_x8mzyMHGe1a(u_ z(@Yq8^G2Z}`<^%FVhpp&EGfMOc3!b$((n3 zS%RgCd2OHdFJQjfA&Ok()Buf7sv*6<+nNo%2|t>lIewqy@|bV(b{PAeYyt{k zCd-_eD14*yK8uM^_kFp(gaL<+0wd#pK?Je&Owp8qX`5`IAf)pGJ|hM)91$ju(FKyH zqJboz>->rBA3@C>L05>U4Zq5e>7Vu7@om`uNtstr&<<$tlcneh(`A;CyFCODVGL1| zuROJibV85CFUVY7aj>Z3LNNz~(Lln$Xv=;B08NswakLRvTXFRG@$@;Z8^I$VsS>_! zIZ4HTkl4-IOKWqdf_w#!D}3X6muy>066*)zWjQ%h@2C zj7{6cdb7AQAO{QQ?ayoLc`rBq*Y&a+moS40GA2%VY6@y#{?hMq5K2M*1;Aj3I=%H} zHz-oteJ=&94J2B(ogW1m3`U1vZ_(3tp!Mg*FflPfCU}G2Mx8B|WM}2zwAAPKI-Q-n zcQpsdOoQYgs8a~6M+ZR}3^Vz719Q{q@Y^xD>L24Lt zRB89W#|iEpWUL;lyY#t&=BYZGiUMtJJCrO=G5*V>VEI&f*U>x+$3SdGY}Z-RRIDS z8bD~>8VSe(rL{>W)Y%U1Y;%IG`s-Wll@UIQo)z_v17yGVR;AS%F8+T7kWV+;WZ%q07fuB1p~O3+WK5G^k=_Kw9u#D zkc-J%!9&px^`6rf77)iz7XZAL44zo899XtLKw1Fs`mO?DY-rbG=Jq$YS`Uj6BYJLP z56=$!$6+Bztp;yb%jRt67Vy9OSw(g8z$^ZUJqh|WyCA1gA04KO^)JY;kGs1nr1xc- zq7%%C=!drEJHQ%S?6gb5A56(gGm-prb^2_h!OnU6))tB=RmTBoVa$5LSJ+@g-Os$K z??bo#`ZqCxk08Z#eO1KXJkIun0FrK4USrImZ@j7CAD;Im!p!CW1nF{%YVFpSw?ara zsy2%Mp8CF3R~eP}y+1iyI5%3CK)?P~Az0x0{Blcl1*Opdj`4lg6|ff%y=7P+0@Xp{iJp1^=>nu2r_#frpUdN0D(|kw z#U*`A31ue8AKZFT7H$d2_AU@bJvrjAb;$(=Yrx*-vnRoK1sx6|y6M-~fRK@`h&EIW zXWsM_wHtksl;4ijL*58<4?O#rQU2z)lkc}btj~*uHMQf8THS^dc={2_&_kC*GEYxe zpvui#>EdV828!&85yX^5Y#&4r3#FHLw50z2kis<-&-m*hiKUa^|{ov@N9XNiH(>u1_Aq$>Y{%ajpr@nJW+*0P8 zx2Yd9SYd)EjSpH?#g~I(67g=^jx9uDWoJm^xp3;_7}>70{DvO3*_wfTJXy*(rAnC6 z`dKbmV|h#O2n7qXhkSQK`0>*%`q60ud$5#TsAx{I??S>&8UI$5r+|*wC0=fw5bvjv zj|xc~5^N-j5u|n}j2jS%Ga3I=f8Be|{Rq+*nw02&|gzmu$>&K@M?Q|4)3f;)X3(%tf{Tz$JF>YP{~ zp4UC1DVTNskt~Emvmlj7``wN6{h5##&rKZ=7$1Y z!Q5Bnwl`nrgy9qHxz34SwIGj9on%IrP1w5S(z0^Yvf+qE{cDI)g_EowJn$1?(4>e$ zC_`ff`aqnk#ENt6y99TmGg|hoz;epx`J-szZu83S)WqU=`!WB4m@F>Ts6vK0)^Dg7 z7O+zMLr!#31Rts1Fv8etL(Y|Ko{&R&G#HrZG#u}*Xac(BvfW&*QqnE~l}|}1LE;aX zjqlr&x7yE3P><$~Jx?B<%go7K7?ZzdKLl>GH89yi+@ZiBQSsvmywTawm z-g?!w^|Z3597W-<)uQ_TqO^2+j{yQBIR{leOufJ=8k^c*aCR`CS}pq?8BHL(f)a>SmIp;>OUGd%%N+d+i%Q0giM)n|&H4jndCx{7u6sg4<(+rR?vkGE@PAIdt3=@9g^ZGJFaz=+$~T_qTfkKp zO*osp_}+3 z!3^Cbhg3H5%>;%hl(RDaT)iG=^3!{n`2+)v*+kmK=6NKTenZx;7&axal0gnjI{kB9 zS}dE=I^(Yoj0@A@IS$)BIj>XS-HDb(u9?7$twC@Zng*gZb)k|eFS9oqjpPCNF_YGq zP1N)$$V+J!vm_WiUZ55DhzYJ|cbBn4P$?|j?XZK)bOI)}f*9`0atXVtfz=#LYp(Cm z=zFYRK|CToDhLLm{)ot>c?;3S5N;R}mNx==HfWU!yMD6OKL4qZB4mQMn0?XntCpD+ z^+hh7_!m-&hG^!3VgwsqxEOdeV$pKaE@|ML-P-jrW1foz19>Ug&+WisGX;&BOMLx> z)7yKDb#q@i*Wg7<14CnKpLS=^zk*;YCkyPFdToZTE7^TkDecm?N&J!49&Z`U|5Jq; zI=#!NGO8%JsT6XH!OoMzS#TssBCKLFCPmZVTYt_=Y_^WqKx)wY0YH*qxS$yRyYB=R zTW?;alnnQtlZ(P=_UJGkg5Jn%tGi}9Z*u^28?E~glouy%PMs_Tysi~L@D~OMicw5b z*e8--OYd|NMi=5f5&c>M;>WYbr0#wHsT^xS=nIsclw%p)c~UkA19sr=?9!-`!@44i zH9{9K_Ku_KN&igJVmzEhRWovU&T}+w$=0UJD`!o2g_j7;!aI;urEkPy@GKK=kLK){rPGB;_L#L;j#ke|FS+Il4q-94-5b_0AD4LmrNT5hB4VK2JiwklW%yuUvx zZ{y*+#!ZonRA=ubRzTi7yOiMw{?$NO^bWM>WPRyEMBSJZ3%D^$eb;SI_C6F0cT>=W z&CQtK`lHf}c_3?$my-EY4p_TM!?(&$V`C+yi6R=ad48$17N`l6YdlI+-M|9Us(ms3 z3oKRUGvK`Lt>2ARIu%ZXJQwqK;0+`j-RNmb(Cb+tFm^9W#k?i$ur+KV6~BO=R@WS> zl7XC!)6$iUH2IZvxh!*1PEHOnl&nU)WIi*30%9qLohER%)0D0e%UJDHhUeixE#H4G zq<>x>4iG?4Pp!lH+|p)|l(h6~`OC)v%x3|gkrBrbr!$Q1W?5o9DR#uSndT*I*GHaX zhvQ^?W`q^9KgZ1GlxV8IwNOT-IZh>!UV^0A`qEiFc90NQ*k3E4wdtuQfy+bA@fU0H zA5@jx4LC9B&VJ{$gBM&t9(tDqb*U}*Of@AwGf$ zGw_3-JL54zEN$M_C^mf?g6G+UeR*S&1(tJ5_X(FOxajZShCN<$HCD0B_ad=zp$fpd zt83m-TdNG51}~Ib0v!cmN*wQU>@Yx3e^W#ZvQ0&H+0=bH=Jve#&i#c7>ki59)Z=3F zZ=XuuXf7~nRPLc+%qXtm6lLxiChuZsW~UhLt^2Gun^KwQdV?^Qx$h3uVBk+qZa(-P z>O+`OY;Q4h`?!tN3~g^s#lLAuvUmyB}05SZ<%Dd{=bJEv`@N0rMqkpmrbHkx4S%5Zdx? z0N6z6k*d79vU6JcHmIq{=FBa^C_Ywxe`!091!==_bORn=Iuhvz+^z{zj`o548q=Lh z;WF=^aBX!D?BZUEj|NX@XNZEEao+{csW#zz=gx#Tj%;^Sv(zl)AV`g^Oze*~YrhPl zY^HcoHc@+%@7ugr%2!d_3^eRA49)KG?|Az5_SXuA#rD^vCYB4lDe)`5dB zgdU=z4k0F@fjR0%qwDht4B&yNSMom7cov~pf(eVWi|EQ%xE!s(LtrBKDA@(BsX(g{ zfWAbK1L!ucJ*!OMVvt6!B(#)nrb-ibeDc^Sx2(1O7ijgYmv0g*x$XtkFmW&dX~SgqGvmikxV_$HBOm^*w3&9D zqA@OGwhthDzh++n+

3E2)%LrrSO`xmvEM(@4Bye_;=8f-o?Et#g8)Oii6Wc_e=F z89=!8v_}HMqnA*4Hlvz08}(3QfBv=4Np0bs8XMi0=QVz@#JuOU-?*c6;p~bu0pWY! zat{Vodb`^_HR5b4vj-+#)-hOfKJST?KUr4LyPE2rTopjc$!f3qLFf2%c_ChTaO;d* zCdSF)UA&UN#!>mH^>xqJSj7;m`Q&v1k>(BahBEsH)N^Gh2a5d0uKllC8Vam&j11No z`&eg!t~U*1n@Rj*`(vE4EPc`i8qr~ocMcX`<{o{RLy8qIGbM8QTGo-D8lD&Idwy)X zQal5id9a$Bmq9~n0VrVH3*9L0YR8=p6`%2>1a-y$ip{*7Sdx9JqwrXrY5WEH23RwY z{dAH8?8SXnW2ewCFA-N0IZ<{b0E*m!>0qhezCnVyMW3}oSMMkX;Jh&)Eq-=Q?$^BV zu)*C()L`}t0cqhWY{NGqS34PS%865%@vNyeiXUo8-~w)zs0 zzSf+gB|kHsi{(EqvM&2z=;+JfS2&HWkTg8_E{p8T@|SPv9)1&pc}JeWGB_BY;Z2X3 zixdw~AmwO=s>dS7+B}O|BvD9<;kI(c(k6@Zy*ph7fBrGZHMYd8SkyXz9DVv>3X^|&StP76ruX8GuJ}+ z8{JuHe!kCJ-QFNMrQ5^#r5LC@^7qEaQRlu|S2u0rO{>$f1yGYOw};chJe=o*8W80q z*zve)pO`Q52c{(B-wuC7M*`gR;*yrILmiPy`S#n)u`b zl%hO?+vo0nCaKW$^2|-bL*?U-N(yW&U8I^{G3~RK?jb&+ zyt_o&D9A1p58@vs3V7R`6Zq&i!MR~YvdD;}GO)+OS89pw#mC4>hj0!GMh)*ut(B%= zQ2J~-`t=snbUfPsl|}#t+LA0RELxI^IwPt<=?v7$SEz}3_NV7*CE{19R$>U7irbMT zlc{1@kUYJW>ULiDjN|x^1runE;<=LZF}jB3eR(~Gw9Yl^KXL+ZK8IMuI}(MnA8>-{ zd$`lYINZK$YCmEvo1?oe(6HYH~{xMQY9vLOoEWj_CEu%_of|b1v5?{d4H3 z?R_TD*P{x$&DVw(d=Wff@FLBl+H~IPAB%Q>BHaBx`HET0TBPZn?#tKc-xSH1)N9lD z-G8qb9SahcS&eHeE5~T?yN5NW2*0LjUUKJvf+fKulMM>AX;;`w)ZtKbx2vGdolNV4 zrzZ#2v`Ph#k5>*G4Ee-@PH({@AnbZ~d&hnAqxb!W0SWTDeq)`tw0PO`Tv|^r%A^i7-ve2lNYiZop^%{r<_Ez7SpHcb zR15pRKS&Vj|L1Wed(yj5ajm{7c`nFFi^f!+t#-G6*yUp9LVft15Z`{Z{S)D%rtBl3 z!|-w=CqE8$@I!v`{L*IVEFWTRA`7&znM^Fplm zofbbeI0ZevtYl~_0`C1i|A%cI(?Vh5D`0nl_4V*t;RfcK)5^70$Qq^i8{1=!TQKHh zp@lcnt^)D^4##iq$QO-S7>$sRR-jlsqxXB4Oq>138%lS9J{XXIm9*(wh|C8i?PZ{S zt&foq6zs^BDKFG=$tx>ML^qhmbin&Uc-vB+0Tygir6 zje$0h8Z@Cs@xe~)J>S@9&h*l4mtA?u`Qfh>BxYDUnKSP}*q+HeM zyh!|qgHI~qYF>*t9- zU|3IWzr*&l5;wYvR<=Z{P%`w2X|*=}>p{q>2LUDJ7;S_Rv@Y?*h`kpJiv?eD;1K5^ zlH#l?7p_s$L!i)Zxd))(&emMh<4WOD&wU!?o=lNv_pW~WbAMMs;F*zQ_SP)*`)|FO=IKR}$}2R}X7*mNYSc+$dT{zDbuWv|llA5JQhju;-@ij>PZ{w@X^e z_lvJ74cF~jE_{D$Yr%cC%!n!@Fo+gbJu>*ErMHNi{Efpv#dJQ_Rkl=j_lR(^v7ZjU zPkE4w2GJFt10#-dGbI#$_>Szf4K9_mcQ%IH(=`uzW+Sbl!M(hPH1e9}4HkKe+L*WF zV3JJ4(UsYTJF`=w6tdAHAHEDSPW|C4{okq=kLxhA+1m5Q7CxnwO$u+RKIw13{g^u) z_~l#~1_PLDa;*>*Mpk+2Oh;-$vU&~c)rVN6LzC15(%kMxQ2n?oAttGB?9_G>DX!>M zVm-@z@^4m$gDv+Z&}p2#8hijch!>|L+1uYt%!HxQ_!98XI-z|^7or@zUNVgM%_8!H zRZ;5CqdF*f`FPh5zKs}oD}bRPMTKmh4j&K_rg;R^*v?$ZR@92}(tplI2K=)^KG`mk%VB$zXeN;A)yz|H?CIFv z#j*Rfx^r@?Tq@Bl1qE&+gv=J;zk7JUgpwxFu4D7*4glXsFo}p(RM_MubGPraW|>B{ zy4l4uMUiq_E=5tCI~3Sn&lZWdU=Bc_C%=sFr?bnS6{?XCPt}b)#m;1F%_5Go*GTHK zNU*nZ6U*Xrz2r}Y%?HFHAA&B@fk ze`&RdE>yDz?mP^xV5b$KE#8lJX*4kR1H1mm?}ydDMO6r3t`cLl9>J$x{1-0NW;ru!uO3T|ctNPZ)?DQdRiL3NJg^ySZRQ0>woW4f*Uqo^ z5zh6eKB;4@2vK2I!VBs-SKaIUEs_7c*diUgAg5KogbG(iH7uZnQw=|7$nW!Pq^ql$ zhxfI;_OpV*ktrK}TXM~b#KlOdPLHbRRiH?>^z$;z;DJu`F-~E3eLXh>_6(`+cO?iX zExxxEpD)TY8InXCV~FC)(hIf)czm={@$+J~uEhP-$H4`kOLIy1U(>elH{LNmY+U0U6?d zoOnOWWYYRdF;O6pX5E5Mj0LB{i=ma?0s)Lwg^c&SZN0HLlkn{wRkDDG-0?%bCILE3 zEm>o2;19jUaIZ<*;V4SV?FUJ3CbI5|VbtLE$<8rj5=5P~v>eMyM$#wH?kYZ{bZi-W zIrj9b{0Gpqg)zrd0TvdLVK4o8(LNz0LB59reewZ_p~c*Niq7iHcNt;t9j~mgDXrJ{ zR4i8s+TV+CR`Q2*$X>0R(BT#TEx4qCCjz-rbbR$K^!hGxK)E#r@6ba>izPf7h&a5Z{E0` z)IB<_%VAkKkzFvFPDu_|jzni{ZN5e=BH5D_?PBbjPpm{?D=CzD8t8PLN%JPu8*L?9 zEm6i%l|R$o{5id`wjR;)4yzWM+-sR7N68vx9YmK!^&|UTrspjCdsb0l_0b?c%uFOU z*0^s>6|nTMQtblug|Y zcuK&-uA*0^jnYqhwz4t0>b_1*igIR(!C0>wnVgqY@w6P;1Jz9tJZmrL*n3oDq9oDC zTb3!9)_qN~e4qR9#7B7n=+^uL?%}hjE0QqO3Iz>eeoy{)fe2^by?nM6x%yFUxAeHep{YkIj&y4?Eop)03rDlEBX zt6hb)W`0KBEN|~D3yG7D3pEyZCsZ$$JQe8U#F4PW)Vhg}Zx(@pLO|BAk)oo=r+hCe z%Tz0(wJKe*+Ye@cdcxG~enx|lwY~fFob+8+xuw{Poh|nEzzz58ylUzZ^(9BMOc!v= z&y*BC`$BliXv~L2p>)E z2L@mpN?W&E-Za}h+7FH7y683B>xw~kIFkmNzk9OV6ps6^TXMhk)5FCN z0%j)WCO&RPo9XGQ!eY!bfSsu>HP$RAMEAa|kw zXM8hV`CRXzwG-eZ>(Gc2Ku;CX0JtZzNnuJtdbY=m&|OS>Vw^7A+^DvWUji0j2Z__> z2j0ZJ*QVC!e$5ScMw;{k$>)k%F`p^z{=ULsV=L;oY~E_QhDRi?xFyz8 z-r9gb@n*3*ooq?Fr;gnHA7gbO-v6eDUF&yBB2w$e1mcf7?!_!!U%n^~Gxq=$e6Fja z?e;b1p}$_Jzx`C~^)`DuakEX^Ppj*yr%{rjT;W{nPgzILJ0un@tY;QxA3WPgdu8f& zzP>0im>JIE7-p?l+gMjYG)S~1ng0a|079Bg!LSOF>k!OjyA~Qvo7Q8r%cW7bjVboe;tV!4_J%J7L}ChEUxO?_9F5K9t*(w$D1;OvOOwI+ zGjgJON3Ky#8eG0)N8lyPTyfWq-_NjAO}kdrP}Wi^8ETcMQw-fK`%vK%k#Up2lPKS9 z-D^ViGV)bZ(Tl^8#Ew~c9$gUmv3;I&>@bjq-U*BgqK><7M|=)Obj(91a@hVK&fYqz zs_qLHK1fMRNQX2^Hylc&1f*2DyIZ+@o>-hfe9pB&I9^!x@ zp1t>4v(|i`IcKI6C^G#5O{bnQfh7(@sNPo(`VItN^>y^4e{6l=$m2D+kP&ZH!XoNK zYJvArZ-DP(jzcwTmVWsA5SHayxVSm#5JC=cFD)%A z4^T)1VjgS7!LSge9HE1pE(tGi{{iR)0RjO}ib!;Q8MwIYUcMmH#?(4dI|`kmWc9 zv%WC6pxforuyRz<*CF!QPkTCok`DSqUXD^i0fmQvqlhy{7xN2LiW0bGfbzjIHz8DE z48uS=%a7yvk_H6JGpU=qPmv8Agx!gnD0qI^EgLSH)-dM zeARb4(iiE6NI#X=dPYj0+v?Wp5U4$jq<@>!*a<}HOzI`{ z=JC_P-1q;A-5B057tdwC-GjVt8w;-(ZpdxSAjnIX7{6^PZji+Df;@=IOQDc9r(OyEzKZe}WR$9=4?KCm2n+ zdZ{V7U8lV)cif0GCOOSqHfFfGmTi#QclsV(wSISi*Q(A(*pUWBD#+*T62m)MxJrHT zvo4pBScz{913TyY1V{Gf_Ln_uX*{oi6CAPLsQayp#-6<`XK44{R%s2zDfn*9S~1G7 zkKGBXTgdJL`p5${8GO8q&o1uTr)c3~N7^y|#;}04k!z{4b?^KK!&NqqH7|44p9*O#ICM@!xDo_C>dh*0g5MU-_S&kf-v*Ta@XZ$=-Xw9+ z|K-26d-YoZmcv+?R}R~N($lC*7SD&YoH?>FUz{Y>rmw%<897xsIz{S#zM!#>4wag! zc*wjDY?-n8P?|fn>?@!`V0c2%k+n9gYkv#ef9=(?%a%JV$&1M9wF)thT!r{QE#wmT zm#+^WV5B~Z`&>jo9|GehNH0+(-W_CO!l)#GOe0*YjH!0yp@1#>cG&*~sdwDyW^r(C zKF%L@txgnoq1uI9*7#vPAQslD~h2HJXl`Xd;pM5REe76s4qwBQtr3!G= zQfD_YiK9n6*6W@D47it}8l*^j!VQsLj97^$x4`jMEQJ|wWqZs#I-Wy-!|+qd?W%SV z7}cy69_In!JV@JOrOJ0IY;p6s4BCbn!>w(%GA(g3Ak&GG)ZXRA^R@Dsym_6y~Aq)R+(XzpeBXR<@5!Otc3)ECZua{t(wmv4jTQ`wBju>gpMMA&>TP|9|c^!REen4XtxrD5jNj9UQyz}ObEt|eMWRMji z5x#Lo$+k>uFCIvxQNI~_L{(1rW*>7&y|YI37|1OzNC&VnbCb(whIHK3!#^&Q37XJK zAn8wY5DL3$|7&bWOjZ!0^lJ}{P3lGv08AN)_U64mhBA8)-?4o_$KPq}m}(Q1{}mq6 zoVj8?81~yvh7QnY>jpGiWU4xfW`BIYHq)AA6%#^(bTS0C=W^0=W71Kcm(?LD`7_*R zev6vf2QK~EWG_0nSn25W>Ve^1*zfZd+So#4^A@HO>4_Pg;3XaKrqDg>0J3DU-EB75yZogCywnuz9zPyd9WkD7*qG)s>26p*N)`Yda-aD-q|k+&C}=!_{z-# zlsUV8=`uQ>oO37;N%J!&Ny+zmkKNPFd(bKOd#vyX>5wk5o*M+~vw|y@2&014uT}V603y>G`FB?#ik;#GqKCwRVK{ET`PTJM{$7={I z*O53v8YyRrztNTL6=TEmDv>A?kA$y)4D{73DpRe+RdUsT$&ktM_|M3B*iD8H<~jDdqilrClSGbT+HxawgT5FJuZ2r#{`6}36t zXi4l{#E={&WcQRL1ZIFR5Y}pZhjZeIt)ksdBx|&-+X&4AJ>X?d62hTK+IFV`y~qKe(ZP*+#EOuE_b~Wtg`2o zNtH2%>jZ#>tDTu`Z(WU1qCz6O%K)6<$s(qp@;H|2xwMpaE>=SYOTRySFtUbEi5;8# zenQBQO26I9kmznk!?RdJPDAZFc+L*pTr*_flAH5x-Qde0>2V~oNtXevu84DlgEE)R zo97a0s%4%pVBlLr?7h8vg?Q5E9wGfSV5k>ckuwh&2S(tl*#xMi?X^;2z)azYHbA>|FO#s<-b~9*T>$PD( zNADXC30T#}g-DwOAo~65dGzO{ES*b~HfRk8>7~o>(t9tgEF%u$mejdeeiNJC!SH%2 zk^Zn84f?SCw7u;ZI=b6|;lK5zGRp{DbpJb2I^j^pnTpf%#l0{d!g zq6EoKy2kLC?7eUqcvb_uQVhA^@{zMRD$rnXnF0pC(@e?1+PXB$OW_DG1F(&c?9!Ru z6)40WarQ$wN0Z~ZhV0(S6VQ=H*#rDOz`KJ&(~lJRtC;{jj!Re=4QoeEB14X!O^;88 zS7P0TsK?HyL;5YR!~@37q6fjo)qE}lV)_lUv#e=zsz#9nosM%O?q_UFVqYMJ5@D6( z03xl4<({^y&B~LhsRnJ0fcP1kRnYLwuwL?XBPOKzIX}x?g#=)8M~PdCI8-o)Sphv& znrmb?MQ1tW#)Iz`ta4PyM7egmb8=;Q{HPTpOo+&SNKwk6H6l$C$jFHbffUg1tk0~_ zum6cy-<#ik`d@hn=>Kw2N|IhG_eQ_8E^y!R3}5f?QfQCu^T}p2)eqfz4YD9^C?;rT z52O6TE;3Wtjn$Ge=8&lke^xE4e;&iMQRWSfRH|yTldi}v{L^fAGxVsp8|SlLBDOeH zBT)<3Kv|P!_8JZ%PPlbnKy$~)C`<0H$;19^Jtb9C$Fc;Gv<@q7Z!H4B@9bneE?qcx z&o&5w41T`5|5vahj%QAF>ZS~~hk+?AEhdsM9ff2cvnaJ&##WXT@MZ93RSf_V;pEs* z*=T_^M3P3RC%cE=7Av2Zh?23Lngwb%M89Q+>|R?kW1sdkQ{6R|hkToVlhmSza!FdM z7>u2ogwLV$zgvaEZUrkSjBQ*NUw&UGn$cz&<$v|=agKg@{!WR&(8vmUwD^Z?MWB+r zpx}I965d45cm$4yq>K>z3zBGVU;WLiJI65xz(qoUB&E!e@a{xNh`uAv`6TJuD_L41 z5YiHcpVQcmWA^IQ+3=E(hNujHb^__suHTHFKh*dL0hlFYMC3W=mz!=n!Zo}$HJjCF zQ;C6m*Ns-3CUjR~DeS0@vNJDwNF(9uX_gvK(Mn4$u$J5bxAR)I0{Am!rdO1v9@IkNfbHK-YO1!=BP z0XHrKYkY}T`r;y&_04Z38ghG|T6BWNrwspr-8UTpyq4EJZLl(kULg2Xk=_#p^0fz}B@bRZ8z?ch>M0u<~J`9^;*F$n=)Fb?Y*2Bw5&(SYAR zk7v-=tMXnsl8#;hzYS60Ehs@7t?Ryg4|VqMAMMd6ND0 zB{4J-U$*#i4M5T-e^wHb{_K+^)oo})UN^I&I<+IU`sh)^vgPo7tA;R>;kR-8d=U-; zn0@O2BQlGpu_~+R#USbEOue01Z><%LFUoKB_yT)gvd;`8&Ej_M&8Kg#Ww!2c$8}Q6yUkA^*rz` zz;vAP^xfz6jB@*yYNxUXaiz&L(0r`ARplDWF=z@yq8C^9R~pWEB|dcz3L|0$(^K3D zGEy5LmJP>By&ho{v(MKfE4~)@fU+1+NMrCG5RMS|DW(7Q+`_LdmHY`y2jNM&->|Ax z&=?fdXkahylw-tyg!ctN+KCL+P2H}vgZIJ<7>Tr<*pUc7q6xi7QZuV;P93FTx97M< za=m8a>l)zr;cfO?xu{UC=yin$C=8_bjCDDw=f>DrJT}51vYYQ3he>{(4gLIl5&m@B z-r~K6m257JL9oRm0Ky`0Trh&fzv&rx^2kdc1Q52N=zg^gV2~vwNkxGG<%k5xu52;p zs+E;xN9v)=EMnBEw0-hhE;Y^N8AbQx-05r^IT^D@Qw8zZ5j_rSFyzENS9&?{@36{M zqrD3dDSwKY=S8q32$7Xh4fcCVrWX$@Knf`o_{Zu$m2_N$@r55rJ)x)uKPy*1gaei) zU+Pc-Tqi(F8r|tB5Y4*^5wK`gYV7){Mnf82A zgQxsj+sgbSiAjY!7QFWzvd!EzA`KB=ThY{F?48AGuuKImFu(G0djuf_;suoQwn1$Z zUcEF!(FrYzle=BhIRJZM;mt*@gk z>whGzKYO|;FFr-ag+*1&GBUF~uspA=64iu;AN+0)#Cf0Jx&E^V*b||!9*pUB`xe9C zCPAW%FC+_?LMI1^qrW0$h5~v;`5>|1sxf*1AUfDjlgIP$0lx)y!49~5V7!( zM_Z3SZE=JN-QeUEeq%vEY(xznU-mpl=X~REeP`pdXibc%EJ8~EFLsnC#cfBO&?qDQ zK1^VQY<>%2Zf@4FfiR2rS45C>NzVrUw@Hl}fba4^G4<^}qB8jl$8`R!av<3A(s>s# z)=#dA0pJz{$l=2A%-u(Af3tL@sSBiRi)}KR0!XkVnqlpwv+12ZX-GO(dbdN zL+k0q&#b%zP&${I)PMS^@I#dq#Xp0%17qMv6xz}`sb;erxilYCq9C0&kdX@@L+bg4 z*qP{_lh7?kbYP^Rd{GHjy(;eq!VFj-{UXj4zDUG(1#6xM$9oA|l`zH%C9$!!mHg9}`k;2|L~pjWj*BHl31ZBa7NgqCO`s<7*Ua$`PFkoZefd1Cb^OQru zJBPNiz8}tW3fr}+JQX_s1d9uO?J|Afl5pMJ|F*|=E{O{|047ak%MVn0 zfxsBlamd2D26mX@enx@8S~8D>uSNt_<^3uuy^Oo4=9!x|PYQ%_Po4UlwOSrNz(UnA z^t8~rx^H}@7msZ0!Xzf5(J;(4{E6Jw;CMVbU`B_`5Gn21BP>kHDS;A~&}9}6y|k1> zU_@dpLwg)2KULq+(qxXxfJEc@UImY%C?Ma#4xrMA%mhOwQf?)KQDA{ImPcpeI7h7ZzR=<%;l`N|7*{{_EXew#xqHxiEy5zdJPJWj8835273s-f`o-TAXpt#P% zo_hb5bOJRq(Lc5O{~3*)ZRV#kdv=2V6|`rFd1;HqMt++M=??kdRKKQ-)_6njXHJx7 zHJM^_D#S@9s>W2HhOEg*3Rv~u~Bm)@)Fn)``MSLpv-}En_ zd@@z1+2uzP|F7OtERnWx-|~4?|8Fr$%?L0NiA>~1H|)9L0pWPMmFZ_A|2>Z;6x(bwd*1+*- zoNt z;R~ooC?EhOB9k9##(!WdM1>!4fE`mT6?d3U8Qw0A=7jygsY&cN^4lwIv*^8w~A- zCCOUbg7qd*TyyQ%9t8OaKzbp2+U#T+?lGx-WWi(Q!M0lw0E0n7@-A!FQvOw;RoBBY zT1M(}*LBtSSm?hag_ZC<-@h-ht&jKHP-^y+Q$PK{Mo{a!AA>SVyq^;QtLAi|l?kuc z#d^@J3~AhgOHD~V98eLmukMV$-x$3Fz;ysq3Cir%m?A6APe3DDiuoGqC}5X{7>NY3 zx*CzqhycF}*HnGJS z0bXG7s)D$-l%}VvC#WP-M5l8s*_;GP1Y(hL#y4{J6A2l7_^=G&QY)gUG*IxW3?6XY z5TK?;0lXIP66dV;NOE-W?dagUe*Waax4gke%HA>>PqvK;5S9f;K;}ln!c#BftonTn z!QpY_LLxwCVUj~cBn^_bPL9FvWFw_OPR(sXCGATx>9x<9GdE*MH0pvkH^6DYZOgZwX;NT0T;DA6V-AKwR=Tz0WId|o6 zOdkS}8AM&Ew-06ayC@QQ1ZoZBB`G<>_frk~34h7#1Uc*T;~sBScn9mDW8#q=gF+`% zVvJJC(SqFNDECaP1dN9`z3j`9zl1!QynAEqTYpC0q$69D9eQZqPArVspP9PmISK$f za8~{1@m;-O=IF3Y*GqGhFz4FShmi&7amw_qI3KYW-_*w-=6NFs-w5!-N6n;s|V)m%9*pPeA|It=emgL}q&7uyVCd$0nPN@G9 z93M(!3XvIBk9`)hllKQ@DQOWNPhaG0_FUfjFy`lO#Oc-lF^vg%19~H`IU{}j^8a;t zP!^D$3iw+VQGok3{$C>$$Ug>4b!RQ<*QaB;86SR3Drdaf4VHD7Jc%x&b*(qUdf;Lp z0CL*NxOlnwd!z*p0^^0DGWc}{{mD_VmHDD5?8n1^}dtJ8R zx2Qsp+c+BPMvv8(MMz>n?Df4iDQg;1U8*G|i~D8s1kg6mLpgFqb~U&xJy-YG0U$ivzY~UbseQ}`jn_P)i`jbt*l*&s<>2Li(U7^&K2=AY%QM%7Aaef z(nK;6ErFx+u0b`sxr3n%eNOUPm7fAO&W=fpMU~`)000$Aa$~C3((}2iisw6r-m_XY zheBf2$7+6t!MQu4ijwjkH`y8F4PZe}7aBd|n@H?#u=ed1JFS-HL~wc9e1q~G?X{iA zY}Az_W(T$m6-${bOVI(F>zk|fEu0{C4uvGWcy5(>ChznV^5|+bJ%*U5C)Y!*GYMe* zFjRWh9Op*|DvcX#@RqOvlr$Q1KO9sO{4ul|w}40^2`{Tgy(~Hnnb-$=JNI5QdjG4f zsC_zT`y9|^3j9Yu~t$GVPh zO#y@Qb>e-S??X!q`c?U26fLJD!05B!V$6PuRZMpSh;xYNu?Yh*7IhGfR`Y?9_k!wA z$os6et-o9h{YaqlC_p8ExlaC0|Fe(CqWj~ibQR@TiwF}dDwM#)lx96S_P%QEH7%03 zCOZcubbK3|R#3AR`EgF;351WHlgNi;zGM1q2HbEO(#Ax0XIDua85gK;ujH5cmmc+I z-KELgZ>$Oc-wf%#Wlr*G4Mrff2j@c}1OeR8Zu-G-$lSJFcEd=7LaH}KU7ale-~`Sc z=R5^dM9}0Woev$|o|ViZ)?1pmKY6hINM1kFYuRSAH>CHZJPgfI z+S665&LV9JNGv320Zv=WNv(P>B|T4s+Lu(rCU1<^;{5nezT?=CPE+WlMy%ddlHYH$ z_P6aj>xHnw`4F!V6pqBabzD$V#O)5jY9IK8C|gyU_r&qmXssJgeMUQnjj-Rpl`5@i zm;OApgHV-a8KVA-tst@obsEE%dupe@hs1dr)36RL?wO%g*}`QN=`tgtD(3IVI%8$R z)2^#sULW@MIaPl&WTW+6otJzKKCI}cv}>c84Tha}eXwU;S*WA<+{MO1loX(QG15EW zCb4_FVi0k+hHO<{+CMFJyLN0@zp-abqWG=Q)kzADW90#<bniz2CKe_!(HDVk;ojX@R~8Diu=VLb0SlmdE5lCN7yKcmajZ=XQ&8BAk33V5R6(97N(v}p zN>7ySC5d18;RCT?jWH{ocPqmE4r_n7<{6vdL;!BhB-`!TbJyLk+J)~w3Z4(M7`5MH zJhVD+K5(_NO47O8ou!oRiukazJm`~Epe!l_c?X_O{C8xx66@S z`oL@3C!+_cp=Al&gnzrRU`t=F+k_(WmBi7Ds0#zxn~6ng^$Oo`bhac`6}KA^;AYg+ zM6>9_eXUFHn7*_2!vtU=v!b^@%tA|$jYR57CiJqv+lJtw)q>Mu^%lS4a4Fbt1tD#Q zK6n0pVBe+c$WIJMA2-s{c|*12-4)kWn{BQr86>HrpmNYV^~+l47!ZQ1iD*8T)3N+_ z|0;HFjOz)=rE6OH zV1k-&*6l5mjj0tPwfVKi`j0a&>bmT$FOb)w3*WjpXRLBhwXs!-O@-PK^5lqx_f%pl zX_5}Pxn$^8GHhQiw;RC}ra9(gFvfHkF|QgMEi*QcQZKk$48_xI8Ku*eqkBasvdN#g z_8%+o&Yc8K4VCzX%hGdqVk29sa$ot{ztllLCnm~M#zs6oSc!fmA>sWZ5Yer#66Fb| ztW8>Wdr>vyXH`jQo@2qJ=7w>>vFZdF#ANEsEemSv)Opnf9XIr?=&0psN4Z6XpboC(u+K&ox zHP;jld!rvAUq1H99L-0(OLp;3RdpVRM*i>4hTGv2FC~6(7fYG@X9#d!%csG1hx^VO zy=h!&@n3>~>FA`EZPcGOxpQngwT;8N#9!~yb*2(|)*TUH6#x0TI2W_cD$&=CzPyhV zGYP8eB8w3ngD|60_CSoTVCCJ|>8cX{(ZKl7)KvMI@%r2Il=7EnV$*&)EQU|35-s+Y zG#$u`%c_gbP06ia-94`rjge5XTKWd6^S4h6B^^wV&eB?^}CB_ z(~0YGuc%Pd;t11Cb7YiaRX;qQ)NGe(^<##86 zvJs84^@qi7%FvSqqa{w~XZ4xF@QVtWezyZyewbMrN~b;~&ibO>?Aw>}1I1qo49=FQ zPv(B<10S$d9mo}o!74}bT>Gj)%$>T>;%Q;k4vz(xplp3Mt7mSHIP+E2(94ax`1$kO zCzPeE75zYg)ikv9EmjqKEZ@7Z?pzLrkZ)d2n!cd#3LScTU}#mO)+Ht}tAuZ}ESoPI z&d8?sU~rz1%DW50_y(&3ZwqL^NeMA&q2jE)7yqmlP$Fj*E>?L~P-FAgLFh zg6HAhi~sk`L|$)IH_{7mU0xcgc4do-p@;td_^p1-=cXlK1o( zSDr8Z<7@|8-o4&8b<*w=GxL=wi5(_3Q_yOBSU>^q-Bza8m# zr|4Qi`{B+AHmfOSHB$!?UW8Znkz|&U302$k^4wb5X*s`=ACiWLq%F{s{pF^7cW?9( z>4$EFz^skbi+=cHsB+j7iOJIs$sH5?nSU-UEYIY7+>e;~qg|X22hJ6~Qr@OZT=!H* z0x>NoT@q-P%arSnh`1s6q*YCLPgJJzk&hO8@bacZsYV;~X`Sd&Vo1Z|<(|u785f=( z4W!5OB3Y9k1@nVm9Rs1?ES;gEwFwmj{e-4dXYp~-!Dggva>}JTfm=;#N@wFSpC%`O zMa9GyZ&Q>LyH4b9uw3N!TeVn`wX>GraEoiY8&z4Kocrqd6!>eFMK1 zFYc+M_#~BKqaol{Jo*#_i>~f_Ptnim#3{BfuNrgI<>jm^s68tip6(Bou(hb7dh_OC zLG%j8BBkgsdZxu3{T6KA|*fBE3FbTlwzHZ|D8Uls88rVrXWo92VB# zau_TdXJ^w>N*U@ z2n5P-=&+VyA7H!~f02J@=sK5-1hTyfq)?;!~AA1EH(!QNuUI zSPBYc*ciU|Y9FJ9LJWqs-?}W=+jQsv$&&xh6Xd~&DRFY~@ZPhn0v!Yb67V&-V0!W| zlN?E9As~*i|I}~m0-sj$pHfcS3*PY85;h2387f? zJgNL>ftdJI-(e{Shd$D5yFKgyR1#D+LL!W;(meS3zg?fq$7%)_}$IYl7B!hw9oOTY!T)%h;i+8`Y8sH)IG&-xX%%pK(Kw!}Z zk~{9n;prFRk(VC`xT@T}c7zWKQP+yIy($mSiIUQj{qIr~KdC|Yy}_E@&K`@$Y4>~7 z^yi$Es=InGyfuQ7F`x%!|AvnKo<(C+$Ov0DB@Gq9JP!ZX_uSRujJ&nA4Kil660Rgo z&Lr%OgF2S-SzrKD+@D6@=S3ihOZ4@~JMQzT#`xaWz8GB^Q8O&155zmljtJpsdhYNDMZnea=_roKzw)AlJRBV%r6xFZ=l{QY#TJ zB-kRF&LA->rY6L`00Ebg2sm`Oo}W#{uQxiprI=z!F=r4{p2fC^q0QTa;>k(DRDJeS zZt0O=*?vcBF2q@>(+7*l>??XQ2yp5PX8)+Mo*OI)eHAnr&`ulGzIr&d<3&z48aizqOwbhk` zsj_d*otdY@Q#{6a>pg!Eip9lQt!xy<3)gaOx&4uyja~OKzltb$ zs1nH#KfAJyvf0?^a_me}QdxkcwC|sdo9v2b-ruLT^^#-udTKsMWxaUTJ*Yd4 zCB)6r7tR$-mPrtwG$dF}>SC5@^%Xw%i_mp@C8;t7`I`=bGdA=;bZg+GszivM>*7xh zed+pv_=pvR_r~Jv)>m_-AMt{_)wC_{G~I#yd>|)iXJq266FaO@pRJg*6Y*N^@91(- zM$WmIxz9@W;#Lmko2{2GwVYeJTqrKG+=!(mjg5@}3kwc_^(uzIsubh(eUc+i#JFf$ zk7oFe6}T2ldu`>Ai?WC8j+;ZI?bQFxRc_IWVdd1_2&Kt}z`Ljr%Y+P^&pj;P%zacR za}*KtI!d}{n`yIQ-hTk@%GJ91H#F+)xt@zt)Anj63e<`CGB!xW@hXxeg7em7o&=}Jpd#~7SI<9oQ-!ZozTRL@d?HOwMgWlrnTYLxr2r}$D=)4~Bw3&k zx9FYLcCa>{{W}%ZH^otwi4-Zv0?|zCJ~abykZtcas7YsGZXfEw36a!QclI23{+8TR zcw!J~%uww;Y1UCJ*rcC1C_SJkuf(_a2GEe|;O}{MPD|$_#%?iN=FZs?A9mwkr3=-# zSZ#GLOcbT!{yWBI13%i+A4dGP?(9u%14yxeXfOg(LP9)!_~wtrfi>F_C7f&+quuHa z8N<^+@TMHw=kikKZ@WY+0-%tSqoe!l*&ywwMa1$yq{)vUi1StiDb~S&dHd_fBGRw ztR|Z$prExFx?O3x<_Y>u9uD0!%w~_m8roa1{+RpykOVqS4$h^s%#q4lvV(Uv<9bBK zCL^rsrQj^w{61o$7#so(T>Oe|>)^h0oRoeWwt?id^xwf98j~1j!VF`A?8UzWXJ_CC%Zr>DN1>~Ny{L+T1EPYyo*nr!SW4YY6Iz2*^=v--!r9Qe%%`=*d+l6n%1qV zowgTLdkibT&dq!aC{ug-eE-9KvAMfDF_q}IK6x09)&(rA$#<{nY^4c^m(e6%ue+bX ze;2W;RuLtM3DsGI2W$P`mBS*Tu-$6EOa?C?o*qv#c=F9iEj+guMsZ`V$WM&A0|4Lx{X+UxpAw(ehooDuJ(^?vMGvuIIYBG$X@79uX*W#1xdD$KxIFBp{OC zMVluBUK1lugN^TI(d|29qBi8D#3D;Wz2L%dMPWgyjelqhc}IcDJZ%_X z_hQZvH3d(VhoQpaI#Kw$odOcJyDl4-t5i!=AKP1g!Iyl(&YCurGlPL&;_(hRV6<9Ed!yp3AkZMGyG!r z6(wt$ZpVQg6~EBpR8TVyu!hZ9uj?qfh&z5`J);U!P`G@3^aUkzJFrYpuMD(3!vpuH zf?k)dwhh@AP&+J{=kox$)sDO$*?GaNORDYM)FwB&DW@H6#{42@bZqMqd@>14-f!c| zro|B;HuP3v4(r6+2+2q2d5L@Ipus6Nc5J9w@>`9$`mS2gKX>YRsOI0>(iYf8pnahs z0!|d1jlk*mxmV5Xww*>Qj+12^jaZyf9Rn7E_^Pn@NZ>#!yd>vNcBUI_BE{I#X8 zs-64q!%&R3S52$8uE?CcNW&rvQ!V)53W-CL_V&1}K1f+A&YV2Ly;l0MI1%5!Kd?aO zWF5D~+^;6i?@gj!uO9A8Xe*`BS7Pfb7&kJLvq??0hYE!9-PvxF*WiyIpu?x$x*lY! z4>6x(v<5V0PQZL!iI1cHzfH@p23sa9^4kO~Sx!Jsk*`8)=NIJoyF9>Xfn0R znm&JJ>gPlgpw`PQz{7}u~33>8(yzr4S<>l6@jTAg(a1v74VS%1au#)%Rl|W z)dSz`jx#V0Nzvd%u#~_DQ+iIXzOx4Z*o?ZfJewM1;Mml5LRXNwpg23g4?g+dRXE__ zF(Ud2_PpZSL_4#;iC{aLGa4Q66sFut$W@rSO!3dfmYTah0z&oFbG2YScu32nF>{WM zuOA?X?A`I1F<>iEk-QfY^8Lr}%ap{=)f6joOlE0yVrB;b71-3fPpni|d$k*JUfMRZi)M}eH27NDK>#C^k<0XDQmt*5Fl zrN9^L5ocT?Yf!BGUF zx|*7@)h;mKUPBY{oxx;y&rDwYU~c2LWa2irnBSX929Qnw_>KPX8Y=2ZS& zFHkQJIjwQ){IbtRh0zAcI7xbfFh!-!Uk(j3mX3g(f8H|r`L*)BOZu}?zl<~_p@NDc zGVofaRPoPyPJemL7|?vXsK!^~rFxep9RA@wuF@4HWUYZ1wiSLBB6r3T6UJW`7dILX zY#NU=ehA!u#CuL)c-X9KH&seqWqm8ZD=mQdb*SDg}-!!fFMRWXUzlY zq(|%MBy%D1c}hn^v-Z$(+!-&8n`KT+g^h?AOcwhVfx@Ty*_Gf)jCluW6)E>Gyw>}q zt{^XVV&Z)To^r?7=g&&gJd`x3%wtp0N*v_g3xSvlfvHMD;Rz)^ZzSEJQ7PQG)7;#y zE)S16qUml0>0ypz!nl5V&suTao04*R;Ip)!2>vHfxC7CBd)y+M zQ=DUc5xEMT%07*lvR^BFX`~ZD`xhq>n+mr$^XyW>OWsV*1h8XH_*MQ;p5QN{>E!>U z9>^g}d44`pMe8LUV3=m_6AM2WQLcDB2AJKS4v=94FGn@3Bu77b)j}YOYHER4!Z(EL zZwbH9%R?Yw=pKxcH#jV&pB*by>u^D=<74T9I9ER7N5D-e8&@~*5oHXcop|m+VoMfu%^h}Pm zJ%xNfoFu^#aizfV5?;C;^H~qCXs;^A|M2F`lPEBBc7R-nBv>Ie>`=gYEo}7>o16Q` z3S~}4*G-$26#vmD@hE{24d9RPp^z?(x7IKPy6mrE57rU0R;1@&zI*?~$rfgmz_r&8 z>n*9>a@DzcTKj50AIJ$>$2F>L+Zp-L@NjHgT10G5utqA7DovIK0+6|PL;dynY`yi? z9k>cj5Dpc>Avs}cEo(u+8%L8&#nL1LxeIappOJim3?0CPq;Vf}U3&`Oou4i2k_tf9 zu2l6muB!;S9T4ag(jYC%QP@2}8`ZMjk*T(=`_RS&qe?28pWNSWcON<% zo@Dv)on9NVTkSqOm~SD77P(I|_knHwvOc;wE()UD)|*PCpEt@eUwx1%34M9&l8Qj% zCKT}yWfRLn z_)X=tNg!%xXBv3;{XR+3;!__Ai~av}dlnWOlv#)?$Ok0GA?4+Xk?Elu7SR_FJ<3@x z-js+V3NU7}H8Z z3ThdSo>|IC%MAN3n;Rv(H+*wQs<2E10&m!r{@McpIOsydqGJD)Ar6G%`;~Sr-?-AVr5j;_aS=;fT`U)$+hw zP|Qu652gu;FNc=zKSRh@`!HrWQj2YTR=vFLKXUYIiGPafKQBH(Ie|-8YlQ&|UUu~a z;zen>ajNjiaDx93b4dx{4a~qjzDE0aE4O3d(o8J0mOmm&|&$m*mXMx2@ihV8q$(QfHnNoF60$_s&U{^5C|5ot7 zAH}s1{_l$VIvv=^@gr>R{dZ(hDj4|h2LD7A_!@%$dHnx>KRb!}*ZCG|!a}hBcQsQk zYrLLf{@=p??}4Ty{{1`^!2a^zta|X_#UdXLn&QtuCDxilH-350*l6A zCS~cPa;P`#vzv+4>ys1z+7eUcz|+ILHtYWTTik16KJXuu1g8^>3(J{m@Ebyg4?pwr zFT*UB_|(h4!(q<~FQvY=4gLn^5f-CQL4V9;M|EYv!W^Y{>v~xu;8gzf<1IEOQfc3R z4?89Hf3>FXEzemDopypAGZ=aWt{fBg|Mcn8Gie?YE6jqr#y)^q0I9@xk$(3F9N@rZ zAq0~EaA8tO$F09JyKVe~Tn)ln*yZH)zle{_$hn|oM4dOyD(THlv%pa=_bbv;)9$jMYx{|o(gpZy=Ez5*)h=lyzt1r{ZimR>+q zKtQ^?Q96`GLP2RkkdS6+NdZCWk}fHgkdl_}2I)q+d1v+e`=57@9z3%9*@~i-nMR=-+L1Jw}rvELI3x4(YL>MoH{;zWfzJ9cMqUne?1LH>)HzXy&?+Q z`zsI72dtxC)Zk;tu)*HH{SR~17cHA^{9gxn{+a+V0@C0Ql?x8%h4TMBuKB-44B;t7 z(bd*ngX9Ulngas{Z@z&;L?bb4FzzG37j^N8J^A z=U-{clZ0VwUlW!n}9r`WG3APU-*emBA_VQOGmy6~}F`H%121Q1X^(eP+mS zcO-{8W@6LD@-V`+kW~R zdnmymGC0_c9^KmshJT)b5mdZFw|uhMY;S1rk$<#cYj5zu00|=**D5JjDLGd#iwcjN za>T3N?Kk>~;LeP@01YA5JpX4~69M^bFuil)!Xw^q;8q@7-DX6jjZ4$^n-+rG#Gooh zyB^JR(js6#a&krK`RE!?L#vbqtSxkX+Ap1xe*=7f+60leKC#LT=gce~ z{|>z&H7|N*a=X{*)0_nL3A>SGkK<%3DOx^kS)EGOAj_vk^p6Az7i>*>$GoJUlu=Y7rB@rO-ZQ`p5a!NI`orhrO&{hnflVB}G&5T-ARvk$Z?m#DT~2KuAh%$jufHr}9qU z=tSByTRq(=21Ws!X>a2o8JbOg-~DU?y;lGKVYYf9e;VwM8u|Tg9aDJ0llYO+q6SzV zLlQS+nDpYho-BP`$h>s6c6tN?&)U&mIujV2|9_;BpFc|{SDW-Kc?x|6XX(??Vlxsm zkc;eYzKXBRCyt-IY3EQ~2^Rju-@y03ZhZL*k7HVY>2NiMekI6TE;R=^aC-$`Lvv6l z=rg*v8AqeljbY%vyj(?Vw%nMdzTL%K6*2ya-ZVldZQInvlwiW*`$2(S=g{5ykfnBu z-!59E6Or~&pFX2!Xs8l+wxQ%dr=-M{nSplW`i3diVqyyy!b5f3{mHon9S#<*&Tm*a zd&B8!HFdGC%9yOV|E`ssR)DIxw63Vj4Mm{9NE1WmIy65dDS{;_QdGT}oQ)FwHGy{6 z8O8p8SCW+;FcV$dr0{*vzL#rHxO2hwEY{>`;wD$)pGbU2?onH>3JZF{t=s%{Z5c1I zt*Om7rbKezNhd!M!oNeTnG?IzXFnNbWz7wd(*6i;d;%{++Yf%fW)%+Z!YfN@Eu_5orIATmH{sC6EPke^sj$Oaa3tQqy%l^duAlL549Zg6qB- zLZWSu%f}qV{l5PeNkZ0>850Q>-mv>YFWHzu^VojB*t(~(dFq0GWUvU$U+0snJR*$S z>P{nxpIO}N-ccWQb)aTes{udXe@Z_Y7zyU3^x$hw5cf1bg)iR+kA4Uk7qJ4^NFK+U}C<6IVRrTA+)nli_@d z=8B7h+rqO^z5u(Zzu3fR!(SK2ue_vzH=W`+_D1MV60|?@M&nw@rSh(HCpGl^W9EF# z0ddw$J@kl}w=i+tVUzi#)T55Txi`%cX8D!X+NA`aFdLVBhO7~b7z>5Nug7sz`9>aY zV6j?9f!~%BBte8TB@rD_1CIZ-A%4py>22q%%U?Uv{TCr$w+5Ux& z+!iK-c;?-f{XV~8A4HQt#W_&`%UH5cgSP-Fa9qyANOUjdhFEsFbbyIkalhPvL++g> zrjP1CAaX7|U`~<1y*jz+b1#plADQCsD$9w71MdpbyHsGAR+;zSE7(3KzyKlX&%a3a zS~=Q=g9$}nh?@B+M%F{M!nAb66?L^q56s3VjPgd*Ss$Bg&ks7(ps6k4dHW|NPZO$v z)G^Fa?syrM4&R-XT^;fdL8H{Wk)EL^bgq6+)t(DwuOyATkAJIi7@#1%Q zCr1vQd-;1FX!bjtuVzNM%|`Y|9{e;`aGXVAUjexE6&Edj+P~P6tzOznTM^=q z3ZEGA1S|T*KVL!773+g_$WAjmtiqa}ubR6+o?y@~}x+;Iq2lTTDtHxq}<-zMcC1tbym-iV=~) z_3LbR7B}r@432!!#c%P7O*t!zZ=AO?ho1(Xh57H4DbCegaPMEL?MiQpQm5>1`>$+H z78Zcx3F0Lw-0Qr88eP`v=S7xzHrR@mYc`2*8(xcSnnnb!s)nbe#>U+o-3*QLIB!z$ z6`D*_MmPB2cC&zuNc1aL%5Ciuza;)!sA=*`jpK&Gf-s{d6kHrQVk^0*!XdW@kdW7b9;dp-Mh%sYj$Vn<;vbVc*e$>)1DF5r-mi*6waX&=uMV*6AtKg(%XD+zBxUAyU!x!NBJ2$FG61m#NGNn?&u~ zjpA`i*(e)W$u-W>aVo}(V-biC{VsFuOGY_6HXE!q*+=Wxb!D*kTLocT5n?1&>4S)1 z5~#Am?zy0b^NwY(%^7j$wiB%AicEvKlqiuGo7*Mj_YTTY4@re*Sug z0R0wVFd8>q5M?i@D%N?%6np&V>}5-9;3w-XXO32-c9r&bQK7~q(-ybhb9BK$<8A!z zHjnH)fJmLJaA}?%=)#Il;OQT3rY+kAR@>2RGDr9)@xwBhF_5a*O&dQVwy`S5AI%s~ zV{)_5fd8_R@Wce)m@V+o z&Yo1_@iP2Imi=c8{9U)!A63b6%=onj?)Xe>vY}n0$}fLGbN(pWx8gbKk@j9 zc$&WngR@Xp7XIqI)PYxrr(!erwrghUxS__;D=F~SjI(KXFy+Ltbk>i~Gm3Y{#g~JE zUm2JEErrygZDBf8`wyxD?sAhy(_XibF)`)0g(Z*7B{qVX*ldw3Y#Jou|1mZsYh#wL zTQla53!De5rA$6W74%th|VaB%p5 z97JH#-kKjG#Q{o^<7-O}1+#q;W_BE(Rkc^K*d)kHs-_LfPo3-jdYnFbnlK1l94zJ} z6I+LdCTj^l`a+!BG{CP|#lBxmc+Ht*q_7-Xwh}L!a+tnoD`&rUvHHMGuM-@n!Tt;; zfctYuV#LZXA91iyb0{5ybSu393>3rA&%{wmrNDSr_)qL=pR?7>9i8i)bR27H8EXor zicPGv@L9=-*LP(OvZW)T#20_)?!BccQq|aBi_zE<#EK?3N*^p5hCqs{!G@2EuGlZ~ z(+{QFFIFCu0~tJF7=WL?*Nyz90N5ZJ8MVSj`%^+FFHUZvsYwnl2@6c^t7Qar;~K^~ zy{i>ltayFHbyKRw=_YvOWCLCl5ALnu&u?G*QM|WhPp8;|TCL=Ve4g)nMIc{Qw#ldn+M*zd*^TuOJ^s3NP9DeaABxH>{C~=VO1~Kw`1M<-I@bRIfzi@>|D&trpgANF@1H($@vX#80u50_XXGWKce za?4z7Wrca{&#sC*e~tqU`V;th$XX-QCN+>@a*h=OX-vLlST7F3If>dC7Kr7+2Y0{9 zmxu8f?=$c7dr!U9nFs~lv^dOBhzlJgI3HWcbgGh$F`?nXhC_2t6E(|ssRpZq-g*AS zzkRi>pC$2)gsOLmaiQh1-J_D^Q_1PP#H9kPY`VG=gY>C{6g;iqy#$+hhFs&Od*AzIk-C6Cx*cuDo8Rz;lY z=4++86;W5NZ@6d=3W6@I52dTICm=IkN9aaVE{SB`ou=vk9%6&l+Q@w*l;+$+$trwP zgBezI$+pZdHU{#8z${RHfHXv^haR(CKx#BCZb=q=di{#-P+xQ__ti{N1QW|kNEOAA zylQ}vc1U|qDtx?Z0Qpc{3SE5zNJA6=N)c!n4P?RH|IoeP1F@~Lti<}3OXr!5H(u=E zkX_v==uq!p^3*t;;vea*__VS5knxZjX2B-IE+NwquB~~JXmqc-mPqA_2am-&nZkwh z(@_?Mjl9|ASD#|(gRBOSfq|SYqF)gsn!rjQL#9izqS(1lI46m)ElZoR-Pz&=_HMl^ z-3_iDsd>9H4UfYIu@_F%D9KuK$9t7nx-JY*X@8SQ$%r3wN)J$~MPxH4vV6fgam$&T z+uGEJl7lN{AdH_Bs1e&_`jsHixR9n|)NLw(pttu%v&)=6f-6FY-2MY^G4M)^p+(jB z5X5IQMP6M(ioC~L7ZM-jb5AeE6&$<9aMXNE)E|7P4AlFgdksVBRWbW zlki60ugI?Rw|~@rxet;I&acG|eI4JK8HJ`HK7A7<8vCc^BX{6a9dHp7rng0f4d3FT zK~|VsDWU?37F2;P(c20VX4l&w8>D$KgH$Dpp9(Z#0!Fj^u%ncs<=4dPw)SlRDlPw4 zO61Y)wn{juzgK-2_K4h=Iw|P76X|ImOyYm5*Y@BtG0A7)PaQo4))Ru>A&!-hx`|9*z9Yn>Mw)MWOTIr|RZ22uQ{-gOIESdA` zJU9qeZcf6G1_4)|q`{sF0q(M-)@1npSRcxrVy5(#+ih6m8af$*sYO=e5knA?@awJD zK*{ldqkG~t55WI&RVS`X`2SYe7u&dac8znK>T*>^hP>v0R{wgteJa$ z(IPoE8Ve*jg4HftEEO*qn`nMuy`jsvOO>*}1J1E2$vgy}BkIj14G227Tq07JxAj4& zmmU9t12JKEeH)!ZgQEJ8Er`H~(-HOerw**qcBeme6vc6ao&zHD$t%0TaUsBPY2lgy zF~K49uZd|s`Zbb10v2-9^?J8P=rJT3A6>xJdE@aIjRm1Az(1+aPdMGl9A^7{ie(G( zDqdxDV;W1?{hHRI(NQ@+7Rj19W*(q7x;fiIgqcC>5|O-nCJ(bS!dw*rndi2!x7@O| zmszb2?08KO)2T5ywI0Gpj_MBak13IEy@{<*b4}Ll*=nphiGSaVZv975{|oUa;kyaF zk8BA)&kdZyO0J-NI>E|yQLbCw?~nSd0C+%_M|9tBq0}^;%*OK1u49qz<#wHha|swN zEfqqvqY0xtW?l%u%$ll#AHC;Ir`YBTtO!m2?w*ZX0P^BH_i9EkA)C$F%%{tdndj}U zd2sa1A3Y1g%AoB=L+TkvF8~?xVv8@f;n^6#!@~Z8M;Y{-WwtCsd!7&ohYp<}Y#^zx zGg9+UyF85Jx}hCL4C1FCa2%*^3`0EG@l#T^)Ow1m_~OXooXtrbe?OmWnT}bTiI=ho z^<p|s75aoD{Uq5AyCuVhwp zdVK>M9~lPG6UtGt8`sh|GR*qY=jYjBLGnquz49_~3*gA|2h_JTk8R~m{%m9m6s2#^ zKBHC7#i_3UiKL59sAt)BBUito;7=9D1_=VnCMcF4=8#J4(;Wdaqx7>&Z|arL3TgTy z!zz1W)@xk8NDYPtD<$?>JN)?UylnS?353b1WUq{UM@{P?859-)1yS#fp)5MH{d1t( zXI1V{I7-R!&HQ~)m*!P(IsD{E*Fv}TLfz>czR4-2oeo^=FwNKW3*!|9!SoNyvIPVO zLx+OvKW@leIDQNUlF6=#XH`H3<%=eghh3L>&?wv=fb1$azS15C*rR&*QDSGVdz53K zbPpXi$avA&&#>)t24T|YDgqFx5;l1Yr;9>z08_xHlwsEwFEXX1=vY~Bs~Tg{H>csp zx0aHgMV*IZfb)1QB|t8Rf&1;1ENT!7z*3AtBoG!_5$m?@ddoW5655!1<_S2&%R?h;FG9uLoJ45?VNtQSiO696J2#Plg9=6tp- z{1-OB_v>zP;4peazw*Eh@#gQqE5XKP* zkSJJD*{yWln}w=?D`_X%Q-8*k;fLNU_2N+8K|ug$bA5OlO>F_JU-Z+vn*=;pb7jcM zDDEAJ4PnDe+&6R}l_W-%_o2CBfE|~OC!?t)E9M?>w7;AjH+KHzZan#?PQWZ`?%QD9 zm3p)lzT0aoL!_r)5Ryy!M4xdX-$_FI6Oem4xK)8s%N5Vdf6kHNCl_sI4ZbTL;KS%F z=P&o-^cW0>6NeK9F+U(tX`v8{d`$U}C&&a#l}Sui{00qok&n_Wni8((m=OIc=_*k` z)NHE7S0)6D!2hDVWTfaHLx!Fevk~4l{Jnnw-l@3)2nhf^`^#d;$tWOzm{m|Y8eGk5 zHjWe2)htD%iMv4ik3-A2aSn{Pz`yFQ>byNU4NNviuT6#a^WfAp z!1&W40X+g(6@$Yx!MpO;dzXtwq zXnVI`&yP&d*PSj;MnaC#U()D-0vF{_9^fZ`LvQcydEjK)#@P93m$osO9Xi&nQyV3iwYV3(GitUAdtf{{=Dh4^0b z1KwQOA%exM+;7(xdlRV}Y@kL&kle_~GI0szISJ0?26Ysnuo^f%;qPl&J#8W~8a0h( zYVs8@=$O{M!crZ*r{*H^+3s=uQWUZ<+aT8L0!#Nz`)fWqCJ`tSt{n%cJM`-K8nt9| zN{cTyB;d5a_Or={P_x&eJH%_s+v|Jftz3fbiZ|OFpzKAPwWj*dkAG=tr>G~6{3CCd zh*T7n+d9D@R65y!dYEr8hyQqH!djvrXbTPVLGp0Ra3)*wT`B%w0yu z&jTDg*LIUUX`nf6NGByBkXs)oN$Q7&XRNg4C4Ne!A$axxq_?|8q02rPa%gb0Y5=Ys@}0Ms%UH&Kwq=dCt1u04okm8troavcAyoZHG}mAMA?Vd8{UzN7#VQm|k1 zuy)G%U_UUdRJ$yxBy>tNlJ888ykbNnjQk9jH1pw-PYNbK95cB1$GYyjsA! z+9d?wWzc%$m2FW5eUnSe!mi<2Fl%DiB~uk>BLtMjP&ujyyqu4nqBqqh9=$PXYLxnw z*2C_7FGM&8hxpKDG-);RbQ+F_{i#xR2=m{HdOFSh%@jmdlqlZ&WJ&!35q{}tjP!*z zj1fQGT(?V#A&;}H%KXca=*q>Y9Z7l?JLZe)I$}^n8WiN_1os<{as3W{T?9c?Y+GB9 zpEDlQ&sYYPFlSVS9>!hr-_?74!q4y`B&Rtjr~ zZpN?F)|fB|0G@+DTqB@Q{if#O`s{q&Dn>h2YxDI*C9FvQ)^y5wthMH4fBk%t2ixKg zQ^c5IAG0*bY~nWMm$V%oB0@WX^kDeb?}m3}Br1yyqT4d_X5%dunc0U70e1hv%yhU(DO;)V;+$ zFd+xXaKKKqH)ENT{DIpTj;c&khqsUC;-g@^kUm{(tE)Tc_nA00oNwSF&IUl4x;hU@ zvxZ$B2wO>B2qN`kFEP^*DTDXNXW;etSV&KFCsX zK(jRL7Z@OpslaXUM}(VU3{%m=lS@cdMIS3H(8QqGPfq>G*RPnz8U6qj1z5l2GK%tvZZ_zn`py8 ztW}Q!Yl`SJ_Zq#o(COYN4j^qpP<#`#ox~vSm^1F4^5(j&q`W-0Z&LR5InOF!yz^3O zR44bmDq}h3F8pM(k^Pw+2Aye(Vs7~FH3rHg|HhR;hvAd1K8sfP!)~DUqBmdOa z04uXuNMU<+&s}h6rbHMpH$Dg{A{t3QU%M;6-E4-;OD2G`imgof0&;QAd+lshfX+11 z?>PEe)}q@SKm>;6$G_PAOvHoonI0rbb4d;&pgz#Go5cg3N!814=)P;k(fKPTHse}O zY7dg6lshF~fn#-9Yqk#)B}R2&p(~+m293*^%YJvdlKP3jM*-(U8_$i{uh|8`X>!+R z5;n3q>Fb9E07qKGF?ZWly^?4_`iIS60maJDe}cd4vLrI{&{uY1vjAw2U6G7NeKw%W z<^dvugb&t$OXhuv7BXr+&6uj=aR%)JxiqL}bLGJSQpNg|O~9TYnyBj~ntAV21?FA* zKYjpN0Ot>sfE>OVpiSS@>j*&(ef&vK_R)4gdlfkZ(p#H2cRI|W@o-P$^nyRvYsaYl z(fnjI3llVl zCPS3Ck!1%BXQ$LdhVgir} zxF9KY*qOKQ77|2mi(Nd9I;X=as_pxxz{vp0E2*t!``H(f4I_5=sD~?=do7aE)Ae+C zZBKE)>g6A+{sa~kfXo$KFTdt`thqsdc+hLPNq+0CrRtmshjF|mvg+qtRe{Y{8Z&;| z^aj2rOZA)*POm#hG^R1&JZ!f>a1F`0kom3Y`8Te@>C z+6C;zenJ`YXKJy0cV_)#XDCz3?fgJLb3dQLwcQf~zc`}95Ga#y3o@kB1O5Hwf@gF< zT!SK=gfWe;aRE7yxYb;o$r-p3Mgv&Q%sokOh2g}nSoxTvg*Uq=lRdcsnla~nS`xf@ zffvE8*z7(J%4Ak+I7x{YMiryB1^_yB#P&r2)g{x!I@-kB3lnnft*0qoDDkH!%vi5G z*VrE)gp-mmz95vc?{M#93r)kmfEAtMH@?_mKG=Vp?FArb%-9E;ndY*cJSYK37$S~~ z0BLDdete$-Q0lBjf=_w5{IyE4eYsK)LPA&%*08N#AL?9ULVS-BWa6}S*^84+={Fdd67Mj zv9m~d*XHAU=WTeor<<%gVn;M&#=K~@u9E&GGk>Z?NPFDpJ|}|C8G>Bby&F39E(}jW zkg#nh^Vjo!*J)m&VE<Nm}|E=0g^gN zF$I^^`T=UTE~GQ3Sne<1xk#>Y!v)x%-c(Tk@U=S}&7-!|bD@6;=&ypDBuBO`%{P(NX^aKkUG~UW`$V2CTinX7%JxOgl z7=5MP=Ju%jaN6IL%WukEsL8rs;k3So|LD4xmw5b3w!AN0Q3ZrN(g>A+9ZA)8-Q5Ms z;<=A+*uc2^8EIpHp#{{Glr2P7NlDIP>v4El%Q_x9U-&H8>vR2i17LJj;}Z8jAK}PR z%{v*R#TdEzySG$ciC}*I$}nkC&eSC78L{V`9GcLZA_JNQAOAwV=kv#2O_;7&zdjHM zS5Tow=%sp`66*Aj@{Dg(158{J zBDOTz9r)-+Q-hIQGgBg8?kL=4DoYR%3S;$?8F>!123Br$<6p%ae}A%2ei~Km573(c z+c~IGULE6D((bPsyu9PfV6>uRW2}pDj27T608&l}$o0BTg(uSk;ZIn5>yGAW#(TWy zU33Kfi8zdm#3A0U+|>ka{xKLGINaRRuDph1s_($=HWRs9W&iyg#aIO$-z zE*VpWgLH*hg#$*#yE8`fMI)?q0MMC^`soI58c`a)Qoha`-2I3gaQXZT!v`TV{-P&E zv#JP!e4t#5tmt|}z$B`NrE<&R2<|^}U(W2@N~sQ~k$+*z0wP;57TLE)q&jJ-^q5)W zW|dsL!9dW5I-2w#EG40Nw%ga2rl58z>c6;OO(H;70CYHIE?6M&IczJnkIOQ)3yihV zGfXQERC39_xhrdbw<%7P8YN2A`J)I{Vr(|yYz>zB4RI3Gmv-%#+R5OAMH7JrF74_x?d^m~s`E8OCPb#2DqPpa?RQ0x1E8NNPo z(@-SRW2`tr2QqtrK7srb;id(DDkAwZF2KYQ(wE+b4~4HIetKQA%O|D0t8Qm46^J=Tro-vEv>eU)<2oqg%=eMZ~3GZQuw zghhUF#c|Kw%Xi8g3b>3LN6itu%X_Cs!z0t>RaVRHnJlA|*8_*S9)CpcoquhXuo0=H zoC=LauZfQjC#Q@}`}0lJ<2)XKeK@(E{(j*M?LCQFsf{XfLrHml%_B^?`6T=20m1nH z)my(AT`gwb1N(fV3&ami;Bief-hgL@u8LsJ{&)wpWx-x(%D(aQJ~(!T^w`qdmjW=0 zOKqhDqGBTTq1ASYe|)sGHBWy#E!&E@^EcJs53KeUO|y7lg@Nt14kEoSp6 zP7LhRI<^ZcW&?Qt$0GwkcY=y8?xQa?1R&XPWQ!NN2u9=UapVY);*7im`hr;jsjB8U zQ8wfqA@Qhk9BHCase=0gl_jP$VpMJ~xY1ZQ@Va53nLb7@sJxA}6A5}MoUSkH{V$<@5aR)Ojmo|J>((k zxch<#8)@J3T$=E9cKw=9 zrI;oNu!bfK{5OxD4Pro0W_}-Sdgx;Y9DJ2vfM-;Y9B{hlJ|Z}wet1nEHiOHW$zbDm z=TjBw=RBW#0-|AtCpiId8^UidlW@Nu+sg@X$(wELQB0R(y||nywOTtQ^f)Bx+!iC2 ze@q|;Vj5O8(98&P?3Ab)vNxWP>JaG~SQA#?7X`j^OS-bwgWFC8BFuVm3UJ#lWldAU zHiiGm?!*<$CRHqSKf}#L{h_7~e|GcL5w6km!W%niJODN5=TBNJvwryyUCjc#yAh~u z;K@ch_16ec2GIh&iv1&TERe&=g2(uea-l%jA@RPh<(AV^A)MO33LNt046+^xfEAy> ztQz&k6uZ&NEyRlh-oOvlYgj^esE8h7Cz1jw0Z@kF9@o}4z8>RNK;*E~c@qRCLV&;np`L#%FFsmof;_~l81Pu-{}5G%+w3&d0u-M&x{a-% zCRSKHDULh-fJPgv`rtW<7)u6~9VdvL?}Xcw9s;n2W87N|I2X(z7*MPdpeY;l-|g?- z0$)#$_yLwF)K4^RN&rZ{f< z*tW+`r0ESVZZay>u2X@Kqa<|X@a^R#H5det-(wJz*H0;z65NUe+$2B%ET$jDta}M0 ztT(3^Pru8enF#=36U66ZGy#y)0YzzLW1mY;M^2OH89|hm!yJ&mjRmR&fRwcH#WnBQ z`+6wI5EPp59?P#(DF0Z)x_vp`u7l=xS%qn4Zf^Sm5dcUVgR&&+v3pBiVMB5QYCt7F z4`u=kf)$^OcJf@=wKT^#O%YMi6(4eRO58e}!qbjyhkF7TO~jWr{_|wUV^MrCD&#-d z>4Sjo641uWQl-M_x*w{()eATk{mcR&gPtCoLsX|Mi7uvFVJPNj!juOOLl222%_Az> zFBFUD4y+Ipl0Q?2>&s>A1Ex}0ur?I1gL8FrMy6_^ z;j_(72P{!#L5PYyW+0v-1cH{~ohbsKs9UMvMeFXa>je=NZzMJ|UotNB*hL+UDSTVG zqCzSg9Z2Vc;u7#PFrW>5f3%Bq<*H?nkzuMR^F(L8V7WF6FTKeUucg=~EkPG$Qn$(I zQ1`#Rk&x+{30hSR*m-vsaD!c?;UAybxXkJS6=P&Yn*bB|783?fGCUBCzECt;)W=FDYlxF^N}^m0L?Tr!}BZ~bC; zbg!0jCMbc39)Vt7Hm)-Wh z1=M3f$Xd~Abx=F7rPknp6jXMbm*j|BQI=!u9iSUA>bzXPFQ2JTpXx{Eeg9Daq(#H- z$I=CPJ}Y7Mj9XvAm4udg{rId8GVACe2*kqOs3(0LWYAcH3Ms zRAsv){q=qjxe48(OW@#C#eUOWF}vEUKo3l(6fQHilR!$30|C>{d~#{f zUkzC9N3XZNAN~+TPq)@Lte(96sFSwG2%=lFi-&s7SI|li$)p%{*>%ZyAi0qQa16$a z9j@Hd1LZW9Oa7V4d=_(}0Qy28TJx;f)aU?bE3Eoha(l)9q}BpE?}Wdgn&#nvH+iQB zw$@OXhusG3@5iP_NN4EAY(84apVuEg`)gBW%JB+zT$>0-en(dqHu>d1UeTEB57?+y zy4FJBh}Ugc5Sao~$;G(;qbCQ=b|5BzD0^?~sf7oUpevYLD z?!gcFEwf+bj}jFS@d2RHTK5q^gMp`3G#iZ6c(`9U-1`0SFNN6e23#-P(-O!K@d4h# z&G@Ci8n|4LX)@J%X~vA!2J3$l;Bmh_d=4}3^=F6F$EI~<*({vyZ zX8Y}YRhMCBms*ol3;wOd9X0mnuhY+(gV4g^is(A-uf8w6 za5Rs31(q#VhnKil!Ys#f5=jcw1%{@?3rKfXvem$p(k?^@qU;EI?#>(*4i5DiB)eW# zMjRsLy%kWy_v#LF@ARIVe7f*_XDQ6jPN^m6k>{J6dD8U`F!MH^i+$#c#G0dgs|oi9 z%Wijo!(aG65IY%T`oslU{j1Zz75XNFO()l?Vh5x~3@`vjL|gDs+~u0Zga8DIV6x8=2EzOWmmyj_JqPv&fN2P0+_+#VB}&0uAvTxom<=nd z343cs_ZjA}+v`KL+q_~SuPr&X^t_gUykz!0JJKsOvsg&VW*TDFQ<>dyW8w?3h@3vP{58d0so2y93b$S6D*km z3Ew1f=*<4M%x~S^2L5vp^Pu48rmbj7l|K(C;fHV*awLWGNk~a( zB6HLLHTprUrY*qSrRLEKATYF|vu^FVT!}ZGA?pc|ma{E43#FqJOR!=CPtde6ysk6= zT-3To#xHL$AHRf=((qst~K!xtlTyD`9J0-;da;Z z{Ft6@LOj?vQ_V!!f<6Yr5pM)DgER0i$7L05@z(F{3*lJ{a0^5+hn_~;HXl)!f?QF2 z%)p7QJ4nVvKF%^GCHhy3{1uevDht#MR@l&02LcMZK!3@OcI-Vz{SMH`(b9(mi!=c; zYS5wZ8AC|$zsCof@eSS+4jFiD)UUK?PHZjhMws0 zYDTvGVb2XcYtxIYgymj(DgvG`NDs}h0*?FNHj-`RouL2J2tC1#b+zl zp}p-@VANYw<(W^gz9S<;J!w_ULq@{O8bE&M%Knpgb(ayUYr{zZMFh4x^_07l6v{&& zLF~>HMBw}knIkb+M+}Am6T;opd(#r`k;!-@Otg2Pj!?gZpxE20^VHOp60ygk8BY{w zR;Fa0m&7o>Oo5JRBW|nue{{;PR1P9`>o{w4Nf8jEF1wOtJ3`3S9)iceG@ z<@5SkWFjq`@%4SEJ2k=`@$KwM0hk=Jzc9s6AvoxR8+}E4b@T^vhbbGnjhpy#Z!BOa zGF80c0s-mCeX9la#_P1lc35x7;byQ;ZL-woVNTk(a=Z9}V%AhPj`@tLZqrClrL|$v zG{w#^Yz|1>%XrYLersn;tG<(Kdn%2(ZXGVdOHrE~9VrQ~yFUxRXIINgZ#vyDQ7pd|jBgZ9*EIBh@ZM2$w@t5cQ#a#HV3LZyaR?~O3uu@~ynsc{)U+Z2s5FG3+&=(qPY;N@xobH6Yu zU=?+CQY8~NU`+l8nF!Y)gG3juvaj05#!OZW{|%i|G_9k<8Y(K-+h%F92dui&!onzS z7x`$wieJ{nC8gMM+{xgSE17^=JcB%-|4rHmvw=~yVP+7xnNU_3a>>kIX7mp>ly&h{L- zw;&5fd9Nb!nJBkpHPPu!~q?)ctT=9KPkR>*3i@ z<{wsKy&8r4Hp{nK7`+3w{Oh93Ieq8oX6DS(AXUP;QFrQ|83qJTeEM&b2#5_CPvrVx zQ*tt`S$PDyd6*O*#xy_QXm_^S?W_j6PQViv+*~cp50=DN)k0DPnJ|k;r6;i6BW5KEHE535d_8<1 zGH~t}=50!ZNLXYnq){9WoRp6e_QBow?;P&knco#yc zk9|aH_E__cCoqnvoLcLo(1OS%F+=!MPsGa<2xvXm)kKAz<>Fp9 z`4;z)2sX+ca)2WG)h2YX1A+~ronER!mfBeqItyD6!^VSc22>sM4~lRcwjl2cEDm22 zeieOMDtaQC*#7R{vL{!rk`D2I9#LTQ`Nk97XU!QTqE$ofyGqn$$$w@uKoMX?1U5(8 zkqP~YM#(^C}gmkEzp8^ax)kACayK1rHSGuKkn}aYsN7WjL*~)DUTmH z_5}MC`$Y-iXjrGkdlA{5FZ8*H5!B6zOFa$?BOJ$S`ztJuR zv>%5ty@dF|E`GpA9_*;3z9Ub3+l~6Pcn@pZ66R*tQafNqm#M2>0Y96=d?HsNOiO*v zV%R#x{KcM^j5GR47I8HV`2tLBigBpC9iAPeAQYBBYY|mr* zTqFoQcW8jwqRgMzUenk>m#Lvw>t}(8U^qz|^*(f|p1^jp`S9H3ICMs_F%IT=ozquP zb?Z3eD0f6!K-yAoQ1x%ITuEc= zg8+XCILVpxE}=D<56Ssc6KEph7L|l1G&GP zht6t4rvp_1+k*KDAD@IMv3rXS5O7uc))&Hjt-Rj|1D#gJYOtos}SmfOjW_R8iUUXA!$# zqUa{7g3_-X94pi$*6%L(e)}DCw$I;pRBMI&%KB%7d;sX1cbTB(0uZ{hEA_O(Z*YzE zofwawkKtO84=5@S6-7j{)ArUCMj*S}`(}=zcn5ypr)*toRo)oF@r@ItjEq?f*cQ($ z46g8;7U;6wAW?UI+~8ihFO}zCeI#O0b8T(=d@5ceomFF0YrsFA@#u;?O-J@}=??SB zkkr8i^9v2{9~2Wat+Ih3mnHsuzv-opq=*)!FW1;s&n5XQ-v?e}{Z5lq2-+NUu7f#s z+hrc2*l}g{bXKp7sSj_WT{-^q*)9lVq9-T)%EPvT)6E+L@f6?bQnk;yo~#HL@_LRx zDsTpKj3j+@GqC!%2N+t6hmw7Mry7rq2JW%LAXy-im zea@k2%nUrHuDrCEG}Z9tCi*(67wPf4g*kPocYfW$UD$(7^FJ~m@xMckxOrR>v?#|u zMGaLSg1aQ}tdh;uIC9#3UaLnlz>&1=c`@^SQBkqJ)CL#AF2T7@B5bA1_*XZfU)Fxr z+~cq?qq=xg$?DoqGO#O(Agrc`FDej?B;GWE`0#C01%Ic+K*H8rYr^pZZY}CRWV{{W zXLQCK+rqoiwE#6oGR;(HH>l;p*Ar%CCXc^Z8ZvjSeg)hYSb0k|nKXu?Z(EsQtb^3H z_1`xJq8rpIRKJm}tJep`T^Cm>C-UQ~w1^76-VKimoW>6(1Rf1ly(gnB4pGvc@f+J9 z1G|5=+PsuGr<#bk3wdawI9m_tj2^siU4=d?l>>d6COAz=-@p$oy~TZ~ zh6+|vkpzo~F0Cx%LSditm1kB%#T1f&*EuZ!Qsk8@DD@yPj^ws!Zb|e`T5%1rTgy6* zEwXt2M!VFflA8> z6l+S_%QXAv{ztOO!G35;Wnr%OdIx_R#(Eg_Ya%GYv^q}SSo(C{-@@?V zDt|cJJOPddiSTkQ*}xU_41RpK|CF2j8ejqE&O z>w#dSb`_e+;~0EvR1OZ2$lwHO+1oG7!09km=(A|(w5T}oz-gf1SQRHtw~pgrkEDsY z7|a)c?ys`UVxgdnPB=dq1)n_TB_4PwLw!xMm^s?ytVL{-6Wc5x2%VgI@H1VI1|v)0 z!SV_>4+Pu%&SKuR-_~OEM+WZmN2V+t*h21!fA5)7bU(frQstRrx;*T@~YAvHdhE3B=EjChWK>Z_7IYiA4;lzabn zu%9WeOV$^4>69bxpAswouePs_tDmCR7^f zmX=15?(XjH+`v9-Z+zbO{l4>^bN)K>^Lcb;&0e$Oj_bbeHEX1H@%a6Ps&K?U+biBR ztgYQ5Or!bMSE&`7&JL#B<7{1^i(+63Ky%eE@i?|4xRRDhYL*ItvsCy+J?@{G>oLw& zU2b}Iflq%j@|+lB-?&79NK11rGSmmz+6gT`*>uC8dk^&VX`C6l^Lpv>w15<~2QDZM z7=_DY*Y){D868%rru4yc1W;c5sfzt}+y74XkC@>B2FSS3&B#su;+fcVG;93B1_L0k zFW3oj9$PJo5FM$4{aHcqH=dBgrpiE+m4nLk3a>APg{akOOZR0N;rRNM!lR?tN-|oH z(-RI(x^vgz26Xl!c#s*Y?tEVFY$s5fQQ`dvrAjjNQtk6mtnz+SM1&4)J|vB9$+ zohOwN+!Dg5KX%DGEFof9>2*cy>?e{>SJ5Q>49Y0h`v+2GM)>89rN!qJus@jO^LGv0 z4Gp&aWH2LiKr$2|J5A^~OB>=IOR1+oZ*@0Ku2AObstw*s`4*Ao#2tZ?z8JiwVZ|Bl z%Ni0Nf~A&76dQ^6d?dQBr^uZZ%O2@&yC~?qGcE!9>?!vk_Eti2Ngy~T)zSjH6Ny&c zmn)9&2K&JcexPn|2%DwAv+9p)e#pXe=YE_&nWsT;)w=q?x#Yk>>Z27>NAo5;V3i+k znIK|TdD1~cJ8KdlYh?x6>6TmeQ!+H8*>Nf?!(vuMW4P|~xi@)LxC=JMHE@2tYeBz2r(%j6i0XB6l|Ysh{u@#7E-V{!Pa3Qpq#crrYM0@)utp*KxL zhh*4TRVg>kNS<8@b;RPY{B-1B-{^zovS+y4<^c~T-6@RQ%kS(Udn}!JhKAnL`|~YL z(TVWq=7%`I^L_Ec0!~2js0+|ttGx?gGtj@spxLUHZpe+TAqd?#{h|28o11qOLSB{u z8;70E7c%$LxX-_LBiO2h3CO3dElU2Wt|TsMF_!W1T364Pe&Q^8lU2?>%%4tqWnCH< zy#Zyvq@+-(t%h&&e9*~6DaKOGN#24FzMzQ&@yu%U1_a{oc@wDAlMN81HFH~iCpJE| z;@Qdn%1;KU3>!z2?~Pzrmzx9OAG()_ztG9FJ`^{fxy`HM_t_(`C|UFCJ2{PuzL(SJ zV;XT7W*J*Ba*r;8)KL2ef38B&ydDi!Hl5)EcJcZc6t)sg3^XXBgwQb_f=I31GQpsd zKs5&fF~%_(QRRX9xtA80pty@aIGip59!otSG>`)Ktp~Kr6Hx+;`f=0f&w;8mxXl!B!DBcH1Iv(-n0oWriMtdCEHahWP{$0#T*q+gg z&w#q1_C76Gs>ij3qe^O{SlmWvqPU0H;#e+yj{zF}!JAdBI24XoQ`S-CC-?|1j2l(( z$tA+yymD^*oay}vPosQWc9m2D4H7uWKu22#7`S#L(Mt4k4K_L@pNUqyTV|^fP8*zf z#aR76bm>EVi`o!|{(WsvQNdKUrKdrVLHQsy%P5pCv_`_C>(xC{sa2O^VA&4+g;qTP zH~Mz#kJmySbp;xN(R>q3F7tUy7gCEcCMdn!=ErfP_iit)gkYD+05yp7R{5KEE2QV2 zzaKjYae`xl$P4p#dh?}90*ZUH;Ex17oC#Jl1P4SfKs=5FvL* z@&5Xr;KpCO1x)+u=YdNqYg*ThUYW$0VQ(&IWq@gtCOm2o)!IGmm917fZP$+S-L zf-XK}+%KHG<&8GJ>>289MMS6fYMc{dDVp@QYV8hPX%93yMMgU}6wa=Tw_4uskS0G(Dj(YT^UPj;5Jir#>v35&Rut#l>k;C+%9~K~K!wndw>a*)Y=dlKp z_uzBT^L@HVXH1*q1W4gQW>E)2Uvbf?MMwn29|d5-nV#!3l{HVySXX%2sLQDSwK z-c+qcTi-9S2{1QncCa~qfL#|MdmKiGlH#o@ICHOKF^Iy)3$w^ z2u~#Pi-?z$zKjnZ@3u(JyC{nw&B$#oYP+*=CEK22>pMA`bUVzQV+g-O`f}-6DjfSR zx|=U>sLk=>0GH{*?yb(vo1a$^AmY;fX@LU6sVjQO3v!RXFU=RiJg7z>97?hMN#Suc zEPF{-c1Z>SRzCQAU?*8SkLNsSmixSLlc!r)9mRX5MKvZ7g<~iGJb!RA6eK*@-|k8MxJRW!lRhIuxJa>NRTA2^al-YZ!1!)j zSMV$^v;D|r-2BcxtGnoh5ppPH8A~g@n9}Dwl0(6(m5(}V8|mLX0sL2gR)KQK%G4iz zQaxcm3!%gBZ)7?sfH@3|Y79Mdo!7(tB}y$l|56r`^38@Se761V=ZBq|Fz<6Wd@TSzKI?GB5Nr96{3?>!w1b@k`z4!SR<f=rt4Q;NfW-btg6Qw*zt6ubgLeuCigU`1jm;2+>*K$f zAV!@l8f8N-6ds{pXL0`V6j|(CfmQRUSsguZfn|9ywP1;3=ydmE(0^3@T^SLTc6j1? zoZ;Az5~*EhGXDA+kYV{}r&Pq1!GP6aRL~T}@4w4D0$+3hU>zKNQVsR3qJt=U)A1yT zy}@{1Pc(F+c=>{tK1sYJfJTF(>aNz3>GGpNbn#ufb%!Z|AB{VN|8x$~4ZAAa|J)_@ zeOC2#2J3xRWCY__X(zos$N=yaT_u8>zXyE!j~@JA2J7zw{@Y-#zZM!{RC|SF^sn2G z0+vOA^cLtL%D;TX_e2>)2h}W?!240}-~apioyQfoRm1Oj(&NLi{%pGYZ3cby76~jJ z8-DiaUGQemgU#F6R($#VV6?6iR>-jwiy4Kpy+&ES3Qvg9s-ASrJ4JHWnSq|y8GMH8#_T)#?+YeDRPfs=R)-Nu$%pgR_C(R}hqj0~B`0KPKo1u5e3h z1XBvCNPr50Fc-_(Ra%Fa%y?Muy~!1R?co#bFh%S(Vic)hgEEZubE*{3kt~{H1xoiq z95~4b5d?s~7MsR-N_8yx*<2Pccd_PCx`t zqz3`Q}~z?n{n_w7^R!L4wan~udjtrzV(gckS$ZB7+rp;AQN#XSo z)Ov^>{_de$j>iYF81NtCi^9@37ihHu777{Cx&Xn%i3qAzA-~gs)%UNOdxkAQ`=<{c z{8hZ;XQ4G|>1C3%t}nx(WTGR-y&81%gA^}cz1MO5ixqUhcmA9YHH1Yym4K@^eKits zLx`6iG|{7vOjU3SWA)|JfP$dW9eK;3B$){>S_qLkoE?#zf`AHxAFLbt(MjohiVc>H zph3~*0lob+PTw<39K;56r?OI0=UkSahJ60y0dPDqJyfwB+f{y16b|(KT?NatgOnXu zt5CrUkF$?Iw*vn((jCU)g3+|A!CgPEm)6dq!>_?K?kc8~T;bJv2?rY7li76PO>^u4 zDd;;d`UC-!i0RSh2GW%89&8IQh_o9>9zP0auhJj0h#D!gn)d*}98CIKgDUi1t<`7= zDjC$}TKrmTVhCdX3N%r=Ut!A;E5Yu5PyFz2!?_-TZb6XzB>COPJS}FABUiu@1(h#J zft>GKgAz0cLch-fRK`iT^o*ea2F2vLr+~ja&a4?As&PT6knuW|WT4998P&<8T$qf6rT&1U)W-p| zYVXIo2dJty&_M9AU5KLpwtVgxKyEzZ6SVK>szc8L*8@K#7hEy`ts62A&I_FF^#9yD z(n^W5i1Gs6-3gS653AGr>xYYy>|u16<@%( zj`Qg^oL_vS*rps{&n1AXI7Nv)+KeT$d_%?-g_%`CJoTP|$pOr|Oou1cdT~jztuHm8 z@{+y8(SI<3RST%Ks~xLFEDFj2AkQtm&-i{UQ&(`L^v#Hbu+k z%|-c03kf+(jFOiurFaY6+upzY2bctf5lH&)7uL5&aciwV?ZH3JJkN}orNP0zby%E! zw3S~eFg#aQix)?w8 zW}0flMUEVT{XHAcuP84lR3Kld#oQee4PeDRW1CRN@JE$*q_~6<&@UU{Ari*N)wlfVWD51L1~<`rJ2huK(#{07 z-h}zD{ zYUqnphcBS|ysE4(aHW6f*mN3~602vR6axb2Udny3De}5*=-I7LAVq441D3BG$%M5T znCO&J*}m`y;|c4KFPz4Cs*K$hx{{w=UAT+K6OB8a0(rgq>oQ|s#NXmagxa8dRRLwK zLI}}==vrCk$O1`i>%21XmEON7VG!*(tu)|1@$lGAsD)W`%Cc;*H&N&$h5XzV4*lU$ zAXK5hWC7L^<<}JLyk9Q83LG8yLmTJhUn0iCYoCK>2!2JQAqXTu`zIE)K4?+4S%ZoD z8z}@oxDWsk8&W(XlsJ}4hgeSIt|!~uhyjwMAluASPAb#sI%m9KNSpYp`O35F?dJn_ z$@fI1mLO4Wy+th$Nl&|nk+#PL_$yq%2RGk*UG~B$j3>N9y2F>&!-4isdnw`7t%G9ANt!}!+qgaI9d0m$0J9NXSc;)1-n(m^-l$8KW5DS$BkAv%$ESbE_$ z^bn3InGJ9e2?#Ukk3}dz8boqy*SVPNy(Y--p4_GSOMc@lbp7vWqL%RKI%BXVh zZ-|=Qx^d56lAPq7}Y&AZ2mYn6yIOsM%;%Grn*=uISUx#2J2eX?A1ut(`R0^`WgKViZ2Jou4q{ta(=V$slIuqP{)eF=et_ zsq)AxK5cOvjX@Ywu++Ki*8;m*NfJCZUfYM6!S$n8$94qVcB@z!9PC%_XF~vP9dl<)PPnc(5o66W1w(M}%0}vyEoxNvzB^I-S5DFXt&Zozx!+uwJRp zdB?mlh}!B3t#aQYpqN`QE5E3X3hfwkx4Ck(W(+UtbaW4&5j#zeUnz);v-{$*?@~Fk zoyPT)cj@>c6RdJ$F=O1xmaO)^^PI&}bH$25b=@=83HFufBn9Oc!`X1=nHjqXB2gW? zk&FwN$)BE+#OlS(vxJb@2Rfg8*=*Jd%{nXf)a`0%8x8LXUa9{QhbZbdf3x6P@w^R& zSyf7ea8r%hWi=fBTqg2&A45Hq9O73rJmD_+;WTCKx4GcB$7%2-hIh_eHQ$W9^m^!I z-saIxXF}e|akiL@9h@CwAeCZn3|c54=rY<{SES)|=~;fq`k=}5)Mkm#36(NkBgFH$3m+N zQxs}iJ4eQAQKx@g&ei6ACQ;i({zSG*TE}9Vxw1T7%=a_2u7DQ73V(*980pgf#f+o!@$!eHFLB#Z2N(E};)5(r@pXE#S&z5tJTw0+ z%uMmP`&1}mczG#P%Wfj-C2jU3eZb%ffkZP;4`jblvAA;O4+(sJ|uy<6@cvGoir$3v8mThr z-q3+O37Da8Xua+Saay@!aK!_*h;d9rx#I#&SxHy&;<kd%=jyQ3rr?H}$>>3{15G@!0^RrKx2J9|PVvvwW+1aCCJ;+%?uX}97KvBlm zTI{7)i4DoZj#*+CSv#Kz=hkBJ>#Mer**nqQIWd8}yOt5s4Ld(@%s3VvzxCpeIhcalF&*YG|fviIOaMY{^yH(X>H@M07|e#`fOqj0BJL>g@(D`q{#5 zh-#mF==j>|`iR8EsY{?JME=DLWv@O{#!K8_n;Is_9psEk2Hj{`H+_MI+e#UHm)~WY z69UnU0)xwFWv^Q(?sV{Bn%9rj&h1?~;nagJ-53dSbvjMzV+hM5q?BorckEl8cUD?| zPfAt|%)Je|R#;y2Mu}#k+j^yd)BCb6Xqp+KF}mWT<2460I~(kM(4mWoP*tG9 z7~C}&l28d%uO&WaJ|AL8mR-z}MqWyrZj7yk%S3?A<&0s%wk;|*hPQ)Rs=zC*#P3Bw zz#!M+r3o3)g)q|_e`=f)MDbfE17WkU^9%azx*S%wLJJi$)BQYxhi;2+ zVzXdJBG8jWTMJU`pm0lFNQ*&Drp8{Pvb_%Fsf2|0i$FiDucnx23DLRMHA?OQHcmwA zkS9n}6GAc3%|@}K#XGGq3W1PogTbdGiQ&3=cNK*##MWY{%vWV>=N-7Je?R$?;Y?=X zMUwZlIfN7;5c*p&0(OK1q9PWmLX^lk!{o+6$kc2Wja?2tu(1P1t;E^3bh9XIe`YZx zmt=SFw8)~Ty*#8XIG$R$rskXB4gh&$ZZ)zjspC(cq7k>XJhEv#POi|^QLM!b!AGc= z!=G28xrt$yk8u}JA*!su`^ZrURi$K!L2A3YFNP5~iXq1VYPo(LT=hhQAj}Hk_=QZG zx|ydZK}Bvq`)CcS$Dd65mcs5>yS1G96hw&(o9xwr$jH)kYSv`3H#RQO^#Mw^D(E2# zCHS*&Ku*qp?8AF%JNeK?D;}k?uNf71kcRiA!eQg_lWkLt6c1BK@@;noP`=WYCuoU$ zQ!TD{Q`cvF&`-S8f-meY9{=m+hGosL&t{!-y({{hY_=b2Bym!GLy-(ZWn?)L6tgyF z4eTrPZVwDLrKpN`>TJ@&G1^cdkpo6QON1l)ViaZL_`VgtRVgih8>t|PA%Blpp6NWQ z%bZ!O6;1K6%t#IH6B95CCcvgNv{FD%Ls1mn8E&{>22jgYJ?y+_1D1ARS!g`I%~Fdu zn`3OAeV(Hu(~589O$P+b#M8uAB67WGns0xp313ORFLU;DL@Kjv`awftv9A#!rbwVL z#82Kq;cklVIjq(!D3zy)GPcGHLTc$SZYUbb`g3bkM>vu7ZONEkQcC8iOy%ntH< zb@cX`*SYcijN1pJ9PK!ehCUY3?dLHnMZwG&q2N)HLvwg|K&B%!zxU|&-%V0s-&n_X z0njAB=|Nd>K|!)P&|23!ELlo8!4*J}{n~;{xPd!-R0BQ@5-bADU;vmPGHYub>+%GS zbFW;FPB2Fh?lpuD_G{cX=$q7>ZwGdtZK~;4GA98huJxr@0!9V6$4?$n#~S=vGJQS|(Xp75M2dK{ZCpSd1pa7!9I`>6Hj- zNq(`XguwX_ZYKA}1a*zisEA))!y3f30K{*TDR()*O;Kh#;sC!O58{6+M-(HmpkMJT z(G8C5E=NQ|n1j@lJRun@jk=)N2>}EA)W&Qk5JLyyuKYO-o)R7Kw|W1n0a@`sE#+p* zD+0X-2e%`_**9eU12`3_{b`Kad9E=fC`VvSlniR%TKv?kN^B7bYyb2d(asQ7``^ya+c#1Le@9!tk4-Qxne?U)fur9L^EpR za<@OSlfW9VOm`+S14azF44s|rU>YjXL?2l8b{j=@D|?n;x?Np4@Y5F37v+lPwzdVU zRqfkjsi(CkIV)uKLZt_9%XBlm&pP(IzNJnZUdm4i&gk`uv$(FM=fF-|mJScI4ytFg zjHg8G$>jP=sq9ou&zz15byANDy}KqJ=B-XlXN;zQY4`noqrbu9(eYcfb>CT(qe-Vv z@o#F9;iVge+Kaz&qsNOMW7Qv~e|MG3aUZGHbQ{uA7s(Ivg`a$1AV_o!Hin;u<8ZuS zOwC}{?lg^ZUm`u4cKI@YGOgQd2>osEWzuJ}dU(iE=~G+fbFMK4J0?9O~L8`bQUF(u|`uM5YcX&=vDFVq9}!&3^Brz9@3 z&qoS4F3Ios>P<<&blPB#U5wcTz+`DM*bMI-*zE#n3Bhdg6v4GSsVv|Oe}rTGmHO^V zQei{eJq2igk3`|0MncbOl5BU_#8RA?t`jwAi8WWX;@h(Wvp{KHR1}K0etG8}L0>qd z;XfA!;j;l46C;N1>8QB3Ti-u2MMur4Kexs(IH{UEj!ECF^Zq#FX1HB9eZvn-cE`>PHoB=&T*hv(8BUUOn7WDtM<(A%9e#pKjP>-HvJO5zuZ_)++lW5KiA2_3 zNm8`$m6wi-i_@(eOv437u4pZN?j={>?F{_^v4kgJ=(j28l?5`s|$gFf@_GhgU z_6EOfESrsS;+;O;B{Rs{>`rLk9*>^MSk~WBKfO3G8y;+3+tl2`lE~T>ULmQGHD~3&b#z1%v3;BRq?M!QGU7kgb_>8taVvNMyOU4A6R zN%Sht3&tG7B49Zh)Hqup-*y*ZAi}tPUv-hgK7t6F<>(Lb+17(Yo&5ipl^@zzL+76?RgKhg!fWLl_onv%I!%Sg1TsQ!d_ zlRSeJSS9F7ma~!ioRjj2{kiw{!}lq~le{=MichvQ%wfmhx6H`*dy=?-`EZ5%FbUeK z&lmb?_4rp#@&)(xR^X@2$Pi=xG!C(ql_j+ZV z_$YvWusZ$1D9%v%LWE5+RnPc%djIxN%>oUtG<_SlDP{l=o}@{|jAX-2u^qM5yb{x& z1?TX6GNzG2E=#V=HQgEY(@AHhM%D8mvcbJj`_);px@3ecl%=DC-?-O0(y#6?2{o;# zU_T5NYz=90l2YLQYN*>BBFlftZrBzo??`=AXpmn(dqL-$ zxyv3;*E$j3Fgw}qstv!d01T7-!^6+K`T6ao5m#|72&9n#wG zie;)U(WtGMdd6*?9zTjDo;>O~&Cs}_;j|#TRliJ`Zs?^3U2I;Ee|Vk+GzddkRH<%l z0C!uk+UCooru?tRpPW)3-{$PZx;0QxZ!jlVrv{ChES1|bymAu1x!;qJdrr!3s+0s8 zr8cwUlZlperg(KGZ#SAeExN4=gahGW28mTzfEef0Zt{MMc;7!!vC&{5k^3h#d^wCS zQVkfNrHla_{D&>_%+ZrSr1k^vnzN++sd5q7ZBt=81ByG634e=4BD6$uX5IzW(O?*H zjCx-E?3=cM+Wg!*v(rnQByU%7uZfcnDp~MfSVO?%%8OmTzAD0}p^q6aW}@93)N}e^ zyyIIRqWbi>&fB_v4)f?@o(v&Bm%nk>4QpS>a%au1Wp;!-S_G!CEtG2MwHuijCK#oQ zI#}t>dT#W1jn22>;Ym;CNHt5NaiPXy1j@o03P-}hAr`?I1k`bex)m;#F)g}t7!&QW zOi`H~WlFwJ;}%~b%vJd^K%^e-ZLc$T&>iXf3sp|tb*2t_Z;(&amBr^|3K%5{pL%JF zglKyOyGbyq3cN}|x4B{{LYF5xEj3e`J~0hwnzs-DB*OdqB?cKs`$=Cz)*X0_J2dUE zq~~_NnTGNru%>~HP9B~^Zard5BW)jMeCszaVP=o+0{Kzz9rj#FSg&0ms9Y=Ue6Gm9 z<6TH8e#H8iv+60YQhJ5Gc1uN_){mLqVl!a+6`;IawP^)$c9g{}GV{65mS~@x)*S3> zbRNz4`nK_#diWl(o4IaB%^k4*d{b1R12uJfopll>`teR?t$otD&xt5#D3js4R8o{#kR~u=u{urqTI%Y^hMR+ z1d@Ag#z69?VX*+}RXb;bc&?c6PL!yrJg`1cp zH8x_vPLcCeeLms|0R{s;K2F^n{xs*4``o^DjBRT>+BuzjqI*C4d&KSuhXHAQ8-!b{ z&nP!m>lw|uXP|69!7TXgFa{xOMw7@8QH@H(7N6U^y{53!@_~d_92ouzVf)n&ZVZ&s zh3QN)F&^uzm20p2EaQQxtt8^7p^<-h{8c?pu%pY|tm|va?*3AL!zC85CA><&+hqH8 z#a}(E zI6~JXE5B<(?~jC=ozGzizju{+o}SKYuK=<)e(2g(Xs9OJV{G6NwuX9MZf8tkJAhrd)8!Aubn7rBx(U{xNRTF*k)}P!xOCW1>a0SAnZb@ zL`T@$TV4Y0Z%f6q1ozE8=Wc;yFhEreIFfSltTeiF@ZF^p;|I*1=G@ST0Ajv zpixN?@xDU1N5ZWD;3kB5Ek4=lsQ@aYX+0qT-oj3G1Yn3Ix3bd6qby~h{EY0r>TU=h z2?E$N-p#Dg{!nIf0DDLco0Y1(yzFnFl&tO+b3091>KM8@D)e+?0Kj4an9v4)j7paLE?%B+Kx3k8I1wI@kVNa;Bh;-dIK81o>204Ub)iLCf zbMo+raz7gKikq6|6pSG6_k4{RK9iT-hGArOy3!SSpIuOCs-e`O;k|=9BLBjMjkGar zFMviyd2jK{LE(YKB%U*{8lZO(OC8P|eZ~S5m2Xq0TZ`H&3Pqkg|NUIO~CtcAtV6XG_vb%S@ zRW5V2SB@tp^UhVgzSC{Wi=Cwbz#*qT`-hkmgn+@DMWw)HE)LUud_+>Y`@48-zxDQ~pOr_n()!XRx6WMIwk?F~ zIlM(hONkyBh}12?27QI(+`R5=EOB@)yvH{tPQDErQw!D?p0jO2+ff1H%h;<>dzKn6 zcRSOrtIKuRk#+#TkaTHD~1`KHp25F7FFRC0brmT||HaKs~Ps4{%54 zSBLkQhVvsCU1q#W06I{BqTWl&Yqlxuvi~w(#V=?UztD>PP7AIAPaE&x?5K$A%UTyd z=Am(eUs_+asW8gb)}JZ)1Zu2y^6{H2$p>{mL7*3+2Y+dd0)XuX;5ESJWsX0+I-SK_^*F$g+l4bM=rX;nWcl`0@Tb^F; z4h{f3ImXI6$6pK?dY3H&yBlU${j6lCPPY&E+Ta;3V4K7QXX0@k!F?DYK=jUS<;Vjs#o1-ZR!5J$TXe%bEoJH-bS|I3hKUAZscg0=}uU$T4M%QUM?fM^)XrYRXh8^ zmcHOrl&C>VgpOfhFe&?f&xoVVaMsm&t{FdnTZpWgY^u||ql?c;wS4{QcSeM_kM-Rr z?$W8?bc+XACu7I!NeYvK>GNkkAB78F+vF|^3zfpj{pF)ePUE7q>7tKqY zf&*zA+qS1UDhnpBe9T-ocLfv>zNfOyl=J7VqM5+YT3(8=tt|{&0{~@iC)+$n z0EyNfB75*w3V;b301<}(Xqr|!K!AxS3qQXpj;##=E+e;_|C~>$A{GLR1H;A)NYCMt(P1Qd$6tz2!NdyZlYtuuBPRMW_Ej;NxR>bGrxjh-pKeG~7e|C_>pvUww;DOe{_{Wn^_2x7sf&1zeE#FS(-#yPc&Z z2}4B4q^Qwu9z9viB&UJuZMA zFy$ABv87!EzrGT7ZV%R^9R1=u{cw%@M0l{*cG9$XwTwy=4q}7j;ttc(OL@D=EN^Xn zCin7+lO5XQ%45oNYBK}(^w~2)PJ{cI)zz;)3$b`@R{|uOPBiUnxu*WDtjvry6Ehuu25O2PIl{ndvLU(K`{4hLtYn*zq3g94L+_D1 zVAhXj1Thal!k@WLK(2!$^5Yz09f8rUYumw#WW+VT0@r263!*__4ZsK!`%{ddKp2{u zAd>voD~TNbc;bkEtVXnG|AiyPcrjK0y$Z;z=6;wcsW-sQUQJmX-NA~`Nv|iZy|>g+(GSm-8)3( zky6<`d@EU*#{acQAaekj?Xc+Jp#W@r15fj;swU5Loyj{yyQ9p`E~la8rs2odKz5m@ zb2Qs^p;l)I{+|suKt`?U4J?cXF^eGUu#7%Zr1J$dYfp`BFd|KoWs?H|y-AT3;dOw8 z4+>T3^)q0{lw|9uxZwOr43Ln7NHQTOvk?dVQ=!2$w2Rjo3!+-q9*Xb|kQ@|*2PS`3 zd4x$0QZZSwGpid1F^qC^mYtv)(1u&r<#Z&R!u(w^uVUB}Q53O3MnX1a(n6bCZ{fNH z9}r!^>nQg6I4JO@qrV}GCc_ksds@#Pg**ia=Cry2o#w+M7Eqz;2gFb{yo{zQ1L?YR zS;M4p>Xr#~h~(o+rik8{SHrq7jEKY==szUc_&V)GX*Z}Gw_y3$O>m9?T(s>r4c4a$ z>jUX3NES14{2%@9`}+Oe4L3VE#u_Cc0$IAZZg>}Gw&-@}CW)6UW`Pg5Lz2~zwGrXc zFi+}4EAsMFfx1AB;f`yXGDtdJS0{qB99wE2V`2;voxUoWxAqL|H4HvktFv131`nG~+V^9|%mpQWoeVv0Z)34^cm{otu=caQ_ff1Pr! z$sCx_H055@Sv;^Rn%S{UbXfBLFozoGG_lHUD^rGF0+(u}2^e|0tStIXE6&76>G^}Q-Wh_%8Hb3n~A(Vb%hzcc1K zJfW%n$ttJm0sla8Y3oi;()+_;yy*!x;=m{zae3R^m+KJj=n!TIrQA#ex(dUMc3CGw z8414NE9IGZWg7)o(6t)SBTZz&(4lk8^_eSkWKvF7QHj%LUh!B+#l}wu*`nKx z5k~SN5Eg-0zotX{nUR$PvPl7~<1NC#uhs~$k3_Q>1(vXR>#DPE{cqOwy5OJ2G?<#b!9`rkp+N{Y(6?v6 zoPr~H9MQwS$3LyTIe;VxvIwqgrOV(zbX%1MIY8I<=Ad8KgE&KGBCjt4_5Ob~1$pB? zPePphAI1fg{O3c+F&cFng#K9u3kp+bJ#fjN{I`C8T_h*@o2rFGV*Mg;5`sxs@vtEB zuZV-0(4S_};TXZqBM!fh+R?uV0u-*#fQ{4C{2$K$U3$Hk2zmZjTCU6fvz`Aj7=BRT z&mhdy{~D>NMGssE_Z)H3iDKQw|{qXww0Tz z>F57@<|TuS_Xr@npk{9K(;Orf25G+i$qnL1_KU!er%@Y-9P$t<|Nl9u4UB)q4#Hv;1tlH3Sc%i(FxIyl*@}mN2Bme&e54Gb) literal 102450 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 on|%h`Vee%GyN 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