From 84ce6026e2475edd3ce59d7ba48349a8ae7da04e Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Wed, 16 Sep 2026 23:21:49 +0000 Subject: [PATCH 1/3] sync: port module changes from constructive-db --- .../procedures/install_mantra.sql | 20 +- .../procedures/install_route_bindings.sql | 173 ++++++++- .../procedures/resolve_capabilities.sql | 164 +++++---- .../procedures/validate_capabilities.sql | 2 - .../procedures/resolve_capabilities.sql | 2 +- .../procedures/validate_capabilities.sql | 2 +- ...-function-resolution--0.45.0.bundle.tar.gz | Bin 40710 -> 43533 bytes .../sql/pgpm-function-resolution--0.45.0.sql | 329 +++++++++++++----- .../procedures/resolve_capabilities.sql | 2 +- .../procedures/validate_capabilities.sql | 2 +- .../tables/billing_module/table.sql | 6 + .../tables/billing_provider_module/table.sql | 7 + .../metaschema-modules--0.45.0.bundle.tar.gz | Bin 104395 -> 104602 bytes .../sql/metaschema-modules--0.45.0.sql | 15 + .../tables/billing_module/table.sql | 7 +- .../tables/billing_provider_module/table.sql | 3 + .../procedures/is_valid_step_up.sql | 46 ++- .../tables/embedding_chunks/table.sql | 6 + .../metaschema-schema--0.45.0.bundle.tar.gz | Bin 36182 -> 36662 bytes .../sql/metaschema-schema--0.45.0.sql | 31 +- 20 files changed, 635 insertions(+), 182 deletions(-) diff --git a/packages/function-resolution/deploy/schemas/function_resolution/procedures/install_mantra.sql b/packages/function-resolution/deploy/schemas/function_resolution/procedures/install_mantra.sql index 139c7f840..3e17e8fd0 100644 --- a/packages/function-resolution/deploy/schemas/function_resolution/procedures/install_mantra.sql +++ b/packages/function-resolution/deploy/schemas/function_resolution/procedures/install_mantra.sql @@ -74,19 +74,29 @@ BEGIN USING ERRCODE = 'FR060'; END IF; + -- Two shapes only: a page ({path, task_identifier}, no target kind — it is + -- always a function), or a redirect ({path, target: 'redirect', to_path}) a + -- host given over to the page set uses to send its root at sign-in. A + -- service binding, or a page that names a kind, is a broken preset. IF EXISTS ( SELECT 1 FROM jsonb_array_elements(install_mantra.bindings) AS b WHERE jsonb_typeof(b) <> 'object' OR coalesce(b ->> 'path', '') = '' - OR coalesce(b ->> 'task_identifier', '') = '' - OR b ? 'target' + OR CASE b ->> 'target' + WHEN 'redirect' THEN coalesce(b ->> 'to_path', '') = '' OR b ? 'task_identifier' + ELSE coalesce(b ->> 'task_identifier', '') = '' OR b ? 'target' + END ) THEN - RAISE EXCEPTION 'MANTRA_BINDINGS_INVALID: every binding must carry a non-empty path and task_identifier, and no target kind' + RAISE EXCEPTION 'MANTRA_BINDINGS_INVALID: every binding must carry a non-empty path and either a task_identifier with no target kind, or target "redirect" with a to_path' USING ERRCODE = 'FR060'; END IF; - SELECT jsonb_agg(b || jsonb_build_object('target', 'function')) + SELECT jsonb_agg( + CASE WHEN b ->> 'target' = 'redirect' THEN b + ELSE b || jsonb_build_object('target', 'function') + END + ) INTO function_bindings FROM jsonb_array_elements(install_mantra.bindings) AS b; @@ -102,6 +112,6 @@ END; $$ LANGUAGE plpgsql VOLATILE; COMMENT ON FUNCTION function_resolution.install_mantra(uuid, regclass, uuid, jsonb, uuid) IS -'Install the Mantra page set (a JSON array of {path, task_identifier}, which the generated verb reads from the content_presets catalog at kind ''route_bindings'') onto one site as ordinary function-target routes. The sites plane arrives by reference as a regclass, so a generated caller never spells a schema name in a bare string literal the platform export''s AST rename cannot follow. A thin wrapper holding the Mantra document contract — every entry names a task, none names a target kind — over function_resolution.install_route_bindings, which owns the one-scope install: scope and ownership key read from the sites plane''s own registration, the routes plane from app_scope.routing_tables, resolution at that same (scope, entity), idempotent per (domain_id, path).'; +'Install the Mantra page set (a JSON array of {path, task_identifier}, which the generated verb reads from the content_presets catalog at kind ''route_bindings'') onto one site as ordinary function-target routes. The sites plane arrives by reference as a regclass, so a generated caller never spells a schema name in a bare string literal the platform export''s AST rename cannot follow. A thin wrapper holding the Mantra document contract — every entry names a task and no target kind, or is a {target: "redirect", to_path} entry sending a path (a dedicated host''s root) at one of the pages — over function_resolution.install_route_bindings, which owns the one-scope install: scope and ownership key read from the sites plane''s own registration, the routes plane from app_scope.routing_tables, resolution at that same (scope, entity), idempotent per (domain_id, path).'; COMMIT; diff --git a/packages/function-resolution/deploy/schemas/function_resolution/procedures/install_route_bindings.sql b/packages/function-resolution/deploy/schemas/function_resolution/procedures/install_route_bindings.sql index 6b3217be5..2b6bebb48 100644 --- a/packages/function-resolution/deploy/schemas/function_resolution/procedures/install_route_bindings.sql +++ b/packages/function-resolution/deploy/schemas/function_resolution/procedures/install_route_bindings.sql @@ -24,6 +24,22 @@ BEGIN; -- -- {"path": "/login", "target": "function", "task_identifier": "mantra:signin", "anonymous": true} -- {"path": "/app", "target": "service", "service_id": ""} +-- {"path": "/", "target": "redirect", "to_path": "/login", "anonymous": true} +-- +-- A redirect binding is a row in the scope's redirects table (the routing +-- plane's own, named by its route_module registration) that the route's +-- target_redirect_id points at: the edge answers status_code + Location and no +-- backend is involved. It redirects onto the same hostname unless the entry +-- names a `to_host`, keeps the query string, and never appends the incoming +-- path (`preserve_path` false — a path-to-path redirect). status_code defaults +-- to 302 and must be one of 301/302/307/308. +-- +-- The one place a redirect binding may REPOINT an existing route: the root +-- route guard auto-creates '/' targeting the site itself the moment a hostname +-- is routed, so on a site provisioned only to carry a page set that row serves +-- nothing. A redirect entry whose path already exists and still targets THE +-- SITE BEING INSTALLED ONTO takes that placeholder over; a root a tenant has +-- since pointed anywhere else is left alone like every other existing path. -- -- An entry may declare `anonymous`, which is the route's half of the anonymous -- contract: the URL answers callers carrying no identity. It opens nothing on @@ -116,6 +132,16 @@ DECLARE resources_schema text; resources_table text; resources_key text; + -- The routes plane's own redirects table, from the same route_module + -- registration that names the routes table; it shares the plane's + -- ownership key. NULL when the plane records none, which makes a redirect + -- binding a hard error rather than an unchecked insert. + redirects_schema text; + redirects_table text; + -- The hostname the site is routed on: a redirect binding's default to_host. + domains_schema text; + domains_table text; + domain_hostname text; -- The one ownership key value the whole install is keyed by (NULL at the -- global tier), and the entity the resolver starts its frame walk at. key_value uuid; @@ -130,12 +156,18 @@ DECLARE entry_task text; entry_service uuid; entry_anonymous boolean; + entry_to_host text; + entry_to_path text; + entry_status int; + entry_redirect_name text; target_column text; target_id uuid; service_found boolean; inserted int; + repointed_now int; installed jsonb := '[]'::jsonb; skipped jsonb := '[]'::jsonb; + repointed jsonb := '[]'::jsonb; query text; BEGIN IF install_route_bindings.database_id IS NULL THEN @@ -177,9 +209,9 @@ BEGIN IF EXISTS ( SELECT 1 FROM jsonb_array_elements(install_route_bindings.bindings) AS b - WHERE (b ->> 'target') NOT IN ('function', 'service') + WHERE (b ->> 'target') NOT IN ('function', 'service', 'redirect') ) THEN - RAISE EXCEPTION 'ROUTE_BINDINGS_TARGET_UNKNOWN: target must be "function" or "service"' + RAISE EXCEPTION 'ROUTE_BINDINGS_TARGET_UNKNOWN: target must be "function", "service" or "redirect"' USING ERRCODE = 'FR060'; END IF; @@ -190,8 +222,9 @@ BEGIN SELECT 1 FROM jsonb_array_elements(install_route_bindings.bindings) AS b WHERE (b ? 'task_identifier') AND (b ? 'service_id') - OR (b ->> 'target') = 'function' AND (b ? 'service_id') - OR (b ->> 'target') = 'service' AND (b ? 'task_identifier') + OR (b ->> 'target') = 'function' AND (b ? 'service_id' OR b ? 'to_path') + OR (b ->> 'target') = 'service' AND (b ? 'task_identifier' OR b ? 'to_path') + OR (b ->> 'target') = 'redirect' AND (b ? 'task_identifier' OR b ? 'service_id') ) THEN RAISE EXCEPTION 'ROUTE_BINDINGS_TARGET_AMBIGUOUS: a binding must carry only the key of the target kind it declares' USING ERRCODE = 'FR060'; @@ -202,8 +235,27 @@ BEGIN FROM jsonb_array_elements(install_route_bindings.bindings) AS b WHERE (b ->> 'target') = 'function' AND coalesce(b ->> 'task_identifier', '') = '' OR (b ->> 'target') = 'service' AND coalesce(b ->> 'service_id', '') = '' + OR (b ->> 'target') = 'redirect' AND coalesce(b ->> 'to_path', '') = '' ) THEN - RAISE EXCEPTION 'ROUTE_BINDINGS_INVALID: a function binding needs a task_identifier and a service binding needs a service_id' + RAISE EXCEPTION 'ROUTE_BINDINGS_INVALID: a function binding needs a task_identifier, a service binding needs a service_id, and a redirect binding needs a to_path' + USING ERRCODE = 'FR060'; + END IF; + + -- A redirect's destination is a path on a host, so it must read as one, and + -- its status must be one the edge can honour (the same set the redirects + -- table's own check constraint accepts — rejected here by name rather than + -- as a constraint violation naming no binding). + IF EXISTS ( + SELECT 1 + FROM jsonb_array_elements(install_route_bindings.bindings) AS b + WHERE (b ->> 'target') = 'redirect' + AND ( + (b ->> 'to_path') !~ '^/' + OR (b ? 'to_host' AND coalesce(b ->> 'to_host', '') = '') + OR (b ? 'status_code' AND NOT (b -> 'status_code' <@ '[301, 302, 307, 308]'::jsonb)) + ) + ) THEN + RAISE EXCEPTION 'ROUTE_BINDINGS_REDIRECT_INVALID: a redirect binding''s to_path must start with "/", its to_host (when given) must be non-empty, and its status_code (when given) must be 301, 302, 307 or 308' USING ERRCODE = 'FR060'; END IF; @@ -269,8 +321,8 @@ BEGIN -- 2. The routes plane serving THAT scope, resolved the one way every -- scope-aware consumer resolves it. - SELECT r.routes_schema, r.routes_table - INTO routes_schema, routes_table + SELECT r.routes_schema, r.routes_table, r.domains_schema, r.domains_table + INTO routes_schema, routes_table, domains_schema, domains_table FROM app_scope.routing_tables(install_route_bindings.database_id, plane_scope) AS r; IF routes_schema IS NULL OR routes_table IS NULL THEN @@ -279,13 +331,18 @@ BEGIN USING ERRCODE = 'FR051'; END IF; - -- The routes plane's own registration carries its ownership key and, when - -- the plane has one, the column naming the site a route renders as. - SELECT rm.entity_field, rm.serving_site_field - INTO routes_key, routes_serving_site_key + -- The routes plane's own registration carries its ownership key, the + -- column naming the site a route renders as (when the plane has one), and + -- the redirects table a redirect binding writes (when it records one). + SELECT rm.entity_field, rm.serving_site_field, rs.schema_name, rt.name + INTO routes_key, routes_serving_site_key, redirects_schema, redirects_table FROM metaschema_modules_public.route_module AS rm JOIN metaschema_public."table" AS t ON t.id = rm.routes_table_id JOIN metaschema_public.schema AS s ON s.id = t.schema_id + LEFT JOIN metaschema_public."table" AS rt + ON rt.id = rm.redirects_table_id + AND rm.redirects_table_id <> uuid_nil() + LEFT JOIN metaschema_public.schema AS rs ON rs.id = rt.schema_id WHERE s.schema_name = routes_schema AND t.name = routes_table; @@ -354,12 +411,18 @@ BEGIN -- guard auto-creates '/' carrying the target of a hostname's FIRST route, -- so installing onto a bare hostname would make '/' the first binding's -- target. A site that is not routed yet is a hard error, not a silently - -- empty install. + -- empty install. A route this install stamped as serving the site counts + -- too: once a redirect has taken the root over, the pages (serving-site + -- stamped, function-targeted) are what still tie the host to the site. -- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: the routes plane is named by app_scope.routing_tables query := format( - 'SELECT r.domain_id FROM %I.%I AS r WHERE r.target_site_id = $1%s ORDER BY r.path LIMIT 1', + 'SELECT r.domain_id FROM %I.%I AS r WHERE (r.target_site_id = $1%s)%s ORDER BY r.path LIMIT 1', routes_schema, routes_table, + CASE WHEN routes_serving_site_key IS NULL + THEN '' + ELSE format(' OR r.%I = $1', routes_serving_site_key) + END, CASE WHEN routes_key IS NULL THEN ' AND $2 IS NULL' ELSE format(' AND r.%I = $2', routes_key) @@ -374,6 +437,15 @@ BEGIN USING ERRCODE = 'FR054'; END IF; + -- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: the domains plane is named by app_scope.routing_tables + query := format( + 'SELECT d.hostname FROM %I.%I AS d WHERE d.id = $1', + domains_schema, + domains_table + ); + + EXECUTE query INTO domain_hostname USING domain_id; + -- 6. Per binding: resolve the declared target at THIS (scope, entity) and -- install the route if it is not already there. FOR entry IN SELECT * FROM jsonb_array_elements(install_route_bindings.bindings) @@ -398,6 +470,52 @@ BEGIN ) AS fr; target_column := 'target_function_id'; + ELSIF entry_target = 'redirect' THEN + IF redirects_schema IS NULL THEN + RAISE EXCEPTION 'ROUTE_BINDINGS_REDIRECT_PLANE_NOT_FOUND: routes plane %.% records no redirects table, so there is nowhere a redirect target could live', + routes_schema, routes_table + USING ERRCODE = 'FR055'; + END IF; + + entry_to_host := coalesce(entry ->> 'to_host', domain_hostname); + entry_to_path := entry ->> 'to_path'; + entry_status := coalesce((entry ->> 'status_code')::int, 302); + -- Names are owner-local, so the hostname keeps two sites' roots apart. + entry_redirect_name := coalesce(entry ->> 'name', format('%s %s', domain_hostname, entry_path)); + + -- The redirect row, found by name or created: same insert-if-missing + -- contract as the routes, so a re-run never rewrites a redirect a + -- tenant has since retuned. + -- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: the redirects plane is named by the routes plane's own route_module registration + query := format( + 'SELECT rd.id FROM %I.%I AS rd WHERE rd.name = $1%s', + redirects_schema, + redirects_table, + CASE WHEN routes_key IS NULL + THEN ' AND $2 IS NULL' + ELSE format(' AND rd.%I = $2', routes_key) + END + ); + + EXECUTE query INTO target_id USING entry_redirect_name, key_value; + + IF target_id IS NULL THEN + -- pgsql-lint-disable-next-line no-dynamic-sql -- write-only: insert into the redirects plane named by the route_module registration; every value is a bound parameter + query := format( + 'INSERT INTO %I.%I (%sname, to_host, to_path, status_code, preserve_path, preserve_query) + VALUES (%s$1, $2, $3, $4, false, true) + RETURNING id', + redirects_schema, + redirects_table, + CASE WHEN routes_key IS NULL THEN '' ELSE format('%I, ', routes_key) END, + CASE WHEN routes_key IS NULL THEN '' ELSE '$5, ' END + ); + + EXECUTE query INTO target_id + USING entry_redirect_name, entry_to_host, entry_to_path, entry_status, key_value; + END IF; + + target_column := 'target_redirect_id'; ELSE entry_service := (entry ->> 'service_id')::uuid; @@ -457,8 +575,34 @@ BEGIN install_route_bindings.site_id, entry_anonymous; GET DIAGNOSTICS inserted = ROW_COUNT; + repointed_now := 0; + IF inserted = 0 AND entry_target = 'redirect' THEN + -- The root guard's placeholder — the path exists and still targets + -- the site this install is for — is the one row a redirect binding + -- takes over. Anything a tenant has pointed elsewhere stays. + -- pgsql-lint-disable-next-line no-dynamic-sql -- write-only: update the routes plane named by app_scope.routing_tables; every value is a bound parameter + query := format( + 'UPDATE %I.%I AS r + SET target_site_id = NULL, target_redirect_id = $3, anonymous = $5 + WHERE r.domain_id = $1 AND r.path = $2 + AND r.target_site_id = $4%s', + routes_schema, + routes_table, + CASE WHEN routes_key IS NULL + THEN ' AND $6 IS NULL' + ELSE format(' AND r.%I = $6', routes_key) + END + ); + + EXECUTE query USING domain_id, entry_path, target_id, + install_route_bindings.site_id, entry_anonymous, key_value; + GET DIAGNOSTICS repointed_now = ROW_COUNT; + END IF; + IF inserted > 0 THEN installed := installed || jsonb_build_array(entry_path); + ELSIF repointed_now > 0 THEN + repointed := repointed || jsonb_build_array(entry_path); ELSE skipped := skipped || jsonb_build_array(entry_path); END IF; @@ -500,6 +644,7 @@ BEGIN 'routes_schema', routes_schema, 'routes_table', routes_table, 'installed', installed, + 'repointed', repointed, 'skipped', skipped, 'serving_site_field', routes_serving_site_key, 'serving_site_backfilled', stamped @@ -508,6 +653,6 @@ END; $$ LANGUAGE plpgsql VOLATILE; COMMENT ON FUNCTION function_resolution.install_route_bindings(uuid, text, text, uuid, jsonb, uuid) IS -'Install a set of route bindings — a JSON array of {path, target, …} entries, each NAMING its target kind ("function" with a task_identifier, or "service" with a service_id) — onto one site as ordinary route rows, at ONE scope for ONE entity. The scope and ownership key are read from the named sites plane''s own site_surface_module registration, located along the caller''s frames (nearest first) so a shared serving plane hosted by an outer frame''s database resolves for the tenant consuming it — never a caller-supplied or generated literal — and that one (scope, key) then names the routes plane (app_scope.routing_tables), pins the site, route and service reads, starts function_resolution.resolve''s frame walk, and stamps every inserted row; a service target is proved to exist in the same-scope resources plane the routes plane''s registration records, which is the plane target_service_id FKs. Idempotent per (domain_id, path); raises on a malformed document, an unknown or ambiguous target kind, an unregistered plane, a scope with no routes plane, a missing entity key, an unknown site, an unrouted site, a scope with no resources plane, an unresolvable service, or an unpublished task.'; +'Install a set of route bindings — a JSON array of {path, target, …} entries, each NAMING its target kind ("function" with a task_identifier, "service" with a service_id, or "redirect" with a to_path) — onto one site as ordinary route rows, at ONE scope for ONE entity. The scope and ownership key are read from the named sites plane''s own site_surface_module registration, located along the caller''s frames (nearest first) so a shared serving plane hosted by an outer frame''s database resolves for the tenant consuming it — never a caller-supplied or generated literal — and that one (scope, key) then names the routes plane (app_scope.routing_tables), pins the site, route and service reads, starts function_resolution.resolve''s frame walk, and stamps every inserted row; a service target is proved to exist in the same-scope resources plane the routes plane''s registration records, which is the plane target_service_id FKs. A redirect binding writes a row in the routes plane''s own redirects table (same-host unless to_host is given, 302 unless status_code is given) and is the one kind allowed to repoint an existing route: the root guard''s placeholder still targeting the site being installed onto. Idempotent per (domain_id, path); raises on a malformed document, an unknown or ambiguous target kind, an unregistered plane, a scope with no routes plane, a missing entity key, an unknown site, an unrouted site, a scope with no resources plane, an unresolvable service, or an unpublished task.'; COMMIT; diff --git a/packages/function-resolution/deploy/schemas/function_resolution/procedures/resolve_capabilities.sql b/packages/function-resolution/deploy/schemas/function_resolution/procedures/resolve_capabilities.sql index 8f3dd4a99..91c36c879 100644 --- a/packages/function-resolution/deploy/schemas/function_resolution/procedures/resolve_capabilities.sql +++ b/packages/function-resolution/deploy/schemas/function_resolution/procedures/resolve_capabilities.sql @@ -8,6 +8,7 @@ -- requires: schemas/function_resolution/procedures/bound_bucket_id -- requires: schemas/function_resolution/procedures/resolve_api -- requires: schemas/function_resolution/procedures/resolve_payload_refs +-- requires: pgpm-app-scope:schemas/app_scope/procedures/frames BEGIN; @@ -29,12 +30,23 @@ BEGIN; -- definition is invoked inside a tenant's (or an org's, or a department's) -- frame chain and RLS world, which is why the execution triple -- (database_id, scope, entity_id) is taken apart from the definition's --- (definition_scope, definition_database_id). Every requirement resolves +-- (function_definition_id, definition_scope). Every requirement resolves -- against the *execution's* frames, so one image serves every scope. -- Every capability therefore has exactly one answer here, or the invocation -- fails loudly before any code runs — a function never receives a half-built -- context, and never selects a resource itself. -- +-- Where the definition's row physically lives is decided by app_scope.frames, +-- never by the caller. The execution's frames at definition_scope are walked +-- in order and each frame's lookup database is asked for its function module +-- (definitions_location); the row is read from the first surface that holds +-- it, keyed by that frame's key_value in the module's recorded entity_field. +-- That is what lets a hosted tenant — one with no function module of its own — +-- run a `database`-scope definition that lives on the platform database's +-- shared surface: the table is the platform's, the row is the tenant's +-- (database_id = the tenant), and a row keyed to any other tenant is not found +-- on that table. Global frames (app/platform) carry no key and no key column. +-- -- Buckets resolve in three tiers, and only the third one reaches this -- declaration path: -- 1. record-associated resources are stamped into the payload when the @@ -53,55 +65,81 @@ CREATE FUNCTION function_resolution.resolve_capabilities( entity_id uuid, function_definition_id uuid, definition_scope text, - definition_database_id uuid DEFAULT NULL, payload jsonb DEFAULT '{}'::jsonb, channel text DEFAULT NULL ) RETURNS jsonb AS $$ DECLARE - v_defn_database_id uuid; - v_defs_schema text; - v_defs_table text; - v_query text; - v_definition jsonb; - v_access_channels text[]; - v_key text; - v_bound_bucket_id uuid; + -- The frame whose function surface holds the definition: where the row + -- physically is (lookup database, schema, table) and whose it is (key). + frame record; + surface_found boolean := false; + definition_database_id uuid; + definition_query text; + definition jsonb; + access_channels text[]; + unreachable_key text; + unreachable_bucket_id uuid; -- The keys a tenant fulfilled with an explicit binding, paired positionally -- with the bucket each binding names: the two resolution routes are disjoint -- sets of keys, resolved by one query each rather than key by key. - v_bound_keys text[]; - v_bound_ids uuid[]; - v_buckets jsonb := '{}'::jsonb; - v_apis jsonb := '{}'::jsonb; + bound_keys text[]; + bound_ids uuid[]; + buckets jsonb := '{}'::jsonb; + apis jsonb := '{}'::jsonb; BEGIN - v_defn_database_id := coalesce( - resolve_capabilities.definition_database_id, - resolve_capabilities.database_id - ); + FOR frame IN + SELECT f.lookup_database_id, f.key_value, l.schema_name, l.table_name, l.entity_field + FROM app_scope.frames( + resolve_capabilities.database_id, + resolve_capabilities.scope, + resolve_capabilities.entity_id + ) WITH ORDINALITY AS f(scope, lookup_database_id, key_value, ord) + CROSS JOIN LATERAL function_resolution.definitions_location(f.lookup_database_id, f.scope) l + WHERE f.scope = resolve_capabilities.definition_scope + ORDER BY f.ord + LOOP + surface_found := true; - SELECT l.schema_name, l.table_name - INTO v_defs_schema, v_defs_table - FROM function_resolution.definitions_location(v_defn_database_id, resolve_capabilities.definition_scope) l; + -- to_jsonb of the row rather than a column list: the declaration set + -- grows, and a resolver that names columns fails on a database whose + -- function module predates the newest one. The row must carry the + -- frame's key in the module's recorded scope-key column; a global frame + -- has neither, and its key is asserted NULL. + -- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: the definitions table is located per frame + definition_query := format( + 'SELECT to_jsonb(d) FROM %I.%I d WHERE d.id = $1 AND %s', + frame.schema_name, + frame.table_name, + CASE + WHEN frame.entity_field IS NULL THEN '$2::uuid IS NULL' + ELSE format('d.%I = $2', frame.entity_field) + END + ); - IF v_defs_schema IS NULL THEN - RAISE EXCEPTION 'CAPABILITY_DEFINITION_SCOPE_UNPROVISIONED: database % has no function module at scope "%"', - v_defn_database_id, resolve_capabilities.definition_scope - USING ERRCODE = 'FR040'; - END IF; + EXECUTE definition_query + INTO definition + USING resolve_capabilities.function_definition_id, frame.key_value; - -- to_jsonb of the row rather than a column list: the declaration set grows, - -- and a resolver that names columns fails on a database whose function - -- module predates the newest one. - -- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: the definitions table is located per scope - v_query := format('SELECT to_jsonb(d) FROM %I.%I d WHERE d.id = $1', v_defs_schema, v_defs_table); + IF definition IS NOT NULL THEN + definition_database_id := frame.lookup_database_id; + EXIT; + END IF; + END LOOP; - EXECUTE v_query INTO v_definition USING resolve_capabilities.function_definition_id; + IF NOT surface_found THEN + RAISE EXCEPTION 'CAPABILITY_DEFINITION_SCOPE_UNPROVISIONED: no frame of database % (scope "%") has a function module at scope "%"', + resolve_capabilities.database_id, + resolve_capabilities.scope, + resolve_capabilities.definition_scope + USING ERRCODE = 'FR040'; + END IF; - IF v_definition IS NULL THEN - RAISE EXCEPTION 'CAPABILITY_DEFINITION_NOT_FOUND: no function definition % at scope "%" in database %', + IF definition IS NULL THEN + RAISE EXCEPTION 'CAPABILITY_DEFINITION_NOT_FOUND: no function definition % at scope "%" reachable from database % (scope "%")', resolve_capabilities.function_definition_id, resolve_capabilities.definition_scope, - v_defn_database_id + resolve_capabilities.database_id, + resolve_capabilities.scope USING ERRCODE = 'FR040'; END IF; @@ -110,14 +148,14 @@ BEGIN -- refused here rather than at the image, which cannot know. IF resolve_capabilities.channel IS NOT NULL THEN SELECT array_agg(c.channel) - INTO v_access_channels - FROM jsonb_array_elements_text(coalesce(v_definition->'access_channels', '[]'::jsonb)) AS c(channel); + INTO access_channels + FROM jsonb_array_elements_text(coalesce(definition->'access_channels', '[]'::jsonb)) AS c(channel); - IF NOT coalesce(v_access_channels, ARRAY[]::text[]) @> ARRAY[resolve_capabilities.channel] THEN + IF NOT coalesce(access_channels, ARRAY[]::text[]) @> ARRAY[resolve_capabilities.channel] THEN RAISE EXCEPTION 'CAPABILITY_CHANNEL_REFUSED: function % does not declare the "%" access channel (declares: %)', resolve_capabilities.function_definition_id, resolve_capabilities.channel, - coalesce(array_to_string(v_access_channels, ', '), '') + coalesce(array_to_string(access_channels, ', '), '') USING ERRCODE = 'FR041'; END IF; END IF; @@ -135,7 +173,7 @@ BEGIN -- function is not evaluated. -- ========================================================================= SELECT array_agg(b.key ORDER BY b.ord), array_agg(b.bucket_id ORDER BY b.ord) - INTO v_bound_keys, v_bound_ids + INTO bound_keys, bound_ids FROM ( SELECT k.key, k.ord, @@ -147,7 +185,7 @@ BEGIN k.key ) AS bucket_id FROM jsonb_array_elements_text( - coalesce(v_definition->'required_buckets', '[]'::jsonb) + coalesce(definition->'required_buckets', '[]'::jsonb) ) WITH ORDINALITY AS k(key, ord) ) b WHERE b.bucket_id IS NOT NULL; @@ -157,10 +195,10 @@ BEGIN -- invocation. The generated binding guard cannot check this — compute's -- published modules may not reference storage — so it is checked here, where -- a function would otherwise be handed the bucket. - IF v_bound_keys IS NOT NULL THEN + IF bound_keys IS NOT NULL THEN SELECT b.key, b.bucket_id - INTO v_key, v_bound_bucket_id - FROM unnest(v_bound_keys, v_bound_ids) AS b(key, bucket_id) + INTO unreachable_key, unreachable_bucket_id + FROM unnest(bound_keys, bound_ids) AS b(key, bucket_id) WHERE NOT EXISTS ( SELECT 1 FROM function_resolution.bucket_catalog_row( @@ -175,9 +213,9 @@ BEGIN IF FOUND THEN RAISE EXCEPTION 'CAPABILITY_BINDING_UNREACHABLE: capability "%" of function % is bound to bucket %, which database % may not reach', - v_key, + unreachable_key, resolve_capabilities.function_definition_id, - v_bound_bucket_id, + unreachable_bucket_id, resolve_capabilities.database_id USING ERRCODE = 'FR013'; END IF; @@ -190,8 +228,8 @@ BEGIN 'database_id', c.owner_database_id, 'source', 'binding' )) - INTO v_buckets - FROM unnest(v_bound_keys, v_bound_ids) AS b(key, bucket_id) + INTO buckets + FROM unnest(bound_keys, bound_ids) AS b(key, bucket_id) CROSS JOIN LATERAL function_resolution.bucket_catalog_row( resolve_capabilities.database_id, resolve_capabilities.scope, @@ -207,11 +245,11 @@ BEGIN WITH unbound AS MATERIALIZED ( SELECT k.key FROM jsonb_array_elements_text( - coalesce(v_definition->'required_buckets', '[]'::jsonb) + coalesce(definition->'required_buckets', '[]'::jsonb) ) AS k(key) - WHERE NOT k.key = ANY(coalesce(v_bound_keys, ARRAY[]::text[])) + WHERE NOT k.key = ANY(coalesce(bound_keys, ARRAY[]::text[])) ) - SELECT coalesce(v_buckets, '{}'::jsonb) || coalesce(jsonb_object_agg(k.key, jsonb_build_object( + SELECT coalesce(buckets, '{}'::jsonb) || coalesce(jsonb_object_agg(k.key, jsonb_build_object( 'bucket_id', r.bucket_id, 'key', r.bucket_key, 'type', r.bucket_type, @@ -219,7 +257,7 @@ BEGIN 'database_id', r.owner_database_id, 'source', 'tags' )), '{}'::jsonb) - INTO v_buckets + INTO buckets FROM unbound k CROSS JOIN LATERAL function_resolution.resolve_bucket( resolve_capabilities.database_id, @@ -240,9 +278,9 @@ BEGIN 'name', a.api_name, 'database_id', a.owner_database_id )), '{}'::jsonb) - INTO v_apis + INTO apis FROM jsonb_array_elements_text( - coalesce(v_definition->'required_modules', '[]'::jsonb) + coalesce(definition->'required_modules', '[]'::jsonb) ) AS s(selector) CROSS JOIN LATERAL function_resolution.resolve_api( resolve_capabilities.database_id, @@ -254,20 +292,20 @@ BEGIN RETURN jsonb_build_object( 'function_definition_id', resolve_capabilities.function_definition_id, 'definition_scope', resolve_capabilities.definition_scope, - 'definition_database_id', v_defn_database_id, + 'definition_database_id', definition_database_id, 'database_id', resolve_capabilities.database_id, 'scope', resolve_capabilities.scope, 'entity_id', resolve_capabilities.entity_id, - 'buckets', v_buckets, - 'apis', v_apis, - 'models', coalesce(v_definition->'required_models', '[]'::jsonb), - 'secrets', coalesce(v_definition->'required_secrets', '[]'::jsonb), - 'configs', coalesce(v_definition->'required_configs', '[]'::jsonb), - 'integrations', coalesce(v_definition->'integrations', '[]'::jsonb), - 'access_channels', coalesce(v_definition->'access_channels', '[]'::jsonb), + 'buckets', buckets, + 'apis', apis, + 'models', coalesce(definition->'required_models', '[]'::jsonb), + 'secrets', coalesce(definition->'required_secrets', '[]'::jsonb), + 'configs', coalesce(definition->'required_configs', '[]'::jsonb), + 'integrations', coalesce(definition->'integrations', '[]'::jsonb), + 'access_channels', coalesce(definition->'access_channels', '[]'::jsonb), -- Not coalesced: NULL means the handler declared nothing and gets the -- full platform set, an empty array means it declared none. - 'capabilities', v_definition->'required_capabilities', + 'capabilities', definition->'required_capabilities', 'payload', function_resolution.resolve_payload_refs( resolve_capabilities.database_id, resolve_capabilities.scope, diff --git a/packages/function-resolution/deploy/schemas/function_resolution/procedures/validate_capabilities.sql b/packages/function-resolution/deploy/schemas/function_resolution/procedures/validate_capabilities.sql index b6b97c96a..a3d7f8f47 100644 --- a/packages/function-resolution/deploy/schemas/function_resolution/procedures/validate_capabilities.sql +++ b/packages/function-resolution/deploy/schemas/function_resolution/procedures/validate_capabilities.sql @@ -26,7 +26,6 @@ CREATE FUNCTION function_resolution.validate_capabilities( entity_id uuid, function_definition_id uuid, definition_scope text, - definition_database_id uuid DEFAULT NULL, payload jsonb DEFAULT '{}'::jsonb, channel text DEFAULT NULL ) RETURNS void AS $$ @@ -37,7 +36,6 @@ BEGIN validate_capabilities.entity_id, validate_capabilities.function_definition_id, validate_capabilities.definition_scope, - validate_capabilities.definition_database_id, validate_capabilities.payload, validate_capabilities.channel ); diff --git a/packages/function-resolution/revert/schemas/function_resolution/procedures/resolve_capabilities.sql b/packages/function-resolution/revert/schemas/function_resolution/procedures/resolve_capabilities.sql index 07be079b9..64c2d17a1 100644 --- a/packages/function-resolution/revert/schemas/function_resolution/procedures/resolve_capabilities.sql +++ b/packages/function-resolution/revert/schemas/function_resolution/procedures/resolve_capabilities.sql @@ -2,6 +2,6 @@ BEGIN; -DROP FUNCTION function_resolution.resolve_capabilities(uuid, text, uuid, uuid, text, uuid, jsonb, text); +DROP FUNCTION function_resolution.resolve_capabilities(uuid, text, uuid, uuid, text, jsonb, text); COMMIT; diff --git a/packages/function-resolution/revert/schemas/function_resolution/procedures/validate_capabilities.sql b/packages/function-resolution/revert/schemas/function_resolution/procedures/validate_capabilities.sql index 524ec8826..a04da3f97 100644 --- a/packages/function-resolution/revert/schemas/function_resolution/procedures/validate_capabilities.sql +++ b/packages/function-resolution/revert/schemas/function_resolution/procedures/validate_capabilities.sql @@ -2,6 +2,6 @@ BEGIN; -DROP FUNCTION function_resolution.validate_capabilities(uuid, text, uuid, uuid, text, uuid, jsonb, text); +DROP FUNCTION function_resolution.validate_capabilities(uuid, text, uuid, uuid, text, jsonb, text); COMMIT; diff --git a/packages/function-resolution/sql/pgpm-function-resolution--0.45.0.bundle.tar.gz b/packages/function-resolution/sql/pgpm-function-resolution--0.45.0.bundle.tar.gz index 38c70f29c68e4154a3a19adde6ab61ba8180cd7d..b4780db8dd592a686e33a817977b35b0f7c2e954 100644 GIT binary patch literal 43533 zcmV)+K#0E|iwFP!000021MGe2avVpJ=KS8L2;(#jKu=XM?*nYg8X_SzrYS%TfPGA} z4I3wrVj;7XnMDY5nC(OC6Yi6&c^sLMM->W(2x+EZG7-olGQz_n!u|7Wak;pjl4Z{3 zeD*_ClgU* zAO8!X7uPt?1h48B`w0F<=!GcCYh3@CmsM8eFZR(3_r*lr$?-LZ3kzTzvCL_m75TK} zRWV<}ujV;ga$Ixvm#n^m$A1sc|4_Z6Mai2-u5fGUJPRaeGoSUcT5z zf0q{#dQs6UevPYF=9?GoH(#lHy4^dTU6cjoY+3T^72_hyGq_q^%nORG{%_t$SuE=; zzr6o@aP>2P=zAAg{`sL@=J}6HzP$gZMTxKZ1;shb7_NDB?*_<{e&Y4THLmH^170^n zSIs(?)8{NPEu=r(olW~v%rX8Gk)^rYL=LuZ8I8qbT%i?X=6cN2J#J?eck z61>Rn-~D2lGegFVJ^0%Td^;~NyC}JMI9pP@z$BYzb@l+>{*32xQ9Z7e>>6M4N6ki- zS2do`FJN2a7bMGBmS0v6Zsr>2b%|fdxBp=_`0P?0HZMFMr#_DZ?l}&Qe8E{H0v@@- zi=!lPxa+v7@Y0kM5xEhgt`mgR57RJ6iQq1ScK-`neX*Ehc}~5oZu1)dH2tiOt~c(? znK>Wxmy5Fafz$fUs$=V8{&HDnYi@tc?>>N#=eY6INv5uQ?j-xJyC1s$hG>yjb-AQ< z_L-yK*?;{$Bo1}ch;tHoU!i|SBTXaK^!m@=ai*ca-`)3rJi7DpYaC%z(PF_7#vV^jL%u1#!6iqAI6SY*TeK*$yxy3weev(h@VxwLh4@bkoHNc)me&Q+CmdRo z1>vae(#B)yN}^B6D}5?Go&u_`73{2h&S_ng$n-nQQGLZx&T+}BTG8s>8-i;8=cEC8 z(5yTaHGo(8()#HK=z-CF7b6noud)~Xl zdCK|kt*!@?_wl5I)nWG2oyrhUGsXnLsh`8%GS6sMqfdNuDh_qHFU$d*D`**$kgEPy-wiGU%*M(qx<7&1LJDN3%N-4Ujf*=|B#cihs*r3 z*`nG08|dX0Y2X7DpLtnk?EXTPjVS#LdY0Lz@6WwYu#Mu&OU{rUA(A5mnY<`UmgV;n z!^fbrr=->>8uBwQ&4D-8rw-cf=(Ol2%d5?$l5r6G zXW#&I&1Q$B1{GwWx0#mLZQMVq|sv7gtHOH%B zS@t_9kuAJfC@ivR4KEfK^2!K!cA**sj`1SNG3mMI?K{rCn zY0q$`AVE2u5&)@DAtY+cQ8TZ*X0kw^1MMiI9M!nI_g*Y;eI>V-H)!WK^Ng^pe6_0WosYRjWGmT) z`QozraX#T?S(Md8zV(@xnYf);>r4GJ8LqfVcgd(f4KgwPp&7(K2dVl!s;Tbww+mia`;a?BmemIw3{pQ2* z+w-H7WD+8oQqB`P6Z+3vN~(_x;eJp2I1P(^w>~h+kIYZ?#@UfJNx@3zl3#PEimPK^6k@; z_wTBkdWQrW(5=I=)7d%XapAZ@l7RFAJdW10U(=ZJ=@iC{4>o`tABA57S?4&q# zoX{PTsck!DKK3w=A~&RN63|4%Q6OAQV-j;0r-FK(FMO6_hH1hHPki4CaKwBOdX68q zI}`tj(=OpPdGEhRJaU(KWRyh$j*^z$8p~ z;^3I!$a5ncxGoh$5GELDX8M0w^L?-LW@A^p{y}6-``yQxe)x+VUUxwc`c#`vkr6HS zH`oVyFAT(uF=@Ul#mj$QX>W{Gjon)}XnJhx2Ho9iIz?lI*hh@lyi`n@Q9PgD8XQ2G zY}$8F+v{B|U8zfZ2bEhVbyCw_})F<)NiXjh5!7b4?xw$}*yO6Z?q34K5lP zY=++A`J9&(THvaZ?Ml^ir$Y0h__SQuc6qc5_ZM?qgQu(-roJn`X5UrK>`hQr$m^;# zlvN1NZ}4p;{Z1@msG(XPo2ZWODXTB~fB)zIq8yG><7zXN5^c5MG{bX58`W4x zp_MCc)|(n6uGMRQ`NQGqq3o1J>Nlfn&VEF_jL^aHJ9t@5$coqGO}Uumh}4n#&B=%3 zcj)AFK+>Z#bo}A{dvyMX!(;Omq~}dZ3=I`m^v!x@ z^of>Z#_6o-YZP_$(7&D>9gjTp@rBxpUZ5II+}+xIU(&pqWlR#Z?oCEz|Gj6=TRoEx z^k_Iv>&*!|N{0@2@4xBspl(RDijEKe3Uc(}@w?X_^WXdiy+1hq_5+AFS_ejFYOS6f zzWs1|bpAJxUXG3rPd5?6Ma)76yDkk<5pgF@n9E|9`fi%=G)e7( z5_oRP1om(ssQ98P$z8|!YF*|2JEq(p<-W7G2^|B^XO3_Z>Zg$-qQvLe4V@^!jAId` zT=+h7S-?Fv<)GgYk2yZWf$w>4?8M0zRcG#^561p(+%ou_IhJ z;c4iRBxXSr2+C;UMjmz&L2wW(h|L0S!GYB0o*Mz;~#(P8AABK)i@}2_d1M z1hL~{FASsD^$BIJaFQ^LF-;hWMH>4!N`0TC)QJOEq}UI{=Bm*BIdO1mTL<>wxE`L= zgF||FJ|lHJAD(>k_T=5+_LSb9(%Vz|k*Bm-OPe3ovo2##~3Y2Wn@fT%wjmujJ5x^k9hG;D0+7Z9m zyDQt_2|jC69pSvX;iWYcIOWRXX3_;C*symR$Us>o8&n#6T`cJpXCVJb*u(fffSsyK zYkRX=l$=Qf5yp3Og~4%^FVs-A8=veT3{`cysIPdrQ#DvXA%yDe6)wS*2O=#dh=1le z$^^K?W(?i%lB3HduPV;^fI#7Yw22KC8g4BL~xf;KWP(gyA4|G52stlPDoU>LgJ_;s|rXaO6f#=(}O;<0K`|rRX<@*TZys zvr#F<3I4y4Iv>WN&m-<}&*97uoYeJ#gpxS)9FhjqbK_WeGzc;0k#NG0cwXWWKcEhc zMa+ZeQs)h|9;?BRknLegyGNslV?uc76V776TpY%PJCTUvI7(O?CvNOhj?*AXed0wp zOr6-{Zis_`i?#O4B#7gbCSJm+OPna7uIq$2O}#MmomBV{cM|3%AtB)4780MtNlYW| z1wP|mm^_ivZfG^s)7Kn;L&d#+@^ucq$>6LT=6; zP}LZk&vM3p;!NtGttNX^>p*S=6cmu;Nq$4dc*{>UL!0TV5b&*R;>AtQOLcRC)E}St z?Vc6?EwykN6ke^_wTqmp;mE8H^Eto)^%cLK4L@GhV4;_)a+Y7t8`J^bD3|pWG@&$V z7z%91yU+!COXvI*|NHJI zetYp5&zD?oetY`}ydk=TFgxR3)5Ir!YpA=AMt+7(yg`zp@^rW^s#>`f2rPYgkIiKges-zzV1RYo{$}g)4R%|ZQ3Mj5He6$0OA!Q9N7Rx;Qamh7{ zD>!Gj>##A-sbCtZK3!xCKwXjXa!*SRU0R)-%O>R^2h6ml>5bY0+Dq<3?~5AypB9|foOS$#K=jKh&1srEJC!wsxNZldzG|RG?Vlu@(_Tf*ld_jL8TbN04!&Yp zqpTiae(0uH&Y3|q&2my0A~3vM2Xd)t46(ge7B?+V9DK&v+(c^u_uyUxPrkkQaD4FRgQNFK9Xk8d`?GVYdYw9sy9a|PaVDY91Cv+7_VSWM z$$2J;A|o9#vV;=|=%hebIj_~HY_Z_h5vV41boLuGUClqV(tOW|<2Kwa+q)`ka>8R( zp@sGe?P>{nPc9!IV#R5ZGZR&X=Ms_?nMBt&#bT9^u&Iw%*Ga4URB!*XpKr3^v>FX5 ziaE!5<1Aa3OTH4=U84&(Ur>gQi$Pz9b7U~&aj&vvu2@h4{2g=kRaT>t)1qWuJ2kAC z4VFS@8K{+{uq`TW)nr57>REv%ngMfz?FReFCM~@^~NVReR-* z?sb(DL`c1%uX$BLz}*|9Qt0k>Z^O^d zhG)`#yEDA3*6j=WcpPYC{k{$Ns_y;0ar8use6~Wjzk!%uO_a>1g>l@rCZ+XO#+C-! z5y`r{e_UnYhB1-YlZ#6{arCD zN``)mygl?U`e`9#vnA`T%Qf5H-CN(f?QhK%sJ6ks9G(9Got(ZqIzD(0=-0;EB4krC zjx+G{_VncJOgZToZt0EU&j;^69G(GPtVW#ueUe>fdA&D5yRb<2_Z7J9HaG0<9-K)^ z?pjJ#A%ykFbc(*UH0esJ9=EVyKJnXq#ILnjEcXLTGg3NFZ_6`t_69lNR%La3xQ8iR zLjAs;77gSL!=zpIrnAxAbTeGq#-{tC)|-Y6dUpmpu-zf_#%6PQY1Q)zPUtR*!Lyya zYtMn+Ve|Ij>~Off{pAmb$Ab>SX5FfE=ef!+WA zzO&nh>{n0f1{1oL+Iy(k%1=(;9iF1E|E51W#cL)GeA9yLO+hWy4r6HnDdA#(0G@h>pL)%c_>@r!mhA)vEPEP%ExTJIImz z_4wrcLOML|!$xYgC4--Oy!i3O%a1Qis!ByGD!T`z7nE03t*@&`ZNTfz%e}rF(`#S5 zCr{9je4}=tpUdGP#LQ(bqatD{ixZ9$LVX-1G)~fp`F=oCFLXnf#+Z01_9E&93_EE; z66W*p*&-W^x#gh_4;l?<-R&pH{vDL|ja(oi5kgF`a zQYVNK?z(QkqDXiS7Jd-;JnVN6q>gnmS*pE^mH z($p0=P9itrJfeZ;q+#fb)MX?J+(gU5^sS-D0lRgMFjz4V*Jq=wd)?rSgaMKE; z>8|*QE#9=no3?n<7H`_(Oq;!VG3yy?kebg7px8o1mO zZbChRQ!nKy_F3!`EJDYRY2x^lLv8_*xCv#{iPJb@ZWKb0!_VPzJX(+PQQpUs&7L0d zeturRWxK%ElejS7@AJP_|7447`?kZaRjJC#P+QANQ09dSeSP@N3E(5(V|;veczSL^ zhovi2H3QFMg^N`EIElvXQ0fWuTPcc7WK)p2I;$XS?fh15HOd1JqI1#i>EYS=t8YuZ zxcbxkSF|khSC{a|tDBw;DKUTgay^fhz&Z#O>o#Kg6Z_-J} zd)3@)T5J4BRRX&<#9aDAXRy94wFMgo3q0}u7- zoHeVl8PtB0b#R!E5X%S&MWkwm-Zd+1I_Fi}8+#XmXaNW)C~jbJkBB~RzEUZh_a-v% zO4c7L>Z_I;q#tsnL`NCaW!y>461<;}rnRa5%~FdW)oS z%w+S>pKY46w)^%Z8z=n?9jio@%epXmMdTJDqh?GHqI3(F9G@{Aa3lZH&fL0Bu+K1_ z-?plS&2lCv5H!6Wt?tyutVOa$F@yJCuYGsGT*J5SuUn0bb9^wL+mF6IIe33~_V#dh zq?6q>I2jv<$~M~cKu^;j`R%Lz32aiGc8_!GNN!Fp?Llv~XYGpC@w=?_xxL8=+-c7Q zMRe1ynqaWbokq;q44}1PxAqMU`8NB(#NGw&LRZJQ$Nu7~SsA_4Y}I>63`{yr*09eP z-4tOBXwmLyV?Y6DBzh&y>wSB76ffBux87Lny$0CRSR|OQ(BbJRfE=yGYCVTcr|3+k zAh;=}GV$^!ek&oG%Gwt8b@&w6aoS|hGVonStx3(pYEeC7ihb^mgd)PbGS~~MqTu-) zk`v9)*F}A$@%llNR@9V=ej15ao7vm3ebDcZ0mu?O{yc^m1AEyrMSs^H-)b5ld6e4~ z1~m#34>mPrnSTU4+{Ji5uYz`0qR964wjrRb;Qtkb83TYjGc?>5mFTv5OB|)&Y8u{; zj`yPF)6sK7(0w&U8@{{qSg;8E?&$3N==klqqK_@@+-J|U(Bh-xKOek5dUx^t!O`jd zDy`rpdNouB6due96~~9HOa$W~^Bu@>PcfR9*_#Y8<&BTjdkL-9$L}w@ejeBq9%LFg zF4XyBbcI&u)*5yXrXQ%cn9{Bkt3bg^ur&P>7hs!sUL5 z1J1Dv%L+fOldetFr|{QZk3HTEJKl*n-qX`}6lJ{2r+14rZn4HK*0{wQw^-vAYusXu zTdZ-5HEyxSE!Mcj8n;;E7HiyMjdx*iFh~twqcKs)HuI9N+qy2my)x82t=)sw&5qcqgg@3rI zr*w|9>(&qXhnw1*P~8@^`&`R!&*j;zr{Ndi&V9dmdjeTNgAX~Ut~>)jv}t+zbT52mcGsRd5)wgW1Hm? z^BAfAB{7&?K!6p1VkNk3-O1G^Ka!eQx#*j0zu*>~dOqwLWbLb#iE+&X9vpJMXeE&CTG$~3|sBDpO3QMBd z9&~DNB{@Mzv6-$GL1_^I89`zvUe>kh(W{Y=6lkm=s!D!cAPU(X7MOm*m)s6kvG50= zPF|pcvvbI`j?0Rds9ffCc5RX_X8=;@`f{*fsv0umGMQA~q>gCnpSRBFS4Gw4u*fR3 zC>F~(uI)U&r!A29xtc-#aDz_+OSWm;R|w2)42Wg4k|~)DZm!ph3TJ7(=Z%_R7P^Tk zffdA=SzdelZ5RizSSiEu5U!?K)fBaZpJgS>&&_Xv)j_2~%Y|7duVuA2KD8voZa|An z?O_H2lTlqk_KpkF$u}}jiqc%{y+;nzifFmh3I9&99d?`6Cx3H4d`WG7jkEdwZ(mi{ z)&6f^@tV#oZOo4HXc9Y{?N+76R`S2viGXxEYNMyc;dznsZc)GCR%-TxVHR;DPb6r# z!J2doi(1YQ$D;Qmc#8l=`&!Mc$p($7jPZbUHv9_D1w`Xu#4;f`9An+!4+)UTW-OzQ zjH815-bHzXO9uQ_n6DZeippQzKd#MzWa014$Y7_!^P8s90$_9!0k>9LgHj?|sI2uh zN1rS7_0jwH00nAzY!^bd>T*e8_nZQPCJ(cJcHP9^YZqnP3%#|yvM&J?A!9{bzMHBD zQkgJ&_Xc)Sgd5HnJ1R33uf!QzF81W!+)i9=(!rbA*L`Rj)Pt$|F+y{ zP2kaBeKoDYOg5D{b#8GB+O%f3p-*dfeFer3oM-=z&Cd18+=Un~Id^imQu6@&v^@9P z(6U;kM$d|TqPhZxw-RTUS3uvgSYBS)Tm+1AeE8?XQ?)hKGH*gBw#;H7m=AUE)i;Ig z3zHxOtr5@Jv@WJRXB&ph=rz52XQ;~p-^$vnKU77V5NhW?{%dD{A1)0dYDPn0I)?4B zC)QY)#~vTIIgdQ}LqQ~iue#qW3pVyhxy&zcjo_G-$4>q4%~N@Cv%9yZTIN`D{bHMA z&-9saWr&f*nyb3sJEX=^d)XP{mm3hZw|T6bBr@o`rS;54RGo&HnASx({u4_<(E@fWHJu9hO)l6 zZjD7+7erN7^KO}qd2`f&__OXrY#kib_gBjUA3$A9{8_~G#4?Cr_-hZm=ZfBJBA zdiZX?9fam&hIUoD26^l$jcun7-VRt~{|)MzkF~Va+xOKGZK_6D2in=;_Xnr2-8XIl zB%9A|w~}V}mGX=!YPaHCezo>AZra>crE|16EDH*0kz83sK~<4+)M(ovMeM25oL=Gl zvPqjUvM>go7S>Ize($YXI4jFOX-J(IN_Yj^}prokk)C2v$QyrzL52N0;Iif8wG+rcy@VTsa z(^{1BzAI4gSm`dIdz%2@${=;i(0H0_Q%^G$lXlDN8C5p}{0CdvWP}|j111}>GFk9_ z3*nEOZQfb_Ii|e5OfAsv)340d{Hn7RH%naVLTwVsA(O#QWQ+18pTf*4*?bMtw7z4N zU36(AH<^UTz%NdtC8K^os^(nNsJTCF3Zv<6OnO_N{(!|-`#(K^n>)@; z;|@;E*t-w5X`${iN#9MA_8Dm)-Pmet_L{m=Lbt4~8oFgYQtQ?tul-^x6-|1A&?Xy< zu2tNOWn%bg50&-mbW&YDZff0XlmI+&+EkGC+I>AzB&*#Mte1?sc?Ck5kpN~L3u7PV zwRTBMG2DMM*!tS%jH+lK!TQ?7QW^KGSB!qP|Hk}k-L&LZyUFf!wSU>|YNf3s49H6p zrL@`4cD7ji4f{r)8z#sL?M50|x-)o-mD=AO`@L2*2B(6?WZXW`*9G_A^e+utlL}$m z9{g!Nv@RW+=ruU*z0jV&){~@ZWIS(XqtnTb$!VLJYh6ON8l3fL*Xm?4sy-(8=J5C& zog8lllPK4F33znkAna&}&i`AqU}7{V>z96}bB;&bwd%v8qqC3s&S}@+0ZY0uxHXdY zF8B@u1YTJ<{oYCwSNG)I?VGt)nz(E`)_rYQ4M1w`T{~6ZZY3+Mb`4j`UL_H<-hQPd znsYiIiF>~R5N<88S=A~&MgcBrb>aj%d*n75$3x=u> zi~@VA6&RTR_t)MX3vZLDaa}?kH*zUYs3S1-BZp!UBw-K-90!CDp1L%SQ|`rS2n8@w z?uRUKJR0)QNuDc`%uLN=!^fU`jvf|*21OcJ5=2yZ6vqMMK8;d0#%U5eZs-Uaq)C)| zMEH&a_Xx#7D8d*5GgF!->q5|cj$KDYMDWCMc^vT6i5!~7LF%|Tbv=&?kA%#1Q;$-Y zClQW#f}M~-6kJHi6NR8P6Ehk~X5_WS<%Qm@W~)&Cl>q-*Y=3iDe-lK14Vb?k$G;oG zAE5WW25h9Xck6Df{tlRaBZPhvaQ<#w{$Y^(L(urg0P*W!_>}>LTQq))#&6O1EgHW? z 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 f7UoUp_eQ=R#T>+JvtwIPZ*)Hs#xI#C4KG#tU z*ICv0lP!38jdRPhPGz{%RmEr_^IVz^F$g5dRn9&bF1|!~UgVo*+Z!_2?wuhD&5X$* zKQ_7`j(7y=GDPBVj>9P6JWfa&M~=rMFJY80Mwr7%nleYkP8tV3jeN!(C%`y>$<{82=-l0W8x-37^bd>T_?u6AQul!{lHH>%2SUg zP7=99T+bChk5;T;-q05L+)-bBFrUzN|MACQIG~<%mN$}C&46+yfno@ z;&@3&QYQ`Fgt~-A-p}Io-=)j1*Xw^oz>4juYd4^$GIh| z8Bwk0;Xmnwr%K6Yg%J&6ZIvHyV;^Y51*_I;D_SY5f_75B<`9RORo6YC)5spMb7#5` ztnyJd-sQ?rp{q<p6LkJ9wkr5f5xN@!hJW zePMmA_w`;c&3k7sGGe+F60YN+qP}n zw%)n@en8K;oUjTO{D8ePKKy~{D$sq&TM;KfJ{J03=1ps^R z`s`N)GX#mb2hu=e1{dVP!4`qZe6ab~yO|>xP?+uOg+OF*0*nyBM`eP-45x&q63AR+ zuMzHeXUczpzNK3ww^hqGDV?>7Z7Y{-k~^vuTU9Q6_9eHK+y@1+vZRpufkGA7qIhs4 z!xW?s;K}Uc+z4gM5(94Hhmz=LkqnMVwq%eJ+}Pa|4;xKUlvsPHZGAYFi*m;;xrxUc z(SmN)Jwkc5#1?d|mN&17Q4?W}9^LH=p>s(_pCmQynO5#=D);)alDn;oQmUpdlyxb= zn8zk6GprhmVXkT?a@Z41`=xRo5d-JvfL(NG?Z>0)6a8%*@#YUa>Z{skewR>Fbf@fL z-mjV|>J-~+D=>EjL68}imkaxUYbZ02Rj1ih0x0S8F5vR4ydouOfyT-n%oo%5`Wn~+ ztA<9LV+@l6Wjfe1(wLWfD+%dRipO=fj3=zNpNPwgo7?JzUKYA3KAQ+L8x%H03X3I4 zc_0{~AQo;h0=-9pMJ6Lrz8h$)CGL({vig*tY6&zj6%85q5ggAUK_@3Jrt5DEL;IQFw%5<$HOwqwe181 zFye7#3H4^qn{?h|lz8hGqwhYWz38k31d=OS9F&De3elp8{S91fPt;82#=pG#uu25G)28Wx-hiaNI-eI$N>P^F84 z>-oIdxxcl*eh3p|WUe3U??G#px^(cN5}Tzs59o;77g z-J5YTy%vvCSm}5jLN@7C9lsWTw=7>glF2=upf1EpqEcR$VZ9l2Z_n=DvOg~AeA&5q zgpEnLm<6{?4boE$@H@Zbt8xv>P{d5H4MUa4 zisSJZ*qjCd#0Fe>ZVu#!$}ipQ5jmM1EGF2)-Nc15hNSsrACK0z_QZmo!8TGwUG@wb zVxnoJryR@wE{u`*C;BnfXNn477Xf~KOD}vx?_e)TtSUwiNhb*%XY0H z#NVBJq`KdI$bz86x#_XnX9Q(2fPv-Za!uW92p7UTWV`(XO8lja=FOfLy^`{JT)bwbTF=0&a;3x_k=>r4ajK^VED0S zoO7sgAi-c`d5BQn>U$rOqKV|h5WHqfkEr;Kam+Y4TcI1)el)4oRY9vueyf7ksD=?% z8dd5mNURpD#-E@^@Bgvb6R0K7oSKx3_Badj@I zMgjn$l^*Yy&9QZjf06RpVTPRb+qllVAO(PU&j!tEuOleo(`bKJ`qqbrG$%2AG;9n^ zWtwk)=gl?jh&&+6pfkFl$O6rBaGnPm^VK8OBAeZs)gyBStFC2+BVwL%FJ4Q0e|r|F zt(8bc@{mpLPYS4g>c}H~>kFt=3#@aiBF4D{t$m@bPLPPzzasxs1rR@>N4oEI<_va$ zlZ8tu_7l!nB)Fw9jetN9W(_H1fI?SY5lbkoMhjts&4Q>ui*$h%sC?txA;_zog~r@+ zK|lnM|J9c4R-OwZ^Wle(@yifzN!O;bEDm=MG)CVtrG%iTAV+S)8VGP19Lk@%pG zix3V#I;m%u{aSiVhX+=|WdQRlCnsQ!3C;uN5}1H+DPTX!M-z#M!|+tPs+qp*!;mw& zpeK_Q zQ-0n1Zm3&)>Dta|?VWghDTgmiO9UQONKm{$j1j^%LRGq|A2X2c3qNEh$fvf)xk1G4 zpx#3cP1|P&4<6mlCDDM?HSWc3I{T4%@~<_MjRVBIa5R#EvnUoD(ItwU9DYWoLse>r zxyod{H_T@ZfhCC`X%o{C-)_@P*8!nx5RgQ{`m}tkV2+Ka=peTS+U#M|KjO1(e z<>R)*ufe<~oBrw2;_WPb=Zr&Vuyl91&K+jL1?kDUvub9luU=9rkngiBUc`fC=58$as`pDdo`I7ak=InzZtcuy6$b{H(+#}G)q&7>Dd%(9mP-e6|QmS{~)Y50R zqRSE&c`6QO*6O;r=Rg!FlV(u$N5JDR(0Rk2u9;*{ii!yD%wOvcHg{x{j13J~fQ4}p zJMMXAifPq)sL#+H)F+MT61{$ zSY=2JmMeWE!peS$*3dU5-Ny&cKxnxH5KvS<$Oh$%>Q&;V4%&(iinUF#BC>2~S&zb% z5x-38S%2yadx)V*X$hF5jS`QG)FGQJ-O}pMYr@6}4z`K0S6k@HTBst>0K2&JlV9I(Rd6y02tlG8ruIIkh;UG>{_%|XN z@U;03K)zJey==_Gl$QE&H|MD6aRrTh-D;oGT4jL~5xWlEYBsVo-vI|veBEM>w3cbj zFLS$gu9Y(fYVt0sL z8nXgn$_7bJ0-2nMag38k=z|$#IN_YWkBh--8aOO6;U^u~FJ)SbNJJkSYY2b-p}P&Q zj9{rzj+)4h=Q40svI+C*{KP{E5=OB<+)kf4=T&!vo{;L@&1!eK7tMVi@G-v$5EaB^ zP66psv>j-9Qk34>uN_|}XE?)wk|o&PN)PTM^7Fz1-aYb@T}Msin~{9924H6|HErj7 z%i%pC>SR=N?jrOqrA!~vi^kWx*V5v@Cnz<{=guF7ndZyE96_E-RU_m^IOCN&RyVQ# z+?sMR57g0PRWQI~c0<_y1i#(=bU)3VE&bN#V$!@jdi-^A34{Ipc)9azFL3!^WoiDi z@Ud41+soG}pS~z@F>>&>hwpc@2caZ`&des?(-_FqPS>*OYI+onj<09!Qp{=trwJkN z<}F0TlQ#p|C8`{k*DLw+ z_)yaaf~TLe*iiG+*VyYe#18keTxV+&Vm+ckhc0DG!P3~cxBJ`a zMYcAH14_EcQfBwRQW}MiPxOAM^hLE-%%&t%QH9cuC8ngb>2)8d+{u%o$msibiWKMY zM>&;CsHL;<1{VPFBgM-8W(8}yw+!P{sd8!moIzvg_30|_6FRX|Uw$*m+~{g$#zKNNat(^*&ifLpluKJSacc1gNdW3WwEpkI|9_L+BSK9w@0yuKebv zv|Jc!+7mO!NvMVhY~CrrMVozCsVO8);~R@~40ZFW8gZ%UB*Wb@qq^UnvT#!nr7HT_ zCnP2F-S%avE6bNn1kjYp2TN;UwZ4Zln2qIIJ+t?lVJ+)h> z;`?rfcEQ}c!EAk$QEPIiwnD*C9&`4o&qfHC%q8B>vtmwXG4n8XaJxsXrp=qePxCBZ zE3Wp0oWaYG`ASTB+3`vMvO^EoQg17&w;WGr`Is^)_;=b60P>eEC}MO1;O@&rMMEbZ#&kd((LfJ)}DaL*YxY>1Vdm9ec^Y?O7_~>YW&uE(9or6+G|?e7>Htc7ete5 zpKJxx%CGDnpZc^}mNQY%R)IV_lP*R0iyi{s>dw;r=Ar-W5kr8VB^i zz^mCH^KCB5eQ4+^8a^DWQ}q;`n}OR|-)jEKV!PsiJWQMD?w1zqr}>*3>!G*3d>lM{ zUah;?%-xn)`E%4;6=#nAEs#{H!P*@(p_>t)*mmJzy+m zG&&onTFqqyNiHNj9Pd4W#Fla1@y8>9qr5+mm+ECqx;-rcm!v?-iqj>C_O^FliBEVM z)F-6C^05t+efEBV^FpHHEwYZ;BSlIPPSKPEJUXRDG61-3y61mK0byT`4Oc8gJceaY zHFV`PRQoM>r{CpRwD-yBN;dcmAbT1Y%WY0}TeELRc#x71Z754%R)Xqp1Tn3PmtK(W zEtAYv*38JxIutHJC(4elk^{!BjuAR;dJ9>*E^#lOv0Tf}da6EFn^y1ta@B$K?8pE> zq0qM-&tG{8{iRJq~eAsb+>TjI`dVAui++B~~zt7)?o>*DQt?pd!dYiQ5 zXuM{nd@lVTn=?MjfyOdmG|&> zB`b%A+8mM|-)5p|Hltf+ORNvF!jtduG=<()B{tg5#+uxln-Sqnp<~UCbsxwSuD&w9 z0d$F6eYEqTxygNrN?13~l?v)co2QQ1oq2XP+$;hND<-XO=PvF59>cnsoGW^+i0fsit4=QSPZuj^(oR)Y%i;rm`|%NjgoJYm7X0Q zHZVP#-?!OcVVDit-qzJY$oyiKFAuVyozv-b{~@YPD&-A~#>vW$XU@`D>fWm+lL=`| z1$YSVT(vO$kMXzl3?K#3N1-VnqQ5t=QArD~Dt{=rYhO*zu(GC2-p2}hGMsSk8zvrx zl}@G&HJmpC2l4?J{GUA9k5pK&hPA<{)GPE-=te#8z#S=Ft?`LWv$*z;7@*`LO{BI9 zua!#&X>bWgnPG#t`}`Oy=$X;^XPX-QG4yeoc3<-}?#EIa0JtY0>(Y75_QVThGU1pn zyd-$9An5tFZE>?!{5RYIoA=AH=ZZ>$e09ED679=V(Xfs!`n7a@B>SVoxL3bEDP zR@b_#9?}6Tzp7DesGlMkm~&>hM>3i$h`~Q&er*yg9i%Kd7?1eGWyX=U{lM?(NAfjz zf4<+p$>$gP0f1xU1z~w?c8BOab5~Z*zuD8|3f{nYm6w{?K_M&e>Of}1zq#m%&fUJf zPF}GB4(V~mDwYzk)Wz|o<;F^&QX6JLz3RlnS3jE;-ZdBPO=h==f@UtI7(@lg* zD9zYjlG2XSMGHu<(@j4g%S$q9Vsi{Jl<_HOg&3f?baOF#obd zFpgOUo6MywF(OD7R>br=wESL;AkjPJC;~Y=onw6DoMShQ}(}{-Cr&1 zdp@gqZY$*_d?4+&oSjrZImeN19BUgps-VT#bEdM~7QG%jQ4SlpmrbfH@t2$e{-K`xN4t2_G#qc#3Sn`fj zBdi%CRnX}{p-B5Brm7E5P!#14Zqp?(P~=qO*fJ(I05>B6Y!_4$PAkUi`>HU%k|zM% zC71^?wW!xfPBV-aE+}rJtcZgDOJ43IzS-9yvtVdJPZ2OGcfXx~(42;ivWs&w5Yer; zu30pz&kYGV7S}x{o&Mxb!FX6*EZ zSf)#4)R!L4oT>uLP4dd_o{}7z3_xG2vngdGH+Oa@7@U1_#~Oau$La*@u{_IjiYF__ z7Wo^%ri00Mj_m%o=K@Y-p|61P&KVY!^mK15rCoes0ijaGMe1l^>W^kMg(=Z6c?zTU zxWRVodL)dY#3`qi2uP{bnUncZ3^o0aiIOT|G6~qYcwnAub@IrAU-(~p&aehXZjLt7 z8LS7P#H3{#b{gA6z$#~^6tX9HtfpG-$R$ps;v0eoI=nls-O0`#B-5l+5T$R{%__p? zsCavII8_!RIi^4wWMpAr;W39j>jjkuT};lJyep(a%_4P7oD&WSA*2%x1$qJdHpKC0 z%@yg|j)aQ3Kv*onWs{+g%?gUBQ4CC}xcHo@2on_V&mmr|9Tii|xM*7k5w6JFA_USF z$&*#(q0FT2Kxc-tvN@u$c8lX|BGn3UVQ-2HaD=|Id|-+1K|sm*Bqzrh3O%H8b_t}fN^daR zM-~@F>PlNP$ZBh1UII*!wkr>akPlKSo{E=CBSaQU#0`gpvRxIv$fep^SPt?ORC1j4Iz28`7=ge)STZP3(|%xz#qQ`WVo>+DQ(0DUlrkw<|L&sS(1PBSOqc zVfvHk0-nrZI@O8cQD@`5x-^h4Y1jP#%8fZAW-Q=)`<&Xv!essx=6D!_uWI6Wu@YXZnzF0olw~jisPZRhF z6kEoy?vDB9$-?#T_RsG1Z?5~VFJ7#f|DIv5-9eTL= zpUq|KqYr(!sepQ}`%?pUji~MSrOdJMHwo_rO2Il**Gg$&co=ftOe0O_kf2`#m@wyu z_N)yX!0%+9%@%aN8kl-nOBm($xzMNFV#|fGgp#W>I*RLrpGT5Xq?N8Kn+HwKcHmI- zx9r~x5LmrS6#4D2zohk3CYX{BtZ|L-y&+q?$x7CF*kgpI#sMp~nOneg1*W72KLvhAWio%rOfn;{IOn2wyF;sleBhMCf z^|&%Y@~$P{ar)mzk!i{09tzPUT;}bQS3+8o*xq&%v&LP7?Fee}vHU+6PX@RVmCS?W zAYMO`MQT{~B++{LLiyU3_gpi(yF8zO4mvqB*{-v0gnU@+w>bjD06yQ3oo0B#IsEVk z+l{$*6Wf{#-`0#>o-a~bR?Kj@FxaO!mnc4vr_|jbkM8%YiBc0O`^0k zA3W1}eJn#ukq3%8@4*gC4cM6Fx`YLp#K&lRQZpuLh1!l`k5vi$Cj~+LuvcAYCqkgW4Qd^$VzOu~c>j}Ud zSU=9I#P9dbL}~@y$L;SMSTFG!ab=jE^IQn~Ml{{eRs0W`8Lp^X&HSh!f%_vQ2lKt)`Qu@CqNe3}lM6*rgu zhb+M$b@boP+f9m|*J^}or1R!ufZJ}t*22HrtAEz2JU1g*#g_@5HtLYok|k+ET?|_D zIquo(_1s5EuKK|`!QwjBRGH^0G&#yCFW4;AZjeCySenHFV{4#s{QbR6>?Vcc!Wh+4 ztTU_*H`zs*F_kscF0PlW&F7UsK}pbv&zI|JTIL2cd;Z4E%*6aWoqnG1d9BLDREKfXW{<9xD@=RKr)(kD~SiNo2=a~D06C1Cwn$& z8$BpS^ph(PfrHDoYk0s!_4Pj$z#{9{?vj9*DK3tmExe$$#@CVNoLo861u7D(^8QX> zp#A{rAgHe^twvP%zB!J(;J>R&pOy%M(}rVNOZ)NB1m?-{tc1t6dMjPRlQE8pT>_(D zzKo0@V^oWBw2=BH?UtTqO!-VPv$~%cTp`V=!>i|99{)PQvia+!0@$>= zWw&C~O2DX}xCtfgin6M|b@_1hwh8$q`S+&yWuB`%Nx^^lbV4U2xTs9Erollf`LPCW ztCn)Ix0W(eg`b1jETsj?0&z)MfM}@S51O=Pi&d8g`dh!iPt%g8iqXIA4Fwuyr;HGJ_oCK0#5;3{Be|gwu16QSqFKVbWdf? zHDQTgic&sOH7@3*+!1f>DzKT1qOfD-5XIKXG4sZHFbTc5-VT1=-; zlw;>eM9rf?bEnJ}?u_!QTiv0`Do;RqHN1I9Lgcmv^l@8m)ahho$Lk_?h&`@R{jG5< zJC=w~d+MKye$u@)LuNEup~6wbJbPBuAbVOATH%~dTTNX4Z+rSo)!2iWVvdGvj%fvY zJJu_L0ey6!I&Fd5&FGGBjFdVStPP^d;zWE z(*Jexj7c;ir$Uq|=d;kB+H^5kn?J}LSvtUt8RDxi8^n;buaFnV(}6RCZX|M@Jz`Y% zsB_1Q_p#gU!aD&|24)LrIW4zRw6Wrpf>upC{}CBIC^uiTDZK6}O|-?2lefnF`Cd*7 zq${`mWjU*?*Wub~^T~_SYiw2}vJ(X2YX5po>A4&#kk4>nMN?C++75QuLnh3jqes1Q zg*l{rO;gocc9>*k!tl7t#qYwByHM7?djmeqj8=R>Rf2}#NC1K)%P5+0*eekgnAGfU z9#`?3fqt#(kI4dX2+)Pn2^;~RwnHN+93e~EFzJLji45R?wB&#U&@5&?kRj1g-J#+U ze7bOgqKbf!-R`DIScK6FCEDd>Madkp;l4T)W}R^173yE?;R6eoi|dY3T$u!zHLCQ9xTb}A!S!O7d4^x=(>J%&3=1v(zm z1RI^=3VPW7PX_u@y(09UCbFV4UzPkE$|yBZXV@EPWhKyXW&MO;$2 zqul^J&pCeQVo5tumuoe>FEL^Gs^rz01UT(|Pbq*v5*djy0$RT}nIu0ZNd0sY05&{E zLCBQ-3)Q&TS0L3_2m9)|yr-EzfeS!v*kBNplI^t{A#f4H!`3@Sw-^ie8;G|d~OK% zQN3xOiUp7r{gBLWn_w=*uN2-?08s%m`FBqOM|9``LXtg2>ytDD*XK2>EiLY0@-Qj$ zFn{iS&IrsMZ40af<`kUT2AQS~CO_CLcvXfN9&^INqcqAMM-0gfs+nf>;n2U76eu^e zB#L|OSau~U^7!@uf2flJXsWq#^CSYQnji(1MIg=>ol?I;Vw z{87e#Bjuk-1PsK;Ki62O`U#InMV>MLy}$j{Qd#C2c#lL})I&d8md6AJ_6M3W`IQ_; z=kIEgK+va?3S^~{xi;qoha7>o2u`kEX}O*$t9f0H0hLQIN62`esn>UYZ^8_e8S=w? z!dT19f83^o8j_T01gh8dE$>({b9K)^z@=X}*wYLDY1YKpy`wE0JGUoxlxWIGS1Q$UM)(IIu+So-68WR9=&g20KR8MB{Tnxhm z04lf{GzWv#r$+SJuwUwj+QM(Omj;V51Vjgq6lr0mpNIag6n-uGL@I|u4tP1r@q475TRB$`(ZPwsuqZW{-&eB zcx8}Eq3zU~xqo|QOCt>S@uu+giWwEcj^yMuz}yfAs+e~JB6_=6Y8g#7{-mm6k$577 zYVd(KLy;z4?+K3ZAB!Un%*E{~3uFWG$b*Dp9jQKGNtBQ&Rwca4RLryR5di(CM$_$D z;=lkRQocuwx_DTQVhF(*Gm!$o><$qal9>30s0L|r@`>|C5~+vQdpm&<-x%g3I^iqLpN8NzMaz6?_v z0x>beCsti2t#N8Sc9Wj?=Ohr3$BCss=11vFdUY@-RS5;wq;x2zD{u>L_#D7kQBNWq z>;6qhN>(6v%>d2ioV0m>&F70&Bg}VHdG>xF~# zg1lAIa(Bww7%7#@gd^i)_W9c4!4uyF9iSNds4q>{HzQq@(%(4LQ_(sHyqu;o-&oHw zGsj`2*38B&#!+&-bQkq3!94BE#Bf&NOX0IyIqtnrOeQc2LjCm9-w?YisYWj=**d^!gsw z1T?jcdOw@vB3ex?EGDUe%Pp!E#~HWaafV*^z&<_PzV9cahm)U$%aCI!aWfX{b^m(dByq4E#B7hLmi>`U zQQ;b)K$%&@g9Z>?8(scW>4G{#>~5 zC8C(prOeh+St2UyUWQwdy1NwAEQSJWl5nX#CJ7s=_i9=Fd^M5FyOy}`e<7iT8)MtD zvf#&5=c`G3UN`6Zb9||(>XI4dfwW37B>5k^HmpGJ6|pL*r{b(YaDT?Zkh@Vyp_ZdrG_`2^E%0l*-BR4OgE1v_dKeu z+cIgr&W=gN+Kq@EiPDY#);yeSDc0&rJ1HcuHJ|qofm%$y&S1LvR7tH>SPuTaCyOss zPeClA<`hVJXo%7-t(c6bMCqxF1ku+dsK(<52S*8n-HX}^6fqCrzHd297K26H12{nY zoMlRq#6~EWa_wFk5fUlC%_4uN0!I=)0=9AFSB&dsYI;7(se1*19}>bV6NI+ z*0wi;Qi$6nUEj>4&7!dHPeO{1tYLA8IEWkI1xP*&q?nSF5{}`b<{h(aNUYr zrvk~DqqSeLAkbyV#G-QNbly>!HbdaVw_%(kHnU60>)=X8*Q<>()C>^&%*(vf>&n@+ z4d2Z%o_imYr`2C%6)g}v+jthABpw%|&g_@&_8J<`%?SssZT?$0`B@dD(pqsj-oW4bcwBO15|WNFYbe=SFqfmg6e8G8^cmSqIR=c2Chni!U-AbY8ky&r7- zPKyFc?HGQ<5p>6q8D^+fl;nZq86a~fO$2I zmbSJ6T~1wWery+%QI7>GTk^x@5~cZe$IwG{@qRbQ--p{B=QKq)EGa^*mwBVVnge;R ztF|{z1u9PaJxZOqEuDM6QGZSKFEcm?q2=O6kNSKa9X>9Oo;v^SQ?pSqy53N)lj3wK z!4rGbOcy7`J0D$2Nwd>-PGF4CEz9b#yN>Cwn%VwR)<&(;r@j3}V?Hg9qg%B*gXLo@ zEd4q$)?SS-^ewe#^c}q$bl##F1}|}cqqV9WOJqF#Ivgn;3AW5;hi4($TQ|9~n3pKK ztx8i~xv^3g$4bp}uKkt5t;!7vOFvW2M(s>9+(21gNkZ)zdhNFEixpOi@<2foqb~qN z9u5!hhhOYo2VGrkssdwg$h^StFAi-R{nk&K&aa_J!M`V$bl-8e|9vuT|G4Tj{s(r?5eiho9C@O&&#UT{$OY2-A+q8 zAK|2kF)wl>vnY#t|Jt#U&>>;ncbsq+6Kh4|8z`3|kt7cZhs!9GcLeUvH|qVmzj4*e z_WYdB{yuOaPp|UXk0=6U$fy)lLQ`u58N!TsW9Yty!mxzy=?dcmN05t5g3ub=@gGM~ zAwiWj455Vh`CCy%I(v#ggKS9{26M&(PPrt|;VPe%DjsMM#jPF)CD=U3UB9f=Kt~un z$9J*>)V!lkd)TSel5bpeSzW4GSKjW_ixcn+tLJ~3KX^8=&yK0m#9(%@%LknENy4oG z{K=JpP(G~eky$!taE0^ioZiLaeh8YY1RHK?ZX$A9v4X>S1=TW~;Ce~;4lQnNY>lS9 zs9$>#-qe4l+!VaNd;tuiy2E=s&7>}HoBw9&!BA`9jVs%^u`BPe*HTKt?-Wy7j^4}w zG;tRx*?W1hWV5lV#4z%drnc2TUd#&Miqr~EIYRG<50Jp72xhO9_8ew}$Q(ksvX2(d zpSDyv-b6#3WW#oEq`e*En64%(UN^TCtbLjaH?4-0dRmbwF&X*F3LG66`c}%CdKzot zEpE)o#ELPne&s_kzc*)$6+OH+BqbA|$DJnoA&)}a@j7{LJl7r@He`$lR5$~%=S~mZ z8B6wIe>J&sZ(Pfq;$<_h*AaNL&l^@9c%$|4WR*|5^1);9RKkcNJJd&(GkcuFniVZv zC;U5zpOT*zYnnLsSW1Wv<^vx)YIyURsDVvgbU7{$+W6);h^}SmLy3MUHt}iSH`4Ef z99r0yDQ2W5YsBz+Sby4%wEB1~9CKjLjuE^+_6meC(f)VP9J6!B33F4W1b|K*`}sO*8sQDf0q)Z)srhOhp!TsMBa?>WzlssbBbmyp8~8Fjc3A%?+_-bVE1Za? zC~3FE{;?woK~1>=a|22u7I<_N(m!=#z*9cn6U2--gR_or&9LzR`|)j*A5EiNV8LAo z7U@AB*b8`R)}+#qKwwtJ*vCL9x0-r2!j{2}*YND_S!?Ok4^+^ucW;QHqka(Fps<>- zNrsx&jjW|$AiF3AVG>)S(u%?L8VI2X!f}q{ww8fGz=a>-grEEYI8!M6xNvS!m{Y|_ zQei=2Hc7azuB=ll5KKe#xnaqv#FApx6PMJZEC5O%7ZFkH-Fb&OM1@7dH8|Q15c0GX zHG)y8{jVtFkVvS1&1;AeQ2HtHZPSG^;z=2D7f?JKBAO`ue+SJ)c#S2B)J38qg79Kz zd%PWA28G5|FB|mj+P$fUJUvqL=oZLSZ%D?}Zd~dnp!A+6TK4t+U zl_@-)EV^NX)k7OHz?Rq_$$gK-8goN!$KT4GLbZnl>a#u@?YH-!#pCK4Ucr}6RoXeUe>T_bu z4u+q)_b?lX*6z9ap9j?J~=N-9>?n@8pB2WHBelyxd^M@{Z zoM(qD;z}1zbv&2#T8%|r$Zj)Q&89Y-bww+DCq@@3)MtPiz<=6uN0uYoH|KusD)(AwWFxI> zeW?50IK2U-`8MNpWFvl{%5BX&I&E%rDGZbXLxD}Y0gS8?SJX!rX4K9+LklNXTc^2q zIKc{}eI!37+e1#*F2*(vHF}bSl=d*SRHP*pDG{83?mJ{az(ulXE#RnmI4!fM!CN-%K}n(-iJwn8vH@MF91q5@*N?(@~yhWjDeRT?0?i3;*{W zAOmw_4vZ2j$!J-pOK)_BDK$^QC9^QMRST_3+tRYqkrXFtivWzE=n;(EhdssewGzZ!Wvge-93K9@|c7o7+KWz6^9HFBo{B9{GKQQDq&wP7R_O` zoYXBWt6l^z)(aq>xmvF>X>!th(X+=1;NdcLUMu4$0~Y1GJbr+pdJ+{wt5rVqSx0jnE+ z8NHdEng)Gt3>nj!xW#uv&h(gmHPjf=!}+CGvHUDqGJAMw)OtQRLs!OVZjKlsx-`0z zdu#55+-a4Sq?6H(@fXy~!!LtI{hqX#BWqSTLcSCwJMPFp{t-s)sMEr+NK^YW+0w=I z+ZoY&ZMQ~|qjy{6AtSX8pRPqbRwO3ht~4+rUvAie@=H%c>O=M%>XUzo?tOA>86G=? z5ymhuLqJEAXxqQ{7tTdAKnmUFCzr_PsZ(A0MCy8tg$WKrC z6HRK-Dyhm7Oz!#vbn~b3UK+&3UCMRhPEa}?6=-p5yb_ZMSyEb9djFeS_YS+%VymhL zrl~i@A~)zLYT?U->vFE45PPdlcTx3xOO&oB^AdAR;W0V1L8@N)IXu;5nwjH-NV#zR z8?7{ey(3SMXS~M*tj7-S1pwR4RyvxbFScV$&f?|hF@;)ken*PN=f=A44iRJU_d$jKAl*tcZ%wHIoi9jxOby4S|#% zC88Q_{R#uJKe3N&rCFP@g!vd`i;TUFvavqwysomedu@&{+xNkbpNWfVQrlIBU*FqI z==15`NIqOx&Jb|KfgpY&X7;mUnwZwnrsshmiP+xUB!| zUvHO~7Zz^Nn>l?dA7i0Ro%%BXsnjXRMEn`$3E+xS&6rTn7GQvDl=Fw?X;g-!@;NN_ zAWCZ~v*sV1<4&4SUTVaaPhuT5NfTLk@6BGtbfyiK1h<9<^h#iKBKU(@fG2cX#M}en zTnvjo5RL%zDANJR%;-fT%?H^kKT`3S$~f3~tOuHgE7OWlM$sRjARHOc8V8##S^-Kw zW!tnS?0${?1!9HmNL@r;`ztuNS;e-OI>^X1#HEt@DRkLMgb_I%!4xq$b*}@bR};XC zjrhDhpW1Wjecstf=k01sC)Q@x4QTB!pM~m2VDIvEn3=c;B{(Asxxmxb=MLVO0Q3)? zMHq-&OIkNblY;(v>AAY!qa=aWLYhKokH7#%d-j_X>Jt#QWE$v0O$j>;Of%9V)`*y| zTE_9>*uTc?ga8?C)LOc0*bBp`XwPp45buo}5m2DAiP)8-m=H;?Qne)VVMq6Czh9M@flQ={Kp4dlutR{7-x5)LjX%ZQ-P2qhqJz9h)87wrzXI=~x}xws-7~ zZQJZP9p9Wg#`zcLscO_))kBS{wZ1tgUS${*f3GwkuQpgoH4W%L>%Geea2y5l*NPo$ zR~chU)+WK)i{nxc|JK-FZ(R0fRwi%CGZG{zm>^x$-rCI=Ut+0##FdBDFmk{w;#96( zJ(HBq7_WG07f8JpUyw9Qnf)?aaBQYDRNwL56aCh;zSD}aS96A(i5Bv`hGpf|s;4nE zV(g*RExV|Gf|MO>bAjM9*<*^G!PCd17juFJn<#uiky2Y8b_fg$H(;ob*K@oZjg~2y zL`m?WL!BpnT(RFPacOLuqk)7Wurh`YUj1}=wb~Bll>8pd04g&D-hBHAcY;LmxS2eh zyh~fE!BQwbk`L`#DKm*>RSOn}{ul`>z91Pq{kJy>QyHeJ7D~Q8GKE4XOsg)};(!)~ zs$fhEe2$hPCfbgj*4P-hss|L4+ed9J&BL$1RCY1Y#1Qa#SBm1;Bm~B15QvK!JWsja zc@-2hhbp>MHl^S8-Emr2%#!-P{7!Z4f|DM%Hy*QsQ^-(7YW+_&%cdb_ZaEFn;L&r` zz1q=9TUn7=Q|ZF#j^6|wRrQqPUMt>2lC(YH6NtJIWawU!*2$!oXa^~&54JhD%%s~w z@!tB`TKsGTZ`O~~AP`)0NRKOLndGGG$4SWuTA*WgD(y7iVbiLM7a+j4m2nj6(2P`J zjhiJ^5f{`a%4zWy5!9!#>3dC`8qe>(}= z7x}a5zA&ppzy0~|>9g9PFt*ZjgZZxEVxNamY^5lcp=^4^y%|oM-nk#WYpTJt_Dij4 zV$$4j?9}b^3d}YzbDzy(0M(Q!exk)daRSVMH+1zHEr)`~K5Tg%>V7}Jp2&3t{V;`jlS(bilzL9!9?Hc+#fea_ z+knjg-S7UI7jXT6?fABfQlUgh&8K5WG@qZP$7Kc*!uV2QdW$xk3D#c1G$5VI=6#26 zHX>2~{nU&;Dkl`2kOvHRke9TnBb1el3RMBGEvI~#eZwMzSdeRK7{8#E&MHKaZFE*l zSMdIUn0*&Lf7GAw4zUOE3z0nvxt4k$MGH-uD=AJt3f+zUU$m?aJcrv>QKGRTMbWL{ zJhsXQq3PhPt~72$ZuNvUWzX!Zclt;tj_PBScDlD(M&@n8vLfvh#Jf=jvLzN&3>IV# z1&s{bq@!7V)7l!)=x|J}Jf>ps>9!^#DN8#`{}g{c^NsNR)y6X6LmCOxR8~0kqo;qB zeJ0XkTi_^P7@JvK`-LjLQ_F%vb_1-cqKW!WP7*|GAKrw1PmW1xNs-M^Pp+w6S)suN zqXaEEY3bVg=dVpj#`u6wV!^T;0XlSGgP0um=3JDrtpxfTTvJeix))_ zfJ5H7Q#qdq!zlVWvu9DO=wfz)18iMdP^5{zoNYgl(rm-8bf3#DCfP`3>tD!ohNl znbPa;u9k}8q-NyH(de>%HJ#mnJ1q2dweEHnzq#l~c~8t-ESdD$MofF$GHk<0qi%&D zwe`v|4>RgoUj+YkGN`Abt$w4E1bGzmHJW$%?(VheW~_TzW>&q+s^n_3PRwL|gfOC5 za0_w8cD5m9L=d@+2csqJm-!g;=4w&d%90~{ye_6Cw<2b>C(+CUKA&ELhL{?9o(in4 z7-@14HLOuHG>-k?N&TpXL_<~l%B(d9g@ZwvsKckeO(^!abLbqlwMxY$+vXH{WRwa# zm}>On-;b<8F{OusR>y*D$;BCV`=P$NwqH33@{I$wc0gJj7C+0V-lk6L+|nvWCf`&> zg5?iu&GU=6vRuT9yAXFHWz8^ou{?ytq|^%N(c1LArMBF|J~4>AY)hV-t0Z$Z>%^_{0x^c8f zk9F#HWkthK#yCXIXiD~brq4Q)C2IoG>(QSopVjuRpO8IzJ9MGyft5B$fsMLuy7|t& zw9_C6b%puAvDEY@L#|wFy@aH+rPcUn(uLn`an!Oc?@<=B56=rOWgt4wA!L+QkM_Wk zVF#UDT|&V(Y7HflCcWrsw-H~d3~!i?Dm1%1e!VD8(wW}^)qz_SoL0I;5Lr^@)(Ck* zm@kDBD2rKw(y?ZkH@JqwfN(63Q-L?ZQdTWJsczW7%4%{^Ssf45jTw(j13+q_C2@X> z{OFGX!>OPK67l;OqwRB-=k}YL6{!e@s}OL>W^R9|0pQi-m*1s>QSuGS{=KRY_|P_j zj7gC;1O@z;v|Vi1`5@Kq&AEQT(k{#VM@zls7OutkXEoE-LdOWfrdyP~|FRs`&zksK z@7v21T@>1J2Zh_FMotIDSj>vI=fldvs6vO>sW`^z*w2T{QCw7(^q7K8(c{Lg_cxIh_kMs&$ z?&}FG(3B~dfjSZQ^0~7s_&rsIaF`%!^EA`b#j~rrRxBIVppf`#lIg8r;t0_}s8&-p z~DYe7(h>{sq;(&*GW)_$$tmV%Wzhz zWw%z@0pvXB0w`M~6E#d}J^#KpK+6a6WVJt}gU8T;udI#leM!bruL%6!*$s75mVXx6 z1S@nrxug5-2Y#4@<<2foxI{XKY0L*WqqFhr{QYtvUnp9Z@YotHSHZ*!6!j7b>j8Yv zU-r-Pp%J;by*&M^u>E%9T29B(JalGd$RmW%sblWGI2?|bSXChy>qG~0hsTPt?cx`_ z=cY)5oJXGQ-^X93?HSaU9sjLYR-87%i^AhvR*M{f2)6r!O4?Y|lln3kK!YyEW+gQ^x;JnJ#e|=pN^c1P_~HgURRl874Xuo*W_NF#pcOIbyBZz(mR)U zxlSMMwP^!mkPLfj7G*oj=jm~B-6c_TVn#m6SxwIDfV$kL51P{H#y?Szyl>Ep)mz%;&?r$k|?VA2#(I8GsSJ+vTWZ%TV((Um|eU|X`zY1 z1*rlms3MR`mH?lkx`-hAtqq?Fw{T%Zy=>O!lkZQViaSvXe?|Rh^$!GCb_?ut-y91g z-`{~yfhkE(aQFW=4MKfzOyA#9CO+np_pN!#{(Su8>H2&&tJOj-y=OtZTY?J4u7sN3 zo{NspTAwd=Tamq7`};9?`o8KR0Wq=~@|oH9If+zrobs(RjA5p6UxUhGn2~WJdCigi z5xzOga;m^2mQO7!D94b6f;#|t1_FVb$;x2b$*%hB7b2}p+XL?Tdf)x+=Ceet1uG#; zf)ax0;h-W$t`UtdcqF^of$fs?Jc$kBhC%#%q-nFzG#JSp#@Dy)_X}*3s#N<{lDt!D z%ASSvW~WY~$mJ$0p>0>_VDjKWqJ3-L=pi-4C%SmhvMlw{;duDx6ZQdK>9 zCJ?8pZ~H$xwRmzQMc&W-;Qu^S{PgV{-j>*6G~jct4DOekwO@5A}LVB!ESxy^8l0xIr+qs(>`#ZJO`HuF?9dqa7_WW8X z(90CEN=c96x9-ucp6z*Z@O*Q!_d2fO@O6va-k$8?P@$a4IKim=f=n`c;WsR-rxS3V zil)w8jUB>`Z z*>KKOL5FL*rjFRFTd7*6RkT+{8i3+<431xY?=iLJ4Bt70HgLq+M8bc&jTLc{RzWP` z@QBs#;eJPkUiN}J#IfjdIbLU_CS=tdBAGG;g+EW~4>A}`D~l)Vqb(rFumMIGs<4th zcN@X3;(uRmRsz2+LqYJ?5>%@V0?OkofhdTQEIz1x^~T4yI~sWB?w?wDGO0ldPv< z^?(x7Nj5VNfT~nZzzJ{MQKbNbSy)++=9s%`oBVg5U}xpk_dF4I4vh{cyIce63I}`E z_Ijberc-V%Xk7&tPJ2VrD4!DCf?oZOq47YABlT_On<$NaC_KXb5P*mYXTC}mFFV$_ zH&RvWZRNEZZ$DuPYXhSEM(6TYHuRdPG*l}fy7$q)<4 zF7jS>1Kb!bqE_GVrNnwn4lwKXM#9vQ*YaKhU3_lyv(1e^jD2{m)4WyGMIOwx@yf08 zwdrU1_pK(hnowL^gx6Qy#lhCbK)?;vVgC#l!t&_UPAN2}jy14JC(yV?%jEmZ0!a1w z-TArow2d8qV#TVmDY<`&2v74!CVAQ#^OGZrdqqwW7iamv=zN`lV_aoO?36x77?NAj zj~BWPX~b=gs>cK$8# zLa8%i(>qnzMh1i^?TIl2N${!2wMnn6wNL2d3>3vIeN8R1B%Y z`&_9qC-G;Qg)z#-+xh!~Pjx8fLb6X)MJnfjc52SODa7TnA>0#4S+RQjtjPk0_lWI2 zY$|hsXWgPLzBsG8*iDiDc}bDGuMrU>C@#k>ubTwyZoma6(*Qwtq zUllQQ&EexgTLnj{9@cA_I^d3@5e>;?SvgHKBHzHuoE8~xwmmyG5{Q|)%vw~OyetA) z`|6du^5oN9E;KAMG#6l;rTw#2%eI>D4J_5GReJ6g_3_M*0!8K71+GW1_3}5u4l=mv z-SuxNAyhY$RmW{SD2I}}acXCTtBhDSI@|9;k3t!%W{zsv^GaQtY-Jo4iF4*3Za;r%pH`FqLkZ~>Rtep`SQj+aQBDB(+ z%JgSwvm6wrrWnh3Au3a~2KJ}>oHltIN@nsT3>gVM7n)^KTCz1mNI4XaA(gC$2rB~G z6SHvi)y&Gn696CV_(fHkS4I8FWxD{&>#Y7dWiMD}JWCJe@f3_M);HK4A28hl)p6q8 z4vYsDFm2kCa1qPpSnAz#+K+ybgrMjb&%J>)=OGLkOLrwFxsr}&SKdIkD(03TJNXvh z#jabpf>nE~7u{ln0}-=bm&tFH@5f??sZ(J%(qW&O zzt!H#S{B<(Xy5eofVW80oE&*)geY5q6=?6_NM+UsWM_Iz?qEGGgHd<7;Aw)+F>_)~ z5=dNu;zsG{j{50Zqi7X(D4T=sS#3`%rbFwT>2Z217qXv_w7huM;Ohvydm)50-={Fl zCs(&S4M%KqrOLkg(Tj~^NxQDFYFXB{sqGV)y^w95i7kRkJlNa0S<6CobjQx@#DL9H zawjP7LVB<)`>JAa$S7+L1^Hx%-4^2b!~U&tP6xlLUzVx?3n+Y} z>ib6(_b$%`4YkP8R1bt*AI_tTDG?UUOnab?UXDS{@)! zPp68-oL$=t;Zd@X{TC?>+sqJ!F(`Y-pxMh-%RV%lJfpf^=||F&)kQ4fM3r!!_+YsO z|KNA3sTQW&HIH1>DeBarwPg@`Xk9?YYQrm}ya(}GrUw4;aSE{Frlr=1gmDVL&>kC3 zB$@uRpob%Z&H}96@{F}%EY@L4(ot$T>b<2yhA8RRIxGeU-xOw+(09*#yC~KRH9hxO zH^EVu)g!aE;joPl!Siko=HiWpo<-=i#4x!BV+QwZeLa=;_gYZXQUQ!wfyX&nR$`A_ zS9<#D`yoppIra9#S*-w{t2`Vek45hy-jMFg zvuCKbW5wz&mIvSE!3N3@VnYBrovDt1s&mNO?&8&5q*%@8i34U>J zAbjnZLJU0BW|1To(5<8x#_q*}&0M+&b;SuZa$Zcg8X#cG=pRrn*d4n(gH^{!iwfCjSA^0jU1Ys=%lHs-1HGwr{tvi%Gl79niDSes2E@jvR7(|M6)TE4^8 z>R=LnU-b%`Cr*HBiVSqRRXw~-nhvoAW`%cBsFJ0rz}bZrFKiWa1M``B3nD(3CDQne z)SMmde&DlvZm*$F0^z2-YMqBGSxbQO+L~g4fIV*y6>7;w;d6>$npZ#r3%vVg!!XD` zzsGkidvjxDa+!a1%YI)V-C8O*_G)95S<<}u#%a72OK88iMFO>2O$6z2gwo34h#Zu$Iw#@4Et)~YLx#j1ZeDk|k5 zW*t*Kt=Q(3-^J6R5t+K`~GL+xuu#02Oam2&Na+6peQH% z9rTcnj{z^+{Li&hxK91~;q{?;Di80=^5#e64_g(D_36KEmu9q7Iw6-#*RstIZV-C2 z41%@JEM^C9`@{r}NF1Ypg1Ym-T_gw5&CE?@3O^Ea7;tGdgB$+4SgQS3Y_f_ZrLII>Jtvs14LE>+5+niod6oIq~#!o z<_ndwSKniUZs-=y$bSKk&3><4Wq0_At@K%Uk|IEz=3SGkmxt)bx9>QYPnTvxk0S{A zzPyzVW`M6QY{Vi56TF~id)AEQq$ur`yn~~G|D?r?4fjfd+w43A>^lBpOWL$m;JxfF z4yUF{1Lq2l81U%r0tqCyoU>I^87uu7VjU;;m-KTp0TM~K7Ek!jxX{((b=2qF1>7O; z9({1B*nH>aw6b=q*uZDElb`4P>T=d&c*;A(d;WPKb6EnLsy5DvqtoYZ0A;uoTao(# z=Y^@NLCu0BD)3rF67C$Ip8#R-DRz*Tv0^lDo{zSgf4=R z$iJ@{2YG#rl-k!YurtP0_D7iTe+M%3F$ZzXz_ZFT3G$Gd+CfWeB`Q@6Utoo}{05}q zNT&Qv#O=%MggR*?94OVe(NRA^u7Hf4Zl{bzjf@{vz(0}IvhSs*F{M0GS~9JtRI<(e zx3N~Pn;mSI2_zoR2GsNg8q3L$T~b-(sFy&l#Hv?RA`LmsgI`PQJA*!0j$pTsu>?oN1DiQ(|GREGj8kinQGvEA|; zYX$xb1C=x8l3xen`ZE{IO zYn5E=Mc3#Vkw|9?)hQ83u9!X}blQF?$Do~8Zi|oH)vl-p8R!k<1}8gM-Ql#x24YcY zG*IW#XIso+I>?4Tc>ZjVR93ZRxN3R4HVPA?2b(ayAA-#H&G5_3ukS2Cnch0 zFr!vCo`xG0>Aq=14>gXO67({Sa1qI63X3cEcDR$?HLH_;g4g;M{oa+-{mwibEDG+e zR=TRb@~%LBvE`gTPP-|B{;`_5T-(F#{rp&;3-sZRjx zW4k`w(DVGxj8bUDW+3_lnQAU~e3dN&_OvCu$C?*@!-^^UnRT0Z()@!jYx>QS4{p$}KJzT&D789-l37-{p#-n=PrUtuyx; zTdW)Ou--w8-9pT;LwAUz)9}s;GnYGJEMc(8|EB*vhkpjKeM-zLZz`zVJcMy3!}}{Y zT<(0agmL@+xJ1M5+8u(Be$?W^o;Ri#&}161=2x!m*FMZ~{feG<>9B*w2ZQza^x~}C za9FdhMbHp6>x?_<{NAx|TcUhJ#v!)#u2-r35JasSs2o;g zgwHWV4An*d9;B1%cDzIGAbi1+MB-52#L^D}I?ibAY8IF( z_~coKmy)(ciw5a;R!qwm6GUuuw#bW@eALuAlg9F&)*3SJ&Gk2m^Ia&Uy=bohRyjJS zLT&3lF8;PA+IHcvMyCBdLZY6I|;7Irvt|ri_pc-&1pESGfGly{g`2j8g%(b_zV}6 z6Hk60)3AGGDt~B|LoahPp`x@_(=mq5u&1Y_y0*msLfQOg7jXG-@i)Y!-`eHy-g5N5 z*U<#NrJJJ+gN|RpdQ7Mwxr!Yqi%%TWUmeYCD#6LPEiq`{tcqFG)- z2ypA@h!a~YDG9(9DQpn9kqr@oF%=>WyZEc*aph{}cmdXC?|G&88pw&|zA{)W9&v1_ zCa%gFMWi~1gXFBsDXcpa!&)DHd5HeD&SEL{@uG8zk;%Upt$V@2uAwp>GX=OUhQFTV zgt^^(M5sYN47L5q)R7r3ZuEK9-0rYA2(IkLy;z8HGT(EeCI1``?G9kRZr+^U;0B!Y z9DlxOKPTGpY0f2U@^+;BE6U)@iiZh+QmvYpX*?4w+yN;CEPIHdM`F6g5wTU&R5oII zwul+slkOVZvd6H{po_61kfm8<((c?j#pZovIPWIQ?;l3Y zz0)gvgEXDyG-?|~`>G?10O0CWDtRp^24Q?)1$2Fx34|(}al@Yyny~z=>PH30iNi_a zuxmN!)nbj{DYndD1s1_{F=3lB%0wXnV&J_BWy^G3h@EqPK5c#Y{Yd>buk~I~f0)eG zTu9r@;AA#+M3N*Ol{=NYd&CTBx?tMxv-qWg>T#E?q8~U{CUySw%6*ky4sX?S1knd( z-sXPV*!gqubaC;nNhOvxQs(~Fm%o&2MTCC5Dh8R%At&`k@QLM{7KX&0tIhHk%o%A{(FEh}q^Pq?3gA~2fPY5#y*(^a`1hlJL|WgR zY``H|QoLee^lSeLKTZlVVInlgv7OQD9j9zp9`Ufv1$T>gXl#X!Eoh}^Kpko>k^7Ee zp$Q1F7yl#K&}D3e%UHBD^1x}xs~>MMjt?m*kxaHyGdr2@5NIm^8gp(ENw<0dz;tav zp0nUWp0)+{@#^i}yjheR-Gr^HPX$Ln+D!ip60Do;C;AiEshu0jU1u*T5cIR|14*F| z4|X0C{xE>H!I3&?#9}PC+E;;foG?a9q&R|@LA}KgL)~0Hmw+aD__Ej8k1j@kQIs0%!g>qHrO`UoSgiV1q%LUpjTU}W^RC-kVgX3I{RmJo6Sm+P#XP;(qh)V z!eq-#T4oQ!?2k|aJNtNZFf@^bX4mGQWz~SAW^E}inIR-m>Zj5t7H#`WXQ;ND6SEJd zP|5T>`YqT$mbrz8ACOcK??4IEBNHw<&mXscI@)E=|E0Z`(N;d?s8{&M}D0{A;CpI3p_1_m^O6gvK1S z=-XXl^>Vb(99@dfimIucYAg)q1NU?l2mRbX>3G=LaNY=6LC)5@QF>hYgZnFjqyUP6 z_L2+oGuIh-bq{9WNV8gGYss*I{#gUER|!^AO9b6w0&|4^1@P{mr+L|b2%a(xd2O7KwLt)4{)Q@m1eLkd(cdiIT>Mzac8SQx=7WY~SZc|71^?=eQn!Ot_Vj{4xAdg#GW%k|pZ>)CVgDizO?> zcnyQ**>X*6Y*}0E1?KjWPrm54kJfkUOoRj4x!LqcikCvsbsYv5ui{sc0)F7#%LAtb zqkoUuN+3bVl@Gc+c4El2iH0}Aa-2BAbjYV%|LMk4e?4lAW(2x+EZG7-olGQz_n!u|7Wak;pjl4Z{3 zeD*_C_^#>;uFU%#mFgD35x+tj_AscL+g<(E&h=_;BPPR?YzM3qU7S?Y)SC~lWd;V*#mg{GoH&u^|)5DYkbKcH5*x8 z)p$O?fNhOmkSu3eepx-ZnQNTaC4M2_{)gG%vrBc@yl_H}Su9+i3KqJ=;b9cGX(-~5 z1c6UH>cqaoLrMtdED@fY28 z=ID3!U%wBDL)|puoJ8JN=%3L@(?~VF{_}U7Y3T2F_x&G_?!5dOM;KMKSa8I+s8Ef` zoNwHBeUyHg?#d$&nNNzML>RTi+q}*^{wQpYk;ikS=l-Xxo^X_XuF0+zfFkEAT zD}Ir&$CJ~LZ;Eel$&n!r&+GCQEs89!HzsUf{QELIFTYwL{?h{Ij5Czwb%FE=hZbc) zIBL7J@mRW&=u`4apGuFXfa+@nJ1d`aS{EfU{myb!UvZRkT=J?`w7U0(pxXaAX@DLy zD^EqamTdn~ za{ha(>%ruGJn3L{nEiC8G6d9&F+p(Z=dicTGn&=t6W^SQLmlo5GlTBH6EQ<~IM2@v zL-IZiGh7#JIR{qIA253a2!P84D1rArL@agdmwk|w9Mdb1$jzY1Ey@_$t?)IU);z~~ z4JT?L_BJL#Px=3~j2|yDHTZk46L|9%a8mZ@{&?EJxLWZ-E|UFM0QT-bVrK)Eqjjbf=k z$0D@be>@=;W$_tsGdjnmdoMi^YY!G6J4ms0M*!yhw6PdhU7qjfZuZ70?Y=jeTLNh|^LK#2oq3CC_<@=ZNQ* zS7li{PaOxlq31^)_x;eJp2I1P(^w>~h+kIYZ?#@UfJNx@3zl3#PEimPK^6k@; z_wTBkdWQrW(5=I=)7d%XapAZ@l7RFAJdW10U(=ZJ=@iC{4>o`tABA57S?4&q# zoX{PTsck!DKK3w=A~&RN63|4%Q6OAQV-j;0r-FK(FMO6_hH1hHPki4CaKwBOdX68q zI}`tj(=OpPdGEhRJaU(KWRyh$j*^z$8p~ z;^3HJaMQ$r>rz1kVS@ljgfpy!_{t_QqJ%*u8awrpLB!(A}-3Q#3}1eZ+XpOU0xa#q;^C!2y)X zrhNysz24Q*mAbTtaL(k@QlgrE;K^dySy4#QvMCzRFbB;G&Vi zX6P-R&v{v)1+FUDu2emDDl{*OPs@dEmq)vBe=)~3c*?3_>bvr5_FdJ?-UL;Jyslb9 zS%vWY2H#fF@5Ca88mjfNiR$>CvihR`_kaE`%HcRQt~OIC(N+siGdxFBj^&is%QCM} zUZAqLkxkxQ@w_D$y2A1`b|0UgRAyzH_aZLq2K)GWB%^&?fZk% zL-pWiuz6NW6E%H$ZEg)(d94{)J)qBBaoriPX=(yD>=x8ZN5|(U{jW}X-%?M0b9(X} zTDjt8y{SRsTD|s{KOCMO%1&9Nelxn}>_^ng2pt^1gO}BWtawe{l#5x8NFAx)oP0Qb zhfYohBt1Gq#~oPHDRlnHRlsl&vNO@&`@zj->g?g zpJ+K|oX(oQMp0J}{p-om@yJ6TU#Pw41*+l1-L1{{CC#f@#w0=O-egqv-+T7F)ie1( zkA~y4-khMLbm(yR{+k{T>V{OS==kujAV(h_zkB^L|IKgE`-9_eKY)0nbzpR+*6P{e z+YhHl=YIp~<>>hEbQ3XL#4L2M>(U?<5qIK*xh!_6@1_Y)(Qnad+LcEiLa zf#;@7U=Ig^iZ7~?+;yC<)>ZDmW6J$e?mK&%&@u3Q<_IUDei}Ivp(1`-fI2J+5 zh3_+$1>AE}4*DJOnBy}X_@3v+PMmyEb>=QQ-mT}DR!23RI|-^(p{5rbszPxZJHmAn zo`xPtVirV!po}JN)}Z~ zIHZT?Gg8O%;mJ2|Pu?AFPwDL`y*;HLc}knLwE1B@zUd`VLaF0NVH$=Q2NA=G;|dx^ zDG$@s7eU|zlm#C3LcwA$4TwmRz`+p?!q|7&lcEBH*t%aM5MZ3gAFBKJ)M?$^K9bHC zpwCHu$@Vw-h-A=V0 z-l~HZtIpsR`P%svZ@jR<$V_orf|VUQ)b9!{78$e$Uy=%_v?z9>Ev8ej{MK!w)9N;- zs4lb1OI}t=*U#z-sm*J&l^wVXYPM{yzRD_4vO&jRl-V^dZzV(kg9IC*v5;#={ATa2 zY=+7mQ%T-f18MWtD7DY4CNiq*t7Q{3BrxU$5p;iL)C74vV$;G)#;+X;^j`&U;%{?s8xGUbY^$VI*m2e>=)ZlHg}tbM(zz8mPhl-#e=AQa#D42n#RT{VoN!+cPN`Tt*Z@L zrc-p1&u@|Tpg_1;q#XurzlAWZmlA5^KV?;2piaQFB?En z&KLl17E|BgylyP37>7QOxW_$*Ge2-r*9#I#;?Q$Q8c@%TW8u*t#GFUM2}9y}iAVf^Iy4qB z51vb%H`IEp20uc!hbiqIjUtW-;h|4Biv@FW7!&S9B97xIVR4+eu}?WpgCzBd7vV5< zVvoBa4gxOL+AotJj#HX=38yY`qJ+Ax6XG=W!q9h8;YZv_n45%zfP-5|d=e)yjkp*1 zjC*17L`u7%)lg4ga{vw%_x{P(IrJujvu>cXZ%@1JY4`|=)xfM`QK$0i<4H@GtKh+FvrmsT4x3Y;BH#slW%?VO}eB!rz zR{Xcr!evl+wPx2Ya;kqJk(x_o5 zupRG07w9dW^H+>7>MK-X!Ry<-mI!Z6cNHz9uj)dA3J`83A3^B1=yF~VJlFp3yPx>& z#b-QUa=H2K?IZAp=n}&0jC)NJpZKkz?mim%88-0-Ns7wT;ku}5fX{7pekud;uMaIiLEje^)b#gA7l!qKJ)0(C?Y7b~HxevWBZXl$h9k`0v zl0<_DiwU~9%IFo)L$TeWf0dL`v28dQkyBsMg|5-n!!e6?Uzy zSb4bDMOi7E36SYR2|oL%01<1a=|4Eh7)PPKi5{KA(ljIM55ov<%1q@5;Z>!;NYhN? z`NMx&a9VTL@fQNoFRL`CY4Yq;))eBp9gO;_ff}`cl59?U6*W)FUfyKj3j{g%ie-(m zdVu+%n_@X<2GumnNnwb<@Nyl`(8{&ZX*g>NxHm45GxDggy^UUJcvJOA;mL znIwvgbjZjOP9UI@0$t_2R-dxPf?G$Rn%L3VZ_so#|IkYFJtL0WaJOvls<6okk5z>h z+AFlHCFni5e1M1*r$x?8R27~}NLFMLUEdUoRYJn1K3-iXt?pC3{mXv7$%fNvG^8lz z9OsR*Y+Ww-N?>=5F5G-U89FWoeI3q`!H~zj%9goeK?(48%+*&}jY>|7l6CFWux2(` z3Y}%3R+5slIYZcROw*!X7_eMAb_a{O^rERapP>WUXW+7rFW{npKvFQ9Uh$GQjjA02 zRvEe}i^c>Z*IHJ$>jbIzO@#AXwQtP27WvuGi?U;Vw`pkU-hGK|w^jM{{MqXAWO!Gd zl*8){KdM`DYK0MAhJBr&Mgr>?hqZ6H)h#_>_o2=LYa9kv6H)gGlxEB0eWX|Il{>oE zRZb8c^p0-cI}7r-ZsqWE6HQRRsZeZ;(o%yW71DKRX+q zN&D^2@UmLBFX-cOppo_aHr%Va_xHxp6D{)D3f=w&VtO@EGM^U4aod`d)>|1{8fZr( z>+b$>m4O?^ME=_mf#JfcJ>@E^t*vCZ8pb$wNHn26Zw}5n!uQ}g82YRg_6PTO#jGe9 z`YrPI(7))Xg^=M z`+8b5kT(pIcG;WGMt9TAaA_Nx?u%M)8aC+N8SKDzhtM0F&E=(4&nq~gyC??FcJ8h{ z2YQFi+k>;i;r8~IKO7zpItZI}tJ0nK9_jT;{T#kO)3d$)NYmS8d+Eb592^IB|Nr~W zZXdE=J*gW^=vr#;p=K*TIem9{ioX7v{*2i zlk*Gd@VE~fsnwPYe(Le!#}_X@zA&jO6|Jc39+X~CURAZet{$}kuQxCE`f^OKeeIq+ zK|}J5+JSy9hlda|m${6Jh@~t}I8F%lag@+FNh9X_0ZqNo4P6>z;-%P&s24EoqzOrw z&%q;!Rt;X^S^)@un@_w8fjYc+(bd+Tu-HylIO!{i5-vCyUXgUczYLa!6Eh|Bp7b^7i;WsCMkARQy@!8?&xd|PX zu29tsJdYJFQuX5`8n;8KC(Li9C^nHzLFVeLf~>XkTe;OJ4?u{{MZ2emXXmfJE%D;& zPw!vRvdCXu!XK}0it-aL_x2l)FYv@&;H)$e)~H%87ITP*-c`@4w-3HQl6iW^&xXDI z#se3EeNk3Vj2o@=6KkK<@RIU`YiXo>$_!>>#B|*xIIEeg=_+}d?5~L+(Nk1O_p+j= zoFROPA#-u#Brf+%@W2~!64ySpD#=?|U3`pPv@NO;3TEmJhH=S_>?I64F)Z?uyt9$^{@__Yl@)TeXS ztj1r{rEK1t$iORE zf2gRhT5gbj$dwWuWl)!KCpAm(em_%fCUEE!wOH%#lT$T`bFM*ME0=Jsz;q>1hO=T&F9Osnl z!=^`*1yljc>pgV6tZK8H%KR91QjG@xQuS@-w~ZHZLn&Z&33AdaPCubVG0*5NlEyKU z%|m~-Y0ld2+mmdZ^fPp<5>+ni!sHc^TZoLBF+qsZEnISZ#&p1q{7XA?>psCg!+3t% zsuniOnV>+>^m??qQya4u$r{BB-haLJ-2rnA-@3nUH8Rfe!F+B%`u61D{o&c$!`+ci zcGuu!Y#b`vXww5dO@HLKulgsjNp;#i&aET4Ik~h4z15zzD_Y0zveM`FCMR&GJrfks zO}lD>!8&&uF=I1;)`s2MH#Fqi><1Hj7q|;u9pfJRi>qd3^iH!??;$ZT=`>lxK3{ZG zgf*Z=yQ7Uq*7o6jNv=*!N95S7vGns%q)RblZ5%6#q`?#^SuBJjJTv-6|lx95sJwzPAfJ<~#qkBGQ^ZOK2q-`v|1m(zwG*XU{iRIY2dg} z=a119TAf>K*gcqjplU0fpw&N=eyyZLnbO20F(GpMwpHj7tDw~@oJ$k|l8JQ8{N)Pb zO;Fjhx7dkhHl2dWCZx7J2JViwTs3`<7ak`Y>=hGJa7u|Z<-PNX{rTkm!THfc9c;OW z-Oy)g$QX$O9=Objc|xdgF-t_`!DWtdB1jxX0rO}QdE8B-01Hfo_skBqwq4+HzP2{1 zv&vhv|NBNRxJeKtK4!#8L>dT&X~NhXIYaPg52;zE46SViF6N`ymcE z$1W@@{IpKGHc_9#Uw1wBcsJ~LC*pWdPv23L@h+dzHg*C2rtzHc|t|(CGxnbajEKXcZgv%0NzA%V?sQSM3{O4hd3gRPtw@+pVYaU=Q54<^LbSF3NWDuXQD>vh4dBv;ijI_ zInJ(IKja^7YI8z$ThQ)vEx$dNXSbe)Uw}LJ{pRfnoVAAyH2GJ5C`i?51TNTZV8-Cu zSR;>OgZnh79NMk+=&~$%USBLLUOrV@i!#e;w!m}QV9&o@Gf&5<-Q?Mx;u`?dY#(>! zV&1^0KNJLT1-7JIC7PE0?8>XR-8`oahib2PgHW{I@<2bBvbLrcIK|r@_&SemmP^cI zr23b{V0HlkRsf2X;I?%qSDXAuYGUQ0Z?gS@TXdEK5HF9{CXcSlro8Hi>z`+P^0)^8 z7moXCkRcTS9ND6xj$Rh3SQq1SekqfNOTfltG*+E@wOqhI#*Kbn+)U^EGoQ=G46n~L zgUkA2S)F~hvLwI9w=&nke)BZi9WI|ell)cAQ$}?^oAz`TSzSkco)I~j^IP}dMaC&CiDrAy zslAot1R=#{x>^LKMFeC7iJf>^*Q!UaMnY1cv4*HB`E`LPWOrC#`UzihJ6OfSAAmY} zfey~jA=f%CD_){itI(oY zEa$kk^Z1^&K;q|W2KmDcJ`F6{rg2{(Ft;%vmeES4WHz|DUN0(~rS+aSYJyqlCZ+^d z5NBq2?d`W=9Kd3w49i2fnr2l~)DC`@l`KCuzXetYl?p8vW}Up2)!z8jk`TKAEi$!- z83;^9bp_cwE=(ui$UG@ZbFudxIZ!L2X`ZCaoF&HeBtwfQy9=KH^WRb5y6 zzkS7PI}g|7s@!(&?y;o)(AaMb5iL{f1kq*$;+U#F0Fapy38< z(lIP*IYS(a-jCod0vPRUHM1rgG^R4f1Jc>>D?Aqvje`-(gy3+Db%Q@7Kqi~9j5;!o z3i5jwLPR6MwH=lx;8c*7nN21W<&G6>a%$sv<~b z!tC7}*hvv?IAiRn%v8J*XK1oLyc4eam8bd1Z4EFv{`apAS#f)>O;937yz7i-ll5)WKKZ6tXW& zf)KPuJZIConDU%$7&4>R^zNOZE(?4sYp?!L6>UPOo&Wf+o&9~dG>E7f4Tb3#w#S}W zV__b9eB9VEH#8cXeEXNX^JK-Avmv2v2gpzoH}GaFHL8e(Ev7v=cd+E~@qYnm5r z-Q>=f?T5jn)H*&i;+Yg>$HS%iz8sbx0;gjR4x{uPyE}At$Oj)`T#U6Mi+1;2D0)n8 zxmI*pvAHqE%Uy4Z&;1+=aBHfN!;7=GC*L1loF4w^!_n#C zyZv?$nv)sYRp}b!v8Ob)oj!OwV3GYdsB1pf(o%2VS4Xs|8f6`5XNTV(oWgeBxCM}G zKDXUUn%!5*Gp4BBigWqZ+S9mcb61tl(c-WyD5OPlWf28cMb1&9ZG#lCr%rQvh4afM zZN|vL7{9)|1sO<;HU{jPts23{Xx3?fPHsDkd8+XYidCZgFS+E6w-=7GLfE^Z;(|I5&+u zI5lJMKG>#(y2~VeH%;1Sq=9r}tF75<>P`vWvbJjImi0)jTZ_E*i>*{N=?OxcY%sc3 zaWj^Q;io-R)~nM=b@{ldb*oVV@Wg3TLE3Bg^+=Jdc2BTgGV10P2xUeBm~||SeVEtU zB`w8p|IJ|QYo9Z!qJ0GGYZFUl+_PRW`q};)^Q(2!l3VR2yVKSFWw)!9wvI3$FHMxv zWOgl&89 zr}fafbZny6;JEifd;VHalBSXIyqS$oCp#vmZDy`@3E66J)}vjklgX(1nBbek<8yR! zyctZQT<;~|(TRhwqaix~Z_$E@(V(nf`kBr-9&OjE508${KIS{8U4sWK>BivJNZPyL zI}8wbW#RODD@|P8lXtgo=2~guvh7&+wP7^?skL|QRDHXZtgzZOTq%2%M9_Nsm6B|l zG+NrUgjLbncJT1ZYwNQXpuQ64o}urxnP^{|kEAF9RmU4^k+ctu*@jwM&t#SLX123Y zK$ypUhf?NHH^naJzUO0?V<)5@;R(mgh5IS-h$EPnrhyPnkff={62W8d*(xp=sy;9Z z?5S2@VE*42aNkPO5GTzN$j|xBWRE&QR)%l zI}Y3<6bGRQV+hPlX_~AHLGw9w9T5@16UXIoz*8r3Xc`BpX#5t9|MF=3L&DP@4$Ak?i-#dk`hO3?<!PZs)q>MZWE6?4tm-z5pf8T<6i`-VUR5khD(ghn0-cDjSSrzU;Q;da?@PhttPjMkq2d)P|#Asa(cWf6hsnBhYDG>Uv%Ui zuWI?8tap5kYkI|%(5hF&B`%rVTnm8|Y}Bhwq6(PuO#=z~%i>X$H#Vz$F{1ujpRluf zSRZO>Za-Txq{?1eWic#ZRZHW4`fzyqw>t|icT-e|vErcXikOZUFx{+JbAJ+6lr9}S z*6-rrfk7STCn;dMzF_C$3YXqdwDj=>OCM0Iw5h5%KF4eQSXLFw+rTVM-Iygf^xcSx zGzk+Tyokg;4sbx-IKe?0MGo^hVF8c*#7zS)bzR>NT$d0m_;Yy-41|COx(*DsrU#{o z^<$Dck%*Hd4Sb(7hY}Wt4&zkNz;}elg^_C$hs2 zNOzw^uy-V9U3D4`55oQ#XdQope68C10Vi@%lmwWK-Ij=U;v&^6@rD2tm)B^98QFC-q;LI7ur zc~&EMUTTQAMju}&txtWdQYzxd7c$*xTN9R}?0PZh*F3MWwv%VN94^Q7%2>;x)TcD* zsW5viG52ygZ*k8HJt)Snan34}qgs>4(*Bhx5UXLEm$fpyvXMs3+%Z{Wnv~44VcqS9u;gJRI?4t+9jeg&t}!f z7cJpWq}@{%Lalf`g+4OfxN4@-T%{NX*J^iFXsMME6R$pI1q z&{JdfYuMGZPA&wKms1hTk{Ap}HZSYM32Ta|c8$@U7F$E{4E;ryIt4cDlv7n$7Z6$! zS)&e+@~bkF9J7p6 z$ycN^&ZrRryrV7irJPq$K#G^jE`_Tn2|Tt8h9=h@HjD|UKaf->C6Q!pXUXiok}}c} zCaW%FV{?vn7iF=)mol4Hn{iy?g=*K843(Mm(R(JhxFU#Q4((ZJEtF+0htu7r))dG! z`;-9^E7+KBJCl?b7G|nI!m2Jxe5st;a#So}TfuW(4_bB=_AE>)4wV2hm6WvW{)Tv2 zDm#ptP)M>PlVaNW!YT`zZHJ@fm5E9j^y7SA?JYX9w#=}k(@v?>TySz$3L`cYs1)m5 z6}oz|9HaV@HHcoyTUE4xG>Nf*>GcYb?s_U|r(yXVR(4-|k%o`WkiYIJ`7{-GFDv=b z-~VB*+%EWq$mX?nTHXvG)IIAqt}hw~;_lVPH`nBm&0NU8CSrj z2b~1(TKOWgzOp5UGaIN>>T=KO++6PrbnJnZx}Cahn=)439_^D7{7bfhC&vnmx%o_o z5!dv%_uyEsdyn)~Kc!nyZ0Dbr8eBj3wAr;fUP33wU4o%Ewl3WF=m9?`(n}Y8a^B17 z+|{KAZ+Eju4-=)ETnz{Bk{9>vSFZMYYCVkg=R&f*Frc3Ahp`hg z7CH_Vp2s6Mav-Kkh{R(eh(zdf;d+tl;xzJE8U#_`#4e4-FxW4HWcSqE2jbYhgLb?c z*Wdr4{@n=Erkv0?VO~HJ;&bkB8oMNjVlTo3dm^A=;`)%{nfksL;2?1mLER|!QlANt zK3nOt9z7q6Xy1>p4@9>a4!G;4DRUzd3z1^xyRn}LEc`TJ)DMIc3XB~d@+5UVP8^pd z9`n=KORz82q1!>sf&@D(W-Q@6je|)fv9HY$ro9LOBp2@1y!~CDys`HRmx`Z59hPor%Hzt9eJ)q*HDlm{$tunpL{&9~$CXp7 z+&97OfNK+Fc5_wCIf6)2vYg`*EXO%oEXxI?i3dXgUXcUZ0_>;wGA|&nIoegmBmiSI zS)|pf!8tV;3ug_WrBW<2sIP1goa_N6H5YfJ4=i+6?tjyHAqyFpl5tq~K(Q4K(4oC`!tijPUJLX#&FvTISi0OYqlc{HJ}?XLf+DRaH;RZD^%cWzvKTG*vX@ zO$kD)h0&NoI;KVS*%|sbFv%HRPA1e>wz=k7Yr$*2r7RiJgif zpCBoIjV~uC$0ZcwfOPe@(hpa6u*_)m$ZoJ8NM;_giPCa)dV|aV;{lV8q-~)B>^@q2AJUqWpLgvZo#o>3~pa0D=MK*_) zigd>{)RwEXQ5awL3jS%#;LUgi)n0c;YqaTmBXP20)l^+)XJtU>p=GDfa^)NW`zOSP zaxC4u_(GMM&=%&#uqxD_(uiluopyK9j_LUxmgc5CusCmIZI=5e>tqwq8bK2wDf#FE zUtaFk#fAK1_j<3@2(D+%+S!|+oxlG>hmevztAyX@_BdIK0gPG?@0i?`5B1ff-tDnS z&JmVhbGO}TjDy{^T}WILt}OBG#hmAt_0?`ehX*dCTX`$k${fcs>{>TD{mN#1Oi zRo&iLch>er6L8oE$w$q%*VJQuT4QJIa}4%3mZlM9obxcIEaqwGq<-wMgd_xF8IsTy zVU%JVIbniD95K%&p>X`?GIsXRp9dN{dy2yo7&}Qo!zc-;<5H4FZbB05dDIugW3Gr3 zBHRG`zArfQF~pS!PP`;=s2{kA?}X15z|*7WV~w5nBkaSBooN^`8EWP_ln5^jS&&53 ziIT`qVnIR?vlyqLAMlWc0dojpt`~)n!`9(GTbokTA&wKdQ6wT3GRGlF#G@$SLFh(l z=tLY7#;F&GIK(V;-Gp&Jib5xGFbhK8qfcb)?2++*uCa5gpKkTjt$w=IPq+H%RzKb9 zr(6AWtDpX2_0y+v-f+0b9qI-&z$p%WFQkGwNh)aUrBMywQyfyr}WzuRHbCa6FH2py;_R4BOr}$%w%w&!mLgTKuK2!p9dfeYFXC z&8lw2>}4gb>pVw!K?-&&jj#}K#KEOO%b|-orkyaa)mF$R28$N+<#j%hVVAWk;SG_V zVh)|oEjg4czyuLa@v`EY z7A7^*3+X9wQ-GDUl1>38GnE;W{*iH3ya|G9N|`T8US*dMn)mJD`Cj+ksfwpF@4kI^ zJk_0QUsq3na9{1UMZ-P<|kGaNB+pAxDa$2A_k4@pgdEUQe1b=2qr& z`9XObqGyeJ0?71IGHBy~8}AjFTD($urtCS(s&1$*?zD!RH0E+1P<@k8jxM>(oH#F* z%yI%ynnUa5fOQ^v>65_A4XxF~^`QlRMd}OXHe*sk+NNcxxND28t+E`P9V%DMVbim2 zqtY95r#t&Q%Ky?_-9ba35q9sR@4ovWH}FkhFzzLh@R^f%L7YZ7NExL*$BF0gC=$LC zM$99zhzRzW!$Z$ac;Y$2p&oN%f#c_b6-V~P2SSS@v#e)yBOK95L!L0f!YH6g5(EM} zB6VEuGU^2ZPGd;^m0j zQkN5vK*5fM1zQ9>OYgr1j#5oa-X-M|mI8#~TA;81WDFyV40{L~{! zz#W(Rj?aS>!e0E?3sT?rT;KJX%NU^%rZi++1db!ZGQ`QdD=LjhJyna%Qi3a|RmLo-`D^tBdR2fJ1o&uv*%XXv^FphnskL+loM$|TuIk^W z^s13k{fN#So682y@t5;Raq=AuT+L_>0eEab8hRzY^LxNziqsPXJex+uCp4F ziRke*x>hr>AlT`|=g@0j!PDvlYx=fZaXxb1?d@9!Sy2wox^{97)vQA{kH!+xq|I3A zq^zcR(l{u~zg1oid<|6S`W{a-(`q;G3SBOF1;!2V-sSZT=Q->nmLId7^*3vszjqWs zD;I25)%cTkgkEIyld|Y=m8+<&zNMX+n+A-VKi3IHRw<&k@3-Wy5?w$r#3Ad0r&ObFPTyd5@e#r82q7fIp+M3m; zr*&U$#CD~sWw&}?8I?sAz8 zD-UuEnn20A%&vFud><@dJ3Bo?%J+w--<+I&ry>ignOx}?@{eAW>dx8u$?3tjhsM0} z$HTu}eEt65_>be}4yaJTE(-Dkr}gdt{BOfE0Z?9*0BwEnF4|F8^2)bIY|VY^#}3pN zEOR{Hu>xdQSrdQ<>;fx8^W;j>j}<^!uPd!+va@0AwWUaY1qS4e=62mw-u>8^Vfov(S8^wHHqi?HZ6LYhF_WqG0jXCp>gFGvSZ3!~IS9y>>c+^QK1q@xI*8xZgkZ zA8O?9wew`g{?T^tY4jg$;}_?g9y(qWVD81-izo>r7T_duDWQ;6-%kTdLZ5QM(v(MO zLI`JRQu<+5s4$9L*M(#xIG_QE zL&v3QDx4^#9`_x=vCl%VS42Ez5yzZxH*^>yzV8H>;dNFh=0IMPBz0Ki2h5E;Ck-iK zq37dBL_z2#p6lYo7hFUUL?wijQ$~Zt$Cx_~e`5Fb9zE~p#y*bHtOaQ9_Gcf0GSBSM zzC~cR2+S6N*&;Ao1ZJylZxNU+OKcICEdsMeV73U%vxQ%{Bw(&bVNH_#X zj^p{M;DV-}M`BK*B=OuNaU#J*9J`?-c))oop47>%sxkN_{I?0e7>?)Z!Y_txkAz>0 z$6V-|G0=kcbu(!PjVegEC{!@*ttp0dT|kYem0=j?S6QiJ9Gd7%SjA0uEN7w-=i%Z; z7n9y?d~PNKkDI+oqs;2IaaH8|h7?K>HW3_F;>a~o9OD5Tcn)C+w-CsowP_V-pg;+L zpLF>vS@BDMy$wUajAbe}<{Uhyc4~gT*wOdFMXGfLRBE;gA*^J(uz%tT-SGKbM=@My zRpU>#;N>;WEzdfY;Zj!>qlL_KX*$FpkR(?*`(U{E65)A~Z<=jy$Y8s7hA1>MCWrjk z=z=)n5v0oyiNiS#qk!``A!!^r9*?|)QNkEu4ku~K91%Nd9QZWy8F!oj&8lQ{Cy6bFgp zB_TElTe!Pu+pb;0WTCc5WrK}3tN&T8b9A;Ks_k>O(d%(_}=|Zr| zN7;CnD?^2@GHJQePqY{Wl52rBnq&@b~09om0HAbf~$Jb`S_vZ6q`+GYN^R23{Y}>YN+qP}&+BrYq+??dx%#8G_ znT%x2K4xoA>*yy;s6Z#uA^sJ{2UM?z*?dP^Aukj;_f<;nJ0xrBQP-rs-}_e_TiH7X zBWJvw<1q_fmvr1QE*dt$Gsdf&-2AW4r>`41OSKJ1ZEE?iZnJ*0kv)BdQF*UDbVAa0 zFn;JllQp(5EujfNl%WZDK|HJW^HwKJWa$bWG{}aVD3ajrW4>$?7h}FM*^*w(#Ky@d{7et=r zfCt9#vejF{6UiA@d!n1?tBtizE!0hI=ZFALI+KrIh4m&cA|b28b_Yf%pn%)Q99e}1 zxegZqgZ}IX9npccfQh?>GQ#43ml7hxkw(dUbpSGXnWq?5o*f*5M`Lk;ijg3|VMij0 zWJF+;%3kGc66^ioDEUTsWZt53(JHd7ShPuMuTpGLId7KSQZ4%kp>~lw`UC0UNGAh^ zfFrua@a#@QB+3{elsPE4AHk6)3)3!!tklmV7aW&j&n_drzqcz9J(I2?z4lt)`gWw8 z;7e9<7fUjui`Z^ms<=?sgHD22SVB@Ki9`; z)-zQod6ePI5>VGzR!=3f)%H+%?MtVF(|b%y!HEi?th%%fk}?m=LNrhL2m>yL>W{g8 zl(f`6e<91mhLz%8$)oOaOK(^-`9Wp1{~&%k%FPwkS$CA7%X|IH`TeW!XsO!Z2nxmv zWXu9VC-&j$k+D}eBURwp&i2g>=aqk|BRkcT$=nhw@v@?nSFFqFm5Z?j@v1RK6VlZ9wEG~ zwmdc25bdL)+L1^1R^r4CV$3m1@vx#LI26|jHCEKKQ)>pk}6ll0%({upwZ}4y~D;^gi-`k_~1@qez<9>i|xIb z{XR=7%T2I`%jwXWssFSXfWLM9A_gk!w+~?Ba6W8!5Flm`772Ur#S|LLmr$PU3|*gz z80;!N$DzS21cLdJ!`VwVJ&%MH-o_R9Cm*;!hO6O`^RGq%ihQf*F5|7msvVXe<+GcK z7@-%=%<)p5QL7{?R+}D07&aP9jsl)#<_O@U5o!f|%F1Rd8C?DFEsrImk}Dyx*N)V$ zq;Cl73~}hg-;aB@k9N4PVUz89xwB>(^hJJE3rF8mN$X^FMKgC=zkm_0xxx=k%VNh~ zV$JEqXwVm5G|xOkaG$Ta($=}2TuhAGRY!QLs$5J5iGZCk$}{O#DO_grp*1f1^Y!WF z=jrQJTYk)wtq|K+@f5S2vF|B-lS%dIcS)Z^#oC2R{^=ZjDSjH0=C&I5sf?^_|prCrWKIb?*G=!OPdK8w}+hUTf_q&0~(tJ-SmXu_8)=D7PkZq0Ez`q5#d z6l?-;WwR1ReFryZ|A68^?>w~vgpf+A4~8U8XGe=D4@mY2|5zY119MI#m^lUEBQ4{b z>tU@0gpF~rH8U{I6!l9Gr+~?VOb^;(fjh*)Tpo}}ClDCg#uu)-WKzV4{0n4&_URA4 zIfyNKY@?ATe)O(%v2g0=V|bIGDIEc&*gPn*-8VQMLY&&G51t+UPiW`J0*9=Q9@B|P zFnomb&QMIazvM#axbK1+O<7>yXK&B~*>M;L$KUswVZ;n6`roL_{t%17s*CnM`Q%+7 zgJG=NX~d-zF-fQ1enK@t?fmkib#l>_Ll5tD%g9&z!S|SC9;w2lQrJkD7<7z~w9d{0 zG135Ail}dVErkq_uQ8t-@ud=yLh^n1eJmG`kK!W|eLd}CYdT&J%VymQFRb$*08V8> zQGXoYpC|iFKuZ7}6^|fDlIGDM;DY+EOnxlMYo@}CmjC3xd1q&Pe9H#lX6@#BcwQw!=3On}X=PT!jS}T!skHt0M0&9V~)~g9qD7l3+0__yMH4fDR zo2Q!7!?}tX8y18`c4}ZD*TFsROD=ey1#u-{@4E1T3hd8oE<#RMGj+Lue*32us2K{1 z6|L2)NmED~>r(fRSb<4b^eJU7lleVeCS10M>muw-s3EN`?ehMTA+0Y=T{AlxHP^gf z`A)|7*N0?7txOtffMViM2B7}6FQ4XnD6(EXqTZ*TitGle?u)T9O)ggdjvk^GCVtk4 z<~ZQS6aIlHlY~wJ9KcZ`v2QSqi9r%>k1S?^#ZX(HKq8~V4)1`&gQ35KafcVK`sCIt zCZLjs&((cHLIRcF>p=OWC`g?B3QS7#By#A)zaQvsAQ=%x32TuUKN|Mq9hyVyV3!mB z-%uGF$=QGa6*9DJ>c~FFozjfiKSXJdK^&ms{NP;<^g!fGFiP^(i2c|wT~rZ1<4c*k z4z?OlGoI+OflLbMFP29Stngq(4J@W7q8S9nVS~eW?Lvu3?S5pu!Z^gTaPNIyB=Mz^ zoi9YHi%;BsrLCZsiGJCQ2UoA{Z>pJ%l7CT#vdB1M5|U+79PkcN8q#$mL}8r37*`3WP2xDG46V1w7n1uJ&E1HH5 zV@0V`UHXWv)^2?e5VDTRl}M4ii|0bgi5|-XYXuWZYZVq)d>BdQSXUus9qg|;u!Q2dB&d+|KBfjZnDsN-0YBtyU?oj^ zCm59Ep3{Bo(CFeoqEP}zXu9ba8U<~6LNulwYturx7;R(TVTwi(a`oQ!^(^Ii)pOtudMylD0hK=sGkAg1z=MuLM z#kkavf~Pa7ZEY*-mc<6Ch)+?@wTtti*gzssD%C3>Wx)gZNZKjdg-WdFQj& zdHAD~y}T1!ov|)hbvV1)*#B=CL6s(P2}^$pHt_*l81Qz_rFLCZO7(2>-Eg*jsGw|a zX~qd8PL9!aC%jO|qBTT!iSMa3YsQ-H3ofU^97~=@Vlic6IAEn~^mGWvT&&k#3cHH* zobC;{$5v69m42$yOwM606^AtmUaD0flvXok3owrZTq*+R{#m8d1HxB}X1u8HcJ~EM zfjVjDxUKJ|l4QLBnAntj*I~eNz)KSK*>wmwr)4o6C@DIALYGgJKS>ebn*GNaJLPvw?E@PHE{vQ#3O-@sSZRns%X)yn=pIcUV2`vZ-*b3 z?aah+7Oja5YFp0(SzkIride%$$|`S}abBi}+~VMw)qLFon4~({Z2fuGw$E_6DXHhFk0|eVkwDbicr@tR{ub6G};Hjv6C!TbhIGY|}BbmP+ z@uu2J4VKr1{Cc*kxBz;BYZ^u8Di3Y#Fh#vj3%mHa%k3%+9eoXg`GJD}c9V1&SG;5b z&O)E)J-R0y;n{NGQ&JJ8XXBh>Rj>w7hgr^eW}i}0@LI=@3vK? zZz;0U_{>>oQ@XZOU4Oc=M~AJ8`-}oNR0OIt$4A+*lfObDDBw?T|7aiL7xJy?zgvTG zb2mEni+_~K-?0p{Dg{o^`c|{1Pnl&Bn*3Ur3BNMbTIUN_&Hy&~Dj3Iz*9r|-1yL>} zHJ&wX{P&(lzLw!e20W@J1RTED+hC~s10OH*LIp}cBfgf6hcjn=b8CcLpBEbgH%F1{ z9{)#Ky7_PV$JOEXYc8ZeR#uiCzUSln)9ynw)v`OYDdaltPimJ(*<3w4zFz0&t6>d( zm4(}^sDJwbHu}|@y{q#lEf)_jxG@mK<5bxJC-(tk{DMV8(~r+`w%*U{$BiF(#`ih? zDSwsIlrG1I-Lk@bWd9{i_7^*a-to~##W34eB7V6-LJWhujCz4 z_5%DAcX)DTu{QUr2P=56nXMg(=lO(&Fw4&fHFL5qcF9MtrW?#DQ<_STD9A9mDm|>M zBSt(x4Q4jF`!w}jvKlAgEIfs_PpevWbm11nR=um zG5O2UUQUIZW74RKF}i}?^RJag?Ciz}jNVvQZ_8>{Q4>=n>s)b0-jL1ggVviaBY}=> z_@qRAnRJ?8rHWp@fP7*dm>^E73Svc+Q9cQkOJ?6HUWcxT3EUGtfzg<~;W@1bC+i1T z2bjU$epyaqR-Ioofl%CPc$Tg{z{ePrdn~-m_%nbGXj_8LUan$X=j0qWV?2^^b>@+V z#^ySBdEU^Mt+q8aXNs17l*;jy0am&tgqwy@&OENI#KcrTudbblmQ^v*ry!>9+pB;q z9ZkBfpJzc%I?v}smA<&Pry zk?Ozyyqk&4=F2-Jrhq0}AG$vsb{d5;GLvOY^L*r!qs99k71nxLip`^p|DD0X=u4G> z6j=G_bS)$ezYHJ3`1B*V1*+gQE7tUls~9DXsQg-o z9FT@xfITUyVNw0UmML-*qtQtXD)R$0hbciHHbxLPzG_80rgND|_oa3%eO%8KJ>jl| zeQfvF?@c#CD|Ae&U9G3keM2FOTa!7w!<3gbB<{nsdYSw4Mod8{gEP4J`45}IfiXqIkIw?%0@-P5>&K#6jcO1$MKsDu4HgG=ORk(X z@OQ1ua|*1d3ASi)C3{1Iv{DA;MQc4qF32SzPatumSv85NkjCzED}A3d#7H4$p&c_Y ziq(dYYj%qOCSbWnR7@N#B*q*aDA|K8fgvt%ghz4KLFXJ)?>(Gmp6$lWJep<$7i6tq znTHQyb$F(poh`5u>XWA|f=UXDU7Vv_-6U6Q@-RoH&0cp{Kjki+?KAP*Eo(bIELL{1 zIzMi|Z-1e8{Qu;>9XtQEEPK<@r(L4y`-1*_BM}S7sG^vHK6x{d#l>XPd|T3fwU##d z@-&P0HG^p(HcV2sOGo@uHYvxJx5$8iwwv-+r!%G{wfJYQAbH=Q`<+xt4^l~IBf&(H zU$y=Hcc8KfsI>AbyCOJPhmQaAVs6bt%zT-BGrO>@wX@en#}sV-U7ac(>2E(nc*5!t&GG$3;J^5nhRCEL!@g+ttyM)Ef(JUgn&7=jNKu9ta)@O6 zr?U73vxosiL~S>8;e&MrU_E_hleZ&n=8@t{TLf39XFYI5TpwcS$4P6W!>W?K%rILk zGyLwK@59H>+bv(W`Nwjb;C~JF75OvZ>r|E6=#FR2xjf>DWj*{uM(wl5tq0|}SJ==p z)WH|0?hFNnV9==q28|5zQ6cjHglTz5a!(4;#=m^d7;Mgvbd6zy*Q>pcwVLv9!^UOA zJK5RZuXu}@P0kiMc1!u8^6N>Dhld~V@uh;#BFWeYcptCSl}35f?r-Zb)fsT|608}L zgKd2ea`S%1b*UMM0=(npKqJ8Lq6mKp*SMx!uo7e`=UK~xADy#eSb^PlJ&Oi#VL4V) z02(D|XK376W*)pI8sH^wEGPU+_8|qGsg^&%l&{mWCCzDmJFeZ>FVgaojb*89>L|nQ zuoksRiW_o+6$;rJMmbrz7ot_z6b11OYA{3%DPpJXKQZgK)n275cAI(mANA*Y3%Vl% zSH0-3p6tLh%Duah18`Tp#qPY!`g?YrxFO$T7d>~EK@KIbk5?|reJ$i8Ct@S`=`~fn zI$kY)FG*{jrdv*$*Ghi8-XD9PvyhVjQ(cR&T8j z@up>trWz;Y$8uF;V?Cb9uir~CEIUzM3#B%vIZ^2^p zXQm&N>eoO8-%v&*K7l%gC_?mMJ3hB{5vYTcmv1k!5Iu9)%^;9#tZU>g%qHn-&Q~rn z`5Hd!7m_KNErbP0ZoPF0e}%jQGb?!Ezf%Z|AJM&S+zg76J1XFXx1HM=d3N?}DM!SB zcguN~!3nAf47oIRfXR{#0!$dlAlUrHQM}rcHL4SCrGA;OMmNrd55Z*FW?ev3s>5|~ z!UzoyZ8ELPf6Yo+@Gb7)I13zz_duZIrTw$|K)eg%5T^bvv%Wh)rbEPf;~=*b)V-$9 znE}KRY&Lwer4OWUwdB2@-jn7U`4E%lvA;Pi7yYRfo}HySW)I8kppU_(l85Ox_R3;A05xWk?G!MTPpM7rx+**E$ zvHQaeC&YRK7v{c9wsP7h;S@%5sa_M>EGuNYZym~DfyD>>MPyVgC81N*B2(5U0;S?g z1LQ_JZYf`1)O|~Fj5i*Y4-z!cMj^@ct={Al+!2m$T?6@3}W*!zfCwgUK^xqdtS^TxHXm) z1#BaCV{m)uYSvI`y1Z9ccedu~WACTb;Zy@&AiiVair4uTvBNjGzKL{tLl{-H&v$iX z2=*4n-TWA%9?md!n67!OdRzQ^)rO|X04LPS7@aoGO#Xvk)7q84xppqo;0LmyJ`c3T zhz#YvBl$UsQ;nOhjIVe3ScT-Jqipd+^seE!5$q68LL(lCIg)oXi0Q~AhE$x%O&9Hf zgM`kIf`l{JFBebXfU^S&I_(h4Ve!5R&Yz*a5vKMQd|O}ug8u4LkjX|lTsL4eUMJ); zO?l_N&zXlZoVc5~-+RP2lsDjwUKp%+3|TE+C#HT_1pi-lM=!bjZCSZzHQ~{K;~K+0 zH2EG+UsPCi28`f5i$msWo-7qIGASWIc+?zqNCGRwHu09hu|K%P_Y~|modlcwk9Yqj zi-F*7?W)TG1r!R_0ERsxL^p~%SO;Uo7Xh5aAn%SuV6Rge2J?O_Io&CAV}~AIhHUSK zJ6VS8bOybAi4*olbF|IIaI=lkMsuCb#%i;T^#)tB&HtD3^A1<@RoVHdA>JSlIy90m zmguHLAjz%BA!+bEfdnDZL{Wek3cbN#kvvpJ8z0~wBy3>aL!pbYMBQXsHKkizot`Z1 znprv6M!`sfTF}*!-j$17faJMc@J4<{%lwL9x_OFI+?0wA$MBioXNaR6jwz~Y ztM@XjprmTjm!FM~@1xdelBo}`Y><-Lg0&b^Y<}#mt2kGSh-MFBCA|3TwYIqbw18kp zL}hXz1pvoWuZH;h*?V}_Ifq2d6)-A5>DJ$|oE@+t95k%{|MIA)si_|(=$EiHn_g=- zk6j4)8uRCU{HYBvj1xxb^crv`{jjK;CF;}3ado>bHF7A(`h=VS4I&}cZ6Ezw%*u& z3bH-?)cyxUf`ku5lBY}~G)9uR)VBUE^rlggh{6p!sDG=g3H=kVV8ef~Xs+pB7c_mK z8;k4Mto;8~_Gl3=(R{;hJ6C@d65Q{4tKdh9fL09ms$tTAo$O97lTO^P8&;?|$P9&u z{FybCiLflh9EuO6=BykseKM@7Ep*YSjF;?XMa99g5>v(eVUkicq?AG;A^sD%-L%b= z?3Is57YSN{J)i`(;@n2a&k|kV`DbXKtD;wP#mGZircU))MLbU1tWuSC@O{E-KMVhL zYBdtJ-z1<^4Szd{Lmp!1r{7UPJqyuua51F>Z6wxR}JZ1cmlmFSu-p| zdVX=xL_sBAz@gJ{ElGPhzwK%zRVE2xU&?bR^uEhIsQC9V z@WcYjlm_JBsd3Gx@S$P_N1&VA!FUzHJ!zK#=(G_ho7&s~!vl*HER3aY4c?)szhzAV zCd^RR|2ouL+`yH@x%`^;i@=cXpQ%9O(2uLZ{zO#6CIFW8o>rC=YmB0gL;&#+SR^6N zVj@r^ly6CyQ|0JErMn@EaCDQZwh(U_#I|LJ3;z);(hyhrzU>w>s$xGU7(`t$j&-b>~e3 zI?)C3Y@kiUCue4WEXvI0l$JFJo6=w&M>jtdxF&eY=!O?M>0q!x?wxm zN#fe(hK&J8p~-*im+fDa;Y|s_(;~6mZy?bZWchD?^`!es%;DGFILD}oiXs*%C^d7#X75>_j2YZwN@A!Pv-oX0@hLZ<3qU{OiS;z z<4#)@A0!0#IqgSDB&Ch561x@dOh!rXf#-D37TbW>6S~P4tz=DvJ4(|-_##tRMt$p^ z52@33$HCsk26>;gdn~`rU7_C4W6P1pmpo3a?9_X~c+pP5f2+t*2^C1xe~&1G7!br` z!K2wv%GWf#Iu!DFSjiz(MSXZUW*M$l`~h9F&jhId%y$qAxN!ed7M_R*A*ZW{zPpfs zo8pTZb+KS<#D@hSypet*?0X+UM@pjfnwu=LpN*u0#a~ZPIraM0L9fu(&^r9R!R}{r z5u9>#4#7n!cOTSfdRA*;tG{4yBi|JN^q72IeF0{GF76F2y8H;i-i8J}e?W+UZ!dCo zdR|Az;Q|qF^ge^tY?m{yF~|l!FnS)FL>*rZ4K;2;bdlupCg-&fX8=89BAtTjGs(;P z0RmdHSZ$4`FP;8iE0}p0OKqL^um;SL$XFJ-{qYqv81%g|oD+m4SO^+`=BD1`F1 zpFHKkFR{s*gL7jtV*{~GS}{F}jaDZ~r=D>Diljy!fM>-dJHB`Ez0muR=KA?b1B1lXAz?UA;oG5*8d_Atr@24?g%FDhaQELG$P zzHZ6F34J;j2%|WR2*lG2R*ttL4ge|0*-FywVge<2+Pvm1tWL)%uPr)E!5MI@92lR4 z`t{11rHRT~{N5C&mRgMm5I5s zw<-KTk4YZumJ5O)0tHVAeH~?YYOWgS9n$}mhHxFml7_XK0pt|3F?^U$QkIv^%xnRAI?MpYaI#fVk3}1*?}s`H+>C> zSZk1r@$`N$7VlToR>JM}i}cMcyuMb*4^{Nd-(y&P*9=&0;Z#GO!Kf)cUyf3duv};{ zMXP?Z1D`Q1-o6uoU>>6!0P3Pte-4LN2P|drf)Qvl|7=;mcNvSv$;? zEqPf{I#{P7Mk2Q6xu*>fwmW=4$^bqRpk3uE{^juwSxE6}d6Jz1@v1 zZ+ubVEb7VqENa6ou2H8f6bfqhS5sByb0{D|z2F+Yj5ZatjkU@2RY3^}LHu8DbZ=od z?`HvR5c4|@X2k(#1Z(l;wFQbB8fjZn5p%Uy^MP!x?rdwxB?QYSSsUOMxe z`uU-q4)85Ep=X!dD_c>eH(T6$C(l(E6B$&1wR7#m+fuVA*sBuf7}l#ac%W^Z9$!HI z+?aJ%Q_3DZAVm>~F9LmQr=^?jTuS{DEgMoM8_egT5-4Z z!&fG7bMm#DW1|;FCjEpB6lpuD>b};Mx3N9;KW}I#t5Qb=EsoO(Fby+B9dIZT3RT*u zPsubV8+`UHl{7cil{9%E=Vf#n<8&m1=4FAh;X;T^r(g(}UDw;CI5Vn$;x4+@cO6Up zzk!LWT&P#APh%W1R4Ug0Rdvd|HAd8<<^>a>CkBu|bhjILTo+RD6LH2Kib>5_GQAt? zqDr7Fs;sJrYZj9JDHEZW5bHVJ6k+qSyOJ0$t$G@SS!r*RaeF?KE-EGK0_hMD+h)VB zjYkVBkkluRV)vLU%C=5sFW=y8hw-aPCR%1yASu3>RNpVmx0``@xRg^no0Q#pn{-OW zzhf}bOqS z`74JL#_M*+Y$Tsk4zn&>@WBA5d*09suWdKIIVgcV(>$=6wE;++`ZQ*Q4PrlFzR5`e#mLXOJ|IH0p0&AnBR>!$9tagCoZ2*kwrK%RD2GR5{pPgsL(td z_5WV<92TEbIx;VInz>U#pGNlvMj|4I$zOyfqOTta4}s%3XWlttHtW8{$jd40&Twz$ z&I!xTnBJ6&FDMK5BEWuVb7aZz&OY}hWpd6A47&YWFVX=gg&iH6-nMB84IbInH*KNN(;iXdXqV=LFOjN(Vow(-(Z z243J740MT~HDw4NVXBBYhQl!uz7C6y?U6A?9#MxPsW3rietZr}6QPhA)J?SZSt|rP z4^r0{_5`DvEo_Cr5}mHTjf;$VTp`sGIwvIqHgvQIaYbANN2$rsG+Pn55F&lhCs99* z^+#O!`oKtJr|B;YWJ1*R{rNZ3v`i*mBGaNqj7bw%`_k=Jhor(!Rh_T1h5kEA|1))9L;h_0S>7Tsdkbg`IYPseN*p`g}@PFOK)f7xN(B z0H0t86D19)&oCxrSAAY|C(_=@jAkD0qpBj3Y4Ak5 zhE2GG=)RvGnoOm2PXZ{WnLq}nj?Hg9Tt%njk-mXoU50U>W%Lb6yhvT=%?@wgq=d6+ z-d9b(LyMK7UddxK0A)$8{_0|q&ovM;!25Yw9 z-uF_lr(yX0FHGVCxzu$nFMa)KsSx9263X`2)C|7k25>{jG7`Iecssjr;}-zG#FyRv z+B8MOVQ-x0O)V08>HRlpgjhS`Z$@jxQ@$@Z6xXSk~#_F>mND>@PXH zPD=Q`YHT1emikWC=2k0>zG<=(N|5<+&~TLe2YW-&7oG1@^ruxjq3qZ>X$uOP3zcc z^1F>d zw4bLhV$~lh=MyFG1+>f$;q8~0L-m8Qe<0tAkL8^~NqvmD%e$0xZ-P`M$)Yjx%Qa}> z^N)4As3KWy)qs#2i0~R@hQ`bauofp6Sifg!QUn_`uOlLLFu`Ca0)dG41{IHz?yTzg zAU%9@^XDu{X(FgALxELz4xP%Ck$MdOI#$j(g98-UFw{<2U){Ie)Xbj3zR z6M9D_@8jUmw7sZ(p`*mCHXPbZRP?VCIYV(t1UlPKfhzK|W3|4Pi2U%)M%Fj_neb?( z7EBDsr&9S?32slBJKX#`nfs5#B7Fi~M^7>5ZD@>81!+?T&xuM`i^@#wXo7ti8y5l7 z>BZi!9UwbP)2k~2O;#>cxMuq-xbelcvB7qQ`$duKWtpR^VOA1+{=2-)OK74|;v__$ z2Mqn?Y3?qg;J|JQWFTr+xx<6Df=4rFq9FEo)nXY6K>rbSYEx$TpVBz4 zVD_dSgKI+;t{wYgNnB>h^XC|REFUi@Q9Jb$VK?^)VYghpkarGESSxJaH31@HYRDU2 zVTeobr@K_7%+sLd>C;%pg3^GxcdBPwiRGF`)uvR@V|hXynjLR%mqk_%nRzB4Fy&oB ztb!)P7@E!~m1R>_#VR9nQGnDaduJdV54V%|Jtxera>XpH-Za1d>x`q{FGdY}b*no! z^$Ft&C0Y`&bEwRun1%Z&1e*3Ul?HlNV?b_`4w`K%wc^U({k^rPao|tfa-N<-InwHN zvPCx431F2ARwEHU8jxVk!Ya%#!6{Jq~s;m)x^4Wi}!9xuG7?zO=Qsj_AT+zM)}R$Jgzr3LK5Yc6q<};FGiYV z32miZ6lmn{ti(!XchmBCS-~&oH?h3-%gBEIvWR&ePYJz{!s=I=Bqb7^pf!fg5Cz>a z^dk!~?LyrM<&;1$(30@8q)}DkIO!~PxtmE$o=OI15QE|xTjgu zH@WfH&LI&-!;jd61-;mRyH?Sb=f(wIR)mf0(~MFDBLfz%jy5prG!6^xRx0F3tSh32 zt=IUwG-XiJl;(7;7FN;P#w;u=+pT5H(kWObcsr{)myPD-cBGcDp<^;pyeCGECSmTe z_)H$0>{iW6gqcn$h?8gS%-MD6IPZ6RJ;)@^Ildv>HsVI zyRCvv2Dx89FbMZ=uQ|23Dtj^s9Us0SX!&8y=B9zwPIpp=JM$IZ5io_m9R;boJLxmx zYuhbkRGSldbE{DB&44#3(rF(bf; z;dfc^n8e8r&c@|uM961sms5{z#W(Nd9(IRxzjHOd>k|L_y8xoc+Z_V!boa+VxZMZV z<>>|dKQ8`&-0qi9h3-A9P3qKgWPLoO@&1P)h)CzXA%${06KIb&ENeM~OaBL5;V_u4 zp}=EsowF{ol>#=lBuE`*4BK_0Gl|DL99W;F;%$W*f z_7_y3=^_0v4ALsz@2N?>$q1WHoCCEw@`w_KfoW8z3yKPnYMz+G||GgmfC zc&Pf#?^&-*9-1Me0bm)`su2;5RuKkUh#fT(>R|faMQs77Kj|~1UGIDng}MPk z=aIM(OW^t?ap;4!R~XjL5h%WY8a< zZMrS=K4ZXcG$*X}yL9<;@;oDxHw`2{EV>HWF`hhdxL0RZfA9HPE3Pa=eGJsMr{ae+ zqb-ELF6fz{ry_w5k840LXXsGj$F@mBNIUJ z+$q(uQE^a6HL}hMSbo;4BMIaQLM;13Xh%L&e6A6>f_gX60#h%N}sR$HdsF_BP z_p`t>7Gep*Dsq>Jred-Kr(_zAP*I=6&dLKI!OQV_;tXLPukyLpNu_f6vR~Doq8WgR zp8gOQuZsMY4>mgR4UFy`DY9+~j8{Y{|C?FC^XpGJ~kFy=%-#JU{|goaDCsf~0DBxU`H`q`fe{QL?~QLRcN=V5_1mf8cC z(du*9YETN=2npCJ>FnH;5U`$BRgtY=4ru2t&pt4S{oJbBlihFU@`kmmJD!%2srh>GJ0_igBGcv!>S_Bhbu>{Qob@Zm<6qFtiIev8% zqAipEH?e;igg8aAaEXT2QB!Z#YtIn%8)uxrD&xQ1iM6?k`MGGhJ%v0`g~UD8EfYcP zpKRZpw@OdR&yGV34V4u36NboR@JTCrVbShaG)D>N8#pYaVWUId1;75tY$9gu&&7!2 z3!OqhR$gw7AYpIU?VQd^RJiod_sBp3|6l!3>vi~R;{`ftrVOlsxh{&ZLLcy3o2ndh zb1s?Ec#q*37U3+i=8%s1GB(k#6x2c+YO;>58mnS&G0PU`A}_rTu`TXIVJU6FNn;U@ zL2>If1m?Bl4x@*Ms+85h?}XN;-PdS79AxjG)7PiJ(NWLVK_G?XE_dD*U3?t8 zETZrK?cn0M>HbkSYCgF2LO^oPIVk3bgpS+qcuj%_!P{6&+Q z`{v|v*k16aZnrr-@XipXg*k=692U06BiWfaqs=c}5MIKg`|3pQkiZaqwPua(>3Uk| zbQ}s8e7Yo&^vT%J^~@Nch1NKI19%*|cjFH+Z#bpREU^4RcVfT0T#d*|yP(@o6qA@t zo8noK`4UO*e+=70;oNK|cIP+Knt(Z96`*|(Yw&)L%8uz;NaYGm`o%MgZ5pO3&oo(R zjY4CCzVO=m3ja!{_Z7bVXEV=}RKj+&&2#6?ue&&anDT9`#O$j_hB7*wE`>ZN zgO~dH>!?!JQ`MN7sgOylPX%b5&MS5Khh8N#(wuMF*?9ZZb+4OUJn>cAEiq`-SPWqg zXj&6!0ai1zXCSw!t>%%wt%%Mv5&V#my!zdoi!Ld#Z%`UlKM+!yY%}xJppx(1?4wa2 z5bewru)o(cO&y2w zy?LQu7MO>6QT8vdpr>{R<>IYrdrFDEm67yb{=irk(-lS4kHwCp19lx5%77_W5<~dOL6HUOVcSYp3IGmUn~q~ z=a5<*`*C=`RtI{v5EtKf*G*wxzU%u-pyi{mES&CAo^>*oAvT9)2a+0*3*%>3~^ zH1GMdKcV6fcXXpCUHL+9E`H`VBtcQFj6cnsD=|JFmEsI5F<(DU=ePzk0r)&FUsbjj z)3JS}@47L*VBNH9+NKY(nw-0xM#phM`X66>%@L@8;o{(CpI#9dOYJN6*P0ZFAY zQemnu78D36AGM6+8r`n=&K$swfNG&I_kgmu>{n{mSZe+KBB_i)l^`R*`6yo&pT($u zB%#&7sMnGd7MDs)GKwfR@Enm2KFqd|1hRb&w}auh#@xgRo0`x8%}P&(Y693JFJTrb z7sb}pFw-UZ=1zV-?oEVTL3_e{3s4-iMT`|B|{I7D$Vu=Qa>`R*kl;E}Z`(?&SRX(u%|Yd_bQ>X=)a79gvZ+ zlHOJubRrj@Q-=r^SW6FW&=+d>$%qJd7D4B!t7n^6=6C%QS){NNZ z3DrLpkJBEbE*s{PLYQqUDz|bIO(#@2O7(ok}HDPt~ z*7*&%5iWX31AC~#s%Y5cNB+135h*>e9zv+K$9(oHx{fZg@IAv-YxcEmOomqfh-jf- zWww@4amhE`m5S-tl(nS;y(UX~{oB23k|q_dB3}}w(fDhpN+UHJQnUE7`#4|=kwF8p zY6VqihGr9Mj!8M*;gWm;)>RtulP-$H5`7MSktw5+9=dDP&*4BV4Np|~UcOGWhN-eT zP(0J3KPBKl-cE!ix9Fy(EyK;qPBv7k8`ulY$cGFoc&J+2#i|Z1p#~nh_1o4~Hr&8Z zR}LI7zbcjm*L4w5#bX0%sH!HS(@5YFLlJ7}%sY!BoIG#8_W0_lwB~h_Cth}bu71i_ z#D9IosJPMw>#K&8{bVloqCUgT88Wlx3b}BnF7Fz>?V~_KLS6iJYzB!bcD^M7NS+uj z4va3~>*6N=)+h`M;*;}Yk?Z3#ERgfncgQ%>d*vZBpmU$Hj&{pZv~VplBok0c=c}p& zXq2@nG>RG%LB>ztZTTr1{^NoCNb1EmwqldQpG4k-!sa`R+^ZH>0WP3 z$HS7X=@+aM@H%@~DN8a@e3@NaIMh}_$2Lj}JuW*XKBvAn?ps=q0|{g;90H;k3akaJ zZZuS15lKcmz?{{}Nn91+M7~{=19qEkt+=+Z@;}v`8_kno~1J83UFJNZR2O!$K_DgY+Nwv0Z)n!= zY05^bGRQSG*T^@RRViA>#Gey8NC_mLzz*CLjQNToY6{GAI(5EkzB$*OqI*pyJ+)O2 zjnwlEp5a%Iv|f~W%9Ezoq_?|?{Qzv_u)|wJt1NFXA5~FqVs!#TJ|xBQWGTl!U~%)u z3s%@^>H90fztq`y1Z~D9OS3-$TZgAz%xz<&2QwN$e7DDNlHtC!M$<$H=%YhvDDku+ z2nZ4+4E2iIY~6`n7iz48S2Jp^ufE#At=TRi| zk$9F-YLD&?d5S;*Ur?<~qV(L_5X*Wdn&j^vLkn)cLx@qWxaix!+NZsvMw&F6&~JRC z^h2cyadU*41TEmQD5oTtS~!X=!H4Kt%Oq;^I@fuH7V=zm`XMb+312CH#`Z6nME1tj zQG`w;rNokbTnag6ccq7M!U@vYPc<4)|1kvfliINbh6~!Y_giK$hv@-ib9Pr8XVS-s2;Bv zYN_8Tm>)PFe&vqH5CMRO8tEha)L<$IKv4Vxjdrw#wT);&J4@O(hud6iY4G#*q6 zE#``4j@_`zI;s~`zHMz6=KkfGBwl~kjk=O4g>zV&9gdXq2mYzmiqAnmuuh7MkIe+}O!OZb6Sk~KNn)#3z4AzCn`I=~0g#&# z;RtgjqEGQu)py#XJIT~N7y4?xK!0laiK}XQCJmLofx|J<4Q`L@xlh69$q*$REr`gwP}#vdE#(86C+WQanio&$&~w@*fW@G zY~xu%3iIYjpW{gQ7+ZF$u3q_Rv>(~>Bjk(TYu9Li5VOL6ok>~j&J0U+VLXzjo{Fmx z)eTJd4;$?GASRAatv5ydY#g({rNLSZomrX9eq~HAdzo0zR!@hzmp$1V6}T{yB0js% zQp8E&jr@MwU92K&5Jrx)UY5!Jfa_dUVSQskiHJlwP2>u**LcSSeV0{sISM{(43C@f zl>gF#flGBuY@=i7;;Y zAM$`Ihr||a_^dh6$!7^Qhcb&IJNxb8Zd32gs(`Fk`i3}u=TtMcr}qF)yzG`;?UVQF zPi;U}Q;3hU9QGufcwGpf|?}?*F~!&??Z$lgj4OD zRAF9;JK?x(BMWU^c*OFXEanf8QU?)n$~Q?SnEMJAEuC>fZT<$WtfxXw_(^ zTX_U1T4u-0Rbt&JO4=A%@wwMStn$cETYMM;Tc!A5j$2;-EhI@FS_!fh4xa=KB z%HKPXpnUuL0Hcaco#~1{`GOk(%8|s>m9Ub0FCX~!HC|&cm4MqGs1f=Tx(o**r3gnr z>9&_-Nb1uuL`sD8EIQ-_Rsjthg>CXrn%(D4^!kyHRgJcniH}Y#sfSw75%G&7Ud$nh zV4we(-s!Dyc|KL>-yt`ET+!9-+xm~p6k_?<%y9;QEDrH6I=Fw{o(@;3HeP+oQyr$0 z;GkxF`qBaq0~JM=qB?KrNz&E}(2+&*movNPiDd`Ds)&KaBd@C3XqG_`pc=<)!!x{;b{g&adn1N?#3Rzo??kmsTsr2Uji7ozP?mG5=;c{IHQWk>Rz3^qC<@7Qq?LhnA~a zA+2hl17!HoF_|UBmwAZjYp$YAC>0NfWFKpPi@cr`R$K+CI)iYC^Mym+@GMcCq*V zi5K{N>Ia8^qp&~`Tn|=QU>dxN=h?w~|3b3bsNaSR>eB>tfsuGzI<3lhE)qZ#jdLzK zK04aQx@aVZYzRH*B&jK?Fz`tc5q2QHY~5jyl6vN=U4wCrWUKn^R}9z|HYwyZ@OsSw zPoJ(4!A{nV_bdqpVY`B!^yb>TpKPAB?KqpcRV|`AZ%}4Ot5!Ly!nu?uo4}!#tkWP= zt`#3zkuij_bd;?QN9V;G1FaxT;l$!12a=`ZBUnpZ>81s6%cW?%NaljN-vON1Ce=hT zA5^^`HBJ$x?eRK>k(lY}I>YrBs%ykD$u#8bL%(yA*!F29qI?Kqjo9L~s;$>k=7S)4 zcBz8%PXJSD`H1!asrpRFAHTcJ*@zj^y#Y(wnHvPMkRE8Cbld^s)e7>Vg+%akA*5<*N{$%$@M&oEDtR9pi zDvop8-nV?ezb3!v?_;l@X)ny8o*Z#ZM*JY6o#o8ZxFG)&x4I0pyI-I!i@jI<{92LN z>l~{(i8Ec3L9DY;xl`VOKU$)2y8^_vxwt+$FzxNCpSp2g0)GEXX94x=_3Z-In)~yHMK^DADXoU8E ztBWw{@17P2f@7dF2jr8V0lQkv#_LtYY74F;s6jt_uTBl7i2)>Z_V{4;{#(o7LZ>iO zd>+kUqQ^-rCA$2eWLa(Wj8qL69(?|qDj16wixJLWZ+RYC%0&-cS)lvr*HuVi<05@8 zN|=BA0Ncu$=#&tC2QZ%AdMoWXz!|0hm)_PQ1scngg`3}fEHLkend8^enk>D74TSu| zd7Cv3{syBnd+ei8jm8_K$cj)VobGw9#POp@y`` zr-x)Jp*Li-*wJ>68Vjw07$PJ#EZ5n+%_Re5#_66gC;wR(t$QbsoYb?c8M1Er^?A^o zc>c?gvM`-Y!w6QW;*YB1Wa00HCDiwh2U{Y9sjG%z&*F$RPri$_=MO)0K~I|TycoH& zI_rtqT67e{U3>MNBUgS@cgHsU_wN7Pu{$L_(*xjd)=>viUjw@JqLzzBf2Dp!^g0nI z!XBf5dA#zYZCa^c#-HHT?y9yvF?kffCF}7Wb&Ys-+a|ZO_ZZ$%>O%F$M|zubo*OmrqJ5~ z&GK^-hs>@Cj>(&k7t;V?Gah!Hq8m`8*nS4w1QbAw1})4`6u(s2nfDyIA{_-Cwc4Y7jVimkjjLd z;p5SmaFtg&|58<*EENG1q{z_O!autJ z4uBlI67?d|(MUuWra})f%~cI1EfJeYpoybj$>_O`<$<%VR|7Nkt7T^j3w;P!9;wTu z6ko^CdV?aX39yfir+>{p-cw%>QH;|zAPE1$W~PwF`0Z`FPBbLo5*!4%DD3pV|I90F zkkWNk=c}_Bj_{=*?Jb2W2 zO;C&7^Iba|f368I@Uns_>jit@Uq(HxuyNyPIU8nXS1JGAQ&J*!r_h0Xi=0bcXbGGh zpIZUab>MWfYDquZ=rSfRT0$gIrob0IC`-YYg3l-fjRlpfkS*l0#d1wJHnOO> zHy)zga~LmjYbJTR1Ho^GLAY5f}LtXt$nGW1xOG+Yqpe{S$HM+y!5vS}@h z_>=Td-DPzmxH%K~To@Olil2vY=0F}WD!LM^44ZdgEO@0nw~<)Am$o1jeIS$1c?8(s zcx>=Ku^l>}1IBb>C6C&E1+G@l!d!twBELG%2sW1O#vBLM%oPB3taU=+Dx@kUj@;%a_|Ws@TaDc}~yC3RSnFh+4;dc+t9l z|GZt5W8QlTdA-NR*I7G;XSTn)I)0S>^UJxr2||5A#OXlU4C<$vQ6?Y6F0M!U6v@`> zG1s#VdP0ZEbYR59#={TC$`wlTpJ62{!{QDE*#o8HTxBy*@>v>Yhd^c59=3g^r0R>1 zD8NJ4BXlP2550-Ijy>B%U%Qk7aw0o{0=C4}2h-1BNOFdZ`44x*T0QGln?E$aRQnRW z(6D8}vRw1%GJyQx&y-Q;da)+(r^-Qf)#ufuK4~sB;Z=e6c8%bD zJSC>#+{(145Iy)L9$`9bdbj%D@#JQie|>)-p9cKVSLsB7C+%WbQ|Y3$7hMX4p07?`H*9`5-%WhO<3 zn3m-PPV6Kc!!@2NPsd!U@r6=S@Xx^Ls)E`3$HT*4D@c9dKt>Q~%pwDCdF?$2Z!xw5 z{h3(dtzYC`%ukdNwzX^=T}=lZ>bbPp$^zhcoMxUe+ds~0;BmC-kRVHcWnwud64r6U ztGEGln->Sqgr=6`o>cpnGbn&i1gH^N9J0`z>6X%1?A7Kq!!{4}v^0txSB4N*vY&YE ze0<5?9lLxHd{knuXyNK{0^SMGNR82%1azaHZ$|OoPLLKYw)0L)a+~g&949S8YWT>@ z0K<1_j3b(~4@JnK^X$eR{Ml(QvSF#U%pyP97foQ{bdN+V5Y^UD^?9YJRTe~Q%D*5s zRnIF`E?SYJ0+Zn-H0oJ@g;Q^<#2;w9`@bsFmIV5D3Dt_1D~009MU2dqzJL4M7gb!4 zb^Kl^-tjXgA2cRF!AvbN{^U-c%Ki6&1NSr0suQ1kd(d(OuM#4sMx^b!QRt)@Mtzh6hBTb zfrTLPu$wRL5^JH=-8XW4VT* z9e4jN6bDMihVOqA^hiruC9u!RYkI0=y|1j%dDQfuD~w33pDZX0szRDF)^_mdl45R*LmHVvHJN4I9fM zg}zqe5L6)cA4}E=|9?NeSu*R;voA^@&6e}yRpH1~AWk1kLY}CSY#MXC6I=ydt<_20 z_l3$R-W@_=U8Ta-s-(-8J$Emy092`V7ft^^7duRumwjfy?P9iD!t-5czB|QX+(!gD z@^v>gj!9M&_}VZpo-O;J$phDc3Sy;`Nz&I{cI;Vxki`vmQvQ`v;7nU1OA}sZq1>(hQOd_q0f=W!Ex^;{f?cBWQ@R|g-(mkG`qEMsasc4j=?k;{S%ygdb{pUJwz-8 zXZNBoE_fjHBh5Ai0F!KfoXx@kIL%nNoG)?3^FjYr7*H0cX?G=zN<)dK$=$k;jWSQ< zNNC9)T7B6rUeeY$Bp}m0H8%bT*77)Qa2C$1(%K)=ZwOsG9+S#S}KuIm7U z;C1zTmSuUUX*-|>U!Q`=^$I_^F1$}W{}c|$tOO~$P%r+zxS_L5Ss*gxEuP<}JuGfmd4WpN8!=u=h_OIxDZB@>xsx+X$=)=!8taX8X#mWK5}39Sf?Nn_ z5j_9siR)liyRC>{x%eC-1fvK1`N)?&h5Ka8AUp*zc^eiMdfC6&y?D6YLi#PRS+Gr5 zQJzBOG7jhTJD)-sN-Fe$MG7W~pcbM#WCEHEXT4kP-RT8T=hUhOzUe^4RsJB&B&RVn z>^~F|P{IS@3i+~PN$aj(`UXdq=?T}R{;OKNY_{*JZ~9dlO$r$}=>}NL_|S@~ z5K~!?CejG4)5#3z3%}^yBkt9&(9ghs?ozbhO4Z4@vbc-?PosZZySOOCeK$y@%Hp9+ z)`eP8qcGQeLStATnZ&+y5vv2M?_6f8IzSxw5eT~p08$mZ&Q$lD%x;k^`qn9i6lL0_ z8hAJR3=ry`3DjTS`%=MtGOWJ^fR@|4*I@LzPVV{6mcNV4(vD4_w4bh@K|2kJAVWnR zLdiY!Va2`mkWo|fzs7DN3}=$2B)gqaty~6&-&WxAnYj}nee|P%-$*oq^i%2v37q`7xgxBqIOdowU%&2~fRr*}9-Bq^g2ztfN>ByvZPKfQ#?P&Y5soPELnA1`N z(gDmeem4u15DL!avq!=YXn7-MJ=N;tdGgT?5@yNCHsKiW$jJ{keuAT44|0kQ7)ZH) z#0*~N_|70SdFxJe*xDFQiUk3iW_xfT4d#vF*yj$baX`3xhi9^Xd7rFB5MS25HMGr8 zVAy?$A@_PQ?QY?ubsT+GX4Sh-6bsu^8p}^>jEd?grHCh1CyzRVsNj0vX{x-f zn=q}o7Wsz|LCf5?v0oo{*=@aFef7nlFo!B$j8!TfqA|uAH%4Wi$XX`xDm8wzmsTHNVX0}E-+W2K%J3NNFT33A*G8iCZ)GZ+?jxoOR)6wC{X-7r=qx_7#>!u3 zIYgMAzTY1h->kRBKJ1780rX$HWV`J@{Njy8oV@J-yYF9pCu(bO+4|&k%EjnPGuSMY z^mvui_9gwoS)yKeW#Y*)^&>XX78{nRU^cfurEol;ULS8s>ObgOwtt@Euf$awc+YZY_4^Pxf!i21=5)>4;`Tzcz+??;5T?0{6cz`#8=1R> z8ilxT^XGrx@ZKajz-l1~9kGl(q~!P@T5}f}2U+}yT;qo|PYYBGr4q&6a9+mRoi3FQ z{p0Ip(e(bc9C~=Q9sNzDs3j#LOwLQh!8)ULY5ac!^}wfb&dx{Y-khz;3+o5om&fFP PFM;i`r-X33h;aV{5PDxX diff --git a/packages/function-resolution/sql/pgpm-function-resolution--0.45.0.sql b/packages/function-resolution/sql/pgpm-function-resolution--0.45.0.sql index eb05ab9a7..1f6200ee0 100644 --- a/packages/function-resolution/sql/pgpm-function-resolution--0.45.0.sql +++ b/packages/function-resolution/sql/pgpm-function-resolution--0.45.0.sql @@ -1354,55 +1354,81 @@ CREATE FUNCTION function_resolution.resolve_capabilities( entity_id uuid, function_definition_id uuid, definition_scope text, - definition_database_id uuid DEFAULT NULL, payload jsonb DEFAULT '{}'::jsonb, channel text DEFAULT NULL ) RETURNS jsonb AS $EOFCODE$ DECLARE - v_defn_database_id uuid; - v_defs_schema text; - v_defs_table text; - v_query text; - v_definition jsonb; - v_access_channels text[]; - v_key text; - v_bound_bucket_id uuid; + -- The frame whose function surface holds the definition: where the row + -- physically is (lookup database, schema, table) and whose it is (key). + frame record; + surface_found boolean := false; + definition_database_id uuid; + definition_query text; + definition jsonb; + access_channels text[]; + unreachable_key text; + unreachable_bucket_id uuid; -- The keys a tenant fulfilled with an explicit binding, paired positionally -- with the bucket each binding names: the two resolution routes are disjoint -- sets of keys, resolved by one query each rather than key by key. - v_bound_keys text[]; - v_bound_ids uuid[]; - v_buckets jsonb := '{}'::jsonb; - v_apis jsonb := '{}'::jsonb; + bound_keys text[]; + bound_ids uuid[]; + buckets jsonb := '{}'::jsonb; + apis jsonb := '{}'::jsonb; BEGIN - v_defn_database_id := coalesce( - resolve_capabilities.definition_database_id, - resolve_capabilities.database_id - ); + FOR frame IN + SELECT f.lookup_database_id, f.key_value, l.schema_name, l.table_name, l.entity_field + FROM app_scope.frames( + resolve_capabilities.database_id, + resolve_capabilities.scope, + resolve_capabilities.entity_id + ) WITH ORDINALITY AS f(scope, lookup_database_id, key_value, ord) + CROSS JOIN LATERAL function_resolution.definitions_location(f.lookup_database_id, f.scope) l + WHERE f.scope = resolve_capabilities.definition_scope + ORDER BY f.ord + LOOP + surface_found := true; + + -- to_jsonb of the row rather than a column list: the declaration set + -- grows, and a resolver that names columns fails on a database whose + -- function module predates the newest one. The row must carry the + -- frame's key in the module's recorded scope-key column; a global frame + -- has neither, and its key is asserted NULL. + -- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: the definitions table is located per frame + definition_query := format( + 'SELECT to_jsonb(d) FROM %I.%I d WHERE d.id = $1 AND %s', + frame.schema_name, + frame.table_name, + CASE + WHEN frame.entity_field IS NULL THEN '$2::uuid IS NULL' + ELSE format('d.%I = $2', frame.entity_field) + END + ); - SELECT l.schema_name, l.table_name - INTO v_defs_schema, v_defs_table - FROM function_resolution.definitions_location(v_defn_database_id, resolve_capabilities.definition_scope) l; + EXECUTE definition_query + INTO definition + USING resolve_capabilities.function_definition_id, frame.key_value; + + IF definition IS NOT NULL THEN + definition_database_id := frame.lookup_database_id; + EXIT; + END IF; + END LOOP; - IF v_defs_schema IS NULL THEN - RAISE EXCEPTION 'CAPABILITY_DEFINITION_SCOPE_UNPROVISIONED: database % has no function module at scope "%"', - v_defn_database_id, resolve_capabilities.definition_scope + IF NOT surface_found THEN + RAISE EXCEPTION 'CAPABILITY_DEFINITION_SCOPE_UNPROVISIONED: no frame of database % (scope "%") has a function module at scope "%"', + resolve_capabilities.database_id, + resolve_capabilities.scope, + resolve_capabilities.definition_scope USING ERRCODE = 'FR040'; END IF; - -- to_jsonb of the row rather than a column list: the declaration set grows, - -- and a resolver that names columns fails on a database whose function - -- module predates the newest one. - -- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: the definitions table is located per scope - v_query := format('SELECT to_jsonb(d) FROM %I.%I d WHERE d.id = $1', v_defs_schema, v_defs_table); - - EXECUTE v_query INTO v_definition USING resolve_capabilities.function_definition_id; - - IF v_definition IS NULL THEN - RAISE EXCEPTION 'CAPABILITY_DEFINITION_NOT_FOUND: no function definition % at scope "%" in database %', + IF definition IS NULL THEN + RAISE EXCEPTION 'CAPABILITY_DEFINITION_NOT_FOUND: no function definition % at scope "%" reachable from database % (scope "%")', resolve_capabilities.function_definition_id, resolve_capabilities.definition_scope, - v_defn_database_id + resolve_capabilities.database_id, + resolve_capabilities.scope USING ERRCODE = 'FR040'; END IF; @@ -1411,14 +1437,14 @@ BEGIN -- refused here rather than at the image, which cannot know. IF resolve_capabilities.channel IS NOT NULL THEN SELECT array_agg(c.channel) - INTO v_access_channels - FROM jsonb_array_elements_text(coalesce(v_definition->'access_channels', '[]'::jsonb)) AS c(channel); + INTO access_channels + FROM jsonb_array_elements_text(coalesce(definition->'access_channels', '[]'::jsonb)) AS c(channel); - IF NOT coalesce(v_access_channels, ARRAY[]::text[]) @> ARRAY[resolve_capabilities.channel] THEN + IF NOT coalesce(access_channels, ARRAY[]::text[]) @> ARRAY[resolve_capabilities.channel] THEN RAISE EXCEPTION 'CAPABILITY_CHANNEL_REFUSED: function % does not declare the "%" access channel (declares: %)', resolve_capabilities.function_definition_id, resolve_capabilities.channel, - coalesce(array_to_string(v_access_channels, ', '), '') + coalesce(array_to_string(access_channels, ', '), '') USING ERRCODE = 'FR041'; END IF; END IF; @@ -1436,7 +1462,7 @@ BEGIN -- function is not evaluated. -- ========================================================================= SELECT array_agg(b.key ORDER BY b.ord), array_agg(b.bucket_id ORDER BY b.ord) - INTO v_bound_keys, v_bound_ids + INTO bound_keys, bound_ids FROM ( SELECT k.key, k.ord, @@ -1448,7 +1474,7 @@ BEGIN k.key ) AS bucket_id FROM jsonb_array_elements_text( - coalesce(v_definition->'required_buckets', '[]'::jsonb) + coalesce(definition->'required_buckets', '[]'::jsonb) ) WITH ORDINALITY AS k(key, ord) ) b WHERE b.bucket_id IS NOT NULL; @@ -1458,10 +1484,10 @@ BEGIN -- invocation. The generated binding guard cannot check this — compute's -- published modules may not reference storage — so it is checked here, where -- a function would otherwise be handed the bucket. - IF v_bound_keys IS NOT NULL THEN + IF bound_keys IS NOT NULL THEN SELECT b.key, b.bucket_id - INTO v_key, v_bound_bucket_id - FROM unnest(v_bound_keys, v_bound_ids) AS b(key, bucket_id) + INTO unreachable_key, unreachable_bucket_id + FROM unnest(bound_keys, bound_ids) AS b(key, bucket_id) WHERE NOT EXISTS ( SELECT 1 FROM function_resolution.bucket_catalog_row( @@ -1476,9 +1502,9 @@ BEGIN IF FOUND THEN RAISE EXCEPTION 'CAPABILITY_BINDING_UNREACHABLE: capability "%" of function % is bound to bucket %, which database % may not reach', - v_key, + unreachable_key, resolve_capabilities.function_definition_id, - v_bound_bucket_id, + unreachable_bucket_id, resolve_capabilities.database_id USING ERRCODE = 'FR013'; END IF; @@ -1491,8 +1517,8 @@ BEGIN 'database_id', c.owner_database_id, 'source', 'binding' )) - INTO v_buckets - FROM unnest(v_bound_keys, v_bound_ids) AS b(key, bucket_id) + INTO buckets + FROM unnest(bound_keys, bound_ids) AS b(key, bucket_id) CROSS JOIN LATERAL function_resolution.bucket_catalog_row( resolve_capabilities.database_id, resolve_capabilities.scope, @@ -1508,11 +1534,11 @@ BEGIN WITH unbound AS MATERIALIZED ( SELECT k.key FROM jsonb_array_elements_text( - coalesce(v_definition->'required_buckets', '[]'::jsonb) + coalesce(definition->'required_buckets', '[]'::jsonb) ) AS k(key) - WHERE NOT k.key = ANY(coalesce(v_bound_keys, ARRAY[]::text[])) + WHERE NOT k.key = ANY(coalesce(bound_keys, ARRAY[]::text[])) ) - SELECT coalesce(v_buckets, '{}'::jsonb) || coalesce(jsonb_object_agg(k.key, jsonb_build_object( + SELECT coalesce(buckets, '{}'::jsonb) || coalesce(jsonb_object_agg(k.key, jsonb_build_object( 'bucket_id', r.bucket_id, 'key', r.bucket_key, 'type', r.bucket_type, @@ -1520,7 +1546,7 @@ BEGIN 'database_id', r.owner_database_id, 'source', 'tags' )), '{}'::jsonb) - INTO v_buckets + INTO buckets FROM unbound k CROSS JOIN LATERAL function_resolution.resolve_bucket( resolve_capabilities.database_id, @@ -1541,9 +1567,9 @@ BEGIN 'name', a.api_name, 'database_id', a.owner_database_id )), '{}'::jsonb) - INTO v_apis + INTO apis FROM jsonb_array_elements_text( - coalesce(v_definition->'required_modules', '[]'::jsonb) + coalesce(definition->'required_modules', '[]'::jsonb) ) AS s(selector) CROSS JOIN LATERAL function_resolution.resolve_api( resolve_capabilities.database_id, @@ -1555,20 +1581,20 @@ BEGIN RETURN jsonb_build_object( 'function_definition_id', resolve_capabilities.function_definition_id, 'definition_scope', resolve_capabilities.definition_scope, - 'definition_database_id', v_defn_database_id, + 'definition_database_id', definition_database_id, 'database_id', resolve_capabilities.database_id, 'scope', resolve_capabilities.scope, 'entity_id', resolve_capabilities.entity_id, - 'buckets', v_buckets, - 'apis', v_apis, - 'models', coalesce(v_definition->'required_models', '[]'::jsonb), - 'secrets', coalesce(v_definition->'required_secrets', '[]'::jsonb), - 'configs', coalesce(v_definition->'required_configs', '[]'::jsonb), - 'integrations', coalesce(v_definition->'integrations', '[]'::jsonb), - 'access_channels', coalesce(v_definition->'access_channels', '[]'::jsonb), + 'buckets', buckets, + 'apis', apis, + 'models', coalesce(definition->'required_models', '[]'::jsonb), + 'secrets', coalesce(definition->'required_secrets', '[]'::jsonb), + 'configs', coalesce(definition->'required_configs', '[]'::jsonb), + 'integrations', coalesce(definition->'integrations', '[]'::jsonb), + 'access_channels', coalesce(definition->'access_channels', '[]'::jsonb), -- Not coalesced: NULL means the handler declared nothing and gets the -- full platform set, an empty array means it declared none. - 'capabilities', v_definition->'required_capabilities', + 'capabilities', definition->'required_capabilities', 'payload', function_resolution.resolve_payload_refs( resolve_capabilities.database_id, resolve_capabilities.scope, @@ -1585,7 +1611,6 @@ CREATE FUNCTION function_resolution.validate_capabilities( entity_id uuid, function_definition_id uuid, definition_scope text, - definition_database_id uuid DEFAULT NULL, payload jsonb DEFAULT '{}'::jsonb, channel text DEFAULT NULL ) RETURNS void AS $EOFCODE$ @@ -1596,7 +1621,6 @@ BEGIN validate_capabilities.entity_id, validate_capabilities.function_definition_id, validate_capabilities.definition_scope, - validate_capabilities.definition_database_id, validate_capabilities.payload, validate_capabilities.channel ); @@ -1685,6 +1709,16 @@ DECLARE resources_schema text; resources_table text; resources_key text; + -- The routes plane's own redirects table, from the same route_module + -- registration that names the routes table; it shares the plane's + -- ownership key. NULL when the plane records none, which makes a redirect + -- binding a hard error rather than an unchecked insert. + redirects_schema text; + redirects_table text; + -- The hostname the site is routed on: a redirect binding's default to_host. + domains_schema text; + domains_table text; + domain_hostname text; -- The one ownership key value the whole install is keyed by (NULL at the -- global tier), and the entity the resolver starts its frame walk at. key_value uuid; @@ -1699,12 +1733,18 @@ DECLARE entry_task text; entry_service uuid; entry_anonymous boolean; + entry_to_host text; + entry_to_path text; + entry_status int; + entry_redirect_name text; target_column text; target_id uuid; service_found boolean; inserted int; + repointed_now int; installed jsonb := '[]'::jsonb; skipped jsonb := '[]'::jsonb; + repointed jsonb := '[]'::jsonb; query text; BEGIN IF install_route_bindings.database_id IS NULL THEN @@ -1746,9 +1786,9 @@ BEGIN IF EXISTS ( SELECT 1 FROM jsonb_array_elements(install_route_bindings.bindings) AS b - WHERE (b ->> 'target') NOT IN ('function', 'service') + WHERE (b ->> 'target') NOT IN ('function', 'service', 'redirect') ) THEN - RAISE EXCEPTION 'ROUTE_BINDINGS_TARGET_UNKNOWN: target must be "function" or "service"' + RAISE EXCEPTION 'ROUTE_BINDINGS_TARGET_UNKNOWN: target must be "function", "service" or "redirect"' USING ERRCODE = 'FR060'; END IF; @@ -1759,8 +1799,9 @@ BEGIN SELECT 1 FROM jsonb_array_elements(install_route_bindings.bindings) AS b WHERE (b ? 'task_identifier') AND (b ? 'service_id') - OR (b ->> 'target') = 'function' AND (b ? 'service_id') - OR (b ->> 'target') = 'service' AND (b ? 'task_identifier') + OR (b ->> 'target') = 'function' AND (b ? 'service_id' OR b ? 'to_path') + OR (b ->> 'target') = 'service' AND (b ? 'task_identifier' OR b ? 'to_path') + OR (b ->> 'target') = 'redirect' AND (b ? 'task_identifier' OR b ? 'service_id') ) THEN RAISE EXCEPTION 'ROUTE_BINDINGS_TARGET_AMBIGUOUS: a binding must carry only the key of the target kind it declares' USING ERRCODE = 'FR060'; @@ -1771,8 +1812,27 @@ BEGIN FROM jsonb_array_elements(install_route_bindings.bindings) AS b WHERE (b ->> 'target') = 'function' AND coalesce(b ->> 'task_identifier', '') = '' OR (b ->> 'target') = 'service' AND coalesce(b ->> 'service_id', '') = '' + OR (b ->> 'target') = 'redirect' AND coalesce(b ->> 'to_path', '') = '' ) THEN - RAISE EXCEPTION 'ROUTE_BINDINGS_INVALID: a function binding needs a task_identifier and a service binding needs a service_id' + RAISE EXCEPTION 'ROUTE_BINDINGS_INVALID: a function binding needs a task_identifier, a service binding needs a service_id, and a redirect binding needs a to_path' + USING ERRCODE = 'FR060'; + END IF; + + -- A redirect's destination is a path on a host, so it must read as one, and + -- its status must be one the edge can honour (the same set the redirects + -- table's own check constraint accepts — rejected here by name rather than + -- as a constraint violation naming no binding). + IF EXISTS ( + SELECT 1 + FROM jsonb_array_elements(install_route_bindings.bindings) AS b + WHERE (b ->> 'target') = 'redirect' + AND ( + (b ->> 'to_path') !~ '^/' + OR (b ? 'to_host' AND coalesce(b ->> 'to_host', '') = '') + OR (b ? 'status_code' AND NOT (b -> 'status_code' <@ '[301, 302, 307, 308]'::jsonb)) + ) + ) THEN + RAISE EXCEPTION 'ROUTE_BINDINGS_REDIRECT_INVALID: a redirect binding''s to_path must start with "/", its to_host (when given) must be non-empty, and its status_code (when given) must be 301, 302, 307 or 308' USING ERRCODE = 'FR060'; END IF; @@ -1838,8 +1898,8 @@ BEGIN -- 2. The routes plane serving THAT scope, resolved the one way every -- scope-aware consumer resolves it. - SELECT r.routes_schema, r.routes_table - INTO routes_schema, routes_table + SELECT r.routes_schema, r.routes_table, r.domains_schema, r.domains_table + INTO routes_schema, routes_table, domains_schema, domains_table FROM app_scope.routing_tables(install_route_bindings.database_id, plane_scope) AS r; IF routes_schema IS NULL OR routes_table IS NULL THEN @@ -1848,13 +1908,18 @@ BEGIN USING ERRCODE = 'FR051'; END IF; - -- The routes plane's own registration carries its ownership key and, when - -- the plane has one, the column naming the site a route renders as. - SELECT rm.entity_field, rm.serving_site_field - INTO routes_key, routes_serving_site_key + -- The routes plane's own registration carries its ownership key, the + -- column naming the site a route renders as (when the plane has one), and + -- the redirects table a redirect binding writes (when it records one). + SELECT rm.entity_field, rm.serving_site_field, rs.schema_name, rt.name + INTO routes_key, routes_serving_site_key, redirects_schema, redirects_table FROM metaschema_modules_public.route_module AS rm JOIN metaschema_public."table" AS t ON t.id = rm.routes_table_id JOIN metaschema_public.schema AS s ON s.id = t.schema_id + LEFT JOIN metaschema_public."table" AS rt + ON rt.id = rm.redirects_table_id + AND rm.redirects_table_id <> uuid_nil() + LEFT JOIN metaschema_public.schema AS rs ON rs.id = rt.schema_id WHERE s.schema_name = routes_schema AND t.name = routes_table; @@ -1923,12 +1988,18 @@ BEGIN -- guard auto-creates '/' carrying the target of a hostname's FIRST route, -- so installing onto a bare hostname would make '/' the first binding's -- target. A site that is not routed yet is a hard error, not a silently - -- empty install. + -- empty install. A route this install stamped as serving the site counts + -- too: once a redirect has taken the root over, the pages (serving-site + -- stamped, function-targeted) are what still tie the host to the site. -- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: the routes plane is named by app_scope.routing_tables query := format( - 'SELECT r.domain_id FROM %I.%I AS r WHERE r.target_site_id = $1%s ORDER BY r.path LIMIT 1', + 'SELECT r.domain_id FROM %I.%I AS r WHERE (r.target_site_id = $1%s)%s ORDER BY r.path LIMIT 1', routes_schema, routes_table, + CASE WHEN routes_serving_site_key IS NULL + THEN '' + ELSE format(' OR r.%I = $1', routes_serving_site_key) + END, CASE WHEN routes_key IS NULL THEN ' AND $2 IS NULL' ELSE format(' AND r.%I = $2', routes_key) @@ -1943,6 +2014,15 @@ BEGIN USING ERRCODE = 'FR054'; END IF; + -- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: the domains plane is named by app_scope.routing_tables + query := format( + 'SELECT d.hostname FROM %I.%I AS d WHERE d.id = $1', + domains_schema, + domains_table + ); + + EXECUTE query INTO domain_hostname USING domain_id; + -- 6. Per binding: resolve the declared target at THIS (scope, entity) and -- install the route if it is not already there. FOR entry IN SELECT * FROM jsonb_array_elements(install_route_bindings.bindings) @@ -1967,6 +2047,52 @@ BEGIN ) AS fr; target_column := 'target_function_id'; + ELSIF entry_target = 'redirect' THEN + IF redirects_schema IS NULL THEN + RAISE EXCEPTION 'ROUTE_BINDINGS_REDIRECT_PLANE_NOT_FOUND: routes plane %.% records no redirects table, so there is nowhere a redirect target could live', + routes_schema, routes_table + USING ERRCODE = 'FR055'; + END IF; + + entry_to_host := coalesce(entry ->> 'to_host', domain_hostname); + entry_to_path := entry ->> 'to_path'; + entry_status := coalesce((entry ->> 'status_code')::int, 302); + -- Names are owner-local, so the hostname keeps two sites' roots apart. + entry_redirect_name := coalesce(entry ->> 'name', format('%s %s', domain_hostname, entry_path)); + + -- The redirect row, found by name or created: same insert-if-missing + -- contract as the routes, so a re-run never rewrites a redirect a + -- tenant has since retuned. + -- pgsql-lint-disable-next-line no-dynamic-sql -- lookup-only: the redirects plane is named by the routes plane's own route_module registration + query := format( + 'SELECT rd.id FROM %I.%I AS rd WHERE rd.name = $1%s', + redirects_schema, + redirects_table, + CASE WHEN routes_key IS NULL + THEN ' AND $2 IS NULL' + ELSE format(' AND rd.%I = $2', routes_key) + END + ); + + EXECUTE query INTO target_id USING entry_redirect_name, key_value; + + IF target_id IS NULL THEN + -- pgsql-lint-disable-next-line no-dynamic-sql -- write-only: insert into the redirects plane named by the route_module registration; every value is a bound parameter + query := format( + 'INSERT INTO %I.%I (%sname, to_host, to_path, status_code, preserve_path, preserve_query) + VALUES (%s$1, $2, $3, $4, false, true) + RETURNING id', + redirects_schema, + redirects_table, + CASE WHEN routes_key IS NULL THEN '' ELSE format('%I, ', routes_key) END, + CASE WHEN routes_key IS NULL THEN '' ELSE '$5, ' END + ); + + EXECUTE query INTO target_id + USING entry_redirect_name, entry_to_host, entry_to_path, entry_status, key_value; + END IF; + + target_column := 'target_redirect_id'; ELSE entry_service := (entry ->> 'service_id')::uuid; @@ -2026,8 +2152,34 @@ BEGIN install_route_bindings.site_id, entry_anonymous; GET DIAGNOSTICS inserted = ROW_COUNT; + repointed_now := 0; + IF inserted = 0 AND entry_target = 'redirect' THEN + -- The root guard's placeholder — the path exists and still targets + -- the site this install is for — is the one row a redirect binding + -- takes over. Anything a tenant has pointed elsewhere stays. + -- pgsql-lint-disable-next-line no-dynamic-sql -- write-only: update the routes plane named by app_scope.routing_tables; every value is a bound parameter + query := format( + 'UPDATE %I.%I AS r + SET target_site_id = NULL, target_redirect_id = $3, anonymous = $5 + WHERE r.domain_id = $1 AND r.path = $2 + AND r.target_site_id = $4%s', + routes_schema, + routes_table, + CASE WHEN routes_key IS NULL + THEN ' AND $6 IS NULL' + ELSE format(' AND r.%I = $6', routes_key) + END + ); + + EXECUTE query USING domain_id, entry_path, target_id, + install_route_bindings.site_id, entry_anonymous, key_value; + GET DIAGNOSTICS repointed_now = ROW_COUNT; + END IF; + IF inserted > 0 THEN installed := installed || jsonb_build_array(entry_path); + ELSIF repointed_now > 0 THEN + repointed := repointed || jsonb_build_array(entry_path); ELSE skipped := skipped || jsonb_build_array(entry_path); END IF; @@ -2069,6 +2221,7 @@ BEGIN 'routes_schema', routes_schema, 'routes_table', routes_table, 'installed', installed, + 'repointed', repointed, 'skipped', skipped, 'serving_site_field', routes_serving_site_key, 'serving_site_backfilled', stamped @@ -2076,7 +2229,7 @@ BEGIN END; $EOFCODE$ LANGUAGE plpgsql VOLATILE; -COMMENT ON FUNCTION function_resolution.install_route_bindings(uuid, text, text, uuid, jsonb, uuid) IS 'Install a set of route bindings — a JSON array of {path, target, …} entries, each NAMING its target kind ("function" with a task_identifier, or "service" with a service_id) — onto one site as ordinary route rows, at ONE scope for ONE entity. The scope and ownership key are read from the named sites plane''s own site_surface_module registration, located along the caller''s frames (nearest first) so a shared serving plane hosted by an outer frame''s database resolves for the tenant consuming it — never a caller-supplied or generated literal — and that one (scope, key) then names the routes plane (app_scope.routing_tables), pins the site, route and service reads, starts function_resolution.resolve''s frame walk, and stamps every inserted row; a service target is proved to exist in the same-scope resources plane the routes plane''s registration records, which is the plane target_service_id FKs. Idempotent per (domain_id, path); raises on a malformed document, an unknown or ambiguous target kind, an unregistered plane, a scope with no routes plane, a missing entity key, an unknown site, an unrouted site, a scope with no resources plane, an unresolvable service, or an unpublished task.'; +COMMENT ON FUNCTION function_resolution.install_route_bindings(uuid, text, text, uuid, jsonb, uuid) IS 'Install a set of route bindings — a JSON array of {path, target, …} entries, each NAMING its target kind ("function" with a task_identifier, "service" with a service_id, or "redirect" with a to_path) — onto one site as ordinary route rows, at ONE scope for ONE entity. The scope and ownership key are read from the named sites plane''s own site_surface_module registration, located along the caller''s frames (nearest first) so a shared serving plane hosted by an outer frame''s database resolves for the tenant consuming it — never a caller-supplied or generated literal — and that one (scope, key) then names the routes plane (app_scope.routing_tables), pins the site, route and service reads, starts function_resolution.resolve''s frame walk, and stamps every inserted row; a service target is proved to exist in the same-scope resources plane the routes plane''s registration records, which is the plane target_service_id FKs. A redirect binding writes a row in the routes plane''s own redirects table (same-host unless to_host is given, 302 unless status_code is given) and is the one kind allowed to repoint an existing route: the root guard''s placeholder still targeting the site being installed onto. Idempotent per (domain_id, path); raises on a malformed document, an unknown or ambiguous target kind, an unregistered plane, a scope with no routes plane, a missing entity key, an unknown site, an unrouted site, a scope with no resources plane, an unresolvable service, or an unpublished task.'; CREATE FUNCTION function_resolution.install_mantra( database_id uuid, @@ -2115,19 +2268,29 @@ BEGIN USING ERRCODE = 'FR060'; END IF; + -- Two shapes only: a page ({path, task_identifier}, no target kind — it is + -- always a function), or a redirect ({path, target: 'redirect', to_path}) a + -- host given over to the page set uses to send its root at sign-in. A + -- service binding, or a page that names a kind, is a broken preset. IF EXISTS ( SELECT 1 FROM jsonb_array_elements(install_mantra.bindings) AS b WHERE jsonb_typeof(b) <> 'object' OR coalesce(b ->> 'path', '') = '' - OR coalesce(b ->> 'task_identifier', '') = '' - OR b ? 'target' + OR CASE b ->> 'target' + WHEN 'redirect' THEN coalesce(b ->> 'to_path', '') = '' OR b ? 'task_identifier' + ELSE coalesce(b ->> 'task_identifier', '') = '' OR b ? 'target' + END ) THEN - RAISE EXCEPTION 'MANTRA_BINDINGS_INVALID: every binding must carry a non-empty path and task_identifier, and no target kind' + RAISE EXCEPTION 'MANTRA_BINDINGS_INVALID: every binding must carry a non-empty path and either a task_identifier with no target kind, or target "redirect" with a to_path' USING ERRCODE = 'FR060'; END IF; - SELECT jsonb_agg(b || jsonb_build_object('target', 'function')) + SELECT jsonb_agg( + CASE WHEN b ->> 'target' = 'redirect' THEN b + ELSE b || jsonb_build_object('target', 'function') + END + ) INTO function_bindings FROM jsonb_array_elements(install_mantra.bindings) AS b; @@ -2142,4 +2305,4 @@ BEGIN END; $EOFCODE$ LANGUAGE plpgsql VOLATILE; -COMMENT ON FUNCTION function_resolution.install_mantra(uuid, regclass, uuid, jsonb, uuid) IS 'Install the Mantra page set (a JSON array of {path, task_identifier}, which the generated verb reads from the content_presets catalog at kind ''route_bindings'') onto one site as ordinary function-target routes. The sites plane arrives by reference as a regclass, so a generated caller never spells a schema name in a bare string literal the platform export''s AST rename cannot follow. A thin wrapper holding the Mantra document contract — every entry names a task, none names a target kind — over function_resolution.install_route_bindings, which owns the one-scope install: scope and ownership key read from the sites plane''s own registration, the routes plane from app_scope.routing_tables, resolution at that same (scope, entity), idempotent per (domain_id, path).'; \ No newline at end of file +COMMENT ON FUNCTION function_resolution.install_mantra(uuid, regclass, uuid, jsonb, uuid) IS 'Install the Mantra page set (a JSON array of {path, task_identifier}, which the generated verb reads from the content_presets catalog at kind ''route_bindings'') onto one site as ordinary function-target routes. The sites plane arrives by reference as a regclass, so a generated caller never spells a schema name in a bare string literal the platform export''s AST rename cannot follow. A thin wrapper holding the Mantra document contract — every entry names a task and no target kind, or is a {target: "redirect", to_path} entry sending a path (a dedicated host''s root) at one of the pages — over function_resolution.install_route_bindings, which owns the one-scope install: scope and ownership key read from the sites plane''s own registration, the routes plane from app_scope.routing_tables, resolution at that same (scope, entity), idempotent per (domain_id, path).'; \ No newline at end of file diff --git a/packages/function-resolution/verify/schemas/function_resolution/procedures/resolve_capabilities.sql b/packages/function-resolution/verify/schemas/function_resolution/procedures/resolve_capabilities.sql index 0e6fe50be..54ab98319 100644 --- a/packages/function-resolution/verify/schemas/function_resolution/procedures/resolve_capabilities.sql +++ b/packages/function-resolution/verify/schemas/function_resolution/procedures/resolve_capabilities.sql @@ -2,6 +2,6 @@ BEGIN; -SELECT assert_function('function_resolution.resolve_capabilities(uuid, text, uuid, uuid, text, uuid, jsonb, text)'::regprocedure); +SELECT assert_function('function_resolution.resolve_capabilities(uuid, text, uuid, uuid, text, jsonb, text)'::regprocedure); ROLLBACK; diff --git a/packages/function-resolution/verify/schemas/function_resolution/procedures/validate_capabilities.sql b/packages/function-resolution/verify/schemas/function_resolution/procedures/validate_capabilities.sql index 772cad731..636cb3d46 100644 --- a/packages/function-resolution/verify/schemas/function_resolution/procedures/validate_capabilities.sql +++ b/packages/function-resolution/verify/schemas/function_resolution/procedures/validate_capabilities.sql @@ -2,6 +2,6 @@ BEGIN; -SELECT assert_function('function_resolution.validate_capabilities(uuid, text, uuid, uuid, text, uuid, jsonb, text)'::regprocedure); +SELECT assert_function('function_resolution.validate_capabilities(uuid, text, uuid, uuid, text, jsonb, text)'::regprocedure); ROLLBACK; diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_module/table.sql index e42fae3a9..2522f1f90 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_module/table.sql @@ -18,6 +18,8 @@ CREATE TABLE metaschema_modules_public.billing_module ( -- Meters table: defines what you track (quota, boolean, credit_pool) meters_table_id uuid NOT NULL DEFAULT uuid_nil(), meters_table_name text NOT NULL DEFAULT '', + credit_packs_table_id uuid NOT NULL DEFAULT uuid_nil(), + credit_packs_table_name text NOT NULL DEFAULT '', -- Plan subscriptions table: assigns plans to entities with lifecycle plan_subscriptions_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -45,6 +47,7 @@ CREATE TABLE metaschema_modules_public.billing_module ( -- Generated functions record_usage_function text NOT NULL DEFAULT '', + grant_meter_credits_function text NOT NULL DEFAULT '', sweep_expired_subscriptions_function text NOT NULL DEFAULT '', rollup_usage_summary_function text NOT NULL DEFAULT '', @@ -68,6 +71,7 @@ CREATE TABLE metaschema_modules_public.billing_module ( CONSTRAINT schema_fkey FOREIGN KEY (schema_id) REFERENCES metaschema_public.schema (id) ON DELETE CASCADE, CONSTRAINT private_schema_fkey FOREIGN KEY (private_schema_id) REFERENCES metaschema_public.schema (id) ON DELETE CASCADE, CONSTRAINT meters_table_fkey FOREIGN KEY (meters_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, + CONSTRAINT credit_packs_table_fkey FOREIGN KEY (credit_packs_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, CONSTRAINT plan_subscriptions_table_fkey FOREIGN KEY (plan_subscriptions_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, CONSTRAINT ledger_table_fkey FOREIGN KEY (ledger_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, CONSTRAINT balances_table_fkey FOREIGN KEY (balances_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, @@ -83,6 +87,7 @@ CREATE INDEX billing_module_meter_credits_table_id_idx ON metaschema_modules_pub CREATE INDEX billing_module_meter_defaults_table_id_idx ON metaschema_modules_public.billing_module ( meter_defaults_table_id ); CREATE INDEX billing_module_meter_sources_table_id_idx ON metaschema_modules_public.billing_module ( meter_sources_table_id ); CREATE INDEX billing_module_meters_table_id_idx ON metaschema_modules_public.billing_module ( meters_table_id ); +CREATE INDEX billing_module_credit_packs_table_id_idx ON metaschema_modules_public.billing_module ( credit_packs_table_id ); CREATE INDEX billing_module_plan_subscriptions_table_id_idx ON metaschema_modules_public.billing_module ( plan_subscriptions_table_id ); CREATE INDEX billing_module_private_schema_id_idx ON metaschema_modules_public.billing_module ( private_schema_id ); CREATE INDEX billing_module_schema_id_idx ON metaschema_modules_public.billing_module ( schema_id ); @@ -97,6 +102,7 @@ COMMENT ON COLUMN metaschema_modules_public.billing_module.meter_credits_table_i COMMENT ON COLUMN metaschema_modules_public.billing_module.meter_defaults_table_id IS '@module_table'; COMMENT ON COLUMN metaschema_modules_public.billing_module.meter_sources_table_id IS '@module_table'; COMMENT ON COLUMN metaschema_modules_public.billing_module.meters_table_id IS '@module_table'; +COMMENT ON COLUMN metaschema_modules_public.billing_module.credit_packs_table_id IS '@module_table'; COMMENT ON COLUMN metaschema_modules_public.billing_module.plan_subscriptions_table_id IS '@module_table'; COMMIT; diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_provider_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_provider_module/table.sql index 1caad4c3d..0b24ed29d 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_provider_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_provider_module/table.sql @@ -75,6 +75,13 @@ CREATE TABLE metaschema_modules_public.billing_provider_module ( -- The webhook side of a completed purchase: the system-only seam that moves -- an entity onto the plan a verified provider event names. activate_plan_subscription_function text NOT NULL DEFAULT '', + -- Its read half: the system-only seam that names the active + -- plan_subscriptions row a provider's subscription object is recorded + -- against, for jobs that hold no entity membership. + get_active_plan_subscription_function text NOT NULL DEFAULT '', + get_billing_subscription_by_entity_function text NOT NULL DEFAULT '', + get_billing_subscription_by_external_id_function text NOT NULL DEFAULT '', + get_plan_pricing_by_external_price_function text NOT NULL DEFAULT '', prefix text NULL, diff --git a/packages/metaschema-modules/sql/metaschema-modules--0.45.0.bundle.tar.gz b/packages/metaschema-modules/sql/metaschema-modules--0.45.0.bundle.tar.gz index 782d9ba1fa7cfe6b4f5168506082558d2b51bc11..bd532950ae1153483c2d2549a481d40859aec92e 100644 GIT binary patch delta 101237 zcmV)HK)t`quLhd21_~dG2mk;800065kqU4FV$AumeT4&mgcxP9kidmp@z80+B$k3P zL^R=ugj5ryw4~4|84{_PC7Oo}SpYBvfckm=)6e?EyQch%f0y0Ix%~O^a~XpDM|cIU zz{mLSW@++gtMh-{4ZnVj|8AZ}wGTeVZ9}L50*GA#cnQb{AYLHx0)YP=crR!i{6q2A zZ*+1KM_w_1y^_&C1^*+E#sqDrZ-Yp?$ZYV(wlMz`AOQI#5SI{onjm~Z;r|Y@Pf@OK zgMTRh{tZ^71e=xhqUKPWnzknBX~ zzRZ9JM(sXSJJ4K{yzrn1t--GYb#+M<4~o1x1iO5Hz1?h&hxPS#@#{ccO&s(=QCEXs z2kQ1_$2=%H_hQP zQT%Td`(z(}9q3CRvKo-~*8v*R*d7#l4LEk7vNpx8&+0_vD66v;zph{LVOv`DD0ZYV zd)V}UZGXQG)YYd;c3h(55~52a)|Tj)6xO5IX%{wUa(3U0=n~O2O21uZJ$|;up0v|s zX4C99dhNkgl=Rq}%~*FiKpOH+dlAk~L3k6!9f)qqknK)1zC>UE(YuHQB_b|KgX~tO zw)j`&D^0DAX5PQrH-EQ1eZgQ})^P|9;LsX>W0EhiH9?t-Rs6VosTXf*GLw(WsBQjW zILZoIr(%s+8$TD?N|2{ge~RLpE;6zv@4DA+>87Y`Kn==Z*BWhw>Kw?}1Zu87*-oE- zPYQT?qhiu>0o8%2L9b(`EKzsyGZ?pjP+iW(=MNM7jn5uZJein zrDrtAZ_^~tm*0C{rX_W93GXJ+_o9q-p==XsK~kiQ3oT^{_a zRWJR^-^^r|eX{q#+MwXs>{ezrfKWbv@56$DCe?~|*q!z@*e!^D_v7NFUj;rBslq8J zaLR7|W?1qYQd>|N?VqsN%<|mM6pS}1X9hjLZi-YX)8U;av2*r zO=4S26ciIh@lB^=s<8;I7xl%)Zhb=4z^;*8GR=#T)&#F#|F9YrOp}|NZdPJbm0T}c z#Rt^>OYcJ7PiggjP~?;MptP}wuP>?XrB)5-{j@Fye4}J+zCEcBdSM4A zKwEMXlv*wp+#P zFn5W3`Ko-uKk*rs79UQ!Zo0GiLX+{ zFBhqfCitNkw!X4Esad;!6|l$fZ#J@ZlUeNr-8$O4T>AdEKbCI<^Snxk2>cpJW?`v<2G4fC%z|0W@23tcs~+?H;$!)C0X3lPhlv^*W=-gIr|G+qEGevzqNy}sqOA68V~m(2E7#1_~CR4(2Q zjCD~tSJsEdhJyd@~fUc)(HudFL_UF9%;+@Fb)5PHvB-Vm2$dt2L zWhShBx!_Bb-v)8ACY_9(`SQtF-*-*)8ZR(IFL9^yx&eHt@YwXyKMzz8u?# zx4`HnhDB!*w_q=QlW`V#B$lMkQd>E3vfvqf0n5)^q=G$v?-VEA>CXr;{u*~jNiK8aR*vaw52Z3CGHcS)89-VwY&tUUC0l%r?!Sl+4VW}eKm!1rdE zezreWL%yqjNO@&Cg}R#C#q?2z5cvS%3)nI=R117}fm906%O76_pX`09{gm#TpM8pAbLm%^2~3pD zWUgK*C z-110&?AQ)g_T)uf+qDO1fgN;Cj^W`O$sXiIS~hE~bX6*R^(BHRzVV^Qp!%+5WYf&q+IfZcn?%zc=x_T^dhCbueU8*0GGVXIVk@ zw&d`7Vl=Iu7CE3(8QbTbHqq<>EFjWakjmLCkT*A}y^#Z!(EbLSeU1YJx}?i31mMDv zxIkm)WT;;7T?@XM&DAG+zbv>|4(jB&+i3)P(rA7#T*9qbj^PIwwr2S{Y z&APRcD2&Cb81c_l>h#vu`f?lT+v-&t>uHkNEUTh-OOuJNc->C`69 z3uXHLMPX5;$(O=xn$M<*G-W5&pnTDPSUr{9iy!y3)IH9T)6kM=lV9x>_y!6Z80W(( z->$vflWmQigO9Sh4oO_mG4Q{ruJl9%B@qK{w>{mDdr6hBOLVdT9xQ;@QSu^);!8J; zZf^6kyl$Do=(88RdbX^vn?`Y`^x!?6n$MJu=b0xultR?tzk3Ylw|4jZ&8#(lm(>J4 z5*hckrS7w8x~0I@LtjNGs}!~E^q#SDV0N2m_aeEI&an=&{u5V)^~I`?QS3|BiX&#> zANiFJ7$xV|l*+rn{(bU%uOcU){ zQd|nW6f<4akh%`#ed%w1Fm6JB-6Fo!C++gB>|#-SpI!JM$DNPLm-U)mD6MOv-iy*s zjRrQMZc*x{c9mxRV)1Tvv2Np~pUaxn+xsl?-+J+=tYg(hw7k<7Z|VZyoflzIr3zZR zW_KZP@nh+fPvYr)VPxDzvG-t9Bdf0-{3b+j$Lqg$fAau zn^B9Rt^X4*F4JVXc0qYGwQm})BEMR^zqoI_JVO1;|0CFaeUY^1H8Q_7{b~D;!P9*& zKK&Rknq^nVwI2bl2)zPNKgQ+zlbOtK{W0dB{m*HnOq71JJL}Vru@`z#YBT@hY&yHi z{xZFo&m(i0WZCRuZAkfl*M+}R-RlXFyDvt230f|{e+-&pd#JPBq+-<{uH|L)bBU;F?1_TBZ%57)u_Z~yuFhnGR)48^;DzkB!c&4=Kp_b-2U z9lU*Wa7^&wZQ%7{uhwdR;r*}sO=0e$xYVPQ^w%Hbm#;ruzYD&*{{H1puRjDozI*kD zSFf*scl|zi)ndL9{>#^|J@gMRfBX9SeI1(P!FYfDFF#$s`S#dgzW?dXw;x`;eRE_m zYaBb;SJ~v)(ZFnfa%>CC$N1Z~Km73O!>=pxy4a`7`%Dn0ju0S(GLnVFK%fnQP(Y-W zhS)I&tP@Bf02r4}N(~LR4gi9YFibqDCjHN)3`p%~o96X0pn6s-1Kt(S+RFf!CU-kh z;JbHke{3fM4)BF3Dg`nEhFocELkErHn$6Zg>;lD380Y@TgZ@b3@gT!Wg+K|8$^r|lwd8Ka1=VfPNg;6618??kgpBe z{00@LPkeria)O-Z3^~~;a2xBY)#+x$J0)OHttG&L)+YXYIILR<|wq59kM#;m1! ze0dox?2Q*4uI{SQtBYmcyojzEQ3{@Yj6J!L3A~x(7v~Qz-~F%P_t*bxxnTW+&-~f* zi}KZF;CeCU&D#&bo1b34uAZ0wU*WO+&c>vZIGQe}tr{avIu9)WzwGziev}WirjstC z*5MR?wq)TeT_e7H;qtO5_*i5^JX<#FTvVc!jDKFf?GuPrlP%yr^&;`<7GvsP-GW{I z{q5T~??1eI`RdIFpNi;w!@=+0zPo<)yEny$eYW-qp9k-*zrTK0O0TsAR4tsP>*$$( z_3fMByX)82AFhLMU%vnL<#*Q?JMgOOn|45dE;xMvUgf%J32gl%?t#G?YP#_qyg zuHFOSDs8YWysgc#3wLMt41xbKe!ebTUcLG5`rm>^5i(g@O_Rv{?C0wxi8dsQ$Dk$r z&F?%6g)Onr0gG|q_kq0g?T4YTD~LPbG7=7(u#1!OLvgqU`E9feeBRjD`VMry-%%ES zB(quK>$~!#?c@Sm6ZCMEQOqTOh(NAAA=F>?kXK|DVv&1`X1DQX6QACJ-v;JX& zJDGm+L82`9ax3#adG4u63WAF1sy8ou zt)Ml5x-YOulWEx_BZ%TMaFtBwckxw!X(C_0`QVxS?c3Ks{m_foSIY(W>V5EZgXE`e z3~>h;Lkxt90Z6bk(rKZPLfjxll|U9+0t^jBD6|orVh{?fp@o`K0j)lRgQBID*6hIO zt!%aO_&`gHq?9Nppi~wUX(3X8=nygBs1;N&OqjzE2!t7;&>ASAK~ySA@EJUR8!Z`n z(DPBew#V_&%-GT;qNg&;TDn894ILnuIL#fWbPyU(FsX2bN@D9S?M~z{qXJ6M{nk%H}mWEX4Xrbj#^fe*gD|JY=GTa!)gS7(2LoC!5FZ+ zL+ztkHG*&By==f^6!?#x%aJ{o^_(8+w-iuVf+=7WL(Zj=l9Nzcr#PpCItB?h5L*yh z;1h^QsF`(AN=Are7}zs^`Yrb=Zv(uR_4Br2rp1Orse}uK4MW3?pwQ=8DM=|cP)OyR zlG12LB+{6N!ZE23MwVg{^6-p4%e~AT!DCrJe|LW+r3`Upyw4mu#UL{XVkwy7hJ=&> zYnfz55+G102^S%>+(1B$ppq)GH+>61Obr#5W6QKRzX;HwBB4@$4s(DRw%R(Y7`2d- zkhn0!1~Uw>WP*p%jp(mz6048i%35z_2ZjF8v-#-RJg;Z-s2cYHuja8e?!z9<<7wPI zppL0=xAJ5jQR5!s#q6P5)*sJMODABcxHeRV7#gQEhRQmIoZ~Vi&@rTqCW=TM0$`z| z$b=Y$%o#@Pk$jkc+ntfWF8Ae5-{&)WF4x*XKM1E~Ii#=?Ctbad-ei6I`|CIFC-1I* zc>9N!uU`at^2x?)Go|(}`D{&aS#9kihdYRqFCJvJEU>LuQsG~<_3Mhxa$;jboa&{p9rdZAo&2!{MbVA#vbbnJG10ejI<>xkSi50t4;d+AIImz0=Ze9|-@z`^~b--yXL^?v>ltDc~Z>cz~sP1lcY*M@B z;y>UWC001X3^kl_!noDaN=c>Fh$F(BqlQ9gA$3j=EV#4AIb@mDoP+?g2jFVnQM8A9 znO9S`N{U4sF>DNwI0(0y*@ z5J=`QkPvAuq%=~8p&}S?L^ud-2(6P4D?u^R&V&+cA`nx=8lr`zV0^do`Yt}HN4cvV z*27kR>SHDiw2*okN6l7ICvWzcme5E>&;a{qB-7_i9{N+7Ip?r&&S!%>H1p$hmd73^ z@|YGxyRgCN7R1huXbF343u5m&>4MWph;)TMh6S-DC)!ax%z{`8S=6g#z=Z-s4q!+z z0)jihg(BEN7HUB#3NO+WXjDjljNp&}0>(~>UNl&X%-5I=-9+6v!U?;$ zj2uo_`9@Fd9j(p6+$Fc0NUvkpj#KDx`Vs-wNo*7{m;$Jn5Qsy~Aw$wq0}LS=aZM#= zj4FWRDQgtJOv3(seuH!j`&2Kw%lZCDs08d4^RK_LN75n!;POmXfDC>6BKIKw4> z1%!q^H4Gb!RLC$?5;39cx=WqPKyPH>a07jJ>h10neXvhQ>4#-eyjU|UbI0m^P z2x_FblNfRr3P_9=1QTEcQ_x_F_8I6>LT5q(DB;Wqj0HD@VPOo@oFWdmus|Bfd1(B9 zT8^M#j%lVXqDtfO4D`BvJlH@#nP@wIkzm` zrPRhCpTehz#vDMOv_KqlP&xue*Bjy_z4I56TeGlLR(CFZE!x9A8qcFc)MIoMO`_iM zQw=Y`HjnjP_#=}QPyhI*<QKpT|ndO6VbBx;f-`=hUo(APieAn+SDo!C$hEl|w3?(-XGj`6% z=Ydmwhv!XHHQ!Y%o)_+ zoJQ7Oc8+0c)dT2ma5*UmH`q~#C?(c7VJ!|FBM4%vj3m+;jhHn;Q%xm*po&t6DIruC zj)dB0a8ZFAp$JNftZ%*yw6q3=Ak@kz2tyE}P*N0z7D@+*FT`PpLoA$>fB-h8!PT_Q z2b*0Ds#}vXxUB{5Q~&m9e%nf43vDk?=k}tdqF26Kr{J~F?Y{ELnNz56r_$a|thk*) zZQCF6I=b4nu^>9Y9|LxOAGl+vPRoVTk>6v$-dLy&ZX-mP4S^$oON^b>2w_NzZag?t zh}w{bh)ao>FXLT4V=K(QJ|^z4HO+YpKq;B z3+nGs+nB8l<2d%=PE2VisKby^CZ#hNA_grKP>0YGs}+U@hLTf;7_}BE!YBvuh7z?*1}=DJ}GEJAoq%vC!A7gw8^Vs6onKSO+jO+=bd%tSJ;s8fgK=Km!46 zUBB`*|1mbwNNOO%LiumNb%?lfArm1~i27T`l%hmCqX^SDv^InW8Gt1MP?_=kWm}^0 zu^r80^X$hKGY_uC%y?Sreka+eTI#{pF(YZItsxB8QronDgc(aq9nk)zy*}0uk0XZr z3s}QYNNtF;0yAsl;+36<}&5c^(=et<6piUZDq4WvDg2W^W|xD z<1f4a9LaTm3agotG`lM9f%o-jlM>>y;)lW#dj4XGdT{wq%Q>H}(ew0TVbopzQvttH zC^J7kc=oh>=wA$OZEBxi1UJ(}$*F(cbKt6+wR&w;A9!(UZ(_mw;@l}Y{@JE!Wc=Ft za%*EBuDmGdTQIa}U6J3~tYCR=r3n%j+{)DG#D9)|MPRWYuv|zBq?TGxf%6u|>klj5 zl=7;pv$J~>plV%LtGz2cJ(ba&HIu&M>!9yyn=AG5>0Y>PMrLz$7v1)j|Ic$EvsOSvLv zsddqR&sV|Ad7fMvn?}B+N?|~kb5#3(u|A7cYwu?H{ncV;`0=d>yDoQhWuqr)@b2~d z;8`)i|4Ythmj!Xly}x?1{Nb`d$vofK+*=D`eE+$>7x!<|fxfwRcR_FOsZssf8}elr z_Llhh8*Wy#PV@Sbtf6^x#f}QPUS93u&?HZP|F&ZqrwwLYUIstK(O>4?a~t~`v!ghF z5hSr)?6`$gp4oJz>iB<@GS&ZAC3lzF;!kg0{mV}ab7oUDoXiVglVWg5`(B%7Td`b| zFc(3khLzxVy!~5%n-6$Wo_~r9xw)nKKGIaK^&kT8~HnAlc@0ZCD2&BFsQ2 z0T9-3&X81C3JR^_mKcqZ!9r>z9ahMHpwKal00&%A<20maywahTb;HACo6~lWlObui zl_Am;Lv59%77)RqQK1eUskTaM#AuRxoN`o*Hz*j{$#`orxJ8k^p^<@@Fk7euo1tga;h6Jf)}LJWhghxB5DrYv7@H z1V$A#9^@IzPWP ziQ$iDxetiq53*5@ZlyNdKInUY;c_KH0XT6GV2FhYkwBUl8-`q1Lp5~NB5H-;6iGyc zAzFF!OCUIQ!Ods8y21OaD!ADt>?{R0>u8i|1Fe$=_P1bJ2CPR*78pNO;24Pl^=SfS z0Iy@Jz*m(hu;4+#qjJ@C3%_p+Iutu!4w%TBo7CRO?&1E1;q4*k_p_dVK-WjMfmcMj zyMo#n)Edg95=?hJzF^}7?V;bKvM=0?p=}^aeH+=&1)`JGevzr^3b=WOHt?%1-o=vG zpC__-GfjOa$No3{4Jd8q%x}89HOZ5ko2l*e@}%fz&~C)xSLd_BTe{q@2Pdw&E37v7 z{t;PjXW3%$n*HyV3$FTq`sN@e`qt`CleNWi0F`1TufKl~!tO#mv`juHpKN;&egWRi z=H6W`bjgd0H#Y*(_qFRomIv~m4utlz61R(HsI|0qTK=SwX6?fvd-N; zus8I;1JF7LfwsXN%--CB*Cg9}KyGw@wZdUjuJ;9hzvTmK19>pe_V8+DW_PIduBleA zYmbh;7}UGw+Tbx5c6)ezYIwIGw&^sp0doMX$GqK zTOyobgoVyA;@j#FL(kaQsD^PPG&WkFwR^%gbCv_HITuDS6AH(fRK8q*2!RL@A$8W@ zs1rH_Imgr(eS`*BFp%jo%ODvSsC~mMOgb+-aVHAh{LO-QL zWRws_If68xM8gpq8*QG%zm$CKuA%WRaq%G`@qY2}o}uv0aq#XT@GkN1VWIE7aqqq% z@9y#LfuZi+aqgBO?w0ZGmci{7k?r?)?ACGY)#nhX z>rR2|&Qa@bA?vpB>TVI|HsR(&vF0Pxs&ovlwhvw&jL97cu|42AnXk70-Nkw0X%8ou zcJ4^pdBSK9D~5Ld0NO)~o}Isf>_l<1qejgR^xr&Q)NJpvIE=}lsM*%1IRtHJ)a-EO z)Ul#w&BsAI90o?sY7c@|kcR^80B@Xss9C+ZZ3latsM)@QrxhMUVRwKxJZjde^X*7c zvmu>t2gZj^7$G`MjOgf5q7%i5P8umXa;&J~-V5wF!`NsJxdKWt1BG%70m+;Mh$_QE z!<7;=)I7w@YG5r=gleKSA!9dPo){<|1XRluYv#e?aSBK@4vkcrb+T?K6_Er{8XRhzy9C< zZz27P{{|KOw4BMapxYMySDD7X%BcD(zA7$DTz*+_)E6{GF49GvQ?}0PFXga_U; zQv2FE#3(L)pDYg9^4+IFb}MK0#d4}Y{`<$mF8cW7Mey;7kMMb{ZI)+~nN24~-hX`J zdtE;O&)zvhvG?B72G0Oa@mfi=s&z8;0GQy&NdeCdv)+MPe7t%5h zc3mx~sB0`D9O*)VwL-#97Ydy5B7v{_j@mQdJiMuS*L>G4js9!7vEW3Jr5eCnnpF+( z9o=hG1nPA7n&4)wra$i2KWX9Y=6w~r20~3+$~r6JSZHk64|{RhvNVo?(5{Kmh*6z2 za*XA=vKAWG>bgOHaV!+JjFG*#>=-UbKx#{EZ^CCsyFVT(8Zb92QE_y)RHTMrdZ5Bw~q3>~{w8vs31Ukd66M(%j zsP*j}z++oO>#?-Ay|xD+cFxw=26(W>c?(|Ge1#o&hpK#kH{tD*;oX7nb!D~3WE2EC z!rjvTdV}8f7q^05e@67hp}}v}1(R$nB-(SLKftySdgO_0gKAM-y$N#wtjFr=ajUC0 z_v$v$tf*&y#sU;Fft4jp0>}iVBxKkDW3-|aKtzeMS{fM=f9;ghN*f6%fQBJ;#)|s7 zB&7Zo^&7LbYDEAzRuljhD&R2I)@fq|b5Ki&oRyXlj6LFBG5C)A?nqm+lgaNTeLZGpRPFWRNjt$@#JBN)6sU}=gAe0HM(ssOx`YrA2 z7gAB*p(?Re&2smos80D%J@TJ=q&{`edg`9=)G^noW17?9=s zkV8;M48QLYUmdU*2Z8ReM+v|06PgEC_0aHt`;Lls2;$K2`{8B@D8Yr11OR!=@7^*+@uq;6!hLtsx8#zqe`AFjn||K%0hsf#y?& znoksLK54l5_yOmmhn!CvbUsPg`BZ`D(}tc;7JNQd__-m{CyBKo1DN2DYHh+0LKQ-P z#2^t`3(kQBE>xC<7D1;qRH2ZDYwaX3$kLIUbX4~P-bS;k8O+z$u46BW=V;u~fY8V- zJbJgQI96MSZL&8iOgD-&e?i58M|AAhRxmWIy>8Bw#s$2;s-X#Xd$qV3aC3fY6VwiB zYctr#{LyjqM;kajG|kI8N(AOq0cs$B(3IFvI3Nj@MB7k7Y7oG{QK&F54s!vuWgIby zf#Obw=S%b2e|Ysz_-dH94KqVXjI&IeP-w=43N*OE- z)=m&8o#WzssbBkZT8h`>lgDmCYlXaqxuoTe-k#0jmHBq8U2hDd~w z;vutAIG};R(uHPUI+&AyVMuMrLTETNK!?n5heFJi)Ls$g2peRa=0vG5gj!e$m10cL zP(d|bI#{Dv9h?}}C8KN9^sHSS=j%_4IHC%3as_68TC1PZfp1<8N!ck zEFargp1h4^Nz(cv?CSK`9ow$2Wi_rZygsnJoNh|r?Lg=D9PMzpybRvVr&B-TMbVMa zryvzOuIx&-mFxQI{c5&n8x6$PFbRrN=lKqTna%V4o#&cgZbwb$3(;zShPCF~$ZgOn z_jTWfsy&CV-?G#j_Ml0!S=z0QY{g`A7sZpFAG~I8yU(6{iEY{!YR%x*i|w(2;qV5A zJI~7x($wbg$7D927NSty2Q>=OQl%*Azp?owNpEBv{k3Si>F4z=084RN37YbqiCa`9 zY=T^_?LvUu$?VglYIM4Pze{HM{>-L#?cQJNDA`2a7jQPv*?q-Nz3-K+T8nk6O2&ET zrHiHqoAkacdkC*Onl44l{i-kIv&9ir|6Pi&aVxV8vGk95I=9caWZwOxjRad!Tr;p< z6pY@?u@G2~%^V+8Gshhac6H8OB`t(LV+VKw^{?G zxqfX_RCe25?w<2Cl{IzBz)^V83Z1<=%E z_W6OdhTdfxb0_zlCO-kI4Eryad-I8M91$8I={h)YKt#*`8L zWy6ME*c1Aur>_mv9z_$ikXtk^tfP4#)Nasfwa+nR@Y2hF^_U1ZZX(>O$fed7J-DA* z4W!nts}lh~1f<+``drq*v4 zzxcC2R?`-L`@h;MYoT@@1uSOE5+4tCrK>->vsWXrxj{)d-gj-#0FDdr$bjl2QOAI^ zd2IJf^L4~x@X$-O|j{o zT{C|B$3w{__4ywi(mgt4dhAc~*q`5VAhn}SPDh_4i*ET92T~;-8)KfiG3Gh4As$*H z#6!!0I9K|^c`_ePpY(A4#;NB?bU1hG*3+ebH$05YhV!R1JiKg%(b5=Bm&91s64kOBl0kUC)B!*2@u@%&jk{H^we;hxFp(C^rlNjoi)B(lteZuvB zXAan(Eo6V1p#6!%_GbuRpCN#K!VvZ;gV@IpV>jGGC^dpeTgNe=&QNXzX9hEcfglhX ziyhaPAPB9ph6snbzqAk_#z^QW8@UC>hVc0MdSEn?caA0)HOM@6!FcR~ak4HL$7%NY z^kS{G=O(+m-(Ofat~KzrzM_SwC?*MiRFq$SiA;XGNIhFC0WP9gTUG8?n>1Wr2H)N$ znT@@~xRXCechO%r=D4-eq)BoYe2MbgWS$2)$%+&@`*WVkAj^|f-q;{Xm-Ff5ZZ^;D zRq$hy{5GrMdUW+1O;keCDC}r;I#*u|s;` zA5Co>{D+^s!r(tjB%i?_{Eyl5;6DPDr`85uFJJz;HpgZ8=U11jKkNTp|AYUtHU}cb z=lzc$V7xjP{v!xD34ZwP;+*h*KM)@L@Y}UvL@Zwg9fq+bG>#4p3xePu{5SB+v}FAH zM07bAuf_?uXQJ3I_05Tv6aF^JzeJf0UcUM6o44=$TJWFlAO4Y%=YflIpMDw0AdBLg zsSOypR8bz>Nqrl|Hu#dH-Zz=7*5PUq7r|ejVC^aQ3%G0t;YpIk&xl-q1@C0!XD%L9 zTeQepTTY0GUrdYyH_>OC1+o27?WrtaSLEm5E=f1GPBu;QEKt_@-(`HC#MT$uuTGsJ z1v~x}NaeRiI*)yq@1VNovs{@Q=Ff#kH8TDf&~m!id&~J`Y!;iZAo42sE(zi!4^ruw zI+IyRzs%-xI=%Npik(4!fAu{0^ZagBC55jhEIyUE^xLA`vx}Yg>{tH}1b+m z#P-YdzB@dWj+ zw|#Fj|Ks44{{6O%X&$>=eC1s(PS+K^xlH;Lcb-0^ZUrX_q1V=H*PJ`uI=I$a&HLNW z*TL)>U#$mws7kz++Rpd9HITe*O|^pFIeu9W{9qM!9qge%yFu#_7pVu^qPnvV{$RL| zR}73>Sy{v7mUmNs4TUnWx(PBsp$b{Zo#V`D0F+V0K&&CR&{+bgcGyrDa?2%vA+m^T zZK=jsFo@4r-PG)F?O)zhGiR$3F$b9o9fk@Z0}yZuLBcEr7IQ|4QUXZMLan)j)>^C- zg(5`6-_pd12+vpF)Xc=;1x__{cdu}AR8zniH9l4$G*Uu;QVSs#7zhgmwNfEsm~c`7 ztwUiHunur%fufEJzOTZ`0Ef8K0Ab7p4H<9(2!LcrII|$sj)YWE0I*6hAN4O+^_LNC5D|r2`HRvAtYBCf??wmf) zZ+nE47E#_ahL%nmYFYn?yC63|@wnZnzv=*5ZHT2#dUR7K>*de>AWJRO%@5lf@RkT@ z2YWEoj_`V@Rtk4oIf_U9Hjy zt_cZ$nSZ8)fWScrbx0J&A+}DRFB-5%$?6{tsGGD68x^+_h60+<5GO)m85CGB#x&Lx zV(TnM0&>W$VIeh|Ny4>OmMHGqY@IP4u!oJq0|IrE_lO868*&?JW*jm^0Kqt5!YC`X zC4_N@AqzQXjtEUbC;&o4ILSl9oMam8iwFRJ!K7n`V;P2)NU4xEkowkU+FBu%V~V1X zTZTDe284?Hc?Dub0qPsojTRB87osP05xoBw`}OAs>`^|Iuk}-&lq*vl-7ZsI!|=YFfasOqU^ zi>K?ih8Km87e)1z-%#Z>1l4rafMrFIw@Q+u%|-Lv(Ln<()(OC|uh<4x72Pd-Oh5GY$m&KrZ_| z-?i{f%W|x{eYdCUnx4AjLpfNlxec*%V(2c&gO!roF#Gk>+y&h3M$m2OJv(Xcf^T^j z=r;Vr(!CEdEiBm9n2m@|ZyZMZO8b2#t?}7CU4|f2VXeu-#LCV}BpSW(edi z-0vP+sbTuzWTP#(gWx@;7>%4_w8`PCy$g46b@Mi~{qo~z;P%Mzqrp5Gpc?TvI;?>? zXaM`{8bXMJMsms}Miz%!S+Fw}8fI<#Zi?k4q8xs=7sl&iwK%jG)X#g+}4du)! zYZcs}K>-7DFeYG0A?|8U45Ha`|fB)|75AC;qz{mJs|M~jeb@2Vm z*YB^}B@Pl4QU$ffjB5%*t1+{f8)+!yOac-rhr$pLr!-U!0)>FVS|P%fphn_-iGv~4 z#tSWGMTj|vTwy`21sXD|oaP2PD3L*oAm8~x7%iAI7Fx>;mns}Fad2BJdTb-mtBt_G zh;RR3Z~yRZpUCZhC;`}kvDbkC$=-O<1p4&+OIvd$7htt)1H&4%dQzE^0fDVj6RIb0LY!VKRoi(s-S1Y z$kUKAp20DelSf(36K6SLq~)}+mg7ZR8UieYK}v)n${NTWV46UzI7LV*X+UU@v_fJO za$>At7El0`q|6xNLayw{6<_J}Yb^HKrs^DZUMn1qQsQ;G=1!T-GA}1|YKseZ zH{9QL$F7rAA~dh}wKfFaZ&7(IHkSM%Lv~9O+1WFHdzIp~)8^It;QHxrl)aUoqa+P3 z|9&T>r0w=N9>imV*;(U*U~JhgtJf#{WX54jW?eKMly2+7#_va5D9>i&JbR#Ua==H-yW+&W2Fh>g)EI6h{x{%?} zNsfU~4hTmrmE$GgtnbbT->++!W!1;1>TFN-Fr5ZlO+5{!-nP=;YzMQ4VBMV0usMfK zbFK`PGo+?8m@b=ZxyIu@#BQn6ypL?SbOm{II73XAvsf;BB}*F|1_EviZHVQvB|-Lo z!Wn3}w27V#w_Mg{Z%`KjcSu>^F_+K~b4IMcszL(-fCiE{jI>c&5vzz%)EX+Ff>2A! zF$7AF9H%G_>n!(-`TD{Y4aA)zYO#aLL+DQzJbPO9#9VfNyISj4Q?;$jl0YYMHox-) zf~jwx7UjOgPzG6^_=Yx4>b$14S`^=Z9IJQS_>I(7pXcckx!@PqY37Jovwnrv2;7}* z(XGL3&92&i=fW<$_UBd|ux6LrE~E}8N*$=jGT?E`fOmL2w8WE02(b-~p+H&zFt@_$ z5D`j{6iO*=C4ihu%q2ubU>nL1ghDw1p`lWp&k5OdPWJaj?#$TACCM1IT;mXb34(LVygjhRA&mN&2KCC(5VS|r_g4$2yldF~p)QH%H1HI%Qvbm)kh$Vs%2 z{XOnS)2)g0YkQmX4CI&vdRO?Hq>l79vM7n|m6fz0>c;$o=zSlu2fPbDw~Ax&*)_ z$%~s{?a#9)U9^49ZTeYGYmP4r0weFUr!QVCUaDu|z9Vq)>eGWvY%$CFsHb~4x^F5u zo2_17Pv-Lr>KErdICJ{lgG@=RTTwL?j1#Z_M(Js(KIc__YwpVm(D6GjpYZbbz+6Hw3SLQ|* zR^}Uj+AN+I?!DjMzhD37E7LdYbVSU)T>;p{ar?nOY@0;m7V1Fo>bGPI$v3L#;w^d2e!LaYhWA$10SaAmmg4nWQr@QtoQ z1~dd`%;~JRo%%adx8`e=5X&%y2wG+lasXXGqQ90>j4WUds!%x|IwOhI)L+tylvKz% zApqnESY-v^!by2PS86@;hC5QX=I!oA<(zUSiNE(2OB!0nRj8PQBvimE=X{GaK`qr1 z1L&Y43?d46Xe>Y&Q?bvDe`=-XMiA-{0Mb|j0q4##VjZ9%3<)7pa)C9`j!MmehFU2j zJRqmtn2pwUj>3~Bd-ln^9GL9c*NX0*@j0I5+|Otp(_S9KRQ~$C*yqdJd}tZ0=dy#( zU;-cA0Nx*4IGO?6@No`fFtP#MF)i{K25_4M$MFe?0v&cWcbHZg%f6 z(w5sH)zRebYV;05v5U2Pbjz+@d1fJ(5(ylJlv&F$_3e|i zHS^Tp`Iy?z$*0xvf0d`!UIf_}YiFhAZq4#Ac|Nceh`p21^b|3?GHj+(+v6%)8|(Cb zmRr+#q<68s{r&Zu_mg+mKfL|J%hxZ0Jo#kTB}r=U5`W$2Wgw^1;sXV7@}<1Ic}oth zQk}2gzkl`i&E$tyzkB!c!>hM%UMycNF0HLO6@u~>*5da|e{Ex58CO6%b3Atue>73v zClI_gY_AdKUz|*nn`N+axr?HkcoM}EH;;8;kTw~E<$KErtpDeH)^6B*wlOT3=k3NN z^L!QY%_lRNWnYri93H&(@?wJ2cA8@I^~EGENpF%4vuwS;A|^JI!gc1$H2vx+#6SzW zYR4_6EuC>Kf9G0%dGmtY>Pc%Nx87g&*}1j)Q~OyqUw^umbr740)H<2R`NY_%?aHtE zu?sAVU+waxgIM}zKk40MbJ!ZT)o#*hl4X-5jc(d+t&KseW&4-8&GO9&3lZ942{#R0 zOm2V9J%`Ha%9AZ?nyv2LjiyMIRvh@#^2Opn47AL&e>66@wbPlu^SioHd?9XMlrv3= z!*w~;o%9Z`GOn?r^411lk|JJ`+ANuVF5)(6GQYVk<2PyYH#O9eFW%i$ zW9zz{e{U70vA|}qy)Ppwb4!NgS{IHZ=+WHn99{Ik!jnY?U5$FVGg&bRa=L) zB@22%+_p4ZK;795{Q&P;kB4Dz3xZydckJCZaEG|8YjNn3wAF;qI7oDY+|_Me1NKnj z)-JUjOBA-KY;H`p1F1(#ff|VQEzz1>z}x42f17-#9iRhR_8lAE?%{rHh;=9WcraU? z+&a0tvvIyS!HZEfCv$Qa<%@UQ9nBku`N(;Q!@ly+T*G$IAM^7@sdHZA^VPPOv0r+g zv`z}HCDR&&GSpm3E3s3SI*zS!Kr3f}W7Uuch)7@@bjC0Uv9v@{7D{ED7Q{dR1j9f9Lm^NMgxWBuID?!>?HmH)%(c$D>>H`n zd2QnEDSC=2<3eGbl!6tkWx|Gr>QE5Jjdd1lpb6F@WT661VHZ-sAa>A&q^<>m()f46^& z<}f3>{kJz{8>pkW{c9F!3)o}0{dYEIE4bsj{X3?rAII(ACRzOmZvTVn>f^fo_jUC> zj@!SfpKvRue|OjDk@{Q@0#$Q39uHXUiFi!fIu0>uvgE z9kQLWe(f-`w*9zQ^RM%(JCKddy&qCX6*GJ6_kGMbc-F4fcmHWORz|$ShVIZ7F z0&1zKRyG7&Gm5lv6an8>87L_f(nv|5l#<43!!>Y1le*R|rwpuTV+Pf`biC0-L4q8T zmKcaMBT{LDxIqR{s*$lkNXi{^I%G~jrYs9J7uq_66$sUN1M1l^g6aKx-H_06B%!m+ z-&07TQ;1^37?+q}PK+iK};Ri#D&B;qm>3+YCN)o=r*#cO!e*kSLh_Fr|le$qHRo$ z;4JESCEBy>xzCEI?mnvwkSO*_*K)o*jc#si8hnoAI*rv#Nt#_{9^&May`Pj2pA|n8 zX3g^#OVoqQe_GD@e{_wWr;D3Mg3Es@;8$u~=En!mo>teAEH7=l2yUi{l2iY>=fJ^h z*Mj%uVU}8FQyXiW^>nQDZg{aOiYu1j3XviyUZ-~TMY2U9xlHqkH8-|qBHIjvj<+Y6{#a`iY~ z6jQxTZ)6<(wa8{$cpjdW<1UL`VxAvvZgNo-POrQd+uQv`U~F#FyC^OkCcf5O&r`pr zruMU)7Rzkik5YIZVr{P$J0Y2Ev8R6J7HpiQ)zEZ}{qaxr z9(}*oqdS}B@@}>e#-)Is$UMjwkMh6n@+D5b?27zvlQ_#$-`pX4Y&LM>W&^t?;Vuew zC+(=Ae~j8QaTkwBL41r>jvKAqX7SY? zDKa>Qxd+%$!8C2net}cyD`d5!2oY*Y=o}0c!9o%ysS?02e^o7aj`;g7oOQ-Rs4Pbc z0fH>j=L?)RIOYxoPhWi>T>smv_aEMO;CUNHV$Has+=N^@1(}b{S*k*5h0o9fLL0#i ze=&vDX;?48={e7e}{T{`4E zx;W$=YT^93sCC)Yc9y+ZcT?1JVr|BHT$}CwL+1THD}JxBez9$=evH3=_x6VlyX9m2 zum61g?mGDXw${?$N!kS6sC=}E> z4ghhS?!6`^WKf_`hn!jfLn9?sl*14^s2sAuU$9M}w1yBWeY`|6D5$_zA&Z1ix!K;Y*~>xMf5$i3 z)h*fCBiY{5*U_K%SXq0-%Gz^y=pKf1?jiZ*&f}6hcd>IXpW5j?YI{C;CtSwDq8t1X zJZjrZt_9Q)J!(x`zXcYhbBAj&_u*in>=W*4Hl9hV&~T^XDvyRs9>umpH4Q@7flB{L||Gf;jQ{ z1#RA(XLgcKvp^-u)XI4G?L3{^<=cfHpqluPf2x`K-~V$pbt%1 zB_f{HO&JnrOkg-^4dQVvuw`&|btLrMzOUYws6YL2@l&?U|GKDF)0vYQuc)#rm2+u@IYsuFOXW%JoANsB7n zyZJPaW>Xt{Cv*At)fUW(e;{|7e0hEmJVVb*oC@Q*||^4(UnmGUF=yJwBe#qRc!e`HPNI30xrxFwCnJ*bJ> z*>hJuN4Ur^sKj7WCddZ!*%}c=Lhh1rQC85fL_B!qipK4^H5XNef|B}^i>A{>nr{*J zUu5N$fJY;D+0>;X^@nYN70Wv>NEV{(a=oHq?aQx=zKeBPv?ek=dsggy5y(nQO4OgN z&P!QU+$!_&e~B;m`S>JwRz_;lMS}Q${h$B4mZe(Ms9gm1>gFo=_$0cMH}>O`=NEo> zk+gki{L`nI7qb-wpX~i|uGHQ{S)N8Vt0pXh2&)N~=f`5gDp{ipHastmm5)!#AVb3_ z6J_#FMK|+e`7ckzYNBkh+=`>FYN&Cw%FSL}O13BGf23M58%1tKyWqqxvs6Zll-~k` zP17XJ0yUl6SsKOp&dHSpCJCPX_VrKKKfZhQ=ELNNx8MEr`g-#2`uoYNH-C8f`qg(A z!Oqh+Z$C_4y?OuPSYE8atKj-)c{iKd7s0~xbUCd~EvapVpJM#Uav|y>hEN-GJ&8Qk(pvZq(?5-+V+XWw=l&apx zC!R^)B&lDbmFD&FiPuNG8e+{#3&|Ghhk3CBf5UGc`*V~P3SDI(JxkIc%DsS#mxT%o z2+s?}%cRL{<`pUHZ=P6E;wM|`p?;Q?`dE&Wv)MHA5;9AwG^k=sNn5mbWcXjd+>~Jb8|m8xf(rLgiweXmeY zz1A!Xh8HCt6-Qk0A%5+LmBM>5XR$NlB)|1P=gCrTeM#n16HKlAY}ZdN|F&1{ZS4PT z3e4lA{5togZBq%7O5(3=us^P^u8Y;;fBVzs)_Lkp;-|igP^rcHh#pO+bbfj_RZCHUX3X}(%Cp8ze&8_o&f!P`8kUNQ`7(cdzrgrwOu z|MT1RV)2fCuHI5GcZyFI>+6|8e=9uaw;9Un>+Ag!kgdfGah_EuW!p@pD4v%qiUC#J zP}oovlL+5(9ZqZ)Pk}h56pRq1t6cXp&|rb4Vw7u|$==&;F@Meqp?S!U_HU z$!{~G`-7Hg(*J_CH1D6x)J)lR0cWt_1{-$O@UH-yATO>`=<>ILy`ANJf2Xnf-(`8& zy)6x2YIk2I%+|%0?M?p4_>QHdz17$n2%xvLQpdXY3gJH*X~i?omZ%bnEihI%BG5-) z?wO|gr)ABWnxuiR4@U!GBB?Did0AZ-^zFZYS6_ep)baozZ9i$JUkdSAkD$-EfH?9u zh~>(bu>5=@v;|Erg!am?f9xl56LdvG_G?;R$+zJRVbQE#Qn43o)CpRYlzq2MGk8B) zN^J-`)8KIxY4uV~`QlUde4A||=y7F1llu>^=H$yLG`8W%{{#ic@B4u5LKD;cqY>KEf3(t`;=Au5M=hf6~h;dQFR`Y@$p* zDBB;xI6k7qn$8VA^*V0cKw=zBp7Y0? zbDT{LlvJ!r@hxKt3>~6ookp?Fgw?RRp=n`UzAU8#L|Nc^m1~A$jSoJ5^XB>g{CP6@ zr`(hm@1KA_lm9W(f5crra`ueviwoQHXZ1$7c>m=8{u!PBYMw_|zkKyC@1OiOnOt13 z<1;gw?Uy(&T8)bp;H|@kyf9TimTA^)b$I1Je-peC5t53lhR^bV+)_xYT~UDBMkP1k z3n_79}SqH$F+V>~Kd= zS^K+(kdJhyJ9*?u{Ff~jCEXKotFdFv#Kd0dit6lff9F9%#%E6&QaO9_e6h$sJzwyf zR*2MRg3mT=MfnPWRlOlh8&L3uUkBZ*hEIc8d#YlMt91c)9y>iCvE8m{5BHEfs?oLP zECMnK`XHfs>YPeDBy!LH@->)jm36a$U7*zc`s}k!$Ol&M*a7ny+o0Nr_|7Ps9VX0@ zCil6vf3wp}{G~<#%;lCjaVC=nOPEZ!*;$@DHaviSD8c;HD;lu@zJB%Q`^&d)FaP!m z8h!KX?YlRZFWz1L?bX)}!3pGGeacOFve6=5mlc3MtP==bmVSiVk|8JoEi}o1I=~U^ zG{9B>d)8_N7aiM?A})H`r>V7_bi*oG??LIPe^YuyKL3s@SfEKUkyU+qC7X7BYwy~N z#?CXet=CcS+Q)LlfDo>vYS-JbV&q26!8fsPMM5DcN+zy!q*+6oLJhTx>tiL@V-9F) ztV0kKH~w*5t=5%9Gg{@V^@8oMmafOeSgud8`7jOt1vdw9Zt>GkAiWApc0D%f(U#(J zf1fv#b=LM8f|-sP4CXwl;u9wxSP;^ZW1hfaQ^rNjg|-H7@C&q9K#pg5!^~Zv1~X+A zIwEXmEN%sDThVv@ zdz9VkkKpfjIeW_6oz}}x=Ia8}A*}ftB@y`jwzrP5U~1aNQ-jZz{{yCTVSM{nd95*7 z`*^EZn~XQ$L~@zp3Ta65z3*ve!jbTfXqArmgxT_ryBzgix-kAje_`r#Q#0Wb+3^-Z zc6hZr&S&e>EeomMZiT}3zATQ=s2w5>(x`Xud;L~Lxw4&EXTuX3yh}gA? z)&73aZGFjX-BLCNF;{YyBi;-``R8`_aeUzDd*b=)O9O6oQFiwX{4swn(CQ|Iur1H{ zlXP$!UoF*V)8o;Ie|`pM@>QB$p;h`=h}6`ijI$&!KA}RG_*MtF3SApOeL5$UoMdh<~z)38vK#@UdKVy0C5_}0K&`9C6IlpSUB)ef%> z2pxm(H^hOhZ#M*jjc-3>*>7D*=tJSIT&~9iReF-TIf5qeuT}wFaL+&=d<791D z;ZMW)5*#4M=xL{9mmWR74+vboh8CJ{BBs?RDnp=4&H9|=>q33Pz4#YGm#uYgrP5u1 z!x;QPN{titMZTkiTq=WBWk^xO_;`kI(ggt%U<4Db zqF?W@f6Qoi)FQ%7)Fsk_B6cM>q}i0YQOX4`Z%{$WxzHWX;ed+R3kct&!nUi%aru@z zfizX)44A&I5OL?G3Q2t}zlC3WR!YBn>kyWfZo}rUe?)rdBhITEIc;tRswY{_m@0pb zsydoLNqg|J3N0PH)a5weiJ(;kHQUcoM$QR@6Uw867PXW_i@EVG=P{{zB!%jXWt251 zRtnp`939JZ92ingYZxz&G;E$Q9axd!S8;9q(o1u;MrZJ7D1h)*Fe`1@|A(g^RyJs zf}^naVWZ-adHhy4QkTh(MYmT>{H_UIJwq4?aj%BZo6u!^zb-2tY|4YO<+qTgQXlSG zY^zVXdUlxUw9L2qgxHfj(XK=pBEb@kO1L>`fAIo_%~NwW-j+3c)2}0ao=x7ZP1ZOA zzyHh_ycq|soo^NE?Qu&tE{5SNw13!*(dol(%ts7+;I`an(E3%^f2}g_J;;v3e?~eh$9fwSh^IVLTMabb7>+P}GDlIN@2vJ7 zK{n>$Q`t)*ebe)#5i?XC#aIXsJnaRYfk8Y^mw_G&*LWEZ!c zgw2bvnZACvUEJAF!j|;yU;AlxhmE|)vDvVZN9@h*b7M^S&ifDA%y}l9)^Bs?e=+WP z>|J*hiF`+|@go$|wOdskq;GXqn2GA0V=`-PEv~1vw)Tc&_O!h-(?lTA^oW1$bIpdO z_73}@-a7A}h=9_ve#m0=HXXq&y*KVgy?61$F1>%NkyC7$4MNh)7;Cl=BYOXY^(OOP zzx^xMl1s?Y5+k_0&T{bY>kC^Se_1A#GVQ+YZ+_bKD$6X+!>DVGum*iM@?Q+`%N;hP z@uSGG#KxIK@0l5eaV7(Cr!yln&fdP_MsdKe;(rNK`E+I==Y$NgsOz!uQ}8Tf6tkdA;a@+ zYkH>GXD#NU#V2%IvZa=!ILtcgVJB)8|9(S7K6F#WlD?vzyuVGCw8$>xS!FQk8h)oN zbDRoWlYVQ?QCX(f8D&BPhrU6e^YfM7z#JNVrCgTc=3va=0@9Kv73Ay6Ktd$la0TD4 zMC7hM$$i!ja=!Q)s?@>5e=J}l3TX2Rin!UB)~OSS11f=spL-(cN0x=opeHy?Nw!`r z7%vs?Dw_)Xpt%(o*(I4+ShPx8)i)a0=ve$lokplj@JQ?Q3_*egFi&~TIJUfTpK&IgXc*;YN6s2Eln6{Z{h9j8Xjx8=v%`)eO^pirdW14m*L7Q8UcJ=5FeKw(!f9Vrhl^fZBxGdtQ@aPqJ{_=OuS*#6J@_*O6_&ORIAjpA7L$-Cx&HT zbWcNC>KphWm!qf3?9ghopw^lTqS3yQwbjxUAUj25;61>sf4c#rTPNMr{Dj%7wHG&e zp*QZyeod-pFV2~kkry<*&fw5%Q#hNpR4?ArCM~N9Y}xQB1V5)@*@;Cx|ibCP4!92?&=;v+HI@Pyxu0Ca!nKz!B@stV$rAlJ9C5R zeqIajEm4JKf8%P&%Bv4&Q|^=Dh!w3!x0%rjX8UDeTCe{)H+}$b{R%M%k(9^`##%9$ z^T-LBC3yjGb=)eS(NZNTu25PCZNn(nslcHJWY!e2T-$*Xt?4onTrdnQjmVl}(hN^* zSOtV`B`gLt7Ra;7gd-PCCXJbc_@#Hl(w1*fMnp>Vf9t=hea%EbRFh^v8U#|*Y5yAp63rk-#FF)?`9Y+xi^q*z$B%7+u)8u9X7^;e^K3&5s6E{)aI zLJWqj92y`I$tee4Y9{*fZUj#jcv>Rbl}Xdw)uHV9u-dR~KyidGX&rv{cVVpH&r30M z(b~-Te;+?y{!q@OQAilyL?n)iI=*FM=z7KSz5!^Q3W-_qPT4<2YOE6t?Wb=66wTkm%%z%|$a#(AQ(1z=~Q-a!4_RW$lmH%PIyhrL$>&a;dP3%n2txEKiby=u_}ZPhIww8D)7_iT%}cS8Bx1durgf9K#}UXzF~ZG^WfQ32R^u__>#sNgm^CRTy$ z!J+JAR1(K#DIXgarWoEhL`);5x4AfmnzcG3EeqmC1LE)LT=u5D{hrQayL#}}1KC8} z8#2O;IW7l*`+ptqqd4SrSlFl-qGIE>MS| z2d}>V@j6?8g-^Khg%NCV`{-qYW|s4#WOR*;=Yi6=`;hfQ!N*C%Y#m)GjBTJjvP7^c ze*6ubwhL{1iEYqeY z@e|9#N#Z3Ajgd!v&kCr6OzQit7kHr?m?WlN9OKX?z8Uxyb$rLPAFizSATjqZsogk$ zvtIDTSua@PtPLPI>j4X#e|3NXXI4 zW1}Dm0~1A7lsHagh0exu;-2eLVn>ec+LmKkmLGeeZ~3upp};f=f5IN|X+(k$J29rA zg=pwGk>z4yd4Y-i!<7^7W5RbXCB7H<>0u#Hr_hA*-9*aLV5_oJR;@ATfoxeYnu?GPd z+qoKjFF@A`o9l$le|5sV#xnL99;rRVVzaBW}1x3hD{s=>+lgC?K9r=uW?Lbf*)r)9)DA>4fQY!gM;^=IRSM zJOLn`0FX2Qq!aehBf&oUqro1X5RV=b@#qA0bZn~kK?0r7e}GPCKqoYyL!$wmfPhXw zKqnxe!(-^2;B!v!IY)-iIS{7I2~Oq&Cv#LdnL}Z%oM2YI7?_pAp^uz^M^3;aC*YAU z7E%gJ5;E6C_9V zd=RXTc9P`RfBkv%l={B!)6j}Tj0i%+v0@Ylk%MXE#tw-h*N>@ZCzg+q=lXUMd3G3K zFY>VCM_A?2|2Hk0Ugo<$0kH^r84VH;xOjPDT70eRS!4c3t_?w2K&PJ>L9vU!6&ZwdjA&(k{gip{uW!MSw#hEeT z)CT|rf352m;91Ix^jCI@`C}}eL2NkFw|WNf&);ft@m!QKZ=RnsJC@o2pxC5YS_!tn z&E24EG9%v4zcA~Ll*+kvVId+5*=tN!naUMWO*ND3_1@psVH3h!1~;GfsY;w~H!9;Y zw(X?GWFa}5TkCazm7#AT(7n5&;v2S_?2VZ*e<^RviZ0<_=$d9#drfoD=03w7NHYSO zW?qPut$*pjE_6E9UcP+Ghx+3iy$LoX?ofrHEOWwa>hN#zR%>A2qv8XtRttn7trmjz z&IrxGU$IDk73$P~uE8w=evGLc^Xm2r=j)7{JHh_hA)TpuN%G>u__u+DBqD}ivZ7Cj zf7wz#NHYP-SYAQhJSA7~LqAwTV;R6zQ=KD13R;$o+kQ`r4+{#Z4L6YJ1=a(ak#iu| z8ssc+1qdOlv#qb-E7qlU^5BXUt#Nyb{7L8#R}khY?YPyiU1DVUCyl4_Sjk<#((n_y zy#0!M>mvFvHAp$pJF`P9OxPc8$3u6yzGgSGNdI{qAUhoKW zaSMu_b`CDsDVXEW?S;6jmgm2P}o`Zw9 zj<1qCs}{ldYF^3Jyoyno;;G0)e~*<{9c+h;jK)`T+a6}rk}IfzzoknAmQp3Xl~s{u z*G%ZoS@##hc z_^Yw0^IjfiI7+TnV*%NYWp01E$?JSpam>maa6ue?v+EMC;;k5bhTul1e~Nt3S*E#U z2p5Km#Nk^S5=u%+g;#NPI~Obh0^x5V8Ih%|6#1vJey5JUYw%`$lZx&RGht0UR}+58 z8MF2i%vl=`A2bNNU9NpY(W1J+sDK~~$lU?&fj)e?TvfOHZaK^pn8r{;>=%@>h$Qxy zMd?vg;2TC^l9o7Up)!2nf2$%VYYeC+c|mAV&Wshh1;15!>_KZY5X5=A$dSkuyN2kWL2)3LlElGoqhZZYE&kuc17T{_R-eUSRVujtr&1_4 z0s@E0`>0A;Ia5@WJ(t=+<{(u^IpA6yRcZQ)BLd&Pfc$PA0jdQ=BI5?Gz`4P-&I^cH zN`XrlcwMlU)D@#Rf8h%jdbehfB1T2ga&9n9^}=|5c`k#mNGo@!q{V?aq^`M&x%Vl> z9VVHii;8j?gX^^yhI8&I>@=z2UKswlWvj=cy9>i|zETgFx+Ky~C0qV=FIdEU$ep4*I};hPe`ub}Y$3H~_0#3ckDj!y6nS1T6HAvf&zW&--Py9b;icwcOv0d~ zVP?^|Iqos=e-KL65LYZ9-c~ioWqNR$UGr-b7kOEp*Eg7kGRH25A}wLGJVRE5je|nm zu^556j29^gK+46&H0wjSCwoOV&E%vOfJ-_{v|=Qeu0@f`#{(+Uf-&BYDOsb1Ay!O~ zP#MISi1$yHAH}3RE`fl}i;Ez&fUE!V+f;-w@t)bze?zv0q>)-sjIum~73apXiwkB2 zm3JZgn8oVMjaM1BM)$6Z%$??6@JwsOR#bypsu}Lw_-2Eh?=Z`v8Scg(&IJODxtxG8 zLLSkUkFdw!Rx4cF-GhCup8ESv^?)try)h2Sz8+gfz!AOH`)scse|mfQ!=H`oG&9cX zmd5l8e;UwTdxSQ|^wr{~`;oTQ$f&9eF{PFlcs4RU6!>055;Jy4K#6Y=KeD6P4c*AJ ze2XL|b;5)uW)i#9ieu^#Kk^=~D#M@`^$=AVx{Z$^rbpr=^bKPc z1H08*e(^ppcgq<*_{v6ycE1C<&-1*af6IACU-R*t%#Xpp%!&jY#=U&OzTW}oj~%+Ue?{Fm zF+(T@15=P&9=Pb zhtCy0P>S%5pKYPb-BOPC%`{dyy~bBY3F>8bJu16*xET6AY0P&_Og>ufEo)m=PhGAB ziU}CGBn(e&C&TNq%9rV{Aa(;df2vf-B|%5!@qU+P6kXE`0gg#hVIIW!lIxlOT{y!f z!#gEwZcNq`?lZMp*#?uIGi?uZ=h?=@%p;cwAC(f?t=nDigS+|Y?vezm|&Ar{6Uu(a|tI{b8#;v22(heETiN3T9)Xx0?x1>wMF z3~LQ|*g9R@Nt+y-mRWyrm(I2%%H^NH(tEh>nx%)e9-H-t>kS9suyW7Mjd%Pi!1^}p zTS(AG>w?&XqxyonDR=5!f99}D25bFQpKI|T!`VMG^gv6xOXlYxyFF^gTU~QTgH{w{ z;!lTt9Xog_{zV{94tgNiV05^or;S3z%!#6g$6w>4l<)DsrZb5TUU#6C)%i-;afCl4 zSuYk>AfR1w|JC4EvW6?~x%~MTuy}xvtGW@$&hX+n>~U@l%5r96e^EHwn)T~0n?V<) zI@v4rj?nCV`W1x+t(GbbOIll{fxPEly36>-rmyr)i_mQ^3k5Sih*<;MQAM4}z zq>~-3j*rH6sCi--^18CuAI*L^I%A}H9(GC@k%G?-=A}ALZ%hiqj!o-Yz;NsP+s5`w zhoEudCLW0qwXx@Ve~#l@F(!^p9GV1yi2@WP38ubf!VgJc*`bYN2l;LoyH5BR(jktK z1u=$nh+ym>C-NQ73QWhg2*wtQXdE~}5<4EkR+3=HNo?%-z7rxp!PE*893wYO0_zbZ zKkS(E(8^lSRr5|##HcigPAY?TNFF55V2|_y(?c{M#0e7|e^S?suxa@oP68jhe(boI zCYJ9*_K)tJ1Cu7&i*wu>7`@Pw@9?ryd zvTp5b-8vbz4rtig*QRwWi`KDiTK8ks>Q}>k5(XHfzzYH|@n+XZBvURRze(NBR2^H$39v?2VH=EY*Am2eXlzcMAanNmC?0ui+{~rMx5|^MK3Mb&M7igGLz?aOEY8H91n?jqnGe zN4=w0GX04m@XOaLRISTF=m(mSG`sF8O~60n_z&VGhEgCY-ujyo_%lK2f)c$n04<8V zxFWPdf9ay^meXK`k0ASK1z~qRccPTT_+yX;&sM5*5lSjr)C)J&t(S1cHmy{Hbt~Rx zXjR_iRZl7xs_N#?LH9S#(xr@o6Z*PLsD(|0uqw08Q`A+Z14XB+wi&Gs71Lg78nhly zG?{+nYL%JUpXxo-FhuFcXjeY`xd zJyd~cP%+2`q#FvjWC+`|->w0YBGl|6GXohJ{Uo<=S}QydbSV-srM-&ts~+>6p7RKD zXIhoqU}fB-WtBr=Ote_!pIC+8T3W1fFlH3=Tpp5{zV&%(rz&hIX)lW2vnuJ3-Hb8= zf2|3JibxlX5{m&c-6GrQH;Bf)G!VQ~_1tQQ8^M?`G}=~0TPu9H(bN}W zb1dS1)vsRdu4NR0;9^#_j@h1Xhc4b`X6G%fjDnW=;^QG{Dlc3)h1O-x@1~)>Wr!>K zqPAPGvZs8oWrYfsbgSRq7m&mYDNX9Ke`1QVwoDgBxn`&dVB)z|crIja@N52}&bJm% zj59z=Xk7Wz!%?UyO4Njc$Ho#20@qaf2gG>#iNzLE)PWUbPfPL1;f7m_AzHBGI5CHr zy=F#R(5aWBF)>!Jb&0Br-Bavl2ITSg;U#dyfWuK^Kme+v&6HGC?jViLjn@S&e`x`Q zpUa$IQ=buT+)RoUD%7B~6!#t_2K`7gIM|hRSOCEbX)-8VjO;Kb$YIKC2-sGuJ2HN$VyMv_*H%2rz)M;=;J4HPWNWZ(KF*dcc*ajEuRvLm@bXHICMidj1wGS z(~CkB`u<}8lI>bu?gSmHH#ZzMMFZ*+7sZ75v1wy3i7l4|eqttef&${jp5;d#p$SDM zaS1^vv2j2U{GXYGj{!5bpKk5wDF~cu*k~HjFSFWCG832ltSOnylv=26f9lzQo<3`- z=6aaQY(K3eNj!vbV%koCd;({axWqzcK&;pb z@G($Vn|x$kjMN7E-KIFHf0li1qyg(WC+U2QNV9nOBVTQpUl z?dVAHT!*t5os30~+F0~>>_iV~B6=j&q2IS*=wuVxZWH=_n1fE1pgv2`$q1wwfqn<} zpGRf-Ie^vY;cPw+XZ5*XyU#$993qJw1(r{2D}vNFDBxk4i5-)Ge^?}-UPOJLT70$@W7``8)*i5ixM%IC2i$E4d*Hrv^gqWfSiwEkP*`4En_6Xoa1QsBe~?_uc^&d2VmDXos$$sCoU~Gw6)4GsGVt5FP=tWcro}l&r!vwq z=RxID(KcVID^1pw!8<)P(SKG$`?Cc5?T_7wImo(z1kNSQQoP0=XjO_56ysMZNnwNS z@>Lz5bqnbs7*%MIUyGz0HVC7j*J%lo0HfoXll{XO%X6#@=hjXh9Osg+XXVi)ES#p^Vilf&I$^ zla*pEXbgu4e*(el^YTV6Av+gKx{NvW8%HNkvx>qwL~2pFeFVanTkncYkhx?k`DzHY ztwC91RnR2;JU5=NtNfh77R#V*-iFv(vU|24m>gcu;Rm#2szbK8y?_ifLNPEEc$Z@c z->CBsJL4Z>4gLWMaR11Q>nr&{9(6XPp`~c9f~>WXe+pPTrGl;&D5J*TFW>#;@&{(x zVbkGe7#7;kt17TO3e_A)3F{>-j5y6m$uhLw3I--X;NgJqrr|<_96Cm&C4wctPOEf@ zD!RB;Ei%mK5yS^NepVR8(n#a3zQVrqF>MB4{*eVeTdAfAzZH%A7oe~Xd4ro}nu?sdVITCCuFq*hdUd4+n`f2FtLvS3ZXemBk-tDVWs*`_*T z3lHZTRP0R1D}udBCRKh&S7mKhldH|SG4N98?rYWXK#?g}GpTIzEL@Qg_f!!@2t|r- zDH8Nk>yN{7>0x2<|t#0db&c=Q9fkNQ`=>1G^ zV+$yg`ISV#bTc12#WJ~n90a|qj#=3580dPW;XMRXP;MnkiYPgjdI z;3-R{qn47aa%L1~EROjB2mfO|>P0-BzrL(n`034e#@Y92cKPGXcw^6ump>YBSHP}j z#-Crjof)*k^JzoIUKfk2#vR<-e?6Q4Za|U0eqMMCdJyl!78T14Je%a7GFC3-r#IgT z*!7w5;^hyb1lv?QH-r@%7&lpQKi1#ff+#jwrdgV^a)}Q7|7%=M`1JI9;Kw&_#fm`5 z5M~X~7N&nSm>YwjA{p zd{r88o-ZiMx&j32TR+c#OAE-N;GMA2GsaiO3PEx+6hCZ|R`O7OaV)BWQvNRIc&brJ zdwzq#Kd<1mE8Zk$xgzme^~5d=dHZyg?j&Epakxoo0h!OYGp14Vr;L-cR)17o2w6M` z-#{k0Xzm7;jd6^pQdhs`MTXil+n{rEI<|)J4CpFZMg6$vo*P751~H}9dz+#lvs08K zxWIY^tc-C-`gxTWw;;#mpeIN*O=AeqX+g{M8qgYE|MZSAN&cDI)fYx&n#ME3@{FZo zhLUBD>Zj4mpI;61;`qE9<9{Y!Yv|GNP;-(t7yr%}@Lr_%Y4vVYPnT>?AK^NJ}J)0%Y&p2lJ}Hghh)+8aFZ0_2#FX}(qsF&#K9 zuUH~^rApjhi4c)9t!t4L&p`>cc3$Ja^PG7hjWa+FfDkag;+ueJE-b83Ui`>J zj?r#0x|}!f(FWfV`oV_!4<*EXsT~Xkpx2ko)W&L{Hh&}(5aIYJrycnolvD_$`ve~N zB0-p5)JAx~!bzpkRfHo5Jzs3-M(^>hoQ$w0wrtisKmp+!HY%AJ&XGM93(egCMfrf{ z3~(ps_63wdAAnOPNXk|rXHkIb$~a?IMuRR&%8P8|g=SwU^7ZwNvToe2G$V}^?a?aL z?Dy*Ah<|xbT3(|5w;Ri(#be%gkqPm6w@>Bp+tQ=-sg3NfGMJLg(sJJ%gR-L9KXyn}Y!FxGW@ZrSn<+I3fn>RIz1MeE>%Z{7s`XM_<`j6j``9;h1@ONIa-icKX?Sc7m?eXZstoLKZT zcpF$ANtuJ62BU(N<<_H0VKsRDaA6r`?SW$qxO!UE#gQ4<#1efFS8B!F*ZkD#PN;Q; zmVa@2z0TLXDb2k4{t5H`FrN^oBeR|4`G@t&xIwEG&G?PZ>^)54dH-at;yVPLc*syQ zm_vf8!fZB%3bkWEj4sjH+8eNkK<~b}Eg70sy@RSxIUhYU?#YG0C}ZV!7bva0@OqHt zPV?Yx-hC#*UfW5uYxUaZz1u^sI=y!SD1Wx~*qOp zLw|jYeUDyy4RKrhZVM9obli!4+Scn`dTaK=4*okCm0yQ-D3k9Du$1!EDla*^l2K0# z_Vos3;5s`)yd4>@z@n@QVeo}lncJo`P&K_^{Nhhy9{dGXDZG$um$lS4A5NutRe#6V zfEd46Txn>8sH%!IURM(AFRl49S}Yj1t2MkLmk}cZ{gN9j=DS7CHVHiM@CJyRZOj)U zVeimE?~y!4Cr50)_o(%DvNef0i9<>g$4U~@ah%X0cH|P%vEwKvk&7(iBhSGmh5Y3R zV;7?+i38uXT;w3vM-P|8+#4#ot$zl@SQ3vRU2Hojpr+>_Y6jG`C?TGWt z({Iffj(y*AO`P~N3Q0g>&&EE9aA0EBb(7dK-5_)V*LD-nODtqM4%8{3iGN2e6osz8 zDPuS=17cd3dO=8OWV;kcNkWMoAdHdiIV3cr*o*Agad1Q|lVHoDiED-l6hxuH;WCEX zH_Et7;nCT^8$(L>i4-1;vmFkx-6KSH=jhm>XwiKlKX(oK>~tY9Nki zLwHY5G)iv-$;SAOz9@{1fqxIXxzl%bEbrv%-Rzr{DfXK^t950NZI00a&!zaa*XyW# z+4SqaWjlJ;cvAvk1;UcqhsDr-6-q*R>rDhO1er%amNU@hh#IzB@uIVRs;2t=yyEmZW zOG@wFFu{k&^6nkZUVl{@Mx}c{JJf%w#Y^RBWFA-UflyKIJc&?YWF2E1b=B8_)Y3kq zNKLg?{myN42UOh&q3Q_>C7TJhLcGc3PLMx~0x z(HibR%U=@Z8h`ba0D+vvOXV@1Th^VX*>#N+xbhc7D7AB0J(9fcs;L-}6;$rbx0a z!?PnctWIm!q}_D(?oKn#Sbm^PWWM_Xbs;tyTX@N=$bWdTCe(QU1Zwd-G0sQ|lF2g7 z7^Dc>mhYd)Z3-{QTW~r*u2{u)?xrChkM^#uS$$qtYU?4E?Anr zTDL}~yUr$#c*H)WD``?vj<|>9+V7f33Jg?5?7RyD3fL|rKj456LZpsaq&*~&t{00Y zssWI+q<__V#qebSghE2-==7e6g1#y`@neoryk4N9PW?sYrZ^)tW)U~Q50QrLDykH# z=AhJP%9BB5Rbf??xW5GPx};adLgV2b5SRu&hTtG7gIHy={hOr24K=*h_LEo^?X9=* zzq4zZ38M*dPkVRQv@yUe&(3)s1Yb=xzyyh#vwzl8=UVk;2LANJxWNrzTNL@H^6MrE zM$Q(JNm!;BP9fA7X1QXB%o)+=pN?(L$nx`i#S>Ei)&o^H^J6O;H68Ao0rL8SB6hAX zkxE>wGYOOiM>BF=V63XbIY0}^h^vZcQ z?C4Jv3^W8RjQ)yAQln?W<*u=9GZ}1D+ecwVeOZVHXDmJb>W2AM`Ywgxus7jFI3#By zTihB{QCHu*OLT>nO!VxK|J5<(0z3idOMlQ@j?vRj1t0p&=c>llYuz@WCEkK%S~IhX zDi1toTBS@w-cdsyl|Ywe0~C?9Aj{-1frDQZ+;S`22t*pMj59r=XQs7N&IB;Sl*8!d zEwdN+5_190!p%oBL$GKmei}bP264UX^xIQNz${oPgW|h$jo z{Ys0x#^sqDk1g&K0(LXnWbh*t)b0g=7yP_WsUCRD;d6uGvT$o}g@Qyb;Xg zV1r^}uNuu?)=QL~L*Q)fYEe|t#=_x0jmhLC0BF6*^Cg59PbTjuS{g5IP=A)u#blxl zSDv{lFIeRgP1hGNv7EIQg4G^ue&PmKGkp8+3KXtc(1aJl;f6pC?WraS>vL78Nmdjs zuki3BUjkTd*|Z!nN}h?1|Lebu$)uc2G|o1i$-WmT2ERb#k`Pn9Xo?(s#M&*S;}Y{% zuNs$2^O=CylcW9~KvQGIzkeagxW+sDfB!$WVEtEv#_DNSt|5r}THGrGy#8=UO7q>S zC4Q+rl(4&vtA6}0>?!jB!R6WYF`21y2R~LW+Vl!*q88iTq7sSlS~dv(PD5-Kj%<;! zxCv%j-lw-L^BS(<^-7nTWb6|!4k*spv!?G_olR{$C(Ls_G0qr(a({7+vh-J`ya@>x z#xP~2VvLNI47&yP$c$af!d%HanM_L2ujuBi%Q-mEqMbnAD9FDrfh{v)ypdS=yA@-|LFz;1P z%WN{KgzVSqw5(8)OeRKoldl&<_N)B>hCT5Y>-vbhrw(vjoHM75b#Dy&t3pXRk2k|D?y`JxH6FZi)QNo~$m zE0vgMo#QB*{Sn3q*zIX{4Z?+ZRcTKQkQ8K<^g3fV{24RiPsOom>3V6Yc{=1JGpKFN zKrO@+N=r1L)PJSQ8B+!ZFBDHETI8&lMR{D!s~Z~gI8T%oSkpOCN?+wK$osqnkPcD; zlOpu9#CEWLUpAW%MbcP>C5Yw#-~Zwhx~;d{S&ty0P>0h>$=Xm8@RK?-;0GBtI|$i8 zOqXl_4OY&10I#IhQt~oNN!i4LmC!u0!Bx$KZqn7kWPj;KAXDEO)kjCZCJ8onfnLkz zMN%ibLWvHT2XGFh5}#g?w8{&vb^R@+pJ*|eOu3O{RnT)urDhXxS}jreq3p2O8VXU2 zUseBriWve`Ur|66LolA}N)`la+~f393VpzXH~1H1XNrW^1=5e zv{eFbWPfq1h9xRZ=-u+yWRZ}@c*+m3ttGtRf5H5(^5X1<@@t;8$Otl>G17G!FX!Sl zFid=)tBTo_INk>@@&bV@dV2@mb0QFK^Ntg~o*nnwcf4u2+pf`4!IeJMV&VW36Enqv z!MHY%8T+=6EQUZqsn%obxVu?s4}5R2&8qg&A%E#6!vQxFuIa)XO*w7WdYK(wPyu#F zk$>V2|5gX0TuNqC>mrl#FW83pr!AMF@y#pnhX{>jswn(VF1P-sCW$h6;?z$Jxr!3? ziXb?%oHIM^I$oyLRja8hs1SBGRRK$K!f)t#Bfte9#0Xuka>!NY=egGl)Y4gXYlvvM zyMG8cU&bjYZESP&n@FT}B0) zouCZR=dy~G+2%hpJf6N~V*8LkIcMc;Bsi5Pu}nTQp8xPti>rOsD`Yn} zGiELt##yc^KIpTl6e|0Nt?^I(9b90~CVvyTxA;eJVIf@Q1xG%3Hkp)=EW-+bKl=xb!rB3qX@ksiqt)&T{nwv=0p?ZXJGV+Wu`j#R=TnrGBi=u`a-grNC+M2P6T0sZR#nX^Pdjjb;F#4ZLVKib&AZz|M zUmKrLR&~uHy1|L@u7-n2h;0%9@-|fiv=QJR4%anD2|Jnyj+$bZ%T`#xe(e zmshJ_v8`t;DEi1xi45oxIP7r$(tnh(C&X%3sTf4?8Y)fktkwB5&;q9bdM4~x;6zAzh%i_@1_uGbndR=Ry zh7Nt*=n6<*cVuif3e?sBttHOVE;<2q{ARyWpDJ-(@Y}|uwDx{_{qp&{SAX615Lu?# zaB~g2h1MJomgqLe3N-c1kHfwjX?3XEwYx8*V`^L+?Jn`NjhKL*Alicl&r0VuN9k?` zP8eye(o#|n;}G9C9PX zm+uyp$50pFo5`|yzZu}7{a5K-lo1G8t30TAL#rIVN!I#fI{S<{fz$Fz2Di*4M*A|& zW=r&WR?utuc{NKjLO<)h@xbW~y|EW$Z(kdL?9T5RW*YeU7hZZu6@L%>`4_!)wdg~w zHwzc)&HoGcYu7DvxU(6bFYBGvEn22!nSNC3qPw(`y!eC)(9_vDh2wd~*6b;#@zYkF zzA0Cf{OOSh}C!KU-9Bx%pNM8Gkm6i2dtZ4p=g1kVY~Z_ zXPhNnK_LQi#R+#-$A79BlZk8uWLy1RMs)pEV@p%KIkpho=F?j~aw1{#^&zNL>mLM2 z;80z1GMRQihGlMlCI&Z|=n!UnP^tLemgWZ!ou1ZV`|uC6%T>9C__My^Cc2oZd z*Vx?%1TFINo4XT>mpRmErRp9|rp*a!f7Sn<9@9?Vh;V%)&cs!UV?)L#xIVf3z9vzn95mxf-*Cjo_#Q)%EaB8jM8&BI{SK5 z7W5r+pbwMTEr+6vzyJI|Z-2XLR1cocwx)fHW(IP8<$pNfh_K|}9n-V_j4xmwOEl6W}#_ZLAKUD8LaEnkVT*e zN@^+x65n51`)yF(o?ZF#FH=>TY+M!MPA@HV-*zuThn`9wet+R$)?KUCu+~Q#5_qT& z%Ie!1A2*lbZKdt19yHk8Z9TAcXqLroHP!&t-GAH|*2_Dpx{mGkG|b(h_Sk|Oc#+bq zIu|}x0!7B*t5$n8Chxe(c1tmKC#=KvZfbC#kfM<+lxhvF_9FY%txAmFsX@k-InDJ;GnTF#aiG&81}qVB70}XjU|o%Lz4% z_J1;6QYFjl+@XuK{hMxVsW0cjSqV$al$8tQcL3j7GIUWD^LYP+AHydgDZhUrNXE)3 z?Z(6zH9n#R#MJ$h+stIwo2XQKhoH;)ae|oC-SO&Y{s`n1Rud;f=s= zN%sB;eB5FIquQ;ji8kkUNUfloPrX&^YXM|J+=5hg`Z8NKD9qgZT9+(S(Ssm3!XGR_ z;GkMi4+iI!>0YZcsgmjFx}4HiWXsdXHQx?W=jhq;E53iOT-<+LGwr6b+hRHm1(U{YgLKok__BUsa)_( zD`d|!NC)ZMJgY;=+Yw>f8lL4vTYvM@euXoUwG>CGw=t7}$RTF<;)IR;tk>bd{hmk^ z{f1@weA~7XzEO$cOO(NNqYb1Po5~dq5E?t71mgO?&@s2fReyy0w1({3b{6EDM>q;< z5F<`PYZzbPK~NYaBhG<(w}D#MJrTX{?Qu5v8GzdI@)jX!xq_%97C0+;5XeP(%EBT zy}mLy$c}n2etZ2{UrLo00-37C2hforkysPq6e{{Hi-PIhMJg(o#iGa&H;Vi~sd=6( z+t^AX32P}5wKXS!OkNTOa(@W;Vvc^6DgYy8!Y$RtC)009=O76h9q$wk0Yz<55 zBw*ltNxsg=v|kwB;+qlSMD@L^X#rwO<`7l*DJ|*zD3sVw?a@Zuulv+5OdmfDdTK%J zP6^QnL=;wx@j}GeX4;5PYAl32t8NyzdJ{9lvd@?B+$bp6PZ{XzfqzN4q0Xo6IzGV& zMUiLI$aE~zvj~k{D-Oa0BNIiYiA~G5Xc9Uoq+yKWAaHS%cowxh@8L?MZYsC1f2Gvk zR>u%B2yD{{Lh93mSSX@#NF0K#D8$rGd_SUQ61bM*QIFcO?*x|ZV%xI`#l)wWCJ$FI zbrT^~-BjV#fYcN%Pk-fo_U)S=zu%Rd?=udm@a^;O-o6?nD8_*qBb$UacB9xgBhw2o z@hEkvYlXIhkwqx=Lff@%8>0YIVnfB$C`6WNx%Q@lsbPdI>O_%^oY?lm1e>1iQ0)2$ zYNRA#WW@=xY2bz~4YB3AUTlWga(rT<*!0Z96-*td(sAdysee6HEBeb-jH^?zL&b*8 z6%NKD|L=gAzY|#g4k-D%z~k?Wi@yo^d<#hSW_0Wgu-F^$u=hfV9)mMG4s>-S+UjVS z)gACvM+2*lMN}OJrMe4->S*xP9Z*wufJ@yOCv`kP>MqEryFjAuh=n>51a&0(=}6eq zgQA8W05J4UIDes?@^Jg&Y@Q%CPY|0Yh|LDX=7Df39~`3c(V$a)(ZG}^Ov*1Alk#5S zC=UP zCmg=rarjOUd?yILBSY|=(DzR0dq+XvI~t7L3Bm4!U^RC_u=}DB>`vfyC-Axxc-;xS z?gUwiW*Eg#6Zv{PsHseLLa3-4*YX{-GFu1od`;di#Asz5Q`e z-u^HEZ+{eQw-c<}J;A!25Zz9QZYM;ywS6PVix%xw&q+X=_*gyVL?aXTcA+X=#L zq+;{MqqlwOz-|4ASP3RpXxpyoBNUhC!H;ETV)H5*( zJsM-jb^}KtV*NLN4HruyS1~gT^fDSZ49I-d$im{k)Zkc(pQN+|V~+-swY3xeR1WzU zz0E~FfQlx5>qSL-$$m5LJUfPIs-zV}7PoP6wzrY4uJmbt?)v$@-)@^g7e}pzJ435g z{d(QRWYdf`wzsZsu9{y>2B){Rp`KP?f%(5Ql%V6{0nIx7iO;)zs%^KWNB-C7{)X4K zJA_RedCRE8jWTjjy?diOo`FMg(4mYO$KeOjzz?MnKzJ5^0JE*~Qe^J)chd@l@f(yu=)oD{ z?FjuaFTl-PNHr?0c*1mPfb*8g_kR*|;V&#v0ZEb!MFdr>r46|x)wSBIJo1ofKr};O z0zy?)r183vd21;zE-l`i)n0D~RF^BP6p`r2>QT>k)5W?(o)2w%P{A5g?=Xwq``Wmt zkK5sYwvM) z?0Wd&V6+GIoc%GhyG@QEp=Ej4rLhwrk2ndAJc?-S#=d1+)VICB^BqiL+j4v>K!lnh zb>i4b?1VbhGd=on0NR5jROs0?0Y%6dDp|^ZJkKGU>_W=P#YI7{@dA}4=X!5`{O-GN zp1=6(AYnb*rj~C9u4&^W3Ii7fF$n@cBzE8iCUQI+B|$>$#C4J+_H05NVp%pe9W%BF z*#xAWkkIyVNQp~46vLjk!T{j6LyveQ^dcG)%fmrLEfjl!Wt*{sVmnMIvV+jJ4+o@w z-FHLW8AW>sP56#V@c#O*ap%ttqVpa|-MzD>dylH^J!-X&O`&}py6i)%vHR(*%`LdU z+PaUXbyt0LXN~o)gB-7_?xw6BjChYpOC365qegOgEp;RF*>OyV8_TX^xTBU@^Z%WF zV|UfZ9zY|zH=S&#nvrR`UK9~Oi9+mu`gUkjm!cpf#PeN5O*4rDJ4A`^#5jrL$T3Ys zBZmeKMK*O0>>(rcV~XjQ=pE~u*+Y27n&Ws}UNNv7UC9CN>d)fe?dMJ#?0%~xt$#Dw zIFivi0{{FE?Sbl9iEiJ$yXBycp8kdGq5QzsJCehvd4vz(>=_{U823browQwl6VUQY z{)&+Leri40>fbs0xd&_#CB$)vV*3r3y@KBUu7PHAqew?XKMYKi_(=p67-Qm6 zJC3Z-c6}!#VVFb+3O~jqi4&7pre(W<8+ZYYC?%2maBhKK(%s!9&}?>hcL4GuM583J zo!BI45*oq@Nn*cHe0?|SHPZ<{~d(> z14#Ra67;`(1N_6t^N&T8-(7YeZ}1+X?2eN0J~I36Qu|#-^*F`#!R@kj3nApx4HkC-)g?{i2;Fe|#pgYSmEU_r_jGk91 zFva`>1>`TN^T85-gfp-ML7K3teH-5zG$Y)yIN#NF)<4O4m)Jn0HzK!KN59SMh3Ws6 zBaW|ymGs-cw&|*dkk-X_nul9tr=IMwceBS1EcIP2q*g>7ilQX&JlnDmim`3`mWdr? zlh`%`Vmnqs+{m$A$2Td7ebe`B8ezu{DWMN%A>An4?Qbc6?QeDrDY5AV$ckJNC&

Nl@ZJ%)cMfFb;`@Vu!di z4jtDDaGcP8n3BYEaO6k9CYz~4lGyVdH%UB-h#O*);>1C&Y56oZ13U5@VkJ1T64P}| z!b2S3n(<6zrHkze9a14o;B*J17f&9z~*nG zRjT!W)$oQ-S~Tl_wKp>O0ZqU6YKqm@xZ7oO2OQQ0e9s2%*175S+c{Ww>Az)k=JL}9 z-m;sZx{*n3wmWYcLvyw7I*bYdj8~|p#muM*l$EQzfMO2Z znQriMmr$l*y)w!QRdi}B)1t@=xLj~?yQ=alL`Xr)vUbNaC{Cz{%F1xbnXnKmG3%Qg zs)@dNEegIenVwl>8Ng@3>R3F5GCb#LRx1H~1UuW}H_&q4-CeLCulZB4=3KkD$;+yL zG~T{?@za~jcT8xx{NdFb(2L(jx=^0NY<_z`h2Hbd76JwNt5m$(!o#|}vB**J<_0yfMDIRSAk zmxh$0hqKLZR~z;>&~Ipal$GA`E#Go~JQPM|90yKlMmR7Xn&2eFq3O94Q`ZiY1bdMa z__pT~Gqf?m$Pc3cI}c~2-%ixK2RU!(V-Eln6u5C@N0w>32@b6!!LE~pjv1M;Wd^Yq z*vRu8CvjusAOsuPrB3YAB=Muj3^!Tt!_YGAh*A^d&^M!i1fhdHL_^!LQ4H~a&^V4v zKlD-T`;HgbL1cPnWZ@(Tk>mM?v)*sK&hOQPzlYkni`joyRda70bF;cQMpJws*TH?+ z^Y2R`d?2^T{i=ZvrUY(wS=^fv*xD|;jpRUM*t7RTD}mj8wcB_OHICun=#vU~?<(LQ zK?%GMg{NOeq$KbYOakJY4nmH97x}iIgpp6p*i9f5KCw;gdx+53@v$ApI6;=>gg$kH z1P9)++&bD8`Xc=~o%tQqk#l~oc!TlOcrCaC^eGJt{4~zlt8c~m%@cLb>(R}P*U(RS z13LXJxN_ATWXcEBbg6DAYwL%cz}a3vY4&p{8*vNSEztU($`mT8$giJ&mbCZ?g_u8N z`6oD1P`JIynLihp1Z#~SF~!}Km)Q79egI~J4%1ttA8E?0`mcZVL6d(YmC6Fi6%6Sa3d~0_xqYppF#VU{IZC#>*bjg0;l>KfcLROzVk0 zUo1qqR#o!|+|nrFH2jnoWI@aFToRPI;dwuA+2Y7eGvRg{oM+{FNekn8of0tcTy)6u zY?9>}WIqm4NYq3WWUOiRY$EIILQ$k$l|B86d2pX&4Lq}Z9)-?-#drO7@8k^`6>xyg zRb;`g-#5;|9v)O?7Gr$Ic+L2XU}?rHC_q|Q$dcvE8LI#WQZQC43f8E$KBma{>Gez4 zginp<-@SYFhM!_yQ%RJphCg{pEd6#D)p8hb8Pc>>L5tN!gXeffiNCb`2T%}82M41lSV z`d<`8qE(TWbTU;HO@y}H(JOMb*Kcw^=SQ~-PMMIrlWkvQL+Nd7uZS@C(tlFI0ek72pE+_7G-^Zc)7zd^wdbVr% zkxl(Dh(gm29Afz%eFQ%BuIc6g&UCHOF=TYWp^Kw`Af`d+;+WbNaoi+uA}5SZY!WN7 zEkBCl$c$po4jqRkBnVv_$HXO;?LGo8dY6m`bf0UD@9sB`iJ4G>;~W|&w}WMe`tc38_OPSbVK;-p;p_zan+SHZ4&2=+u&?I*$H0=i4@LW-b?k>zuOFLc{aBRh zN1#vNqc%M<$mMw2^Z@Zjj^&WrYww00IgVq0Xww@H+K%Holr}wh;C36&!3MJX2o9r7 zw=STuv%jl0tpy(St0u(uOwWoV2id;q#|ScPk>g;KqL^9^iduXvtzpFM;(NbQNbA}uMGWQkl@r*rSNhH$? zHEiSj-&C6uZ7!3U%!fJuH`c$f29)rIqy)CuryH7o86~Y|Y<`lU>yqUX(UOt8f^eEVF>X*na1P5M z9m8ybd_T!SDeaJrxiw<_$K7+K$7VfuclKk+c{X0Lft{mIsDNm}d_^w|LMvJ<(~QcX zK&IbiXwe4OU^A~bKMN~>5XY;|gs=Vy>SX%)H_-${e`2FT#WfX+#+on~4EcnAbGK&( zha_iR8fV}d{`L84^*vq2v?y=V)yzO-nP%sCwz!?@ZLAikO7dbkF`gOn-*rRs$@!<0 zz;;Rs)c9JSH~6~#h!*GSbh2+|21W%7X=+xp5er2#ZXi!wLL^$G%2 zDPf#~9b`4DEB-E{?OdMAylsbn(ASWq+VO+LsjR|qYZk^AhLOD{_w#j?pA%Z7fcnAg zy}T#E+~nb7N0LGSO8qIFU(fm5&-jx4pa1p0Meo{!!R=75tlYG0+#3Q&T02$*#lb}1 zeD~HkV;{g@Xtg?D(2sPXSY`bte<09XrVU=$I`%q+|0sw6Uv^@CxBtd}%6EHjZHz;E zng^wwT?Fn8BGV=`*x|nSNPgHfh7tMi!($n*?ra)D3mNwO-1sr0GI^IrqsmhWe=y$A zk2E$sQYeqGhFJph+tQq!QQJC!i?-&6cPt($5zv#*m8uFg*Sr69aTvDOsR@YG$O_IlRNj3cT_GD&i0R5V-D6Yy1e-x(I*y%xM1kdC>=8dmVw^+(!f1Pr zpI9!AJxa{bvTQrH;utwWg6$-5T|e1a#m@B{AHc_L((iSUBiDquK#L9{Ox8 zTg?+2tO#F!IBLWfi{LPO5L3Ye7z#Gw65N-eU<^jWkqrgCZqfVH|GVn{PDD7Q{@>ou zht&R0ivLORfAos~N%bF4{g1Ea4xqkyu4j@Y1gH)#3Xqq?)Cmx=DYgB`H)GRFtSC$@ zKQa9zwy>9kwuwWZCLu;ibl?z?EU#2}?w1%HGCaS3hX@Sm8_n355E*+xuRglQF~dWQ zvk8ywXvbj8wak7IJW}Qgg`(uxAZZ0gGsLS$5FIrm6v+Gj?$JPjr=62Z?!2y=z ziUBq4Q9ac7mLiZN&adl@QC{%R7+JW@uqbG`$}=X5+@SL6U*WR626JYfB=vrISMRdC zFbZ0Kt&6NQl&8D4tCkQNWM2E> zdF_uDh5E?9@ zqd)aU0b^XFEd7p74!kRQdJwf|m2fc=?3S#omDw5>{`9BO29=OEoA2 zksDMRztSQ%2%JthmUH88Xps`OnS}}bn^&Ov8kax3ef8#@++|-IC9MO2_zt}4W!tcS zan;RuYZSoe1)bm|$o(~(^HLRSDbB(N+J+tdjiRtxsc|SA@GTcfuHdqQOJw|qjE&0pshxFybuA*t z;ixLq51g1^uYM>EQR4mArF!POK~&{qEfPUhJ@>|yA2~TAGctC(j;lxHfR1=}W2gAI zdYr8|P3)|WNAismJJm7-Eq8**khI<)MxG>}M**K*Pe-)xt=`q><>%e|>cdsv6;bKJ_f3Bqw0!iDzV$AK8GFB9RCwGW+@51CDz$d4A1u4>80)4% z^in^31fm|eZkojH&B3ZPcwxKg(te#CtkWJpTSwh`*2!qnWlxpFsO*>}JXnLMueX~X z5wE~tHDV6;ZdybQ(ZPCu#GTXKG>IF8gH>tp7_9YEPF#(uJW-+IRc*zMw=Zi;ZAwUcdMTj+j+GQ9aSI|rDgmK<0 z%asnLIw>*$ORK$6LOSaZvQ`)`gn`IANU3%q;sbklz9@v2VLUtlA=Y^R*aHMK+pBJP)J3f6zX!-(B z=?eg)&s`VyY%ugiBG8{x#o*(h&dr|rqr=YqMURU+4}zV4XT6mk5qItdJI@Au+3|4a z-mr6jbw|UUd%({9wHy_9?hQNl*LPIhc^K?`T;RF?wlgmBJOFs^{}qpeJdXf84_H9@ zSReZo&~tl2^5a6!_4|L$q!+4Gdj@QEb)t5h4dpK zcs5O~@y*h?+vJDk{5Iqu&r7$Z!HU_3=@%}(`%ZfSyOM^}hyTxt&jkWj z$if_dL~caqEi|WSFGTG`sb<1LOli*dGS92^{3#!y&4U{mo8Ro0@)Yv@w0?%{iPiM^ zA^oxFa+*zLBQbrb;e*tLnjj!5%&5ioi-#Z5FP^+A0>ndRfz@V~2GFuy+&^y8TByZh z`f{HN^3OAqfupbHvn)||J^)$Tq44hZ@%!R`@wPcqdO zLr$A?^j@vpI@@JJtiDSV2IWk`tTIDRz{@KGWZLDeM7vc4$L;hZ9o^_-*&ei$MX)sJ zox`FV5as8UdT=+Tjc#u!^l1a2Pa8jY-YNsT(sy?Gi0IO}acCfGMQnL*i3_jpKVz$Z zP~N&5bg1s{V=GbJ+Z)uV9|2=464~+_bcr4gW2>`s6f~$&IxI#OA9cTGi4=>pi?7Os zbs|21QbTo>_d5Z~SL)aiS);tyWmdk^Fsap>KnJlh}xcEQ{)`M~aW?`40FT2zK^x-+ZR`&3U1VoEnEziFP~8BIAR@lg z96?ZIM>&F&+TJm~jDy24420M~r5N-+B)=C{c&aQRz(8#<&>T0kqIhKNh3 zs3kxFf4(q`h~I5r_{F<#lCS^wyZ1l6?>NL=1`t?G96^Eu3pr7YaKfbKf@sTsg!j}U z;W2|&YmYSqUIC>Ta}smrsM7d+0T_`1Y!19g`RC;<)cKAcA?V+3a_yGq=xxojRerL% z^luydOWU_1j)mKH=fRG|)a3qo_RWvq|GDFY_<8ov|MTk~zfQjS>f85UcZ(rW8al2+ zAQMIsGKC!D8aRP1u}&JGk?PI3!1#ulJ3XOtGkw8oGS;RLY=LMbrQQbVdV zqCz_@tOJ5^BRFNwQ11vLQ~(*)FB2MKeZ4`f+TedplqE zx=cIxJG(h3+x?0C+<`-VfgQbcU0if^@7x||+XaVhd>%zPPUTxWw`1*p{9d)oaH(CA zKkb~(v_m~<$M>T}`rAe3fu5}By6Yl$6hB(aJnN#v;eNEH71u@jp?V1lCL=2q`5%G9j>X zmO4x*r5I|8ps*nYg11C}C?<>qkb9}e=9Cqe`%jNm7VFtLcx7chuFSHrnPqui`; zh3bp2FTI)1rZ0*6#m&~qbp8;YoTiWU)UEVVM}2;;rYg;~@&1P&e+tuXHeWue>Ey4@ zCgyp$3_7JG=j7Fo-@bq2esxcab>h`3s5<}fyvSH%I&Y?@#+BDP>YT2Wd@8MCLz(?4 zNef++d0yE}-^}@c`@E4M>!tE;FWp!3=cRFFu3lNi6hC}fIGd!7q-6E{^rV(AIi{J{ zq1oz^H#n#t<#&7aquBm-KEj)Tim;UUl)_5vz7g&TMNtibo#u= z)y-#1XP#s;=kSlQ@A$ST_~Ns2Nul_ov!SGAq;^mSr|*27d=3D=KtR8%te#@xC%*;? z>Z(2~?vk&Sc}(2YJ-ONXZQj`50%bO(0xzcOB}0L731Pu(Gw*Eej@#sU7XEA0+C9vd zFWD!$O(v^*l`=g4e}0!Yo(@l#rK=D*^q4U%(>yZ8GimgI4_z5!<82U93p0teycftM=JGiSa2rKyZWE(oKGCjto|yeogPDL3OnZ zR-k6^bdrC#;2sjAXVw6@ad*o;=`F|903F)=CVMsMkE+z=@8>61q#h#e%26Jdqg)=~ zyZVNGFdeocf1$cPkKKO5E_@s@^}Y5ua%x-ZQN$dv{rE;Xwv@K5a2WGii@>^;3Q$FX z(OO|;4N;gd%!pSUV&^4CP7+Bq)>Lbtoj}rR2rZRoWL`(HsU7ZhPsVk*xyJF5R#Ppk z)G~}2(M(ZCF*M8r#;pO)g#;EFG2jVO(nD@J(N^h@fAHP{aXzATbi5j=))~T9#m{a_ zcv&0{yNy6Waipgi&}qYKZuej*`=OHC2+9!$F>a&yLKA#&+w2o>b$RDx@Tk)_|67}P zwD4RVr^rk14gL1PeTRa+{Sn{8FxsI2ZGXhI58OHgAMFQ@4#qPFfSH3a#{q!j za9D5%CfFDB8;JNF2=@)e`Xa##oq?>w>sed_e}7ta|MR8i=+8z1yT-jNUzG%=4GUVhQRUI2| zXXpO3oWU_X4V_eiyf2BK28h-K3pOUp&KDhPjZL(0SRe<1M=FiJe z`zYra_HrMohXhTvwb4h1k4`_%=O6CVP^qCxL>uX&#nSobnH?&= z{B|F?li4rx1HOFa^*)kAtVJLU4U}AY{jji{#d2=kYPHGclYYjoF*2EVKl=n7-+5l7 zb>{QY>-f@}H_1O`VOuXVlZ1*Zf2-utEnTuy>&I{)JcdN{vx<@PHd(sGe3`~pWKmzU z5Q&mE7}!_EiE^_l?W4(L?VfJ)^D2#i+vTZ!n1vV}rRUGDaZvMB91G+3rK~qciiFnM_@>a_VW7@!VD~tF?Q|;`TyGl`lUoCu^51f7JRh{d;lz zrX%@r9%yjIh&->-8_&~ZxtuSzr|n$-#hLYL8;(>yK+-XIaO?Z(DbR01419Z6aB;{E zlH2d)ve@nuxhAyxtGgn1C+jfD16s&Hwh;AXpWUFCx^&Jen@!g=ekxmqX}OPr5L(1w zZ5f=!%`uBDD{5Qh4XW(*f6%Y+_HzFG@OYcnAIM%x|C*Pnu+Od_jCvKG*C7UcJ>N{> zOhP$3OZTr6+6*n;`=xVzYBB`7CEwH2nh4px>cT)RRM@jaorS;x%MZJ3rE4|&kjxiu zmIa`tf%Y%Os4QKg>|dU3sC?vXHXucWZ}_8`s*iz|8U`TUE9SFAeOY^8!uD)l5xe@mBb@DX-Wpg7} zvklX?*oCqWo1}EI5G}dcud=}JH2yE`L;6vJ^-{aHckj=;^(x&>lSei6ZAxchhvDzp zT*}|Cn+ze+Gfduwe-kL%bOS-Tm<+{8Jg7h|zD>ih|1#IBOzz`+YLnT#7^OVM@o}<< z&g}t%(765Rm-|fU7!CcpcFUQX2ESzY)=JBDx0UYO>ro4Z>{@cy2+fO$&}_0=BPed8 zeSCzVu!<$ytWC{gK8iAvR(LyZLLWhqZbXB2p$86CZEiI1|h-+#Sx^ptnqwy!b5T5giuZ4r;Rc$@TS z@Uf2)h+A#5`RwS9ywvQgF6Q2P9m*JJR<3U_ zXp@EwN6Z*1e>S;`d+S&|bjDDw=0)zURqgm0L#?`#xwl@mlV}XR>MrQcdX2bW4BjV3 z-5(Cv7slTY4&4V1pc6&EPuDQ<+Q^I{{~9=coWSwQNZ++wCq@hRZIW5viHvcUXzrjV(rJYu^_U2&83Y^? z2#r)q8-*2;P#MM@@zxq`&L6KHXHOj-xL#?uc?6O1(n3do#heo$JOv06fVCxvA|{;n z9vY{lrQS&GjB`j+V62cDaB%(z_V@@ME0n#Eb{pj%#aKrzT%+4|3ejGM&}}OXXdlbx zwuQ>mf6mmo-A~8q#J0KZK&k1*n7Q3g$mom341!$xA}d1z>?;#~K%~8d0s)7xm&kJo z1O`w7EwD2VYpAvNo+zgP15A4_EMv@R0Hje?OQd02q`eR6Ly*(b7^=ApL|cm))*3s^ zkx>ds541oygwxHohG4IBYw69%`e=k4ez9U_;l>phoe%w!eJc!shkkxny zp>Y_SaX6822#fJx0^SgrGQ#oj90&*qeLUpLlox zv2PHoZzzfG00!Ma`rL5t+#urIP}bZbl(_@>atD&-4j`iqXQK5ddmTotI+T?(4kc+s ze?HPUWTeg|Q8)LaYx<8frvErMi|BGFM3=!IxT2pkKD6f%%eBNu_n$JKa(x(MR?{-~BPx z(VR3pFZyU6)$GCDPv;Lkvyx;9FhXnhv$=J>-_Ekk-7nq4WVK$t^m>2O=O5HE)F_|N zw&lr_O`vZ2`w%X@?PF1$VjXaTfBEeGasIqaGhDb(O}r))GO_ux?n!+J^CaTE=lMfF ze-T<*{-UNof6?UVhly1$H@kiK?)#tKee?e$k1u*TvB^jE!M%B2q&m;sG~@ohO56B{ zG*d^O2QdG9v-x`BU+#;it3k|J0;u_HwO*<~Z{GZ_b7*s81=?cq-c;uPf8HSHQ-?X9 zI?(ytq0TL#cg?+z??2<}Qrl`Gnak_D(V_8|<#Mo*Eh~~WJi4)ssz`kIi+q@dUGe~B zDq)Pd6Eic}DkpO8=)7Nq{G++${An;*X4DHkE!)9 zzQP9ew&Aj{SBJ>z8X`Y-e`VM!JHDodh;O)d?EeA{OKH$2Xu7;yy7U2Mi3 z9PCjQ(lD<^m(w_RhDDKhKp8>aJ4Qg@Bzr8lQqWm}1VLP4&II&MD+9D)!YKY}>2%=gWtB}T)3*n%*#wq9+wVoNRwIdhTlcAi?q1RNVD z4J&^-d77+?T4J9dVA|TpvmmDp8jV~oCLnC7z`QqalO4e!$Z0vTuJB2{Qub+oGJEr+ zX6nJEzxidNl7C#P#pD0=Z2+8J52!$s7LrMimzWBxb@)RnKA0)ae7N8KbyM#kd6nMf zXKMQT(4saul$_qwH~kNJ%H1qkxpkV0y8w}c!!At;y-MNbbx0#U_sOGLS~CwWzM`U6 znyR^}P>kI8ze%!jn{PDqlSx)Z-tW<6hinNFQA z^T&!~JRPIz823bX8(!~NvEuvk#Cn@TlDQu=#Utjp>~~PPxdYjlCGYeC9^w!8>%a7gw)!9 z%;tWwTL$~>_NSLTp}Klr&)=lQ!81?!%zZ3!oZsawrIL%Kmb=<-R*8O|OxJHFv&|~| zUE+RSOebctPSkR#UUp_oNTZ)N*SR?NSSiAbYTnl@;g^;rykQHgYtgt>j+i*OWov3x zsJ`cotyFC9X;3M?p&e&`luDPP-uZoZ@Aq9MM27C~F`AlgZ13JDU*G%>KXFt0U0C(u z!EeKJ>6xCwh`)dNvHr_O1u)Jf9rCsI9*i*CkK5@8i4Hv3^?%ECUl{M?sg+tP$ z$v7HZv#gHHT4)&RyY_{9IKiNU+{%(Xvdo61HjLmv0ENb2X(^Wpp1X9B^rQR8T12hyi^&LVl9mZ#*JhTtz2;7GT0sTo3)LR&`kxB!gaM}c3j)z)# zVi2*yI6|0I267iTCKfX;0%?LNWOUA)ufa%zLkt2aIxupt4FK zA)vz&DT92bTtk2GY#<^ zMe-nZcFXMXvRv5~XJ%WR*Qs)O9+k^-r;O=K8R$tFZru-ep$v4QjI3%e@5vzl$#@F? z#vCW@%XgTD<2g>6x4OQXjqf;V+h}@dH>%^L6Wi#hj*|m&PmJjzIFFOyJZ^#p&wwL< zV<{RuvEs(cXa6}KfFK%uN&+D82UWUVi{;zKG?6?zq zlRUbmdwrWcOy^on!{edfDF|Mq&<#iamV?rhxAQ5IY~B?!E}70B3ewY}$Uu;NaIzTt=Z;B`W#-*TE<% zzRh>Mil@vLj^48L`>h)duD`bhB zhknD|x4VwezT_6+xo&|fPxIOOF{7DmVq_YBpGMi^tAdu&5-Edj%ll-yG{fo$WG5GZ zoE&g*Hc{)l}P1ELqM!uJY#Q&+FC1x*X0488DvHoa5R1*?zFfblx3@ZHH15CfkL7 zGMCg{@>QTCS+|`0;%w%=&sxZL`eOE_JC%D{tY7YGEU2~*o*GzlpSJbY`=8!yPnUen zZoFqXOtmOcBkz)T#W7>layiKo#0#>2M@7az z{eCAv+{kFU*3}3cQC;HSf3PkM*SBuEG);jKMy7II>ZZ>CPf>#+9q2Vt4Gx!lrPYi} ztBDQsUBe1InAZ{&*098mBdl=+4P(z}M1clg5y3cumMM!c6(LswML;V+2=W$EDja7P zXrnzukO7S$=gtU!KK4wDyJ>iTh1po6jbq2WBHVCBjBx-O6>_N%D7gWOYeNZE+DfH? zP#&Q`s9_#ZkDTFD@@RqHQ&DAF#_m|PW#cQd)su1C?0#tVF5I>m=6me!+p5uAHi~ym z-ah3`V*@^*wkhz~VvMXLl28R0QI2Sf1@+ia#*w6wa)&VykRxq8)6O}6CyhW}aOiv+ zZwMLa1QNn)!VQ+hK!+{zA)gJvRs#VA1qxCT%q#(jBwTo_2*+F?Vaa&Bq4>dhFlVUl zxV%If(NLG*0Ds_M*WLiX-T{uXL0+hR zKCx9DznVKMphFHL>J{gXBhNW_!WHNtROx+I6WOs^x_9H0N-~5y)CRYN* zl|XSNP+SQVR|3Tz>GfkEl7KdH$b5R_iTZ7?y3!FMdJHhiqbhWO{v*;4m3oE!$A$gtgM1gA;RmDe5kdW(6Kw@L zFhNWhLll7wc*Llax7i*G1isMmR%_r`JCVDEWi zif~?34vzv-Z$R18|Han9ZG$PdeX9XzZ%5gaQoY365;UIVg%P{pU zfHxz`T=C5-zIi-+^QU~mb&sMiP0@bnVdT{-zLTt9g`Rx?EPk2^t#$`L#V-iF+GMF&T&P$!k;ls2AIxqB{~40G5H6}y+WXW z<3ga3QND}M^n*drn5a=vP%JU?(0L>vBhWK16x76V<)jMXhlWTGfG1D`t_ae?T4A7} zNJ)aR;O9d@o2~WXFleOBW(W*9Zx9C50g5>i&I4l&5H#dEq)u}qywik9X9)<9vV@#^ zK!GP#aK+DugEo)cNI+p{2;-F@Vv?74Z-T#F)Rq?0&q$+Z$m~U(Ue-u8B`J}t)*1hK?FJBo)e{|_MThK z0kD=3CvnKU38>f98%l{D4;hUfG@l7HI?(OW-{)}!N3Y=M=K_wN#}K?Uc=V`$Cg2$i z!1xF2rpKrTU}xy`moG=2%F!GaMThMLDwExN*^5j_SN$59nJfTOW5aiG*IG&(LcS|8-Q z=nOv?7>x)T6&K|KKn@8K)^* ze7I<%5k4FitvA^Wla1Xee=K9(IBp|>qOo;w+hEFFBqUlNpl*mLGD>Of8FtumZ$#h| zc!L3_j6&@_bKZC_jN!&2jR3U>5v7GeRANn7YpkdwmJ5Q?j}%bI9tv>C>dTMI$vT+UlfQ1<4{0^~ z``{AGwzE|hN}6tWY0E>RNuzIfghwj8auY~-6;=&0#GZZ^8YzFK8jnx|7|*7sK5 z?|$43u-DRX>E&Jhy1krRdlkXuD@5OxcD3l=(r*~OFX{I-xlxP7P4W-vW~LU4Y+ha< zZvMw?Z%>R`C_R}@){}5fY<_x4m02Y!Xz{RAvvr19f6Uy+f^BeDAn-v%ag=ONP5nHX zuHQ^%n^WX>iTiaiotViwQOl)z*`80~#iz8n{Mq|mt}^-)h?sT!=&Y;LbU+_Tm3^brb{dbUQpL0x56-VP+%&xVy$?0(tNAWf zgR%=;ZFJxuxAUgmmlhDT*II|jTf zVJ|4ZJcD8;l!R~_{vxB^{2fA4Y z`&bWfgAVe69_Z8@?9m+VvK;QO9LZTZlBe>w$L#6sQM;0QEOb^%rY_P+8 zJ*W2eoYLQOT8~c?+szPyi~&kgg1o0lJAycc$XQDPz=A^VITRQG&#;F^ONo&qLLrRV z*p(5~gPW~CL8@E5U+3Vt?P_r)xgCw+sQ zWnrkiz7pmtq@ir#y!+!Sd9|1?o~P+A^Qp6$78wujF%ai^(wm;#D&1iF($Q8QdcLw) z&Yu?RRo}O!YF2rr!pKOHY=!T6XyKNt`AqG5EX>j8rE#5~Te`)3HCfMVE|~f&&wG2~ ze(BJYkRW2UQ2TVOQH#QIoGqT$e?_8*mdVrR2g*k~ef%aeh4#OjKYvr5NgbrB)rXtN zY})^3_WVtCPIY*3s%AH}X}0&ho5-Z=AS`?SCN>rKzg@g=vuB2OZ)xY zaJ#d5|7+>fH_@5iN#_0Lt!`;zo@a@fuhwC=Ur$qRYg5jcBE3uQv)M?ze_PMjYI>ix z@@2A~e{i$x)|#Vl%ZYI|nauKIF2$z49KUf+exN`CUIv&nSw!R=(5sU(|e$}97` zLb0`aStU0&+3B@C-jheQN@nxW)m1oZ(+oGMH!=UiMzuf-E>821nI=5B9oe_p5TzZx zNuE@2g=T1aSeN19S+e>te_7-Nf#v*TmN6)MD}0*pX73a<-#E2?Ub@6j)kDgheN?M- zS*{X2pHH2d)!+AOy2=2z@NhAmJHL>2xzp2ug1BBQ^XOK|R!qLbZdOm8SLh{Ci^cRM zS>~d{DK{hB(brlzqzZf4NG1eVexzk`AR` zf7^;tYn7%Nn`eZJtUb3(vro&HBukV<=&s;g$U(C^W0R1VLtCQqSHv-!Fx@pPBG z-|97=OS1u)-tGvxri@@xd1*t&;x6IzZS#7kkU2jd+&pq`PDGZAEg3m_!qZarJUjH&761=&b41AtH2RY+^@>4r!Ohj zC2(Wxr1%8d`T5diQy{F0#Qi#1t@A`r=?FZ}y7u^+N!Vzzf8|JTBB{IAJ63{6E&IzuojWKb*3ARW`0St0btE6SA`pkYx-j z*67oG={D>9ah^P>mn==3DjJ%s66?$)SSJg&4103+dDME-;4G}n@Y~1v$Dl*rUOt>3 z)lNdXyW}Q6dTx?e^N%yPOxO48aH{0S<4uwoqy&hN4Tn29w>(*}hG?^7i=bU+7 z2F0iD7dK6OdQxwRc12#dVq^KSu%^S7xsw9$e*LmYQA8I^*09!c>otw$$@~hXXLI`9 z3A6i!e{C_hwS)HAv5`DIPuG*h)KxpY%8#er{i0W_!`GS1BPT@7m&uRczE57IkB6Vs zV(}&&@{Mz3`(*ZuH>ptjddK@wv0_W(^oQMvwE3#(Ar&qHndE;6-h_?EAPEi{8+NyX zeVlAx_{(ZO(-j#%<_B9j{v?mAcx5L~ZkC=Rf47Nwe4c%{4^ecRf3L&U_u=I>acgt; zdN+lY7aMZDtL82tU5cw$j_;(7R2qySKRsdYgQh%|A|^eQ>XfR{l9m zca{3oCgF5(p#!(OH}Ya(WY^{54A{(-Z0(0>AJo{~@57%9TWHg_^iEkMt~Af9_53MG zBX(9_Ze~#Kt;(0pW>8|I_o)O1{UOa?e;RC*RV6xL*CBj=+5n!C=+j2?ltiC5w5Oy> z$?p`Q5R`qIBL<0-v?#l<>S|QIq{q@@#~T)-Q|vfhkEKD`u@;*dWjF58^w>J-B1-If zg^#7duD`FYLfPqjv{5KI5F-Oo@oFDSkBTp{u1L*qesoQ0Zp{{@B2N0F>G#|`e{FXW zfMdzub+*jmRCbG_sH8lGy4lG;jnuoRjvsA zg;k;Ac6qh4r?f2Fb{(jNKyoE5G!8pPDb~tBpqy19n%-k?7=;!y z$cQ;(+!b|9&wuj`^DFec=eV7}(UJNFaNZfBh|`P< zA~kjvJ3=_He*_>Uou?2et~B$+c!Y$f(6&Ys-zLtZfVQ!MV;*u8Tk zK8q-m(U!l6T*||N6(DikXwkpXFz6ldH{nvdq z6u0?LX%BCcySuyB+bJ7<7qUw%pVV~n*TA5i%|lX?$uwk0c%E6eT$%aOz5dMdHU-EnbY2uMhJ0a;nk@TkpBuleu zgxm~w#oBMm$goKxlC29hD|WOZaZdVUK>N~Ee83kUmgc3%6tUV#J@jv> zfPcHoKBZb`seO{!eD)^OVAEi}C4YRJn8!57Ovu-h%oi$zN2N0`+0>xT!sWMV6~lvJ zEXq4=W8Q@3_V~a3ZhKzbB(Kt>6(PC7 ze`NOXddogfo@a|9X_wy>x+<36gInK+gg!ex+Ry~D6_`KqdMhyGGRkrv{i3GNX*Q;G zuT`rzlhs{8hgZ{&AQ<{Pn@mWtbSs_5cxV9|68$-oB5NT%r*tD_x5YEHDvF%7Iw(7vuJhGSla{qvQfLUOCVWHeq~|~ zm0rD>camM%2!_h8njoEI?=Fm?e}YSPMJK7{4QQy`it*G<@}cvq=e+8T*v6&CLd>tB zi-(3TM#lQCx`Gc5hKdQPF4dz5DJ{#RNT@8pVPRd$NWdMCkV6C%FkW%bBo)LFAs7P? z3!t2_z$0g=)!bTwERe)XDvWmL3+rn3!VZt_inQ5f5CPDVdBcSV)=&*Ke@BWFqqsMM z0ty(l&KYQ#S5!KJ_wLFvyIp~P6LV7L!s_Ah%H8yt}FNP?C? zf&IRn{f>^F?u=`_$0J4poX$yc4*$e?Tob4EN?eXZ;s`E;6FU&P@Vk!ZK&Vc_ZnDR5 zAXJxnH`yaN5K7CSo77Pp2$gN7qvQkUSKoOxjsqdi{62-Ld?I7{e-!5ODGcVgMPixd zlyZt0Bho>mJoP%H^1#jr&logZX(%kyP;ek5g^*x?J%OGwC&kF@sti{=8m;QK&pUew zUuPp})ko=Ic2>{V_KnRTy4P;Et~{^bB+sjCF@K(PufuDj?B~pkRmY?kx#`DZf)v%k z{=5qaroG83Y2Ut@Qh4NOkjr#gr_76#I5U~0T%Ff>o1xaywnA2p zW8`e3oM*QA^TyQ|n$MaX#(KL*me{B@W;(K+2Gp6^Vb6S(*0u`u<^I?E@4qWbZ}_~J zTJC?ys>r3!C&}M_{^GxcfoAS*?{^BtlBf}^5UPpx73D<@|Bu11~q4QtnaE5cwqiukEldk z3COXM4nrjc0@7<|9Pvh2E{PY~8N`vricp9EcGA<3f6&z%bv~j=#FI3fVY1s;mtoTg zGvk#ZTv&~iVvrLr8G}$e0|?{PA_s(4KyaueRZvOAv;rJ!Vf-2M2SA!?aL1am+%wwhpxJog+MDujcMaK#n%ZDbOK0TEDg$Gmn7 z62iSlf5ZuZnc@seVvv@UK+7@IN^54MM3P7fyujR!NG2(7jmKb-^!HhvicB&r7h@+k zOMm}GN7hH*OppiXeEdx?K2B;WT?qf2Vx?@x zZG#0~B$MD^WdG~U{8+8kdXur?)g~85zH3dMikYw-ncmrL=FjWJ^Sb|gv$+k|pD@dN z@&w`l`FiuMR>>=!uIBXLAxX>pd0o_Bf6mCw<@Hp2w8b*#WTdln=lK*zeNyX5$U#wj z(b|}`RR^i$2HC!Q6CK7OP2J~B+%yjGpjLO9x%q9Ef3Y2^ z+hX$G?#{W_C#N!8Eb}0Km%TqVA)!HyQ>TY%P~+T$g$A`scbx{OSZ@bi)op)>g0*8P z;x?vI@J%wx?ZuH$ruET4&U-r?$3g1k#a&J21THRY__5t zYI&W!`jZGmHNRAEvtO-}S%6fNf7PQ}rbkh%PDDdryH|{8as?#y;t@>@g!Yl{?!AjB z(UDWKf88FYMdSkCRg>6!KR}h}#lEX9)ji<=J!*zYR~-hsup>%z=HxUT%LhsCFST-> z9U!~vB)IZ(#^dKyhx;zJ{0~k&(;zFlzKWLFLTeB-ggGcB6a;8)3CD_hYRIOIo4*28u-+uf12Cx3`r{=LUGB7v`$EP%qUbxu=?ojvmdK zRQDw{^1zPgOzO()JFYV+w){G4GOjZzI>|fhGM+Q3w*EWoFrqW5J2Uba&ZGfSM{_1s z53GSK$$#N)lM_2mPUbpkF!7PoPfO2Z*r50t6YS+A9eWwoGa31d&7# z&kf}g8#Xc<)av^*M1OrveKcsKK8f^4)vk@q1U-3ro`blB&D6Cfs@ZL?Bs1w~6$3sn zjZ0c=ELqM!7EbTg#JWggoSd5$qS8|s(Pju^iGQe=>039;H}d+Bh4!&?n&~ucbe19H zk!ymAYl4c{EGVzL$egGz%~81%)xGwl$tw2ga;!uX?Vav&d#xW)`^f?I?$y8TAjz@q zd%yGn)=ETn2hh7Nxpx#-Oz_@>6g9a+qq!o|uZby+2z*z^`z|)Yhk?V~P;EKl+&GP$ zlYdGnhKK=(Xs@gTi1GjpTZC1xZa6?5A)>ri%vwdy2o5*g_xHiV@4iXC{@?H3|Mb4k z{LXjiP6LWHWzq;Dj5h`_;E`fnLT!XH!eT4AA`D@SnbFL7NC7p%3JHkhRM_)D#0>-5 z3=UTkS=93-L=eTMbLn>Ho_kx=R?RN+;eS}%lOm(4`p>hZoF}6L^sJa7SPQMSU|uVV zAVk!8OS~qI8pwdu7BQr>#R6!=lvP|H=_v33ThInQGmkx{1Yn6dVbDnkoJJ(9G-|kW zh8u|`QHf;%lzdQFFMO*x0r z6~8>aA$B1)*s;y86B%Fo!L(x;U$JS?LHa1hR~L}zD8^TZG#W=VzQ#(YG1SaxsA#7Y zMWNu6==mgn22wtV)xEM$lhx|tl4@Kan9@92p9G*1>)sVqIWnjc20bKecwQQJA0}=8 zxcSh;YT?ZNGX0uYZ03s1T(OxGVKa@(x2|K$N*@&;iEamRbt1dQ=&DptlygEyQGJdD zAMNjamy2!uP~HzCMWwe)!NHoe9bnzHip<1=G>V;nhuyRpU~@I-(E;>|YtY;FYEob? z_!X5u)COzNq7?+&vBU;lPlMt0!}gF57nUO9)0-zXQxDE2e|pw#Idf_9tm6H|sI{8T zA69Qe)t5<{;wRloLTVV5gz57poj%#GZ}V%=n_t{=m8DBsKQ8Cb504q3RV4JXvEJS$ zA0Ov`tMqoYsw9uw>hloNGRQV5+Wo#vI2NvoCK5`ijDDq5F;d&Hp*b35N8TeqyRb}{@G%pkAZFu_P&=+EHBx&*kS9zTqGT-Ac?WBg z2>dBscxe12zha`@G0}tEI>S9WS5)&^HKNC)X)<@zW;BmU7o_^A9+M7;^$9#C9g*v+zvP_$lGFPLPU|ITvXhMbD1SD6 zA&l6Q-oPV4w z?$ zP(gMop??LFXc>mAnnCzUEf#OG;onZp&EC3wDf`8nya>bg(bs3Guu#;AC^oCG8!x6o zpLDqLx3i{S!jum{lUgjMFZbKEQ)sYl^DATABEV(I|9b!ZcZpgq)k`w>MSnYU{TFA} ztGAoyljLtdfAL?!eERu|x5>|6eD%D3{A)Jef8NZupTD?Ge*Pk?kjd0NxK()cUw-~# z<)+T8vp+sBtXjLDzxdbiLpbEZGk?3gyZig!&s9-kcQRDBo9b6k>6trOB`G;~w!Ymt zkT*+V^t|~|On>tr{CAs%(+Bb^@%^^&QTT?F{41O1)jBIcG+VE}+ze4z zJWkn@SG;)hCR>Hit6aa$jYL0Brt3G8*=AP%E^)sug1YNsj%~ix`q4cdP(q`v@UHbLT7R9PJi|X_zE-nY zWN%aV#74K>iVd695q`+)q75q9Q0sa3{Caisu~V6b_Ob5bU5g0bOPgz63)P7=NPe?b z&_k24bm%30fRi^Oy8|VzX@4Flu`KDDb>UFHQ+0^%ny2)^Os8g92Q!=ihll|Ih0`8b zrI=uf3ND3F6k`$66@M^788y^ufV`qyX$YaikP_#uJ|DxW!7n%lyQ$iAmw_})5>64e z2pH&^xoj3edMbmh8nq<^?4f(xsWW|C3oATwG+ zL6L=0bS;m^VI31$w)f%lRkl_n$_3+#CUkPjq#F0FKwYa|I1o+z%Z;SzYy ztQ?uNvZ)vJ>2X$~T{{P5rJ~4{v2tasd>)LI9qwaq%72QU%?DM5l; zD6y?q%>*&a`K;)5V7RQF7mN9Foj3fbR`=->dOn{z zHLH(c>VHh>$@5A6^WXm?(dl$cANx32KhB@mx!IZ7nLC*HPdfyV#WFopa=OdT^C_VG zq}CIorqh?ZrYY2^`rXcJWhRhWKdb33hj%fl%zH45Ot>@)(j*q4^!7s6XfEpC2dYF@N1lifMndN(1E7LrMb=A42VtEbeh_!k0H^;-; z?0;TY8deJpYiDb}vaWuUtgDJWbaK*FRsN|tS5^7vrd-v&NA1oP`8<)U{iy7ws#2Bv zR$ZgowfU&(RIQBo!_`jET&usx;d&b-mi`o})6<3Z;)iP^*qecb9z4SJa7~ zwr8<)anRNU*X_`~a$~!~5YbV`!CvXTVMmC%;JuW*efz*Lu@RreUde4MXNV519*Di# z3;-eODs&*^HJshUhy6;&8;_1x8R5J7JUW<#R~6AZYe$zB-Iqp}64?!g@t5%e0V)k2 zuP~0??4uQS9^x*8mnZ`PCx1d*=i?H_2d|k*s8#{>$>!Coo6duH^Y-o1J(#IltzLKI z;#setV2T@Ql?T*^ndl4z7E{0w6j}>_07MjO$)R(MIROpwh#+YhByC(gX{6K$VnnD= zl6uJ)lS~ONr9;XiZ3N&1BT5ZHq12Z^0z0ZOhR!n0#^d7E&Y91Iihnl@?HK~}G-5nm zVU*6O$SC+jGgfd^GG8B;>{*$AC-w)O(G_$-UZ6{J09}sn=aSq$m*MfbaA!|5H*!Qj zOebdKG5j#~k=ieJBtJ}ajqjI!xF2Re8}ulCn8@1QFL`7?OzRriugw^Km@Zt&x7~6o%;RhtHJy9oUWRX z;I#MaYP}95x8r4aI~nt{K8T$>FFUW@v<+#e#>#Kr#K*X&TKC24pGSX+y3a3>Tu9=p zC)1RRU4U?t`K-cKOTXyOWKH+5oWhu|x%`ZHHD5jiPvPQqDk5(>oZfCZnLXT{h30sA z-rvqx-ByyvZrjz)>A-I~tFj;pJ3Hlkczm5brb)m5t>Ty^bYH-zJGvg-Qn9D)(A zVf^}WD%~naYhAzE{pNpEnq5$GwGDM`tL1T7Z1vF?;7EdP5_t31pya-aMGH*tz%@p zYZlUFa5Xkkab>-f1QP&(Wg2?sxr7{ef`EdWaw3@l6hkGgGRi9>nZ}G!&Mttn)-<@I zXTqyH2czVs?F+F*aNBeOwY`?fYV=BNUo9Lnbz;!=nNsc18jokEySc%>OWld{b@pcE zYyMUP^7CQmpfl7tgn@v6NC;=BkzQd9Ig*BZBn5%k0mTD%)c}A!2FM7;F%!VFaRQl^ z$T1?Yu@rep4YS@OhMj=W2#KYZ%y1ok^j<-tIRu1BsW3#wP;&%MVC1O&Oz45boZ`d% z;X_>Eqd1*M^f!;^YW`%?2Az%?^72PoUjm|NARZV+FFU>~wRrO-}9nDuY2LErcSLQr^nUi~F z8e-fa#=;orj4;4x%P_%67$ZGm0*Ct;aGY5sIIsi)Y(oSb6WRhu0Csp})?SKGgzPs< zw_bgMe7)xWor9@=7t>~Rj$Sh#Z9_rRFUjw}4i|>x-FNT5{_&?W!=tdyUT>2dZ4K2) z$(wz%N`CmK-+%k=5BU=@(>7$S`r*fS|MyoveO+nqcFP7a^I1qE8*sI(0`q+R=$3`g zd^!J^69`v#XQ9Zwk1^xk=A<~6XFVzgvB(0naz#R-kT>doQ7x^R2d93)^SC=NWv-Zp z2h!FG*4mplTaMcCC~9S;+l=%4$uTKkF=E$NU`DCAX=8dd5>Tg^e|M~y^e+>-f@RtZhdH!+cmOBjPO_MoO`BhQb z{>zlO7FtPvnae2)>iH?ahM}N+HihaNQ;pYFB02x2_-uPgX>Gi)*cp9tMp#sdQ**(h zN}QVo79W|?sSp{U%278egDI-f$+=4<1F~)UbTJ*{_td0?UeV#R93r@SRcZE0MHT7p zk7`h$3u|isJUCzk_HvWDEY<_$#~C&yn|hG(^X`3Uww`XjD=Iv^(aL;qHu>Qne|Y0& zX8E!RhxG^d^5z#ceRi8;JGaJ@A9K^KRx2ZAg}bLFFue01cOb_oF~e^Fdo26h;^r8-q_%VdzSm+fJ4#8moumSiN3Z@&8W{ny<{9HG*o z6WnoVrS{ev0I?#*LJpV~lsJtz#2)fc4bc%!od$|XLkOf)AlpXb(1Li%u{VeUOqIhz z8$zh#8bJUE0S0^HCGuJU=B?#SV$2A~z+%U^ACJTlKaCEie{WnMSEIi-W{59jpYNiJ z+hTmiLWE7zhs1DZDAFy)-^5KzvPanK`( z2?QK*aTHiLe>>GbSyVUDz4L*(C1tL8SI(Mu<%)A(aqcb7ov+N_6wF=Hxy`cMg3ecv z`?CVMKNB3bbgZ5UhAr!G9u&5$!)1W5Wt~b}RwNN^c^5tc0$Wz+5&+of#OZF|Rj!o# z;n$WAGF)o)_}pjJmzC&i)K{f<2VPq~|M1Rtgk4)#f9G)Nqk*pFhMO_h#Wd{2;l$fo z^x3uvz!FXtEdBybrTd5OD0%E=J%n+nGR{}V0sPf!u z%7vC#e>!X^$3!8_l?c^T6fw$i#)v&P*cuzwVOVQrnhu3pO9~A^S_z_32`jwuOiOR6 z_sj#&o!1&0NR)@h5h%40hB*PKW>|CX83Mp^3EPlXLV$#VL4}ypoCD2~F_0qVs3(vD z04d-ENRJuf&S396cElM&9M+nGv60rw3G|u7f64du5cIdtFB5n@2xUE~X?A9-?7|GP z%dy2S#tb`=5w;&(J%$lh{a~jw!Fs@|$1uUVf~v)3>a=)kJID0 zaXrqD<;L}DI5T3|;u?;|kul!5n&-xOTPIgHyR+e@+m844`e=vg(R}x5b40`y?Bk4R z(x)3H++n&LHY^>m;Z7_5FfB&Gh~tfKe{kZj7K{A)P~m+SZ*J}Yp#ZwOOTL@eT@)Mh z_$BpL%;u>NqUw1_{%Mt69VRv(-@L%wa-&wb(|rHc^ZF4bW;$`Rb*^_&ef^3YkAxgY zXT@FfZZHf-MiO$wAfcQQ=(Gibc!s*&8X($k7!Xg3)e>^9S z+~zbH2TP8x%pQ0$VMuyqwFAU+ry&qT2<{1xh&zS=))a9kv@p;rqb-%jQYt(O0n!%B zbK=Qu!#fO9Zk)VB(B-IlLl9<$xy2Z8thG{DXyGJuP-3D10g8C%Idv9dEU^>PODs4A zTqz(la0K}_gc))ujnrIIiw%dKe-p;AMABg{40cjN3mgWR2<1F6LUP3jL*6k3rR8=^ zgt_4i`xL`@5AYX_v?jMPL;w2D9LKG z9!hUD;=K78Q2@L1+4Ln${ka?-fXwE-dR{Xa}>1?G73Ci#Bmnk1I$KsQu(Zc;Y8%??#_cT?|uZEI?F z7^~%KAY{`$*YB0tv=3|HhEO5$KY5GyGEFJ+0Vs!e~^4N{it46=^zxh z!9aKk?1{&}{&BK&X8nCQNdmQD1Gc9-XsV=oUO(pA6(trM?|8TA6;aRU>#&h5f;+)D z`@D3kD>yI;IM6U{?heEPm}AI!%%GwSTgsjBjxoTA!OT&uk)Z+!ZKQ?(0nVf`$YN$B z)&?4S#!9vAm&Scqe?aen?lPF3OXa;6L~$dHc3650y(AVQh_F`{DxeJD02o0$GQw&J zA=geRiLiF(^Zd6DX0zvCtpdd;n{TgfdJpQ&+qX;iV5Vxddfm-&kCb!-3Why`QgF*P zpoTz(5yD(h?V&)zBhH8il2c-&<4_2~6^2$>-sZTMQUmCaf5RlyW9BB!D8&?&hD*z= zFq9Atybww_?xd59O9(^Ym_UV<5?odFd3%9(tf4alHptifz98UF1P*rBRw;k_6 zb-|Uz)=l=oQhUnld&{f~tWtTe&Z-fdRh3~r)KdkRv!Q%1LC6?EG!j}-2Q7k9!%*5+ zFo6XXNDJo}!PHX+5CO<@j66HHrz(DdInYg2X|$7%%3#Hiwb)Yw7SXZo=#=sr7*hsW;jkl;BgYAGe-w+LBnTl4bzUQ`wNpVbj4fcouxB_p z4NiBVQ&c+_yyiw5f^YytBz0CRLyTmIQy%{E!k9>^#Ke7$oh)z{P?WqQE&W|M3 zzpGApQ#kHN@|x45+n;Z$oNt)T%-P3>*?p+5m#Gs0V}JGOo0dIXGbZ-Qz06Y-DiXt1RW1JAfnN~iwqvKk5$GOBjXs(5_iVKFi z@E&ET3QU2EIVFy3B9OL@bIP&BoKuXmKG0m#z^Ns|WfkDP!A1rl!<>bxt9JLzrw&ip zM|J`@BY$a0KTnY7hS{xG-S=H~*Vm2p%(?5U&q=qub9a4h*^G1V`p!UeM(=N0Abw4p zG%}!oZPuVbBkTZsfpxGxfTCJ4iwJYUF-IxVPB?EZ4w887@yuvWcv-oahWRPSQl4XS z<;B3A`!V;ND%hyin2}ENQ;VT)hB)<2{Vf2fc7L6|HAuZ_gVaUXZ#d!v6kMmGa%rV_ z@3zb?ybWsi=S^HakrdigQ8;<`5>L;0S>gPGSj#u7rn}xH1%0!uczUbC!H1Jwij?Xj&$YX2F5e=HW-lfu4i&aj#u0~XL;ja#*6Z; z_gt}e5cBW<5TEp9?-C2D zFWl4q=V+=ItHmxWnv@HzsBl zzh+)f--yX}H;XiWg(<9xo&d$STYmcK=fx)7zoq?3$ZcHwtfTl}9@-?t3rbGF{<*UE zxhUSadr5ce=j3r~R=f1O{UjBICx3=kz5Z>Xkuw`(7t6(N5qHx2f4vqyG`hbJnW)^_ zuHb8FLl3i&E#|TZ!eQ@cUlz;VhsA2Y!he~--#1a+UAfBkZ)^7i&wKBhUHz%5S!Ut> z(|?{+ZJ~VwfAxY39jaVA_Sm7yt;3RCFRZrnYIuJQo7GuK@g4ddZQ{CAJAd5^UroVl zm4_Rp)u|(|D^_>)ZMwA`-w$YeRofqacf?Z|rfzK)P}jF%qcBk6TFtN)jmvoYhY!hr z$kQX;-Uxn7)+?xPs>&xw8tQyx|H!wk?_xEwtP9r1{Fk&SjFUc@yeLu=j@vO)!%N(C z!7PJ{rH`^2Lr~IgjharxV}EoSU3{-oo!&C;gJ$Q{D9tuUwUhrC{U!kEooWqWQ}p}k zv$dEey>152RHNYtHAbHXGk2y!O((2xY?L|JDDBh!(D9`%> z=N<)#1t%VBfs9}Q0~ay6BzUa6gR$_ME8#JK3xAu5 zQYWntj9R7xIHV9@Y=5zgG&rm^V=90qhzg4(_YgP+Au#Kr1O@B85k?@T6~i23EUD)~ zs$gh{O*<^I9!n!az}hO$q<2_?V#2ea!i=2-y1e2)NDKREVWzVpOtZvtW)I_>1Xo(( zD)VZv)7C8yMc(gzw%ka`%=&yEli|{XTS{x}OqC*Uo;tIBGVi zH^fy@v&QdxluomvX8m0&Zh)F~SesG$&5W82VWVCiHJd1XZq%&7!i~~rcGRrNm%teT zMh?<)&%-qCWDVb*>N|8YmlPTSJ%5*Cyx$hXeedHbG-o3H>kDin4I{fTNeUpUdaTc2 zm(zVx4yfe2gFn;}HdW_ind+f%osLqy4Hf z*4OpR(kFHc=5sdI4$_FMub0`QChx$wr~JqLL@ie3vfV9Tt0%#7)SN|@pT|R67mM%@WFH4fRFF3WTshR>+*2fei}1Y+{+f0ug4SpklkLWZC`U%UStA4X7`_3 zw*0`Fee{uTRv1K_o59Uv?)}peQqKOB!DGLwz-t8^E#ld~{?l)Zxhk(}ow2)t&@{5v zVq}TdLSn15kFPsqwSV-a@t7M$nDffeKoR!YHUVK3DDHx$rPfRc7aJcV5vT-j zV#7494A)?(paOA6t>DHJgRR8cDJTTkxOuPn5ntBcrFdu^4G|9?W4{ zGu&YT=M0gjYwhW?qeseU52No&A(Ao`tKV|;l!xW_F*jbH zGE0^`$30p>9Xg13+Mg7P!)2sKZPzc4PdPcw+6Q6ns@ePi*Rg*?1 zJ$I+g#y#eziW%s~!&|ng-DTjK<#w#X>3VeS_r~fqt3KoP=vo=m73$m+j?-*Lb;j#( zY(1tcaDTEVA36iWBWtZs-cChtU6*5Hiyf=7fsB6=Kk9aF1ygZ?`0sy6es}kOTX-^G z7VB;D;osD_&8-gPDnc8a$2H})c#W&5(7A`0S%Xm>;abPN`^zD~5qIW?wVI?aHhoQZ z@cc3M6+ir*J<)yjxBb&5|FYki=NILtkni$yQh)ONlH;jq-p_4aIUGfB^ARHA`jGta zve~S+F|~ZXdrF>Op3Uk*EK=^PTD&`LGk2dip8NOl@;|SZukTA4ZTFrgf9Kun7U?JB zpBJn54=0D!Q;o|*NS=?KVL2x!I+Gph%HDXDvt2p=IYeA!Rl^~E^Q}?x9GN4HYyP2Y zgO^Aj0YZPsL`ua4XU<~pgEACiOQL|WlpZ7DIgLeK6-Pd14;YJ#W>_#RvBo5DWA*LA za9tBQIU(hAc~&ww+CS98MaR3(`}%hHzH`HV80ZA2y>G@}57)QitM~1QX+_$;Ds7VV zh>kj#Y6 zpr6n|1C~4}FNrbEu$Z(KBnKC45GHs6+$sma4K`LW zg=o%;&dd^+86A_E5{@}D5;HysGd=n;N8n|Sn9H02k~w1|bA>YIieg+M$j}{K_*NtO zf~kKz*N-E-tq{U3q6fDN9K5lZ!Bry$-6h1Y7cuBs$fNa|Q=bWXTqI)9x!6W(HlI2Z zbeJh(aAJ4{&%oKJeODUJr6UGyiAcla1ru@OZrHfXTU=OPlc%_j$Tk;oVd>qQgG&hi z78LmT1qE&ZfZq}Vzaj|Uf|@BQFqohbK}vs9COGxfG4GYPhGH5NGLlIneN3YeK_JYn zl9D+MF-LD^R(WL1y=+fAU);L2M@vJFDMLNO_H*?1yY=?1wD)M7^Rp@L)6xN(XL{;r zt&=^8fqybj-};Pv>of9?(PyMw_~Ww!_Mgmz9wSHhr#rKINk6$KaG%c@rqah?`XGNV zsdXy&u05NdYGcsMjYvbeOdWPi}+z@9wEUW%kMw34vHM$AAhlhC72X` z{Kfm^al3xmWQl#14jX&DsyC)n^!krk#`G2*7wK;MnwUd%s$}!BT;}!v@3Y#*OS6K9 z%8HDpA=#SU6KoHb>&dL*s;t#@vEYA9?9#B+T8mV-?Q^ey?7c z;GJz_vu$azTR%e7ASY%l(xbK><$a&*V&zA7@IIQMe|lLg{U0KirTVI>(-q6~`!tCG z*M`~J50}kabv6zo{QeJ-*|JpQ}8^1w=R&KlNGlhc&+~0IJ#4L^& zvbeD}Y?DP2A5M_O9<%>#}E2&Wziet^HVqrC)Djrz@KeT$=w= z@Ze;l@~OPMc(5T)P;sryYi!3T$w<9@)LCd(&IgrOD6yNp|LsVC2z$$E}~A7rVok6gNy?U>lL(2$q_yd5*$i6a+qpDY)j4<^goPg&Ec-TR09)%itQu$HS@6cV%VWVOz$ zuQl#-^0bJ9zLtig0lhe#nsSk654&A|ElI^`*1;}Xlj>~Lwtr7xd^soCV;7RE7Zvim zJW@6xcbDn2cKvQ+mG9+bqxSylUA*RQx^)6!UA@!Rsr+lF0iS=$zja#hsXnLsh`K^` zEN0fs)Ki6eitx7KI~Ucd>3GzkS~GNXQ4Q-Stq%Q~FsX}bcY0{+(5()2T|u+s^Ixxa zrzqM*HEcRcc4*j)r(IOTw&Q7&mThp>MHOs0^49fh#hEUuUem6tu3PioY+#k@hMR{s zz^hs4+qDinRpoyt(tvLdYF?u2Ud^NpE*f47FAnOj*S3RbbSwSzuDTN4v6EhXMwbS! zYtY+8uXPSamjLg0{N7%9ty(lYfwPopiPQAz)M`?vXwx1C7%(?&u4me`w8muyzomIz z%%t_vyg@x{eYAv2hwD_|_?@LsL&$WjE~neP8T6^eUwcS(nn0MXYcZhHWy?8vn!FKm znzuDmgtmZJy&6m^!e1BvtzYG(st%mY^+Wgm;OxBrR&ld;#B7z+;%qMTp-9mr5o9g#m+?&?W(a0YaBjCjl*gGwl63&B-8X zH%O*3#MuF00T0bk;}jESpqCT_r*xH50z2F!_Ta3`9h zpiF9_V)-)@4B8)kS)8|Jb2Df%Af08vCpLp3M`=9SZt%~my;W|_@+|D4U!>8o zye!fuNR#K6&kK+ar|oSnzBc$0*$1(|YND^Gaq}&QIJ;zobPuo9&l{ z%L><&7*640lkc1N25uMqze$|gndSO1?g!!TJJ@DrVe`?_oMT`KS$z6ryVNX z{g8>)Qb>d~(!vNMWI#X_RSq1-$~)z~NqMDp>RIHE>bj4;wzYXy=KXRVf65>A973eA`2 z(CyKG|3Q)-Mo``-BNx3O#1Q;pe!A})IflQ96Zl&>e81Im_uD&i-|WEM6$8KSfqO{w z|0)OWM%KgiPsi5;^voo0S>exA#<`&DvRjz6&01(F0|gQQU0cD&w|-ge-u;{RMM;Lu zS!{1|#hH~vjEwYo|uadh~z3$?A|Mj1Kn`F0_m-oD)yI~lISDso+7#2)BiM<3F zg!K&5AS^Oga;CU4DiEtFXO?n|gmwWkkOFiU#u2;^++!X<84H+ON{}XsdGDnpOanGd zTSbiFf6^1HEDfB3q&jfsIQZch#~8~q)#$X_n-=5`D}{_=%n(YvQb8N31-Kxr1Bw)~ zh6*0BKW3aJhzY|zr{IENT!^{(VFlsy`rh_f@QvN=m{~a2-!?q>7>9dw`w)+Nbi*{4 zdn|KipUbELB8(%7XrKbLMxFx*u7pJt7~viT9*uy5W5h@txbT!y6F@4?h`pW99kptv zJKeq)IAoHSSSkTs$3?-5%OOSOS1b5U@P}VrDnUF37t*Nmd zWbl|%Y7i%eD8@Tu3l0EbL1oZX066407qL6DLL3K7;>izFPraf6Gy`R|R9sQuj9KTg zoalG^W@fVK8S8n$dWW>-fHhS_1?fCh4#jT*D8s}v#Favve{tkoVARDp3s=Z{p^4FU zc4l_bq&8#FU*7>Y%D=H6o-ilpy5sg~7~_?jMj7Iqo9>(DqZ>7t*;Qkys1+)HKOQ__ z3rcXH#%RQ(#UU1b6ov^xED4&&bDja@HI#?Q0pl0ebdNpotqv+1DUr3rT1m8a$K8b8e*$)^)pa7Q8`92Pq7u$Wo;_3xvj# zvz6eS&;etrB>_p84-_jRj3JB@gRz?E#s^N&xkhTNe^a+uO6s{JR$%T4))Fbp3AIRL zkBkURg1}5$gp>qgsP-aw8U*9P%iw2r>P680MlQWU`i&j>==nI;owrTF7-wD|V~8uS z-!;vVH%OoT#2tWo=e%(7>v0Urz_cQY25mKtg^01TfUqRYXhJoKfVYkCo*)9<(2b8@ zPSc(Ef1vj{WV$J%NK%G5*WRlL>tThkcgAyOu?9_y6LG(UWi;g=JTr_@K;C1)#0|NA zG}1A()7PTcZh=0#NW6AOvZZG!~3-7=a1e&Fs2&TeC_7Y;WYd zo5bJPd5@owbG>)#B#d$24TB8v-wn4-bKp(#XZGNRD5*RJOgT4>SS_hAO5h+V3X%pS ze5wlt&iv+j;N_Yiha+ANEQIMXfD%K(G-?2#H*f+<4#w5e!s$ zu{R(jVuS!le~c8h(WNV}$|}H8h1g68gE3qXEGhTh&Ra+$5D%C; zj)Rt7SmwP!#1j!upb`*P5F`#(aAzqG&M6}q))=@n6P@><={e6Zjdk6z_n0*pBfti0 zA}D4^*x;yE(sQhXG739Q6xEbl!I7Xy2+NgnN+_picHQ0vA9hQHKc zSq@W2Y+ezQO4J^|%(qaKHhoC`wwKs50a_ia2v$C?z4d8K;n<@Q#&(LW==V>tyy|XW z3pM@amrpbSAb-D@EFZm0J2!b2JN!Ln#;0+}YNgl{i&#$K{mEZzChp|ICYyC~Nn1n6 z)>^#lO_XPriSf^iRjkNwc8f2N{N}I!;kQZpvJJ*T`B@xyv+StDyO-8nB6nCx+hLVy zn>taJ5}Mjk7WQ#yPs)Y@xW~r1thKXm|J`16=WxmJ>VG?jdj?ciJ<+UEXr@KGLm85R zx>ZWfoTFJoDV!D!>jhJ;tLdrT=}@)Z+z!?GP(0@>l~224_UU`l+v=*yo?6BZed|WF zSJjhk)yW8FD_^(QL)34w@{^yWHrV-A>PNW-G4bL%GIL#X`P}uKi-oP*+=NiiMrK#Py-<1)ALPpufwC_PbUJ~jctGBr&H-& z8|6MdMwgwc32!RHJm|^Cb~kK)?33Mnp9T}EqSa&%C_LW0o0%kSxRkn+nINuVyFXZN zlXo~rg~l^QpEi@)u+?;EI*as4Zt*D-q_-WG-hY29cs)bG>*MKu=&+!TMX%=&HM}cc z7ikxa0H-iehk;no$Z}+`#0Crpz`;5L9>8&g6%vA2?_!M@2Z(Fx!|kGpjeu`oIqjjd zJZS2i;ZDVj7|v{P8jF z&VRN!JteM>rIhi)V3sKi3+e%Pn#bI3M-`IPDMKN|l^Thz9yEZUMpJ?VHIfpo0wB(r zut6ZO61swVlo1CEC;>3c0&(#JAf6iH4W_{oP5?O*u*H@Ti;d&~xIk7>4JL^BYFeKf z?thRf*5`n;({b6k@YM66)K*M%2prmtgnzb!peG1s3wSwy-R>rkvIUSn7W%$Fbwm8dKW4cVu}{ZQ7t#V;&5299I7&8NIZ^=_zbl`i z#Bu%l*(_FR@?8>14_ek-fr~F^G^_FC%Nu=v{7y&Tlzr8s?>g9k(YNlc z#ppZtwq^32RZBE|kR!V_;Vo^(-&EMc(f8%nbG*31zD`_CU%`KV%6-+u0bsjbZ$E7& z>7I{ZHk(h&#p?6a`#r$a0ix)bdmHb`PJD|=E4J`<)5y(#t9Y4ri`C|3SA<|I*6Np~ zpE`0ud%x3Y%({^D;>x>DYt}Wu$sKofv(|NYyzH*QsCC_wU3b@J)4J|FTzuDJ*ShZB zUwhYL+PZGuUwePoZ{3EBQ@!nOh^-qm=+TXLb=%kdDmVLEjxAr;UB#7mO{TB2)oOO( zU9;)y6j)q(*KPcI7hvU+J`(1+#;X$s!~v>_fJ3OKH3>NH~9ysq^c?5 z(lvc22ek{QD4eL-yus>Fx9xm+U9~IQxei^A&a!{kRj|5w>{^{i2j}amSlg-&$s)Lw zvZov40l6r*QuTBj-l1w8jJS=e4V(S}S~mhAH+q1kBgT+NXog{~ZOk@GDp&;OnaTmXbbW1aNgg zKdQ0sk1;Bn0~%(zYzpt*C+RwmkjFAC*3&|0bh8#Yn=AQcZ5Ovw5hwi2`V%MQTybcVq+7e*6163GTU&u39?%$Bz-!J<~D!V zMEBMU=z)bM32h*g^vP|&!zKuBBEa;o=??H^((>+NwG7s#8AmxspB945P>p6$Vzm7| z+vpCLH=NyG7j;xI;#<9dbL#~hPw>O>rugg<0kzRL7aYC56`Wnd>7IIS0X4TZw}4jv zIJck%$27Ny)8oe6<2Sjuxn*>_u#105YjIHX%d71_FZD}{|ta7+Ve@2KTk zOKJp{{)Ww^n{t4rSGhSJZphU6fDERVVgg<l6Yi1p1Y}?&Fo7xYloK0RSJ53Vv6HcL z6OvpYC9x$`5+EutqbW#&Ed+lP7}pLf&~b zj9i|vX*{Ddc%~)qOv>Atl(KVfw$Ay9I%9KmCZy+#&&-*Ulygo#&RMBAXJp}=lYnz> z?#-mMn<*(Wb7aSiON<$t6Ei&>W@;wP)FhaB^IzsqeHoYaG9}?{L5N))(^0;d@PorwUKQK6CX-%s?vj51A({$3*gWmIWm?DrD&FRMxmBYzAL|H2Bk zG496^?JxDQZ@NDA&BcEes59n!i1L?FqsEBuCcSFR5A+BYhwd{gP@mGR}t*%`awox)|kSh~$^D-*v`#FH!t5s=R@cq}|->vuM{B zC0-wISO-YkoF{EFM%wwr>zaG)m3cPt`qUTpKjrzv>$>CXl{$YT@w(m14b);D;&q2h z8>q(|#Oqf7HBg6Hh}Z4TYRDHpC-J)5GxcgS2l2YW4fV=BpZr`yBYI`dN4#!DM0#~N zn|R${RQdwM>xT1vuiROP*G(YDfHgfU@w)r$K3to*h}V4w^}!m=p~QImd#=$PA#XbI z`n0V0MJdLYCK;DxKmm1sn4z>#aXz*)3KnY%^9IZ=axKULJaL?4Dq;P2lft`I0Wa#C9L)E*r%y&Eh%D zdUrhRhx%)|n2r|vevxOdF8-dHXZWy>ESysLi@~x7jW4Pg{}kmeT7BNEyF_7avP_PJ zo7lXd7-V#R*Yg{HTy&JSuT{1`w{(5SRP~Q?eA`{e#0?m$>`FUhN&Pod?fPTlVF%mi z#R~FnMf;-9OZWoI%=A{1+RM64!%9^jmPyee_aXUpth?-CyQuh&I7acIm7jg~A;a@# z_xeyiPIrghZw0b{N(Hiyc3p3&KK8LT)>v0@GVj9V0ctT%qVs-mR>?$EI2qkA>% z%~v}|MpG16h!rtJ2*Of^fh)_fRY8I? znt3i6wSt)2l~!q*xbrKk^cFWc5<8)`i6qz&Wtqal`oM`|ntFpA3yNq5Txg~!1*RzT zj!|J43K#y23AH8R&*vBFCyuJ>YreGuSf6scl;eGuPdWN(y4w@T?BhSiOM z=q{pI4T~ED!Cgd^w^H?>2TQwthFv>cHUmytTM)^Hi;V`X*cIhwjT9TmDVE_8Wh=vvrN^C8fG1*bG-!u>^J`FRe7XUDrZcKJLPe%zph~W;a^|OauF8blOk8*_2)q299iY}K(;Hs z)oJ&_Za1=oY%vS#Z947l3B1iwbxqqQrsvM`>bv&Y=^dfC{H|k;y2d!V{u?v%8#D7C zotYUI<=dlWRLg)Z}h`|i_j12 zll{XNedS#soLIiABM4(YH1_4u!L14~HCp>plVx)oy z+)EO)3Y2l;ut)fY9K=@ObvhBTKID)oBuaCF4GmUP!X>6eumBEg6RdQa1!A3`fqE_x zQrZ%WJyBk9rK~ni-;RygI)&qZDTznRzL$?!7d(NKh&4mlqu5E$d&h$m$Rdigy&PwEYSuo|%avRFNS$oWx; zTR(5iDlg@l)f8Q%dF*Nt?cM^mcWJVF-NcsvLp(`u0z#@8N*UW@+N1#(hzmnB30g?R$z|FVU|2{txM4^Y~f7KDd1pV`GO@!*zb3o&EjVD$^7 zKf`NUzTy0*xHoRC(@+TiMsog1k(?{u<1MkAt7^R=nsZgHH(YqOs^(9Dj(zmDEBmgl zSAN`U?XpzdQ~gf2cs+X74^>y!_h>iStM17u?%LWOZCv}5Jvo0hUR&3bJ#wG6wR7sV z^=<0E-lcFuAKNQy+}N7EOXa4nw^!D=cF5?{xv6*Zm36M4XZn1c9L{-<3 zX%USW`+&TNhWp0HPaB2zGvb?MH+#PTZa|U0sVcMplp{1bact))a*A~h*W<)zou$Sp zYC2qtnlCy_k2(T7T$3q(ZPzoTeRdWSMi;P7y58vMdp+B5;M!?kHL_-Cop zi02O0XC5U+OCHV&X%X6<=hGx_0xzUl?zc>z%VhdA%=SZ@9XdNhrd8PBMzOO<8{WEg z7IAf_e?eKNe*JQyPJQ>~Bn@m%JCC%p)3i9U+yrR@r3ifR##6$7odRm8mdH|V5O|Lf zrj%j}Ht1LZ-C55f4@#ihrD?UZex~PXHH?YI9BXZVg!Ga!3js+h19przt>44go(k`@m6~`Co=76N4}wbw3Rn<^JMdf@ z?0{Qh4d>c>FPv0PbFkFTm#fvd%lHQ`BR`gTGnsTVm2WeVYBQN-Go4^_2Dj!6vdK9- zld+tUbLk@IF-6WHiJZ$1IiDIb2P-!wn5Ar^g&1jUwE^QAKs zdt%AgYFyA3E522xWLGS>GXy+S7T%Cp@1PLx#q_Dga)*R)FQrW_Ry!a>dnsKSVzGll zu$R)ODb_kH#Cj=>8e^#gL#UV1sWDbMFhqJOotk5zLqnh!(CQ5&1h<7VXNzQBEtc7z z40`ccW{b~%7^BHNvCL*~F+z`dVwsJ8VuTiR#WGtw#0X7hi)FU?h7r2V7t3t*3L~_c zFP7Qr4@PJ+V=S}X6Aag97A3|@J~NitmEwNMSmq2#?q^5st{u0#dgSi9vAe5A@2(lY zyLJTc8Zo@)ut%WMd83g4X{gj%6G135lrrowD8f;Ha8hy!Ab|T|5cWm~=?s>R1!rci zR1h<&ehMWDrVP~3S^0LQ4(b#ArfM8a8>?Z4CzVU6PR?7XlaRiFLJ7agwX7+a%~i=7 z$};K73IqDlXPdEH)(}+ z6gA5dzV_*V!MI)W<1b9{fX=Lv)Vx-z3B(M?Y-Sd_WE<_-Hcd?W<1dok)_j4O<`+{8 z52=7r(fDNRkSrHjrgqMII^+`WU&R;L+VmlR+2`t+eS&H}R5o|<6)m#l!6bcgPY3!` zmNS?qgXg>LVFfeND^|?7R;7#Lf>^lWD#b4H+5q{A*_rKQOjNB@B*}lu0!s^@d{UiW&Ho8J`l>dCzu8v^I&wL8X=#_nP60rFaUSzj?c%iGGu7WJLfobzM7h_B zr5tkCxWD~fZbKdlk9kxlVsL$k{b-$aA_mrn*bmlKCt^%}i2ZYM|!=X3K2(oz2OoOM|%DgYD63_#H0Oo*P1-pn2*)^qyha|N*`@jJ9IwT^@V>;qTJ6cAmPXqHjIV{z%!8iT20n?0^jW_L&(H z%sdv?pHn~RbH zNkb(}2>PE$YR+74mw4*+M+>asdEYXn=g5?QuFmp9hYdPAGxbPNo2|Kkl*^4?Hzd8lxLs;(LzH=XPHlCt zA=BnHa+q0!EkfGbUMmlg+t7>gbBydnye5;i!*yiojh$+QjAHa?4g z_GEG2?{{kTb$Q>2WcMcCR@I!6aT}Mk3Bq7ckOqXTFpPsF9!q8bj3OYkmNH=EtzZoM zAQ_X|NZ~Q1T^Y9`00<$GWZ*S%#yiHaV4fSPh(pXt>^UI>TTFp*FO&_`5C<}A!~yeV z+#Y+Wi=^7N1Z{sxIk?TixbeZXv*Kuf(?e*JqG#hHVRHq+&X0dh4SjWnt-6CT-Eo+2 z*_ds}?={jf+mPK$=VSIEx7SL@Y(-{om66$ly!HUDQ*qWYO4X3nZa{UW{H(#q>0rS0 z5{k7Vqr(8vi>TCqeD(sKmr&#lWYx8Tm*?Y_7ep@mGw3daTy}gsJvz*UT(*6GCqty4 zDRqRjvysb&53on(*~n$xqxMLgENQTWvyscTJf({vmo@i0Iw9mNjP6<}-KBB5iz9W- zD27zZGES`!3`uJwH%LeuEJ)*3pvZb`5!KdeVVU7hGm4cHR*_gJ53`vQXyOs-TZhlV z)ALhr?0I;eZ+R-;@)PFFPxxDZmXqKrSqf&esdVIwEjP2InArSqy@FLWXW=K_i!(my zXaarw6c2N8X%>A&#V+VAUUt`|V9(8!8}1IR(EfRC7fbjMVKF!~VU68c_fu*%o8;YQ zX?9_~eZEiZ%gV=CX-r?)828yc9^PtH;Xc{Lyp_Bh-4s79Rn}S5C6tSe)DYP!xrT&agi%py&)!YMXNW=L#}9f;(^~X8M&f$#d&sU ze6$O=FnRM>xw@O~R>>8tsBf`IF5%&erWsT&ZY()%Q%}8=(K0j z8Lf0+lo2i!GL{f6Jq7L*^UN!!5Ce&+XG#Egtei*M8jr0ex8no~)*!g)jKITCL#CI8 zQvob!Hf7`4fJbYtm)Um^IDyv}1T{Q(!?;nBabgSzp)GL+EYg|-VN4^>WKce6tckJI z2%{b0GI-U=>kEpipuM-?z3|#vFoJkSg<${&G%-R8t2CDqS?&?V0R*5(>N6M_HXpCA zYMB4Qml{+7*MBQ$bYZ|{I{oI&i;Zu0^8H`InwQtew6W(7Ms>!3?O5?&^^eWxv$#13i-Z%AX-oA&pm4EJUoiWj>_(=Xl`|)J}n_}4P z4M7mv)#zs;^nEwAHFcIct=r|{dNmrCvy^H+01Vft-AbROR>#R^xNhyX;Vj)cjxED= z8-c`isB+9q`NkDFmn+gX)ejx(@oe%)tI$@1aXFFA=HPPjI=-c8)EP<*cfokEskMD}r#Ga$^)#U^N!NLeQLI=d7cGVhO~0qn#tj8RrEfN^u3j zpxe=EdZu$c$)?=|^fGSRbeX`v0f~$vMsv(Pmf#st-a3k%WLikCu*Sjy;+O+d%sa0s zm|zu?#tI}|7ypK0uCQ>1F{O}DoOyzU#g-|oh_eKOri6b7<{2?YI!3vtAcYAu(tqTP z{F`={cXKvQ8?)vdEOsgkdj0mXS%d*Z-8Jl2s4@&F1i6=)KA>GDqz(5 zF^te_cEEqA*=&r^=rVv&hmjqj+hqWw4%0D0w^;zAQzF+bpplz^BiDyVZUT@rpBb$+ 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 diff --git a/packages/metaschema-modules/sql/metaschema-modules--0.45.0.sql b/packages/metaschema-modules/sql/metaschema-modules--0.45.0.sql index 2ce397242..4d92410fa 100644 --- a/packages/metaschema-modules/sql/metaschema-modules--0.45.0.sql +++ b/packages/metaschema-modules/sql/metaschema-modules--0.45.0.sql @@ -2753,6 +2753,8 @@ CREATE TABLE metaschema_modules_public.billing_module ( private_schema_name text, meters_table_id uuid NOT NULL DEFAULT uuid_nil(), meters_table_name text NOT NULL DEFAULT '', + credit_packs_table_id uuid NOT NULL DEFAULT uuid_nil(), + credit_packs_table_name text NOT NULL DEFAULT '', plan_subscriptions_table_id uuid NOT NULL DEFAULT uuid_nil(), plan_subscriptions_table_name text NOT NULL DEFAULT '', ledger_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -2766,6 +2768,7 @@ CREATE TABLE metaschema_modules_public.billing_module ( meter_defaults_table_id uuid NOT NULL DEFAULT uuid_nil(), meter_defaults_table_name text NOT NULL DEFAULT '', record_usage_function text NOT NULL DEFAULT '', + grant_meter_credits_function text NOT NULL DEFAULT '', sweep_expired_subscriptions_function text NOT NULL DEFAULT '', rollup_usage_summary_function text NOT NULL DEFAULT '', prefix text NULL, @@ -2789,6 +2792,10 @@ CREATE TABLE metaschema_modules_public.billing_module ( FOREIGN KEY(meters_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, + CONSTRAINT credit_packs_table_fkey + FOREIGN KEY(credit_packs_table_id) + REFERENCES metaschema_public.table (id) + ON DELETE CASCADE, CONSTRAINT plan_subscriptions_table_fkey FOREIGN KEY(plan_subscriptions_table_id) REFERENCES metaschema_public.table (id) @@ -2829,6 +2836,8 @@ CREATE INDEX billing_module_meter_sources_table_id_idx ON metaschema_modules_pub CREATE INDEX billing_module_meters_table_id_idx ON metaschema_modules_public.billing_module (meters_table_id); +CREATE INDEX billing_module_credit_packs_table_id_idx ON metaschema_modules_public.billing_module (credit_packs_table_id); + CREATE INDEX billing_module_plan_subscriptions_table_id_idx ON metaschema_modules_public.billing_module (plan_subscriptions_table_id); CREATE INDEX billing_module_private_schema_id_idx ON metaschema_modules_public.billing_module (private_schema_id); @@ -2847,6 +2856,8 @@ COMMENT ON COLUMN metaschema_modules_public.billing_module.meter_sources_table_i COMMENT ON COLUMN metaschema_modules_public.billing_module.meters_table_id IS '@module_table'; +COMMENT ON COLUMN metaschema_modules_public.billing_module.credit_packs_table_id IS '@module_table'; + COMMENT ON COLUMN metaschema_modules_public.billing_module.plan_subscriptions_table_id IS '@module_table'; CREATE TABLE metaschema_modules_public.billing_provider_module ( @@ -2892,6 +2903,10 @@ CREATE TABLE metaschema_modules_public.billing_provider_module ( get_fallback_free_plan_function text NOT NULL DEFAULT '', record_dispute_function text NOT NULL DEFAULT '', activate_plan_subscription_function text NOT NULL DEFAULT '', + get_active_plan_subscription_function text NOT NULL DEFAULT '', + get_billing_subscription_by_entity_function text NOT NULL DEFAULT '', + get_billing_subscription_by_external_id_function text NOT NULL DEFAULT '', + get_plan_pricing_by_external_price_function text NOT NULL DEFAULT '', prefix text NULL, api_name text DEFAULT NULL, private_api_name text DEFAULT NULL, diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/billing_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/billing_module/table.sql index 7b6ad146d..f087f6bbe 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/billing_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/billing_module/table.sql @@ -9,6 +9,8 @@ SELECT private_schema_id, meters_table_id, meters_table_name, + credit_packs_table_id, + credit_packs_table_name, plan_subscriptions_table_id, plan_subscriptions_table_name, ledger_table_id, @@ -17,8 +19,9 @@ SELECT balances_table_name, meter_sources_table_id, meter_sources_table_name, - record_usage_function, - sweep_expired_subscriptions_function, + record_usage_function, + grant_meter_credits_function, + sweep_expired_subscriptions_function, rollup_usage_summary_function, prefix FROM metaschema_modules_public.billing_module diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/billing_provider_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/billing_provider_module/table.sql index 1e87f0bb0..9bc234351 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/billing_provider_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/billing_provider_module/table.sql @@ -22,6 +22,9 @@ SELECT billing_webhook_events_table_id, billing_webhook_events_table_name, process_billing_event_function, + get_billing_subscription_by_entity_function, + get_billing_subscription_by_external_id_function, + get_plan_pricing_by_external_price_function, prefix FROM metaschema_modules_public.billing_provider_module WHERE FALSE; diff --git a/packages/metaschema-schema/deploy/schemas/metaschema_private/procedures/is_valid_step_up.sql b/packages/metaschema-schema/deploy/schemas/metaschema_private/procedures/is_valid_step_up.sql index b298ef71e..53ecca25f 100644 --- a/packages/metaschema-schema/deploy/schemas/metaschema_private/procedures/is_valid_step_up.sql +++ b/packages/metaschema-schema/deploy/schemas/metaschema_private/procedures/is_valid_step_up.sql @@ -24,9 +24,14 @@ BEGIN; -- min_age_anchor (optional): measure min_age from a related row's -- timestamp instead of the guarded row's created_at, -- for a configuration row that is replaced rather --- than edited. Object with exactly {table_id (uuid), --- fk_field (text), timestamp_field (text)}. Requires --- min_age, excludes min_age_lookup. UPDATE/DELETE only. +-- than edited. Object with {table_id (uuid), +-- timestamp_field (text)} and exactly one of +-- fk_field (text: the anchor row is the one the +-- guarded row points at) or conditions (tree over +-- the anchor table: the anchor is its earliest +-- matching row, for a singleton whose subject is +-- the database itself). Requires min_age, excludes +-- min_age_lookup. UPDATE/DELETE only. -- min_age_unless (optional): conditions tree (same grammar as -- conditions) that forfeits the min_age grace: a row -- younger than min_age is still guarded when it @@ -35,6 +40,11 @@ BEGIN; -- allow_system (optional): boolean; when true the system role -- (jwt.claims.role_type = 'system') skips the guard so -- provisioning paths without a session can write. +-- human_only (optional): boolean; when true the trigger body refuses a +-- principal caller (jwt.claims.principal_id set and +-- distinct from the human's user_id) before it calls +-- require_step_up, which a bypass_step_up principal +-- would otherwise satisfy on its claims alone. -- conditions (optional): declarative WHEN-clause tree gating the guard -- (compiled by metaschema_generators.build_condition_expr -- and validated through the ast_validate framework at @@ -268,6 +278,9 @@ DECLARE -- allow_system validation (system-role exemption) v_allow_system jsonb; + -- human_only validation (principal-caller refusal) + v_human_only jsonb; + -- conditions validation (declarative WHEN-clause tree) v_conditions jsonb; @@ -340,7 +353,7 @@ BEGIN END IF; FOR v_obj_key IN SELECT key FROM jsonb_each(v_value) LOOP - IF v_obj_key NOT IN ('type', 'min_age', 'min_age_lookup', 'min_age_anchor', 'min_age_unless', 'allow_system', 'conditions', 'related_conditions') THEN + IF v_obj_key NOT IN ('type', 'min_age', 'min_age_lookup', 'min_age_anchor', 'min_age_unless', 'allow_system', 'human_only', 'conditions', 'related_conditions') THEN RETURN false; END IF; END LOOP; @@ -424,17 +437,31 @@ BEGIN END IF; FOR v_anchor_key IN SELECT key FROM jsonb_each(v_min_age_anchor) LOOP - IF v_anchor_key NOT IN ('table_id', 'fk_field', 'timestamp_field') THEN + IF v_anchor_key NOT IN ('table_id', 'fk_field', 'conditions', 'timestamp_field') THEN RETURN false; END IF; END LOOP; IF jsonb_typeof(v_min_age_anchor -> 'table_id') IS DISTINCT FROM 'string' - OR jsonb_typeof(v_min_age_anchor -> 'fk_field') IS DISTINCT FROM 'string' OR jsonb_typeof(v_min_age_anchor -> 'timestamp_field') IS DISTINCT FROM 'string' THEN RETURN false; END IF; + -- the anchor row is found one way: by key or by conditions + IF (v_min_age_anchor ? 'fk_field') = (v_min_age_anchor ? 'conditions') THEN + RETURN false; + END IF; + + IF v_min_age_anchor ? 'fk_field' + AND jsonb_typeof(v_min_age_anchor -> 'fk_field') IS DISTINCT FROM 'string' THEN + RETURN false; + END IF; + + IF v_min_age_anchor ? 'conditions' + AND NOT metaschema_private.is_valid_step_up_conditions(v_min_age_anchor -> 'conditions') THEN + RETURN false; + END IF; + BEGIN v_anchor_table_id := (v_min_age_anchor ->> 'table_id')::uuid; EXCEPTION WHEN OTHERS THEN @@ -463,6 +490,13 @@ BEGIN END IF; END IF; + v_human_only := v_value -> 'human_only'; + IF v_human_only IS NOT NULL THEN + IF jsonb_typeof(v_human_only) != 'boolean' THEN + RETURN false; + END IF; + END IF; + v_conditions := v_value -> 'conditions'; IF v_conditions IS NOT NULL THEN IF NOT metaschema_private.is_valid_step_up_conditions(v_conditions) THEN diff --git a/packages/metaschema-schema/deploy/schemas/metaschema_public/tables/embedding_chunks/table.sql b/packages/metaschema-schema/deploy/schemas/metaschema_public/tables/embedding_chunks/table.sql index 751d381fa..e52eb1e12 100644 --- a/packages/metaschema-schema/deploy/schemas/metaschema_public/tables/embedding_chunks/table.sql +++ b/packages/metaschema-schema/deploy/schemas/metaschema_public/tables/embedding_chunks/table.sql @@ -19,6 +19,12 @@ CREATE TABLE metaschema_public.embedding_chunks ( -- content field configuration content_field_name text NOT NULL DEFAULT 'content', + -- parent columns the chunks are cut from (json array of field names); + -- the enqueue trigger fires only once one of them is populated, and + -- passes them to the worker so it chunks exactly that text. + -- NULL means every content column the worker can read, on every write. + source_fields jsonb, + -- embedding configuration dimensions int NOT NULL DEFAULT 768, metric text NOT NULL DEFAULT 'cosine', diff --git a/packages/metaschema-schema/sql/metaschema-schema--0.45.0.bundle.tar.gz b/packages/metaschema-schema/sql/metaschema-schema--0.45.0.bundle.tar.gz index dc3b1f1a115a64215be1ca2a374f1738bfaef90b..fcffec4194e950c5fa8cd5d90ea480a369f1c3a3 100644 GIT binary patch delta 36228 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 B-vI+3OF z#U;enNhvvF1mPG`XepAByL`lMFaEb+^g$AitzfZM2BBDE#x++mcGy6I6oWAn zm_ehtj3O$nV3aBL8*djvRH+5QQ)jTv$(Zl37DFmz1ro?Zz34wP8NLK8|HXh>}VOES$yE8VEU3O8T48 zp>Q_F2*u7QE*&#kBD(`q|J+u7O#A*S9=TQ}=&V`Yhub|{#Mg1N4tf6`oNP^nwfk|h zRpDT};bSvrz>Im#^DVI7#j{?Ye7M+u_lygie5lFtz?ZLEVM!3sTM@WmmIuMh;o%G_fX9jA+8GVVdkx$?3R+vO+?QHxKQxuAX-Xp-5^4yMP#ENYOBqY)VEjZG^m5l-t$e*MI}<;}1N|>9^k#H>>3$M;OL5wqC9BWp9O{5!BQ{X*hQl8mt|Xv6ce+ zjmR*=F;|g~S{FQucV_&5&6CSZn-AS24GZu@7T~9@aodfCN3sMj)~wye7`!m<9TuSN zt}{ERinExxYC#VXs9c#-AJ>?=xya_G>W|(OA{dK(oFaDENgpK1IOWJVYGYy{ohVoXbeG0;|OViXiRo>zkMx^JxG?^Jw%XSjYVb!{+>j30rxP*fJaOR zT*BE`l?m8+nSJL~_Pfp*tPYXqyumx=4L&Cbe*IPYFV5e8oO_ZkY$(B5SErsU(mx0& z58#f#pX}af6v`<0^Rz-^Rnwu&z?J-B7wh!<`j_+d{nr+%yHj@J(&^RDwbXIw-68l` zF(X(cBJZe0MqzJrvVyW0N5XiMl#Q8p?-0#miEw1O5GaluH-@sOxOsdPf81WhS%TCn z6VY;Pd@Kfk!A{5AS`twso#Q0tmF!j6++;HF1PT#?zwJj4#z=30kM+xF~X= z6a?XxK%<~Q))?vU8c>G$EL_g0)Xp-*Bg9DT991ZPhLJHS!qE;coa@+{zxoTtzrOUu z=VZixoMgn^@xUH|+LAhFiS%iPK3RktsC>)<;fg_NBt=>~A}p~)TA!nUF=otZrG!Qt znO&tIeo5@j*N}Sn1ef0R`?O0he0+s`woFfwAo-7f)t*Q2!(XegE{k(z?xt6tObWe15i2+&AC zDt5Kc>R}gb5+p4b^~07DnL8qPM(lfhdo~GBBfgn#XAmzC!Y!#)DD)Y+2o0AI>hG3?WUAFUIBcu=C0JEbGpDPe$YV^(Lr-VHB$Q zuXZA+$smd1=NU|{u&YDX-{Vo$W+MOg2Gdtn7{2-CSN6TH>0svqUPGF-Q%o)Rn# zN*;V*3Z`;N_8P z;tUCt*%*Z}38djxe+v_mrjm25EP)VHNIVF|S<*gAZoIPGGQ#gaLegSTe^4ajNcWTv zRn^sV1y|j8)K)b|Z54CWbj(=OA4h9?;%G^J9W4p)wllwQhbyo4!|1!WZ~nRGGkzFV zYVo^guim}bE@0zW5R7xfgd|ZXV1{y3QL1`)&2*HIhUI-l(Cox7LsEsLlkV-kj2;D&fx1 zwDk&Xd7s79Yc8!DH`iGT?KurMSeE>YHC#;tNtWU-v;2|ewpMj^- zu1L;(g`YYiU%&dgj8&%HQ!r@3ss{`Owaua9%4u%4I2dI@C(T~{y3YUR+wwhS;bI)r@rI?hIN2(eby|zEyDdS< zBXvfzHWa2b(UeJq38MVt+m*!=QhZaS!K9q#3r7VlzCn#Y9>w|sOv6czp5Q-E$N6!L zwy#Z+e>}7wo!PQJUd^p*#%j#KUzG=4Pkmt>cD2LXVm)G`g`4bL+-)@DQ=Yv z598i1DW=;x`4zFP5UsHf17#qXWzI{-4IcH=lOI$X4;WW}iCH^1{A(NWs3i_JlSouB z0a%lHR4jj;OTzv8-rXv)w`}5i-S$9E+@0yPdw1W~b=hxGlWpx$?xxAE^Denc(Xb$d z(3(&tI3pIEgFv|vQejJ+kdo&tIKsHclR8E!L8UdsG6nneE*}zp?uOpwL!Vh(<=d~` z!Mw#e$Hlweed530QMv}mt{(-jDSoeETI%3mUq*kocDk-ZzS{}+?ziY)bvixE05&aT zn}%H*Gm1MP^|Y7d4eF?4a=@5NQfMU^u_j6{S)xwS5GdhP5*jof?WX|NX=WI;i8!E| zNlqTfZP*3F?OL~CYcMw}xC%j9hGo=RYEK;jZ-FtHkI^a}l~dLQ<8;#48iypWdE_qe z2=afS+=lJ2-1^;y-le=IN;W$a`Ocf9@H`M7tW$(V;+Zo9f@DzyDx)Sc7z!dq34(E~ zyEecHFrR30-ce#UIup!-^DYIdgRwM{;G<<;MMk6I)_P_P1!k@CntSVk;+a*@CP`wH zPy2Ev?hpsA$C=oK_SOp#x2^8j8XfMp=9homKn?U++BZ}ITa*!NEcggiYX#Z}rZsgU zL`JRjQZcQ#&_EN{TnViM(c3+2@wb`Bj+P3%32{t!;eOhcvc( zjBNOb-H6w(yD%>y=*Zo_e)IkxU%vkS;IGXZUIQ=LCTNnsJjP7EeN()A{qFsXXWxGo zc&%(@)p8H%qudbsI2UTbD2*opE?_i0#PG;A&7J3?om5{H$9(zv-HW&HkLoVWN5yzj zzv}Kp>m`9y>+fG>73Y&aMCxHyPRAGZ`Z?(J43OduTA|uKyZZ&)0|f{odLgY49xzsm z=*^7CC>2e@N^Yoe99#;{=!md+R7-!NEVkr$Aitm`7jNwrAg!&ycBB{5MQ{MYGv+uD zP!7CO89mD>uZ)xk=Zq~0h15hip_8Uy1CLyM>WzgjPa#Szc&DKATcLU>} za~lF-)&(j!SCKgztuUU(pn@}Ks|%WFB0>fV#s!MaS_nugLi8eRtly)_heSvS(;PzL zQW9r9$&7I1(^tVw0@!zL@5@$Qg&a)f3-*N(f04M`MdPlw#w|cZ^o}6 zh~As_x+DE{ZyIb*`fCf5=2tF%X2a>}+|&Eq4oW_>d(*?f&)^8-EgYS-mww1&g>~5f zpn5H=2W~*m@;^%Wd4?5iWj?J{7d3Ytk821$d-Vz*tV|00TP2(DZmA2F+1pDJv4iqf_?aI@(-CQ`9~5If>HE?x{q z13ZX59Z&Lw(Rg%qF`ktNhu5ZCep5-3J3q|TbHb{%iZ*lsxGrerPw zYs&NMPO{wf37*@lk&evE{#3{oE=x3l84yN6Ko3L%^Oh;c@X#PO)|3gD7SSXoJlF`7 zGp{TL;Skba?hE)7Mzf3059{;>4$iLwmSw^22ZD9K50B{9*eb}SJ%Y&J5JqL_JPbDi zqUPL@8_p1+^m2j}n0dNdmbDB0AKoKP9eYf1-Ma(RR)u*IUnnu4K0$vjdD`?2+gbN=1-Hs z6l!7>oMgq`Wfv+BH2?Hn-zE+&U{qojtNWCsR;FGE7ciX+LjRX52P0VeaG3=?!{*;k z%fY`x_pp=@(q4cKPIdR)Y~|*hw1Ts%zR9M4!Jje5)tW2r;tZ-(GqJMntCcq$7h!yP zRiRK;-*wKB{7^6FOK_8LUerxUGocJVji0f#j+Z}t*8=(Q#l>JU!OjKslyV=;%DG+{ z<--^CqR3ZIo3YpC_HSd~^ zsv%1zYx3>8|4~bm@u>M?mHxXN4@T3RP#xDFrh2CO`)T@VP1e?|+O{#sPOU-iJA84E z_!%pMEvcmSF;|q?O@@B=Vo7JzcOZ8qYa9KA;bR;E-OsdPBJSpdk)aHbTyN$j#k1Gnu4ub|zi%nZ z-Zm{g~_9bf+;p zw9HmfSB*$Fh(qVOvXEpliYT9~i;~$GG>9anwUJ8%b9GD+8x(=S2xVHO2SB{-aX)WU zlCes1Dy6Pie(JgxdbI3f_Bxf_{$!skdDQ109<4ejOFqcast?iSDRepnN1cZIQNQWiYuq07 znR>mID61diCWR=`LEs`pNgVTrnHUud5JfApIw&v z0wmqBk-o6VO=2CL{`*#r`IbKUcHZ{3j`nUoc8`6xwW z>n%pRooCjuowpeCcAiD67+z_+fNT;s_`-(+Y@&l^k?2jvvo<4)ZGkDV@GM;NlfX!UA9YqjjW3ejJ!{(vC5 zlM=#o?GgBS=7wumy&wO1!$Yy2RCV=m?KKy7FW&f@V_mekI6 z<6Lh^_l&b!c0;8gq@_{_p*$dViS|LtXgT&Gi{2B^o+KN!kOU|bcxKYc5F(!6V-HYM z-eb${USGaSXsetC6P^g8DHhgiE)`1}VoWA7@2Qd@MW+>JGjx=Jgak_C$wxy(FkZ*| z&uR3q>*jTT=c@#FuR-UMbDn^L4@@xdEL0))fT=U*r6wvG>_$!yfroG}ypmc*?KEMc z3jnnRqokCg#(Qrmp~N6oKLG|H6lh125F%#8ecPt@ZI<@hqn(E6viZ4WbuJm3 zt2XAEX}M%kb{mpQmfPWCLTy8FTRRauJML^19`0-nZfVwR2t{6N32r&W=8*2*48f&U zzvVbL;n>n@?+K<#2!cmWG?OAYnk;qEY1D;G8|I>MoJpr8mDnc3QS0(aF-EijEyTXg zjbrzJ`h3>@bOL7xpL4axaO%AW8vEYn#%Div2-~fXUHOX(h1@bgs?*HF+1X0+w-Rqh zOXrE#<5qD{UJl*W()otYgUxk-3$O`qePF9SbQPe^tSU;MQw5EpP9rrE{c5Ydh$g4(IDrx>2))BuGdxSe`V0 zqlzU1z&x|Ya}XwZ!mUh9rT{8Y;e*#;T@ctkFj*xxHcLj*AH%Z)PBn8Y-pDH-fZDAes;w60y=EhRUI$UgblAsjo-1>Zz0ZkCD9pS^qk z1aB{%y{m6J++8x>L@f4r`7UWH1$V@MDPjp@JZK&zHJm7}5f@4clZb$b=~@6sLqZA2 z@m4|7p6rVTb?`ICrnz@ZW|?n~AT#~aq~X*))1>w9o8dJ#K+fbWLK6z~3z zSMyPp2wn~^&*nt8BlyFsuP)DjdI{Etb8kejes&8^JuOD#!cER*h%8+m6>nd>|MBhX zcMXN3VuUtl5!`TC?ZFL;V=|tdo#%-?`{CtD@p4)pEFO$7TVH%SchgL4I&q`2L5A<8 zmyh>W?^$;|pW?!G)2R#R*aCBWR39`Rl*L&-p1grtE_B12@|tW`e+j66w5Kq0L>cscq;vMJ9;A!!P zzZ4&`LjLf@)8fMyvl1qMSlIssqMx96#mg(V%<%W(7rX;Yh^woEQT0rXgNGMSPEPQy z|N77W^~YB6#dJ0ql~2(e=pCUhg2q9LUyA?8zm_l^C;Yi8gkC)QU;p{P<~LQ^11*Al z`H#gf)xh)j?X}eY@W+FB5lNom$|2&9V+_v>2h*$ef!aZdb)bWPumOLu-AS?fN-v)O z`1a-dtX5vWe(@HURD|KcL%lvn<7okZzMMc=4*U?Fwgn@W*et~2TnJ8Pqq1;iF__{W z{5Zx#!?^m(sk}hlVHmJmT)b|6J6weC8P##aPz`Sq; zevDXrSI_6mY^dgci^b(|R?TZ}G?z!X{1@lOQEKN>oIZ&DSy?0I|H}YAeVNIYm7eqC zcvU=m_r4gEb9xabgO3oaZ9YAR5(+nM6kpaDgSm!i7`OoBZ0YuTt#p>zG;H{XHXCqL zFQm`NO$Q$VXLpiiN~MUh@|N!LCpGprXesV^uxHEevgILgCXG78RLSfpd%J!QAdp;?vJeDn-Lnfyc`#9f#y)} zx5eW_H>#LDD%|B|y*!Igv-4mq9_7qh8bQhF6n{Z(a84Mt}t#ShgK zkSMysvr6>^+&HLY<{GPr5C&KXo>%ljgg5K17)+0UD)TFwKnV&rDnG%b1_l`CuYKWg zKcY!Fr#2{y(fH{ST1YLs@u#|pAJWYSLhunB%#Ww%MTF5{&f#Z2yevGNyN`qMq-ecz zh99Z5@0^WD4>J+xV>}*Hqq`RfXfUjn!JsTq`~m_H)F0Yi4o<6&8n+d*4^w;BtjKn@ zt`RVQsLxNcaA;CHS;OZ%(~>@~dy!jXl9ko2tqFAV<#p=WlCX3ov zaXv5q`JaEx{!)hQpa1P&-n@GD{^hF|2Tcjl#>uSem(vV7Q_pDi$E7mTXGM!4)n3T1 z(m8ISl&!OcJZQ!{Dn6Z$OF)ZxPH5rm;G&OzQ0XCDujOolxYA!&X57%7)jPQg^>{!X zj63tB|NUBXJROavr|ng`#`pZKF%!4sxV?Fs7gX!XRmQGy18vdZCKKF#qj6hsEG)h) zCw=b9)6w{}Whrhq?RFVj`{rdk>ziy+)xodjn=k{}7+LiyT)$y`rLNzzti5}0n`@?j zwL1VV5P$;`kUR_B5-fvk9QP7BZ5{V48(selmOa zqq*{(xLPH;wj{0mEmxF{g1#Pvn=gf1j981m(eP@`%c~6W#o{P0 zVK{_XSwh)v!pH<#C|j(P?Pc9Otg)q>TXDG?G3OSB@M4YT)jutUfFBA$%;x5Q&|=r1 zeLfw}bw%E7wdp&)*zl%{d7REi?taT}wwH`;fw#7(dW2r@eNWbxa$}ghdE2>w4>zpf z2Q2Ns7bxiK!JwCNEQ@upO*P6Qe!RIHdD#%$hFo4@+d)gKM463(Q<6fkkgQHF1z`!( z)-m8t5#l{wkCHG;4C7uIswH!OR4aA=Y3r5z#O~$44S{XgBe0uwG{PEBF-@;22ns$W z<_R-~C?+|zfpF)HF`+8D?SdM%OP&X;dYfj7h4An{G9by|S)HabXuA}W=XHAW@k zIng}P#HsR9Nvuo=L0hMlX4(LaAqBn>AKOPSsp29z;}DUZC6T~#mL?|6uo7bbtS^O7Fyjts=8|svn$@$8|qt)Xmx;m z?+}@I2te??2OoBdI_xQb*3dKRj^Txyy6_tv_b06f4!0Pi*W>OT)#XF?xXt~p zPp5O-_a41&VyC&k)x39e{5JV|yS!s#5MT42*R6+D=VqI=u)(qDawjq)JN$+XuEI^d zgTuqeP69VJ{5O}M?`-(veSKwF0M3x)g%LtPaxy6ck{QONPX-u&BhDZ=nv2@!i!>>x zIR}?0(_ZWgL!(~&4^)+PWBiNdVzPTL%39*uJ=J90rX#=-yY^XiLczM{r%e?Uq65LKDQ2@3z5~H1RaH9M@0pnjse4dIdg(5 z`)N&Li;A*_se@?=!_;3_b~Gos`UktiyGt}37P)z}irsL0hC~LV>1149LY>a3GMZIh zzq_F9M%8JXYtvTFg>{ss)sgj!8vnezKB})Itzz|p!ojwG(B7C_;fx9=e;vn z&tK>ItlUx|KUuBA@~D`NVonurq&6PKDzlWA!sYo@IS6jJSQ8lRK3=W6z&FZoy<;iU z@p18d<#k(3Kf#39_*0cXnQw~$7I;mYtVda8@>_ZQrl4>=Q2(TVi!@6a=l{*Z4Qgr< zYIvHwWKN2I@0*O|S1akd5`)wq0kbeQy{g{^7F-}JaB2PoaEaFjlOoI}x#_`hkRV)z zVYP7DFWN%a$7-VK7&ny5`G%O+JN7xk8XK&=%gsFIGp=7gn}vQby>R7Eg=^L^Tnx%` zsXk^pxXA0cDT}GrOkJLyucYzh6w@51_(^IHcrmwsH%%*p-~Z!_*X>pGZ1Inr-^~>* zNAvm=bpA(YC@{W#_v-7KSXKSET-+D2M53&+T$q=@Sqa- zIeKyFri~EJbIygP_-55Tt8({b*Gz zGOO_xtXXUe>PqzF4oa=0YLjK}{K$2Q$ei|g1SgwVbK$0_n@(F)ma>ZT7(kml#WzbI zZ!M+Q;@)zhNUKPsHDIeqq5)5+j+p^ULdO*Klz*IY_gx~s*9%nZ$S>eZb3__;$F%Z3t` zc9OPMbt^>y83lFhhEN8065J#XMh-(RPpau19u)+?5NY4Pq!K&m&9&0fZ>t}(aubkC z%cg(c2!%KKqaK-C!g zb>S{bs9Ff&I%=)35(|!(KWHwwY%k(m(@@)=^)Zx1b?J(%%Wpk5DHjFLC_&3{UglTx zy2Pd&vzg+jaa{|UT?8x>_<089yhf^HWi8&MSy)3jbK&ax_0`(7i{({)#?DB8>>4K5 ziXiN8I12QXXA^i@Jp1nbi?>H8=ew{&B79REWM&`q?eX^YT9S6uZe&TaEzphHG1eJLf@_&1DV^%@&Kdq1pa_B3qR_P+^iX z+6c>{WnbH^M?X7anmd#l ztVKkYq7^HlitaeYYJlJYyLdmspKT3)b}vruUj5q}c!WFqg59Hk+_Ly!*(s`W%g^6D zd-dYo^A~;YQ1*v<9idJSsAuv!nBrYV_)hkB_YAHzCp!$uHsj{D<2paOt;J1d;_mh# zzEuz4T}Ph!X4c^5-1p6_!S+7x$%6;Osiz*T8IYRA08|;9KnKTtavmh-M9ajJWX1|0 z&Jk?*M`>`9MZ2eeJou%XOb36xO(gC;gTBJ=&jQ!vHW~PKtBM^kP3CNxr@&YKY_tJS zo7mFnN70cRZ&6rEY|qWW25C9 z6ba;(Yi>G)$!MJ+3oEhev-8X8Upz)u%U>$Af12O7R_bwKuxb5DzpGG91otyS@g zUR$*Kd3%Gj4%ze^`skd_!bt6y%iL1kVj>H3^#-%RmAXK>?U>2xqTXgk3*6i58890S zex5;hhlcKdGcg@sv{L20Sd1+hv|=Ol5MF)henX)}dVT+IcVI>u&k_hls1cgUq)pVC zB|MDu(V%Gr5*t1aaHr}9zU8>*eblntRvA$<+Z0oi=Y7_ zlY%)A$?4z?lgcQStWts)>pa*5LaX33wF>S(g0#wipqs~#=9G4iB3Tl+7n1m7Ate=} zg2)q%Oa^A0Vb*fOjPoF*w^D%x8NuMWENvB}urZ3{Ju#59lhIhTZ?&*W_$XtP+6E$I zN>V%LKmv$BdGu5|7G!iu62Av*{MNp^E{?QfLu@*V(icAJX}P+aiEy2LuxuPup`(RK zu=4MJ?d^cM5zwRhSM~n(N`Fb?Uwh=_ZlX#(>is^VOkJw{ZsSdTYWo_Ey|uEwUQe&9 z=v@@_uG)FO`gx5nJ^s8+lrp9brP8THqKw>Qiif(uqtKQMt1J)HaW5^GmZ|^@6i_at zmy+(upT|=f<8m;q;8H(x(9zGS#bX!aA5lwx`&IEWzxGw>Uis*~sHGbaONY)koy2>v zayQYw@dN=fh`SxRDv3EOu`3c=bK0HTn|2lfCR&N^9jbLVZD+zq;$DPTaUGR7*U zEV0HJpMdemqH@6*0g3x$ESE7@p+zzZK8khqOVflWPx8NI)R{8>Z{n^_p z5BX@qR;e?z0v*<#J1jx@_v*|;hU%_xnah8ZA{R#^7R00lqFf#8%-^f{muIhjd{O)a zSD(g{rurR=ud&wo!xtaja0VZ~D4vgpvy0JNNQb#Pdin5Mb(G~G{i4 zyXQt!kWngOL*ywLr(KLrC&m)h-fJTWW;28lpr{0ktqDDV1!I&lQP}(U+}734?rvL) z##XsDV1@-yF0eqOkj{AEGI}O#G$e9Eqls1}?ST?6Fy$trXhUZj8Ibkdwy;R54SQOSsx3`@ko8iQF&v&mbdQp(_z z($-7jt#LLInP?C(lEjE27C>?5q*5YzrAE)Q zQYDYR-oyENw^J2cczG%YrWI$FCqq?Y3Ou2d66qvK+(1-1Db0kFRH*>QM5TYCV@f0j zQW~)*FR!uO>w{=t!6=O<0T$R_vk9C|a-sJ0b`IdLqA}bque-D7)#(ha0RQBJ)-_OC zb@+Zfg5yu_s;EbOT8u{_pV~e`%!dVPbvVZ?e=I%@T()A}<>g5x`D#2aVN^Bez;wDB zR$zet_5b|86?Arm0#g=e*rR`YRGrITLYp}rx~ts!>e6|{R2u*uJ+Ak|cR#*<{{Cfm z$@1ChCI&t^{4i>|Y`uT`^84>!yv6p8fBUyJPtbyU`Cakm)wd_@$FXj_&8CCm{Xf2V zUDtp;d-?7~@#0^fzxW}~>ELb` zc>DJGn{Qv>J61a2<6vB!^*qQ(A1_{iTfF@4>&m>Xn1@GDzy2_K@%r1ZKa7xh^JZH$ zN@Y>uMlN~GHM>s<{^5TcKNEh9d;qp8q3>zaT}Kt#M{YAh?d#&n>leRY{(vvv72m#m z_x|PU=kJS*a=ZG84?m0=ocG%-uWigrWvOye0u`1fA#J2O1_y#`&oRu+wKg6UW070Q zWsEd26Fj9!1nrZ!e;a%!8MVPY-(d-C`sQEP^zQmY5f!N+mU@5i(nM-POp-<&d2rE4 z3x-Gm#@G-eBSvUp4VPRgr5!USsr&Z>cKT4)x(Lm&kIr+Q*D<*A9WE#101@}scK(BA zLW37ZDMejEoJ2{Z6ee=UsR#+cMB=5XKaOth3J&6U?K zD#~brprvC}dqaOz$VWegQ(h}ZtS3f+P+HQIw)Y=yvoKe?KxX~);>~v`qaW4OE!0%Q z!(z|Ms@PgrEulkH5L{1+5q!EvRgH&n`HsWl_NuCQ(&q*cp_2p>QxrjK<&&U+I!x>c z%49M;dF`1G7Hl#hu*8V~ng}yV5XtxD2Ed=ga8_2xymNoNiob$GUB8Z`Pe1n`B>Pj` z;*3{ukLjN-w%sl2>9&}s)rqiHPt9EZ6#|sy=><&B$GxZg&vFHK^*~i^JBVc-YD1vE zD8`o+P*HQ_e`8Jnh8dw|HJS10942rYh8f=K5i{`f#tdv{N4A5*>Do=(g}%D?;qK{@ zJqDBx6j00dZ5yb=rJWe913DzVdbznLfh|E%*@Qf1W?EYP~4T5|3yh#_a zZP*s1Q&hQNl}M5i&S_H0;wdF&O;DD^$c#(I=s=t_+ACqHRKSSRmUwgjj?)IV-8_@h zMf3(hI9>{33~*`_14g0`+!#Y;lG+-PnCC_qVi;l&;MzH@XwuRdZj$%0t65U(LorZV zJ7R-1PTK%3grJmglweVvh{2{nz}w(KCM_&agllO{;)+P+Z=X`>-l-3QigVP`kGrVG zZMEXIDzQr&cB#Tgbevx+I?nbOANy8uTa#&hF@N4J-TfEiwYm2Bp>3?Bp58(jPhweP zE9YufH>&#kRt=Q%%T|VqE6VX~5}^L=37njr6xF-@>GXV1PREn0KOsW-pH2tVjQ&*J zcX(2~8C5NPFEct$4T)bjBxsX7%(O1uU~*FYFdh!VRW*ScHy&J`=pX}^{xm|s`wSO7 zpMP}q1LDRHs<$hzMxko?p3zrZLmiaGWiu7w!Rgr^t>Q#Wpjd2Ma92F-g zCx_h)4;I5*u6^q;9;LzAtO`qJUXQ|X7JuRNVm7ToP_L~_ENZ%^mlH^XKlfP>HH%xF z7IK&2)@+_upyO2sk=9B&C@TgZe?lPW{8U+tM^$5i25)=89AwB>HG}f1tC|~(KaHAa zF>G5kM#!stoYG7&F>TE~jQ|vr*+S)nwqw}5p_rF`+>|LL;5)bt)_5FC#y2FlIrPg^Ut|7Q` z^M*>9MzF4lrZsq!hW2(9ICHu?M;;iB(k2H~NGi0m5xbiTBCY1Zy1*4lN@{BZcrGIe znrcOyGKc{Z!9PHfc-b_$F4*w$yMN-vzrK9;{#`%YwqX;(=*ozh2V$%YMn|P%v?ORq zA<-x$S4mI+uDrn*j+nl~6$;Fr)qUt;0lg@u<5WE1RAsVZL*Ca6!wGmXrV3al~Sec~on9JW+ zLcV%+59jXVU_5z@+w9h9w1at{efXvwS@~gHPQRbH%k#kyijT5rUbRRQcb0*)=MBE5 zW9$i5HR*d+Q9?Mc>D56wzq@KPQunyQ=9>{FRhe)(o=i{kzmM=7V$)hDlR1C*@AF~* zeopCk2UVaPBiqGzR7VXa6DTjS<=yCPQHxZ?$e$vuOs^=O931Cx!U!`x2ZzPqHCHMv zbZ}S{$GHDBi?hk)Thl|;(pEj*{Wa_U<1Gf=^T=) zy7x5A)$s6Vtb0qP!K9pCAF*0q_77DFace&rm)74M6i>1pbBIC4gX0721dhGz4^NgC z|6r8xL*N7R;NQhK4$>eu=4@I{R!jTq;uAKa{DeK4FgBCpW$@?A;UIquGRw!UEwO0f zmCt|9iH37Gc|s36OtHUf1(tBPjwi(h4iel244>nY|C9r;Pwc&^`EA}a0(OL89&cpa`p7f=E_NRe0h8ceF3-^O`piT zt8@3ZLB+OeADk4g9Cm*&TQK6&V1ym4+HA+I(==F`O9CnzWy@eq|wv_2TXr^!GTlv0DYFaShcsPP_spkS{rO0Flr=QZ+vHYZZ`@Bq6ZzhIwL*2KV z+G`Zvi++u_S?4ucZ;OF9DZ4vTbz8(XJR?p-jj46K13d_#e#tN0K z48BznxO;4ax~Q!8Q6-feB*l{!iVB;wv>KcLI>)dXGIodtk|H+$bq0cU#4yVqAhywI z?d%@gSSGU#t9(>KhZw1HMjH^+3+)jw8XHQ7NGN}`DKL_(Q9)wNLwGM@)Cpy=hm&(jgk%W-iIS&~lA|FqNxTr$IZvq%gfgl?S-FSU#_G<# zi`ak0-VK_^*v7TJns1}~c2j$I6x-NY+1-(<+ak6hL(&rC@l@lHI_x-R6DQg;XO)BG z4HwdBBdwR78cIZp+*<_su}Rvrr`X2F0et$5LmN2#hl*@;uNzM1k{EC~kvsEK(4TVGe(v zd5BKme<-7iQ8$ldGz)kifsCb@-5`zuJ^_u|YtN$*i1o~ZwZc};f!UbVK zc_+DYS|!Ppr__*5aSTP7;+~M?xz;=&sv`+nCPp~Zl4t;j@a@iOid8x(BI>>jT58F- zN#gc#jFmlo7h#M&n=p?-jBAgf+(HlA?WE}LD1@=2db< zl+U)b;{NFP&n z%BXY_c?_^T23Q^gEQ_qu=B<9~B9d#!KS)){R&!d)yj>@wyX#J_8E3of+;yV(2EiQ8 zypC1}0n$k+Bld(Ak}7`@w2R50Z)`zn!i*!<2O~}JF|y>S5;D;Ts7%?)l)FKx%4WJ- zG1D6wxp9(unTQYAHeP6L4N1;QMuOBbC2bUsV1(651|uVa+E8f?e*l=4?U;FsVwT>` zvX|7XWFz!f9o<)CZ9othN3sGxk@Y{%Ct-Z@bg|Dt->SqzT>fz>IgI3iTkMXK|idU_# z%Lffr^>35Ak5YB9ViyZ%?fJ*p)MISwF*Y?HuYYgfHY~M)@4~uG(>p`Mkpea@H#T7z2ep+%7h$dlAyzFRmQ#*G%C*#4;b!0 z`gE-&wtL{IpX64PT8SwW2RJWvEemfRZtC0)`-n94&-o^kmWe3=O_RWhEPqKt+(mrp z-VCqDsM2*&rM>Cso2%zLiY4t$Dc`e7-X?BjiDr;!WG*Sj7@pXYQl&@?IE3AGP7Cdg z*U1n(#bpC!Avqo+2TAvZO*4paB8#BbTGt-hKm=2MN=Cni+=$Ie_|DMSd5Dr zJNJy4V1w@bBSu5whSA1 z6*rrnvn4vYY0>!vV1Mq_FW&#hx39{R?p8vLgw4NXd0o>!s^@xG$4&<2<ZQJE znEvebx9xepd^e|eSl$2TZR?SW3r$mZe0KePS|r*xF5a%^hCiiuU7g3m!`tj4;L(i0 zJtV7z=PB~QJri6DV=a~5Pzyo>| zC@Q&sf9qOi_P2gT2~{=KI9l4*N3HE~w7%Sr77P1mX$jX>P=BwL{<+@dlX{FP0mPG} zj4U=y+NE2w+)$`*lIUyVyib;|3i1vqew_$^{_NfRCn(2@XYcBp&`7UdV0#JPCA_bf y+Wq2svy%pmEG4zw#orXgAOGf;zxm%D|2+PA{PXzd@y}=c=l=(P`tra4lmh_$j!4h| delta 35739 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 f>gT`uf1dt4{dxNH^ylf%p8xz`>-L diff --git a/packages/metaschema-schema/sql/metaschema-schema--0.45.0.sql b/packages/metaschema-schema/sql/metaschema-schema--0.45.0.sql index 2f3f6ff51..4b0bcf1fd 100644 --- a/packages/metaschema-schema/sql/metaschema-schema--0.45.0.sql +++ b/packages/metaschema-schema/sql/metaschema-schema--0.45.0.sql @@ -221,6 +221,9 @@ DECLARE -- allow_system validation (system-role exemption) v_allow_system jsonb; + -- human_only validation (principal-caller refusal) + v_human_only jsonb; + -- conditions validation (declarative WHEN-clause tree) v_conditions jsonb; @@ -293,7 +296,7 @@ BEGIN END IF; FOR v_obj_key IN SELECT key FROM jsonb_each(v_value) LOOP - IF v_obj_key NOT IN ('type', 'min_age', 'min_age_lookup', 'min_age_anchor', 'min_age_unless', 'allow_system', 'conditions', 'related_conditions') THEN + IF v_obj_key NOT IN ('type', 'min_age', 'min_age_lookup', 'min_age_anchor', 'min_age_unless', 'allow_system', 'human_only', 'conditions', 'related_conditions') THEN RETURN false; END IF; END LOOP; @@ -377,17 +380,31 @@ BEGIN END IF; FOR v_anchor_key IN SELECT key FROM jsonb_each(v_min_age_anchor) LOOP - IF v_anchor_key NOT IN ('table_id', 'fk_field', 'timestamp_field') THEN + IF v_anchor_key NOT IN ('table_id', 'fk_field', 'conditions', 'timestamp_field') THEN RETURN false; END IF; END LOOP; IF jsonb_typeof(v_min_age_anchor -> 'table_id') IS DISTINCT FROM 'string' - OR jsonb_typeof(v_min_age_anchor -> 'fk_field') IS DISTINCT FROM 'string' OR jsonb_typeof(v_min_age_anchor -> 'timestamp_field') IS DISTINCT FROM 'string' THEN RETURN false; END IF; + -- the anchor row is found one way: by key or by conditions + IF (v_min_age_anchor ? 'fk_field') = (v_min_age_anchor ? 'conditions') THEN + RETURN false; + END IF; + + IF v_min_age_anchor ? 'fk_field' + AND jsonb_typeof(v_min_age_anchor -> 'fk_field') IS DISTINCT FROM 'string' THEN + RETURN false; + END IF; + + IF v_min_age_anchor ? 'conditions' + AND NOT metaschema_private.is_valid_step_up_conditions(v_min_age_anchor -> 'conditions') THEN + RETURN false; + END IF; + BEGIN v_anchor_table_id := (v_min_age_anchor ->> 'table_id')::uuid; EXCEPTION WHEN OTHERS THEN @@ -416,6 +433,13 @@ BEGIN END IF; END IF; + v_human_only := v_value -> 'human_only'; + IF v_human_only IS NOT NULL THEN + IF jsonb_typeof(v_human_only) != 'boolean' THEN + RETURN false; + END IF; + END IF; + v_conditions := v_value -> 'conditions'; IF v_conditions IS NOT NULL THEN IF NOT metaschema_private.is_valid_step_up_conditions(v_conditions) THEN @@ -1153,6 +1177,7 @@ CREATE TABLE metaschema_public.embedding_chunks ( chunks_table_id uuid, chunks_table_name text, content_field_name text NOT NULL DEFAULT 'content', + source_fields jsonb, dimensions int NOT NULL DEFAULT 768, metric text NOT NULL DEFAULT 'cosine', chunk_size int NOT NULL DEFAULT 1000, From d0462f08011fe292833724d6a563a0d523494b32 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Wed, 16 Sep 2026 23:40:30 +0000 Subject: [PATCH 2/3] ci: run the object store on RustFS instead of MinIO --- .github/workflows/ci.yml | 12 ++++++------ .github/workflows/integration-test.yml | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bc3e3a8d2..183757d5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,16 +60,16 @@ jobs: ports: - 5432:5432 - minio_cdn: - image: minio/minio:edge-cicd + rustfs_cdn: + image: rustfs/rustfs:1.0.0-rc.5 env: - MINIO_ROOT_USER: minioadmin - MINIO_ROOT_PASSWORD: minioadmin + RUSTFS_ACCESS_KEY: minioadmin + RUSTFS_SECRET_KEY: minioadmin + RUSTFS_ADDRESS: ":9000" ports: - 9000:9000 - - 9001:9001 options: >- - --health-cmd "curl -f http://localhost:9000/minio/health/live || exit 1" + --health-cmd "curl -f http://localhost:9000/health || exit 1" --health-interval 10s --health-timeout 5s --health-retries 5 diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 422584469..f951a9e46 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -31,16 +31,16 @@ jobs: ports: - 5432:5432 - minio_cdn: - image: minio/minio:edge-cicd + rustfs_cdn: + image: rustfs/rustfs:1.0.0-rc.5 env: - MINIO_ROOT_USER: minioadmin - MINIO_ROOT_PASSWORD: minioadmin + RUSTFS_ACCESS_KEY: minioadmin + RUSTFS_SECRET_KEY: minioadmin + RUSTFS_ADDRESS: ":9000" ports: - 9000:9000 - - 9001:9001 options: >- - --health-cmd "curl -f http://localhost:9000/minio/health/live || exit 1" + --health-cmd "curl -f http://localhost:9000/health || exit 1" --health-interval 10s --health-timeout 5s --health-retries 5 From 25bd02be8a73fc654d1fee256793b0d64ed85bf8 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Wed, 16 Sep 2026 23:48:32 +0000 Subject: [PATCH 3/3] test: align mirror module tests with upstream changes --- .../__tests__/capabilities.test.ts | 16 ++++++++-------- .../__tests__/__snapshots__/modules.test.ts.snap | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/function-resolution/__tests__/capabilities.test.ts b/packages/function-resolution/__tests__/capabilities.test.ts index 31a8def69..801de19f5 100644 --- a/packages/function-resolution/__tests__/capabilities.test.ts +++ b/packages/function-resolution/__tests__/capabilities.test.ts @@ -508,7 +508,7 @@ describe('function-resolution capability resolution', () => { it('resolve_capabilities(): declarations become one resolved bundle', async () => { const [{ bundle }] = await pg.any( - `SELECT function_resolution.resolve_capabilities($1, 'database', $1, $2, 'database', $1, $3::jsonb, 'api') AS bundle`, + `SELECT function_resolution.resolve_capabilities($1, 'database', $1, $2, 'database', $3::jsonb, 'api') AS bundle`, [TENANT_DB, ids.exporter, JSON.stringify({ subject: 'monthly' })] ); @@ -530,7 +530,7 @@ describe('function-resolution capability resolution', () => { it('resolve_capabilities(): echoes required_capabilities as declared', async () => { const [{ bundle }] = await pg.any( - `SELECT function_resolution.resolve_capabilities($1, 'database', $1, $2, 'database', $1, '{}'::jsonb, 'api') AS bundle`, + `SELECT function_resolution.resolve_capabilities($1, 'database', $1, $2, 'database', '{}'::jsonb, 'api') AS bundle`, [TENANT_DB, ids.declaring] ); expect(bundle.capabilities).toEqual([ @@ -548,7 +548,7 @@ describe('function-resolution capability resolution', () => { ); const [{ bundle }] = await pg.any( - `SELECT function_resolution.resolve_capabilities($1, 'database', $1, $2, 'database', $1) AS bundle`, + `SELECT function_resolution.resolve_capabilities($1, 'database', $1, $2, 'database') AS bundle`, [TENANT_DB, ids.ambiguous] ); expect(bundle.buckets.variants.bucket_id).toBe(ids.publicVariants); @@ -563,7 +563,7 @@ describe('function-resolution capability resolution', () => { await expect( pg.any( - `SELECT function_resolution.resolve_capabilities($1, 'database', $1, $2, 'database', $1)`, + `SELECT function_resolution.resolve_capabilities($1, 'database', $1, $2, 'database')`, [TENANT_DB, ids.ambiguous] ) ).rejects.toThrow(/CAPABILITY_BINDING_UNREACHABLE/); @@ -576,7 +576,7 @@ describe('function-resolution capability resolution', () => { it('resolve_capabilities(): an undeclared channel is refused', async () => { await expect( pg.any( - `SELECT function_resolution.resolve_capabilities($1, 'database', $1, $2, 'database', $1, '{}'::jsonb, 'cron')`, + `SELECT function_resolution.resolve_capabilities($1, 'database', $1, $2, 'database', '{}'::jsonb, 'cron')`, [TENANT_DB, ids.exporter] ) ).rejects.toThrow(/CAPABILITY_CHANNEL_REFUSED/); @@ -585,7 +585,7 @@ describe('function-resolution capability resolution', () => { it('resolve_capabilities(): a missing definition raises', async () => { await expect( pg.any( - `SELECT function_resolution.resolve_capabilities($1, 'database', $1, gen_random_uuid(), 'database', $1)`, + `SELECT function_resolution.resolve_capabilities($1, 'database', $1, gen_random_uuid(), 'database')`, [TENANT_DB] ) ).rejects.toThrow(/CAPABILITY_DEFINITION_NOT_FOUND/); @@ -593,13 +593,13 @@ describe('function-resolution capability resolution', () => { it('validate_capabilities(): passes when resolvable, raises when not', async () => { await pg.query( - `SELECT function_resolution.validate_capabilities($1, 'database', $1, $2, 'database', $1)`, + `SELECT function_resolution.validate_capabilities($1, 'database', $1, $2, 'database')`, [TENANT_DB, ids.exporter] ); await expect( pg.any( - `SELECT function_resolution.validate_capabilities($1, 'database', $1, $2, 'database', $1)`, + `SELECT function_resolution.validate_capabilities($1, 'database', $1, $2, 'database')`, [TENANT_DB, ids.ambiguous] ) ).rejects.toThrow(/CAPABILITY_BUCKET_AMBIGUOUS/); diff --git a/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap b/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap index ef18643f1..9b996556e 100644 --- a/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap +++ b/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap @@ -159,7 +159,7 @@ exports[`db_meta_modules should verify module table structures have database_id exports[`db_meta_modules should verify module tables have proper foreign key relationships 1`] = ` { - "constraintCount": 566, + "constraintCount": 567, "foreignTables": [ "catalog_module", "database",