From 4d74d264dde70528a1b144f0657c88247ee15d34 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Tue, 7 May 2024 10:42:39 -0700 Subject: [PATCH 01/15] Finish preliminary backend endpoints for GCP IAM Auth method --- backend/src/@types/fastify.d.ts | 2 + backend/src/@types/knex.d.ts | 8 + .../20240507153350_identity-gcp-iam-auth.ts | 28 ++ .../src/db/schemas/identity-gcp-iam-auths.ts | 25 ++ backend/src/db/schemas/index.ts | 1 + backend/src/db/schemas/models.ts | 4 +- .../ee/services/audit-log/audit-log-types.ts | 50 +++ backend/src/server/routes/index.ts | 13 + .../routes/v1/identity-gcp-iam-auth-router.ts | 259 +++++++++++++++ backend/src/server/routes/v1/index.ts | 2 + .../identity-gcp-iam-auth-dal.ts | 10 + .../identity-gcp-iam-auth-fns.ts | 17 + .../identity-gcp-iam-auth-service.ts | 304 ++++++++++++++++++ .../identity-gcp-iam-auth-types.ts | 46 +++ 14 files changed, 768 insertions(+), 1 deletion(-) create mode 100644 backend/src/db/migrations/20240507153350_identity-gcp-iam-auth.ts create mode 100644 backend/src/db/schemas/identity-gcp-iam-auths.ts create mode 100644 backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts create mode 100644 backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-dal.ts create mode 100644 backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-fns.ts create mode 100644 backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service.ts create mode 100644 backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-types.ts diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index b3e9d9952..923f7cc4b 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -30,6 +30,7 @@ import { TAuthTokenServiceFactory } from "@app/services/auth-token/auth-token-se import { TGroupProjectServiceFactory } from "@app/services/group-project/group-project-service"; import { TIdentityServiceFactory } from "@app/services/identity/identity-service"; import { TIdentityAccessTokenServiceFactory } from "@app/services/identity-access-token/identity-access-token-service"; +import { TIdentityGcpIamAuthServiceFactory } from "@app/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service"; import { TIdentityProjectServiceFactory } from "@app/services/identity-project/identity-project-service"; import { TIdentityUaServiceFactory } from "@app/services/identity-ua/identity-ua-service"; import { TIntegrationServiceFactory } from "@app/services/integration/integration-service"; @@ -113,6 +114,7 @@ declare module "fastify" { identityAccessToken: TIdentityAccessTokenServiceFactory; identityProject: TIdentityProjectServiceFactory; identityUa: TIdentityUaServiceFactory; + identityGcpIamAuth: TIdentityGcpIamAuthServiceFactory; secretApprovalPolicy: TSecretApprovalPolicyServiceFactory; secretApprovalRequest: TSecretApprovalRequestServiceFactory; secretRotation: TSecretRotationServiceFactory; diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index a7d76e944..acf4934aa 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -47,6 +47,9 @@ import { TIdentityAccessTokens, TIdentityAccessTokensInsert, TIdentityAccessTokensUpdate, + TIdentityGcpIamAuths, + TIdentityGcpIamAuthsInsert, + TIdentityGcpIamAuthsUpdate, TIdentityOrgMemberships, TIdentityOrgMembershipsInsert, TIdentityOrgMembershipsUpdate, @@ -314,6 +317,11 @@ declare module "knex/types/tables" { TIdentityUniversalAuthsInsert, TIdentityUniversalAuthsUpdate >; + [TableName.IdentityGcpIamAuth]: Knex.CompositeTableType< + TIdentityGcpIamAuths, + TIdentityGcpIamAuthsInsert, + TIdentityGcpIamAuthsUpdate + >; [TableName.IdentityUaClientSecret]: Knex.CompositeTableType< TIdentityUaClientSecrets, TIdentityUaClientSecretsInsert, diff --git a/backend/src/db/migrations/20240507153350_identity-gcp-iam-auth.ts b/backend/src/db/migrations/20240507153350_identity-gcp-iam-auth.ts new file mode 100644 index 000000000..3d1a3feb2 --- /dev/null +++ b/backend/src/db/migrations/20240507153350_identity-gcp-iam-auth.ts @@ -0,0 +1,28 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; +import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; + +export async function up(knex: Knex): Promise { + if (!(await knex.schema.hasTable(TableName.IdentityGcpIamAuth))) { + await knex.schema.createTable(TableName.IdentityGcpIamAuth, (t) => { + t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); + t.bigInteger("accessTokenTTL").defaultTo(7200).notNullable(); + t.bigInteger("accessTokenMaxTTL").defaultTo(7200).notNullable(); + t.bigInteger("accessTokenNumUsesLimit").defaultTo(0).notNullable(); + t.jsonb("accessTokenTrustedIps").notNullable(); + t.timestamps(true, true, true); + t.uuid("identityId").notNullable().unique(); + t.foreign("identityId").references("id").inTable(TableName.Identity).onDelete("CASCADE"); + t.string("allowedServiceAccounts").notNullable(); + t.string("allowedProjects").notNullable(); + }); + } + + await createOnUpdateTrigger(knex, TableName.IdentityGcpIamAuth); +} + +export async function down(knex: Knex): Promise { + await knex.schema.dropTableIfExists(TableName.IdentityGcpIamAuth); + await dropOnUpdateTrigger(knex, TableName.IdentityGcpIamAuth); +} diff --git a/backend/src/db/schemas/identity-gcp-iam-auths.ts b/backend/src/db/schemas/identity-gcp-iam-auths.ts new file mode 100644 index 000000000..e5b7d090e --- /dev/null +++ b/backend/src/db/schemas/identity-gcp-iam-auths.ts @@ -0,0 +1,25 @@ +// Code generated by automation script, DO NOT EDIT. +// Automated by pulling database and generating zod schema +// To update. Just run npm run generate:schema +// Written by akhilmhdh. + +import { z } from "zod"; + +import { TImmutableDBKeys } from "./models"; + +export const IdentityGcpIamAuthsSchema = z.object({ + id: z.string().uuid(), + accessTokenTTL: z.coerce.number().default(7200), + accessTokenMaxTTL: z.coerce.number().default(7200), + accessTokenNumUsesLimit: z.coerce.number().default(0), + accessTokenTrustedIps: z.unknown(), + createdAt: z.date(), + updatedAt: z.date(), + identityId: z.string().uuid(), + allowedServiceAccounts: z.string(), + allowedProjects: z.string() +}); + +export type TIdentityGcpIamAuths = z.infer; +export type TIdentityGcpIamAuthsInsert = Omit, TImmutableDBKeys>; +export type TIdentityGcpIamAuthsUpdate = Partial, TImmutableDBKeys>>; diff --git a/backend/src/db/schemas/index.ts b/backend/src/db/schemas/index.ts index 0eb9b1986..7a365b18c 100644 --- a/backend/src/db/schemas/index.ts +++ b/backend/src/db/schemas/index.ts @@ -13,6 +13,7 @@ export * from "./group-project-memberships"; export * from "./groups"; export * from "./identities"; export * from "./identity-access-tokens"; +export * from "./identity-gcp-iam-auths"; export * from "./identity-org-memberships"; export * from "./identity-project-additional-privilege"; export * from "./identity-project-membership-role"; diff --git a/backend/src/db/schemas/models.ts b/backend/src/db/schemas/models.ts index 3baa7f40d..b1006f51d 100644 --- a/backend/src/db/schemas/models.ts +++ b/backend/src/db/schemas/models.ts @@ -44,6 +44,7 @@ export enum TableName { Identity = "identities", IdentityAccessToken = "identity_access_tokens", IdentityUniversalAuth = "identity_universal_auths", + IdentityGcpIamAuth = "identity_gcp_iam_auths", IdentityUaClientSecret = "identity_ua_client_secrets", IdentityOrgMembership = "identity_org_memberships", IdentityProjectMembership = "identity_project_memberships", @@ -138,5 +139,6 @@ export enum ProjectUpgradeStatus { } export enum IdentityAuthMethod { - Univeral = "universal-auth" + Univeral = "universal-auth", + GCP_IAM_AUTH = "gcp-iam-auth" } diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 220c25002..196eab9ef 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -66,6 +66,10 @@ export enum EventType { CREATE_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET = "create-identity-universal-auth-client-secret", REVOKE_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET = "revoke-identity-universal-auth-client-secret", GET_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRETS = "get-identity-universal-auth-client-secret", + LOGIN_IDENTITY_GCP_IAM_AUTH = "login-identity-gcp-iam-auth", + ADD_IDENTITY_GCP_IAM_AUTH = "add-identity-gcp-iam -auth", + UPDATE_IDENTITY_GCP_IAM_AUTH = "update-identity-gcp-iam-auth", + GET_IDENTITY_GCP_IAM_AUTH = "get-identity-gcp-iam-auth", CREATE_ENVIRONMENT = "create-environment", UPDATE_ENVIRONMENT = "update-environment", DELETE_ENVIRONMENT = "delete-environment", @@ -406,6 +410,48 @@ interface RevokeIdentityUniversalAuthClientSecretEvent { }; } +interface LoginIdentityGcpIamAuthEvent { + type: EventType.LOGIN_IDENTITY_GCP_IAM_AUTH; + metadata: { + identityId: string; + identityGcpIamAuthId: string; + identityAccessTokenId: string; + }; +} + +interface AddIdentityGcpIamAuthEvent { + type: EventType.ADD_IDENTITY_GCP_IAM_AUTH; + metadata: { + identityId: string; + allowedServiceAccounts: string; + allowedProjects: string; + accessTokenTTL: number; + accessTokenMaxTTL: number; + accessTokenNumUsesLimit: number; + accessTokenTrustedIps: Array; + }; +} + +interface UpdateIdentityGcpIamAuthEvent { + type: EventType.UPDATE_IDENTITY_GCP_IAM_AUTH; + metadata: { + identityId: string; + allowedServiceAccounts?: string; + allowedProjects?: string; + accessTokenTTL?: number; + accessTokenMaxTTL?: number; + accessTokenNumUsesLimit?: number; + accessTokenTrustedIps?: Array; + }; +} + +interface GetIdentityGcpIamAuthEvent { + type: EventType.GET_IDENTITY_GCP_IAM_AUTH; + metadata: { + identityId: string; + }; +} + interface CreateEnvironmentEvent { type: EventType.CREATE_ENVIRONMENT; metadata: { @@ -660,6 +706,10 @@ export type Event = | CreateIdentityUniversalAuthClientSecretEvent | GetIdentityUniversalAuthClientSecretsEvent | RevokeIdentityUniversalAuthClientSecretEvent + | LoginIdentityGcpIamAuthEvent + | AddIdentityGcpIamAuthEvent + | UpdateIdentityGcpIamAuthEvent + | GetIdentityGcpIamAuthEvent | CreateEnvironmentEvent | UpdateEnvironmentEvent | DeleteEnvironmentEvent diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index aeb66d93f..c64d22129 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -72,6 +72,8 @@ import { identityOrgDALFactory } from "@app/services/identity/identity-org-dal"; import { identityServiceFactory } from "@app/services/identity/identity-service"; import { identityAccessTokenDALFactory } from "@app/services/identity-access-token/identity-access-token-dal"; import { identityAccessTokenServiceFactory } from "@app/services/identity-access-token/identity-access-token-service"; +import { identityGcpIamAuthDALFactory } from "@app/services/identity-gcp-iam-auth/identity-gcp-iam-auth-dal"; +import { identityGcpIamAuthServiceFactory } from "@app/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service"; import { identityProjectDALFactory } from "@app/services/identity-project/identity-project-dal"; import { identityProjectMembershipRoleDALFactory } from "@app/services/identity-project/identity-project-membership-role-dal"; import { identityProjectServiceFactory } from "@app/services/identity-project/identity-project-service"; @@ -196,6 +198,8 @@ export const registerRoutes = async ( const identityUaDAL = identityUaDALFactory(db); const identityUaClientSecretDAL = identityUaClientSecretDALFactory(db); + const identityGcpIamAuthDAL = identityGcpIamAuthDALFactory(db); + const auditLogDAL = auditLogDALFactory(db); const auditLogStreamDAL = auditLogStreamDALFactory(db); const trustedIpDAL = trustedIpDALFactory(db); @@ -662,6 +666,14 @@ export const registerRoutes = async ( identityUaDAL, licenseService }); + const identityGcpIamAuthService = identityGcpIamAuthServiceFactory({ + identityGcpIamAuthDAL, + identityOrgMembershipDAL, + identityAccessTokenDAL, + identityDAL, + permissionService, + licenseService + }); const dynamicSecretProviders = buildDynamicSecretProviders(); const dynamicSecretQueueService = dynamicSecretLeaseQueueServiceFactory({ @@ -731,6 +743,7 @@ export const registerRoutes = async ( identityAccessToken: identityAccessTokenService, identityProject: identityProjectService, identityUa: identityUaService, + identityGcpIamAuth: identityGcpIamAuthService, secretApprovalPolicy: sapService, secretApprovalRequest: sarService, secretRotation: secretRotationService, diff --git a/backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts b/backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts new file mode 100644 index 000000000..e38767b0e --- /dev/null +++ b/backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts @@ -0,0 +1,259 @@ +import { z } from "zod"; + +import { IdentityGcpIamAuthsSchema } from "@app/db/schemas"; +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; +import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; +import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; +import { AuthMode } from "@app/services/auth/auth-type"; +import { TIdentityTrustedIp } from "@app/services/identity/identity-types"; + +export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvider) => { + server.route({ + method: "POST", + url: "/gcp-iam-auth/login", + config: { + rateLimit: writeLimit + }, + schema: { + description: "Login with GCP IAM Auth", + body: z.object({ + identityId: z.string(), + jwt: z.string() + }), + response: { + 200: z.object({ + accessToken: z.string(), + expiresIn: z.coerce.number(), + accessTokenMaxTTL: z.coerce.number(), + tokenType: z.literal("Bearer") + }) + } + }, + handler: async (req) => { + const { identityGcpIamAuth, accessToken, identityAccessToken, identityMembershipOrg } = + await server.services.identityGcpIamAuth.login(req.body); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: identityMembershipOrg?.orgId, + event: { + type: EventType.LOGIN_IDENTITY_GCP_IAM_AUTH, + metadata: { + identityId: identityGcpIamAuth.identityId, + identityAccessTokenId: identityAccessToken.id, + identityGcpIamAuthId: identityGcpIamAuth.id + } + } + }); + + return { + accessToken, + tokenType: "Bearer" as const, + expiresIn: identityGcpIamAuth.accessTokenTTL, + accessTokenMaxTTL: identityGcpIamAuth.accessTokenMaxTTL + }; + } + }); + + server.route({ + method: "POST", + url: "/gcp-iam-auth/identities/:identityId", + config: { + rateLimit: writeLimit + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + schema: { + description: "Attach GCP IAM Auth configuration onto identity", + security: [ + { + bearerAuth: [] + } + ], + params: z.object({ + identityId: z.string().trim() + }), + body: z.object({ + allowedServiceAccounts: z.string(), // TODO: better validation + allowedProjects: z.string(), // TODO: better validation + accessTokenTrustedIps: z + .object({ + ipAddress: z.string().trim() + }) + .array() + .min(1) + .default([{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }]), + accessTokenTTL: z + .number() + .int() + .min(1) + .refine((value) => value !== 0, { + message: "accessTokenTTL must have a non zero number" + }) + .default(2592000), + accessTokenMaxTTL: z + .number() + .int() + .refine((value) => value !== 0, { + message: "accessTokenMaxTTL must have a non zero number" + }) + .default(2592000), + accessTokenNumUsesLimit: z.number().int().min(0).default(0) + }), + response: { + 200: z.object({ + identityGcpIamAuth: IdentityGcpIamAuthsSchema + }) + } + }, + handler: async (req) => { + const identityGcpIamAuth = await server.services.identityGcpIamAuth.attachGcpIamAuth({ + actor: req.permission.type, + actorId: req.permission.id, + actorAuthMethod: req.permission.authMethod, + actorOrgId: req.permission.orgId, + ...req.body, + identityId: req.params.identityId + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: identityGcpIamAuth.orgId, + event: { + type: EventType.ADD_IDENTITY_GCP_IAM_AUTH, + metadata: { + identityId: identityGcpIamAuth.identityId, + allowedServiceAccounts: identityGcpIamAuth.allowedServiceAccounts, + allowedProjects: identityGcpIamAuth.allowedProjects, + accessTokenTTL: identityGcpIamAuth.accessTokenTTL, + accessTokenMaxTTL: identityGcpIamAuth.accessTokenMaxTTL, + accessTokenTrustedIps: identityGcpIamAuth.accessTokenTrustedIps as TIdentityTrustedIp[], + accessTokenNumUsesLimit: identityGcpIamAuth.accessTokenNumUsesLimit + } + } + }); + + return { identityGcpIamAuth }; + } + }); + + server.route({ + method: "PATCH", + url: "/gcp-iam-auth/identities/:identityId", + config: { + rateLimit: writeLimit + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + schema: { + description: "Update GCP IAM Auth configuration on identity", + security: [ + { + bearerAuth: [] + } + ], + params: z.object({ + identityId: z.string().trim() + }), + body: z.object({ + allowedServiceAccounts: z.string().trim().optional(), + allowedProjects: z.string().trim().optional(), + accessTokenTrustedIps: z + .object({ + ipAddress: z.string().trim() + }) + .array() + .min(1) + .optional(), + accessTokenTTL: z.number().int().min(0).optional(), + accessTokenNumUsesLimit: z.number().int().min(0).optional(), + accessTokenMaxTTL: z + .number() + .int() + .refine((value) => value !== 0, { + message: "accessTokenMaxTTL must have a non zero number" + }) + .optional() + }), + response: { + 200: z.object({ + identityGcpIamAuth: IdentityGcpIamAuthsSchema + }) + } + }, + handler: async (req) => { + const identityGcpIamAuth = await server.services.identityGcpIamAuth.updateGcpIamAuth({ + actor: req.permission.type, + actorId: req.permission.id, + actorOrgId: req.permission.orgId, + actorAuthMethod: req.permission.authMethod, + ...req.body, + identityId: req.params.identityId + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: identityGcpIamAuth.orgId, + event: { + type: EventType.UPDATE_IDENTITY_GCP_IAM_AUTH, + metadata: { + identityId: identityGcpIamAuth.identityId, + allowedServiceAccounts: identityGcpIamAuth.allowedServiceAccounts, + allowedProjects: identityGcpIamAuth.allowedProjects, + accessTokenTTL: identityGcpIamAuth.accessTokenTTL, + accessTokenMaxTTL: identityGcpIamAuth.accessTokenMaxTTL, + accessTokenTrustedIps: identityGcpIamAuth.accessTokenTrustedIps as TIdentityTrustedIp[], + accessTokenNumUsesLimit: identityGcpIamAuth.accessTokenNumUsesLimit + } + } + }); + + return { identityGcpIamAuth }; + } + }); + + server.route({ + method: "GET", + url: "/gcp-iam-auth/identities/:identityId", + config: { + rateLimit: readLimit + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + schema: { + description: "Retrieve GCP IAM Auth configuration on identity", + security: [ + { + bearerAuth: [] + } + ], + params: z.object({ + identityId: z.string() + }), + response: { + 200: z.object({ + identityGcpIamAuth: IdentityGcpIamAuthsSchema + }) + } + }, + handler: async (req) => { + const identityGcpIamAuth = await server.services.identityGcpIamAuth.getGcpIamAuth({ + identityId: req.params.identityId, + actor: req.permission.type, + actorId: req.permission.id, + actorOrgId: req.permission.orgId, + actorAuthMethod: req.permission.authMethod + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: identityGcpIamAuth.orgId, + event: { + type: EventType.GET_IDENTITY_GCP_IAM_AUTH, + metadata: { + identityId: identityGcpIamAuth.identityId + } + } + }); + + return { identityGcpIamAuth }; + } + }); +}; diff --git a/backend/src/server/routes/v1/index.ts b/backend/src/server/routes/v1/index.ts index fbc68d974..3d0ac6b1e 100644 --- a/backend/src/server/routes/v1/index.ts +++ b/backend/src/server/routes/v1/index.ts @@ -2,6 +2,7 @@ import { registerAdminRouter } from "./admin-router"; import { registerAuthRoutes } from "./auth-router"; import { registerProjectBotRouter } from "./bot-router"; import { registerIdentityAccessTokenRouter } from "./identity-access-token-router"; +import { registerIdentityGcpIamAuthRouter } from "./identity-gcp-iam-auth-router"; import { registerIdentityRouter } from "./identity-router"; import { registerIdentityUaRouter } from "./identity-ua"; import { registerIntegrationAuthRouter } from "./integration-auth-router"; @@ -27,6 +28,7 @@ export const registerV1Routes = async (server: FastifyZodProvider) => { async (authRouter) => { await authRouter.register(registerAuthRoutes); await authRouter.register(registerIdentityUaRouter); + await authRouter.register(registerIdentityGcpIamAuthRouter); await authRouter.register(registerIdentityAccessTokenRouter); }, { prefix: "/auth" } diff --git a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-dal.ts b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-dal.ts new file mode 100644 index 000000000..78db67968 --- /dev/null +++ b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-dal.ts @@ -0,0 +1,10 @@ +import { TDbClient } from "@app/db"; +import { TableName } from "@app/db/schemas"; +import { ormify } from "@app/lib/knex"; + +export type TIdentityGcpIamAuthDALFactory = ReturnType; + +export const identityGcpIamAuthDALFactory = (db: TDbClient) => { + const gcpIamAuthOrm = ormify(db, TableName.IdentityGcpIamAuth); + return gcpIamAuthOrm; +}; diff --git a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-fns.ts b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-fns.ts new file mode 100644 index 000000000..f9d054b1b --- /dev/null +++ b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-fns.ts @@ -0,0 +1,17 @@ +/** + * Extracts the GCP service account email into the name and project ID parts where + * the email is in the format: @.iam.gserviceaccount.com + */ +export const extractGcpServiceAccountEmail = (email: string) => { + const regex = /^(.+)@(.+)\.iam\.gserviceaccount\.com$/; + const match = email.match(regex); + + if (!match) { + throw new Error("Invalid GCP service account email format."); + } + + const name = match[1]; + const projectId = match[2]; + + return { name, projectId }; +}; diff --git a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service.ts b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service.ts new file mode 100644 index 000000000..380fffd68 --- /dev/null +++ b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service.ts @@ -0,0 +1,304 @@ +import { ForbiddenError } from "@casl/ability"; +import axios from "axios"; +import jwt from "jsonwebtoken"; + +import { IdentityAuthMethod } from "@app/db/schemas"; +import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; +import { OrgPermissionActions, OrgPermissionSubjects } from "@app/ee/services/permission/org-permission"; +import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service"; +import { getConfig } from "@app/lib/config/env"; +import { BadRequestError, UnauthorizedError } from "@app/lib/errors"; +import { extractIPDetails, isValidIpOrCidr } from "@app/lib/ip"; + +import { AuthTokenType } from "../auth/auth-type"; +import { TIdentityDALFactory } from "../identity/identity-dal"; +import { TIdentityOrgDALFactory } from "../identity/identity-org-dal"; +import { TIdentityAccessTokenDALFactory } from "../identity-access-token/identity-access-token-dal"; +import { TIdentityAccessTokenJwtPayload } from "../identity-access-token/identity-access-token-types"; +import { TIdentityGcpIamAuthDALFactory } from "./identity-gcp-iam-auth-dal"; +import { extractGcpServiceAccountEmail } from "./identity-gcp-iam-auth-fns"; +import { + TAttachGcpIamAuthDTO, + TDecodedGcpIamAuthJwt, + TGetGcpIamAuthDTO, + TLoginGcpIamAuthDTO, + TUpdateGcpIamAuthDTO +} from "./identity-gcp-iam-auth-types"; + +type TIdentityGcpIamAuthServiceFactoryDep = { + identityGcpIamAuthDAL: Pick; + identityOrgMembershipDAL: Pick; + identityAccessTokenDAL: Pick; + identityDAL: Pick; + permissionService: Pick; + licenseService: Pick; +}; + +export type TIdentityGcpIamAuthServiceFactory = ReturnType; + +export const identityGcpIamAuthServiceFactory = ({ + identityGcpIamAuthDAL, + identityOrgMembershipDAL, + identityAccessTokenDAL, + identityDAL, + permissionService, + licenseService +}: TIdentityGcpIamAuthServiceFactoryDep) => { + const login = async ({ identityId, jwt: serviceAccountJwt }: TLoginGcpIamAuthDTO) => { + const identityGcpIamAuth = await identityGcpIamAuthDAL.findOne({ identityId }); + if (!identityGcpIamAuth) throw new UnauthorizedError(); + + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId: identityGcpIamAuth.identityId }); + + const decodedJwt = jwt.decode(serviceAccountJwt, { complete: true }) as TDecodedGcpIamAuthJwt; + const { sub, aud } = decodedJwt.payload; + + const { + data + }: { + data: { + [key: string]: string; + }; + } = await axios.get(`https://www.googleapis.com/service_accounts/v1/metadata/x509/${sub}`); + + const publicKey = data[decodedJwt.header.kid]; + + jwt.verify(serviceAccountJwt, publicKey, { + algorithms: ["RS256"] + }); + + if (aud !== identityId) throw new UnauthorizedError(); + + const { name, projectId } = extractGcpServiceAccountEmail(sub); + + if (identityGcpIamAuth.allowedServiceAccounts) { + // validate if the service account is in the list of allowed service accounts + + const isServiceAccountAllowed = identityGcpIamAuth.allowedServiceAccounts + .split(",") + .map((serviceAccount) => serviceAccount.trim()) + .some((serviceAccount) => serviceAccount === name); + + if (!isServiceAccountAllowed) throw new UnauthorizedError(); + } + + if (identityGcpIamAuth.allowedProjects) { + // validate if the project that the service account belongs to is in the list of allowed projects + + const isProjectAllowed = identityGcpIamAuth.allowedProjects + .split(",") + .map((project) => project.trim()) + .some((project) => project === projectId); + + if (!isProjectAllowed) throw new UnauthorizedError(); + } + + const identityAccessToken = await identityGcpIamAuthDAL.transaction(async (tx) => { + const newToken = await identityAccessTokenDAL.create( + { + identityId: identityGcpIamAuth.identityId, + isAccessTokenRevoked: false, + accessTokenTTL: identityGcpIamAuth.accessTokenTTL, + accessTokenMaxTTL: identityGcpIamAuth.accessTokenMaxTTL, + accessTokenNumUses: 0, + accessTokenNumUsesLimit: identityGcpIamAuth.accessTokenNumUsesLimit + }, + tx + ); + return newToken; + }); + + const appCfg = getConfig(); + const accessToken = jwt.sign( + { + identityId: identityGcpIamAuth.identityId, + identityAccessTokenId: identityAccessToken.id, + authTokenType: AuthTokenType.IDENTITY_ACCESS_TOKEN + } as TIdentityAccessTokenJwtPayload, + appCfg.AUTH_SECRET, + { + expiresIn: + Number(identityAccessToken.accessTokenMaxTTL) === 0 + ? undefined + : Number(identityAccessToken.accessTokenMaxTTL) + } + ); + + return { accessToken, identityGcpIamAuth, identityAccessToken, identityMembershipOrg }; + }; + + const attachGcpIamAuth = async ({ + identityId, + allowedServiceAccounts, + allowedProjects, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps, + actorId, + actorAuthMethod, + actor, + actorOrgId + }: TAttachGcpIamAuthDTO) => { + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); + if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); + if (identityMembershipOrg.identity.authMethod) + throw new BadRequestError({ + message: "Failed to add AWS IAM Auth to already configured identity" + }); + + if (accessTokenMaxTTL > 0 && accessTokenTTL > accessTokenMaxTTL) { + throw new BadRequestError({ message: "Access token TTL cannot be greater than max TTL" }); + } + + const { permission } = await permissionService.getOrgPermission( + actor, + actorId, + identityMembershipOrg.orgId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Create, OrgPermissionSubjects.Identity); + + const plan = await licenseService.getPlan(identityMembershipOrg.orgId); + const reformattedAccessTokenTrustedIps = accessTokenTrustedIps.map((accessTokenTrustedIp) => { + if ( + !plan.ipAllowlisting && + accessTokenTrustedIp.ipAddress !== "0.0.0.0/0" && + accessTokenTrustedIp.ipAddress !== "::/0" + ) + throw new BadRequestError({ + message: + "Failed to add IP access range to access token due to plan restriction. Upgrade plan to add IP access range." + }); + if (!isValidIpOrCidr(accessTokenTrustedIp.ipAddress)) + throw new BadRequestError({ + message: "The IP is not a valid IPv4, IPv6, or CIDR block" + }); + return extractIPDetails(accessTokenTrustedIp.ipAddress); + }); + + const identityAwsIamAuth = await identityGcpIamAuthDAL.transaction(async (tx) => { + const doc = await identityGcpIamAuthDAL.create( + { + identityId: identityMembershipOrg.identityId, + allowedServiceAccounts, + allowedProjects, + accessTokenMaxTTL, + accessTokenTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps: JSON.stringify(reformattedAccessTokenTrustedIps) + }, + tx + ); + await identityDAL.updateById( + identityMembershipOrg.identityId, + { + authMethod: IdentityAuthMethod.GCP_IAM_AUTH + }, + tx + ); + return doc; + }); + return { ...identityAwsIamAuth, orgId: identityMembershipOrg.orgId }; + }; + + const updateGcpIamAuth = async ({ + identityId, + allowedServiceAccounts, + allowedProjects, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps, + actorId, + actorAuthMethod, + actor, + actorOrgId + }: TUpdateGcpIamAuthDTO) => { + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); + if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); + if (identityMembershipOrg.identity?.authMethod !== IdentityAuthMethod.GCP_IAM_AUTH) + throw new BadRequestError({ + message: "Failed to update GCP IAM Auth" + }); + + const identityGcpIamAuth = await identityGcpIamAuthDAL.findOne({ identityId }); + + if ( + (accessTokenMaxTTL || identityGcpIamAuth.accessTokenMaxTTL) > 0 && + (accessTokenTTL || identityGcpIamAuth.accessTokenMaxTTL) > + (accessTokenMaxTTL || identityGcpIamAuth.accessTokenMaxTTL) + ) { + throw new BadRequestError({ message: "Access token TTL cannot be greater than max TTL" }); + } + + const { permission } = await permissionService.getOrgPermission( + actor, + actorId, + identityMembershipOrg.orgId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Edit, OrgPermissionSubjects.Identity); + + const plan = await licenseService.getPlan(identityMembershipOrg.orgId); + const reformattedAccessTokenTrustedIps = accessTokenTrustedIps?.map((accessTokenTrustedIp) => { + if ( + !plan.ipAllowlisting && + accessTokenTrustedIp.ipAddress !== "0.0.0.0/0" && + accessTokenTrustedIp.ipAddress !== "::/0" + ) + throw new BadRequestError({ + message: + "Failed to add IP access range to access token due to plan restriction. Upgrade plan to add IP access range." + }); + if (!isValidIpOrCidr(accessTokenTrustedIp.ipAddress)) + throw new BadRequestError({ + message: "The IP is not a valid IPv4, IPv6, or CIDR block" + }); + return extractIPDetails(accessTokenTrustedIp.ipAddress); + }); + + const updatedGcpIamAuth = await identityGcpIamAuthDAL.updateById(identityGcpIamAuth.id, { + allowedServiceAccounts, + allowedProjects, + accessTokenMaxTTL, + accessTokenTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps: reformattedAccessTokenTrustedIps + ? JSON.stringify(reformattedAccessTokenTrustedIps) + : undefined + }); + + return { ...updatedGcpIamAuth, orgId: identityMembershipOrg.orgId }; + }; + + const getGcpIamAuth = async ({ identityId, actorId, actor, actorAuthMethod, actorOrgId }: TGetGcpIamAuthDTO) => { + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); + if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); + if (identityMembershipOrg.identity?.authMethod !== IdentityAuthMethod.GCP_IAM_AUTH) + throw new BadRequestError({ + message: "The identity does not have GCP IAM Auth attached" + }); + + const gcpIamIdentityAuth = await identityGcpIamAuthDAL.findOne({ identityId }); + + const { permission } = await permissionService.getOrgPermission( + actor, + actorId, + identityMembershipOrg.orgId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Read, OrgPermissionSubjects.Identity); + return { ...gcpIamIdentityAuth, orgId: identityMembershipOrg.orgId }; + }; + + return { + login, + attachGcpIamAuth, + updateGcpIamAuth, + getGcpIamAuth + }; +}; diff --git a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-types.ts b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-types.ts new file mode 100644 index 000000000..168a5e237 --- /dev/null +++ b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-types.ts @@ -0,0 +1,46 @@ +import { TProjectPermission } from "@app/lib/types"; + +export type TLoginGcpIamAuthDTO = { + identityId: string; + jwt: string; +}; + +export type TAttachGcpIamAuthDTO = { + identityId: string; + allowedServiceAccounts: string; + allowedProjects: string; + accessTokenTTL: number; + accessTokenMaxTTL: number; + accessTokenNumUsesLimit: number; + accessTokenTrustedIps: { ipAddress: string }[]; +} & Omit; + +export type TUpdateGcpIamAuthDTO = { + identityId: string; + allowedServiceAccounts?: string; + allowedProjects?: string; + accessTokenTTL?: number; + accessTokenMaxTTL?: number; + accessTokenNumUsesLimit?: number; + accessTokenTrustedIps?: { ipAddress: string }[]; +} & Omit; + +export type TGetGcpIamAuthDTO = { + identityId: string; +} & Omit; + +export type TDecodedGcpIamAuthJwt = { + header: { + alg: string; + kid: string; + typ: string; + }; + payload: { + sub: string; + aud: string; + }; + signature: string; + metadata: { + [key: string]: string; + }; +}; From e96ca8d355d2d71568ecc772b1503453172d277b Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Tue, 7 May 2024 12:15:18 -0700 Subject: [PATCH 02/15] Draft GCP IAM Auth docs --- .../platform/identities/gcp-iam-auth.mdx | 146 ++++++++++++++++++ docs/mint.json | 5 +- 2 files changed, 148 insertions(+), 3 deletions(-) create mode 100644 docs/documentation/platform/identities/gcp-iam-auth.mdx diff --git a/docs/documentation/platform/identities/gcp-iam-auth.mdx b/docs/documentation/platform/identities/gcp-iam-auth.mdx new file mode 100644 index 000000000..3d046c2e8 --- /dev/null +++ b/docs/documentation/platform/identities/gcp-iam-auth.mdx @@ -0,0 +1,146 @@ +--- +title: GCP IAM Auth +description: "Learn how to authenticate with Infisical Google Cloud Platform via IAM service accounts" +--- + +**GCP IAM Auth** is a GCP-native authentication method for IAM service accounts. + +## Concept + +At a high-level, Infisical authenticates an IAM service account by verifying its identity and checking that it meets specific requirements (e.g. it is an allowed service account) at the `/api/v1/auth/gcp-iam-auth/login` endpoint. If successful, +then Infisical returns a short-lived access token that can be used to make authenticated requests to the Infisical API. + +In GCP IAM Auth, the client generates a signed JWT using the `projects.serviceAccounts.signJwt` [API method](https://cloud.google.com/iam/docs/reference/credentials/rest/v1/projects.serviceAccounts/signJwt); this is done using the service account credentials from the GCP environment where the client is running. +The signed JWT is sent to Infisical afterwhich Infisical verifies the JWT and checks if the associated service account is allowed to authenticate with Infisical. If all is well, Infisical returns a short-lived access token that can be used to make authenticated requests to the Infisical API. + + +We recommend using one of Infisical's clients like SDKs or the Infisical Agent +to authenticate with Infisical using GCP IAM Auth as they handle the +authentication process including generating the signed JWT token. + +Also, note that Infisical needs network-level access to send requests to the Google Cloud API +as part of the GCP IAM Auth workflow. + + + +## Workflow + +In the following steps, we explore how to create and use identities for your workloads and applications on GCP to +access the Infisical API using the GCP IAM authentication method. + + + + To create an identity, head to your Organization Settings > Access Control > Machine Identities and press **Create identity**. + + ![identities organization](/images/platform/identities/identities-org.png) + + When creating an identity, you specify an organization level [role](/documentation/platform/role-based-access-controls) for it to assume; you can configure roles in Organization Settings > Access Control > Organization Roles. + + ![identities organization create](/images/platform/identities/identities-org-create.png) + + Now input a few details for your new identity. Here's some guidance for each field: + + - Name (required): A friendly name for the identity. + - Role (required): A role from the **Organization Roles** tab for the identity to assume. The organization role assigned will determine what organization level resources this identity can have access to. + + Once you've created an identity, you'll be prompted to configure the authentication method for it. Here, select **GCP IAM Auth**. + + TODO: add image + {/* ![identities create iam auth method](/images/platform/identities/identities-org-create-aws-iam-auth-method.png) */} + + Here's some more guidance on each field: + + - Allowed Service Account Emails: A comma-separated list of trusted IAM service account emails that are allowed to authenticate with Infisical; this could be something like `test@project.iam.gserviceaccount.com`, `12345-compute@developer.gserviceaccount.com`, etc. + - Allowed Projects: A comma-separated list of trusted GCP projects that the IAM service accounts must belong to authenticate with Infisical. + - Access Token TTL (default is `2592000` equivalent to 30 days): The lifetime for an acccess token in seconds. This value will be referenced at renewal time. + - Access Token Max TTL (default is `2592000` equivalent to 30 days): The maximum lifetime for an acccess token in seconds. This value will be referenced at renewal time. + - Access Token Max Number of Uses (default is `0`): The maximum number of times that an access token can be used; a value of `0` implies infinite number of uses. + - Access Token Trusted IPs: The IPs or CIDR ranges that access tokens can be used from. By default, each token is given the `0.0.0.0/0`, allowing usage from any network address. + + + To enable the identity to access project-level resources such as secrets within a specific project, you should add it to that project. + + To do this, head over to the project you want to add the identity to and go to Project Settings > Access Control > Machine Identities and press **Add identity**. + + Next, select the identity you want to add to the project and the project level role you want to allow it to assume. The project role assigned will determine what project level resources this identity can have access to. + + ![identities project](/images/platform/identities/identities-project.png) + + ![identities project create](/images/platform/identities/identities-project-create.png) + + + To access the Infisical API as the identity, you need to generate a signed JWT token using the `projects.serviceAccounts.signJwt` [API method](https://cloud.google.com/iam/docs/reference/credentials/rest/v1/projects.serviceAccounts/signJwt) and make a request to the `/api/v1/auth/gcp-iam-auth/login` endpoint containing the signed JWT token in exchange for an access token. + + We provide a few code examples below of how you can authenticate with Infisical to access the [Infisical API](/api-reference/overview/introduction). + + + + The following query construction provides a generic example of how you can generate a signed JWT token against the `projects.serviceAccounts.signJwt` API method. + + The shown example uses Node.js and the official [google-auth-library](https://github.com/googleapis/google-auth-library-nodejs#readme) package but you can use any language you wish. + + ```javascript + const { GoogleAuth } = require("google-auth-library"); + + const auth = new GoogleAuth({ + keyFile: serviceAccountKeyFile, // path to the service account JSON key file + scopes: "https://www.googleapis.com/auth/cloud-platform", + }); + + const client = await auth.getClient(); + const projectId = await auth.getProjectId(); + + const identityId = ""; + + const jwtPayload = { + sub: client.email, + aud: identityId, + }; + + const { data } = await client.request({ + url: `https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${client.email}:signJwt`, + method: "POST", + data: { payload: JSON.stringify(jwtPayload) }, + }); + + const jwt = data.signedJwt // send this jwt to Infisical in the next step + ``` + + #### Sample request + + ```bash Request + curl --location --request POST 'https://app.infisical.com/api/v1/auth/gcp-iam-auth/login' \ + --header 'Content-Type: application/x-www-form-urlencoded' \ + --data-urlencode 'identityId=...' \ + --data-urlencode 'jwt=...' + ``` + + #### Sample response + + ```bash Response + { + "accessToken": "...", + "expiresIn": 7200, + "accessTokenMaxTTL": 43244 + "tokenType": "Bearer" + } + ``` + + Next, you can use the access token to access the [Infisical API](/api-reference/overview/introduction) + + + + + We recommend using one of Infisical's clients like SDKs or the Infisical Agent to authenticate with Infisical using GCP IAM Auth as they handle the authentication process including generating the signed JWT token. + + + Each identity access token has a time-to-live (TLL) which you can infer from the response of the login operation; + the default TTL is `7200` seconds which can be adjusted. + If an identity access token expires, it can no longer authenticate with the Infisical API. In this case, + a new access token should be obtained by performing another login operation. + + + + diff --git a/docs/mint.json b/docs/mint.json index 0bb1ae9bf..1708f49f3 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -153,6 +153,7 @@ "documentation/platform/auth-methods/email-password", "documentation/platform/token", "documentation/platform/identities/universal-auth", + "documentation/platform/identities/gcp-iam-auth", "documentation/platform/mfa", { "group": "SSO", @@ -211,9 +212,7 @@ }, { "group": "Reference architectures", - "pages": [ - "self-hosting/reference-architectures/aws-ecs" - ] + "pages": ["self-hosting/reference-architectures/aws-ecs"] }, "self-hosting/ee", "self-hosting/faq" From 1d40d9e448f268482780810297287809c408ced0 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Tue, 7 May 2024 12:40:19 -0700 Subject: [PATCH 03/15] Begin frontend for GCP IAM Auth --- .../src/hooks/api/identities/constants.tsx | 3 +- frontend/src/hooks/api/identities/enums.tsx | 3 +- frontend/src/hooks/api/identities/index.tsx | 10 +- .../src/hooks/api/identities/mutations.tsx | 73 +++- frontend/src/hooks/api/identities/queries.tsx | 20 +- frontend/src/hooks/api/identities/types.ts | 60 +++- .../IdentityGcpIamAuthForm.tsx | 331 ++++++++++++++++++ 7 files changed, 479 insertions(+), 21 deletions(-) create mode 100644 frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityGcpIamAuthForm.tsx diff --git a/frontend/src/hooks/api/identities/constants.tsx b/frontend/src/hooks/api/identities/constants.tsx index 53fceb7d5..ff29df376 100644 --- a/frontend/src/hooks/api/identities/constants.tsx +++ b/frontend/src/hooks/api/identities/constants.tsx @@ -1,5 +1,6 @@ import { IdentityAuthMethod } from "./enums"; export const identityAuthToNameMap: { [I in IdentityAuthMethod]: string } = { - [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth" + [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth", + [IdentityAuthMethod.GCP_IAM_AUTH]: "GCP IAM Auth" }; diff --git a/frontend/src/hooks/api/identities/enums.tsx b/frontend/src/hooks/api/identities/enums.tsx index 524c3a20c..7991ed7db 100644 --- a/frontend/src/hooks/api/identities/enums.tsx +++ b/frontend/src/hooks/api/identities/enums.tsx @@ -1,3 +1,4 @@ export enum IdentityAuthMethod { - UNIVERSAL_AUTH = "universal-auth" + UNIVERSAL_AUTH = "universal-auth", + GCP_IAM_AUTH = "gcp-iam-auth" } diff --git a/frontend/src/hooks/api/identities/index.tsx b/frontend/src/hooks/api/identities/index.tsx index 684a00b6f..dba67af40 100644 --- a/frontend/src/hooks/api/identities/index.tsx +++ b/frontend/src/hooks/api/identities/index.tsx @@ -1,12 +1,16 @@ export { identityAuthToNameMap } from "./constants"; export { IdentityAuthMethod } from "./enums"; export { + useAddIdentityGcpIamAuth, useAddIdentityUniversalAuth, useCreateIdentity, useCreateIdentityUniversalAuthClientSecret, useDeleteIdentity, useRevokeIdentityUniversalAuthClientSecret, useUpdateIdentity, - useUpdateIdentityUniversalAuth -} from "./mutations"; -export { useGetIdentityUniversalAuth, useGetIdentityUniversalAuthClientSecrets } from "./queries"; + useUpdateIdentityGcpIamAuth, + useUpdateIdentityUniversalAuth} from "./mutations"; +export { + useGetIdentityGcpIamAuth, + useGetIdentityUniversalAuth, + useGetIdentityUniversalAuthClientSecrets} from "./queries"; diff --git a/frontend/src/hooks/api/identities/mutations.tsx b/frontend/src/hooks/api/identities/mutations.tsx index ec418659d..2f573f8d7 100644 --- a/frontend/src/hooks/api/identities/mutations.tsx +++ b/frontend/src/hooks/api/identities/mutations.tsx @@ -5,6 +5,7 @@ import { apiRequest } from "@app/config/request"; import { organizationKeys } from "../organization/queries"; import { identitiesKeys } from "./queries"; import { + AddIdentityGcpIamAuthDTO, AddIdentityUniversalAuthDTO, ClientSecretData, CreateIdentityDTO, @@ -13,10 +14,11 @@ import { DeleteIdentityDTO, DeleteIdentityUniversalAuthClientSecretDTO, Identity, + IdentityGcpIamAuth, IdentityUniversalAuth, UpdateIdentityDTO, - UpdateIdentityUniversalAuthDTO -} from "./types"; + UpdateIdentityGcpIamAuthDTO, + UpdateIdentityUniversalAuthDTO} from "./types"; export const useCreateIdentity = () => { const queryClient = useQueryClient(); @@ -169,3 +171,70 @@ export const useRevokeIdentityUniversalAuthClientSecret = () => { } }); }; + +export const useAddIdentityGcpIamAuth = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ + identityId, + allowedServiceAccounts, + allowedProjects, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + }) => { + const { + data: { identityGcpIamAuth } + } = await apiRequest.post<{ identityGcpIamAuth: IdentityGcpIamAuth }>( + `/api/v1/auth/gcp-iam-auth/identities/${identityId}`, + { + allowedServiceAccounts, + allowedProjects, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + } + ); + + return identityGcpIamAuth; + }, + onSuccess: (_, { organizationId }) => { + queryClient.invalidateQueries(organizationKeys.getOrgIdentityMemberships(organizationId)); + } + }); +}; + +export const useUpdateIdentityGcpIamAuth = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ + identityId, + allowedServiceAccounts, + allowedProjects, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + }) => { + const { + data: { identityGcpIamAuth } + } = await apiRequest.patch<{ identityGcpIamAuth: IdentityGcpIamAuth }>( + `/api/v1/auth/gcp-iam-auth/identities/${identityId}`, + { + allowedServiceAccounts, + allowedProjects, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + } + ); + return identityGcpIamAuth; + }, + onSuccess: (_, { organizationId }) => { + queryClient.invalidateQueries(organizationKeys.getOrgIdentityMemberships(organizationId)); + } + }); +}; diff --git a/frontend/src/hooks/api/identities/queries.tsx b/frontend/src/hooks/api/identities/queries.tsx index 92d2a432f..fee3b7f0e 100644 --- a/frontend/src/hooks/api/identities/queries.tsx +++ b/frontend/src/hooks/api/identities/queries.tsx @@ -2,13 +2,14 @@ import { useQuery } from "@tanstack/react-query"; import { apiRequest } from "@app/config/request"; -import { ClientSecretData, IdentityUniversalAuth } from "./types"; +import { ClientSecretData, IdentityGcpIamAuth,IdentityUniversalAuth } from "./types"; export const identitiesKeys = { getIdentityUniversalAuth: (identityId: string) => [{ identityId }, "identity-universal-auth"] as const, getIdentityUniversalAuthClientSecrets: (identityId: string) => - [{ identityId }, "identity-universal-auth-client-secrets"] as const + [{ identityId }, "identity-universal-auth-client-secrets"] as const, + getIdentityGcpIamAuth: (identityId: string) => [{ identityId }, "identity-gcp-iam-auth"] as const }; export const useGetIdentityUniversalAuth = (identityId: string) => { @@ -44,3 +45,18 @@ export const useGetIdentityUniversalAuthClientSecrets = (identityId: string) => } }); }; + +export const useGetIdentityGcpIamAuth = (identityId: string) => { + return useQuery({ + enabled: Boolean(identityId), + queryKey: identitiesKeys.getIdentityGcpIamAuth(identityId), + queryFn: async () => { + const { + data: { identityGcpIamAuth } + } = await apiRequest.get<{ identityGcpIamAuth: IdentityGcpIamAuth }>( + `/api/v1/auth/gcp-iam-auth/identities/${identityId}` + ); + return identityGcpIamAuth; + } + }); +}; diff --git a/frontend/src/hooks/api/identities/types.ts b/frontend/src/hooks/api/identities/types.ts index 4ac19c351..2222fdf56 100644 --- a/frontend/src/hooks/api/identities/types.ts +++ b/frontend/src/hooks/api/identities/types.ts @@ -38,19 +38,19 @@ export type IdentityMembership = { customRoleSlug: string; } & ( | { - isTemporary: false; - temporaryRange: null; - temporaryMode: null; - temporaryAccessEndTime: null; - temporaryAccessStartTime: null; - } + isTemporary: false; + temporaryRange: null; + temporaryMode: null; + temporaryAccessEndTime: null; + temporaryAccessStartTime: null; + } | { - isTemporary: true; - temporaryRange: string; - temporaryMode: string; - temporaryAccessEndTime: string; - temporaryAccessStartTime: string; - } + isTemporary: true; + temporaryRange: string; + temporaryMode: string; + temporaryAccessEndTime: string; + temporaryAccessStartTime: string; + } ) >; createdAt: string; @@ -113,6 +113,42 @@ export type UpdateIdentityUniversalAuthDTO = { }[]; }; +export type IdentityGcpIamAuth = { + identityId: string; + allowedServiceAccounts: string; + allowedProjects: string; + accessTokenTTL: number; + accessTokenMaxTTL: number; + accessTokenNumUsesLimit: number; + accessTokenTrustedIps: IdentityTrustedIp[]; +}; + +export type AddIdentityGcpIamAuthDTO = { + organizationId: string; + identityId: string; + allowedServiceAccounts: string; + allowedProjects: string; + accessTokenTTL: number; + accessTokenMaxTTL: number; + accessTokenNumUsesLimit: number; + accessTokenTrustedIps: { + ipAddress: string; + }[]; +}; + +export type UpdateIdentityGcpIamAuthDTO = { + organizationId: string; + identityId: string; + allowedServiceAccounts?: string; + allowedProjects?: string; + accessTokenTTL?: number; + accessTokenMaxTTL?: number; + accessTokenNumUsesLimit?: number; + accessTokenTrustedIps?: { + ipAddress: string; + }[]; +}; + export type CreateIdentityUniversalAuthClientSecretDTO = { identityId: string; description?: string; diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityGcpIamAuthForm.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityGcpIamAuthForm.tsx new file mode 100644 index 000000000..2c36e60cc --- /dev/null +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityGcpIamAuthForm.tsx @@ -0,0 +1,331 @@ +import { useEffect } from "react"; +import { Controller, useFieldArray, useForm } from "react-hook-form"; +import { faPlus, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { yupResolver } from "@hookform/resolvers/yup"; +import * as yup from "yup"; + +import { createNotification } from "@app/components/notifications"; +import { Button, FormControl, IconButton, Input } from "@app/components/v2"; +import { useOrganization, useSubscription } from "@app/context"; +import { + useAddIdentityGcpIamAuth, + useGetIdentityGcpIamAuth, + useUpdateIdentityGcpIamAuth +} from "@app/hooks/api"; +import { IdentityAuthMethod } from "@app/hooks/api/identities"; +import { IdentityTrustedIp } from "@app/hooks/api/identities/types"; +import { UsePopUpState } from "@app/hooks/usePopUp"; + +const schema = yup + .object({ + allowedServiceAccounts: yup.string(), + allowedProjects: yup.string(), + accessTokenTTL: yup.string().required("Access Token TTL is required"), + accessTokenMaxTTL: yup.string().required("Access Max Token TTL is required"), + accessTokenNumUsesLimit: yup.string().required("Access Token Max Number of Uses is required"), + accessTokenTrustedIps: yup + .array( + yup.object({ + ipAddress: yup.string().max(50).required().label("IP Address") + }) + ) + .min(1) + .required() + .label("Access Token Trusted IP") + }) + .required(); + +export type FormData = yup.InferType; + +type Props = { + handlePopUpOpen: (popUpName: keyof UsePopUpState<["upgradePlan"]>) => void; + handlePopUpToggle: ( + popUpName: keyof UsePopUpState<["identityAuthMethod"]>, + state?: boolean + ) => void; + identityAuthMethodData: { + identityId: string; + name: string; + authMethod?: IdentityAuthMethod; + }; +}; + +export const IdentityAwsIamAuthForm = ({ + handlePopUpOpen, + handlePopUpToggle, + identityAuthMethodData +}: Props) => { + const { currentOrg } = useOrganization(); + const orgId = currentOrg?.id || ""; + const { subscription } = useSubscription(); + + const { mutateAsync: addMutateAsync } = useAddIdentityGcpIamAuth(); + const { mutateAsync: updateMutateAsync } = useUpdateIdentityGcpIamAuth(); + + const { data } = useGetIdentityGcpIamAuth(identityAuthMethodData?.identityId ?? ""); + + const { + control, + handleSubmit, + reset, + formState: { isSubmitting } + } = useForm({ + resolver: yupResolver(schema), + defaultValues: { + allowedServiceAccounts: "", + allowedProjects: "", + accessTokenTTL: "2592000", + accessTokenMaxTTL: "2592000", + accessTokenNumUsesLimit: "0", + accessTokenTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }] + } + }); + + const { + fields: accessTokenTrustedIpsFields, + append: appendAccessTokenTrustedIp, + remove: removeAccessTokenTrustedIp + } = useFieldArray({ control, name: "accessTokenTrustedIps" }); + + useEffect(() => { + if (data) { + reset({ + allowedServiceAccounts: data.allowedServiceAccounts, + allowedProjects: data.allowedProjects, + accessTokenTTL: String(data.accessTokenTTL), + accessTokenMaxTTL: String(data.accessTokenMaxTTL), + accessTokenNumUsesLimit: String(data.accessTokenNumUsesLimit), + accessTokenTrustedIps: data.accessTokenTrustedIps.map( + ({ ipAddress, prefix }: IdentityTrustedIp) => { + return { + ipAddress: `${ipAddress}${prefix !== undefined ? `/${prefix}` : ""}` + }; + } + ) + }); + } else { + reset({ + allowedServiceAccounts: "", + allowedProjects: "", + accessTokenTTL: "2592000", + accessTokenMaxTTL: "2592000", + accessTokenNumUsesLimit: "0", + accessTokenTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }] + }); + } + }, [data]); + + const onFormSubmit = async ({ + allowedServiceAccounts, + allowedProjects, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + }: FormData) => { + try { + if (!identityAuthMethodData) return; + + if (data) { + await updateMutateAsync({ + organizationId: orgId, + allowedServiceAccounts, + allowedProjects, + identityId: identityAuthMethodData.identityId, + accessTokenTTL: Number(accessTokenTTL), + accessTokenMaxTTL: Number(accessTokenMaxTTL), + accessTokenNumUsesLimit: Number(accessTokenNumUsesLimit), + accessTokenTrustedIps + }); + } else { + await addMutateAsync({ + organizationId: orgId, + identityId: identityAuthMethodData.identityId, + allowedServiceAccounts: allowedServiceAccounts || "", + allowedProjects: allowedProjects || "", + accessTokenTTL: Number(accessTokenTTL), + accessTokenMaxTTL: Number(accessTokenMaxTTL), + accessTokenNumUsesLimit: Number(accessTokenNumUsesLimit), + accessTokenTrustedIps + }); + } + + handlePopUpToggle("identityAuthMethod", false); + + createNotification({ + text: `Successfully ${ + identityAuthMethodData?.authMethod ? "updated" : "configured" + } auth method`, + type: "success" + }); + + reset(); + } catch (err) { + createNotification({ + text: `Failed to ${identityAuthMethodData?.authMethod ? "update" : "configure"} identity`, + type: "error" + }); + } + }; + + return ( +
+ ( + + + + )} + /> + ( + + + + )} + /> + ( + + + + )} + /> + ( + + + + )} + /> + ( + + + + )} + /> + {accessTokenTrustedIpsFields.map(({ id }, index) => ( +
+ { + return ( + + { + if (subscription?.ipAllowlisting) { + field.onChange(e); + return; + } + + handlePopUpOpen("upgradePlan"); + }} + placeholder="123.456.789.0" + /> + + ); + }} + /> + { + if (subscription?.ipAllowlisting) { + removeAccessTokenTrustedIp(index); + return; + } + + handlePopUpOpen("upgradePlan"); + }} + size="lg" + colorSchema="danger" + variant="plain" + ariaLabel="update" + className="p-3" + > + + +
+ ))} +
+ +
+
+ + +
+ + ); +}; From ac469dbe4f98f3f995278ac9d60b1f65203ddd2f Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Tue, 7 May 2024 14:58:14 -0700 Subject: [PATCH 04/15] Update GCP auth docs --- ...=> 20240507213008_identity-gcp-iam-auth.ts} | 0 .../routes/v1/identity-gcp-iam-auth-router.ts | 5 +++-- .../identity-gcp-iam-auth-validators.ts | 14 ++++++++++++++ .../platform/identities/gcp-iam-auth.mdx | 3 +-- .../platform/identities/machine-identities.mdx | 5 +++-- ...entities-org-create-gcp-iam-auth-method.png | Bin 0 -> 543365 bytes .../IdentityAuthMethodModal.tsx | 13 ++++++++++++- .../IdentitySection/IdentityGcpIamAuthForm.tsx | 4 ++-- 8 files changed, 35 insertions(+), 9 deletions(-) rename backend/src/db/migrations/{20240507153350_identity-gcp-iam-auth.ts => 20240507213008_identity-gcp-iam-auth.ts} (100%) create mode 100644 backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-validators.ts create mode 100644 docs/images/platform/identities/identities-org-create-gcp-iam-auth-method.png diff --git a/backend/src/db/migrations/20240507153350_identity-gcp-iam-auth.ts b/backend/src/db/migrations/20240507213008_identity-gcp-iam-auth.ts similarity index 100% rename from backend/src/db/migrations/20240507153350_identity-gcp-iam-auth.ts rename to backend/src/db/migrations/20240507213008_identity-gcp-iam-auth.ts diff --git a/backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts b/backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts index e38767b0e..4a0032c02 100644 --- a/backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts +++ b/backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts @@ -6,6 +6,7 @@ import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { AuthMode } from "@app/services/auth/auth-type"; import { TIdentityTrustedIp } from "@app/services/identity/identity-types"; +import { validateGcpIamAuthField } from "@app/services/identity-gcp-iam-auth/identity-gcp-iam-auth-validators"; export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvider) => { server.route({ @@ -73,8 +74,8 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide identityId: z.string().trim() }), body: z.object({ - allowedServiceAccounts: z.string(), // TODO: better validation - allowedProjects: z.string(), // TODO: better validation + allowedServiceAccounts: validateGcpIamAuthField, + allowedProjects: validateGcpIamAuthField, accessTokenTrustedIps: z .object({ ipAddress: z.string().trim() diff --git a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-validators.ts b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-validators.ts new file mode 100644 index 000000000..a581ba9cc --- /dev/null +++ b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-validators.ts @@ -0,0 +1,14 @@ +import { z } from "zod"; + +export const validateGcpIamAuthField = z + .string() + .trim() + .default("") + .transform((data) => { + if (data === "") return ""; + // Trim each ID and join with ', ' to ensure formatting + return data + .split(",") + .map((id) => id.trim()) + .join(", "); + }); diff --git a/docs/documentation/platform/identities/gcp-iam-auth.mdx b/docs/documentation/platform/identities/gcp-iam-auth.mdx index 3d046c2e8..cf46e36b0 100644 --- a/docs/documentation/platform/identities/gcp-iam-auth.mdx +++ b/docs/documentation/platform/identities/gcp-iam-auth.mdx @@ -45,8 +45,7 @@ access the Infisical API using the GCP IAM authentication method. Once you've created an identity, you'll be prompted to configure the authentication method for it. Here, select **GCP IAM Auth**. - TODO: add image - {/* ![identities create iam auth method](/images/platform/identities/identities-org-create-aws-iam-auth-method.png) */} + ![identities create gcp auth method](/images/platform/identities/identities-org-create-gcp-iam-auth-method.png) Here's some more guidance on each field: diff --git a/docs/documentation/platform/identities/machine-identities.mdx b/docs/documentation/platform/identities/machine-identities.mdx index 9168cb230..e4b93053c 100644 --- a/docs/documentation/platform/identities/machine-identities.mdx +++ b/docs/documentation/platform/identities/machine-identities.mdx @@ -7,7 +7,7 @@ description: "Learn how to use Machine Identities to programmatically interact w An Infisical machine identity is an entity that represents a workload or application that require access to various resources in Infisical. This is conceptually similar to an IAM user in AWS or service account in Google Cloud Platform (GCP). -Each identity must authenticate using a supported authentication method like [Universal Auth](/documentation/platform/identities/universal-auth) or [AWS IAM Auth](/documentation/platform/identities/aws-iam-auth) to get back a short-lived access token to be used in subsequent requests. +Each identity must authenticate with the Infisical API using a supported authentication method like [Universal Auth](/documentation/platform/identities/universal-auth), [AWS IAM Auth](/documentation/platform/identities/aws-iam-auth), or [GCP IAM Auth](/documentation/platform/identities/gcp-iam-auth) to get back a short-lived access token to be used in subsequent requests. ![organization identities](/images/platform/organization/organization-machine-identities.png) @@ -21,7 +21,7 @@ Key Features: A typical workflow for using identities consists of four steps: 1. Creating the identity with a name and [role](/documentation/platform/role-based-access-controls) in Organization Access Control > Machine Identities. - This step also involves configuring an authentication method for it such as [Universal Auth](/documentation/platform/identities/universal-auth) or [AWS IAM Auth](/documentation/platform/identities/aws-iam-auth). + This step also involves configuring an authentication method for it. 2. Adding the identity to the project(s) you want it to have access to. 3. Authenticating the identity with the Infisical API based on the configured authentication method on it and receiving a short-lived access token back. 4. Authenticating subsequent requests with the Infisical API using the short-lived access token. @@ -39,6 +39,7 @@ To interact with various resources in Infisical, Machine Identities are able to - [Universal Auth](/documentation/platform/identities/universal-auth): A platform-agnostic authentication method that can be configured on an identity suitable to authenticate from any platform/environment. - [AWS IAM Auth](/documentation/platform/identities/aws-iam-auth): An AWS-native authentication method for IAM principals like EC2 instances or Lambda functions to authenticate with Infisical. +- [GCP IAM Auth](/documentation/platform/identities/gcp-iam-auth): A GCP-native authentication method for IAM service accounts to authenticate with Infisical. ## FAQ diff --git a/docs/images/platform/identities/identities-org-create-gcp-iam-auth-method.png b/docs/images/platform/identities/identities-org-create-gcp-iam-auth-method.png new file mode 100644 index 0000000000000000000000000000000000000000..67d9068512a3b89f54ee2fa35cd025080516637d GIT binary patch literal 543365 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 xUKbN(Y^5tVRVM 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
3sjz4pT(vG^QV;7YsQ)z$T}K)_CGH-=kN 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

}Fi*{pRE^MGBz3V3cWIj=7%s$R7tZ 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ⅇGM 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

R-*n)<(|mWliU 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� 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

MRkR7%dSQ*P2{*E>La3wYTzx2upf~z zu+au&>nH-rqsqG*a47zrQExWl$&J5U7C!Y8d4tqkJ=kqz(ks@b%=L{etq^~RmBR|H z6(-d{!x(DAYci6Ntpv|$?hSte7RG(HzS4}I8k`Z|z)9oJx8rq;U3j|Q4q2sx@-0p9 z7M+zCg``(!0XB2xh6YZ+E^ zZIwkiP&XsAw&585v*<@#g3~*Pr&k=o$u=VddvRnC7#cW9^aOUESjzgaE~uDsUk)C7 zfzq91$?S!6Tpg}%SjdQM%p#b5K8;&9xx6rMmI!8_CFjY>rm_kxW&GxvEJpbgwVk~3 z(kmop$A~@+XAAliD9PW%*EC`?5Qqk;a-SRQhYo%@FS8q>&AvX<^fpE92OVs<-gpky ztO^?4--5p#klo(V-4nRl=gx4|*v=kkd|~EWD=QE|^v)Dg?`Jkr{cFl5IS#*`@TFH0 zuk6cC(K=bZtgTJ1oV9V&Dol24T}X@Xp^+JH9DSTY#eF<3-i@gGu=3)%x}x#0g;{ft zu{wB2V#0-Dqr*G*5}(`wT^_3zU2Nt_nnm+dC+mwO#l9DVp+DW!I~^4*zVF5h%oql& zrM5KuxrGUT5dcNd4eaUSsb);gdf{1^0Pf@6Jx+15yST+|nhlk!lM+^{9v3;AnS7m= zOYFJ@>fl)KY4gdMs78Fy3KStD;>)(QI{ja?y>(QSTN^em!ypJ!QVP;4D5X-;At53l zBApTf4kal$pdbPQBBeAUC7nYLA)+GPIdlyST{AHAJ;TxS9?yH$x4w1W-|r9CLIvh| z?tRB~U-z~5rg*o*;{&s7IWCI(D-})iGbqaq1{LA>s!3TcbDyC6}zyS;UEdiwf z>>B>>bQ*GelI54$8%=_IXXkoY4OZj^^FXZg)+*nZC|9V$UE*s>K9gRpH;YzM?m zP)hBP_LCHHQ43s*0nT)5JG=5yU&nyhgKM%r*Cn0hmQPEWSA0}t92|N{ zuqcnZAh11RD;V5+RtB0i(Ld&p`{j(i?L&(FB%Q!Hi0Hb(4W4$^(!*+9wXnGhXvL66 z{oLzH?+><(9CcuiyD(wKC3aijDYD_6q7 z5igW3Jc_?l3{%)xRMr{YUE0U-bcEfkgVwAe)Kjx5g85#;7-dPPOU~{;c3VAtJH;v` z?T7jo;@z#S!$}pE!vm#7=Lal@<=0|5=FFB^wly*&*Yu6;81|J8-JBcrnX3k$Ow_c# zT|8uN|2~#2oWbk^oEYI4^`6~H8avCHWx6Jb(Ae*doErOfek9Uewpk~fqFh=g(GL~8 z7TZO1=rg=hC9tAgc6h0N$hB0y%28V&! zZA2rD&TOh{6Xnw34IU4=O6$C0HS{MtIyL!ekpAoP-JjJR;xtBt+s78@uQ)8Ar0hs0 z63-p^?o)3qe_;`}4`b1tt8_apUsdizZC1bCnt30;( z!S>U^ynZI+;o;MdzAu2&K(-6dGm`_it#MmDymZnMG{~RAd@{P8ToVi2G8Q(~)Xk8H>hz^11>^FZ5rxhx3Awc7&P1BC>?$;F)X!UwSS}qXT`KdFe@*hf zC0pG}t9g3$bGf$t^je=(mGGT7p-hZ#0$K)R_(s`!`-iX}rpJj2h$7JW9T#wxe)I z>*Ls%;RsNT&L6@x*_8tU-X!UV}FzI zTGX>;IA110aiQggm8;!7g$B*tP5(Q(h*IF}5<6IEMo)8&74S?uWS~_)7u*m$N1Us) zTC@u|^LXAb*Px%1>N+^$`C0|5aqDnkF;u7aaB9Qj0Y%bq(QvtfG-5ha1)*jsTC93D z5aPGuC-5A4%N?a$RQ@g-J!{Q&knuv-alBJWS;MeJwBiLgq7RT}-eX|jpEc?z)LL3t zSWpt#M<1q0e5iP3K3*Alaz9ZOW99#yZp0tvfZunFlM~IMdF)saF(K*8?PFF{EZX$z zGLb*7CK`*B&^T7{P~8Id`eD-^9EWR|9#yrhHWM^?qiwSB_s#$p^e7ufX6*fe7+FE* z@6JEJI#2)%*&V1Q(OtKlIYN&Q-iO#Je2j?(F1+edV^_~!-%(h@vG)S!?yqy)FS1r$ zXZS&#Mhy~OKQhpl7Z2=L!WXHMmSm*b}Q5bRV(V-__^ zfw&g!H{8e1fP3@?G&fFelT34a8J z?DAN3euq69Yjh9U85PhJT2!19Mn2BUqOx1?R=EjlcyzmnVb?zDYyGtiWXzpU2`t}^ z42|?+pp+9IN!k`3TT|~_XWdgI$#(?R9H?aoKoSy@qu|0-)Z3E>gaM;eHbLG+qp!>B z7>-j`%w>FYM+^4L%q1jh>b{!7%dQohylwsDB~ZJ%ZqHCHz#Un}u1vu~L9gD?d9T(x z1IE<*Sc*|I3R=V~K2c>GHpXiX#jIaF#?iKyve`X-)Fc(doRxK@&1Vk#5f|}E8MpC1 z9I(*9IMqSXWBD^+wo?QovVfWVPvO4=V-Gt6E`qVUEXC3fNQ*wed>9Q^EfNd@WUKW= z69iatXStBY!jBGx23O44yJx_5qhr^3Qzz&lPwF&`{b`RTKb8zK9R`^ZJa4jrgf+@k z)sY;Hc_j$m!heP~RW~N*Ag~es)oQU&O4TB+|Dz6UY)F$ozc?5$QiBf3k*;7m_?L-(S__2p zS(If4V{HQq17rtHa(O~sD_(57DC(&NyGxQp)u3uwKe;zt|Hn~fgL^e$_0Jt={hFQXcR{dQ=<5&lE??*=k8lYP|+9XW@dq6GTOKJ*$NzC0E5QpT5gfWe~W0`s%9)P2}b9 zz9WaR%7VG~usDs^8dW_#n$WvRrg==(>)*Z0R6HGZ_yl%+=e|b0wML=+)DWJnnZ7p# zL|!hmzN*_!4Dnpd4wKpy!%a=4AvYzYzt`TX?qpn=ogTjpSfYN|Ycy+ctQul%v|Z}A z9<`o`B1N0=4ySYN0TcG0udl}dyz`>>dnDUN(Z2t~QxED6i`-TGJyk9214qdUhPo}8 zE0p+BzZe+vf(>5FCfGV4x-20q_7nc|f}>vivc&=A!@?Q0o$MQwj{`!w7Fnf#xEZ*% z6Y{Gueybemo8}BwRltyyPVBaZF<3ZCzl@}amwa9CIs15oxTeNtYO3i)-pe9N48LhZ z-6tcm9l4@PYPFgrGXsT&`3F!ad<<%a`_#hFX}Up4+pha*t<9Whunil^`VuKskit8-p>%$4Oc&P_p}`WE-!Hykl>uSu${D1Z6xl7 ze)uiD%=&wzhQ{j%&35_)-N`81tb5|_NAD2!SA6skkCtnB)t>sbEGo$$YCRC)ckd@X z@yta;XRF6ay1<`Jf9Tuyd#b{qV7J7_-&p0gJ^1OAalNlEY9sx2q2M_)o)rzmv2ne- z{eX85vxIw09V>7q^kPNoP!Zyd@x5)|HYOBJ>aP{Ixd`OOa0}+42NWQjYqS2y!}6ET z*jr#XepS)&2R$s$C&f)Kju$C5W)&q{A3n)H3{9OJct#(2rFcI)aBHAS4OPtCDxby+ z{1yU6FxD#j&IsXCO2%~rd_5yZfhUvtAg@ZMPEdAusM=*wS8A?rc0TZ+tgI|V^9UGG z8abLeR-M6J2*6#tL@S#%4SsTYV`z-m_v%OL;8MkHUCK?Mv_-Xd8hiUJ42DBm<)!hJ z?~j!Jp9Kpzi;vWoFB_r4G`XAV9YJB)LDRq@Ec0{^f4^dLT^#;j_$TBFJDePia~6#8Bt z$=>kpK^5bONZf4)V-=@ZjU2$(gWpmYUE8pI5 zP0T!GpjOZl3xKD1V2?cEnUL}b2V$?C;U1fkF0M02!lBQq%P&!~J5E+}4~~T?^LW@d1a8VrnOZh+{l|KLmdQ_? z{(uE#emVU-=#p)opkNtlbRe&U`Bj6&ca9B2y)_Iuai1|M7X}-0b7ROrL&~w$Uu$!M zw<#x*$2@e1f}SXVp+PsqZY(=Y)?H|ypJG4bP~o}#$wCE$%WS>8f1Ul>@e5+g@&5jp zytsJxPdd~`67z>go3m}k$~M-gnaY($hi0GF3jR>JgyV@97|V5tZ8T-+8;bx zC8xdiO{}J`Dp{9%k?>cIw^utA0BwkeQGlRyHaX=JZ|8Z+=u6Bjd)ijVq3qf8NFJ&HzvvWI02CcU>w5>n zBGmknbgm_;6j+=6{r%cw;=RN?ZJi7!Bz-|o%%zPX;v}@JXu=+90$E9J7e zPzG2eYmyLqn>HZ9V+HSy+@0b`D`*2AfyCRm{{4~ivEuI@C9GVaHj0tRF5 zG^0r>{Ub%EtE6@+#-00N?0&|v3@_}$>r`a|%aBAF`Q(8uftob_EHiq~l+>q+3 z(OYaqaA=rSeR$YcR$o1)LaO~K9im1q%WQvV0Y$2V;4@nnK!;RcuWi64R|v7`>FIBA zw227`?y&C)_e;I<3MQegTwtssKgm%T?*aJF0QeI!%DUkb%7QLR-`(l4URZGr|7EH> zsa9WR zkntD9F7;SpW$>F;juDQ6ZXgBIq|F2J@o>kWw||Yk@+AsiF_w z;Z*0;b@@%7V)oZPq?o)&TQf2;P?Jmb@+LA0tb=hEV}5iniB8PTS*Gi8?n7v!oPmTa zb~EO7+Eef+x&w#?jQs4^upHwcbr}P{IaU+{={0nksO3r8CIjI($o?r|-)9CMD({ee z!?YvtEt>i~3yV9GS6I)$Zt`o=QsUFZq~V<%oz*nwod`FWnau}>-? zZo^6X(%}^~dL-qy0)+Y|8;UabqE;Dtr{QgKo;?<7oLGj5)0$8F=GGYX+xQ|o@J+}m zDG+W)>pJ=kQ2ndt2x0Y(60#n>E+93B;OMA zV<=hn=#Db#SQz`{9eY$2WPL-M@QYl4tgc7Agx}FK_9E7uj=&H(;49;m%%IBb4ov#GVe;1(=tJ?E*uO}Inu`6^+ z_n^9PPZd$on#pHa`PGLTiyE)-Y*)K?uL=+HeKGrVc_ht()}SW8lHvo~+m4PSVzEk7 zP=!f?9s5! z-&(@j%$V&%3G}Rs*X}fCWrr64CA>^;n^`8g?3s{;`L4{4Fj9-#G<@t$?U$m)k}oA| z_keQYrAsT;|qCQRmI8)65z^LGOBLvRSq>XDukrBP!K@%CFAAMzc#LY_F?R$(V+>dn3BwoE^A4* z@@BkQe_TPO#c1j+A9vdW3v*DZu;o3Bn85W5@@$h4ywR0G2td!?uG{$aawgWrSUU_@$$ohQFq~X%| zF4#I#_8I6fV<#?)g_}vCJGl$jK9-h)puUt@9NVZA)N{j$30aQ_3gY5~R8yz@IS=51 zQS%s#`?&*T^P7zsqKN?6)Hbe6t?WF81Ej>!M?w7&@)k{k`a|YaZ}0&qg`$Uv6AL> z@v&=SKOEFLVST3OmRbzLNIx{2`1*fRfjW1kN-!vF53;(cFt%cjs<%-GA+vO3N6{S6 z$k(rLO;q>;1^=N2KBSD#1Kh*I-V4W_T=qpq&ZS*Tz9v4sh}b7uwF(;uk?U+^C0-M2 zW1J4Qj~Xl`7N1Z#b;Nbo?u~V;w-xbFutQy|hpOTfTzbJ?BK$#W_NPXf zB-i)_BI+#23KHq!y}w4z8ppl0IN@y5*6+L?arat*CF9i%4KEnYmI7=rB-NEea_=+e5O8CI-Pooxc=5X4}Ev7 ztNRzFzPEE6AZI9z!RE_Ryu;$&d-+zn`o50OR`r%CCM#Rq6M!A!6s*pPBKFq~V9d>A zL_WXTskDMKc!;qDKn%wne{H&RcY=9ft^8q{pym|cmqq*w9;HVJh z1vW6-n^1h|J3c)1#c&WTYEdt zxnI4)Uz^7}x6Pi~j*y>qh-cQrOziB$BqqOC*Q#IcRGdP%#s^Xq$e9iChXgicoIm3m z-go?H!d~CQxRTb_!*xBSF1VTr&IIf&JXc@8!9QBP;mx{jEpifJHU%CMJ=|ORU@T(@ z?&InmvswK(grMdR26ygm>u+ekTqp$E3c^X0y2w{gP`*|bOMDrRenomDU{b|RR`5KC zxkuz>@I14bom`K+#IOnq!`YwxD*2T+j}vsz1(odJ zMME;3Cx@>G!JCuGJbA%4&jC5q|Mpa>A4rk4_a&GyvmJ4k6g5bwX(6D&{a=En6_If&~=pyL|xw zFA=g8ARL9Kr?chKD}~tgtFD#~4(gQ)^*Ud5_v9SMXJ`QM7>`1+z}&{t#!>vWQBj74 zxARR1|8XI60{xXj{rY>Z_N4BA6AV%py@74y0C!>EFtX$=d~qP%$Pekten_^OfJ$HU3VN$uLAQHjLoW!=F-&v%z3GAbt5`sJr& zgoWq#+J`Z>Yc+#w1mLzbsKElmt+Q^BF`$Th7W31RWN*~gIaN2vTx4W)uTKvGO;#2M}J(7I2#;n?8+r!ntC!?j8+C?7)`ZW}}k0efVY*6x3;~}Q7%2d%LaFT*0&%9Jg zL<`XWZlXr(dG_i)%1@~8*4Z6@x{59y1Y^BczeaHuI$EUq@u~<43KFFYfNqNTv%oia3s}z?NBnD^jCrEDE*0 zmnZ#0&vXj>mL#VNs*l}uWOf>>w0B|r_{i&tJm^dels|f|NI!yo!!eFWPUadrm2cMr z6=sRW=0mblHtQa157hXw`|9|k;JONub)B59v%xQe?|M9sE5f`Nl-qHa5U?|pn?mq( zWdvVZx@UB=$5Vpr$ZZ^;R%4P)MB~}2u6E6Hab3Cl{bwJ}bCrzvT%N)dE6k#CX69|J zlk_tWy_ux5zcPTmDq#19_{uY2EPARj<`cw_<7iRhk&Uk}O|fI1CU-n+ix;4_;inf) zs?*AgyKZ(@GZNpDtNe&R_R(h{3!uXnDk_qrKIrAaa|d~COJaj}^`>Naqp+fO+)BeK zDGBbP4&%jIWIBs08yoil;0zF&Gc4cRQa@e#V`A zgN_rr6V!Jw{On^4FOcGbWElf+RSGf&af&iEt`Y|EI=pWi6@cI8Uj#Ed*dd0qD<$q|!Sv`wA?h_P6OP*mT*#K3*Aog`Bu zNm6s`$NJ=wl&HA)N?zQUzNh=+L3s2sYS|qFUb)ZodxZ_*M5dTsDNpW(JKz^TksE*E9}y(LJUxI zd0UAyN4rG#O%X~kO_Q$z?P2G`=VU}hXT^17gG{L|vrSX|*YchMA^rUo7ol^hTy|Sg z80~y99s)wZB@Cs#;3o25EYgev)lpl z1u=}WW}?<3{y-~&{^GUpM)+rydkal3h*6zu5;v5SR9jS;`|nN_HB_#@Nv`$C9IM8B zkL7Vtr{~oJnxX>9ZxK@GU0{y!l)bSJ<1PMNJN}ckt33^b-5HayEAr5qM`72Lu7E&j zA2>O(*e%gr#I;@5qC?kJoY-^Q&RSnOL;Hr7oW?a)-qfCC9E-saFhixrvmti?_Lb}5 z4#8ufv990ygV&1}G6Uh3Zkrsxm-N;FZ=oeFMC&NNp(a?aE?XR=Jy2$~e3|jhMzDu? zh~&s(N(-2R(d5K7LQOdKO`~(97^k@muWi4$)T!f&92qa{f5H_2r^vl+^4XC#3Ql?) zPt?6rUKf*^OxFb8ipM3y#oKy8jj9w)ru_r{0{VY`nRa~UAe$F$(@1Qw{3eapxKP90 zV!Y0?3`v^~C&gH6kHgP3RS$#!Rc)6CxV8{6HnjNiWkk%`gV5D9N!=^rb$-@BXQ$`v zCp3ep46t_q`h&}hpRMRG)f`(wYc`YLnVuN>og&Xvw7|3Bus_&v!@Nguj<_zH-4J;>ETO%A{oek|fXU+qWBbMN0+o*oH!L2T7N&=KUqm+-A8L)p0NWr}IBMGh7XUw^|dA}cA0W}>RklL^~$nq zr%}txQC`YqemsY=VBB5qrxf79E7xz`T5@0GS32xL5Ff8~yUqmK5ipO&W=yHATV3M& z=J>q9rv|#-kVyB`)9vcUg++_Z>Z;px@fC@Uro@FkdtTn6-$lOprn~?y-;TmHH`nzs zKb&KZ*HGA@ytTpbU;RQc3(31G?bPh0&LSx(rn)NAR8AW&?k;B*>3%kXcKa8E0njm{ z@0F}~s;BN+5%YKLtEWh6KkLk1R3zlFecy2VLAtx6X%TJ`@?K+0;<`W=sdbih(&@-j z1hK?L>kJU?#>k^7_xH@FKdigE2K&1#cD7dUT4k%NfN`6dwUV`N@vyh|H|yXq-$h2V*hBBJ)NIZ$SQUB<~H$kga=iz*WNA#g*` zgDjA4(c8x6tErZR`|KArQDHILk>>**UJ{qzLJyA9nEPd~*AT8Q)%OffNiv?|KJsf^ zc|Tx$A&#D5;^1?YH(L~D$bij!xA@P%W<3e)J|HRQrQKd%;3-o$=<;apMx(EoAs%Fy z9U2&HGwW^JWdfc9xmpZM)!gl^Y*ffU- zc&UoCcN5AqBu8Z)(uN(p%~R&81N{!9QcmrZY0vl$zyamp(tA+M;l8}N==e>6D~N*khA7}McpWvV8Vt}20r z4!EMSJS`6I<#4t$|K)V20(S4nwkBWOFg7sQ!O>fB4b0DHhH^ZEF$#dO1@5g&0>9a$ z`^m`^xYZeG*k~FahYUO3Nt8z`eOQMBK(|!}Bu9p}gT1M?9J} zjO7$(WH)jyNk6(=p+*cDteZE_TXxbq%f|3TX!H`;4sGDUYZ@+W+Oy0&m$%8w^6+w2 zgb(R_-cu&$Y--IrRIl(Y7nR%;Yx0G;lUXDi+kNb5(f}EkziT%BSiLm-D0lwreTv@) z8fhZHY7V`$&=FAM-slpKxr?;Y+)7xNHMbM17THcn^>?P(?j@&G(87zg3qH~0Hv17S0?hzt_5$o`l*OS7Qb#V=|Xj&%k63$)oB=r6{@i7R!g^5>)Xs)D(-11 zR0ip1<*AK158gW6RzSqV2O#vALGaeqyx9EylEM*xUO;rBgbx-ck|RNNwomvXW#bL< znxzLAw>Fn_+JAZ+*;9Za|MsA=^#B7>Bsy)017^L^5)Y4icmdW?_*GRwjfv{OGeK7J z3Vm@q`Nw7CYuCf&*dz!NQ4395BLxHH2k7}Nos{0vQ%(E>HKim+FWSQ!p~h<7r^$fD zU?U=^PYu-|Ihw7$Px|}f{Coia##FJtn`RPknnb5k9FQ3kWe3Hd9A1JfKBk#tfJm@b zjRCCM$43cM(obBLxx?kz4jPtR%Pspv6Hb~JqP|Hw!@DOgEh|Y-PaXEZJR6rs@t$%Sw`T#v2tDmP)KI=>d+Xy14Q}Ih{LI;!0M*u* z1@|oVamRdh`-%(Q4NJA7^nW-=fAN6gJ3}X+AgE~CIu<@h4g=P24rn^0cWtQfkr+nR z&6Es?s$^2g{xJwo0So?~@Na&$f}aG}pW(uE0cb)o_sI)x($&6aR|h-U&EanS;y?9W z_pL!9dD$e3NXma+p(lR^d;8! zHyg^G00yB`q(GqUzwbQ2CqK)}Y5Te-$&}%rR7(JvM|B`b{5Mj$A3v4#qEX*N1fFoT zOqOIy2e87#g2x97gk%9pB$n?RDkDB7RipzaqZ08{_$V1_G}XIN*P?)cpv(e(*bS$B z3Lmt8G?DyNlujaiw(7Jo${)SsE|*wNtU3PxwaST&)m%cOY2WO4ke za{p#wQeQO6RNtpF9Ev>vg88%_I!n!@G0b3dJu%>>&=ObKDdx0 z3tvM65a9G|`M%U+8^CikDFUqJ%jiUQeD=#ZLr`DzKV%%*18eF|dSZPwdzwA^df};P zx8a0RJPBMvWpkY%F>5e?9%9?!v2mOqwD_jYixgFGVYP+}sDAH&s2n=hB{+o-%h8c#Mw2^&H)iDlqwSOJShQK^k{g!GVZjP)|lcYb|-`B8!ynU!QVZAZI z8lOQR&oQqDR4YkrL+PZx5GCT9JOW=Z*0WQ76pz@ue*p4jp8x6NCH+?-6W$I<>Pvqc ztj>8&EZ?`h!E6>dQ!tfFazGHSlW4G-01 z!y4fZT4&qvzG{%{FymU@`>zJ*G1qP|C(9vI|A;GRJ%0-1z>*P z)rWilD`C({JP4qCNL<92u-(Zt85w{V9p(KdI--w4FcxHbZ-)dmG6D&k*dNfF+|ay* z&tzs3=en87|0n-+CWb)E&jl4#Fw&ik=cg^sfQ)QSuHIoTARkI7{u##3Ad!NC#JHkl zKCcxg=2EAecd+xv5JMz08P#irT0PtfY7wDAuVBil}_vwueQN?oLZtJL=RJ-Ws(c=6Y?b#(d3}gV$RBZdCnOeZ%~84>3bIxAV!{8O#0&xCs5hT3nieAN*L#`k3Oz7tcxyx%iJ| z>gE4hrU1PAVTtc|yi3EYZ2xr zL3lMM2yakO9`3V=pT&I2#5YD;z)*47_TD0%9_f$rpA7jQ!khG{?9S6Ls!zH0;`<+9 zr+rE(47Gla$i-;x2->e@|Su;1oiA06TtY?T<$k zH-R#q_wSRRTmW>-|C7v<@5bAfcy1L0)yQal^`B` zv9MQ^bu{{)D*JLw?zK1CzSWto6@&y010Agf!39t8?aNT$E?y||7q9w77RG@Nmi7e_ zVEh(CQus7YYawYFZYNliS3$5{87KwhRg_bRC78S1sSRj{g>HSRmZD(jX$t8&7f zIrt3vJ2=DtP`4$xlKd>1#kkIC(Ct~1KQ7u^;6+1VZO_GH(*0Lm_%-Z>ncJyJE=z|EVSt0;3k;b$mZ|`}virrd*$mQ#j|@JgrLG4O3{u5z{V&b_Iz>eIRQ0y$3&<0}6RJQ=B;<&HQKa zJ@6f9prtgGseFb<$A31{V74^iH!Vs~8UUTM`sUq0oDbLef+9!Ip1m+>T+x?=q8t;c zue!7Pk})K!w*mel4p|&)F_r>Af~j)=ZGg$`JjH%0z)e-wF(wqhnSve@R`Jv;o|)KH&Y^q0tj9P{@YqC14MMkPHDP&QRkQTj<1m&IbMt zCUxqZy%as$@ZB?brm*9LDdgBF8i{G9#v9@akm?0n@w?@oYy9?6f4=rE0M6llcAI!K z{Fh~x1v;oM4;G>HMg+L%^cO$@9X4z_GO`Ksfrv3AX3h?3f@_pOV{8C7T_E;r6nOYV zvh7)Zu-W8k|DZ-vd=K*KG0lO10N)Me6HYblD#_BZvCpSg^8mb%va_v?<+CWB*|<*^ z0Lb5QW?d{O?fKW=|LaKuXuduPXf`<=JtvUJOTu?B{XL`C3(ow+ zfLFN8`bKN?`5ot%?MsxhNRFjHz<1UCZUA}ky1_|X#|o5*lrOF<_zz?Th!CxlGI817 zHn=W*veYW9D62d>J8Mp)OwwZ;ZlwzEiytG~Dt_$X&>1@MlAOtC{W~G;ZiP`mk^H>d zhTI4@rk^w2*mnnV&aLG;B6H4*jue9 z`!r{o*l&vky!+QEzzHu-_u;$U|Ey#&{|R@06P5-nWBKXM|2HA~nEOdT0HE(NHT%d6Bbue@hul8c`UL|HJ#qMtmnfe-Y3`b_Kk842DTGR&~Ro?rk>M#ZY zdi612+$G^O<=+K8oR8-~`RU#ILJW*gUyc_V*Gh(VNn?KSg`S7^mK&}xN1^B6qI-!L zqNAf7%+1HcBQgs3o23;}RKKvWxXAOx`DpmY{_t!hW?R?*`YfBs z*lwEhKtSePiC1x6^F9K)uB5E&LURa5ujG~bTb8Y_!w|m61{?|#+BW)%2H2LkhDM_$ zVUVFh;SVaKe@#62Y!Gl7$UX?!VIiXb_zz&olkIui^{c=t$Ij@<#C&_R1g;DSJCSFW;K5ez0yqAGx5C|LL>PPZ767(GX0M9>jxpEHXC4=3JZ0NM7K7eC@ zGsVyv(wl)2elvkx@XZA#2WRtAr`MF7whuA4c|bVaVX90!1#v9dkw&VxHr0WKx?1(f z`}d&U&Q6M)3O3<=wAL`|W>ZkwAq>T^EJ`y>Ldr zyV9Z23cPaKEzcwTtMNURik-Tu+161p0QusSdWbxpU)6mO@^*E6ZJ5 zTW^_IS@&J?sn>Kyzo^1JzmcD%cou+5#qMO^&3nr7_i!u6?|k8NPG7q6+y8Wzp2XWS zzMLw`Lf(WuKN2zttso3&0QLabinGv7DQ{Pw^;a4a4B+h>%CZ-ONWPdId>(5col%fI zHCgk@-W%Y2UZ}oqgs)|b6XFMeZvfz#{Ri;ujgj8`9F6)MGTZQ7jXG={0YgBsIv*OK zxZ`~*;{o|8#K_39m$$dEhb{~mLv$M0cIcq5utd4IXc07pH40HLvUPVCaSsmI5Tj(3 ze!ZJPjoOt|+wL7~Zhnrth%I~6a(al<+;d`DHac|HjUW)6f63POINKuTKH5QLwD{@3 z-6`BAS1NwXbd0NVQCNf{a4&iw6%o<7HNg~M>tJlWFKSB!aF9@(n+w9C`f zOULrw>wY>`p=&DsxZVUUfI_b{6RLH|>?e)&BG$WbNK>4_dHM09-s-ejO$v0{R#d01 ze${o+{o)VO^hw(UzoU#(U`8b%JGR{K`(4IVtd6hw`^`YHfcG?(lDuf&FR7gT4$~^* z9DL+rgYOg)IL3Y|wiZqlTRK`6_AAfX+mY&QO`uB>526YdLEr|s`$%3TFkuQLIm%19 zdkY`x-C5urzdu^=2e!GSv8I0WbRh=~-^hj#P@L3$GZ}mbv=9>VlsX7kkndD&5CAnb zO&t>{?f_!4-F{_k$xCDh3_@3niF&O!D0s8FXlZF(zAXk6m$3>+ynqB0d-Q46Yig+{ z!=%43RoNlDDr$@qU2V*IN1=U-eL`5B(~#T@j4UqN#VtayysL|| zMy+wl(r(|S_6}yTdP$9lYqp8mJL7FE+lr<>n?bcs)6bdreD61*m+Cb|_ss4Uwy49@ zzSLW_)5D!+j`tA)NqMZ5cFP`wgoF-l5pvYMjxl1r^9u|M6RSV+uUGSg5r45@kXfCm z9a@%A1B{f+(1N+Q6q!mkc6x3U<;tYH@SGH*Z3#7XXYKxqL+dMIo~kUC>=`fi#&skb z!FV5b2XT1S@1&x;t1WjW#KkAHG^Cb|nZ=xk1+I1f0Jemap}JDUkdGf*lX|XYpxo2R zxLltqAijh@a2>r z*wp2Qp);Gp=hQ*AG*Oey+}D$$*twgTTwBTbKH7)<>A)<%W* zH``b-b#V}dJ&#Gxwy=!Z(~MB`OYTLeil1AA@+%^@^g6OXAAAii`x zkbbmsWZZF8A*r>oq}hjkuQNv#rnT;C?(m~|vWBpD0aN!>KeTOnE%cy;^~jC2+ILKO zddP1qg3xOXceE(O&^chUFLTgDS=Tu6VRH;hv0Uv{?}{~Qa8*&jW!AFW)LXPgc$z{n z7{qwLNJi&bV99)!SA%9U;drU4>-c76dYqW;cs{~4L|zt+DBIctw)dlsNA^=QFK_#)f!49Ct`NANTi{ zV*s!7okKfeM&a41exu6Kx><};CP<{-L!Uz25rwhy4|?`~ttq&57t8+9b{B@2Jc2AVhMP>~Ql!L8kVd55n)a>#17h_;2W7+=TpN<5eZO}R8B3;!8*pKq|Y*Y!}j z&f35M{cCH3?{e5Y0C?a62fO~>2imv*|GZt_Xb(u%NNsp@8|c$@b!(ThAEoBE45s0S z;9)_sFU|}LRXoOb(_w(F%5UNi4F@%nRzC7m`)h~0EBZrJ<4hryWq1G*3ILES5kmal z&ikAouiJE~JA-+njVsgQaQ5&LQ}?ybTEV+Af)=I9X{DFY6ndI?Kh>fQYI)sprz`<@w?{n$d##9~*f zhjmxVZq$&l0mc!EF@%%I5-k*kJToo8YqbT6b)VMnX{?PwF^NpkB&axd)c94+HRy7r zDZ>r4GOO<#kD)oV`O0twpbdlkr`@!Ql6NJ-@K$W+8D;J)A{LX&sWH*d}$ z`R_i2s*Ucm;ttyUngT0**C(Zb>w}3{H%&3=&)tk~rS+`3UG$2`0`gUDjrhc}mW)%j zf@INhpN6zse38*!YRiy1Cd+(xd$F_jOo$%5ynLxmLRuPydA71+>tTe>KW2?a?f}Wv zJE|^pp(1?k#n^-`bt7_y$hdn0SoyE=QPhYCtV#kIW^ZkK#;1Nkivu;(dU2GvKI^*+ z0I5o;=3*GS^K!6#8ZtELP_|}WgduE?Y&-S9m|;iUD9)I4rzWS{6gZJSuI8CpTST%n zu0zzc-AH_~Et8B`==f+PwbpMlV-e}m*cM-WzC0$;ikX4rWxBksl3d)svZx zOW#@KAvWa}Bl*P-hv3+G-}kJ*)_}h>)A+XXWIMx=E%R@P$_9GkZ(jg^a};Xi4V^S+ zE$bJVC>p`%GOG*zZe>^TLOyvmJaMSg2P87ZJ=na;h?FNKhtVT~=f=qkC4iSf0E*so z;gS?yrrd1=j4Zf-^QP1)Z0kw?4{7fi)nvDI4J!fyiUJBKpcHA+kq$yYDI!e-q!SPk zkSe`LdJ|9)=}iU;V^?F*R}Urd#$#OL3u$e#==osK88!*=vuFK#^jXSMApkea&9^ z%b+FeY+Yr+teuK66`M)$G-wkWBD!2(H-pqvIU)h;8ie?bkzXW7_0u&&6@I)+^WK!G z0(H(ELJvD+vP0u@%f6HnE%a{YD2y7*22auTV!+zDx-X1;?;H=NQ=%03{LgXEVHur9-*4sT?`n)~Si=Pp3spIAzVHE)bn z3|65kC2#|-NHm_;@*ru_0geE+k>jMKkb4|?oI>=}K|_s)FvpXA+{fv(=k zP}JeMd8tYhuuCGtKo?#T{Bh`k9AzaAPAPIF^}s(m#U@Goe0=)c6d0`dp0?}Sswl9p zDzwzUuPa5;X$Pc$`jQN7Z&W(0U8Jdi8i z+?D*lvd*?6G?;mv(4^FF3zhKTZ%0J6SNy~jU!D8ZagKb-#h}#)RiXn3?zq353uE>MHBeSZUh7#gGMAbCC~AEB zr=&NJm(mV(gllo}P`?$3P3klbd+4Xx6vwUmgtFOQJ;Y;ygz{R)CszTlR(|22HI%Me%9}2<>ZWGP7wUW zb)uajsB|3Gp^69Ub1jezsq>;JQUKo+<`7`5N{Mc)Dq+S0E=W1>`op8umf|XNoc9AS z%D6a}32kONmaXO0nJlBVa6j9)hKc{yX#Z1h|HXYR{}Z##zxXQ+_3`4+G?^T1) z7gHm@2^+&)8?>1XWRp7R{MVz?Z_m+-l_riG_Q~>YjQ75Kkry*Ah=*#RF|WxR z(PwP(q>!Tl*Nn11ES%gNDKR&Bg^h>TF9sv%70zSprm^bnKW-BEMG@orTUv;yBOPeI z)nvy&u+>ac2Sk|=x?Yp4Bb)ERgy}vz;kbOw#hCNt$NhAp(8Mon3kOKBD1}v3{fvc* zGZ1NMW4(-wzM(3z-u>DY-yb{QOX=f+>8JfrQQljo`2(q26?HIN12^54O3wpQS3C1Rsv!W6@KYDcU!AOLVnT?@rdy zbZqKXMGMUUGOXHAOflqsDxOaD&kg`^-69Y+!X*mNH2i|n{&{CC9st2UMRxRfl8kZq zRyr~$Ykyy@sj)z@`4>^D`1g={_@QZkz?C{qI|ux<{0hK&HC&1D@FmlY(+&K;$(Q*$ zUMG9jha=`O$AeFwJ_U%GZ`J26e08V2T(q*=FXIlh?qtQSEZg^qupKds?yI_kmg#=0 ze9GEKPS$ud1YZh;ig>{lx2yKfQHCHd`B#&nT(|wn>Oq&oG4VB)gY5P3S>noLW3uu- zkiM4`6%~ybc3le%h%9Y#VTDsuG{HAE@;`GO8p!c zNVV<#z2Y3o3wyjYnI`S+^9|sv?B+?NU{QV0K}O>o0XC>yBg3epB47%FI}((@<<9s} zcdXrsb+R7Jj`9N@f=VEq z0{0v_3o^bFq6jMHp0~~(UWr3ZR20AOuUKLsNHzw52buu zhZJt>j%`6v@=di1M!Fbu@ zSM1Hd|H0*g8OB-(D*S;d`bz{yxOvpy#$=SfcZ?k0FM&%<(s*7c7_1Tpg$ z?f-_!zrFDmKU`x-Y<~+dHAw1XS7XKXs+vGq#644b`KHFy;gny@PSf5pJmgtHf&myv zIsLmM8M<&+OMF-|07_Q!$@wdI+&7r8MNIW0z_jCcKCxDrcU(ABp-gahb2}lKcXoER z$XmfVJYp{6BN*shnVXvnc8-;wU67wNqdWo=nvJY(S_Va#bqcxtBG|qS^fLigL+1E{ zW5~gpI~FFbpGZn=$y>IT`d;>zlUo!67#oX=rIDK`-mO(w~m00rr7#Tz+FmdpnCIZ5h5h z93;A&^cmQ2^qtdHn7FRaC60iNRXKf|k1aGFL6nthwVWQkDK}_{JA~QuxL{hBRxBqe z@3@ByTsEoKbmKdJv5pafDThFdel7$}GN6^YVZvT;KH>*{U7E3ESWsuci&9?qX|rtU z#?%TZE~WOR`;9i6m7%pt;0JfzT?QsEyW|iWhrJJg{Xgl@U#V00EU3$RpI=)h`Xe3( z@PdgYZ#yt9f;yP8pRaWL#Zz9|Z^&LN7&5Svn#MCaRR3Xgw2^#BTs*+2RxXybQ=UZS z)!?Bm`mlu(5qyCs8{Pzeszs)RKTpSAzL@I#eV)F#58KOPtjSV}InmN)kh$elx4r^A zBV14io4XzTDH3yyVD8XT^E(2KsVYopX{~CX&t;U6J`ZMh@pFqpwLVrg`1(j-LdG!s3k{o5^Lp zp(O`aI&_A7Fk%nJ@)WUr1Pl)qZAXfmd--{)*(kr|C729eWW;4kd9HrIp+V19ySvnn z>i-7eqQF(bP*pAVr$M5Hyi>TSYq5QI?5)d2OXGFgZ`fSwZ+_nsw9(i|D7s~1s$m>@ z#`ygE$L?zQa6H1PxVdm1s_9N~Wk9tTTMQvnIYdvdadO$tIeq=U-I zcgW_W6n)U30Rhb7qumO`@VvR_1_B^A7P=9PUfb}4HPF6>u6qd5*$4bP_kiiu4Y0Zr zEjiYI=2YX~CPnsl0mb+uHzjsA^+kDOBcMwD;MBwOBj0=NGeM&)w==keT<5if`Ga+8 z`SZN=ttkhS@KY=Vxj)RN59&pZ4}UD-9x)f_)^saYzU0cv%gE4>yvf@~^z3_kc};K^ z)z7wd(*4Awx=-EYeu8*@K5Pbquajq&fq47yVBF!jbIXfInbkyns9@I34!UtS+zI>h zEaR7m%qrW_^|ZLKBRXbdh0!sMC=fRs8YwOipV`pHdqfzo&7Pi@-g8l6WUqh0Qr-OU z^|n2?=!jx`JcPr)uU(6l#cfng*Pf&0JGyqE#cp*8K;lxyp9BO2e=4lApG=im#&~bm zEZwHv$9z*_Ji!L7tQvwzkAz+i#$#%WDcV(BR&%u2_ zM^@8)4hzAp3%T!)=}7SFIhx716y~0S7WBp78`}$>sAO8GOQ4gQ2<8xmJN#_ZsIxdQ zb8yYRdr@t(lqW1Png>0AmEP^qm~8ZIRzF*dYK@{7tA}9!mA!z+gJiMz=!KClpZ+tb z@lu~9Z{KlzP-oz0!1$n^wDmI0yGHVk7r|uHTE6&~9>L({3pM98x0?F6oT@guYo%{w zX_<()$-e9TChktr02UGv_%!KD)_AiT*)l-EO!>t^QmOflK^=NCS4LzZCu-)Vd=HKJ zqxsw$$-cudYfzOZC^^^^=(aT64>yfrUNrvjVa?}tWR)WCPr&j_BA~E^rCLc{QEJ(@7T2ff~Xn$ zrBA0YMKFww8Rd&qDFK0*QQN6{{S%?J#!Ihp#^GNYt2s626od;KMeW8oHBU5ZuCW}Y z#S@W1VVDZWz>|TtOK<>z`xw$$U<2g0;J{ut877YG$nJ1$_TS9Nu+w|?6r90`bQsnX z{z>jQ6#{EEZuI$z_ZHjLW~Udk+hOrDK3`m3JrD56<;Ig$Zh8}af4B+1#q*;rvwk=E z_eZcp%;D5wfcz?=TrOdSk36P(lVq%s@B7ic8<--WZP)9G9#D6qqn&PkpCIhL z*M!Na{~cO~<-j(Z(o-`4ed66ygDkfMojH5q=oadXxWh~EU#Ba;UJnTvcT z)yuS}ms>9J4sv2Oz~M1oVjh|TU!U??+i1B!#YX=6-xcBhMtHsikyO;5s=Bo>d`->o zc8&}^NMd}(KcDO;ug=5qzFt7*ib^i{&^oMH_6W$qfUsy)o~hfV!rGwEKzE~h;fxKh z0bUwL9jkX&zreL^)$o6qZyeffTPrNl!-`wJ?^88HiGBcfgisX>#`F{m+H8eQ&8u;E@BlBW#o&3UAUY~FU zAvZUjz{smXgNEgkqnE91Ph^{&rvI^S-mFtpUlEqamr05M2;K)vr#^?F!T2n=v|IPd zdCJ#S*Vn0Fp$YTPR*p;!ZnpXL{I z1GlPMWHoef<2B{s$1qe*PNXI_cB$pj;e4#dJ^DH{OW3z>-hMeRzJ67Pz~7F_m=z*` z7rVIg;!E5TeJrGFYiMQA-ovUha>KQ8qE3u!_vu9XErH_Rb7;)_s6_q4(WUen$`x~Q z@{1Qy!Nij371)B;hS)74{ho|SakuWe0&(HBDDo9rK8=bUW2-}%A2gQKCe z`BuJ@c8{&CZ%z>YW8wREv&E!@hn|Bp2LFU|YJa=UOauT0*cl3UeFbP6z0 z_2cW@q^Nx%tALj57^+g(LezZTHFJB~K3NBw=06yyp;G6XLXco;DddiAjQ2B@cUPSi zSD`gNZN}9e&Co$BOgd)WveB1%B`*vbyLnlFOG@0zcc0N{P-YvxJU$?ii5Y}--JxYm zk@g;*tbTrDJ?%d$3L$(&0X>!Ur>1%gPXzSge@+h+$&`I`E-dJ7FG4CpryHizkJet` z+4Cy2WBF>s95jz{nPgWSsD7ARun#}qxqu*X8 z?HcWcuCoPoD(^=bZ@YAopFi)BS^du1faWx2sHYtG7lzQz^7HbZ>{LVOD4}gXleE7S zykB2V5DhzJNQ7O5#^eI_*vxYooe|j9j9fUn5fRy~^QF*LXQb%;X82c9_l;GZaAC+J ziua)y&KzJC=_z*M>5R`!MBMnEVRE0@P(PC(>VcN7Vnikxnj?jsx*s)+rl&m zw>7cK1hD-~-*0Q5ZoiE@8HTMYCGzv}RVRzt*MbMxdr&qEhqF%_&kX#$TZ(E`=kL@_ zPjdMdN_L>*QdFlZPkR=)2w}IrnL#=LtZfH7oIEV0muDJA2!g@iQV<^;X7aj@Mlsn;=9lA0g#?T{(}0%DYMRfqEE{-A|1QQ`l?)y*+48sjQyJptqccR|Hde4 zjcvnWgsG0F6L$YoHMFLuuWLUk)is8dQ4P=fnj9E-#g7H_7CI^9-q>1#i*1*B7JjeR zNtjh~I-5RyD*8Ny>-$9nqLHsVrZr_xc`29=TP#7pk-k{bxT&2vO=$;Hb~CxcNYAfN zL1Cn|0TtkIVQ$Jl(#4L2m>`4^f`yE4@p_fN^ZKvKaRZE}i=?$~|5*i4kN{yVWA?YB zeqO+ZYtCyf^|5$FRHoUCHt@9h+E?boS6OP-UPNLQaeDqvlp^TxvvWjr0g+Tc|2R6m zPycojM+wP1Ie%pczJCx<%NON;{b*Npl7(yV17(o%ub(h*9?X4se@Ruo-~Y%}ILvwY z*ynrOsa}@1kABu*2W3`$n;*V>Ast>3(G(bbPEPpb=~Z3uY&FSj9v7peJyaFX<0GfJ zhnbjj{Pi;~ha}QVpoWI|%43}DMvRu%&$}7klcEhcY2N=1C2x4Ta6*GP3&tHT+joq} zz?O&B?9Q$}B>rPhgY6v!#HR4=9&5@!Zj&DLS0UZ-n@q`mrSdnK@_pab{Ws5opR}_* zuPd;+Jn3%NYsoBQgA@#kJ=s|f-)ck3t;3||E=nu_+9mn zfvW%VK-bgtJ5_J$jS0h9m4aY_{=u@Xq}n@n1$%~eOQTEy^%bUg0~8(C>}cON7vJ?S z_u-6!C*tM{7{;COOBa9MAJ(mAEQyETGvt7>^5);#q8-+ZI>FnA6T9|<*=j61$U`Yc zqXwro--A(0Pq)a*UnJ;%*=(lQ0ImnWz%P0CPZ~PieUM)6J}-KfPfmo*Yu8%};JH8b zIQ}0gyWZL-P(lDc7IB14w;A(*6W&Ln1Bh~E-s}_94s^cbpoaVqo`roY5YevrE%~=G z0Q?9RLadECwK{&U1G3k0l=3fAr|V*A@CHT7gnoqEZm)+^@gia;@CEj(LZZwM3}dh8y-=JWY)uPc$H2i3pkw{C=citKu6gI|m|#lrV*Z?NJKi&HtLL%}XiS6F%WA$-e$ zwV1++@HDE@!0@+0jOx^HB@tdG9y#(3FB7i@JUl}`E}>KSTj>gf^Jf3Q+OL$mGyOdO znhwD|d;kU2?pn7yFVc>43u@C@A(N(X#b`YcFP#U{Nio{w>@1qF2}!zNgdN^Hz=gsU z@r$tY;sitzFjt6Y*9BE=Q%n;CVSR57zY<9aFQ%6M_ab2Ye1jCqSfixwy72D%54VR> zOK(56vVRau-leee!%%=p>5a-?vb^l7-y3cJa_6pZdF0RmzHR?E@eu0&paBM;{LU%7 zbpAp0NF)z%pRui6<_*=*CpMk@tx2ZPO9pNeQux9D4_ki{j1P39R2R^h&yr9c=}N~r z;>S7}YX2uog`zV+zWEGq=cJJ)zz{4ejhFn675}>ay|v#HAA>KrUm9^aQwQ3Q3wT8r z70Z^xac<8k{5~5Be=#NgzgBeNBq@$K&V0gryZ^Rfc=Z{P16xJGBMF-+FuW!7i`wr9j_m}UVDY3UZaJKUO$yOIbL^yx%J`GuLQoACcaXQ^jj|RqxEh8(UB@ ztu%l9v42ll)*=7@^zC2IgQ z?V4;l++^?{>hXBn_OmhpTyHst4~TM%)-nw~$e z<<_NF9Xv4;rG_S6z{LLD#O!Rqh(c98Ll{N~W%oS-+@Zae0p9<2{`lkir#vgGqMRq` zHX9DBzpU7us4k*$F-ReiuOB*YR?g8JPWc`XRIr7ySigSrqh0`Ug)q$P(nC&Dvp~Xo z8Ba+-X)vXvA4q_Ect(e)XgKdDCv@;Lm0s&tm*ym?D&YpLJCM)gW3q5)%VG%^RrP%W zJ|6oTtG&e>ilSKUS6Kq{$qw2d3kJylG3B~ zif;3-0ge>f(!WKcQ9&{L!Oi8LliY~6X?V_|Va zIinE8()(0fB+HIE*Xj7Oi!7kZQI|U{=PWq+2`(RbCjjdzn`!|{(pRTQjqVb7TsrS| z`RJ^(e>MDLMQ?d!`IrT&Y*)zH#luQHI;Ox?2HjN9!FU*I@2L5b?KBnBf4n|X6WnTJ zaXZ zdoTn0Asc(|b%okj(aYLzWgyCj+@H^!@GQs5`Vh2T!HzPX<<+dZVJ)87PfoJU_>9!) z!3%L|GlGCU1@6tR_hOxi6T4f{pBo0v(!p{+_9+G>O|yv*=tkpVy^d zbUA2Fmhmh0AFo1M|Hz>y_fvZqn|>g~x)|;xuPiUWT9Zt?D=r)wiW0f8lhcIrigGx3 z_vasH>=ANq@k={bwc9Xl>1O7;8MbORW~;Gx_RnVr!z|>|3Exl*Xyh*baAaO8orqrhjF4qrN^ln%LKXaB)Z_-Darn=_fBzK!{pM%_oGl;4#@&hO z;VFCC*{aIQCuV-o{4LM(H&^=?+bI6Hm%s0;ktG4wL5Kc9f!#)SPL7g1c7M?nHXVW9 z_Y)C%-vm!ezdo-1=T>|`j=un;RxL3;G}PbE{}5##e~@vFLeQp%NKfA9cl%u3bI#T1Jd%IqPPwhCe(snE?0Zg482L{1@oRpF#@# zzJe&V-t4@*aYcK3`!S;96G{E-oC>V%gY&Qd+zh`j-~*{_C(KXNlAL(&;9%@1HPz19 z%PB=&tAO_Mk?vZod7bj_rJM1hvZ6hsekL$*rLU^0YIF^QIa9Y7*tEL(>_mqD90z_WyF>+NVy39rJ&A(X_lwt_6iU20ov`a`88mio)yJ$wi*G{+Ov z30xUE19Z_lB6f>W;f31<2FgBmpB`oZ6mMMos6oKSp3$nEM}E%6hYH$#Ad_wo z(Edz3^CC4J*`xU4D>kFkIHK8$HrMvJ(@qg#r*42SnhoWmzlUE03ziqO*`|PV7oy_r z9cqnS7M7A4f2u_@LvO*H7X4?Y_&epyQixNxo^E(7n*oAi9k~%-?-q z`EtWpdrt^K)XfjVyjdUo-VoSNxBCd9p#-6mPyLQsjMOz3uFpY=mLl`9GDWe1eB z9;Oq(E{YLh*{-?ezr=s<=de>#4!?J;v~)vuZcQ5xKYwCbthoWQKjY_r->_+frfu-d z+|idWUna%Q-6*T5NVM$hQUw8KAwydk@z3QX+zDFs^Ft^+xW;y?Bb@jw3YA^ZFga`O z;IM06`m@Sminv|qR*LN9!we%28t1YyxvDF=__*Rn1{Q!Wj_P#2Owh|F8TFfq6YX?U z!;XKfp{}ZI=*LHwXoini8{b{4hq5Y%8@xHvC-CGjx>xdze7J5eF9E-LtyxX*h_iyp zzmlLX$g&UdIqG~o)}L96{}F0w$x`j^wJD92|2!b@|HCBXFO=w*n2>O5>2WX2cf$}( zz{Po%2ur;uFmm~y4Jzzk9kAlk{wi{f>61O}Pwf2AlMDU=dFbbZOP71Xg#88Htq`83 zHS1?%x|#Lt1^879zF{KZIzMXK7Z#JdpXTvEf1`shy~&(2^PMYZQdRMQE$ zQeIqex62NRT%y&Z!sp#wPOyT==OCyxfdYqaaB|X)E;;Fm;Io44leWHBP5aC*4%2__ z&+ev~;)*c{=c$GV61%$S~vf3kWTnfD=8-L@`TN$72VtTV^c}qA6A;_wX|tG_+!*U2>CT8 z?+`i5c=PaR`_kaVgl+f8#MrHLh_C8!0(Yk?a>{q`+c&emzW$!brG9gSfV6M-`HL6F zed@gH7Jqcdmvn!6dw%4DBVfr7exG=pTwYym`Yt}6`=h6AhX{v&fPhtdM+a~4@v%f1 zU!=5Lp*l~uhN@};*8lY2zyN1}i#c#h@7exVa=f!pHab3jt~2B?-xl%XhaGL)*a9lE zq~z;6XO>76sk*wSuC71UH`kw7I^MZ>UFKF)DW|KWhp9|oPlETw>*IAGfvSIAtz%%I zD~U3pIES54Rr)*W|5-{ZlgN(1?(!V97Wn0D9xH*{`0~`^O%DI@Du-n7%!lzH-6E4k zwogbTQcO!r%q}f1j=HRPtHR3o)1|vCU?!BDtI;dg=&{|xz~FHQ{$A%{9?{p!8!-^{ zlci_iTFs-Tx#13CkL$CL?RiooX8&pe7(7h+-g04Y zfyK{S`1CPZXP^fvkqdHim7uHFf?9VTsxtTO8qB%Oc_r%N)yMHr|LLX~Q?D%b?@oM0 zxqCPNE}%HK-0PqbYpg9Zs&&GDMM0XW{#}cmEV|F+d#Ew(D1?A7)u&qolIV(2I`vH( zb@Td|&=7uBBTK${NJDHqs18r83Wsu;#N59tr9(Y6Sc^@7EXNQM2(-7&Wtf7Utk&4u+$xli*8tK2}HV#^BocvZ!u>%+~oj zP;4-E*=lfg>@zio?j6(!G1V2off-p&ASx*?rl<}Z0wsUi?PK-)?m1qzxvkpF3v(yk zOZ{}J$La*(R~gdMk!-_#PzS)XU=Az9)5R&pFrJ`YkYp6rnqQ-X}wa z$5|=6k$OLUyrdx*RkW{L@DjEh>&Wbhu`muTjzCou@vZqNV2|ya1|+#g4|in^=lq5Ps((=3 z05!iA;_5doe1paw*ad}T`KaYx`vDfZ`Z0kdPX!%0?I5C5 z8mcm^N6xWVM!5a(Y0Kl%9qYj(Pi-oZC9N5x^h2=i$?e=rY1#4}I_Eb~XbuNPi05NT zDapY&L{bxMy`5Z0;wP_Sn?-EM!}dt_k};gDsOikv^l8l*Bu9&*1gR1GmV>RW@HB2K zD-5;vG0{Wr)}pXQ4Py(8e@Zd=<43mL{k3}9Vpzjobv<{avh?KSinsVJ?EKM}kZokH z!J9i@)+h3h*=h37(F8CEWyoJu>fdMnUkl2V46^;`ZHo7xO(8Xp&}cH=%_a1Q1l@w8 zXRkgEp!`VNZ}w#M)6un}W~xZuEk?>LF)=L;5l%kaMG`4B-NDPPp~c(a0b-S(Lg(AY77jG{J|MVmW<;?08t+_4k^_Og92T z=8lr$Wk|KJ`ir+3LDIi9zWa1=Ad)h$L>v^spa~kvm|z0jlh(o1bp_G{Q_NaFb)f`}~~bC{sSn&)==UiEItlxGk45SzpK`ty&(vXD=xR zt1wa8-@o-5radKYUj2Pk6JLwFfFXc#P+4NAw%(?y1Y6yAVw+%mxmv&#i$C)3gTf~F zQQprxKD^zK`UZUWNUBfZ4bywZSA6tV&S--G!^JEM%JB@&Ee%oA$*(57W^Qhecue`9 z2@Js{r0o<#lu9=dV8`VJ>Rf)oxtV;ZGK*Do@HK1o0m5Y@;qbSCneiw zyqChLj?9I=#XvAAQ>uGdj1(y7;sVcbM3h%ljvn>)s+ADzF~_ehL*kSkq|fce62RE5Zk`ovR}2fp_zr^Rd2GBv#K`?NaX4ZU^|L}} zIyIy58GnmBR(Z!N@y8-Sa;7-kz&hxX8&TIA#Nchb$wiZ#ey7v8qh!YHFj5j=gHV2R1}4`XtY38~u7IzdgObUnr31Y3?(z z7k=-Wg<1b4p2l@sWWqw61?Yii`yZn_JX`Mf%nW3N`FMYL`P3#3=Iz~`pP!$Q)!LeZ zz6V1^yW1`Ua|eCQ0dMM4E02-$IilkAzPn>XUxSth28vfUHYy%HFx_UfGd!+*46Du- z3Nbo={`?h&*JBeCk2!QTK0r`AfwYk2=$JW1{X7C(MTH3EPQPBac!Ezx6J-9hz)2VB zjCT0962Yr;y|>!eHmavaMueeDOKNYMV5&PWV>Ct%ejY8-@~54xtZ2w;y-jrv?Wp(R z=rA3wwX!8+-qV|0rK;f&(~x$&C8vIBg#7Xm#OK2!G=I+$KlID}FQ0p}V4PdJRD1tJ z`ox#;HAepuxe?4;?udIdjeUl#+yDy5h8Inn${e84J)pEos;JPZ8@@D@wPIMM3LZuv zAteCumbLvtEtm9YiQP+o5^XU231}GdzkL|46ipP95rg6O<9StZvK}G(afO9^fx;AD z(^FFJPZv6S_AHjiX;mrJ^JLGR9_Hb~ znbRxNtsLv{WvDm#smqfgcIdR8n84@3$%U(}iLocNyYm;bBtuWzDKrB|kE%68rSHQR zk<;U~?e-G_n8#sc9A`87SBu|~RKekvG7=%5$czUEcUEF$c`t39>)qYp4jNw7wkj}# zGb$Zz_8aE@WZL#j@jIy*41gWPUYK1Y+s7PEdKZRGM)enFir%q@Vx)H>(Q_a6<8`9U z@Ce;dp+9gBKSdLuPuN#!3KTVHSlow6~iYxNE8w-w(puqDqEG}oM`LIL9>cE zp8VS6{t)o`FP<59}485qPQN=;y2c{!u zAG-NAaYbz;PfSluxkai&&EL={WmT4!f0&y%HxJb}5rsDTxMlG-v|n7foA{-DzEqM7 z9Y=_HNM&VZE1;3)V`(5if|RUZY%*(Mr1w>Pc<#JjkG|f~>f~GaQNF9I+o%AI0S#>{ zt+yX~g=27Jz-mwihE=7}E8gbNc^%b@&9ZYe-!=}6674($zx;UpX*$ge8CusuE;p~P z|LOGDgkxlG?OHQ4QvO|Ak+TlMO*G-Z)rA?Q;MS(2ZWCljr^=fNEvZwPypg?5=+b*u zIr3L)=NZh&|$z(}3fjhg677TNo({SNr?qH=XKi0HC ze$v85Nq}&7VV5J&(+E*Bdu%L7sKsHUaqY3O-nFN1D+m89-#^&$=8 zZNF42qV9XeEh#1Cyz%s%TB5|=wD?|Wo%D7K12|TpKe!=Y6SUcz^G3+5%J1XYX>f#*g$2NVI3|9X1)aS44V@fGWPYC&fR2AS6j6=DT&1dK@$b5k zk#29N{|oF)x(inj#@9Q9zSKD#NqDNouG?3X=$q$?y^d=A7fnPdp zTc=kQnjB9$PFixCfR=SD{Z)83y}8)BFD8(5ylhZtaA@KQ2bv;=bbz)$JyHj2t8zkd z7PmLpuYW0rVm>|GHCAy{FGGcK`AmLjeq@`MtK`)%ft^pM7&*>1%{EG1jZ`BjenHTU zTAld1#_12)SzSD%mnjF;e)6)E0*ef`WfJe4l6~PFlYUz;^;&9m`2|d|uS)n^t#AI9 z>b>}(>43wgENJ|Vr1R_^kO;hP3k=C;(O7VPgE{W@k--qad^A>;Rvb#YV0@mf6S2rf zp#t85gM*0)T8Y#%IrcMJ)az&hoO(&43l1ANR8(-TuGqi7d`){M26;Kfz1)4q*Aj&K z!&#C4g7Lj-a>W;4n}a!j)xWX`p9fAQMA%KbbHnnWbuM7@FwT-o70@nUC)uLRSrbn9 z=&G>0dGlM*mr}S*KFRTnY1jgX;3`3=>pKYUs5R};%VJ}x6V2i1FQtu=f*@d7gMa&!D+0#_Ax2?`S%w0$1l!a*cgr_^}}rBI_|uDhCv}A z`Znfc#7Ds-XorZ?1u}wHLK0fYntIW3%$9>d7)QPa!s>R4MUv%^Y`AhzlFyHG3wh2re7!5cU+OmDDl z&*Dyo6_g2md-ZOv2OcM))CBwX)9MrcMmsDPrLhb21Rvpw*puChC9C|G5@kY3RY*2} z3N#-Sk=Vm1*BBlB{2}>Cx8H@|O|1^3_Evp({i8fO;RR;%>!Ecdzqo;`o7?caV90PS zCg$7Ps;zqx`Tt*D97BFjF7;6=EiI7u*L#KQB`jC}_R*(5xS(cH{zMAq#*njv5= zI`5%fPcp02Q_hh5`EdJXn#%M8jfVh#edyE^|MnF7R%mD_o0Q+e6`N*j1)7`1NB+UI zwp_K$9ecHX{9CvM#Ps?i!+gi#!?&%1P0uJvra6j_keJ70eZjgM;yjnlsGhml@?d-` zZYl}YMV>RcKU%z1R+SJK%<@*vAN~d`eep=ZQh$Cuyj$=h6jY(ybvI6a;j_c)u85d_sw2EF==0J z5xDJoEd@`fAxES-1iPhGYm%SrLviMT_f1O3qBpauL+oJYPxU90i|KG&DdK1@VoAga zyH>AnVAP{eo1Btz%lwwZ`LpMG9p=lI2j9wGbDk*tmdGafK?JoBsTL_IP*uR<6*gx1 z#P?Z;gzMED=*7+zM5V1D#r||8?ExKZLX`Nq8b|#+f%Bqo!_>|4gk&6#jSH|5Q?Ac{ z-Aq&f9i`vNq40;l^RGD^uR@N@jE#LZJ~!xHSY)m+H(R)3Edy%gZo>CL&27t7+@AGmtK6nm)r{DeFb;JA>qkGD*BnRkU6_r%Z;=aoJIu!I3JZ65x@U8D(O?;9BOUO!mbS>j~dDg{s+`qd53`?CD%SC@?22B7X+3IMk zg|Krz?^#ljI2lAb2CV|@%PQ;ncDW&&U0^t{)mNPk2xBi%XV)vUJ-CdPE<7ePS5k? zH==nSL1&t9akdvm#&_AnDof-2JpLsJZks_0gR0o7Ni+S{HebES(?!Givx(m}2IH3e@_C zqu`9|4iaqR$gq*&95v<+|4eElJ}1_0_hx_J)rM7hu+D}x!2*M9bC$?Gl65eIYszCG zIWOOvUR&yiVB=k(2y2&X_Z=!bmGdDH{v6^xm=;O+G)6E=^~v8}06gs1Y*vJ! z+`oifp6FcuR3qU!Xwte&#WR2+fAk~V^@I_I{wl13nvwB6v1;^f4KKRI$ivu~qXDY| zo4+b8y^)y~a*uw0XoM+SFDsyvaZPH3>6Oe)*~Qe3d6zXH6!rdodbnyx_N^h-K_h)k z!X<@ahOYYgxL#Njv|A~)@FP~B8*4xAXw2sidm|zZ8^6l#Z@@~y`kC)3#70j3<^I-z zTfexe;OM;8Bi^md+|j+HDq_! zIuly+jl+NT(tt+hJBHt5i71ED^Zjnh_lMqm(LG(yJ48zRFkkdR-ZueE(ytDl6Fj+E z^n+_DEmVl&Xs&ud$;pT_W%_-1)LY2r6Q=xyyA#*hw-C2A{TftDvFrpU;%^toJm9#W zq2;dFj4a~{qjGwh-EHYw9-4c7ZIa?C>I`#q?@)pg8}147zDb`MX|x?#{3YFY#vGcz zqz-*i3}sT8=3H7q;`$pUPB<)$OE6txB}t%dc$Bwm2kL|E~)!reb=g;!Uk zKehV+H9AK}rgMEE2{s*u6XodOSo!Rds))$^E;dh)qcAsQRbBOX!b;^OLvCyBG%%Pj z4HTz5D1u{$3>WJ_`>~N_i{kxL!w9|Nk_RRG3w1Y;8qPHLtJkD-yZBQ+<`D+S|7hD>8yEXZ-b-D_tK7{E zhy{`)!-4IY<47NcHT$#={k1eZ#_em8VW@3}n_&KBRS4!^x&E^`7v9#a3gc(hMhXtv zd}3{g@ z>-|r$4M%PRS(=ky<#At@UxisZs7;qzFfd$C00n7sNPCDLNQ=YF?GEu@M=KB9z)UGM zt$r_Z#;nFr0S@cl&XpThE0vr-R~;J*Lmw+e2m7jFll7i8lb!;V1octBPl}*TUY>!` zyNl-*$@j_Kv=VM926SkoC8(D$U8t&NePm3)uD+pm?5rDozYUcL_w|DOU6l%wOk82q zF!UQ68@q*^3f3TNY0)&yvs7#4--M&J zLo-{2)H*jjR2J2@T@oVc>pa$8$8oQ2)-y#0vpx-T-gy>OR~R6ErA%MnM38&>U76@D zs}oK};v7jSskTy=I_p?+GGpV^70>7MD5dicQp1?J#H*r|L0v4VJ&-#&SY@C1GteE z{kD*gyrLRI z-BmK`BPD%aQkyf;A$H0bS;ujw(S1gz`VFE++$C{$mLwYVrBhGd=@Ht0oo$+#dDR=( z78qOvy}N5(f(Lu14gpGgykE6<*q&ah$%Te%`eLmbr8AP<(RI@gU>TwS`GC+5~bNF-J$Y?c6F8Dc*4faVM(!ZK= z=-KynzRj{_>adT^49_KS{s=ni>n3=FM+hK1Ir>D{Vy2yBy;KA;5cK_nDXD3Rk4ma> zf!9O5{Oqy!N$vQ{W?+Y#(t+l(fefp`B2=m@EoM&JMG&Eme9)cX&b_R9?TIG6gg}*r zs1YyPG(*Ch7+K6Vs^HR^Kj9DiZ*ZxNNRy#kI|Z;@Boknqz&nP!g<@0UL=H>1?miuR z_zF6M1IasEW5;6~jK?Iqc;>4uX6Rf$%i`7$o@M3btR+X;q;7>xP%Tw8wXf`_^>}Lq za-8h|0gt30YKLinc$G(yVQO;{YBw%#yoJy=wC-7jSap6 zI}?NXhQ>yF86S`IzDpH~Z`4_7K}d6+$*FS-d(K&X@v+`BI! zW?iHUEqnlhX4WR>92MjjQtet~H+*(|4I#pweCVEop7Dp6G)(F`kt-da2rzvJ&KQnO zonNzbQu?YRtn=D;;~h=jKl~XA%LI1R?Pug;g5=e79 zM@d^=VnRI4uSK5GyFZ|>5)qU%JG_@!aa>VSRgid$`3_X#6#a6-(R_B9nLii51$gk@ zj`1RnDXdDUzO3MLpX?bXLb>`(Pl7$`aI&L?s(>*_!En=`9>${>l62#SW#!0N1BAT# zuGh17we;#A4c_CPyxZHVLA14HLSP9TyTG;s2lA-_4fp9aPnW!4hgYwXj`!o+)<|?@ z{>&6VD5Fk`8DJ~?IxW!4dzF+@fg);Z7O?%}yp`4U{JS+D5KnO6jBz#4rR*%2qq5Qm z_mkf73f481*SGJ`4l0vVkgpdZdWx8Rc!?6iL`jXgCSCJbhhYFjj^Ef`evDrx)}DqF zpZZ9N%|nGfL9=^wH0tYBZCza+yThki#>>oE-t($KZP zf}+Fn7zmOc7OwgwUZ?Q15`OOOwg>V;t(U;9uchMIBGz((8M&`w87^;(Ia-!!vd6^6 zwtknso%;r)jx>NpsI--9Mfv`LS=i7*jObT>e>Ot!kj{?u{rYKiZFhW1rHTWU&L zob{)iLGWAKM6UBUf+_*;Fg#B|4I}npb+55vnpKD8&F+|c@_o1ES6N@?8a=N0Lh#)5 z`a2Z$h4XGht6OLK6ce?2`+00`YU%jUU@LYo4e?dkhi;eQ;^Qcvy(l%Ov26$Bf-iR8~Aa9aHb% z0WbTdHJ^*wqpPbkJzju{982$Q(>I=@hA_#m%7xo_03@=9b$zPlrHPM!-kis<5H&PD z&M~DUIehcM9$&rd);ZQ3ean?(TKX~Oi1$1Xro)^Ps2_(-5zZnIOZ0Y(Qv|C|r(uk- z`t7ql{hecngM*8HEa~zv+ZT<+(4941wc_Lu7EcBUCui1ch)P9~p92Gs2C9AVZ_us42a%CccDgTVPb@{PHDl;tlhV>xmDz#$EJl+)W*1YO}d4 zLu9rZkQ=uKlUFxR`;uXBk}Fx2X7| z`h?Z@GX_Fi;x+=5F&2-7j!vfiKWcAo8wHY85a?VS#=k6|I{HSIi$t_tB;A7u?} zc3kJK#$s2TmK3^UVm-C%Q>Q|1wBD0bV$+_Et#kN7JK${uC{09!8&_Y)F!;C(gc0+! z7)$*ZzMh|-CwvmADDP^g#YDs`J0*yOQZ2yQy`YYsckwE3Bu5~s-D$+$5n$%@ zPEqW}zHj=dpH*~yYj1CLz(Q+(1W&hbIdU$!stKpxF9ZU!ARBbVL>%i12td>DK-s}J z5dF$G9LOALpZatdOtglRyKQ#&`TfF2G@gobubV3puZctxeE1jp{W1GR;2r*V;9dIZ zb%#%Nb)#)~{Ix9S!*zYT`OJb3^3z+|>&W8MPJ9AFEg{6gO%VHT27ar~8PX}ZcdE>o z)?&0_3nULRv$Nwitc2-=7iMwbd58UyJU7XYh&pR4h9nOEV^qH_YHCExL1n6wx6vM!9 z2+i}?M!nC8_~sW54{m!(1|L_#js$Xr%U@kG7Ho~vGx!*M-IMJ)G0S%@bq#|em|``B z_u%?lH96sSfNBZte{N=MCf0>kr1b=Te?N=BPjqcOj}uYS?o{o(s6x10J&sP0)N@n| zjL%7a`DJmC5_JY`wBSMn1P!WDeg#ji+yvGS#`zFfzoPY=DYn)}`8SsRE{#dyXnm>7 z?J}(18P!tEnX#A$S3%qoscagfVNJ&zdcRzNtNntOZvRdnE*& z-qg!pjYa#}Q17UD_1PxWA`o-O-4o`IW0m~Hr>Ycru%>YWyB7U&=*H}{T-dcS9u{T8 z&inVbeU-3e74<00>*ym2a)U2r+_BXe(^=ez7d#w2pHm9H)`}HqmaoE;4ygFIgcl#l zPXiUxJDi+CSjYF2&V?dEB#a2?k%%-}a-Q7S2b?mDqukqaw4t}G$sUc{4ioP^QMzQ? zUT3C8LG^Aik%QPIQ^xsVCenjtuaOQN_Woq&`>K))YuO$45ThPx)!&uf$k8UK`q8!d~8{-LSnWpO`eeNK@A1>ZQOY_^N>cx z+Q2TX5kw70T=T$zmQtnRW2(&mGEZC`T2I9*w$cp^i-Y@| z&??5Xnrhh5PrWtzLL%1Q;x>_3RE+}Ggo|SoOTX!z5KvKlO?+$KdcSu3q$a;dDiJy> zNLfk3tRwpKdEibUE}y%xZiLR97_9XcTJ~DF;*~Iy;99z5S{-JIO}8qpH^0gi1E5^- zG*P*RA=S^8e%3(9HLQ;A0qv}XTEC5G?5VV8%_HWMqGV>7^AnuY32H!Q?|#5EtQ^j& zYHa@ug@rBI1Kzb$h;RPWL_cpgctD$E(UCOz%0zErDrhMn{->oNJH~_XQI>2&(|(cV zmfiOo7MXser)(Z2O%DmEl{6F1nR-%JD1!V}G&nD)o&e|1XQaKc-GbL{Q*+KmT6bK( zJ-!l4%Y7Q{Soy8_J}w-)Q3RO?Vv{GX_J+MS0O`GK2W=|9j2H@hetj1YPU0w?>8b+!fI4>=*$gOpFW!NH0#hoMSm{JHs+28RxOQKM`hXXaE( zs$feC7Uqj?+qdq2=vFHB{IgIzi-L5cWB59gpnT%YWVS&n*NG#fkhLCV&?Rg2?1(;6 z_EoWW_GBF+Mv9&M<&e3D+)0w{`IBLgPlFG}FM}NYb7nH^d1nGvOI3uhO2Lo;UO#drm;0)r8ZTu1Mb^Qa#31_)@j;l!htBhRo0H z^(T(iUjA!Cr&UuTlEJN(fJaddb-8Y%uMX?UHNt@xgcv2Z2SQ+9sC=J!wAkd&+y&yj z&5*&_{+Xl-^#I`mJ44S-+)X~|QwBUlfMdJRyZo?u7-hA#UK{27%{Pif2i@G=19J)WR>07w1p!2$mL0wuO|4|=k5UV7>)u%L5KtBUVhAw28H_ij7JPtCKa_CF z`Dw>?j#x(w&0WAnsi!bF5O6kQ90kds%(ot#+W zovHwD>N$^{Cl#JwN!O2~K+8-gacH(=X5=Y3mXE!AJVx^LrzdUL>F&ZKJ9meu>SxO) z2L1E)ycmcV-z+9>Ol*7LX{LMD))0eB!MGnIc*~Q?GINc)HBBn7wtP{OmFLJ;S>z^_7UNWO;My zv3q|SQcMzX=qTtfs$zEb7zT;-ei6BwuVcMQJ~-M;X@BNG6slNUw;lz%K5>8tN-QdT z^b(~5^SZ{_jxTI)vQCE7u5YieM{_Vb18^m?>oY7m&qr-tBgZ5}-e+so`q3E{_e**K zf;$1|)TK2|uMz2*-Tpy+vhj=uEzc@OBMFF{icd-}fJe$U;*w&Pb+g;+P!s8TkbFv0 zad2^t5|C-G;E^6rRX9#ro7;|gg|H4gea!CW7w7Z`d`D*VniLTwdIK#w^3z+JN8fyL z)8}{;&3Ou!=5!5CU3Pjp0}|Fi%Xn=-i5f#?;sy(KRdp; z9d@HJC!)V_TYr+VeKdy;9bW4QORy-7aTn0%)Ix!4{_+HL4`L=3`%+&BQ>W_Zp|IL( zfQ;7aw+u*lCSj~iL(TNavzml^aSO}6$=3;Jd*KI5^jZ-S0sggQEpGL7kk)o&ewc03 zQLpzI5dlYd=~UhWqM!pC)7K<&IrZVNm|FUmX=ygGbss-+urmg<%=0yF-6gI1<;g1| zz6gb1jXLtym9VOPh^@LSJz}$hv0!+6zb`E;`r1e8rzMg<#o6rb58_XbcRowvHe9#8 zfnmVEy4bJSH@r-T7c9R$>ea;^dcV2Gw3J8?X+O!q$u(+$q<0NdP*#p#Obx!l8tJ{2 zMxeC~Xz`DJIz~DQs$Quc%6*A5=v$d}KNc$V72}gThh9P=7M^Dx1eV9Mzd1o;r-M;$ z3mP4Tu%7Yr^N-!X<(ig=Yo^d&D^Cf>(`u|gk`#FHY})f}14P|zRU-2lH-$?AgXe8at)HJ#;#vLE=dIo$Ms9zp#5-{vaZlxlD09XuT4*gk4J-F%oI zhhsNBrLMj{Uf5hFp_JY{8Vuv2u1AE?o6TQcd)3F7hE_`^J&hdeOLM3qSg3M2Zv%w8 z>D?zw)SoYlbV8*TkJGG;LThfF2d7wRYspSY#;4WHVR+bjN>baZE*^p^eIEx8(Q>xp zVnLGM>-{?(?Mlv4+9FrJVL=RMr@j@dO3^9#Ly)!tCzG$J%8fh85dI$)Qi&efP0V_i zF0gNEsNZEmY8!!~yu`}xF)Dr*)$``XC2r}ub6Y7pSNrzY4>N2Ju?u5I843D+!I%0d z__BJj--ZmZ$Qg%wyR@F@i>93bDkqG<71e(UQerZEhm&y!d;76DedSQ)`Q=W!V&}To!?|!CVyuICOLZ@y~Y;o2RMqq+IY4rycRYf0`_Z+tB zjCF)C5p}`*4kk~@^JL(zxfRS^3Zbo0Tjfzv0(~5;l?j1TG;+7;+w8=Ih6}VtM@8q| zGhV*5Du6h1+`bkh1y!y-A|g8Kn>CBJv}TsH$p@@)ihelk7Z@a-yfJb8%~SiK)pHnlb8Mi}ECO zswKkjcEA~1s_ro1$DPB7+8pz>{|u)IJVFl+RGrD^?xGt!IggioEM=wKYrT4&(Xoh5ok(?zX_AZoar_eQE*x3ae{X6#1Eb@Cjx)wQ@2>c7TVwNRiWT z%@S%1`d?=A-EH^wzCF$O3A$pSCZLOUqTAFPMX*hg!PuT8Ti-TU`v#IVBCmWeH)P!r z(~E3UmGdYvacN5;!@{@m;%o4h=gzMtm1gn7f&;n9H*OGduNxm}XZ@A)!R;I2m0eikl+(8Pm3 z`MLQs%2HR8ucf!9u-&Nq7Sq0T-ydyY>&7RrHa$oNId>G@|aknC zbP!|ekUhT?LBddzkFVXVZt!bC4V5)Z?YhP&`(s2V(3=bkAhhKIN6yXGZMh@>!urF| ztD%VSesh7`y|>aXa-Y#&=;L*M=HZ?OI#|JCCb|Et{o*(MfTC`=)zfQw7T!A*<^ z;9V{R(T#xFZu%c)`z*fQxvT7%_9u4)Dl9R;A=751K;>a-B|=T6zWhnmU|cK>#?|A! zhF?T}Vg)pArn>CMS$y(9Si8;#K4>M7!te^4jSBa%X4fV4S4SL`6P2 zTFWcxQX9^hN2jUH&)H8k);5V-xjSIR_iS-SY$n{^{Y0M3=|Hb|WHp|6SC(u^TtRoP z%5q$6U}txC3~wy=;i3JsIf-Co|K8Gki9MAf&pD!yo>XNSd)CnT+UD9gYu?YI_u1G+ z+ewoWd_s4gXZ1FWp2gY<3yTXJ?CO7B@FFEt$`XRTG!!uQoie;^C?xA#l`BM|XAqp< zgQXeSawaT*&B6JTIw3*j9lLCm5|xA4gNh!TZSSzIh4E;j;@I4`SQ67dW+CngKT6Al zBnw!bq!_}?f)w#Hj1JtP7UB&LK>gs!WgI!h$WFnL1y@TPjKU+pabam30*-{t%Q9 zwmKW?88OC0;;dVmH8=OxyH3BnBtVM%)h_>^uTo^hDBccZYgZi(g)<)$z0E)U^-o1T zuY2u-T;~&xZ${#?$7d1S_-w2XbvXmZpSfGZ7}#2nLY!$;Rh)QX@myo-h8IN1N{i4IvGZ*paC$#%a1LHf`!Kr6I_q)GXIgh!a^G;D`%cr7wtDZD2lxL2bNa{E_nA_pZIB zK0}H+Hr{koE+l(lATF7xD`VBJ2ycRM8cC99VoZ-zqrtc6Y`F9mjfz z3*3_2bK)TyFfM!{p%HjROjRN<&AFU@z)HRGw`Eztcr$Dvcqd`JYu;!1=7=ALRfwy! zRN<55p%3mo-*TGtnNj3aL)B?m2$pz-JjycW;Y^?37$%dJ1YMjwW0{)CDQ9cra(U|2 zoH<@e-LyulbstIC`(-6Gjg!y!>n_(6(Q0N)@UqU zcev^9nGVH>{m4m1qCke6X3^9R^QcG zUpy6jSQ7r7$&L-ebT~in-Q+7=p(3?6R|pB{YGJi*!$t3m5-crqlhgl1+t#~lDKb@{ z@H8hU*f%Hnek3;ysfn@oTAayT!~VvZdL@iaeLtGwc~dw-T^+iA-4{_u((VkiY3XoB zyi+1&*~Uhu>l~TfEAP9luLox{e$AIb5TmfZy2)!SXg!*L^!PCCXoV#-Sn0V=7!O2n{46H*mN%`p65cruSwTs4{G!U&LR%qq;h}UU`TO{LGir#4pjvoXc zTbJ2^EQ4A`4@x(MOe~?uMDZ&?S}xC$KIcXf(k@8V#Gn%87eMBrL!~Jn^-L*IIMYqH zfC^9Y48&7>e0Hcz!6Yx6_U=(xKok=8eQ&Q$1v_hx~O5BRxC8j>mI)FE#(r+vsT5TLaOP z(5i}xI<0Sdc$__+HIwWz!EFGC@I!L7n=;1=bZ~S+purru0S(LArcs|;l8JP8arvax z=k6WZGcaJ>&?4u*qDTG)#qo#uObO6r0V+t>B0CHJ8rt@(r` zrE#({+IZ@AYN%$Eg>U^ro-FgjesNyL3i-3~uj~Ex@ zEaaGcqU5lN=aPRX^^dR+v~18s`L)jC_b}R18`Qc0fj=@ioCJg^G7^*jFsr^ffcTo? z2)CIeoucHq@pm_7SqbC!^$4Rd>L_gRU(t@Vy3(L|@{)#W&fsShb>JXsMJ*;FC%N^R zANxkCde&cb0y5zLiUd>}n)ZsWPlSG%@wrf#Vf!ByX83=pH$1_GGX@~9L!dPlRu&~p zu8j>(#4~%&o`q>{)$sCKeFpt?ygD?o%rBqu9-ofB)zV8)HUkUI-@q(r>E!%!GBbk= z{`7J{=9)rbEzJ3)Qsz7qatfk|mo1#}G^QUrcm#RvA7$1ajf`d2)?`!+DJV=7@6fDe zJb#$k=U;|J5<6!_mxj5Vj;+Py90)r))f!C2Ea6Dd<#9Xn40$c6e5bt?n>0d?W_*8S zh)FM+l&F`LQV0TTypcX+B`Tm~&~X19O$D#1%feNR(i5$O(_E^^j^>c|((XRGTrDF< z$FXLAT=+A@Fl8QB8mmv)`yQGVMe41o%3K;=+t;<{a#N3@MC@L>zIZ-aL%2ZnN>TvB zpuh*ld}PJ=sn|A!s7iykwH-njr-C z_B2RbTQeycTwHgiuLOV<+#s4{8%2(=L%Z#TAulT>nWg>lqVsFw@n^#>?k^^{R4@;V zc~H6=qqWmmYtK$i0gzaknMUmsVCK#GKFwwn`BGze6)QFUyFNlcxn?UPm?-=Pen@a^UF3nQ#x$4>W9cWyYWX_g zjBz(?;fua`9a8fYFXOgFSvzaYP;r5s7_-}7NUGi9+k2?MN>n)ZKxvn zYgDp;Vv_=;g$|&!z?GDID_u$E@vz62V&vX#8Tws%MHLj`A^}`^d(Au^l$H3#2yxQK z1zKWerIGT}HLOtsW=-|wQ)F!0Efvclt+)F6_zXDHKNDKAydYyd+^5Uy=FV8o)gyYe zO;L?K#i~C0O0w1kdhCv$_+N zr>`0AMw1u3Lc_C_SPSR{T@ypJPD+Z1<;K(BsZO(*4$mTJww8Fn$9}I$3xa&N<8e4q zY2Q`o_-4eR270b5K$S4MmLgf@=Kb8#wQaKgd2mSNeFU(VXZT%8%FLJuYqy(Fn9We> z99b7(7f&Eaka77J|H;XI5l8`Ag@P2mE~oo1I|q*UQvNHeE4mBfu3d>1kgsdhWq1wQ zx>swjcX1c7w&XnUbW0$-$+i*Tw-QlHM%r!oec(kYv3~pIYd?J>Id1sj&KLDUf{r$} zdY-Ik2%+j<*nm9bOY~GA40RCNWYM@E)cs7`BUF0xaJ>pU7hx?kU-jx?TU+%r(8Xme zQeM7rb4*k{v!*Q1oV@0z_A7CjLtFhN$=D5#C5#MYblKis!G1GZz^qO1RH2r74QH%P zJKo0;8wI8IRBw0a6xnfw*S-xq-gA4?TZO^3G@;$s>K$>W8)!MYr^=9tRU49b8I!Bc zaMyxVa#Ur9{fO>3>@HgMjSN_fg{WfNo=U~gP?s^X-f-#~ncyJ-ZT+dCJv5VkXqNED zK}f>|3wT{!k|mZ9zZ0@L-so*9aIyRkIe?J>y$^phIs$b)R0NWX;;qzE{_c>_L1n9^ z()bsZQJ1VrI|n5n5zl@%wCyWUNQzP?*Qd$+V1d%p86`nMftP`@m3DkOXp@Q!zoNC= zHOk09pPNa5+q4fB)Sy=7oinB1fofYzi70Gl2T}uXy}7$g9m1l zRUPAdPre`z4-bOu&tB3Dh7hg9zv6z2T655IttoSM=~fS7ceYYXUkBHcQ|V?*Ou3ba zNX5o^7yVS*`zGk2h{E(#&xmPisyG646^wjQzO_Bjd$WsVimbf#(#q=UYUjC})(}vo<7i8YuA^+Qp z{4MDAR1kazFf(AsW|C!QzWeqEPO6bd+=%&dwKMJOhbHA-TdNoM-$>C&BSo%s&t$j_ z+3vVrsczm%_Ipv3FmfMZufH|0l`7|!;bCcQYuQ?yq(-kNg=T)(;i7yX)hdw z+Y@DHKkf+d>+}dVE{TrCYeBZK9`^N#8jKk?O*{z$tvm~G(Ia}AW8#3Wb{2F?@@-LD zs&I+gy8+dC)vGsN#V|qA&@ywfA3%Rrou$`=geX3DH6JZ3aU6-su}khe9CT5S)AR&@ zXe7yv?X7o;#1Vat8+)Q+!zJ+0u&~#0W4G$vgYm?oRY!(-_YfaU-}(TT8*pedwRfD{ z28b%TLO_w?7EL_1%Ytx{&MU-SmpL?d6UBC{km69Kc?dNUW@R-rS3%D?Ebz;4?eQ78ESbIHC#z)XfkKq!SZzx(y)m&^?nBI@ zb3$htlRf-ROe>R}G_yZ0p9h8%Ds_CtAnE^S>iD;s!+_$2k&^^l-mY)n0x4j7wRg}! z^K87ge(lyMomDRRHQHf-P%B72$@UdHyl38|2$t%9hQUi#LzOs+U_W|B36XXubq zd`~A0?}pE*FoWUC`(a^3ouegWc|YA5m{#pnS-n;PjLvs+aEUQg{Z%phww%>xL6-Ys z5;wt!U@Ot*&MO%ScWlk?_y4%mV_##bzPz$g5>mjl+Zib|MbbK#N*2cbGxl?XG)YPF zs0icuCcprligSgC){x0&lUQ#{tuRmEw@{!FDC{Qu;1PC{6JUKaY8DVeKRj*Ab{>H< z##)IT)|MJ7FoN&VNf5s_#UZyL4=Qu6bv0>bwTPd?6BD;H*dIl8p2S*)zni*3Tr^kc zH}n40$vN}jk?AE5iO{s;szL#%Trzv|ar)I0qK4|6$(AQuBrW>zW7cNs^X0G z*nANlp5ph%#tu)Ly#0dom6!lk$}@|M_Q5vTUC72?7acny^e2~vFFg%Q?unt9nX1r6 zEFQ^>;2nXOpV@lxSTB!cz7V}X-`U~y8U*~nR|Q}Ut@e;jv6Yb0Ob4d$)6G z2Yd!XR-AQttVy*mT+gm{E*o z>ksenPU-_G$|qlREI%R;3(OY;G0_l66u%F!q7#AMK10ad-f2l2IX>Nm&df5IlrQ)%h z<0T(3EfU4)RKDN^e8%=~R>;tF_K%^DI^*X0xxu~-3cdkVj#&fnx*1-b&-&A04>SY( zajL$S4J`T}xUsKCsUcZN7L9|G0!$CoNL;rptsV&RC(*r!&(u{5N1TFYBvVrF_ZD4V zHAAT)FB<|uYq`Kw6vh4P$yQVn0&h{9{wfxbeJIMyp)wC((oRlkyaokcn9N7S*n`83 zd6ma%0)i%)eV=WBZHNpZrI(edB_xrQIlW0k!!L%1n3N?5*dsETYueq_VDEQ~oe`&1 zhv$)8V&zImY-1ssAsTud2A^!j)uFL??zRzcl@VW~m2`GI|K>YFBrj=ep-Hocl$9s@ zngl{6e+H4~j9io~3HV{Lzq5J1wa!9xef&KE)}H?JUT5tu$i8$^ZsIbIG^v!t)l+Og z;1+!*q+Ywb8%n@jjg@bApZ%-ZfdPftl$p%4YX1rU{DlLhl%vqV$t6HUAw*u6*WkpE z%WqfNzY?q}&*E5I{cP^hYRk(~hr%xeCZ?cv&Ct3%U`V@YVfA-&k%ng#r;>TMZT)P% zz>gQCEB_A=a{@~eCiL|1QvCMg%pC5(fZ;6zLwNH%CruTzdh?J> z_oid+qQrG0^HMdEjjc_~vxs3^kjs_XZ3R~OEgW?5G0Bs!9cs*UZw?+hkPJD3T98w6 zQ2n*2#jwy&nUpF}9x$F$Ena2tl*AZb)^K!8MwMBaU>wK#0Wqh#Sj#J|??rX?olF73ZuE%T0{9{ba0H((>B_8;=KM#5cC(u58Z?dTA3f55^rpb#v!vFQav?tx)AAG?Rgh~)!h18 zQ|jcMq5XJEp=JqaJWDwH=L;tdH({CrF@^0fiEY=`*q>V%iznifrV6rHkA_@9D+hr? z(L;#w>!$)K{d0FNkKD``LXKE_J)o$?`!ndq0S&7#E=qV5f#Z9@hJqc!e?@@87ZD&D zNHn=&>EeOmf_*Q3Hv**p7=bG&Ilr4O@YMHinLmEQUM4DTR2!U zv^UoIL8g3kO#lCirrn<0KKowDJ$EXvU%__hgwHF6#8?pc|pmn6xn zV@#)q`selb=|Y^_{$#F^1OmBCVT#yJt;Muo@pCzbU)KnfKRD16xK=1~VEC*iz3k!X zkfoM4RjITTjIG{opV$ArN%P`c6pq}{Q4#GKPn&<-PT630e*|cPBqu`Qw&qd+(uii+ zm+@kf$Dl-Tsjm28TORxs8~A5;F+K%7CP{Zvx*rcQ${AA%GFlWSD~;`PINUyTa z*g85E>L!~xmyDnZ^4&c>rZ#Tj5f}_9gm%QL#zpiJ0=T93))K_RWjT+fr^6KSZGQw2 zKx~OE<)RE#o8YS1E~=d}$lP>@DqFG5E+gR@b8~&Cj-zRVe@WT=MEsJ2w3KETC+t?K zUgq*##mqe=V;pwT%3zl>e4fKv$?O8Rh)U}!Z|TqZD)W9dQ{lBmIjiqFnk@%M;;o~u{ZTC#&*&9BL5yKkl z>qix;a{gc{mJ>W|pkT63=fOLNSFRc>>&ydPkiw^}eWOX?HlG|f5XDl}P9 zmswXI;*|Ug&3RgZs+`Tl>1cN@FZ&b;xx2c)km#yx&(lm=vER)=cpCNz@|ZM@$H!Yd zceLnBxcitJDUBZz`0eLUE3pf7oUdE+G{%#xdILq-M%2L-6`tQMOaBPWQ_9wE1;sspa(wPb!WX=P2bj{mu-M`psZIa9>Y7eaJmjj^H zm^!%;=uDoMN2TOZD=kYmrPd!Cos8b$RBqURB4YG$@**XL?OQG<8}idL!EnkoYB=K#ifm$)$alU2m>!>Cif4G((Z$6ml#mEtfNGYS zd|yY#AQWl1f}Ecpwrpkb82IpYHn5=mMj^LG6>suH|NgV~YsTnND|IjxCA)93jz@K* zE02N_Wb(9&+`h?fTJrsFa-|GWuk(LXv7^oJLE#@Z49ZugeB0+>zk;&B1{ z#l?IIagzM&kQCI`RDJGKnDnXDSBi>|1WL-!9nEww4uUj{s_6T3(^GO_Ki&kH9yB+z zsA_PhJxlzI;IpXHXCmfFGh=1y(Bm63nn6DGLEN|dblGWpSx#qsaN}ITS60mX7W@Yi4+NC#Z%A@y7rR3#%*cU-HJ^JyAi7 za^OV^?;j{01Ikm0Vu7JwI~X~I-TIU0fTu};e*VThhhH}!$ModL+sTkqOBDHXrPYyLmZ=hjsA;|Ak`Ia|PI}!4qE63P1M>8{09Rnd_+P^dhn-+sfeZbQa?p7=~0rMdkUagazK1y?~L zCbQ3x>+5$?eCj{3q*{+b2oH}sMps`O`ZoP|mhG}<{pltP3rpIRl2wH(HFueddel zmX?f)ko|i4m|;;->N@MOSxe@Ee5D)UhFH^ZRmjqGZD_vRVfb`xPIja}s65H~H)ZB; z?c0CjglZ1$)oEK(8$H=yzjqM^{Y$(eBVRkwtk-_2o_D=j|c^ zGVxDHL|qDbhsIC<1t@;&Z*`$VFRCju7~8X?>tH2q)1TuZV)eHFQ9b|9Zv*woD;Fz% z^?zUS-Cd$@;`F9D&)e0u7bA4+(&_c$CU1SzKcKtG$gZwthY^ksJEw&reA6S4w-=Vx z-h;U$c@JIP%tvhrhH_ED{I+1&#?0NH*(m;p)Lo42dn6Z+23DcLOXCld`RlK~D5`e! zFRJ#xFl25hMp&JwPykj;xa9Vt;-R*Fx1$lR6rJZY(~Y-aj;z|F+myWx?Uo zb^pCc^>=uJN;h~x+|hcH!K2AOXzT7CPJsFSOikZ{D=258zm1=^WvCMLqqgBRQZ1f3 zha46)vgLN?(52^_sRu7Unch+Xu8;C_pegD%N^xGPJyZDq<#{X-Y~Mn5i@HU4onVG3 z7HSk9+H+tB{zbvzrzdwbX}(trbkh$yfd&F5h=^;E$VIO-VrIh^@0OPQV?1Q>6;#p8 zkN|v(253Tp5%B^=Qi*;|bd+6rdJDaB`4<8W&QI?2|E$IT|J?~hR%$Ec6JWAERo8#S z4pwdGzgBITXXv@VFTX@}a;plfPFODbLo4Lcg54!Ai8xJEmp|8KxG@0@3u-$(Ex?=) z=8IAu1wh9+{@qV?;U_4;J+nIjm3bg3^sf^L0>~C%o`vCiB$ei=U<^mHt~+{_Wad}B z^c;c#`8$8@W+TQdzUsN_vqcMv$~W5H&E}|TNjUXW6vr`BLO&?&Kh$|LQJIm8n$%4` z^h!$13*7$ycGVJKS4?vRZWnx%GQNCEvHfOx@|QYyUx$Y@9c>R7gwg3XwY~fz&f-)z zHY|?st?#hr{zxv8_Mjo&7bZg)3}$&xSe_htJ2Pt0w1F&t>;;e!bQw;uXr}mV|E(Ph zY0ke))J4g!R&M$pi>|eT!pQJ|O?!340NMJ=Mgf64@=&dgAS}tc&WNAx_h0~oZ;}_l zTPz^e+=7vHo8JR%{BZ)zKf>hcQuT+NIJ1Df!_$A{9j;uIpZvg<2j-YUla)CyR6jJp zkrYb5+khLiw{}!eKWg&7A4@EMzZ;Lu7MH4H{7z3h2>$1L{Z0xWVz#vO+-Ns-zLY0p zO5JEav+@fdrB3o02L18+=0T{K%`FKSpo_Q#b!4AQdp2Kv5*MZNMDn4xJ*&^@4J#gY zX3trY?wOn$zXBIKU=S5J^aW{$v0j5Co7N84-QxFvxfXchbRn&t4Y0$NUsnm}D=50T zdE>y%?oWr&OZ=--^;cLby@^F&jmRmO>Xo|1MuNQvQ&iYGD8zq?$s z@NNl|*SSQyQ=u$pU0Q8Tu=hK)2$ZF|Pg)!F_`*_sO)D9?!(S8w6cp?nUR$ny>I&&H zng1Vc0vhfY9Nix#kEB%#sHmv;Sy|pUyYtk(cl0q}cmZu$Ur@Qp?(DPOfkPgB@^yE+bN^y279iyG8#dKn z#K?XZG%ge&r+0AD5OlY7{`?s_GOj5YLU0fpU-=JrN4xx9gj7<<16Y=59a`^V|V1(x=!$k@TYPNYNtR&s$H-MJSb)aPg1FNOkicnKDj%Y$&0786}+>U%UQ3d8jwa{JzQR##g?{#7cZc^PRrcGcswYt2s{s@`BiT|=LPe4?l zkD2?*mD7j(^aBP^?7s{-P4Ca=*Hr+MbX^+o0R@095T3vUL#-9rI6 zU_Z$O?~E{9M2N(YO*}=1h_`vouBcXs<-tW+hZ!|WbIU92h-c!5WVUv8eYBfffwlU2 z+&ljN3h;lK4hW8B`}ytj-qA@z7btY&_Q2uKC}Ht*>$US`HcSLMQG&{!&gZcVcoPbe z=U$(Hd^%cIsaE(+C?99{IQ3^#$x7Yln$Y);U?^M;U5YY9O_rh6_J|0%p8J;q{ty9n zR7O8wC^fyhMmnEWJ_F3%-J0`+{@P}I z`PG}3&kLM+|D_ay+Ra!G?WLOBJ=~4K*DyD?Dq&)8bbo(rHJd8>t|$m{O{{*z@%P>I zd;-|NHCH1W)<7hep!g&4y8MuWitoI-p-pPx72TKKMQnd@I(`WoWc?CrUh2W4c=B2* zkS%veK1i!F>LIcXWpx-+YmsgK)a)16kqw~k2`Fd96)mC_U_<&|(g(2wd10eWzCc7M zvkhYjnvZiqt^rs}1G7^-h)$n`{QW9E{g;=HP(N$Aeu>Xnwj z#KrkVmZQb!$*tn!(O0uq#w?)Fqr*w)fcl1`UNE8X7r(2**Y5|q801J9cwCyM>IjH) zensp@L{HKjN<+b-5JT)2->qMd;0iqJd?m$-fq_W0C8xUd+w@?bcVO(Z&DO}>=_x$~ ze_^&9FBd$EpDXTQG-+=k{~2!h*GOh5)+;xi)=T6#nPr1Eb*YeW<@reiP#je`XsT282E+S^SOz%p_#S{B<&ukce z`U)wcdBX02p{FkD+f)|=DBoi2H?fK`YZHcmn0tBd z=*K*F@4T5Q4J~RoE^6NCe@#J7vBSBVl)GPPK`mhEv_Fd6U1;B)ZQ9%39cT~T8Q(Gk z5_%B~zYj=e=%xk(X>}Tk)H8747B>cL7Itq!gAy&iIFzN7y(prWQsJG#!x z^b)Qzl)|rloEK@RkOcI+<6_6m8;-J#|DL(|QC2DmUZL+e#s$lntpW3N;)f7Ji^kt~ z`C{tYa6FL);&%JL&rqi1Kn*26QefQ9iLb#kt@@N^5wx?tH6Fm&jl_Vn9Yl#wbPQXu z=II>jDlY{;vrR5=3G_#z=Y47^d*cvXD=A!q0~duR@rj^T@&tD|NYUX%GjvJKV(|VP z(dJaU^_NSpZ!9Y#2*NVNI0w)_8{z!xsnK!f8B-j4c3@*G%AXKQR}V!gFc3;!l)uju zm9oGAmx5qOJBtYnXnZ=>Ru(=aI*qyx8(Gs?>g|uBTRvo+ymt@AK1Vx!Po`*3>nYY( z19#z4tY~6^!W|2ojU+85Rg{TlDLrAYcZrXQW*;gHp;o&v(xaNk1RDbwzaL;Q@}H*y z91t9IPsxJ+Iw+`*QWmI7$~je?$-KQ4^!SbQhJ0VO@lkiO+|cUa+4>W9y!n;VBQq)d zT2bloKnz!x(_yx+;*!ei#RX}0*Mh8DjgCMe?v}F7bMHlCH+r-k4@M8LoMbp~?2gDU z%&1kuqC|H?ZzBY)=4J2jem|;zJ&Z?fvhbgWcmTDbaklnnIPi?U75~rK%Ll1q&o~eB zxo8jHNVw$=ZCZ7P74jS!x{xMivmTZ=5>rlNxN1WM#V0CDU%b?$eC~oY8g<)0qJwT} zdQ4xZ4k0;a#UMEr6p8pogc=a6io1L!?*Jx1cl!R@FkGx32BPE7$IW8#sI3|B$rzKH z)=yM!R-x!PWmFy_pPQK~Bau!);`Tdy7%X|*Ecc${-440fP@nLe{57Oq9Q)4p6ln1J zY5JlG2OhB(QVV<036(`HMv4RE)F|TOjxbXEepLS6Lr+P&KQ}D{wQ2k_tA}9V@e&_e zXnFWh#q7Th5qa~Zp-p|?L8D$YCB!?}L)mVtIBl=RrX#0D?5u(wIh&U10_To9@G}o{ z%XMeo-Dd~|Ys5d_#vi9go0Okp90~q%b=Buiq*5-xLkE%RgYhYt7Ffl_i*Xt&CEnMcQ&Me2fA7gpo$Yb?mt8r04q@l^>g?mGPrJN{ zI{F%|n8D$?8&+FmrTWhA!o=7@R=9b-KD$4y-{yVwe>(IYQtxXc)BB8O`vZ-eIuero zR;sj{9v>JqY14wU`QNvMXZXTjQOThE6;;-f%3*oztQVx~WnBGF(3AS zKLY9+$Du)x>ZIA$^qw$#34U7pkC_w)sMRCKJQ@{^x60aJ-O=88t22+`UYzjfL4*rF+@W5FP zdcb=}I#R!I@CWPIqt5bT*QV7M^L6LY5X#S7zpc#Qce56adHNc>D@mB@3K868WB}0( z74-1z$vKSpi2a*AtTh0VwG(s|@YRL(Vh6YV7~Z_|?Ck8~!_PG|azM?sk;a-kEWBj+ z+t4Ac@(?L>qPX$kO+RM)!YdsSrO(7K5Rh2JEiJd3+qo%e@hIDo+jd#}CL zTyxH~x8iQurCvI>QoZG8=W!ia?LC?8C&=VK6OEZ9S$z1|+tlc@Wh+l(U;kNCj&ZkM zcX;UME(HA*(GDU6RBE`UDyY;H+`#Ak^>i5N7&%IidBT7G zPbr#_oE-I>?4MEL-NyuAkY0tSF4$AHM8%M~(`~HpE^C*WrH(5i1JKH(tu-{J-jpJX z|2md_v|izE2eyU*=>1wvK5&%111m9sA8EBnf1uo(mlXs5WBpQ^X#dYM+hIZ4NX_C> zPYOcs?#aqz zw1zD=PRd^7KHzyn%6oJm??vT1o+0Hu3{wZ&t7Y&Bqv=ZiWA*<$uha*hkN?Ma^hii9 zjYg*kBq+J~x5-GBwChsudc}qoir^pJEK#JGs=8j8nt~tdZhbrItgf)x za3h_Ptwr|I%PxBNH^tl_55XUUdfag9=F!reI78;y`9E&Y|5`!M9=nMHkZ#oGi?jab z?${GxjEl?I~tZq9pZ+LtHdMV4OG_x zf|hqFyl>F#Y`VzDwQ;+*KAo(Iu4bYhr>P9-XU{u!A?_Rn;pfTg6IdN#$)n@&iKzqs z=HIQ(+hiG9eRsbcrpDVktBDmufyc&|3i)lm)KD)D+c&+kPgXRH^*&l0KIi7RrG=Or zx+w?kkRnd(?cFV%xNZAdh#;vjzOBT}XuUf@iqMny$@ixI9j@qpm7KY}^;N+TzU)Mm z7~sYIm7(hYfC*5nN4EBQO^ODFc`E!a{Zi;#Ed1N^;GM6FT3caiof8Kj~>+db;^}C*^jhnegcA!7h5YH^qUZQYQgG zp56T?w4`%<^K=K>=YO|3WUf77{CNCJ#LQSX38BEm`q)`tQ9_iO zW+q|I?@8wed;~tmo&C4Jdn|9T5f!2T3gCUT>!Hl@YV0nkTg|}~b`6qy*p@)-;)308 zHXBB{D@s!6U8_t@i^h}IML53g7Fd_Ftm@Eh{pMC_?C}dWSIH;{G{zJJNW6tK>9{<8 z53*a#zg(3UJ!jBkXW*n$T=Muzykc>#46Lhq08H7rmc|V%F{wU&$-HL1GMfHr`(SU{ z_?-dQ-ZbrTZ0soFHY?AUuDa)oL&p+o%VoRCKrQ;kcX18-@@ESpDRlGwURGTBcZJ~B zmBl9Qti^>PV*r(8K?Q=5VQ!*RtA7897>c*)yS{McVM?zM&+l z?O-=SDCrahUXW;{>5*DFbc4Jb_p8mr$d8HZS^a1rCh6LK+a72Sbs6bCeg!ZbF&q?x zc=#wVv3}BHq#4EN%=XJkjWgwp0pEWS~H(B zNdp@N%^7a1;KDs}RA*JM`}*|ccSqjmTC-D53+7W^N6`CSC1(69$0=pfNMZKOUNZP_Lr$GWAnSPJ@h!Hf7a zQ>SOh4>lb2Pbej;epZTGSn4jkzYP62J?2B=b4G4gp_>fYKJGRkD#|lXqq~EC{;;-6*3UHOU$d9|)Lv=l=WPC&Yso*F1Dv z64}1MH&ag8zUA0f97c}hj&unten!gBW~X^k+%E6$vK>Edui@|^VE1Kp{C6Bj+AUi45F6x6xy*pl08DDeoA>Q?FBp`V?U z!a*KSJ^XeJDFI#pJzOf&5#nEu&ykD~`-nma6tx zxl}FVw|J2Gu-%IC&Ow^nJJ{#A+Tc3*2$GH9pQ z{bx(z8w)s@?Kou$!pcm1vJ=}0_lHNU1>+Vva|uWqeKs|M++Sr^7Tk=p)K7XV-$;lv zHyYkrW{qA>94{%|y;D!odf*hLh;R|~U(ia>c%P%$>0PWl z(i@t#7D-6(d17r1N_aG3@I#oA;<2eHQg3+|(B#ObyT1h#-UM;szvbUg%@7qcV2Tr*s)qVp@Y|e^^0VMxFqZmyyQH7CZw*NmV?>9n{{s-rR^QpCS$WP^pU+jO{nQ#%@^>NO6?E7nInm=iRlb6U9ThYT|U2zDMLAs>q zNvTnk^rEoh_tPuOUsJ&sMoQkOtBaU<#L`5DNB3N;GC@?hTBsZ(7sk|yM{_*Buo1J6awT#fjhz)q_CeCIwF{(z>Ady&kdys z69n|~jaN#mel*NArB1eWp^Mmd-hdFtPsQ#MG1Z~GH~lj7i)L0Aw=DasQ<@_j`tfgu z3$5u$0vUKP_LON`%=)r2x42RHm6p#^g7_=jtD~0H%c~ut@{5hjx_Q+fQq)c2+v2XC zUmZa+!({gZGWuVyq$7$HX)E!|gUmK#<%7%5v-_#MHKQ+6LKu{?1>REyFg3!k2MnF2SxM~)gS-S@3)dD`N3;Tc>$FeMWf>h`6BLUk+@7q zTV6sX$YSoz)`6DipKoPQ4RzU_^H(|qik!RVQ75qK0^ooNE6>h%;XqLRuQ2XJXwWeo zZOdKIx^fCcolFCB@Zfr)?;?0fmB*m?MUIiwC)<~mLb!CodIPtq-uqM=2By!Z z{tk0({>e8(o^$>X!NO5{TALH7>H2qTH4Lzxhb}y9;i-$O82^Vp7(>{O*Tzr5 z$*raSP7^n&z=f_k(eOX(7Zm)w2 zW(`y-M5diltQT8-Fz5Nw(zsWc!xh|DX+`(#<+V0>tY2v1`Pv1k)afZvXM{Pe-rK(& zR!2rqZa5t;ouxfuFaG+D1kVxqZ4Sg*dxF@ftyf1{OHB)AD*CPmr=ekykyxcTysX#j zUD~N``A1ytR0`wWwTvVxG;>VjPXu!bJ$eL)m&y0d+K%eA>j56u^$48UNw7OP$ZOW5 z&5Ko6LOl3gCbxby>Fi?Oa9dHJKvYA`qZag~peCzDS6 zJ`;KzgTm;XeYUd&LNvF;xi!kC5*4z-_+q`9@|mnc`lFmnRzvxcLx*4|rwz>Ac-faf zR&o<}8hogT7{b;^#peF|k859tKACId>L zeILYl9Xw7;=ZN$UXd?$I`_H%60P`g9U(8d`QT0$)C}EN%PO)K5^4>VfkY$8^6PEy< zkvKzG4-u~h5xFRNeeeXengQ%t(=QD={X(l#-Kp@9hKk`WL)X6E-n5ZC)Akzh&uymv zW9LtD6!H$Yyt9Tl$F!gZHMSzz|ICGv3Qu_sImc|Ul2F&Rj=me1K(2x4CpRzet4@fM z?TDjxgCv|5d#=C;+eH}v2yw&@qza7L%)b($8VN&rx#CBk(p$2HFbm$<#5J1H|NUSe zj|M5r+tX{F^Pds9a}<$R0rBTZKvHCn1twKiaEa6n1qPsg_hc295+Ix@or!9dsi`4o zph@FuZRFkE=5pr4@B8cwsF7%)Mb7Qy+Ea{xL9A4r7_a0@5+;FzV1WejOMf13ds&+i z7VQkZvuOrsXPK6GS(uli^YWveh17V9%QE)A8s}r(fN-L$vfiJCXrMgK#O&hYqEnE( zVN(A#Fo^B}Ld61dxdWqD+xSDOZ&AGkI>IVk?lo#nG@?X4)q(w>v>Ym*4x#65^(DN% z$2&dsa0@?^7BN|eW6Kc_TTC-VzU02zwWv2tYk^HE*iQ<)xQHJ|!AQwrZjh@2AxDLEx?HZK%?)!3z7fL3IcR1|P8rXzamnb9x7;wrA*XF) zxu&*2_B6CkA3j2+E%3JWr#W~O^pAsWSy+G2VP`?ym#tUbS*udr#PVOfxZZ!>P2!?e9Ldw!QIeU&bFJ#P3sM>ra+gn@R}_WH+HQbnpy@-n6lw9RqiI6II^171J~KUUi#a23 zhn@RI)T4soYa0M41QJ)r(C4{eUIzEf#M_s(zG|Gxd)|6-x;~gL`9{ba>s#q*r3_rq z*VUtfNDL;fN#Ufi&h<*a+v4mh1X@{JY<{lVrI4M3Xf?ACf zce37oE8$$kyT5Qbo-ZaIYJMLo4o@HB-4{Hc+xzzY&B*v(8!q|73v1)qPgEbF-JF&; z@MRSYdbJNSe9?$fVyv8#u$i)7+YDb>YGB}A#;#lYDnEY3=z|k?C?|xP zvCNe_`pShi_jmXlnpGJDcHnSgIs_I>cPvg}i57LZB=|#{X(R5qVG;Mil&^$Ceaip_ zT-uGmEBw>x^ByFQc8$N`G}3=N^hlahbCLKG^}+tdp3Q0Gr_3=LKs3@AQ|J3C#ijK- zErc0!-?SgmUpsP}JmzlIrHgAb52n22WwaOsphh|4PQR?J&?yobJI~m`_Hp@rVp*Hm zBYqblx`Vm4*z;rVShUbc_+9t*I0eZJk3cO9VQ)#OEyJh1c7?fG-xhtQu4=;w;$2>g z*1NjGmERt#aNfUegCdTe$)O#9sC0vpOK;5iS^BPe;=an$KIA8l$lgisjd+AHFc4|) zZH^FUpkoyka%~G|M~p}J7D8Rrzj+Z3D4B<08nT=XPyi$bwgHfC^~E5uMgBAvH3}{; z&pl~S0))0N80sEA!0^+DM?M-Op6SUv8*EgD9WAqUVu-@yOq;BQdU)5`p9_EMqg+aW zzERKj*qqOKL9B>mEz{PV$T9)JUg&@p6MNlpz&H$w(+#`)^lvSW%-dP|MPhGincMe& z2A^DfS&mizA`agG;A??@Cp^Gmu-NPH1{4v*CQi?5^{+)_?GxH>#W%aINp;CAAP z@y4rnQGMyU%zar1?lR|zN^jS8QLLc(-_zg8haj>77C)Pg{Jl4Lse~fg%@AMmhLwR^ zCB@g?eQb08JTYo&Y7JdDcSN@r@&l52IxdsdUH6YG4}y<*E8nh6Edls;*M#OreuvOv zfT-A!h%SClCS3TUa7vHr{=|Y@>zC3=Rmf%i7V}|2Kr^{f5Uitpq)(E<@+EVJIAQrc ztDtGbyu8ad+5>*2(HxV2KsUDQ>sU~sxHApQo~w-4Ng{r=#V9b-b6t6KI;l3DDO}7b z_X=(H%z~cJm>BM^LcL%5bOSseHJy}jFjA5yV6X5nn;(wN(|C+A@BZpTWgR#(%i@a1 z&Wpe+x`%F9bbQ@qK8^_Mf($}h+>rM9A0k!h%dQ>d)W~R^tG)N4nOYfu+ss)tl2HL^ z8Co64ESRkG0&>}muSa+-g3&05wMTYqd_To?Kw`_)arsL^c($0nqA$ z^umn+^MXpm)IRF4AN8*6q8Yu~1foLihDj%RY>Ilsi5$be0l89#P#rpt3ps!wLcxNYFPK7DxOL5!FvVB??gEVR7)fdRFWMzP5`3BU z_-YLlm@AI;qOOEo>eWB%$F=8KtVr=E0gxa060UAree1^fb9&!wl2(y$fzp3$cxVeLD=PSVc!!E8UJ@)CHBi>vNCQ@#4;k4H&87~-J= zb6Umnv-{P3y=nb^57V@7oF^4lqaXYmsAooL{1@XD-0v71<6-EBYe*c-L?F)iZGdu1 z3!2^#u5tboFk7yQEChxtMBOhPOUZ-`?*Sw$I6lS9*K6Q4?&$4KhZdH z*GsBh6Y0!k|dF65SEa>T2 z7gu|#sr3yKa&HE6(73FQ1g=;pEV?cgm5-zuuAEytWPrUgeV!b8H?0y8*H~md%<7`W z*ezw+R!d2{myVNhZi&n`o_QnTvRYpJLd9saz*V{7%!9866IsyMv;qP0`15s#HAx-2 zsnaljDh6&AifQ9QWb^Z3%_mO`K8XxRh#_d(H8(Ss9vEZ!>#eG)DeWfx+6t~U>RJb- zwJm_tGIiB+^l)gl`*ngtg+=d=M~JzZZa8eEfKCY=g9ABtsL>>~mz?toIK%J7s-dMPM>QsRfQ(@syj>sg%!$P;=?Uzt8Cvz^*XyM9&FG=!gvahPS2MgELup6_k>Fl`tBlWa*z;E| z#HX0!`hjpV<;kE3Q5w2g@z>K2jY=vpp$rj=+sf2P;QU=bUl~^0cn3aXX+FrRuPSFr_avati z0Mr-c$ggE^-0}dVw8kB{QTb=@s!9$}!RMrP?0whCig%S+NQ^3=%#@|g7moTBFCYQZ z4kq3djPlH`A4y!SLIu){6h&7WDJN;upwIA?YPxTOXUVyf)Sz4%hwlRp5rmD1d#}aq zu-?8@KINrlkM*zf+l0yPf|Oeq<&IwlVK(+IURIazCQQV{JwnWo_NL~}@Uyrq!vm2} zLd?~?npdaJo1BI4+(ocBE+67iT+dsh&iZfNY>_9P!R3o%2aOOuze)tC$8CIE!Z1jj z_RefHs(x=TQPP6ym_N2+|FT;?zSNkCUHjydo z*DcIkWQV6WvIxc4hA3t<+IGcl?`_o=&>qa(@~nGvCNyHtW41Sa_b?u?UObKF&5Ivb1|EmNew5l_TEMzxs2wr*8(|9kZ zWwM6p4NQ!B?U_DTo2=~^2f6}0nmO)eX>?$l=5}lNHg>qI=*68d?G6vO{gtAcmd`(v zLg28&mI2r;`q_ieBrN-YOFn~jr@4&Kjw0X&MmJ^RRxz0XQxdLhU|g_qhP>l^K@Z(% z&DnyUHHW_nWEOa}U-+?p7sp21ADOul=6p&dM$S_>M$vPK)e$Pr(O#+p z)E_h(t5So1e`2m|?>*~|rFS)W`P~HOq@j!t?X}cy@Ta|vEkGixGR+y(HOjND%S4S& zrA`mE*0`*6sHEO1i3iEzKZA0qGt5G*zce*)8b1hp!*8{+x=N4mSijElHg#zM_xd!i3F5}Pb7!wt0rnyIx9MXx{=Cu@syFPL4ssE{vpzl5MmD675EDE6T_*GTM7+eIrxiYI zYdSg$L+_&b!hq|6&2H|qS!+33 z?(j#s$y{5uYiE*~X@4d*Sr8v7w4c-1WHnkUGiyQSb8V7#p^*PB0Ruj2qc}L$9hoPW z`m;i=mQ@U&$uz`-%jpptNT@;k2sNN4tFIUG7@IC$g?b-kAfFP8c;ijR9oh==rNAlL*nV_23@fB>e% zjs&&11IKSkvzLyJPO+&x-H5b4(^A=cU8|n)jf5P~ic4=3JCg%u{Rwvr%o6J8ex$jz zGH$z<6;K~^Yj7*Nu@G$L(wVx~1r`a#H+v2%>(g>+%|p@Up-UrXIRWf}&EWN+>cjn% zxP5epUbbWvtC7%hPV6}Yj@1T*a5gXGy3Tt+Mg~pFzyq!{9vuaVme&#u zCgSlNn~`GIN=+^2PWuz3!641O`-zO)e@|%=6o5)i zB2IDTjk&^-wyQ@IT|oTZ)(v$KVM1yw2}UvN7MIWZiU1^+HwWu=U@ z@J!2czF#q;`lC-Nj^46z!L4`M;Uu{x-$ZwtrrS|^{95wc8l2)LG9t0;o9YmC{u?I2aW zPJ#0W-SA{ng8lihu8#t6ddy*~?bKwNPF7U^8dl^?YYU>p_}M@{QVS|DnM1J^=EEh{ zlw45_`0BH(QSTATjNqb*3~9`YsOF8@#xeEpN8}<& zS<~(B1`)(P%o(=cZ!Ph}gSkhA1{2~YddKczuL?OP&DCT9E=l59)2B$43B;WM>HkV? zm3M(Gg%XPQtS4D$Nqvx#AoKfdRDH`?Px^a4M0GatZQWqVU5|6D7s;VZCt9-ucpkNvi$jvnLMi?uQVMgTv+ zdDPFIE;urCi;;N}8;|tR2hCwR1i*zzXvD=(EAtOP*s{|qpm)?AGk6%b#yxQDOt#yY zojP$J_v@kA52tqYY5=2Ilcl)#P&6~(M_KE%yTX&LMVTixueNgD)E@Ry5X{T=@z{_g z&-RZ+OS`z)fI)}n0YE>!W|vpnX#9(gD)V!LO<*Jc#1@YjkQf+ntgajjGN zn!DizIHuhf3tiWluj9ukE3JE(BB&EZNNKD)Ze3(B;-)=PAmTmHU6wG$Ir)u7XV3Z8 z4(|mEaDn%5PqD3dlr+j)5Bs+@eJmpCRWs|K%(2wD7=EY7lcch(6pcTRij*?F!^l8M zLHPWd_Op7pDE)8|_Vq%3cE#O z#xF0ru`2HV%9?pdXFj-7gxW6xx6?r95+0Y&)nL8wIgq$p&Ye3U#GQ~gL8qFQLjOK_ zr<6)US_`I;>wh^EBv@!3Fn`vW^4=+D`aFcQoTQ%{LOS0EuXV2|L{lFOH;?PNC|g@g zauJ5Ts^`J@BXGp>t~pAX6vc{0+Wj^MKd`T060}`5T;Gcm$W#NV%jbkQs_u{Kqd-)R zd0El_+qm;%rtMGS|DKsJc7w@IhjwpNG%>3-Yr{)CWRq(Qi66~=OgM-0WH7DIuPRgvMTm|^!>;g>3Y^&U6`RiZA!Do|0RpRG0kh&_!yFvq#$h?iM4Mq z9X8Vy?g@z#ryQ0C?paQ&++t>0ZkjIXkCp!8yZoTD;CoKwve(A1TLb9*h8Nhe!w;of z0v4xtQa_KCB1I0mS)V?j)vM%TAb_5P!SHegoDfC*v0LSNU@?DfUkReX;-Nt~&uM&> zDpgJE`9KgMM3VL@nq1D^(v7(`?nwy|>u5U$z|`p-{PoPjY20ip9Ttr@67^UeDM_Fd z3-g)v%XEP_etwE`@j1jTDdBW+lX1w6@d8U7mIJuNh1~`LAsttnAouN+ah;!zw<*YL=!rC%hNCer3Us!jmXMm;iarV8Qt9nbOYj@&^SWazAQkn@j~ z8}G&1P5%ybz=R|q{F**LkNK;y1YZea6{jCUUxgQ&&}Z0;SHz|+zR%JMDjvUZVZ((< zRS=AvjyV7yCi-Bw!wpjX7^`hdX$vVphyUl`AXz*?Q3Ck-#|PZJpL~CIdlym{M#Wir z3=GR&ng#~tu$v^J?-+Rsz~~o_9Iy8wF3sVPC*aY@oY&>%KtN13UcVm1_6q4RS2rzq zC+0QR2zqVLX{kD@z|v%6zLR&dHn3Kth#UVX?t4QBH}}V(Ka|EQ3(O`EgdOoGzg~w* z9uB6)zhWyK;1N+X5S>iBmIjEEH`hTgd4}x|p$p!`Rc_SVaoM~@^+zIh8zOncA*=a3 zAFChSxoQ6NaoQ;UAw=%S(SK_Vj>>G2#m!RfVZ`v>wsY^qhP6-j*!n{?b znde)>+7ErvwcTo0avJ|H5kyJeduiU?>^olUD7q^)=M$vG_SeaX8Q#+Wg;{=GELtF2E2%-*qf)ZKnbW}Lmcq-bxQ^= zgB}~7%;t*x7LmGVug{cuo4vxU^WsCv#C^E3(PkJC$KVARiI_8W6-;jt<&K>c)hR~f zGnxid#&z(O#AWZ}R7spEGW2zZhVYt9tTT!Cs?Dm%QEF$P0lbeclYaxy=uR@Fim06w zsmdtdQjbaZrx%m%x7)H^?D;OBM^yVcA4t^F_e)5)Y}y*dDG=2_C@ZwAYK=~z7U#{N7s?DeML0Y}sDNH=u>3_NM7HKZwCa?dwT=qA#7jY&&L9%n(j@fQ$2WJiovR z?drEFJsJP^2^@(BB%J-jG|uiXoZVqg@k_&^bLy9;mYY>r`9{CKqV>o26bj)SQOLun zAC5-1)k7CqKo%T!7XYr{2o#-O*7eDy)^NI4>TI+-ofT6}eFtiECfu2_lYiRlNS6c@ zxO8{71_gyPwI9?u=6*;B&&Ri|a`4kJ-e1sbc~H9kPZEtvSBGDN!#t_4OhA|yWIW%{ zmlf>4YoPE9$#X>Nb?!O3gUUdH5jU!wQ#P2YiCs`MJo+*ue1A6D)~9?>L~Tc8vV>xI z)cK-V42-)iPT@QyP7lh{KDO~3Xc@B-b+sE=2sAyybITt&38$!K8Y^=}&>g4elw()e z#7JcA(1IAJb+E=CqiNW>JO2T4Y@o;m0Tt-XrkD$|KCivCUW#0Y*#uF=!B9qw{lSI% zgw3?MHNlk?djO*`nRXDG^|AJviB0an&Vhi%v!+n?9Nv3GK%G) z0uiscCu7(m>rvJlpHI<*GjKv5uT;EFdiGA&DFUL;3ak!inz?~+K#MZDI2WQvLAZo| z`dzYM-Qu*5vwVjSHBFh}U5J1KsFE8oVx2inYLP4QybqWLMG(eTfu9P5RATPLD{``( zD2~*nyC_}6Cmp^<-?vjRf>)wB?%_d*7V_lMUXFWwwt z-mCHrc)POD)42z`^OqmtO!r)gkveiYU50h3FDpco^D?WBnBkA1bmxQ)jx3qi3s~aX zzJ!fcZo(XZ+m=tfgNGlL*gqTjuF{VK4z=n*Dbr~gzQl?RX?UT{=s9WdOb_T2cN*CI zN6&|g8Cu}1J=v{sD+H4G9Wvy!Db&~RblLdVYYFqIFU14b`~7F@R!7U|=v2>D1V~>Q zuS>Y+P261Qu5PzF{prfWh*{NJR!MU&5h2v}^5DAS*LGUKZQN*6mNtX2ialZ<^AapU z#6q1eaa{GN{qLzZK(BRNA~$I%@gc1C<1Q(%_2hXsM~Foye-O;k9Mdc~sQ_k~y)WE; z9ExTZ#y25?UVF3-$)I0P)?wH_w49{bpLwaCXcUSPbX$kx8Y#3*p64z13>aWofTKk` zQslBvCFWw3Hs_0HX~TF&5;TlG59X=Cj8e*2ZfZ1JS<3UmiNYw+Y!|YMXu-b$!uwm5 zw9L=fy_QoRZF}0+OntsU?>cX`@DayytW%R+b)$epDx73Y2&aT7KlPr zc${91WZ&7_S~@GRd6??*o^9)@!8J8rRKiH+4a>cI`?4`X9xX4gFjyHf1LzKzAo7iAE9A9*eI z{BduBn{v7^Y>sezUwyU#s27@7$~#xr^OE}4K*w<{WQ{4!GTqJla(nHvm>SG(>RJbk z67aR-?y@bP6$HZ{Vz%Hx4E1l%axOJVl~}2L6X{&_r(-i7%@GJE)QKy;#;N%%rOmb; z#H|oIo_Y2hzuFs0ZP@>s%gy4nKizz?HwVn(%+8WaNu*do9WxWWS+$}(L;Vp%0BGxh zV?A{bJmtL(TsJqwB@2C;9&99K#nNo98PJJIUq+6>+%_K>xL%Mf4i+zT?oZb}kAj<5 z`9)fIR{;Z9tM5Lzi>@ueZ)!1m1GB$cR_!}!VVxT4^rMnEn-M)(vEp|RG7q&d^>eG1 z$5xzY9q@!tE}^_QZN^It?|W{?3_h6)j$MyqN2m<1p42Pe=$bvew(s@b5c+(0iXQ!? zPv(aqjF#?(RR#JPPIJz1?m_?R%5Z5gSDin_w6%A;$9`;L-6i`oc3X=D*{1DdJBM}h zoo|njwxYD~8XMb6Ut-;jz4V-BU&3*dl!Q7>J&t5cEj(w~A8b3a_VmWQ+p0mf+Ubu@ ze=N<+MMby)!R4s?{>^@$gplxd-|nhkr&v+!1wnWmQ-J;I$W?ta#39l<1o`pM`ijTE zTE|wpNQ}fycE3KR4ynu;5$&Om3tc>>EN+*x9nAyEqlGz*)V1t;E()F&Up7=mwD0K; zoqh`{-tllHASG#&m5kwABCjStH7F20DfC@}g1HUS`h#?UAz#$mF`)H7GiKW>B~xqr zs`Vz~+lT%;3f9{?x)g-N>vCnBqzgRcgk(b=4+LbvbZ=A2+GNE2Ib0{d_jxZ21$dDp7)}5e*~Qy3*+^#nNWRI>rTk1e&LM6Z1jSg+)FTzxB)M5Z4Y9ckL3ZdHA8n=QZMRQRiNz$i1S) z5*G^^?SjV>8BPL=T(V<}=o}OA!I z!?)F?MKA36gXMk1Bv^aTKW$@x{@{Leh=_97QRrxGZvWX;Qde$>LW$7_oGFUlW_V)0&0M`MqgPwDdRx8q3GKKJc@4qwTi(y?c zCp@Ghfnzp=hi-;imWleZht+r?WY*HVxii;4SS}<=d}!3fpnYp`PPBynMxDbK2TwqU z6hG!0eVsX3H0CB^R8u;3aIOa#X5H#L2c9_2rR3COOsadl&@r#@C3H8_3!K-8Q;+lH*YMdC3w19x)pA24`Z(h+56?%V#mH7@4DmJZLM>|Uoa$o z0GHC#o*Ff_b4=p%%OhvmzMG9< zNAt=MLtjn<=gW)JLipNv);PS(hZ~FA&&rrX%8JJu!k-(aHDdZG*~jXYf}4@wvbNsf z@`|09cmXpLTLqk8v6u?NQoFZBj*CTP*oTBdw}p-Ax}jSNaJ>3*%|`v71E3x46dqA- zc}Me2Ua@X+fxoYW61@;D`$={?)72BsJO`LVm~ucRY@FpbjPDaAjTJmz?qOaI@P-Ej z3fOFRm;)JX$teHDJq{zZRm?4Ulfw)7Kg&(jA1o*{%=2@cmvYl!`RGQ_VkU4(l8KO! zw+irN4F|D`iAMGoy^mnB8#ds`K$?k5Lq}vo?(5=tXaf49*>-YF^6y?}{SeQ@dz%G< zz0Z|z(m;mm8`DZpeQNI*jx<1+_2-LAzdm;u#}r0E0F_rla{FA`M-Sve;cNl!WxYfb z>v?d{<<4OpkML7+gy|{mvF@3`@w(pAO8(q(F7o4J=5)dWwHrTD_qh1(^k$xYI=puc)xq zpG+g_EDBW=TctW_;^*Rr!W#B~n=DEeH|zu{RS$t2>ISh(-|@#fuh6z@(Vgj3w<60r+ftVf#=^G>v;U=* z7)dcI$34YcRaERYJcV29RCS+6b~>{ak6YR)BdpUxH=&A7i}~-S?U}tQhoMwsoJuH4JAt(LZlR z49@f2pg!=_&L^>CT&obPhvE+WQQri&S6SFtT<<7omp=rvs^BUg^fXsd3V3qEyPihc zWN-i3`&ye$tT0dw89FI}(c@zYgzQ6g(4`z*`+TBTa6Z)w+R^R1HWGdt0q6~ii|wrD z7mQQv)b18I4R7ycR5m+CRU)Rlu7+jzqrdMxqEan){A@ifXX(8Bqito~;-v9`IdbxW23r~N?pe6p)Ll0#xbOWwcX8b@`*Rim$}wx?9XglVucaD z1DKYskv+XXuUY(lTl95;V!Of!lvcHZwp(;DLrug^pkLHUw8_W3;bOo~wA0 z+eYPf^WDJP*C7Rl1&;oj4GX~L$~oL$epvMip7O;+dTIjCVh>B{cRnD z=Vx=({y6B){?%?Yq73#rFjLhKuREu)lJ@ROc#d=1ieA^%`?|n8=X|DFJ7q7obJ<-j z180bFm)53)JpRT)>yTHC)><)7~z zZ&CkdL2fd1Pk>N6Bt;#~i)E2f0%r;S%WO>4AUIW2Q; zIsa9-o|7wDqtE{y%!cF zcy$X!CE+5*rqrC!a8nk#`k)@`=e3`dF@e4(_t!gF9lF{5`}qVEn9FAf$O4s$K3-^$hhS&}zrl{Rf{M;2la?2JsKHo$7( zm2wZQ8bH6jp``GDf^ZI%RwFUJA}^ zi>oat=);$SS(_raMVDA7>tM?f3oYV_+iFt1rdt_t4qfwC92E~^7CkK7tyPH39mkO? z_Y>+^P21z%am|ag`fgrrmO}7ZMZ9y%Qcfi)3G%aL^%HoevJu*o9##eQTQSEWclIWH z5fq1na(Db4V6L)tKMYPQFl_ouC_18AwE*3Q?U5QTnQn5M<27X;THg$VK(kmFcXTdx z9~?YP(+M!wVir6L2*~tB>4e=3m(1&6z{1_;>{*H^Wgc}`qmV1-yiwz(7lLwFRUAL_ zid`)_J3j3PfsC~?Wu=DTM;9ml2$j*sdh&;&;^b@`vcVl^!|wH9Rxtu~Uavj**Om<{ zDYNqSjoiT0Bjv2bZRwUI9>o7PAY)uGe_rMJD-o~x(_hQ$!m}@)Rm#hcA87K?F}-=d z1mAxQln%TJm=N=R2N2JfW)L;lVybN{wtHfmQ(ohJq$^~r8VHXYjis*ZQ#(`!o3E_< z-<6k+VNfsww0#O(IrJJF*V0M_f>sA=Pjqv)Kb50*iDRTz@i~ z{<(8_RS2nfxjmPGTk*B=6C}SFgD}S9dam{IDI7JpMJL(%fhk_}#g!*<*nrPM0P{4* z%Q;zWUK1H!9B$Q@o#xJ*DQxbRYKbPqlsITA$qLYFj9L~D65O8{eZ=|2+G4aA<*{HQ zP=k5H8Qtn^eD~Ydi0QeD%;aY&^40w^-TlwY+W3LF(dVCT7jhU$pp>E86IF*V0O71s zV&0t^aHjd=(p|32w9)wdyN|1PYMT$j(sZh~EcMdA$SYAZ?KJb27DB;X>%ErYTqpO3 z-o$U6$<;#z8y!ReHy@aZQ!|)6x4-xWa7lMA@^l`4ZH=zUO;Ml5e+6uMbg{LE;5$2^ z;Ojxu;ltQIFnw8vozQ#fGFTD9{CBIwF>qlG^?^F_{ka{AF04oXjuEO~1X?gE9KxY! zV0R2y^SZH;zp_=@EemjCz}R|e+_xnf2GfXFbb`kBNadn#t5-N zUDorQA8VuR<&tB`W~`L3PgloEm@@~ZW^M<=@+~(g(r{g4#26^Dy7mq8GP&?Adr~q#8s4>^<@l(`3k_N2wrS65V9P~BC%-ps|A2?N={Wu5c=5*rciD&Ethj$Y zHns7{l9rRBf4veNE21MdY~x*r*Vlo>j(K)8BwpRN4#P zg*_s8S-oA+xZ=_l)2Qrl2TSfDYLps-bSYY?w!qG;e(ojFKUq3hzdqZiIi_JwFlgWg!0 zeJD!dS+n)2dTEm2B0~~fuuTta8;>qNVd>EkvBnqJ$F^uE0b>xkz@bN<8_+*L+!i!8xq8|D&O=PWdHcGu&*HWt=K;$V?P0KOKhmV;aVuXO^kDGGdG&Xnj^T{7N*uJE`C%|o86)k! zrhw?u>XdnT#2X94POc28p8#TD{-NKEDL`t_vPD&`(whA!0N@Q>~4?RsA-#2Z@0U|N&E`lc#e0q21K{Y7}%i8VL51q?lFTK>xL z`qTN29h-NX3LpxL)-I7+9{17UqXlz_VUW}eWcwa)wkZqMd5!`0Y6tf^ND4@gNf9AJUIcs}NDDGBfiDq4tCZgtDJF3>Z znl^pGudORq?)cUmZ%%!L7eM-Qnb z4qSyGN7f^{-x|Q>d2q{_G-SPR*xYBolo!=>2_B(>{sMRP-Sd0%#|?>AIw(&YZ1MYw zX%{8Y9LyXtXApfbq7}=dK9=jH_4RCAa}BvaMI4*& ziL>^pFpokYn^8|Vr%RQMUdYTDG#6$pEDrTsYd4u~`t>bc$JAuv_p05hG=Mg&?BM*6dqqziWZm#UXXI=gwwUP;DEIz#Ab&u5oS>QDTVOt!6lG#~05m)!S& z@e%FPp}8}EMVkA;pycZVQ4>|WG`{L(y7p^A(LrTed1hDX_9`bcm(yt1nZgT^hJy&zzWIZjJzT`~p=+BSL^KR<%gFUd>n`0@7U)-*` zzw`i?J^#{?0*{W^xdwPi;o1fE5lMxK6j@d`6^(wh+P9q3c9!Dv&YG!xs~MM_aikJ3 zPv-n@Hbiyb3M~xt)sW*Pk9xvMG|bx2w{qjATS=mCU9sv$RTChIy3XpBM+HQhPke;& zW{o>(cx(PTuQ<;2XpIV@n4%CnR}-VTHCE#_8>Lkyu4!Z8AjGyJte51)(zf7KWizm@ z-j&TW&K7-Elr_s8JB6b;gxyPyr06e-gD6`)cY90Q%H?NY|Ky9T?3iA*>6|H}(Fo5f z=!?}z@tMC>D}8vz`+g_p{xR25&(kO$|KrnIdw*t<>8EWe_U&XC%MwMK>T_&&HZhA- zpsh`;_4aHmvz4Btx}JfZ_)NH+pm$al=6rH&v6ypU{xG)8b~NVQ=y%YAGB)GV_=esX zwa*kl>vn=ASyba3(o=~5J5y~;{OO0=2ZG^%P+9%RcB3tZ;^CUn2=$s#>+(agOD@Nw zI4f#P?F<`K?^n|9Z#8KRSG!@F8?rP4#AR9NveXk#yK%1t24OjEdRdq|5Xdhyq@vui zQpVSwrag)sr88Iz*Y(&z?PTmssn<-W?!Ki!b<^3+knCJ_7jhrh4b`rxAg)14NmEYf zZ}nooU3*j&V(r*7PH)aLmmt*p{;y{+zpp-Ndg0kNC49~~jH`r=cRr0xfxnX~($6U5 zyi9?-cg1vZo+|WuI@`HmK||T$Pse@hRx~zV+;sEVc)s8(7eA6H7dvnd^yKqV{w|W90TNoN%TrT())j|Mrub6DD zfcd`67UQ|(NLSSzx0~$-1m6wc>l=-9p7~$o1WKHum~&6= zW^;IqQ>sY9yxQr@C^U~}%k1j-%CJsp&~5CgEiXexAp-F=dLp?9_ms08V?3XfBJ@u#|q`$c@_lwBy=7q2jJkh|p$P(2Oe`-)#LpqriLeA0c zg?j)lGh+MD%lq)V6(`CEDu!J0mn9F3GHrtw=Pj?u*v?CY-AQwR$PrOdz)pH)7_)k9 zPf(fhuhJrI=n{*ki_1%P^3cP-VP#SLIa|7c>_8qGQk81Ma zfQ0}F;yEN?vi~kk@OA{J z!&v{%*xXSD7CPdm(rX!9WpXeA-+6i0oadwRoubI`m4-~OSwBk5hQR5AajO`pj>LFb z7Bc?P(C1qS#P@J(oL{bf*^keY@Xph;G9JC2_?~Ao!Df09yr(^cFi#J}p$eBpttu;mOxx-HR;Ty0vaN%V zFHz#xeF}KHFReil=4xjwq~k9WJy=tmuLxfPHX{vJ=>Mh){aaTCMIZ{CY$#5R{sd~~ zh84Ut7ZVB-^Px_$(qq%yD?j?@ll$YTuDf40bSJ&BSs0U6`d+!s<`m|xW4q$}wfBss zw~y-HhHO%u4L1ddi=AekB%sHfZFg3f1w>pHTbyrdI2TSaKmu`La-`IHrj7JsBA!xG z!xU~VH{uJd%QlNW+cm_CI+Ikp794~!2wI>Cr$nWiqrxQDS$?2)TPt4XrDNy!X4O@< zQo0{*cyzR*TrB#cfqK!-=%&vya|&}pdZL*9)$5>1HM7Zr?x-3h^r8NBA3{ah(b_)c zA?8xuNz$h>zQ#QdgX~r~Unf5`NsfPn75Ln`tx)_O?r;7yC(pCQQhfKcqml04cv{ep z#25b-M^6Jc$@wn#17UTZN%;~bipJ4R=hA?_DK`6?=v#H`?gf zjq`;}=n31ep0G%sn!c((Y8)HLA?-HeU(`G`dwY{l*unD(7!HHVDX9ru87dUzjLP-) z47IfzEBQ8_4E=26aj}hIpwGYmNrkXXLtyI<+_aeI3W<#vw`^XWqIov@GmS~*8W zZ4UeSb;FC@XoKGF9ris6sS0d{;uG9uZ?nu&>NO>yDs4Fbl&KT__|QW{#OGu=yJ43p zGmCB@oTJ)PJ@l+ktfx&i;i;nRj!Zk)W92^HW6v(Hx4)^!=$`ny_U5l0n7-=3zp<{b z+j2Id1+!=QMQCl%V)%bR(AwF#D=DaTAhGGd~?;s7IvuR`*BC zR{7jtXq4wp{n=`*0qbq}NdFnjnU7Ti{9oKIyKijW51#tIC7t!8>`4Qny6lpZZoG^~ z(eesGtFy~dra!129wO+YUpxhF=P002}D#q zyu7A8RAsAg%-B0s<~^4l$YN6K)0rSEEudc|kXfDL63`ULOk?|AH=-Wu=Muc$lBgZ- zFx5gUyR;>!(ZN+?D?Wj+@46Zxyg_)ZaZla`Wosl~Boow{B5x{SU#I0uKI>WFp4I5D z3=c{$&k?(FB1OXZv)o&29;+QeWs|$Z5#YMA5IVufujM2{EO-)gP0;7-@CBNSnzX(y zi{e9C4Nd+lG$g-;m>I=WL8VWp1Sj%jN zPv9S~Sbon64d6pq`zEz6p{lc9<-`Jf=w=SIH@>c!>VbCwnzwCP0&R3kPPo<4a3nAP z>Tb^L{0XLO00yR>o^JUG^Z6oa6}Tc=cH#5mc+krmFJksUCTYcbWI|`87+#sYKE*qP z_h-6MO^}6p==K63{w%9baaqNv8$6<{kA@V4Pn1swrj!qXgb{AnZ*trhE?csnk<($c z5FE;pouyUDStesxGSW!#@c#QW1zR3XWXbkoZvIfnD!3(En-c=mqVS@CV=PY?FZS9#T~Hj^ zyjSG~O?6|Zh0me2hjXUpmCs4}?6qTGZMVnde4f6YhNUj?|CuD|iFz`LQLgVSPuo&R?d9%!{Ncc{aTZU=qbPA;K>3jre)_%-bma&mwIv7oh zTaDr3rdU?|xvc(58eI>f=>D2{?SouVAiC^gA#hnJs>;^0;ajh)XNt$dblbh}2RmYF zZ9?%=c6K)RaK_Aet1`*p#}z(PunPByJD+SssYziq!cp#CT?wUy@*1gf%MM4M%o*jg zNMn3PQ?ywav8$Qa5Ucmu@2%>gY<$VU4aCM`=3`-HEqYm?yhzluJyUt}yFrHpk9yLX zfn0sA(Q6olao0$xar?AVBy^rQWNK1d7U*&F@l?cCjX=t#ou^7g^>-R!eNsxH)fHx7 z+r)97($K5UKS`Q#T2>uf6=bFnCeaayHsyaRO13u7Am`#{zp?{BB;<;*_BaS9S_sX` zvbTQ=C&qum39wZs9oVWPGFRCr=f&4Ab|k`9#cRhexc(B7&|vF=DVDa#4f#-fM+=Sv zO?eQLdXPKTNC^YGsB4vgpzEGT}HGOG+S!1bTu4nE>^-wAh zbpqI$#U}bV)fCEEp%U?cx;nqQi@iPNv-nB)SA&#Pkw@Dmf-G0f(l{VwLH+VmKMh@u znbG2Qk|K(h5~B1hC#nyBZA`9q>$Gm4Pgr|RB5)Y4b#5NuEG(7C(f^IId_K*j81TD1PtVV+9gTA zIhpsij1JwdG}m@H==Z8A`DHl&Buo8>tjf0A4J>*YFpJ+kG~;qhHoxkZ+XpyVAg@Wk zHK!vWB0SJ+YN?n69Tz-&$+N=EaR<&qMJ~sJ@Dh-KW`|a62i{?CNmGcdQ zYS-M!>#>6Rl&0lV5#_*=+}x-z`Ydg4C_Te$jSX+WJF5mZvo9E^dCVmikVAL@)Q|`d zKaLYmeVIGyV_(^)OnK=K4_^A}*tW%6{w93*m7r%=S+@K0c;XyF1;Y_dU;+f?Dgm(L z3`7uQdA*722YndLcEe7x$)c`@y`no~a_T2w&fi^H04y;Dqd`)n3jIJdFl?Y9Nfp4l z60W!DZqJVmQ_^er$H5QVjC`GTB8a^|CFTU16*xKGXXi!0uqIs`x#r=bpC zUeV@bSOQ-;g$rMf53H(l|GiOAT0*qbf3CR&5gFaDE6E~@+oMDdJFNRU3vxa%t$xfU zW;b&3XBbBo_e3vNbs~8E>y^0)^EP5}>;tX4Xf3peJwFK{OpGkK%X-ou41KXd7u^D+ zp-7oSuaSVP*IL@jPKn}=N##%zg!N$l_LBN1>3jcmunDW8M)K(!Nm33u#^)WMK9YPY zt5bPS<$~tjddwc5G@$7Sr>?$t$0e>5z%jK2-gssXimGzU^Brs1;&=4&QwE?pWOfw! zqAA2@{}y!T9?~ri+6Q@ik|sSQ+{YCNN!upzhB?x1wHz$L8Y50#893RO(jZw9 z)&t&ziPFMiSpjGD(jHy4tT|VHXK(MT*?GsYE3`%o*wtt&4|%Z$^!?m&x5o^6A111m zo8MiN2ddlS;ODgJhonueWe($j>%B=qwxU^j41fnz;AV#?27!=1lVa0M?808P?r$c# z*J?*mq5qWQO%T#JLgtURt`IOP-LvDPWdDYG+MClFLa&B z(&8(mPdT8l_SSB*Ou?suIc#IV=0vRE_eYd5YZPNQLXKcszV`Zqk{;Ky6pli` zbM99|in3A_m1$rtH3^*VQnt#r7g?hNsk~)R6g+f*31uhjxxU`N79IW(FQh0v3Eh%$ zie{GqteDEZyf)Yo4;(4kl5#=mL*il5^&8yR*mko5#=H?Nzq-GhEbHbqeiY4WN|ts5 zJ))Lx>oFKys}W)~^zymUp5mZS1|`Ct^VfS^6Af`%8=czf+008AZHXoCuRGn}z)E}+ zwFtm=#I=yNN;Mns-y6X$%pENo-qUa$K-;S4qn+K@e$H{l>Pi>q$OeGx@c7R$w(zYV zW1|8QeI^tOnz;p-p3&vZzG|8eb+a8g3Ot~lvj-?4#8gYjmlfSLX`3-d# zcOHl&8ieTz8Xz8K9j0)mq6f`>qI!d=?EP2D=cn9vkqY-tQ||}AhUTJ^ve<)Bu^5^M zePKFcp;sXIr&YI$AE_CjjaMZcfTP_*2-q`1N8m%*9XAEn;!3;p%ii2bZ&7N(b@7LK zZVfh}O;jR&dJ(_!thwQ@xz)>juDOon!(JplFDEqU!ve+hCFTwA}XFHSRs@CINV5taYZaZ(WV9 zTC&I$pC2ApVsI(6=b||^32PDcm!`{qCew3AK}eULl3~tx^aa!Q^yDskq+LIDM(Jjdr5}CciR_vv*NlFvXtBWI>yk^^Puw&x%;la{ z_OmPY_p4{MT>8I#U(HRa^jyvFMyzp@3t5g}KND4g8}P||=#{Po)KG3+1uyoj(uPx7 zw4$O=0-kwM#9n`C^RwwAJkYF9gX+Y4Z|j1~h{2rsp>>m@#Wr5n?G2Bar|Q0Sa>Bi{ zx~}N0RYI(v3Id27oVIdXQAbnKDbq))ctJwxj!NYMV`g5(4))*JbER`)f;@Vo)8 z_Ir11B$n>zz0B9cJcgm$JFIN$2ZFJTg#)JoD7#nAw?`Y(Mb9huD4LHOdy^bI!wAj0Dia!wuS=+g{b6P;aD{n`dGj z=?UUCWAQ_03akf(%0;DvT5WA_iIk%SZmoOlhm}ujyIUo0B}VGSdQG|i^hU1sTV9$~ zUfUb9dB)X$YA|obg>=WVH_l75I z#wpcP_1;DRLhjYvGQAORPU6$DN=w0pZzYO zp1PcCQ202T=kb1VX$(KA5_&qx)0VB4Y4DcAtbw@o(2+wfC$z^?$0Fng2gi-)?c4gr zH;i2OP6d17BdWW&6zy1pG7qzPSpXS7NrybLj3#(auT3Z!u?ST>55Th~X?JDGTl^L| z0fMms2*zjPY%nV!U%4POTS1b(ix;@{E zUm>t?It6x7%uElR0`3=a4<9I34`)M1oqg+k>OiyX$KXV(k?T`4dHfw$)-=LbK6`&H z!0iTKU?A3bY$}oC>kWx2D0lr@ugdCA=g{wd&vEdor>u!Tqcy;T{P(iY$>j4=^W1eZ zd3j##v*y`aIdAKs_UwF?|x6PvT;wPs;5yL$rcK|*a+=4Z|Q<8IK zI6A~Z*iBq{d*5z8e&T+vAK}btheZjNo>g-*DCKq$i%3ai(TxRj*8y4~yNJ4U&tra!PzN zQ=u)knE7cy3}rsgId>)X_uWK^&Hpgg^g_bx>bAv3iPp|7NnxJkgal{Tc8rsa(kFns z=FAjcE}tl{kdta0rY7mBq+WEcvN#_5Ipy&7_IBHhARDh8ZFqRt{slf5ynIwy4P*)5 z>g>PD@t}}zXi=j{=_!gsPG@q(7gln^tL4w_^2w%!_@oG)+N`*93CbuG<$3@BNtaXu@F!-!1yFjOG_H1XU$*krJTbwBvtHnabV=dMa?N{8{N_C#n{}M zSJr}%u6WWVO!y1k(O2WNOFnmWYR{C5?VT&4Blt)A*2|+mmn0(gOIwfaRu@g*yD-vp zm<<6VlZYVRfbau*^7KccVX|TH{yZ&gN^^03)xrD6B0|4BQ@ibq%3T`mH1QZNhaP!z zgOcN_AVT+7xtd54e_~#+&6{@Zm7h5;347`)U)o`iRddc6ztd84U4GrTx538b7klL5 ziAL;~w=V;)EouA0Ywrj2Ya4kytLbhl{pi$Z zG~j}~yj^lw?$yz*y=ml@d(Y&LBCCEYTrqd4aS<0$a&0I*0*o#<#{b?ouDmA)fqP#l z28ekx-^^8;cNRs%l8bCxn|tFnYzcuUmxt`T6hEpi-Y?d>w5eMZC=}cBuYS-6QTx{} zwco5*gUqcpzYvvYzoc)-tw2N`-VK2*eq;a>bmcs|Bwamc(uy zgi^0s&%XJp(1Cg5fiFnyEvClk6}84kFNyn1A`%ku8}CVk3UV#}al3iP7y0s#?_Aq8 zt%FXih^3+qC%NKYSRgZ36vA`Iv?68MBSP#epo`@_tAERSI=vu#{nGIAsZ!k*f&E-B z4QYgDfr)uW)!rAF2nnzAyar;Es)`NcJo_E*tsWIKQ;F@p-{)~Tiz4EKfLIcLHhLy{ zxdPAe1$k}Tc3>X47q#dBy323U`r6!Cc+gq`w=e6Eq$&c0TFw1LmQ=bf>0^zln2B9dydcx&zgsEe0ge)aha>d8VTLpYb@%L5VE@} zd4u1;IW}CK>=JTf*R2AX_sZqwyhe~`If;AfV%S}0pP!<6J1#dxaF<3ocUpq$#&F(K zZ`DKw5f7f!?YG@ecUT%KR1~V5KEc%{p9l_bj&8BmX(7E2K@u-~wlY&gFsWmeeIX~r zQWJCaDia{^WhlnEpq;3wt6VaF9~!a$VN@qlZ7azLvjOYdyhcrWOQmlH5mXn*V|l%g z(℞@f(y()HJGVf>Dva8CE;q<@vjLcR{6&cYi0;(9U1Myf@XT zXPyDa(Ni8|8HQi!8Z-DXX0=Dd)(XL0P)$Fx*KtPP_vgvoMa8e`Y)5()S|GgdSX8A&GxWTR>aoWjQ#O+ed+afNUya=Dg=82t4Bp_bYF?PglW;$m>_Ude0V6u0ofqa#w{Qn$XkpC^z9& zu2J#b)71(>r)88@W$(%+wl9nmXdP16K5Cqbw0)Jxw2wl}Y>g(u06yd^u*b+{r@Ywo zn7Nr)FYn>sI3@J8PqSG+(TOJY0cWI~zTPC{*?eNsb}s$7Q)FNW=D1dWShvtILjYPf zrX6u&caavL!W|@PM6YRF1}5x|TtNvvCh2gu!yiH5gApRSb;kbHb*XzvnuGN(aXf*% zDel}?UdM$aqf&~u7Y9|!2F11Q;Y&9vH@;_gGZNCNfxLwn3V=d%(itofX8UGn^b4!{!=Mv91qD;^v2VFIZgBWtC}|Nl{S zmYP9#XUAKuw5owGXq5d!AgBMvbuMe(+sSqc3gcW}H$VlWfrSqDV|g`o5&AS(`Zg-jvw&ilF-@D-C0vogY%ONK5@+X5asZ zS*r?8$LY|Pb1RG$c-jO#{n=g5QW&xf47folo^it6QaLx1!UH%JJxr&VJY?T16X`v> zO&SO2Bgp}Gj}g%_ib74Tu#|_|9Sy?2%L2Ib+T}$jT)gy%^cb?_G?$n8P*=vIUS*;2 z@FO`rCH7=F;eDi-cvv`Qbd)!J#cPho*YOGhmxJ5h{+K6+@5L{|RwXfC5<9kr{p1w; zT+-R8mT-@2<-XE_SS9Cc>Hy2I7^U-D+_K!1E?W(1KJ%mU_zaiiFgIiLkG*p)WY8p2 zd;}4?AcE3JS6UscBFqgtSmEycn3IM*}rFL8glqhBnxT;y#ixk z6kFrReqF{VJ0k^xsU3Q#hsyQ`P$HrHyAFGSi`|~Vz`}@<00`P)tOaJaO(kCQHt$ms zoT(rX@^fYGwQ_r&(+5@X$MkdC%FbYxWV=~-s8)u(UeC>&H>bH;%gZWSwv-k%Xq5kD ze88V1$d~%?sSRY3_4;8daIw#JAS=Z4)zxB!8Js_Fif~<66Bd0w2I`_TtiT>CwA1C$ z(ye3(hdZuvdv6$f;}*<;$x)GM+X?7bE|eQa>tjlSdae@Xe^KxUBW|H%!D=&c0wdaw zDoONcM|5)UeMiIxmR5xe8h~Zkq<)rZ1zZ`Z#cK6ge{Gz5rakqR6pz%!HI~X`B(q2SZSlilgp9|LyE?;;o zt2&qwp?M2pJ&+Rv{MC8)Q(f&}aJbkTb8v9P>_{&64q|wnMrJO{$vgDgLfji|Ar~m0 zZ+QaJ2HAd~QHc&%xi${1v@(MvcB{}36JW5%%0#Vi=vkZ1daXE+<1B1|5$J}bTfeI5 z{cZVTk!HDenO*(Y5+f!1RB2Rg>IX9ZCCRtl+a1u8D*Wj5ojrW%>yMbrV0u=TZ6p(D zw(&m&NW0pXItPWNdsos18GGn`;jL!jp1bKRxfWwopMXC9UZ}s~G%1or!V1 zWTzFu*Q#+saRUQdlDC{6XJ+y^iGN?$IKDf$OaH?CnB`*#TdqDYFno=7*#Vv$v9g}7 zNWBOK%Ez4xt_KNmQAkgREE0f_w$|2rmDN`h$)F><-7lb+?9+4j-Me?~>n1G=uv#;! z;3+?FXob({-e(7YT_KbC{0SiyO@cZhmL3%xnp{HOYQE}1{o($4R9<0N42+a6I^0D1O z0~idJkyWnIog^u!xN?|q9(N(-KLpxC)C?D|VC{*|x$CZwv+%FD(e#Rpagf5KmXKp?RD-cee}FfTU2 zhd-{)`C8|N_IX`U_c`m!ODPcNP)~sMP!%Ejm*;u2d?r!!TL``-M0Zo`l>XS(t;>@1 z5EsSz*lMPsjrH8pk_vpR+i}w=r8$kgJGWMjP*al{7?j5CF-qW01zg3K6TcRN=ib!I zPm5f?t}!Alg$2by5n0LGTcl%5|M5lNS4iJ2FLi5;x}s|4_+l(rHE_d5HxUpxgEJn+ zPr-5JIqdBeQkxv}XN9=?gC?P?J$M(CDeLZ~g<1V)c3_=5)FjG54ph1KyFTmF>w(Lq z#iOr=ew5^eT)-T$c~bDVe8(74_AqzU#)Ch?q|0rMc#}oTYA=3(o8ajd#$O?>7Xxw~ zs$RewlupjkQUV3y_^-v-KVJskz}*w50DRJ7%1$FrT>cN|_KweKwv9B%fx=hop2_J;a`OUty^ z=D1|#d6U`cAy~>3q_HUeaig@%#+?~_ zCjn>{*NBa<7c8o?RSj8f^ZeTP=O6}vgQ)w@gGl@5AT~7qkh3BKIpvowdgA^6Z~zr9 zF#En_yAAu%-v7CW5WyvVqD8r@1PsO#&GPg8d#w6X6J&Y-h(s3+5d9W5+z^T5{YPHx zS$cN&YlIJ;G34Jmw_UmY^c4H8G-qFe&EEH;N$QF3Ukhp{R%1g8XF6g%tk5$0->@bl zjtrBwK|{Kf%k$X9wN#gHnv_{l3ejLkB^|tkqE|g9QYFW^cgv48$Wu2R|Emc0ZwpLw zT+^8B$kqVuD@+e$w9>bZ0l{MAtg+0$d_#qFV7?DUQHc6K+y2uliB5@JwN@LkEvpFC%Ckn8(siqzJ9uot4H{FzcfGe!>I9DXN$yP%?ae^oCHNTWL$ab)( zKd4Exsc5#-j{os2zc{Aj+VB9w;0vb{c9Ws;zW0!FBmbqU`pXL-Qf*ukm^Uj#mVt@i zw)H79<|eRzBxEM6Pa&qf2HuivGEfBYM(__uc$LYV;@%>^MpwJ4vNnf+h_2s| z3gnR;@}F^yC$pJY3+p0ZvX?S2IOnR`I05uwbyDD8)@4rky)^d@d+Qi@j(S>O_=-zo z7G)PCP~4f7z-WYvY~Y76{I9RzZ*PMy99)JEeZaGP)P($_jP>Ui!A>7MxGDi3&U3UZ zPY@bZS~j_j$Sg(<>RD&o?}g|jX1bVDj_8j&Y29=ui#nI_A4e%`Gbf%mL%AhvxMTCv zz%Hu4I}UA7R?((B)k4T?(&q?uI)b7Q_&NQbfPvlwYL#PO78NmY4oizg|9iMR%|d?o)3yUOqr{AWG@J z`VR+P!2z6Niw&SpXnS+w-_9G@zSTz#XpmDdakG3E+dYC!5)(}(m6)|GKo>W2|Bfzh zsn^GrGWBg_6wkCxuIS5U+Wz_z%!5EM5B_H`XZn9|woSHDB3=!Ql~ueRomC3hj%Bb; zK6f4C_4N0Q=<`v@=L1LLQ_39$sIMv2$L70O?7hg@3o%0faChZYd%h}tznyJL4EK7u z?=9eX{QE-d>psOvM*CC1FZE%>ub}_?hKBkhS{`kT+?=%KyZ)(&f=aCW%DWFvoetga zvxoI(#B4g^y5FYgjSXBvy*4c*Zx*>!9R`F(!RKSUqvDK=2QTg$^%m^H|AQB&w94aN z8X=IHS{g*$>sJr^1$_d+S0%qr7Pk>S27-`Nsn?AGFJ(Aa==ze3IcuwamU0yi=Diu9 z2Er*<8mRE0EKtnJ-SP_F5rj9f7v#9MP9sX2uw-#j(Mu-jmmFt0 zUw%wTV4#h|TE2SaTjEw?v3IlB-SNd^(3Fv~cl+^uef`8O9Lqgzjq;MxvZ}(;eFrsl z_4eJ}uSt^LBZeF1&?oov2%q*B7gPCVWo3I82$F%M1P>VO?%P0QJIF4&;Uv=UmiqcM zXIB^SVdJYwQ<*iu4h*{+mdSF_qIQ6YJuk!c?|i317s#SgJ*@tFID%3kvUP4}G{*wg zL=W}cU*S`3sZSB^m;R}6n+pS_SSQ_VYt}-U(~y7e_)l3;cjtt$ue-Eqz>Kj&pz)bO zNUDl*TWD%iZ|z@{I+fNJ?mGTp(0*)EUiy}^h&7nymi8C|KlMSl?s-5C!ZJO_s9LM4 z+A~QLq1G+=9zQ+(2Fy58NEup>UqTT-u>Ov~D!KLX8wpbR`%5lfhD$h4zVX6$=ku^- zoOg3|Z3~IXHbuP^EV9{ioS$2A<|d1MOiI{lB$=qNbnK{jHcy9MFmYvri$#5LLM8z92;9CZxLBp4lH*@PI3>pa>8Q2?j22Rf~bdA>U(;{nIhqGq+ zrCv$-D^wKz&}r7~E_>INkbl9RlL9Dg%Yw)^PgA(9j41eXu49hvW=FyUSZkp0CN-n9JjiBQnWUUw-Q6F9_qNha(&bJNHQ-xR9$xrM zA`9I67OL=_aNNDP(F>9G=cGLDkR}w%m9(^PkY+-Kqh}3q+?1SGjMF(3{jj&3ac;?yz0Rr@9y{BK?xN2Oz~8%1PH&cq}u#~_o9Yxice7!o0^&& zC!25VHQ;LJ#cxi-tZ!>*fz!}32^-z1bVGt2+nP)N5cQI&1oq?>TTaY!Fj2#-t0jF%}O6{+dlM@8&t*3 z&GvS+#Lvv%y)>F~k~8M!Bz$f_svR?8s=7-Aa6mzM+&=W5;fl=-@FiT1-`>>2mz5W% z-?H1gKHAV$9Zix{ANLsuoxTO}9!(PC>Vnq?58nEwNwknBeUf>Fku|E}48JLnAev=} z-bS;)4%fz>mxf(NJh)5x{fmBYI+v@1&)(iXE-X>_JsW1%k?SIqf9|JW&->$N**Uh~ z6Fgy_%F654G6!o{h(D0nl~nT6OdeiQ!u*&}<<@+K(-U8n7{hO%#Gjj%_qWzba7PbOHW3L-rlLe0?QUQm@EgiCf_(Rt+XaMzD@ z&p+|8asV#3db&H`yG>;y!ck|D^!ew*v;T(s=zg|<`@YhvI9Nm`qI!dPN3N+t8C$iJ5|l*hfz6e^$1*RgFkH&A35jf(WC7PrEKjpf^i|;iY??VlC0w>FKO8R z+C8_g?A$)v;!xpDLqj!Q_49FoE0~2!pcKA)WTq=RJFiwtsK(Nt74NpIM$IxtX51?m zhTqOaB|>_iel;{O@<4!sh@TY(9K9*~*$q~E zjWz8F-LwW^5K0RU=)tEyvM~IqW4_o>hs5dbI;r}NQzam883KuS#oQbNCFe6d{tLR* zb6=PyL~T*rZe8f%~)5oiC#S^K&! z*{DI;}kK?oEWeH{}|8X z$9kI_OX4?>2V4mC4%#r71}E0cQ$VTvzN@dJKP~;_4Y+)dg}ye*I!K%192p5vtP*}u zW>d0O5p{GON#4B(x=WlTUT>-_FLP`pK#5G1TN~M4ZD7I$c2#~2{SJooK{H}!v}=FH zrJg$%#WJ=rc-Cd(swQ}Ys<;eo6EtMD(v7a9>I>z%F92D1&XSg)JrGG@DjXe6eh~FY6^Y^M(_k+EN z*=}>j++FNR!enADT*wfGs$BxnOsRJDXI3IhZ{Nl#eqv@|3R;f*z8h-|-S>J>3a$VV zo&TZ0(JZGR`V^`Eo@fl-UUhiWFj10I8gmeRvR^QswM;8u4*ZzHB0oU~ak*U|TgNm& z;n0pkwo^ARZu<*A2xUa2CY7I)v;_&!_1hzJb6-E%JOCj2s)lqlr4A5Ddzezcp=5<1 zKGn@=!=DV~AX?ojMwN@n8yu-jpvMokvuQNmjIWziRWbOmua73iy}YFql|BvJ&-CR; zJuDW#+p?ZdWeRRoVSJ+VVcmj3`tm!+hpT75<*2zRzGm1Ro#|Y6apuGkC*_|k)a^xJ zgpv(?FOUO;Mo2^)I(oyyab~*?A6R79!~@+LN@wXfb&4<^d1(b^Ht4@#n8DY9LFSng3t1 zB~C=*1u^+-h;B@WUVDDb4V z4@|elJ$Q9(+&9Z9WDdGD8P^^Pg%#&}PVU~=Tf<{mnYRd!imsCy@T)QTV-D33j+maF ztGT(kpI^8mcz!WKDtk+j9<>;OG#7L8OsqY50cqyw$ZgFEqQ$T@No#+$d)tMx#y)#& zJwH|b8+`bb_I)?E2;ouEoS3AG6(4qUx|5x}mRn@i6;NxrC@UYA@3ZdI#?_He9AKZ0 z>d4zN1622i2=8esfGcAj^GZ5>nj(zWkyUE%1rWKsFxA)+&nDjtJ)Ff<^Zx+t-e5LC zss|Vk{NFePO3HPdA+Rr~Z^XIYT+#lSM2P5Nc5}6dAZ-q)Ujkf$zFJ31`9Lp7O^w7k z`*q%s7<{0?<6Jq{xk1Lo^v{gz;z7psL4Q1-eOzip+ADC1bxLHJdiT+{;^HShQ+31? zgAzM`@@|hUOPhr}QTXgL%>IsBd!urw_a0Gy^?e{$l}4<9q0r_L+6>gTsECY!B5y+5BpUlLEr?Z3zI!Ud!P%gQb^lIP}v z<`NHo?v=rby_R?GA$h{^gqCY7+VA0xuu*7@>XBLDHDxz4fp=p&f9yTM;b)=UEB6*m z4RRYZBaiR2EpOjZ;Z*;f?ec%v#q=;1ni8IGU1q^+P{?$}YlVl99oy2GSmBIY7+)XM z0ST%Xy318u34a#Ebj9#_YDzhb>G|rcJhaOebUR#{nnLZ|KN{c~*_CE<*-zLJ zhg7ELdYZ1R{8X42ve;s!L(&WI)X< z1+4G;GHhCyo0~QU6K?I-8nL@n-P;k&%_S9snUk#=K3l6BYgD+lp&`o<;jmqD3w%HP zO%Q3N+J{@7Kq|*BeH6XAeX|eMcS+d2Cv2mJ%^-Ex#?(~D&I1SK+1NWjcjS!=yLfvx z>h4<->9G9IYB=f1-oRiTcVFK(d$HY79NGItN;zi7!DH#YZL#ZmY&kJQz^JHm5Z?y( zg4R0C4xX^JLP1}o{h=Met@8IMtYCN$4S+D`zeR&omDK=xqu^huw2!|lq$yD^jlNtF zfWEs0oyXtytMMq)i;Z}xc5D?@$tl3qXZYZa4?Fij=+McgIm_?QbBBL{A>U=9-Ch(1 zcv@9KSmuD!Q!S+-`ERndtBKb=5Hs}p7Fv(Fc5Q*Yz(($;AK_x4^&oxiP+lN6mDd;o zYmiH}D-m~R2Jh|jhI2&&C1Y!ihrdY0^G}`ZNvjd1AANSxSK%rvbvRDpui{x%y5lbP zyWYCx#?iv(T$kYs+-Ui#<=d-nHeQ`7i>r%^ag2kuk?eL}m0MLNssRjyTYBX0{nl74 zXkV!uC)|CTuEN~0T#mZd63%&}9BpNIYFd9k3r*P1x>dD;2`q90Eg$R4j&K`H$z?~3t2KFwAQ}H(?5L`?@Z$> zL2cuqPbpUkkLiV;P?^S2r2=7*}v?Sj3*m25_2D!DD>ZxDwje&^$u0w6=;x<(}Ml)h;V0ZmyTQv6txlN>h z_v&%p+QA*`L8Hso!g|7+sGq)V_i?eWcU+;kicyI*w^g`CQFT&_YOGLPB6RQEswxc* z$f={?w^w<-b|Ftp)KRxO9QKW;UedSf`iHpeT48-HkL%XZSi3cd zvtGw{~dwbRLI|7v$GL^E_spruXBW>i!W4{uUI{E*`9C*neNqe1G&5-CJ9|j|@he zT0vbaU2@;j1Wm{1`!tZ+uZFLB0d{o5>*Zj9BFvyaDQu6skKPS9&u+A_1UWMsFzx_s`E@>M%<;sw&7Bk>0uago#zDH>+N7;K5 zI~>RBNl{1B>);A#f;?Kt+uI3I#}OgRO`eS=OE;C@C1AYPGd9L%p~6lmou{3cfq|LD z`AjPB=+}3526w6|$8}e_4kd8H#*OwGE$la2DoN+gCkYGJOqe;&W3~6nPkxoR#W$^b zkJ_JU9oRvYd$roWphKTt`>5evHW?t=K2x^9BvuT( zeX%TvX$IA;R~w+sc|Gp+H;PF>>wSfM{XaoAgNBr>t_h#VA|u&qckh0jZC;%nYjcN@ zIeAye2}`Krj@hQ3Q*K)r9~_G*@og8n4OntaU*g(Lea|diU1hpQ!*AB~v#ZE-m`1%7 zGrv%}JGaj}HcHLuIelBwbvnp^+?$9!s|{WBKH$+X_#JU>qV6ZVGeGj37nhyq5sNv0 z{noAdfc=pbU`L=O*qa%$z3TjexT-Wze8)SzK^n73YR-Hu>`fANBqMM`EsqyTC#bOC zTm0qXrxeE$D70rEuuuMPwCA}c)SCven;o-7TH2SKtlz9$$6A@~W1QK`@*3YW4ONx> zO$A^9^m#M$n9;c!j}mVxu%3$tdZqDDO;HFutZ4D{(!0KzmK&*v+2&ppY_K2Lt!`l?B zbRMXt>xBM4*1kL(3O0J1v1BVdNtTH0MA2faEMyMIf8T#Dif5kXocrA8KIb$QPV^AM4N@PCQ7mj@ z)Q~{Z(lWIjDg32&ppSAQ*wW|$^H%DO>poTLy(-fm^6Fv;Q+hXgmf6eeIhFCZID_Ho z$D6Xse0}fE=XNi95|3 zuID?F(3<{k%r&5juXJ25xh9SJUR!mo@-q3Q{7CzOgizL9u>Q-2ukD0n8-EPREQc0& zr(w@>?S;K<6;GWqZM=4+)R~gNu4y^5Pgexywvw?Gqj*q9?6ES{s zx^-NtiXcl&8?*xSbCQWYb&a#fXw3LqS8m^l#Ww-VVSEHQ>spC;#D%gAWb5GIq0v$6?_GGCsj;P1du8;FZQ9oH9CVeAETW)r8m)Sw zI4&>aGZ_O757@IlxfXdJ1HBtQ#iuLy*$z-29w7{;VgxF$Nh0OsGlofiM5lgtU0 z{x5cXLLz8?NR*JO37cNyF2K>oA84JLUyBhtwAgiXgXHC<%QhlD`D|!0V!B%dm&+D> z&hf%$Ti6bHNxkSY$2%Okjv6$&#Ef@Lz}azeaXodAJyBSp-VcwtdDvH%aS(NN9@n4B z>gw&~HRe9J%7N7&!&37`U6Qu`QgkAC&5*BtFC4pRaRhUSSrRrJ{7 z39+XJ%*dt6X2m=!_ew`pR&EfAtri9cmgk&(bk`U9c&1f~%6Kx3%QXBJuxNqeqh~Y4 z%LyIQ4V@)$j-E*X9G6eS7dg7n5cF1k-087!KH~eL<^0a=WQItFzmf5-KWvvIG0&-> zt?uv4Gh#wGk^G9T^>L**yyU{T@I#VLX9+3**`TpRrt9k`=!u7aeS}PBdV{965BOVt z^iaY8U*2fzNOwjFQ>i6MLeUv}SnHzd;<_ed@WP}VYB*FJq_U(p2a@HS=4s{x{Wi)6udcQ{ zB86|6aO>MSwQ<#_QS0hG>x&e3*S|%p1$1_DaP8m!aev;)ex%N7R*{Zo>Qsd+Qhl#p%MxMTVe$!iD*>X6mF zru?TFAWO8}cNG|ch6i<8hPr_wnor{|zK$)YXFMMqRED3sxiD|B9IZDXW_@eh z!e!27oE^0#-rC8bRu8Xs!Qp2~2Mt)*Qz`e;5!xhnnaA?O`gN$}$gC5981 zkCGVDCtvr;JC>_C`D}>WEWJoBKcA$#RpEHUW2U|~Zc!PVSBXf)dJ`wK=h%&u3@kTh zx*iW+X%!*p&HI?oZ!U$6t={s5sfBQ(5B3yJUvKeTUBlv2PIc+Qmq$hWxAwRWHGK*G zwb3T&0UC(y z)KxtUiIqWpw&={GWZsIa8yrlLn-L)LDFHKrMP`1DSJG22x6p(;0~tUvAfPzE&g5a< zm88}>t2GypPt9DqR3^+$;8VWWtT~D9+3l}HzqZfaz6$GXh%mAcqzG8?UG-((gt7UCMrPgzd5B&@0M;?0>|%d{_;SGG zElwb4Fj5|kek(v(meCw@!X?%U%t(Djs;XEHDS?Z5yPbwk)~v~M4sj**zfa`E`nWK|GUikV{=7j>T;lhv^;?Op>cxmoMc6JK` zUp-acytL=XgTHq|Q{4t)&IHfze_*k0UW6Pdf+iS!h!^XU>(^=p>eUOqt5-ECM?}0o zPn*ERvwfssuDWhOmD+7ikw>0l#{E9RjF%p9;E2`Nfk(GCT6+YPI&MDj8;xiLO1Zjr zFcLyDnb~#j{xNi2Szef@?ks9ABM2bm{cHWwk+tN7NI0wZcL`=ZL{W0rVWW(dWa=CtYXWVUw-v zUBfTH7o?%tV)pMnBY3(|3X`C^3e2{!npd2jpJV4qPswh%bkb!r_sP?JU+YB zkSidM<=Fr7UmNAPL-&D}r2nG(ZYo1I6|YheJ|s18TtObV0v>z7Dc?wh>Opek-hkbF zp*>U3%3PlB;hv9;g1COKtjk|(bH~~G``LZ99)NHCO1WSebNlq$&GfkV*Q=N2MhWvB=;1SzMEN7H64sq5f-va^rdS#i`8vY*7j0_t6SIs>vdPA`pEAP?PVB<40Ql*`j=Ak7$-R^HpKgZ%3S=N&ej#s zb+|E)BigZ^rka^LFwTs0_MiyXu!cic-@vL*wQa@l=|j~xrmS)2&v`yRFv+sPUJG$! zLTtDO75B5*@KT4+9gX70XQrSAug=ueG_DTSC@oqhbM=i1?M}cdc0m=6)+7l_qcnhe zG6zIFzgq+{ggq%ydjV8){2NjpN<7nhWr!~bpBh()%3n1A{fq1*J2!OBRl+PGM$*sn zL^(O%pi8f`_ufMqkfK~p^0Ma@hC%+4+L-SLjJYxwQ&IBpWpWkWMXrMaUtIWxrfY3NUD9wD(pV}FRgRYzIR ztIfF^bX2^TYZIGqA~2v#)xg~eQQYo4fjB{jzO6;l;PZC>qQT#ZzSp-_rSTa(~ae$Kxjyk8mRU#&`r5rT0L6eoxGS zW$TAg9?%^kj(wk-KlY&N<=uqvC-Jt@BG_k(jQ^A%^K+21uQwH{V+KJEI+eSjqm z5L5o0jwShYXON=_ISuCuqXR3?IA{8s2@;_q$IcF7mSR&bQf;rNvSoaoqd>rmXh%^x zlys~WGn`izjW?aYei?2Mi{>zo zxcp0=LuzRcn|6?i6rg$asl(h@Sp~*S7|q*9xz(93CXc$6GJh-!VQ2&TNCE>_C=se2 zJMQrHL=4C|=Iz$5iBhf0lXIK$ki=2-=Z2uQA+O$$4(|O)h!>JY_|sTCOBty&Oy=1*W@BniU*CCs;lC zyUo?t2FvVf?Xi+LN%Kme}kevS$E`;HtSL=^&HtF7M_ zRD2wSl_y2H91NSNHwmc#Qs<_UDuDs~x;#R7rzZlanF{7mG9X1g`anZ)>3_FV_Cfxl zUXJHUJC#8jD9NYC=YW(e>p5bRE3b>GBI)Qs`NywCmNP$!EDwPqOOD+l%g09&yV$M) z(cmA=I62KX4Kf7L;Q{X8?|#Xi)Ir|#6!(*48i;V>aZ|8zxo5``47MYsN-2-hMd@pOjDDtI#M1nt+ z-?ask?`pO=^BKeLFUv@041P4@vA?ksZam}%J45&P&QM;n7e){f+uq5^>X`xOf4?TA zx1M+#GT9&c5)233cm&daQvGN4=Iwu_Fr}G8G7g#%p4<=dVkXy?$p7hY5C=e@i_*|z z`20H5pVkr?PYPkv&ziEge-{haW$8EV)3@Y~yfRdmVq;;lt4w?^gE$*`s~oKzb5_q_ZG}? z?~$fI)j%7l%+?fUM=)fB1KsMPm2$PavkFUBJK5BFSW`K})dH z@856$Q#N%&hV8fiU~?Gk?~~hiEOa5lukwzP8k-b9R9{!%DapIoWaept)ctyD2hM?> zCV#H+1G=_2Oyx2VHrEm5b3bgUW`7UK0ir`t;}c@0nY&YSjkp2vy2G3TIx;bSi#akk z7k3x8cqlqP_F3dN?AJimKNT#IL6|AO7sZG;&hda!GG`w9%N}++eGiPN< zKD2EJ&Uu{5D<3!y|9N`54amS@KmA*$wNI9#!1B-2Y&m9I?bzQ$4@f=gK>&2R$H%GP zCzv?Z-dyi+b>?kpNve^THy#YakdwW){NURy7&7FJ-1&bjYj=hAffenmPe4*#dV70Y zR?){$L-P^L?)FiQ`xPqG$6o*XIY{2&9QY`h#dk+<2w62;NxHUE@n^(i|IE}}s!p?O zU)d436Egj}BY)=(E&-jvWC4b{HDFx+veReJ=H1;?mM+=Cz}1UP&PmQ}BnKW&v&C(r zF2_h(U7o6HreoE+D2blSN#IU>yA@SL5#R(Lc>=Wj`lhi$kKy?_7f=54CGPC@H03cb zVo{`_N%6htlGJ9gRK2*DX=(MV_O212yxAx z=hmS9?KZsxo-OKyaJhYu>NSXI$dogy$VXSEB{T?Y02cXKOvDa6T6=Mxk0^3u-+Ig| zJMlapopgo!j)L0euyfh#JQpg~D zji(Hn`nW=6X8ZH;%70tV#2#AXdjuDP-`TLRespiISdx@g1yJn_XfAZE08wU-(aDuS z(kJ}u6kb0Be$)13+g_EXD#|Qfu55HC*?liT1d@py?`G=0qwK0&mj5BGUH)N$JjcuT zA`z&tU4bo{@=G~LNw*AFbzL2NE~yPjnn6RQiwd4 z8Z>TgN@^E11=>XcP;l9iRL1vlKP6$karcp_E>W&VdB1uMn5mr3o8ED81FbzB!k}dzUpzZ~ynB2U)3*O#=oLG!6rS7P;wXAZ+ z8OVWi{h2OjhcelI_vHr?z_EN$sr}Z>Dxx#3^#C5Zm-2&VMLAL)vReZASw~dyi03gx znY38;&|q;I1g^Tbl37de=$9k(S zNKZl@5`vOQ+ps%b;PND!%j|85(%oT$Hw02=sfv4)_&u&+I&GcsNp-mYqS6M z49DaVw(K|}l#GmwNDLWu*ZJAHbGD2&hFd){pC>O0J7Al=_e-~brGF3BHzjbsU^0%7 ziax$@>=?s<#J~{s0U4{D1>5Y(AT71{Dg*3N5-^ z-1pJE$X@DO6vE@m@fjiQ7rOViYh*HW1l;(^tvj1)$Pa2SOU7Vcz2*} zoM0TSZWU1>jW&ew=hN6RP2@E94v}x;-CNP>(G}z3+sPhzbGbMK@RXjDqWP>6>o(cF=LJi?B03-zRLaW^3f$iApxi zIL=5H9|s8rhJBBw)6#HZv^h$7Uv#Kt}5|d(xROVRhuZ&i{Gn? zNyr(_a=!lg2=P>OOpNYZg5|}+fC`if_C(G<8^UacR9Lmg>`g66RO@NsFTBK^FpS*^Zg~K^8uM;B9ZFy;MG(?4JH-dSV z;O}S71`31){#eHCuZjZ2TWD$VM#X=Gs0cq{8I~L@W3>b!JUrYt>Pr4uP(rla(-ad> zq@Z1)Wm&Lu>l+^lzTCqmQSY>VOo^&1Cfh0GVTG*VkmLNdt`B&hmHh7O{Ev8(yS}9` zy&LgF(ImhhIpr5s8JTWIH<5Jx~=tFIM?(VtOIs|-5!TRh^y^aUd6>p`qlk#-HF#An~nPa zVMCu+3=LWB=M}xNkWhG6=vyZ%^{NOzB|)h;D=*cC9GQ8$?5Or5xXb6WR!g)vDc7cq zf~H=B)81K`EMO8!y|s3K#Po)5IX$ROT~_A`Rw;cH7&uDLKT*|wgQ#v8*_OBq(>7?P zG}W@(@e4RJrxHO6kM(cU*D3zgZ2*|2NF@-4ef6V_{>RA!2l$%uT@iOs{f*Sr)X!IR z4)=u#vEojL7dxuFwfY`+sQK}I>h~ovff<3cog}a*>c@klpU$)S7_cSM6^!B-2 zuTjkwYcn|l=Rk4N7i3o*MVKpSRd+cT_|a?p8YW@^DA^5z9~Z8XxjD);8??arA1H)X zda%&#Pp#ircVFO-YdWO>Y3R>nAh=vIbF;br7M-G^0+q!zB~3+8h#M&Jb#do-%C45A zvM8nNNtQc0yuM7$NmUY}qUAMf02y?PFUQQ~u3K#TIbwDwf-5$MqL0g#qYk9o%r1Jx?{@d@r%XAlcZ3`Qp1j(|XMLzy453&x zbUndoPLAZYNEF%MJ%>CqcdnDVOa_6# z7yNtOZrnJ`P)no3xvg&?54Tyz^1&bdkRk9d+A;nXvi?}|AAVx&NBQy%8vZg59enM0 z`1JHNkS*qI33t3<4zEO=vnr`|bh&S2H-*K;z$`@bvZK^7qP3 zt{)UVFYzG8Z9z9KPRYgV=&9tL`1jvvSY5yhK~#XknQIQs9NW%2U)D9BA`{u#RAOzO zEI9Jd1MpW>V15-HA3Q=3{j_c*0s4>9@n10$dZsC2J}ajO!}vRf3`P!#G*K#k%XsC# zC*Wa46=mswZ!%^BX?BWOj&WIn*SncKA_&ie%-P_fP!nXHWzn%?`=MpW-Ul_}Hiec_ zc6L`ailrI*f3p~>i7p^Yb$==u{|_Gwpx6`Dm;1jpHa_a%3?b2B~0{9 zk`;u%N&Mn|cfL%_1dR4V`nctj`iV=k9JL)V@&rDkJ;H$Z4212NAfg=Rk_T_9MJ7h3_eb@{CQ7JEH z58ghfqFh|SOR-=R_-?-ZGtpaSe$2;d#*RGGl$jmO7z|tQ ze1e>7Opti%Xgg%22WQ@+WyEw-1)n6NNioo0j7 zaB93#kDtRhnt$zeuPok^;Hs1w7cyt>+CSyVSkqNf{scI4n^F%3lF|;iV=nUTNB?z) z63-5y&pmEf_PlI%4C48qlGnW4AF^O-=4}SB*(Pt{+zZeF>rnG4gqs5#O-%(0d&+%V zDRmb+A{QhTe;BO;f{ADvlX{SBg{!?>#>EPqZsTK%+Ece~uCC)BKr}LFs%QHzmEbsK-4OJ9(jFK`sh535S5A4p$ooupSIO<7roO(n#*FQ8MZ3U> zBU)9iuN~WUw$nhwe3I9vbItIhZw;@+Gw1LUeibEsfMhEKWT|$shcKm{{t#aw_Gv#|n7kD=~Hz5p;9v zJTh@-_*KZA-Mw!spM z-&At#!k9qK*v7g_iX;67Cg&V4k-V|F^Os`K>@Y;9qOX0R6GT0{F!V!w8)<7|JGlsb zV;Pr05a7;d0jd<;D+OdIcRuPAD`YeDMZ_!<0)_aw%zxN1Rc9dCL7QRf9e%mByM{Ja zRd}(Wy*N_RS#2+5gLaIWn$z0_mT-sUYqhV(aETO*zK~#!b9?GvfZEv|TVlE#0k30_ ze~ujVoh%#q8EvJ~P8q2iemX}UDyB9`N!?8NnRHsgNGHWTg$!xIkP0}LB*(d( zzlN~6sH$@6(+eJfMFpl^TJq<;_=%Y%0fFufQ;OdEYqUq&g_o@FpI4%`1nimW^!UR* z6?Dg#;h&H~r#U*M+hqtZ|A>4r!x(VVSu)^`KuKX!NPMIS894&wPWi)DkZdaQ*?&9( zGOn$!p8E8jl)35-$lUzzWmAsKPZh1)$4LwkKxWqglVFB+rZ>?`yB+7fXad-Ti*)l! z)l#5oK#3Leejxh+A7ho4d|UWGTTu;aqJ~hy`1ki`5tpkmk(GU&;<2%8qsRW! za;R$3OqD2$_Z))2DgFmk09t>c3Od7kemgaP)sy71xTuw>087SZ;Nh$gwTiyhfug~SFfCoF9TohK%Rw9frzQQC8nH#WEaDSVme=ZaVYPxcD|P6{Y1vY~?wKf8!I*j9i}wXb zB}4~^AJjK_+0Q?2s*Wm(`M=&&{s8z%MthsI9E`TJP?6AQ6*Fpxwq}K_dsqd@dTz{1 zXBLc{^parhHtMw2lPuPoQyP*2`SX&SNB8f>N2@2uw_nx$M>vwGK@HbF?KtrM)BK7t z%`vSCI!ovR>2t44BL=)KxaFiypZOUUbCEl{Fp{3|j-N3hd*MP< zxgMjU__j#eF>A(*$$MQ$u1($aNTC3@q-^Yu#6vEi6K~uQIt@Cm^8c`O|D+6>&46#g zc6!Nj|L%1}j_3;pprk*%^xp(B2T$5#Z)fus(y>rMmtTK;MfqZ8bFm2(;Z7I_yf6;TyvDi|Hjgukrcfm6zYEK;cQ5r@eG4co=>2e=^~`S-&vhjSk-EOmJR} zx|^oafcchQVZV;sb$AG;BZ*+R>Hh||FxqqEdws}Iu&r-)b~2{PP4Hhh>z#2GyP?=w zF8Rd0%xc9WH}$5ZzutGP8D!xa*+3}fYu$^=|6i_1q-jVc0bjc7jVc-}y>FMrujLtu zdtvgHJ0kvvi(}!O;Mih-Bzxetue)3e#6B$h5B?wuPid*5*#CFdrV?VB^eabq%q{AR z8vf4B2!u@DOuYKAOTjA1C7IsG$IiD_D<0FUTN45uhN761Ep`NHstL@^VL`tfN}>WS z=&1DIYPw-^y+zSoAsszE?1UQrrlGa9^))~-lpnq=WnO$wv`6{1@{Zu=hYP=XA7IYE z!@9rIITEKK$7OM5;ATmcc*+iC2w4eb?wRsZ!oV`~*GwgIV?ggf%hMiTDBL(n)CWk8 z+h|nu^?!C#LdAt3=qZHA8PxS2uGDy)JG9S{PIW&Qm##sn&&H?J$3LM=q9Em}MFPpc z!?!wEYcj!%go{=W#z!8~2MLwwanwgT0$46dT7}#$%CbX=(h2?n$!; zBWi1F+g=`~D`&!b=BU3NX=$l)#`g5|++G@~v9*w>UlTXVU;vrkqRsf|=nD}0<4#e0 z8?B}{b+6=dn1)}B$b)q~ig7MKNtF%X7&jX3-*AbWp+jAzVPIqoWEVGlr?-kOoukR> zE_Q`=XZw1;3dK*XG^r$@ldcv|vi*&AR1<(889mAEKmD6daOw^~U<*rBmL6W4nuZtp zEOz|U=$!NE-9NGun!CjtU^#= z$9M;`p?3(7?X)wpN`KmD{!J$=+BaCR3F(2Qz4uXk$D>} z@ErGOFZX3usw+NVo=W2}=qK1h;pkIOglkSf;l1hWC+?1gw|}(o8*{+U4_q7l5?a3i z+Mr+7zwjYG0< zPP0j1uti`XpWg|k%(0b_CKOF^=8yE+Zf^QLNig$*#`Sj}FeL=pYrD9REGie347i{k z3^OMMolgq8^LqAs`6hqyh~AJ>R-iASA7pTTeaOoX6ZsvrP%MY##FSsZhG}t?B4JD} z>mN)GDfEEsgdTw}d%V!)zQU}^TZ{TQ0-kRIbMRigzic#d-W`?R+cGpXw6$Rh>2yYI z%RkNv`v#4|4u!$DtQ&^lTezjg^*-lG*S3hc!{4#WM)@AW4Pm@Wy^F>XWyJa;39)c` z|H0df%U`7x`u#+ueKx04t@)ciq(9OxE~tKI%CWsN*%a6Xg)8MbM)92tKjHl~QnG$Q zTe_@0QbGT)9Xs4{u=J$jYV*12M*4o&BEjnQOGlqt&o2aOQ`s1J9Sl64glM^UQz+=K_+;N1aEvCd+Rb%9lU7BrrpUB z&V4A~moj%Bqso^4z4v^{|}|{ea@(d(b3V%^w)Lon*?u}iBeEd4C}!+4elO7 zpk(8)my6aS&8o`#oD&jSGg0wDE)G5k3;jiM{oV^@qGV?;zN{oR!3is+C@19;Of?-~ zP^p)9?T4%4ZOzi=g-lWw#rHanNm-WeSH=wm+$#qcd^Y$<0!@s9<3&HH$MD0arN?i` z%unOzQ7R5-FbrEyFA%jo=X_@6orDx3PNAP^J_P%;p=6=7EwUiAE()T?>pAxPEC(^O z+*IDVy}A3>s~rNG{t`#BQ;z(8wT*osmxfTLX<^zgyFFjN3{ko5HG36;oKq=~=OKZb z5)vaGIZ$vXH$%F<0&qe|*2VRLBY25%2IXsCH|AID6>Gv$xEtIhi22yM3;z$oKqdybj5TU&dtu3 zFg^(7R!C_YJcTnXygaS|CW^31(!ay&4rTfhzHq}CQ}q%u8p>ARL1cJ6SD$CuxEvZS zRW`c_A$Fu21r86tX%$T#Q9XMr4ld(gR09-VV?Mq`kyr z(OgvJ3P(g#h|4a8^SzkXr6UPGEXw#iEn>XFc)MDSheM{kgSYKcNp=VxuyCx$E=YEVq^UYLq z-R&*sHpH>PwCOaNlSfUA7(V(%m_Vy;ts&of>ecui87=L*$_vI|WjXfckIg4XLFqW9 z&CQ!#g$$0Lw+{r&hptT>-d?|(fUdn7%OSsXn#>|`yi}OP&@*LQX z#q+)40TcnZpttnWE%FMiJqXLb;|=3=4u*j?>Ri)CY8Ry%3N!IS&P5v&1H<1>FK9I~ z)<|rl$9(A3cvV6UEuu@Xk+*Ak9u~-NVW31hm952dx>p33HslUsUndCWJSRFZK#FAV z2xS=genBb*97}A#A8(SAQ974nm$=^L;KQL?jW_VlFkFg<)hbOckPWQ74x8VoPs2$( zX=>4+B6xNVt>X-znvL|Gte#auF0~}(rF{LRQ6xf{B!Jc9jKB4}BWHy~SD>}(P4o3` z$~3C;C&Eu4^P24Ar1y#IVYD*UowaYjw1e=b{FPZ7_ldBaL+;IF6c&-l{kIHS%TowO(o9&VID=&b7Rwsd{ z7xng#WM0AHJRDHU4n3bve%udb*3i&=;cw9s+p!LYD2e8{>r)Q-537);$3!kQm8y)gTbdQiRf7`FJJ*{^uI*d<+chG00@sm*3xr$FLQQtnx2i$(ceYS9Wp~zRqr1x$n@0dn+1Kza^R3P%>dUr~$!cVv zMTwJEY6t4myb(Redk3TRc+FSPMk8L8I1U_aAl_?c8jPjhte%pVCI|(uiPvUgaxLjb zjM?P~nUArb0FQ?_)mw1HPl-7}C>2IGZstjSOCkab%di{TtdhHDv(BJ{IK0H=v#c3y8sadq=*X(Yj*4ZAS{7lj3XIF--l-LP?stb z*{uSGgL|0jbSvD`c?y5wcwm*j-zP*@P=T%L zzKcDPLhXi+U>&ZOZ-*5IJp_ZtLO;HakXg^~a|#jY-MhlIMIT)|dHJ@#S|i$TMYp++ zJi|O%#O2UYEI2F9!w!+>4d3c-_s0Oe&{_N7D|(vQTMF4_)teClzBa*8Q=6NZ%mg@v ze>HA1I_i_ACL*Ic8SRVpW$Q~2$C%x31rxYa%7s2ecAFt+Ih@m-X|JekP9+_C)cWN> z>X$Na?EGP?C=WCBZH-qK>U=j>qhE3nwAgy`O<#i{lXhb7515^|4nIMtd#(p&bze6< z8273j3~Q4M{_0%f2xU17g9pt$7u0;wY+-pXRIL>Z%BF8%u&gVEdI$zkC(hzors2eG z?4=4q+tsR7m91gM`r2&k+BUB_fIAp!3IxyVWUjTmo(kLC9tn|taRPN>^I@146#*5$ zb=)ENjF9O97$Ee}8FM28%8Z?8Yf=nfe-D9Bk1Ai{*FKIw;hX``xH)T^xCB#q99EbH zCP4Xe`UM@Vu2#oScbYltc8SucVy&n9m|vO@zMsaXZfD3BODk`$wx!S0<6+ek%o9c{ zF|~TBR0J<&MdH?ib#t8+15FW=rQZfT{nKUtW?hB3$7eKR=)Db_5V&PZWKNehey&zT z%Xw1n{K0f|=0*ad7uJJ}kG$ZmOMaA&vSsDtr`*waRumZ3SnZ#>HhofJ&}$T7e2e%2 zzJ^?&jj)Fh4LenvMkf>C%E-70Jowm_YYu6#3csLu1c5|LqB>)G{wcd*0s;(xeu@{R z#|TDmSEVZqH99|i8EdkrJ)3wHvci4z)H1=ejsyR#t+>^@rH|#{c(i}uba3H6xYOhW zVUW7s^jr1qe85ABIA2%={nV+c9-*B&4G7a~K*%N}U%pU|uX_3_)Z*+n01FdD@!1dR zPh~EHuET+hjJ~hPOM1`0gnyMRco3&Bs{?VcITDq)vK;aCn#5z+C{a5IZurgtgZ9Jg zvf02-E~rHh7N{Y%aIf*#lW9=2YIL1eQidjce(j;20zs-DTX?igZ;J)DNh=nPy8~J6;)*zLR;MtM`Jr5`d&&baqY{$x4k4% zMVwvH8|`I7QzpXJ7f^zsl{#w^k9wkeUUhg&*j(UydViaqQ|b|;@(H$wD3swGe%Xdf zoeiSaTK=k#1#9qT`!TzCEBArJPQnkh?B*2Q`mfd7j#NwJ9q?-0*v5 zlm|Gkk~=6)v|-DP+f08HH*$sYhrb;Nq~MBE^mB@M~=oy3>}P z8{<)J+v83DNS~_?HSzwIgd;;(3ae5REiDJkUBX#X?tm_8wzCRG)^~a65&Kvd2Y!Ip z`+0VxoN%6Mx$gYs&9nHKksX5m@DCQ4M9^~!{kZ;*;qygylQmJ9rOR3@1=?8~{Vq*H zh*Gs^_%=rTLZX91K1<;IfVXyc&g8_{xhf-@qR6^?ryhq3380Hz&FILUbzkAig?i7e zdA`}|1@2i1+aFW?jU@oiDfgN$OKi5B`RR69Ys#iS?fufe$%113l7?WmNG=m`E!>Zdt~qYO+}~ zq|bJp=rvO9(}!o@&m2I1Z*KT=U;yRFj1e)qRQ9Qv$$UrV;DN=a0yM4B+b~0|BnT0} zqMDNf;e#psDNy*fE1iCGb|(yITxZKY-F?n|&J(?T)?`&kplebr`99R99=_73&~_5p zfxOfY*JZ&nzGK)-@ZB^y;XUtgJu&~fTi1Yl&FpetgrB0#l*;C4iwrYWP4?>tHuRxO~J`nWtUU)c|Ezr zEjM;0&RioUzlG>lywZYFYC&edAAW9Hmy*tunNKBfO~*KO^0tro!~2!(30lb&sEFf> zrv0n|3{L&7)*pBkJ!GiTH{||GT9D8S6E0`Z4ygH?msCxRq6JC$?Q>5E!&#U5zMg+& zW=HFhP{c`!ko)>G*5=)Q@D#8A;wiq-9Ls6+g?ARLPdQ6>xtP-4Y`-S9RIwI2e-QLe zMeF>Mp^tJSAslubnu%&2t8w(x<4szVg{j|JpE&$cdd3s zc(j4{cJj%Yy<}p}Woxz#Hy82`gsY_jjH4T!DD)ueX2&=dMf80gqt-{nqljkfwuq|2 z0`)ieHPJq-`%#zmD-1F>laGll8dZD-BMVriLrny3)50x|W$xwf3Wf63Qz&f1M^s)#gGH=ueOOn|p(My7#1*cyF-cTfXb&Z;u zeZz2lvt+(lJh;8)B01#|z4%ySzb~d5zfh)tN}0Zoi&_uQLBf#W8H~R?giesYp-n}A zo-{@6N1k0f=_DbF^?u7KU6>+or0Wmx(^0W zYgkV#1J2+uwWs;{5kGv}!Fb<^o>dJB8?4c@`-Jc+8xd;h*|4{B7A0=U1_{3FCTzNJ z-tECx^Fnjd1Jb5uR2jLZ%QP$LYtcL4$i2GY0%#w<(^HANpJtn4cmIBtUyyfO)3uE* z7mqI8k}Ag~E&*Gy2newh_AJ&0K5!s_W__+N%6?O7a{}Y6r84mg(UI6hg7_ROYM%Vl&FR zd*r*E>v_sm>qEdrsL*Zg*|SF$u@xyI6~EWH^v&!z)tkJj^K6^V=NN^Cb3P5CcygM} zww!!UI~N}6cXvLdI#l9}qUX~%gVl+o9qg*hfTH{?holj?pA@xm8zty%DUtK4kVW9_ zkJEn9?wjt0bUc4PeE7gNfIMwN4efV6vB}KokfrsBF&|2LD z0)G0GukG_PH6mY41#R$1X32anZbOyf#fj&}S0Cd$aOL;~#?$Vz=l%BaZrS11x< z0vg+!k^b12K9c;Y?}a0eo~OIije*{-qH>YWwtIFzGgCnDJlF<=NRs&ngY+n=_>U8A zy!R2PE-vSD?M;4E^8D4XLGrQBA7cKJ`rJH1?#pE-bb3}3L3}N;FCxq2>^<6;h{pb^ zt1ZuIHqeI?!?<1x-G+}x7-ek63A9WB3Weoc0dd3aTfQYzsO`PUP_=i2Je za6)4_E9ZlH@QiBDOSUiy-P0ljC1&3XA2a<9Pq1^_B}%&@i?sDW6ve5)rEK32C8-XG zc${(U$l$5+!}bJKpk7WFiAWG(<~gQ1Mqdh~w&qm`f}zk6D~t5YVmKw90E%3Bx^*VO zJDv+=aP@1Ro)dmym&my}7760zX=f_;bv&*vZy3p3_Vp>L^ge2U(z=D79O)ys+`vHF zHX2Z?wh#93`N+g6ub%nVzU?>~T`Uebt$J}|)iV@gUYLp~C+2&1{oZ&_0w(Oz zEK2^Uk`L}S4y0FL8OUA*1Crt1Xc|pzgTR#pS3l}+pozXG%XHt|orQH}T&TS0#Twjs z<_sC##g@TWuU^HX62!aS1K2XX{TjpN;p;=KZ0tcDS&m4)>-PbpE97PHupw$ml8Udk zf+xaop=hqJAXUL0@b|84SqAA-@f~I9mqizwN~n{4El8Bdb4}h0sT>EiZ=HVni{;%6 zAXO0=+u73oRaUvn#6W4ERidCqZg`(`0l(n*Dog!o%60(lTQc|d_ zDWs4rQ}%5P5rwiF``Gt=8)o}F*HHJjyZih5J;!rD|2Q0$F|N;bo#*@9URU|qUQg`n z$yY(^R$P&Kkyl{I9mi9Q%A#z^bHWR_JQv;luv5{2B*SdY239Y@h4vnr$gFb7?YeNm zh|6Z&l+oH`%4FQ6^Ttq0n;P0#kd7G79Z9PVFl)sRuU`pwgm=_xilXKG1iWGw(4u}99sKP!=G!7|6m9CY1bnEGev@)}Bx6;_Ix(1g|KQoXM@hS}8OH7uh=79BhwkL-7C@KkzU<%O zvM^vW+0s(}D~J6-yuh(%pH#NeOGW#K6)^Jg(jv*6X~&&RYh)kp!U#keBRa;SORKV5e z7|SWZ+6=np(S;_yj8Xk4pi1+F{78$ncDfqlE5{x~kKi*`o0m1cO;g&vwUK)~s%37z zFC+da9h?YPYjw%TsC(+OklcI|P7BYf!4G(@4?b*7mndI9JfX$)x53reZM29Nze>1& z1!T$+)Jm~Lww>DeZ52n$GdjT#d$FU@=eaQLjOgW>R3kpyo3MmO(_r>ik_Ha*nD!Fw zDE|PTH;`8g-`AO@O>OqcQo4!gz6NG^-rjfl$x{(Nl*GRi)Z{^-5o6n$8aa7`)*>Wa za41{<=uGri{m-|VZ$~}rAFYh#B@#}^txca|CBjefc)wLW+>Im8c}(5~!8~~t%j5Vm zyVM1n?c9i@o4oNrpLvo;gniP0k?!)1bBc=lRA)qWtvy31*esKn!1B6eam7TRyGPd+ zeT}%-Yd<{g$u`P8_dYAfO7sGH-MsAnsWRf6+~BtMlB(X|8A*amV zy25KUA@)28y`u>o@icnsL~~6fhEP7%ZT}z#9r`e^1!O3lKnSjQbbm*2qTlt7Wsk9O zQw>mWJF|~tJ=r&@__d<%ImX&onsLMV^Y<_!ox^jb^Do)L(gha`w|%2KwQ$p_j47Yd zSZel*M{)#V{m& z0H^cY|IEU4~h# z+JEdEsed82onUZd^lBvO5dodjpR3q|?n_ zjkn`w-OOxpp<)YIW5v~x)>E>US{7@BX?UP7(TNpXDS|=0y|qc!5*j0Y2}UPt_|i`{ftipB8FNbP?9~hCh7Db0*au$Xris(!Epgr}k(G zlWCCcF<+-VoY(k&3(#eh6qpYm_4IH-pPGI`erjg+NYq7VU-!?U$6ZA^wfY?% zn4LOX+P^teUJQoHEya*!a*oZuTB9*!iD!ZV5IZu>WJ?iVpe3B5D#Ap13VW6!zSmVm zH2)&t#@_M}J5(T?75-pWjo(u`1lO2|*=_E-3cr$>*?831cjl9tZm_G>d&5+MI*dI+ zeSf)S?XJ@y=kbjXaweupmf=eK3LN^MUu-Bot;dp!7>IjgL?MTSPJvvE%R0~oZm}Js)TW?w;@^*F7qSbVya;m9 zZBgG$jdC;sbOp1cz8Z|a&{4c%VaK4Yx6djS+kch|dx3jS(BH6my$^4}N@|Dt(I5fk zUb?FaBrBrUC;ZNG;fxoJeX0WIxMGZHA+yrQ+~1WpR$3Q~NV-PVOJEPHs~jR^ULTOy zB~znNsx-$x3+t13xXX9H}vlPbV}aH8ZQz_0mP z+lqmjrGIg!{qpgwzy+Ne&3T?P4wtdyVSZ?Poi*z4;-|oIc8A6q+(jG$Z^rS}?*;ub z`vp<^+?*~D7Ma~Lv&!;sWJrFhEGydcCl}yA5>qSVKkxf$*1Vs1L-pYCpr#?O9y2@)i zQzr|BNs?^BpAn4wLaWQX@67!%XTU{CHZtYYQX?5 zcU3tsaD~PB>Yf*lSaY70H3nv~+tZ81ep2VfDp5Z)A`w_KkCdeCF3)coBWd<6iVB?f zwr~HSe`OuA<=B{>-PYRbRbS~aR06VNAMv1N4m4-B0M+VWO*)=W(B_XO>Aw_&s@Rks zBk5sLKE}{OM`vNqrwr089KmYy<5e6y$wf5jf@xlO_0>`59scWwS^XEj;*=x$* z({}MDCy_f!e2f;MO3>Ok}F@jBTUAbtk#E&&4ycL6?xg&P<@Iu8chDe7H0Me7Yjk=7wXFJvRC8}51XPH7 z=F48w$DTWMXjSagFfp44u6h1yK5@42#V2ytJu+c+`gw&CbB%=AF8=BhW9$(nnMS#1 z7};jnKs)i32OTej5E|Trf(BUAC=qhEuyxE$V~bXhos}nF^A7Rk_ga7R(Q&%qURF(( z5{u$~9v&^ns4R2E$T(voP`jlN+g8`tA1_n`XG`rNj1%sqoPCVaNj%FdUVAFrv{*9# z*>~C1MnALY%8Z2gH5&75fHxDp%)`ctai4rs!! zUETI@%|=u({3OO0;Yo^QAz_}<>|qVT>rlKT56YSQFzWHBO`bjF2U-MPG?|q{Ah~SX zUh7!cw=Zr^%O_t55z@FHJzLcn0opaI1yZ#px!-!L(r}4`KDm)9ygkKc;N{AhFi>@> zS^SeYeWRZVB6hExvU{l0J(-8XIG z+b7cW^_KdVx2D_>uXDtDO@f(3i54#yFH}1t(7IVGM_MT>!#-0(MsT}@W?Q2I-n33# z?9;R;s_c0nuI5_3`d3PWRO8WW1sCh>Y_5Hx&tutN0GtOFe zgqTLjnQTG*U_1)53#Up`?D-9M{sC;GHJ&+= z)3l7UNZ?tqY88Q0^L32c8fRh7+&T)Q*=BLr{6J_m239MxjpV#CQMTLTO}PTj%fb?- zTOVz`08Qg42Yy&r9xXTLUSG9lVvu@&`6kLgTK$u=7!ot~(W9~d>p<{F$vMaGeajLv zJFSq3k4`YQlX^F2L`zBiCSXWO@ODWnkRCwKYdOme<{f$OaIr>L7IpVti@cU+Gf z&_8P4I4u#LcpZtEJ2d;kYxLnfV*A7JgV`S6^bweTE2E$k z|7t!t>U6{lkjoL5KS)=grwEZkWwB#xm+ij7e(S4KpmG;=BqaW1EjQu8#5N9ZlEm&G zl@8j6fd*Q(nvf`%qgC)i+g>6&g-CX?++yQrMTUVM?t5z4g{|F%g{9LBJr+9qDuir4 zF=0(yrfCfLKPs7B*I0g=1bhn#7Of#O3HRCCOVHB9<1=sbSMd%&YVU84xj27dJDM9Dd&36_bv5xP5 zRh=}Yqv|MFpwCDcJ|&vZu;wI`VIO6S01a3uzs8|YU1hk6jjaDg53(3Gqu~; zvSQXUA19~~T+dl!phJpP)ul_^scW8zDtv079YdkEpjLoUsaE<}R9DeB81mZhCr{Az zivHf9Sz3SFtxuP=cfQ2=4QNrS%35?3?vD4;1?@B=To_pXxLdeAzm8hz{92DL#>-q* z__C0(5nVo7qFhB;<>1sj==qjl{d}2siR-tCCmeO+32(A(+i%B!`l;7T>fF0z&b6La z&Dh>#_OEYe#CA1h`PNW}MZ`lKt&_?X6q>*Y3Bcy008op9Jiv{Ztc+}qECdt-bi)KI z5@UGqXAy8hn#R|bT7jbqo7lR@%)`wol7TYD9hpWis_RP3XVrtc&dD6i?Gp`v?l*KQ zonz0vRGWC^#oiaU4qJUmEKwIgoe^ihqb@CeD=)B}T@^$HHw-PtJV9$xHfpBP(MqsJ z%n|jZM@lO96FKE1FGE(Hfy5#A{AA5p(d4V%K0YT_6%I)C>Rh@7MTypVDZQ3lH+(!W zt44n3Hyo=rl-PX3aQB1k#02r%=_ro2631Kv3$N9*>!Mea+iXs!o=aQ3>a47AtnPBQ zBxk@8@mHvFHFbOdePfEzSiAd)xqMDh!;7gdO4XKG&#Gs=N~-`_k-Z~^QS<#%^&`Ha z0RgPi;nuXmd9``g$62mF6DZ2L?BIyR7rTzPD!wnXp6zzKwmn<LdZl$J#mVQ|T#iAQta!HkY@OyF|9G!A2xvpI7HKsetI#Op>JV^ups^&wo zjA&bl;l8_|Npw=t_$x*c+bLaR{Ww8LM|Dr>1M{OzG26=ShLyweWb(ubM+#zwr7j{B zy9;BIua+Cwj&dJOoWn%fBy~8;XOG_K9X=3Fk#dvlca0fN)Zk)m%(WYaV-c?O^7 z*{*k_shi?z@4bmxq#`QrsN6C;Xl;dFXI9&NV;_APS>Xm1Vs)Z=XM>=p(cmTSN3g&Y zH`q1oxdDNlCkZZneYf3@T8HWvACzjp{wtX~ag@e)!}_;DZ?u}SQ9r-u`m>LIRfLtA z00fCVzo^BoiHCTndtKO4w?&*{T$CZvvPa{Y(P1;BLll+zW? z2mbS=tsUX@fZE({!7X<-geAo;M4;g1f<74Rvod>W&%64`sYnmZ28z8aH2d(W6^`3` zr*>`iOu^~4^L+~InbT*p7#6>o&43Z;xjH_9sJ#mjF%{rp{cT43(eE?bUN0(uI;rYM zdk-PBe+1)kkN`8;+clLemEnkWU5%Kt_VI zaB=-HY2pvij90;^JfGF5Wc=x>Sqm`wg^|z7qAM`FF6()0fX3qsy*z*j?>jayJ11(^ z2=8kdRLd4!c<;(h;CkfEa(e;K^4nbFJmv4>!GH^}InM=cmv<#-g5vnZ_mH*bOaqiT zuR)f1RF3~Ec~40&e6-R$6L7 zf<`cuZKBNBrbgvl)lnsl$D#h}1YbZ}DR{w6k=rjoP4OuGmg0E|GM0ZKR#wE3m6es! z#l`EmCxi<|{q&5C7LWW$ZzbjAO3Q?*CVqPZ=hT5&P+J`O$29=avC2_9C@vTGojb+@ z-O_~KCnNY>(Ii^LRg2+U$K6K&{Vt0=7Wb(68DQiTblN0zMD_ooh-vCnyPcqdli&zY zDj;>lk;&5E=0!Z6x1Im8?c0B71rqaQbFnL5X>gG8H2r}t1Vg$@J{hZS@9pTjOYHuQwY_(4%}LLC()RZ!+yOJ5GVs37 zI!vH@lIh?(np&a2X{{0fWB8lDz5@L9zrs3z_U5~MZ7+{Cy=sZt0cp{t($IHbq7J5% z^efuyL@DTX_?o>qlUAW~{CMkI*jx z1XdwK2C5YKeB57wP&@#TZb!BucTf~^XyO<*&(R4wTEedXFF4qHvCBzk2kikGjPF5E zF_jGFR1&nEmMu?|3eh1V{R=b3r@Z8{e7Q0eh`^vZ?nL^89LA}Wx;rjRCKJN}sDG)o}YaHgsSJO zzbNNdzNAgG&S4N?xfO2GkMDYOO=aB=<2&&Y0QK8UTukgM6mg6ozB;2^&9G(jk`B=l zuKio;5Y_lB(uzuDbjz#PEor9%1Qya@4OZ^|psq&%>g;K1X)P4}?;KvgJ;%4%A|01F5e)D$y2)kq{%@gZr6W|`c{KoBrxCz?p?=O_clTFA0o>PJ7!aa-^1TUp*c(> zRD%83+5((^2Sm;n24$vQE&4(AnZQ^*R=6R6JLYjE5sudYhyqOD!sM1)COq-?yGYGR zS^?=!4hRUi1wyPHY~dH>07{c1RrXO0j=1d~y?(nVglHF`hYdkpC*`ELtgWp-udL|h zwcc_s5LlZ(%>n)gN7XpCfBX;Z@1IvHh3B-0i*dSvfe35nyaFiF#iX<;d zih4Qf2J`*Wo`6j}ek5~ab7y)7{niHVfdFmb=A7#qof6leiOw7Q zL)_0;jl{3cw89fNSpLy%1D1Y;0r@#TgjJV!|Nb2Tr_NUBaR55J=Fv}>KnfaMMu%^) zljQo32KdD|0ESQfa9jM*n>1PR)cUotBq<*7uR>KSJW_}swg@S#i^tYBk(~QFg*-MG z@K*|9+`Dy+@DV*X0T_buQPHNVpxG{cQ5kcJI$EDx0XnunEpp!SagZlx#>Ks6-fNg0 z2oUCxuXXk`1`sqb@GVEOHAwwSG_Eiq*P-(k36vGDd+1Re=*+1zihRM04_lzaMPTxl z0tM8I#3NAK0BTlL^qc%InfLRrD<>U50_!krweOrk{&jUda?+0tJ2Tf^w4U4Zav;Em zn=AhHKt$o#O+H+bFHn}V&0DTED;mtNU){8v=BIwMRb~l5ont{!6CWOq+A%CzGpzKr zF({NvB3LwLHGH|%cF5J}SUEEGP57@tufMuSsX+2Qv8@>0YRTOYgsdAFa3&$Pi+=u~ zpE0zk3_dmd93>j#b!jBLLP<;t@sE^!IJLbcT-;$iHA-#UbTbFT+V}e+1=?4HOwA5X zBTHm{f`%S4-#00VH+D;Gw4Cj6Ig-ugz!$#8K{dffHRR{@Jm=lh`CLBj|Eu+4oPVcDAI{})p7eP1HmTzn_$ZZZmd&-78-ok z{L%V*w{#_S>;w_PfAA5csZ-#G0{ZIr_qwHbS!mgp8h`A37f3@*79}QthE+`+Ed$eH z(g%RF!M!|X@#n#~^9rbW9-A*wJNJA&l9X?`bt*Je1RDFMWuF^&EDQV0Z4&&>qz#li zjUm{wo<{GWI0lAnMRoqlX0!w?YBd~?U)dK?#^^KF3;b+#y$DKg*U9~en}_D`5B}TQ zzE@2WSYo^Nz1s}{g+aOI^B30fq0lG|3QRq##>|HgiQtmhbs^xl9Y*~W8O_WgwcgYI z;G70*H_y>8sng$YcmP$E0k|$6(E?n=d%w~D?u@Q%5sibWh!V;cqNEFJa^+}+GU;=? zXgcw6$r)B<0U)im|CS1gp{7DOk!_D-=2_R zK0$wuYK(lh#s{`AaPiDTvsp$8zU|Yq4$O4MUkBz@e>I1l(^AH$P>s;z3dCrg{;kmu z?SrHZ*FjAZ)B4~#+v49!1i!#^O*@d2v9dRPH3g`f%6W1q$a%8mi}g#7zI=dLbGovB z_n&4z@0s$c0H}D>8jgN2g(LnWKdKD~e!iHifcrx~AP z|FP0$)cl3`^Yw4rPbA&TinoxPvU(eH7diLY?X8C#mg|dG#azShl$A}`>4!3Y)>Q*} z!^JyDw47s_H_;&g#EU!vLqECJO}lBx`$3@EDM|}HjV}nSjLnBYE_?e0I)d57UmTF1 z8I&#C|9x+42vm^cOZ;(?CwC)}FpC}Iy?2e3o?@1_f5+c&8`NXnt(~OK2z5Smi`38J zj4TKIB8Q%FWL3FfQ$zW3u=wY@)O}7xYk4mVh2GiX8-~itmpo9Gqq<(3%_t&NjB$u- z&@|(an$b2|ZW7w!xA}5vSak~pGTV;*FLTzQ`zyqg96^--x@RIDR%mjp!Er7Ze6B2- zuFsBy$cvYx?xcmXjaV4};R<*KfT!K1JS!2Ssxm|S?9d(!m6M|AVhz_UR&EO5b~_}{ z9Qg=)o|4=;#B-`4`E?Jrr@NfhZ3~5M#ZA}>#a0M>-G_~Vh&}93@?i7iD+(p?GlRmD zx9R}Kv%Wz3Q=%m!1Y$hzsGnluZyn*%SCl_frY#r|Q7T* zAuD?`O9Kt4Uf1bz-5G3UuZSr2tBJMe1tgGO#2>`0mVHFKlzj9)v{>ae(Y-ew47Lc; zzXUf>%$@;sX%${}!beTc$SNK(MLDbeVaD01trhmP5X|q~6t~51f%RYeR9T!B zYmPaR4=&Ya<$wCum;bVSq2~qa2jG)Av&k!3LJC(Z>I`&#tk%q!YJSQxn`pU_VUc>* z4D(K~(VwcmCg~^25}EH4Um`at`5)J2sD$y;^lKunn0ZuC=EI?BQ+Va`N({q&>7R#7 zT2&cy2-uPTkv%F5?!{=-{v|&Cv#IYXA(2rT1~KmihWz6@^h;D6;_06OWNsf@@E&n4 z+I}0p%_|(x#+4?hC{%V{{-%w{(!9BcdY9t_JwQHVmi)v~J(l*|klLk7E%zi~<-H-c z!@u%qNKabA99X~qnS8Ch4XGqY^AAVZM5fQ#LFrSvdZ{yu{)E3{!?_CxOGCqO8Kdj$ zo{V!eCTC}W`*Z}^9os_i7^#r()!A26M(gwrQu>QJFZr%yVq5>-8y7*qq8g}Wxanz| z#El8QoY+-GGUoK@lwH6y&iMa^#%=d43TqhfM@AdSm177FV?+dkB_;3P_;Y4E4S88c?|{aFgDQsh-kA~4 zO1DIPfa6cF;Kb)PAyoDBYl55XJbL-OGk(0!D{)tUQ}^Ni|L$$vygB*-ELfhj*pm~s zCnK0oOk>!S@?^peH65mzS1R4IeWLgOD^~F5y(^^&xT&Bsbu;szHI`b@&ZP#$-a)_h z*n4>VZ!s|gwcDThpBigU=qjj)6PX&emp=7p_{bMSh3!T~7(D1UkbKaCJ#3^?4@j#fj$q=)~R5W&cvnWX*v1)L(f7Oq=W$&;I%3tU$gA%mx1Y zEp|=NrbIkECx@tV^7H8Vq$slC4&em{lSOO(P`l+FMN1U(Hkwv$`lY=K;1&>27MlI$ zg#h@&12o&INzGpd3c%Xt7yjLo1I8+xwul&GR~*)K-Y6VLZ8X@&u(6t*o$u}2-@osR zSJGepwwk`oQDFzx%-gm_0uYMhXKl;sYX(;`>)!Bce z__+0ggxJ3Ggjdr$dx9mNDC8x@uB?CDExeVI-A?I)9++msC73qC zS0C^&9N6gja9>XrmPveUN4-j7=j768J>P*}f)E+DyUD}#-)*P}tA%+AQu4Et;7w#k z?KriD4Ms=c5}|eqVjfdJtpLC`Yj_NArk;i_&U9@8;E=xnaHWz<-tJF(SXpHo%FO>W`}c`jQTJXo5}#__q&mJ9ZNv^Tu* z$-;`gvQhOJv90a4tozLP!svKnFqkGf!!m_xb0d(T4c!}sw=VSAt1HR7PU)@JCqkGO zU8`D4%i&wZu-AiQXh_K$Pa~ve(C-b!y*jOOOZxex7U8g#IrUOwNAu^*H8qSdlFN|! zu>U9Dr^Pk0Wj6yBgRo`$d3v~JSl2=qtt$PsPI7B@ziU4>`s$L)J8rEX*YNUb#5TS5 zd#@&=t-bsnvYEWe&^GkV@U}ZjZqzkNx%GubL|o+5A&8cnhd;NH!ZV8M#0yS*mDtzBSBHbP#pF=BqZd98GVPo zo8{Lx|ObJiJlJN}6GJO>tP+ov`_rypg**&(?f4otLONl*>Xx zzgv0RUmtEJY~Q_*D8%)+>f(RCNd4?a6KyjKrBLZ}rany{5rWpn|}al#0*}1XQDwa%!+ni!uyN8 zgR&Xj7z0DlTH~ZKCk!!u-~eAv)I=g_5I@=$@>cTpaYC&BI<)`yY+xd+(`UzJLW=@WosqVk*cZ|m$zmKo&@Hzh`GG^1(fmR45eOG@A3Sft7}q zvOFZ|67ky?so!Qb6+o4J)?2{KnB7&W;nr%Mt{{1rjl_L$C$LRQZ#@R<<4JFFnRQ*- zZ&MsK=AAf(k*8CSNUb!ua~1Rc$gE9HKI|>8w~#m)Wu>(B3)eXxQP`8>)ojuS5u&PO0NBNk5wKb`$Y2yXHwc4I5R;ZI?vBKKU);=r3!RO3-tFe`F z=ZfAWC%3G5j4r8eP&~>HflFOuJ7Th%RCbr*dnMQu2zS%dvvPax#3Gsw;$l6ap`pX+ zCS@1fE{3P2jK1d28oC61tg4c%Eo8cZ31y{Vg!P=mVY|CaFZJIE^jl zX&Q@`l1+JlU_3RsbySdnwBMl0BFDFxx{qcN}%Z2iVE}bsBl|hQ#^uBsI%7lV@KBbGI0bAF+|H8H& zJ*EIACeJ#OYqY*EO(puE+psd7Sm`GSLYqtR-O1!U80MIpMs(d{{S2$tF|jk3Q9N#L z?sZ&Bkge`Fs3DJXuSbT`8(&sQd+x?y1#6?a{j~nxy7`!?DPyD7JnaI9zC&JoUL;^H zB6P^DN}VbUgS*_6s~agp5*n|&3`}fn9v^bts6OgCbyC4J3+s9KW>Bj``RZUbg zF6wqS&))QCzlmWa<=cLQiH`1>Dm+L6S6S~?7SN*ENwhz0Aalo|B{1b!16pvgPeh87 zfPO~rrSznqZ&veO@%#6k2|GDSt!3{W!ZzQAayKo(ru|OnkL#5<niCQdsrxMjVp0_=@Oz6Qgqv1j-)~Lja^e~-ER%PK~ph`N?FT0k2yf~ z7(%=|T9IZT09w{bb=+%yN>TC5tnIc928JaVVnZyMY}=Z~BEPzh|2_~9ASruNpsMP^ z_3PK|GVmx|k&*e*lHp5b-w_eIbIOCR;l9Tu7h3VwN*k^4NCh@|2keCIwv}}^fr=#0 zO=5x>c1*9rNvd6*c&AdYBn+$^O2j?i ztH$=NV!%JE6BVG4{{W+iyg6MUH{)J4hNeI|K6=^aKk!_#H}?H**?|!s%i2Z* zd3sOEI&ayIU*ASD9NnEYkSI$VXUm2d^&>N_+|ZwvBqywFp0Nlb?SYDxB+MDqbBviJ z{w!C8$8ejqWWH|-p8xoI+W41_Ej!m>>hBL}&id5_u6f{y{(WYmBTyC2_XdIBmFAX4 z$Aw$S#R$mF^;*H~;TUnm@*BKP&m85U`C*iAA5Svbt^T3nLRxFV6|11&RUCyl&yFXy zxe^m31K7%Mg=N9J=d6HX9xrDaw(Cm&WVAGJEs*@gC(ARB%pq%W^V|)P-K+9tNi`@uL*3NBpWxQF77Qi%0Ztj+@p{BRT${?w=RTbS73f(+;*tUm|F#;=V zI?NAEz_fafMRCT*7uLo5jb^#)`VQfQ6xa3?-yihpHFHz;XI$^|*HH-PO7uSVkqn3C z-@l$c7F@rPNmBU3hq(6-mNddNO8W&Z+fh=@#A4HM1FUiU`qnC>-rW4n^f|tsAiK3%t&j)Au#JL;FJtHH5 zq>V(y@p8whQz=c25_XnSxjSaA_i(ZXr%gK~!z6#9@@ zGAn!|tFV45e|qM_cw(O@j8fQ0fJG+~Q)KGbxnchLa8rdP)*q8TF#jM- zMC-Kl8=jJ}=odPx{5@u?luymqbbE1J70!L9R5zvH&1hOLj7z1L;THtKtS-xC15qen zmEPZK(W@5v`0;EPkaDA{Rvue_`Z>#lf_!&!uHJ%&KuFp-*&JDdT>aOHN50+WnF{La z>LXl~9#lPHXZ%ckZP>x*jo@x8?Vgp{d7r`)MkNi|IEa*ccfBd}I>slct*zrR#Yq}i z)jl)cyBjSGlQR>Kcvje$NI3kQ(#Zgs?|Wae=XsP*`(8IQvn*_?WZ@@&Wuh~gKFh(u z(d~BOLVycoo?IipbD&T&AFpwbWW32(i9H~h4HNw#7~nwnd)}@u|3PE+Y=?h&-CZ^RHkmvs*sBwYffmB zgg(6tk?}Z47maWan|Vszp%JDP`iqILVk4M!7xk^5_jtgiLVMou+)=K;-ICl|ZUGZu zQE~+{$WzySPi3=sh+pba(%01O$^C4LYzkxRGnl5SWW z@0uP!_-18f=q9WWBI*X|B z#~T)>?n_|X_!(>D2qx)UJFfb;mV($*E9(Jb->zU5iji`P#@3m(U|FX;xl*B&+N5dN z(INH>Teg<=&a-D%v(U2bd#D~-Lmg}KyJH-al6oD2qi0`RCt1Cjz|q{X^2>UM14fiU zB)&^cHL&B7c=odUoE(aG!d{8gUuXrfHZoGOm6=$}Cck42@tir`gXca;RI)wZ&o6hk zX-!UE(jjBj(7@nZ${uQ(wvF4SqfZgKbi7nEryrvZ}QT)%S;cJ1i%ast{(8W)mIHqQG z`Wjo(oA?i&9r*FJSJ_Pz)ZcO7>?Y5wYqnYkT`p~6SF+$oswhsEHcLMYrAO7i19QhcZk7)g!u72 zWL^*?e7_3?gnvz*I^gYmAPE`~QnX{DTMu{FT|VQP&u#iK)34YpD}dq0D@Bp4RNR@p z4C+L%Sv zhc?c$?vQWNzL!)*qzoM~MrvK1FV~Id- zZg_l`wfMt71qo60=813fH+$Wk&Z0$Vpp~-D1JqM{)16j)0Hq?qRitxhk{^*2FZW8? z=^Y4&&kDd#_&BM>iKnK*acRN zXz>^P-t9VsUx$T;L*1d`{zQe#ls_zI#9rVUT!$p@vj4Gf&x)T!KS1Q{?Pv(3n$6eU zNPmQ+sks`}e}8@F&$^ywP^r{4JDXZe9^I&6((J>r>ytb6xatVG5q4_oPG}%Dk<~)cie@g4qZre!sXAlC{aVC=VXcmcHI~u1Sdb4j}r$n7Ddv z5_TlbHX*r2mJ>HXH_l38clSBZZ@}A71B1ltN#x0LrS-YO8Gqz`VmY3U|4hLC$20Yb zl=1NT5KFZo$Ehr6SjiWor)SVL3X#^ZBM))JFnqV^e52e|>tFHAPrWmiPYri`H)QYs zvHchhgY7r}qeF15@2+(k@EOxr;G1g^!eCl~aByhTTaf7~>3J1j(pR;qA@vp-w;eXy za$^zC!K+5bUhjNgO+V$)>seSfGKz{ku-6acxtyA=ji?MHVh(djyvnT?x%Z;w7&MFZ z(>>$VZBdAB?mx!A(F8pyhF!5u&%Dtk9DfG>j1U}k>?_Qopgy;KRqlH$J+S}6GTq%H zRw%EmUf)K(p4#woh<9VIuzX*xQsH%`9r7y^^|!He#F+vA#l=%RZCLU-r@Yed7TN)~ z$f)>_ltN3Vaf5yP_SKc*@G9`D6&S=^YYtHDef5%9;_|LY?mrg8Qw(TDbC}{TzMsqX za}{qQx5xS;QlgJ0*nOgn5MST#`jW7Vo|G0FcVTmTmH*sctHiFAXS8FCwh!RC_}28% z8eTsnsNook$zRR!8J~s@jsHk^_U&6p z;A>6}j+fiK^GeFo2`J1%K|2&;xUs&kbiOct1*BIV_Csm?V;dVALw<>^QE!hN8MCE5 zeSP2i0VSu7@R#aDGwV=!&*^zmf^_B$E8;rIhVn&k2+{wemY}0*l`>Nd-RfGdsJedb zn#kVa;k#oEA{#$sC>OF}r3dU|DoS98>G`^sZqu_RQbOVNN>D3~$(&7MVp|Z-r)OTn zJi+sL8M=lG?H;q<*;5BHe6 zPwU2m9MboYtj#r&JTgFg%ksbpR~k~+$hwX54UprbIZ*mjI2{2AMJbEr*>?zQTv57_ z`Nm7^w;aOg8t2Xu#CSaHg;bjM*Xrsb_;hD(eGKX(=NivU=(&o;wh+rtGEcI7mreXk zI^dlSG1)NtC=4+J!uFK6>CNKYYt5cnxq9lnmOti;M)yw-#&I6&gr+fM_hy=CFs7M` zVpI1pRJ$)#YHDC0E;nCn$mcaO3bLo&J4|CEm#w!|6=D`SZP8v`j0=`?6DAu}vpNCg z@7%Rgk0XsT-LB9a&c~8QrbjCu!t7uj!^BWL+GOTMYO-7d)n9P^!(YTu7takXYy9Wp zi9{Hh-#Wf7WGB9TvcRQYL?`Xc(SiBhahtimUKSdz1)Z!1P}|2dGOxsB-SAR{uT46b z24jzBjv?kaA-#+NySEQ8Rs%{~7Vq{o<@qno`(CF!z|dV$Y`5FcnwF`{Fejcf`jp%} z=lm9}RZg5meM=v%rBzwEh@S0t#V~)uG&m(6TB9b;z77m1H<;PkbHzU<&hO58hngLr zjE}M=lDXhLOG|e*+6&9S%kL3bBDO6z&P53!R?xA7M0TnD15qf-6_ckhIa$Azk3MS< z>BY`DZ{ABbK;+-9#HhWfL)_zDZv?*&KK|~^R~2qvUajJ3t?wqI zS{Ty4Z&GxO(kp-xOo~5v)<>B@B$O#GEib<-DKX$X**-Jxy|9Pq_hRqfrLI~fw=iMrMwm80&!!hNUq-j%Fr zrMtIawcNqG^wuusCsE_|_WR3r5+6q7PaI?J<$-zD(v2_*ra0pH*?%J+KOmyuZqqioCB5DgGH|E={X1jo5rNL`yee< zk}8L>PN3!fim&T=4C?G*c&QxszH>av*sR1JeBMFD_2efz*aUlv-@d&N{E!jtSf|-Z z!D_aX38OpR&CpXsBCFugQ)4Fe^;~Ir-pKiGo)zbf9IS+p;Tu zrFeN^rNvgIBMc1Bj&G=azlpR-@G}i&TrF}^f5SY3vNN@$T?wyyo>K2{6Us@ifxaO~ zu}{LD+^-$Aep%=cV@O$_zHLOlTWa@t2jhA<_g81ijL6=yMCbS~uguYRyVm9ri`i!Q zx@mLhQZr7@O}VN|Ds5!479osAn_1_|yZQv>6nn-`c;Y%ndMVwFTepGO~5H|N0KAnt(O~t$6VwO#WKH$ ztJXhSJYVv%Zoc#)Am(6WO0`O?aFHw&#U0i^75fKZj^dWe7ssIt2aIJJb2Ha{v%Er> z%ppShKso;Wov~6J;U#lz;#$X4>o)g3*Z;%Wmw-dPw*Q9^LM16BN>PN$mYqs=DqD7? z?EAitB~;3ivX&`pvV|B71|?))2ZOO>H)gUgv;3c-&U;S3_y1nk`(Br;6HYVpeV%*$ z+@Jftq4|1s@kz; z(S`c6o$C}af8#t#Jk6T zMJE_mgW)KCpqLKRys?$9FBFNGsM&a6Jq;y}J7qIcUJ&3_CG!+LuHz3`X<|E9jc$FgdVVe15^00O@&ezrG`9`7U!VgpY8l|RmKMH}Qr_$tR! zqJQK?^+!NnBsaL#arThG?c;O|Uq7ZLEIRmb>{^vzcMwLQ&Fau=S0YhKISn7z9+*6W zhzoLgMzgPW-=c=J)I#=xjHWd52~X5aMvrordPGve?Qk-$*DD%{22rPmI0rtrJ{}df zAF{trEQ~p?7N2ZhJuSzknL3cO zMHB23i9_ZF0ipN-yTI%0dU-ExS*AN$T3`y0oz$?f_5546!ZYC|+Npud5!1~Fb};hP zq$`^yLZhlrDUmRrd@!cLu9Hs$Dc$3f4C5jFm%4#3IAm6n=Tyn5Z^-IIbo z%lbOfvUkI)W{XwA%kpCgV&P^krqC31PRa`tKR+aC6krxgG*mRpowDO1CFhhua1Aq4 zX>=P}Uk_}+Yeaq^+zqN1t9DGg4qZ1eND4S24;0Q~*B(U8@`N3O09hRS^XTjIr=vf7L?eHO&r3Nm9A7%kOggaVRvB68-* z80z$9dovE#`B@gv55S@S?zDRNH+Mp#VvjUv*EM>#w71oqMo>`_nV#)}$F=!~oGBps zH<3B*PR>3xM@x>l`$Y>L*;g*UOnJxF)+8zA)^ zl+ohhU8SS4prfTZ=LZGVkmAW1k3Zsyit`|@a5Q0#0_~}Ls{Jb>4!%bTuCH>K zMQ|XoyBEWib=NEyW8?ntE1LV4!Fi|%gkL*%3_6X`$XarWMZGs-(u{m2GOS2V$}={X z{DqKmz1tZ3RpGn5_oKg*iu`tG!82~1`^y3RI=jmo)Dr+dpj|qGcl7bp=G*LOkFMS| z@ZBuV6r`e}JKA;V#RW&Z9L*6_1!lyR9sEDp!405Eb=SYB0uz|GIj~oH`TNrydkl;h zwM&wO${&yHL(a+(4DyvMZXi;fbSghYNu;LUDz?5;`eSCMrL!{ztiv;GE-t=0_}M01 zM^8`H&kz1a(qo9O!*^(4;6kom{;Q&*D-r?Q&sSGhTPr)%J#OE-cfmFdleK02JSsUx zz(JG2y7VXBUqd)jU32s^G*=>^R>ISHyCnU?hfb;7q9PYJ4xZ{qmb*`wq>J;~5Ed7# z704C`GU1DSp1w1yhM=pR*G-PeB2Gn1cKqJFW%Eh0aveHoe+*Bryaa?;1#4CJB?qn$;=+aW zS(&=_@+lohza>w$)XFa|3nRr&s?-opnv%UodZ;V!G!GJi^8ort{DU_@e&)kK5B-n) zL!iM4CGL=Anpet_?Xf$mV(MrXbr`j0Vb@Wr(Io*($u-*7PRU#|p!NAmPr;ETSip{$ zL6!H<&kp$U*@)A=ojS$QZxD_HgM$|%m^qWmv?}?*L%MnVC}|s~a0TrjI;%D2dn?Bw^{engQN` z;OS{g7M$5MM!6Q9p4j!AVRMIn6CO3}z+bi4pDp)xh`ZzYxpEs~HWl56G3?`C!BmU` zMfJulBlq|q1l9d#f800t_9iIouc-W$|1(k`M7k5+PeXMwb z!jwG?9!%}Izml=9G}+cLGtk;v84P`Us1GJnDaH$$%saeWfWzTrDX@OM17`NsqD;^$ zU`F*yywisIwG8N75M&eY>+AcY^Zgf{b>=S_MT?}-LpUue!5b--Qe%bpS7=X{qoszr zy6z0ZH%>T7AT4)s8=W+tov+%oF?A?TRy+rv_MToA1As#gRloX2%?4cWiWxb)L4?1d z_@{`=FENlqc30xk@QCa8p3Rff4{8xrRmPs!nns(aOy|6}=c=#D$}Z*ioZ#5^$#sez zY-NrG`<9jUk&9mlON^_>Kffe3HGKd`dmKK<^o;xix-hh=MvSJV1(-# zF8lW5duqSeXTc=L8d}R=6 zU?5RtHf1Me;}fg!WW06-M)3$ya86FtBVxhStEC2voentOx~F6@y1~{T&CuMEYPE8? zWA1wlj=#&@%588n(pA={uKx38YC~Aaf#-=}hU=A>VORQ|ka|iua<=ISN-9?ya@&A^ zL5{e|GP*N0GouCyfiP(ik#ld~zD-+5xMXliEkW>gef{-0EH>e!xMW6lb|Xs9YJPq` zBQH<=V{UF+nOYT+hL#q#(CvOKgK z!PE{+LVLQEbm8K~E9jjZY*FBh`=_WfZ#n)|;ZOcP)e`ZF(>u5A3(frec0NN{%i=mA ztA_I~x;n2=c7;ge!lc0HZo19vmAAc6{p}MMMC2ln1ttp|v8I!5GwrBH0rO!@8BhCG zODgRL@9wy1b(j#~m6DnH`7-^}ZkBKNEL^DCco}Q{u-xkzF9~APYL<^ohdxryGa5Ml ziN6X5L8FmmZ&!;B{;#43e^$H&ElYKG#JaKZXBSIeu>`)&goK2arI8J9-n6<|?QG3v zFb$*1gLr~5o>RuRH{8X8kSgP6e;I|)@D6l$*I8c*_*O7lu_AbKzb6VbQq}LbKn%wxBIlw`ToWg z;9+moth7tDZpDXtt;CBS^Msg26)i>MT<-lhrLlE6kkAU^elP9v3~moGF`7tHi@yDF>_<`)tw`doi| z`aEIbEzS9@xfxl5ov!H9%=T$i%AS}Z*3Hv9;!p64*X#p5SGV;$l6=^3oF|2;ypD`a z4`T$RJ*+1B;Zq`6I>4bsYWxa?UdxO06$ae2qTB4CfAx0nhktW;T(qEeJu{{__3Dpc zz*UpWhZ@56#65c{UOQFO;aUO}kv*&bOTXy0w(A-^mtBC5=RQRk4?@OVymkf`$r zTF%@|_57HbzWzzCu@D3VV?--q3>VWSnB>NR4X$tLOpG~YWU5`qYAImW+2b*RWt7Bi zOQSN8l;DHfb=ESR`Lc!D$d`<1&M2Gn>lTesa78D{lWLfo(1~}UGDia1-K98M-;ev{ z7c3cSYhNBKq@p;&SlLNWFf5hPyNq7T30OpJ# zkk{%64hem_T~YwTPY%u2oIp+Y+s|aFEeb^0a2xtKXeEC`ZY!q~p>;hYgk-#<<1D=! ze^u~bUh|WqAPrZ4e{Sq_V_tGS_1 zr$NjxgocJD0}fZ>Go@uYCGFiLFyz+!t)f!AbEV5uijuf= zd{`v4d8$Rfb!H|Hr4C$Mt9;7XjJBEk3~m)n-L(Guqy3_*Y%#w`zzA!O@ z?5x+Vl+zv68%wF{6}?!PV>Z}GXmzF-TXI#BeQV1~Dv65ZLP2WksOltW$SL`vOWIn? zr#dZdbcq`tGa+HX%wG7*%*y}py166RWdJY^)EnaeQ6=*lGA`nz|9tX~6z<*=%4QH& zYr7~Y1Nc7biok{E`=^yOJeG~R@CuI@ySBg7PEAdT*<<9G7(dt!802Q#8I{^*TKCyO zr2IFZxO;l~<^sRhlBJPSHRaqnSRHd=4BzO`i%G0QFmvV5yIOlOFyZTQRd#YaR})x|*F`uE_=v6W_-7JGNuP)YEHW zJ4+~*4~HP*_0%>t6=N7TexUARft%xF@=v*yqLh`Ce)!JW5#^V`B+?(VT^6H7w)=d0 zvR;f9w@a_}_IS!iw0C^FyFuQsnOR(X-O8cob}7@7+xiZYi8o*_NCPB?T;TPgp&@s@ z9jNr3J9qAnTIidntju&ohBuk4K%9ojrrQ3V z$&GH`H&UL92aLT&mcU}eqEI<^*^@ILHNmR-!_|%e04mHZ>DhRW#LuLo$!pqehqA`8 zm4S_G@B)GU4tkS9=o$!<2J2W2bxBcDp8IQ*#-S2^>%&q4mmt8^R0I+#8MlNCitmw! z#FvY0%MybSO#72CUU$C`n5CT&o(`zZ&Bt4Bw8RZy1uE<(PmWlwA79(Seq7B(q{cza zTVI^yn3iJQlJ=Dvoj$>aL(&t+ryaG)tf{TltP?^pGbfo3%{4QAz>yZ+vCY4;(yJHW zZH$7{f7-B?G(Q#D6KLk1-TM2Ne>2I-Jnu+>r4RaS;e#*MbFwRWQBHz2rY72U%nO@c z)`zbaeuyhzy42e6WhU`&|7zFJD_hzmdX44}K*pZ#97yLVW0wvLyQbx!`f1K) zi@j-~0OZ@Hj}!1ONSkX11J>qsjTDC+;+_UUG&El1S1oP#=IHe;&CkDDUq3nhl!Bv7 zwVdQ3&dD^e9l8+7hHM7Q2}iQZhJ5nedKpDNVM6e>hnbe)n(i^dHC8`JipAbPA9UTW zv>U&?iDBA=$_5w~m^!>}OA&7d{b?ijhq6UBp(10Zok68?V_3e5j{f3;f_}YfFKoIt zeiVwVE;MacT#OnpR5cQMI-g1WOOf2Y z*&bOI54ih`sVR}ajT&DH%B~|9mU{%Zic$3r*!Z55$_0ry3O=`n*vY*B$~^GEtc)b6 zT~!>x6&h82Jy;-cnSvC_Ggb)c%sTTYytI#UjzL|0RD@jaLs#%*lyKiWDo7Z0#Gc-d zcPf;_{*f!jm{4ffAzb;W57YmED_bnv*wRXX5R99fd%0D3C+ls~w-+ZLH9X7N=O+fD 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 ); } + case IdentityAuthMethod.GCP_IAM_AUTH: { + return ( + + ); + } case IdentityAuthMethod.UNIVERSAL_AUTH: { return ( ( - + )} /> From e99182c141422f624c5f98d6d5fcb5388da23f95 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Wed, 8 May 2024 15:51:09 -0700 Subject: [PATCH 05/15] Complete adding GCP GCE auth --- backend/package-lock.json | 212 +++++++- backend/package.json | 2 + backend/src/@types/fastify.d.ts | 4 +- backend/src/@types/knex.d.ts | 14 +- .../20240507213008_identity-gcp-iam-auth.ts | 15 +- .../db/schemas/access-approval-policies.ts | 2 +- ...gcp-iam-auths.ts => identity-gcp-auths.ts} | 15 +- backend/src/db/schemas/index.ts | 2 +- backend/src/db/schemas/models.ts | 4 +- backend/src/db/schemas/users.ts | 2 +- .../ee/services/audit-log/audit-log-types.ts | 38 +- backend/src/server/routes/index.ts | 13 +- ...-router.ts => identity-gcp-auth-router.ts} | 116 +++-- backend/src/server/routes/v1/index.ts | 4 +- .../identity-gcp-auth-dal.ts | 10 + .../identity-gcp-auth-fns.ts | 101 ++++ .../identity-gcp-auth-service.ts | 474 ++++++++++++++++++ .../identity-gcp-auth-types.ts} | 35 +- .../identity-gcp-auth-validators.ts | 24 + .../identity-gcp-iam-auth-dal.ts | 10 - .../identity-gcp-iam-auth-fns.ts | 17 - .../identity-gcp-iam-auth-service.ts | 304 ----------- .../identity-gcp-iam-auth-validators.ts | 14 - .../platform/identities/gcp-iam-auth.mdx | 17 +- .../src/hooks/api/identities/constants.tsx | 2 +- frontend/src/hooks/api/identities/enums.tsx | 2 +- frontend/src/hooks/api/identities/index.tsx | 6 +- .../src/hooks/api/identities/mutations.tsx | 98 ++-- frontend/src/hooks/api/identities/queries.tsx | 16 +- frontend/src/hooks/api/identities/types.ts | 15 +- .../IdentityAuthMethodModal.tsx | 8 +- ...amAuthForm.tsx => IdentityGcpAuthForm.tsx} | 127 ++++- 32 files changed, 1178 insertions(+), 545 deletions(-) rename backend/src/db/schemas/{identity-gcp-iam-auths.ts => identity-gcp-auths.ts} (54%) rename backend/src/server/routes/v1/{identity-gcp-iam-auth-router.ts => identity-gcp-auth-router.ts} (58%) create mode 100644 backend/src/services/identity-gcp-auth/identity-gcp-auth-dal.ts create mode 100644 backend/src/services/identity-gcp-auth/identity-gcp-auth-fns.ts create mode 100644 backend/src/services/identity-gcp-auth/identity-gcp-auth-service.ts rename backend/src/services/{identity-gcp-iam-auth/identity-gcp-iam-auth-types.ts => identity-gcp-auth/identity-gcp-auth-types.ts} (58%) create mode 100644 backend/src/services/identity-gcp-auth/identity-gcp-auth-validators.ts delete mode 100644 backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-dal.ts delete mode 100644 backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-fns.ts delete mode 100644 backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service.ts delete mode 100644 backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-validators.ts rename frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/{IdentityGcpIamAuthForm.tsx => IdentityGcpAuthForm.tsx} (76%) diff --git a/backend/package-lock.json b/backend/package-lock.json index 5928f64a5..071ba6145 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -39,6 +39,8 @@ "dotenv": "^16.4.1", "fastify": "^4.26.0", "fastify-plugin": "^4.5.1", + "google-auth-library": "^9.9.0", + "googleapis": "^137.1.0", "handlebars": "^4.7.8", "ioredis": "^5.3.2", "jmespath": "^0.16.0", @@ -49,7 +51,7 @@ "libsodium-wrappers": "^0.7.13", "lodash.isequal": "^4.5.0", "ms": "^2.1.3", - "mysql2": "^3.9.4", + "mysql2": "^3.9.7", "nanoid": "^5.0.4", "nodemailer": "^6.9.9", "ora": "^7.0.1", @@ -6183,6 +6185,14 @@ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -7759,6 +7769,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "node_modules/extsprintf": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", @@ -8286,6 +8301,88 @@ "node": ">=8" } }, + "node_modules/gaxios": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.5.0.tgz", + "integrity": "sha512-R9QGdv8j4/dlNoQbX3hSaK/S0rkMijqjVvW3YM06CoBdbU/VdKd159j4hePpng0KuE6Lh6JJ7UdmVGJZFcAG1w==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gaxios/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -8482,6 +8579,69 @@ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true }, + "node_modules/google-auth-library": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.9.0.tgz", + "integrity": "sha512-9l+zO07h1tDJdIHN74SpnWIlNR+OuOemXlWJlLP9pXy6vFtizgpEzMuwJa4lqY9UAdiAv5DVd5ql0Am916I+aA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-auth-library/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/google-auth-library/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/googleapis": { + "version": "137.1.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-137.1.0.tgz", + "integrity": "sha512-2L7SzN0FLHyQtFmyIxrcXhgust77067pkkduqkbIpDuj9JzVnByxsRrcRfUMFQam3rQkWW2B0f1i40IwKDWIVQ==", + "dependencies": { + "google-auth-library": "^9.0.0", + "googleapis-common": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis-common": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.2.0.tgz", + "integrity": "sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==", + "dependencies": { + "extend": "^3.0.2", + "gaxios": "^6.0.3", + "google-auth-library": "^9.7.0", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -8504,6 +8664,37 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/gtoken/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/gtoken/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", @@ -9277,6 +9468,14 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -10102,9 +10301,9 @@ } }, "node_modules/mysql2": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.4.tgz", - "integrity": "sha512-OEESQuwxMza803knC1YSt7NMuc1BrK9j7gZhCSs2WAyxr1vfiI7QLaLOKTh5c9SWGz98qVyQUbK8/WckevNQhg==", + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz", + "integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==", "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -13703,6 +13902,11 @@ "querystring": "0.2.0" } }, + "node_modules/url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" + }, "node_modules/url/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", diff --git a/backend/package.json b/backend/package.json index 113fa4d5b..96a4a7c37 100644 --- a/backend/package.json +++ b/backend/package.json @@ -100,6 +100,8 @@ "dotenv": "^16.4.1", "fastify": "^4.26.0", "fastify-plugin": "^4.5.1", + "google-auth-library": "^9.9.0", + "googleapis": "^137.1.0", "handlebars": "^4.7.8", "ioredis": "^5.3.2", "jmespath": "^0.16.0", diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index 278aa7401..7f44b6ec3 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -33,7 +33,7 @@ import { TGroupProjectServiceFactory } from "@app/services/group-project/group-p import { TIdentityServiceFactory } from "@app/services/identity/identity-service"; import { TIdentityAccessTokenServiceFactory } from "@app/services/identity-access-token/identity-access-token-service"; import { TIdentityAwsIamAuthServiceFactory } from "@app/services/identity-aws-iam-auth/identity-aws-iam-auth-service"; -import { TIdentityGcpIamAuthServiceFactory } from "@app/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service"; +import { TIdentityGcpAuthServiceFactory } from "@app/services/identity-gcp-auth/identity-gcp-auth-service"; import { TIdentityProjectServiceFactory } from "@app/services/identity-project/identity-project-service"; import { TIdentityUaServiceFactory } from "@app/services/identity-ua/identity-ua-service"; import { TIntegrationServiceFactory } from "@app/services/integration/integration-service"; @@ -117,7 +117,7 @@ declare module "fastify" { identityAccessToken: TIdentityAccessTokenServiceFactory; identityProject: TIdentityProjectServiceFactory; identityUa: TIdentityUaServiceFactory; - identityGcpIamAuth: TIdentityGcpIamAuthServiceFactory; + identityGcpAuth: TIdentityGcpAuthServiceFactory; identityAwsIamAuth: TIdentityAwsIamAuthServiceFactory; accessApprovalPolicy: TAccessApprovalPolicyServiceFactory; accessApprovalRequest: TAccessApprovalRequestServiceFactory; diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index 7d1df5003..c8884bde4 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -62,9 +62,9 @@ import { TIdentityAwsIamAuths, TIdentityAwsIamAuthsInsert, TIdentityAwsIamAuthsUpdate, - TIdentityGcpIamAuths, - TIdentityGcpIamAuthsInsert, - TIdentityGcpIamAuthsUpdate, + TIdentityGcpAuths, + TIdentityGcpAuthsInsert, + TIdentityGcpAuthsUpdate, TIdentityOrgMemberships, TIdentityOrgMembershipsInsert, TIdentityOrgMembershipsUpdate, @@ -332,10 +332,10 @@ declare module "knex/types/tables" { TIdentityUniversalAuthsInsert, TIdentityUniversalAuthsUpdate >; - [TableName.IdentityGcpIamAuth]: Knex.CompositeTableType< - TIdentityGcpIamAuths, - TIdentityGcpIamAuthsInsert, - TIdentityGcpIamAuthsUpdate + [TableName.IdentityGcpAuth]: Knex.CompositeTableType< + TIdentityGcpAuths, + TIdentityGcpAuthsInsert, + TIdentityGcpAuthsUpdate >; [TableName.IdentityAwsIamAuth]: Knex.CompositeTableType< TIdentityAwsIamAuths, diff --git a/backend/src/db/migrations/20240507213008_identity-gcp-iam-auth.ts b/backend/src/db/migrations/20240507213008_identity-gcp-iam-auth.ts index 3d1a3feb2..2de275045 100644 --- a/backend/src/db/migrations/20240507213008_identity-gcp-iam-auth.ts +++ b/backend/src/db/migrations/20240507213008_identity-gcp-iam-auth.ts @@ -4,8 +4,8 @@ import { TableName } from "../schemas"; import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; export async function up(knex: Knex): Promise { - if (!(await knex.schema.hasTable(TableName.IdentityGcpIamAuth))) { - await knex.schema.createTable(TableName.IdentityGcpIamAuth, (t) => { + if (!(await knex.schema.hasTable(TableName.IdentityGcpAuth))) { + await knex.schema.createTable(TableName.IdentityGcpAuth, (t) => { t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); t.bigInteger("accessTokenTTL").defaultTo(7200).notNullable(); t.bigInteger("accessTokenMaxTTL").defaultTo(7200).notNullable(); @@ -14,15 +14,20 @@ export async function up(knex: Knex): Promise { t.timestamps(true, true, true); t.uuid("identityId").notNullable().unique(); t.foreign("identityId").references("id").inTable(TableName.Identity).onDelete("CASCADE"); + t.text("encryptedCredentials").notNullable(); + t.string("credentialsIV").notNullable(); + t.string("credentialsTag").notNullable(); + t.string("type").notNullable(); t.string("allowedServiceAccounts").notNullable(); t.string("allowedProjects").notNullable(); + t.string("allowedZones").notNullable(); // GCE only (fully qualified zone names) }); } - await createOnUpdateTrigger(knex, TableName.IdentityGcpIamAuth); + await createOnUpdateTrigger(knex, TableName.IdentityGcpAuth); } export async function down(knex: Knex): Promise { - await knex.schema.dropTableIfExists(TableName.IdentityGcpIamAuth); - await dropOnUpdateTrigger(knex, TableName.IdentityGcpIamAuth); + await knex.schema.dropTableIfExists(TableName.IdentityGcpAuth); + await dropOnUpdateTrigger(knex, TableName.IdentityGcpAuth); } diff --git a/backend/src/db/schemas/access-approval-policies.ts b/backend/src/db/schemas/access-approval-policies.ts index bf7e74ff2..69068d23b 100644 --- a/backend/src/db/schemas/access-approval-policies.ts +++ b/backend/src/db/schemas/access-approval-policies.ts @@ -11,8 +11,8 @@ export const AccessApprovalPoliciesSchema = z.object({ id: z.string().uuid(), name: z.string(), approvals: z.number().default(1), - envId: z.string().uuid(), secretPath: z.string().nullable().optional(), + envId: z.string().uuid(), createdAt: z.date(), updatedAt: z.date() }); diff --git a/backend/src/db/schemas/identity-gcp-iam-auths.ts b/backend/src/db/schemas/identity-gcp-auths.ts similarity index 54% rename from backend/src/db/schemas/identity-gcp-iam-auths.ts rename to backend/src/db/schemas/identity-gcp-auths.ts index e5b7d090e..5eda85463 100644 --- a/backend/src/db/schemas/identity-gcp-iam-auths.ts +++ b/backend/src/db/schemas/identity-gcp-auths.ts @@ -7,7 +7,7 @@ import { z } from "zod"; import { TImmutableDBKeys } from "./models"; -export const IdentityGcpIamAuthsSchema = z.object({ +export const IdentityGcpAuthsSchema = z.object({ id: z.string().uuid(), accessTokenTTL: z.coerce.number().default(7200), accessTokenMaxTTL: z.coerce.number().default(7200), @@ -16,10 +16,15 @@ export const IdentityGcpIamAuthsSchema = z.object({ createdAt: z.date(), updatedAt: z.date(), identityId: z.string().uuid(), + encryptedCredentials: z.string(), + credentialsIV: z.string(), + credentialsTag: z.string(), + type: z.string(), allowedServiceAccounts: z.string(), - allowedProjects: z.string() + allowedProjects: z.string(), + allowedZones: z.string() }); -export type TIdentityGcpIamAuths = z.infer; -export type TIdentityGcpIamAuthsInsert = Omit, TImmutableDBKeys>; -export type TIdentityGcpIamAuthsUpdate = Partial, TImmutableDBKeys>>; +export type TIdentityGcpAuths = z.infer; +export type TIdentityGcpAuthsInsert = Omit, TImmutableDBKeys>; +export type TIdentityGcpAuthsUpdate = Partial, TImmutableDBKeys>>; diff --git a/backend/src/db/schemas/index.ts b/backend/src/db/schemas/index.ts index 0b8f1c22e..9ad2c3e46 100644 --- a/backend/src/db/schemas/index.ts +++ b/backend/src/db/schemas/index.ts @@ -18,7 +18,7 @@ export * from "./groups"; export * from "./identities"; export * from "./identity-access-tokens"; export * from "./identity-aws-iam-auths"; -export * from "./identity-gcp-iam-auths"; +export * from "./identity-gcp-auths"; export * from "./identity-org-memberships"; export * from "./identity-project-additional-privilege"; export * from "./identity-project-membership-role"; diff --git a/backend/src/db/schemas/models.ts b/backend/src/db/schemas/models.ts index 2a4c2d9e6..952d18539 100644 --- a/backend/src/db/schemas/models.ts +++ b/backend/src/db/schemas/models.ts @@ -44,7 +44,7 @@ export enum TableName { Identity = "identities", IdentityAccessToken = "identity_access_tokens", IdentityUniversalAuth = "identity_universal_auths", - IdentityGcpIamAuth = "identity_gcp_iam_auths", + IdentityGcpAuth = "identity_gcp_auths", IdentityUaClientSecret = "identity_ua_client_secrets", IdentityAwsIamAuth = "identity_aws_iam_auths", IdentityOrgMembership = "identity_org_memberships", @@ -145,6 +145,6 @@ export enum ProjectUpgradeStatus { export enum IdentityAuthMethod { Univeral = "universal-auth", - GCP_IAM_AUTH = "gcp-iam-auth", + GCP_AUTH = "gcp-auth", AWS_IAM_AUTH = "aws-iam-auth" } diff --git a/backend/src/db/schemas/users.ts b/backend/src/db/schemas/users.ts index 3eee2683f..d5a4d5b49 100644 --- a/backend/src/db/schemas/users.ts +++ b/backend/src/db/schemas/users.ts @@ -22,7 +22,7 @@ export const UsersSchema = z.object({ updatedAt: z.date(), isGhost: z.boolean().default(false), username: z.string(), - isEmailVerified: z.boolean().nullable().optional() + isEmailVerified: z.boolean().default(false).nullable().optional() }); export type TUsers = z.infer; diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index aba6e7329..86fe56c52 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -66,10 +66,10 @@ export enum EventType { CREATE_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET = "create-identity-universal-auth-client-secret", REVOKE_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET = "revoke-identity-universal-auth-client-secret", GET_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRETS = "get-identity-universal-auth-client-secret", - LOGIN_IDENTITY_GCP_IAM_AUTH = "login-identity-gcp-iam-auth", - ADD_IDENTITY_GCP_IAM_AUTH = "add-identity-gcp-iam -auth", - UPDATE_IDENTITY_GCP_IAM_AUTH = "update-identity-gcp-iam-auth", - GET_IDENTITY_GCP_IAM_AUTH = "get-identity-gcp-iam-auth", + LOGIN_IDENTITY_GCP_AUTH = "login-identity-gcp-auth", + ADD_IDENTITY_GCP_AUTH = "add-identity-gcp -auth", + UPDATE_IDENTITY_GCP_AUTH = "update-identity-gcp-auth", + GET_IDENTITY_GCP_AUTH = "get-identity-gcp-auth", LOGIN_IDENTITY_AWS_IAM_AUTH = "login-identity-aws-iam-auth", ADD_IDENTITY_AWS_IAM_AUTH = "add-identity-aws-iam-auth", UPDATE_IDENTITY_AWS_IAM_AUTH = "update-identity-aws-iam-auth", @@ -414,21 +414,23 @@ interface RevokeIdentityUniversalAuthClientSecretEvent { }; } -interface LoginIdentityGcpIamAuthEvent { - type: EventType.LOGIN_IDENTITY_GCP_IAM_AUTH; +interface LoginIdentityGcpAuthEvent { + type: EventType.LOGIN_IDENTITY_GCP_AUTH; metadata: { identityId: string; - identityGcpIamAuthId: string; + identityGcpAuthId: string; identityAccessTokenId: string; }; } -interface AddIdentityGcpIamAuthEvent { - type: EventType.ADD_IDENTITY_GCP_IAM_AUTH; +interface AddIdentityGcpAuthEvent { + type: EventType.ADD_IDENTITY_GCP_AUTH; metadata: { identityId: string; + type: string; allowedServiceAccounts: string; allowedProjects: string; + allowedZones: string; accessTokenTTL: number; accessTokenMaxTTL: number; accessTokenNumUsesLimit: number; @@ -436,12 +438,14 @@ interface AddIdentityGcpIamAuthEvent { }; } -interface UpdateIdentityGcpIamAuthEvent { - type: EventType.UPDATE_IDENTITY_GCP_IAM_AUTH; +interface UpdateIdentityGcpAuthEvent { + type: EventType.UPDATE_IDENTITY_GCP_AUTH; metadata: { identityId: string; + type?: string; allowedServiceAccounts?: string; allowedProjects?: string; + allowedZones?: string; accessTokenTTL?: number; accessTokenMaxTTL?: number; accessTokenNumUsesLimit?: number; @@ -449,8 +453,8 @@ interface UpdateIdentityGcpIamAuthEvent { }; } -interface GetIdentityGcpIamAuthEvent { - type: EventType.GET_IDENTITY_GCP_IAM_AUTH; +interface GetIdentityGcpAuthEvent { + type: EventType.GET_IDENTITY_GCP_AUTH; metadata: { identityId: string; }; @@ -754,10 +758,10 @@ export type Event = | CreateIdentityUniversalAuthClientSecretEvent | GetIdentityUniversalAuthClientSecretsEvent | RevokeIdentityUniversalAuthClientSecretEvent - | LoginIdentityGcpIamAuthEvent - | AddIdentityGcpIamAuthEvent - | UpdateIdentityGcpIamAuthEvent - | GetIdentityGcpIamAuthEvent + | LoginIdentityGcpAuthEvent + | AddIdentityGcpAuthEvent + | UpdateIdentityGcpAuthEvent + | GetIdentityGcpAuthEvent | LoginIdentityAwsIamAuthEvent | AddIdentityAwsIamAuthEvent | UpdateIdentityAwsIamAuthEvent diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index e2dc11606..e14329b9d 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -80,8 +80,8 @@ import { identityAccessTokenDALFactory } from "@app/services/identity-access-tok import { identityAccessTokenServiceFactory } from "@app/services/identity-access-token/identity-access-token-service"; import { identityAwsIamAuthDALFactory } from "@app/services/identity-aws-iam-auth/identity-aws-iam-auth-dal"; import { identityAwsIamAuthServiceFactory } from "@app/services/identity-aws-iam-auth/identity-aws-iam-auth-service"; -import { identityGcpIamAuthDALFactory } from "@app/services/identity-gcp-iam-auth/identity-gcp-iam-auth-dal"; -import { identityGcpIamAuthServiceFactory } from "@app/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service"; +import { identityGcpAuthDALFactory } from "@app/services/identity-gcp-auth/identity-gcp-auth-dal"; +import { identityGcpAuthServiceFactory } from "@app/services/identity-gcp-auth/identity-gcp-auth-service"; import { identityProjectDALFactory } from "@app/services/identity-project/identity-project-dal"; import { identityProjectMembershipRoleDALFactory } from "@app/services/identity-project/identity-project-membership-role-dal"; import { identityProjectServiceFactory } from "@app/services/identity-project/identity-project-service"; @@ -207,7 +207,7 @@ export const registerRoutes = async ( const identityUaClientSecretDAL = identityUaClientSecretDALFactory(db); const identityAwsIamAuthDAL = identityAwsIamAuthDALFactory(db); - const identityGcpIamAuthDAL = identityGcpIamAuthDALFactory(db); + const identityGcpAuthDAL = identityGcpAuthDALFactory(db); const auditLogDAL = auditLogDALFactory(db); const auditLogStreamDAL = auditLogStreamDALFactory(db); @@ -706,11 +706,12 @@ export const registerRoutes = async ( identityUaDAL, licenseService }); - const identityGcpIamAuthService = identityGcpIamAuthServiceFactory({ - identityGcpIamAuthDAL, + const identityGcpAuthService = identityGcpAuthServiceFactory({ + identityGcpAuthDAL, identityOrgMembershipDAL, identityAccessTokenDAL, identityDAL, + orgBotDAL, permissionService, licenseService }); @@ -792,7 +793,7 @@ export const registerRoutes = async ( identityAccessToken: identityAccessTokenService, identityProject: identityProjectService, identityUa: identityUaService, - identityGcpIamAuth: identityGcpIamAuthService, + identityGcpAuth: identityGcpAuthService, identityAwsIamAuth: identityAWSIAMAuthService, secretApprovalPolicy: sapService, accessApprovalPolicy: accessApprovalPolicyService, diff --git a/backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts b/backend/src/server/routes/v1/identity-gcp-auth-router.ts similarity index 58% rename from backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts rename to backend/src/server/routes/v1/identity-gcp-auth-router.ts index 4a0032c02..2f7b0240c 100644 --- a/backend/src/server/routes/v1/identity-gcp-iam-auth-router.ts +++ b/backend/src/server/routes/v1/identity-gcp-auth-router.ts @@ -1,22 +1,24 @@ import { z } from "zod"; -import { IdentityGcpIamAuthsSchema } from "@app/db/schemas"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { AuthMode } from "@app/services/auth/auth-type"; import { TIdentityTrustedIp } from "@app/services/identity/identity-types"; -import { validateGcpIamAuthField } from "@app/services/identity-gcp-iam-auth/identity-gcp-iam-auth-validators"; +import { + ModifiedIdentityGcpAuthsSchema, + validateGcpAuthField +} from "@app/services/identity-gcp-auth/identity-gcp-auth-validators"; -export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvider) => { +export const registerIdentityGcpAuthRouter = async (server: FastifyZodProvider) => { server.route({ method: "POST", - url: "/gcp-iam-auth/login", + url: "/gcp-auth/login", config: { rateLimit: writeLimit }, schema: { - description: "Login with GCP IAM Auth", + description: "Login with GCP Auth", body: z.object({ identityId: z.string(), jwt: z.string() @@ -31,18 +33,18 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide } }, handler: async (req) => { - const { identityGcpIamAuth, accessToken, identityAccessToken, identityMembershipOrg } = - await server.services.identityGcpIamAuth.login(req.body); + const { identityGcpAuth, accessToken, identityAccessToken, identityMembershipOrg } = + await server.services.identityGcpAuth.login(req.body); await server.services.auditLog.createAuditLog({ ...req.auditLogInfo, orgId: identityMembershipOrg?.orgId, event: { - type: EventType.LOGIN_IDENTITY_GCP_IAM_AUTH, + type: EventType.LOGIN_IDENTITY_GCP_AUTH, metadata: { - identityId: identityGcpIamAuth.identityId, + identityId: identityGcpAuth.identityId, identityAccessTokenId: identityAccessToken.id, - identityGcpIamAuthId: identityGcpIamAuth.id + identityGcpAuthId: identityGcpAuth.id } } }); @@ -50,21 +52,21 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide return { accessToken, tokenType: "Bearer" as const, - expiresIn: identityGcpIamAuth.accessTokenTTL, - accessTokenMaxTTL: identityGcpIamAuth.accessTokenMaxTTL + expiresIn: identityGcpAuth.accessTokenTTL, + accessTokenMaxTTL: identityGcpAuth.accessTokenMaxTTL }; } }); server.route({ method: "POST", - url: "/gcp-iam-auth/identities/:identityId", + url: "/gcp-auth/identities/:identityId", config: { rateLimit: writeLimit }, onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), schema: { - description: "Attach GCP IAM Auth configuration onto identity", + description: "Attach GCP Auth configuration onto identity", security: [ { bearerAuth: [] @@ -74,8 +76,11 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide identityId: z.string().trim() }), body: z.object({ - allowedServiceAccounts: validateGcpIamAuthField, - allowedProjects: validateGcpIamAuthField, + credentials: z.string().trim(), + type: z.enum(["iam", "gce"]), + allowedServiceAccounts: validateGcpAuthField, + allowedProjects: validateGcpAuthField, + allowedZones: validateGcpAuthField, accessTokenTrustedIps: z .object({ ipAddress: z.string().trim() @@ -102,12 +107,12 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide }), response: { 200: z.object({ - identityGcpIamAuth: IdentityGcpIamAuthsSchema + identityGcpAuth: ModifiedIdentityGcpAuthsSchema }) } }, handler: async (req) => { - const identityGcpIamAuth = await server.services.identityGcpIamAuth.attachGcpIamAuth({ + const identityGcpAuth = await server.services.identityGcpAuth.attachGcpAuth({ actor: req.permission.type, actorId: req.permission.id, actorAuthMethod: req.permission.authMethod, @@ -118,34 +123,36 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide await server.services.auditLog.createAuditLog({ ...req.auditLogInfo, - orgId: identityGcpIamAuth.orgId, + orgId: identityGcpAuth.orgId, event: { - type: EventType.ADD_IDENTITY_GCP_IAM_AUTH, + type: EventType.ADD_IDENTITY_GCP_AUTH, metadata: { - identityId: identityGcpIamAuth.identityId, - allowedServiceAccounts: identityGcpIamAuth.allowedServiceAccounts, - allowedProjects: identityGcpIamAuth.allowedProjects, - accessTokenTTL: identityGcpIamAuth.accessTokenTTL, - accessTokenMaxTTL: identityGcpIamAuth.accessTokenMaxTTL, - accessTokenTrustedIps: identityGcpIamAuth.accessTokenTrustedIps as TIdentityTrustedIp[], - accessTokenNumUsesLimit: identityGcpIamAuth.accessTokenNumUsesLimit + identityId: identityGcpAuth.identityId, + type: identityGcpAuth.type, + allowedServiceAccounts: identityGcpAuth.allowedServiceAccounts, + allowedProjects: identityGcpAuth.allowedProjects, + allowedZones: identityGcpAuth.allowedZones, + accessTokenTTL: identityGcpAuth.accessTokenTTL, + accessTokenMaxTTL: identityGcpAuth.accessTokenMaxTTL, + accessTokenTrustedIps: identityGcpAuth.accessTokenTrustedIps as TIdentityTrustedIp[], + accessTokenNumUsesLimit: identityGcpAuth.accessTokenNumUsesLimit } } }); - return { identityGcpIamAuth }; + return { identityGcpAuth }; } }); server.route({ method: "PATCH", - url: "/gcp-iam-auth/identities/:identityId", + url: "/gcp-auth/identities/:identityId", config: { rateLimit: writeLimit }, onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), schema: { - description: "Update GCP IAM Auth configuration on identity", + description: "Update GCP Auth configuration on identity", security: [ { bearerAuth: [] @@ -155,8 +162,11 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide identityId: z.string().trim() }), body: z.object({ - allowedServiceAccounts: z.string().trim().optional(), - allowedProjects: z.string().trim().optional(), + credentials: z.string().trim().optional(), + type: z.enum(["iam", "gce"]).optional(), + allowedServiceAccounts: validateGcpAuthField, + allowedProjects: validateGcpAuthField, + allowedZones: validateGcpAuthField, accessTokenTrustedIps: z .object({ ipAddress: z.string().trim() @@ -176,12 +186,12 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide }), response: { 200: z.object({ - identityGcpIamAuth: IdentityGcpIamAuthsSchema + identityGcpAuth: ModifiedIdentityGcpAuthsSchema }) } }, handler: async (req) => { - const identityGcpIamAuth = await server.services.identityGcpIamAuth.updateGcpIamAuth({ + const identityGcpAuth = await server.services.identityGcpAuth.updateGcpAuth({ actor: req.permission.type, actorId: req.permission.id, actorOrgId: req.permission.orgId, @@ -192,34 +202,36 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide await server.services.auditLog.createAuditLog({ ...req.auditLogInfo, - orgId: identityGcpIamAuth.orgId, + orgId: identityGcpAuth.orgId, event: { - type: EventType.UPDATE_IDENTITY_GCP_IAM_AUTH, + type: EventType.UPDATE_IDENTITY_GCP_AUTH, metadata: { - identityId: identityGcpIamAuth.identityId, - allowedServiceAccounts: identityGcpIamAuth.allowedServiceAccounts, - allowedProjects: identityGcpIamAuth.allowedProjects, - accessTokenTTL: identityGcpIamAuth.accessTokenTTL, - accessTokenMaxTTL: identityGcpIamAuth.accessTokenMaxTTL, - accessTokenTrustedIps: identityGcpIamAuth.accessTokenTrustedIps as TIdentityTrustedIp[], - accessTokenNumUsesLimit: identityGcpIamAuth.accessTokenNumUsesLimit + identityId: identityGcpAuth.identityId, + type: identityGcpAuth.type, + allowedServiceAccounts: identityGcpAuth.allowedServiceAccounts, + allowedProjects: identityGcpAuth.allowedProjects, + allowedZones: identityGcpAuth.allowedZones, + accessTokenTTL: identityGcpAuth.accessTokenTTL, + accessTokenMaxTTL: identityGcpAuth.accessTokenMaxTTL, + accessTokenTrustedIps: identityGcpAuth.accessTokenTrustedIps as TIdentityTrustedIp[], + accessTokenNumUsesLimit: identityGcpAuth.accessTokenNumUsesLimit } } }); - return { identityGcpIamAuth }; + return { identityGcpAuth }; } }); server.route({ method: "GET", - url: "/gcp-iam-auth/identities/:identityId", + url: "/gcp-auth/identities/:identityId", config: { rateLimit: readLimit }, onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), schema: { - description: "Retrieve GCP IAM Auth configuration on identity", + description: "Retrieve GCP Auth configuration on identity", security: [ { bearerAuth: [] @@ -230,12 +242,12 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide }), response: { 200: z.object({ - identityGcpIamAuth: IdentityGcpIamAuthsSchema + identityGcpAuth: ModifiedIdentityGcpAuthsSchema }) } }, handler: async (req) => { - const identityGcpIamAuth = await server.services.identityGcpIamAuth.getGcpIamAuth({ + const identityGcpAuth = await server.services.identityGcpAuth.getGcpAuth({ identityId: req.params.identityId, actor: req.permission.type, actorId: req.permission.id, @@ -245,16 +257,16 @@ export const registerIdentityGcpIamAuthRouter = async (server: FastifyZodProvide await server.services.auditLog.createAuditLog({ ...req.auditLogInfo, - orgId: identityGcpIamAuth.orgId, + orgId: identityGcpAuth.orgId, event: { - type: EventType.GET_IDENTITY_GCP_IAM_AUTH, + type: EventType.GET_IDENTITY_GCP_AUTH, metadata: { - identityId: identityGcpIamAuth.identityId + identityId: identityGcpAuth.identityId } } }); - return { identityGcpIamAuth }; + return { identityGcpAuth }; } }); }; diff --git a/backend/src/server/routes/v1/index.ts b/backend/src/server/routes/v1/index.ts index 74bad1bdd..406f78be6 100644 --- a/backend/src/server/routes/v1/index.ts +++ b/backend/src/server/routes/v1/index.ts @@ -3,7 +3,7 @@ import { registerAuthRoutes } from "./auth-router"; import { registerProjectBotRouter } from "./bot-router"; import { registerIdentityAccessTokenRouter } from "./identity-access-token-router"; import { registerIdentityAwsIamAuthRouter } from "./identity-aws-iam-auth-router"; -import { registerIdentityGcpIamAuthRouter } from "./identity-gcp-iam-auth-router"; +import { registerIdentityGcpAuthRouter } from "./identity-gcp-auth-router"; import { registerIdentityRouter } from "./identity-router"; import { registerIdentityUaRouter } from "./identity-ua"; import { registerIntegrationAuthRouter } from "./integration-auth-router"; @@ -29,7 +29,7 @@ export const registerV1Routes = async (server: FastifyZodProvider) => { async (authRouter) => { await authRouter.register(registerAuthRoutes); await authRouter.register(registerIdentityUaRouter); - await authRouter.register(registerIdentityGcpIamAuthRouter); + await authRouter.register(registerIdentityGcpAuthRouter); await authRouter.register(registerIdentityAwsIamAuthRouter); await authRouter.register(registerIdentityAccessTokenRouter); }, diff --git a/backend/src/services/identity-gcp-auth/identity-gcp-auth-dal.ts b/backend/src/services/identity-gcp-auth/identity-gcp-auth-dal.ts new file mode 100644 index 000000000..e10250445 --- /dev/null +++ b/backend/src/services/identity-gcp-auth/identity-gcp-auth-dal.ts @@ -0,0 +1,10 @@ +import { TDbClient } from "@app/db"; +import { TableName } from "@app/db/schemas"; +import { ormify } from "@app/lib/knex"; + +export type TIdentityGcpAuthDALFactory = ReturnType; + +export const identityGcpAuthDALFactory = (db: TDbClient) => { + const gcpAuthOrm = ormify(db, TableName.IdentityGcpAuth); + return gcpAuthOrm; +}; diff --git a/backend/src/services/identity-gcp-auth/identity-gcp-auth-fns.ts b/backend/src/services/identity-gcp-auth/identity-gcp-auth-fns.ts new file mode 100644 index 000000000..ad3095b71 --- /dev/null +++ b/backend/src/services/identity-gcp-auth/identity-gcp-auth-fns.ts @@ -0,0 +1,101 @@ +import axios from "axios"; +import { JWTInput, OAuth2Client } from "google-auth-library"; +import { google } from "googleapis"; +import jwt from "jsonwebtoken"; + +import { UnauthorizedError } from "@app/lib/errors"; + +import { TDecodedGcpIamAuthJwt, TGcpGceIdTokenPayload } from "./identity-gcp-auth-types"; + +/** + * Return the full details of the service account corresponding to the service account email or unique ID [serviceAccount]. + * @param {string} serviceAccount - The email or unique ID of the service account. + * @param {string} credentials - The credentials in the GCP Auth configuration for Infisical. + * @returns + */ +const getGcpServiceAccountDetails = async (serviceAccount: string, credentials: string) => { + const auth = new google.auth.GoogleAuth({ + credentials: JSON.parse(credentials) as JWTInput, + scopes: ["https://www.googleapis.com/auth/iam"] + }); + + const iam = google.iam({ + version: "v1", + auth + }); + + const { data } = await iam.projects.serviceAccounts.get({ + name: `projects/-/serviceAccounts/${serviceAccount}` + }); + + return data; +}; + +/** + * Validates that the identity token [jwt] sent in from a client GCE instance as part of GCP GCE authentication + * is valid. + * @param {string} identityId - The ID of the identity in Infisical that is being authenticated against (used as audience). + * @param {string} jwt - The identity token to validate. + * @param {string} credentials - The credentials in the GCP Auth configuration for Infisical. + */ +export const validateGceIdentity = async ({ + identityId, + jwt: identityToken, + credentials +}: { + identityId: string; + jwt: string; + credentials: string; +}) => { + const oAuth2Client = new OAuth2Client(); + const response = await oAuth2Client.getFederatedSignonCerts(); + const ticket = await oAuth2Client.verifySignedJwtWithCertsAsync( + identityToken, + response.certs, + identityId, // audience + ["https://accounts.google.com"] + ); + const payload = ticket.getPayload() as TGcpGceIdTokenPayload; + if (!payload || !payload.email) throw new UnauthorizedError(); + const serviceAccountDetails = await getGcpServiceAccountDetails(payload.email, credentials); + + return { serviceAccountDetails, gceInstanceDetails: payload }; +}; + +/** + * Validates that the signed JWT token for a GCP service account is valid as part of GCP IAM authentication. + * @param {string} identityId - The ID of the identity in Infisical that is being authenticated against (used as audience). + * @param {string} jwt - The signed JWT token to validate. + * @param {string} credentials - The credentials in the GCP Auth configuration for Infisical. + * @returns + */ +export const validateIamIdentity = async ({ + identityId, + jwt: serviceAccountJwt, + credentials +}: { + identityId: string; + jwt: string; + credentials: string; +}) => { + const decodedJwt = jwt.decode(serviceAccountJwt, { complete: true }) as TDecodedGcpIamAuthJwt; + const { sub, aud } = decodedJwt.payload; + + const { + data + }: { + data: { + [key: string]: string; + }; + } = await axios.get(`https://www.googleapis.com/service_accounts/v1/metadata/x509/${sub}`); + + const publicKey = data[decodedJwt.header.kid]; + + jwt.verify(serviceAccountJwt, publicKey, { + algorithms: ["RS256"] + }); + + if (aud !== identityId) throw new UnauthorizedError(); + const serviceAccountDetails = await getGcpServiceAccountDetails(sub, credentials); + return { serviceAccountDetails }; +}; diff --git a/backend/src/services/identity-gcp-auth/identity-gcp-auth-service.ts b/backend/src/services/identity-gcp-auth/identity-gcp-auth-service.ts new file mode 100644 index 000000000..e2fb37386 --- /dev/null +++ b/backend/src/services/identity-gcp-auth/identity-gcp-auth-service.ts @@ -0,0 +1,474 @@ +import { ForbiddenError } from "@casl/ability"; +import { iam_v1 } from "googleapis"; +import jwt from "jsonwebtoken"; + +import { IdentityAuthMethod, SecretKeyEncoding, TIdentityGcpAuthsUpdate } from "@app/db/schemas"; +import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; +import { OrgPermissionActions, OrgPermissionSubjects } from "@app/ee/services/permission/org-permission"; +import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service"; +import { getConfig } from "@app/lib/config/env"; +import { + decryptSymmetric, + encryptSymmetric, + generateAsymmetricKeyPair, + generateSymmetricKey, + infisicalSymmetricDecrypt, + infisicalSymmetricEncypt +} from "@app/lib/crypto/encryption"; +import { BadRequestError, UnauthorizedError } from "@app/lib/errors"; +import { extractIPDetails, isValidIpOrCidr } from "@app/lib/ip"; +import { TOrgBotDALFactory } from "@app/services/org/org-bot-dal"; + +import { AuthTokenType } from "../auth/auth-type"; +import { TIdentityDALFactory } from "../identity/identity-dal"; +import { TIdentityOrgDALFactory } from "../identity/identity-org-dal"; +import { TIdentityAccessTokenDALFactory } from "../identity-access-token/identity-access-token-dal"; +import { TIdentityAccessTokenJwtPayload } from "../identity-access-token/identity-access-token-types"; +import { TIdentityGcpAuthDALFactory } from "./identity-gcp-auth-dal"; +import { validateGceIdentity, validateIamIdentity } from "./identity-gcp-auth-fns"; +import { + TAttachGcpAuthDTO, + TGcpGceIdTokenPayload, + TGetGcpAuthDTO, + TLoginGcpAuthDTO, + TUpdateGcpAuthDTO +} from "./identity-gcp-auth-types"; + +type TIdentityGcpAuthServiceFactoryDep = { + identityGcpAuthDAL: Pick; + identityOrgMembershipDAL: Pick; + identityAccessTokenDAL: Pick; + identityDAL: Pick; + orgBotDAL: Pick; + permissionService: Pick; + licenseService: Pick; +}; + +export type TIdentityGcpAuthServiceFactory = ReturnType; + +export const identityGcpAuthServiceFactory = ({ + identityGcpAuthDAL, + identityOrgMembershipDAL, + identityAccessTokenDAL, + identityDAL, + orgBotDAL, + permissionService, + licenseService +}: TIdentityGcpAuthServiceFactoryDep) => { + const login = async ({ identityId, jwt: serviceAccountJwt }: TLoginGcpAuthDTO) => { + const identityGcpAuth = await identityGcpAuthDAL.findOne({ identityId }); + if (!identityGcpAuth) throw new UnauthorizedError(); + + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId: identityGcpAuth.identityId }); + if (!identityMembershipOrg) throw new UnauthorizedError(); + + const orgBot = await orgBotDAL.findOne({ orgId: identityMembershipOrg.orgId }); + if (!orgBot) throw new BadRequestError({ message: "Org bot not found", name: "OrgBotNotFound" }); + + const key = infisicalSymmetricDecrypt({ + ciphertext: orgBot.encryptedSymmetricKey, + iv: orgBot.symmetricKeyIV, + tag: orgBot.symmetricKeyTag, + keyEncoding: orgBot.symmetricKeyKeyEncoding as SecretKeyEncoding + }); + + const { encryptedCredentials, credentialsIV, credentialsTag } = identityGcpAuth; + let credentials = ""; + if (encryptedCredentials && credentialsIV && credentialsTag) { + credentials = decryptSymmetric({ + ciphertext: encryptedCredentials, + key, + tag: credentialsTag, + iv: credentialsIV + }); + } + + let serviceAccountDetails: iam_v1.Schema$ServiceAccount; + let gceInstanceDetails: TGcpGceIdTokenPayload | undefined; + switch (identityGcpAuth.type) { + case "gce": { + const gceIdentity = await validateGceIdentity({ + identityId, + jwt: serviceAccountJwt, + credentials + }); + serviceAccountDetails = gceIdentity.serviceAccountDetails; + gceInstanceDetails = gceIdentity.gceInstanceDetails; + break; + } + case "iam": { + const iamIdentity = await validateIamIdentity({ + identityId, + jwt: serviceAccountJwt, + credentials + }); + serviceAccountDetails = iamIdentity.serviceAccountDetails; + break; + } + default: { + throw new BadRequestError({ message: "Invalid GCP Auth type" }); + } + } + + if (identityGcpAuth.allowedServiceAccounts) { + // validate if the service account is in the list of allowed service accounts + + const isServiceAccountAllowed = identityGcpAuth.allowedServiceAccounts + .split(",") + .map((serviceAccount) => serviceAccount.trim()) + .some( + (serviceAccount) => + serviceAccount === serviceAccountDetails.email || serviceAccount === serviceAccountDetails.uniqueId + ); + + if (!isServiceAccountAllowed) throw new UnauthorizedError(); + } + + if (identityGcpAuth.allowedProjects) { + // validate if the project that the service account belongs to is in the list of allowed projects + + const isProjectAllowed = identityGcpAuth.allowedProjects + .split(",") + .map((project) => project.trim()) + .some((project) => project === serviceAccountDetails.projectId); + + if (!isProjectAllowed) throw new UnauthorizedError(); + } + + if (identityGcpAuth.type === "gce" && gceInstanceDetails && identityGcpAuth.allowedZones) { + const isZoneAllowed = identityGcpAuth.allowedZones + .split(",") + .map((zone) => zone.trim()) + .some((zone) => zone === gceInstanceDetails!.google.compute_engine.zone); + + if (!isZoneAllowed) throw new UnauthorizedError(); + } + + const identityAccessToken = await identityGcpAuthDAL.transaction(async (tx) => { + const newToken = await identityAccessTokenDAL.create( + { + identityId: identityGcpAuth.identityId, + isAccessTokenRevoked: false, + accessTokenTTL: identityGcpAuth.accessTokenTTL, + accessTokenMaxTTL: identityGcpAuth.accessTokenMaxTTL, + accessTokenNumUses: 0, + accessTokenNumUsesLimit: identityGcpAuth.accessTokenNumUsesLimit + }, + tx + ); + return newToken; + }); + + const appCfg = getConfig(); + const accessToken = jwt.sign( + { + identityId: identityGcpAuth.identityId, + identityAccessTokenId: identityAccessToken.id, + authTokenType: AuthTokenType.IDENTITY_ACCESS_TOKEN + } as TIdentityAccessTokenJwtPayload, + appCfg.AUTH_SECRET, + { + expiresIn: + Number(identityAccessToken.accessTokenMaxTTL) === 0 + ? undefined + : Number(identityAccessToken.accessTokenMaxTTL) + } + ); + + return { accessToken, identityGcpAuth, identityAccessToken, identityMembershipOrg }; + }; + + const attachGcpAuth = async ({ + identityId, + credentials, + type, + allowedServiceAccounts, + allowedProjects, + allowedZones, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps, + actorId, + actorAuthMethod, + actor, + actorOrgId + }: TAttachGcpAuthDTO) => { + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); + if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); + if (identityMembershipOrg.identity.authMethod) + throw new BadRequestError({ + message: "Failed to add GCP Auth to already configured identity" + }); + + if (accessTokenMaxTTL > 0 && accessTokenTTL > accessTokenMaxTTL) { + throw new BadRequestError({ message: "Access token TTL cannot be greater than max TTL" }); + } + + const { permission } = await permissionService.getOrgPermission( + actor, + actorId, + identityMembershipOrg.orgId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Create, OrgPermissionSubjects.Identity); + + const plan = await licenseService.getPlan(identityMembershipOrg.orgId); + const reformattedAccessTokenTrustedIps = accessTokenTrustedIps.map((accessTokenTrustedIp) => { + if ( + !plan.ipAllowlisting && + accessTokenTrustedIp.ipAddress !== "0.0.0.0/0" && + accessTokenTrustedIp.ipAddress !== "::/0" + ) + throw new BadRequestError({ + message: + "Failed to add IP access range to access token due to plan restriction. Upgrade plan to add IP access range." + }); + if (!isValidIpOrCidr(accessTokenTrustedIp.ipAddress)) + throw new BadRequestError({ + message: "The IP is not a valid IPv4, IPv6, or CIDR block" + }); + return extractIPDetails(accessTokenTrustedIp.ipAddress); + }); + + const orgBot = await orgBotDAL.transaction(async (tx) => { + const doc = await orgBotDAL.findOne({ orgId: identityMembershipOrg.orgId }, tx); + if (doc) return doc; + + const { privateKey, publicKey } = generateAsymmetricKeyPair(); + const key = generateSymmetricKey(); + const { + ciphertext: encryptedPrivateKey, + iv: privateKeyIV, + tag: privateKeyTag, + encoding: privateKeyKeyEncoding, + algorithm: privateKeyAlgorithm + } = infisicalSymmetricEncypt(privateKey); + const { + ciphertext: encryptedSymmetricKey, + iv: symmetricKeyIV, + tag: symmetricKeyTag, + encoding: symmetricKeyKeyEncoding, + algorithm: symmetricKeyAlgorithm + } = infisicalSymmetricEncypt(key); + + return orgBotDAL.create( + { + name: "Infisical org bot", + publicKey, + privateKeyIV, + encryptedPrivateKey, + symmetricKeyIV, + symmetricKeyTag, + encryptedSymmetricKey, + symmetricKeyAlgorithm, + orgId: identityMembershipOrg.orgId, + privateKeyTag, + privateKeyAlgorithm, + privateKeyKeyEncoding, + symmetricKeyKeyEncoding + }, + tx + ); + }); + + const key = infisicalSymmetricDecrypt({ + ciphertext: orgBot.encryptedSymmetricKey, + iv: orgBot.symmetricKeyIV, + tag: orgBot.symmetricKeyTag, + keyEncoding: orgBot.symmetricKeyKeyEncoding as SecretKeyEncoding + }); + + const { + ciphertext: encryptedCredentials, + iv: credentialsIV, + tag: credentialsTag + } = encryptSymmetric(credentials, key); + + const identityGcpAuth = await identityGcpAuthDAL.transaction(async (tx) => { + const doc = await identityGcpAuthDAL.create( + { + identityId: identityMembershipOrg.identityId, + type, + allowedServiceAccounts, + allowedProjects, + allowedZones, + encryptedCredentials, + credentialsIV, + credentialsTag, + accessTokenMaxTTL, + accessTokenTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps: JSON.stringify(reformattedAccessTokenTrustedIps) + }, + tx + ); + await identityDAL.updateById( + identityMembershipOrg.identityId, + { + authMethod: IdentityAuthMethod.GCP_AUTH + }, + tx + ); + return doc; + }); + return { ...identityGcpAuth, credentials, orgId: identityMembershipOrg.orgId }; + }; + + const updateGcpAuth = async ({ + identityId, + type, + credentials, + allowedServiceAccounts, + allowedProjects, + allowedZones, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps, + actorId, + actorAuthMethod, + actor, + actorOrgId + }: TUpdateGcpAuthDTO) => { + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); + if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); + if (identityMembershipOrg.identity?.authMethod !== IdentityAuthMethod.GCP_AUTH) + throw new BadRequestError({ + message: "Failed to update GCP Auth" + }); + + const identityGcpAuth = await identityGcpAuthDAL.findOne({ identityId }); + + if ( + (accessTokenMaxTTL || identityGcpAuth.accessTokenMaxTTL) > 0 && + (accessTokenTTL || identityGcpAuth.accessTokenMaxTTL) > (accessTokenMaxTTL || identityGcpAuth.accessTokenMaxTTL) + ) { + throw new BadRequestError({ message: "Access token TTL cannot be greater than max TTL" }); + } + + const { permission } = await permissionService.getOrgPermission( + actor, + actorId, + identityMembershipOrg.orgId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Edit, OrgPermissionSubjects.Identity); + + const plan = await licenseService.getPlan(identityMembershipOrg.orgId); + const reformattedAccessTokenTrustedIps = accessTokenTrustedIps?.map((accessTokenTrustedIp) => { + if ( + !plan.ipAllowlisting && + accessTokenTrustedIp.ipAddress !== "0.0.0.0/0" && + accessTokenTrustedIp.ipAddress !== "::/0" + ) + throw new BadRequestError({ + message: + "Failed to add IP access range to access token due to plan restriction. Upgrade plan to add IP access range." + }); + if (!isValidIpOrCidr(accessTokenTrustedIp.ipAddress)) + throw new BadRequestError({ + message: "The IP is not a valid IPv4, IPv6, or CIDR block" + }); + return extractIPDetails(accessTokenTrustedIp.ipAddress); + }); + + const updateQuery: TIdentityGcpAuthsUpdate = { + type, + allowedServiceAccounts, + allowedProjects, + allowedZones, + accessTokenMaxTTL, + accessTokenTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps: reformattedAccessTokenTrustedIps + ? JSON.stringify(reformattedAccessTokenTrustedIps) + : undefined + }; + + const orgBot = await orgBotDAL.findOne({ orgId: identityMembershipOrg.orgId }); + if (!orgBot) throw new BadRequestError({ message: "Org bot not found", name: "OrgBotNotFound" }); + const key = infisicalSymmetricDecrypt({ + ciphertext: orgBot.encryptedSymmetricKey, + iv: orgBot.symmetricKeyIV, + tag: orgBot.symmetricKeyTag, + keyEncoding: orgBot.symmetricKeyKeyEncoding as SecretKeyEncoding + }); + + if (credentials !== undefined) { + const { + ciphertext: encryptedCredentials, + iv: credentialsIV, + tag: credentialsTag + } = encryptSymmetric(credentials, key); + updateQuery.encryptedCredentials = encryptedCredentials; + updateQuery.credentialsIV = credentialsIV; + updateQuery.credentialsTag = credentialsTag; + } + + const updatedGcpAuth = await identityGcpAuthDAL.updateById(identityGcpAuth.id, updateQuery); + + return { + ...updatedGcpAuth, + credentials: decryptSymmetric({ + ciphertext: updatedGcpAuth.encryptedCredentials, + iv: updatedGcpAuth.credentialsIV, + tag: updatedGcpAuth.credentialsTag, + key + }), + orgId: identityMembershipOrg.orgId + }; + }; + + const getGcpAuth = async ({ identityId, actorId, actor, actorAuthMethod, actorOrgId }: TGetGcpAuthDTO) => { + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); + if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); + if (identityMembershipOrg.identity?.authMethod !== IdentityAuthMethod.GCP_AUTH) + throw new BadRequestError({ + message: "The identity does not have GCP Auth attached" + }); + + const identityGcpAuth = await identityGcpAuthDAL.findOne({ identityId }); + + const { permission } = await permissionService.getOrgPermission( + actor, + actorId, + identityMembershipOrg.orgId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Read, OrgPermissionSubjects.Identity); + + const orgBot = await orgBotDAL.findOne({ orgId: identityMembershipOrg.orgId }); + if (!orgBot) throw new BadRequestError({ message: "Org bot not found", name: "OrgBotNotFound" }); + + const key = infisicalSymmetricDecrypt({ + ciphertext: orgBot.encryptedSymmetricKey, + iv: orgBot.symmetricKeyIV, + tag: orgBot.symmetricKeyTag, + keyEncoding: orgBot.symmetricKeyKeyEncoding as SecretKeyEncoding + }); + + const { encryptedCredentials, credentialsIV, credentialsTag } = identityGcpAuth; + let credentials = ""; + if (encryptedCredentials && credentialsIV && credentialsTag) { + credentials = decryptSymmetric({ + ciphertext: encryptedCredentials, + key, + tag: credentialsTag, + iv: credentialsIV + }); + } + + return { ...identityGcpAuth, credentials, orgId: identityMembershipOrg.orgId }; + }; + + return { + login, + attachGcpAuth, + updateGcpAuth, + getGcpAuth + }; +}; diff --git a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-types.ts b/backend/src/services/identity-gcp-auth/identity-gcp-auth-types.ts similarity index 58% rename from backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-types.ts rename to backend/src/services/identity-gcp-auth/identity-gcp-auth-types.ts index 168a5e237..c01ab2edb 100644 --- a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-types.ts +++ b/backend/src/services/identity-gcp-auth/identity-gcp-auth-types.ts @@ -1,34 +1,61 @@ import { TProjectPermission } from "@app/lib/types"; -export type TLoginGcpIamAuthDTO = { +export type TLoginGcpAuthDTO = { identityId: string; jwt: string; }; -export type TAttachGcpIamAuthDTO = { +export type TAttachGcpAuthDTO = { identityId: string; + credentials: string; + type: "iam" | "gce"; allowedServiceAccounts: string; allowedProjects: string; + allowedZones: string; accessTokenTTL: number; accessTokenMaxTTL: number; accessTokenNumUsesLimit: number; accessTokenTrustedIps: { ipAddress: string }[]; } & Omit; -export type TUpdateGcpIamAuthDTO = { +export type TUpdateGcpAuthDTO = { identityId: string; + credentials?: string; + type?: "iam" | "gce"; allowedServiceAccounts?: string; allowedProjects?: string; + allowedZones?: string; accessTokenTTL?: number; accessTokenMaxTTL?: number; accessTokenNumUsesLimit?: number; accessTokenTrustedIps?: { ipAddress: string }[]; } & Omit; -export type TGetGcpIamAuthDTO = { +export type TGetGcpAuthDTO = { identityId: string; } & Omit; +export type TGcpGceIdTokenPayload = { + aud: string; + azp: string; + email: string; + email_verified: boolean; + exp: number; + google: { + compute_engine: { + instance_creation_timestamp: number; + instance_id: string; + instance_name: string; + project_id: string; + project_number: number; + zone: string; + }; + }; + iat: number; + iss: string; + sub: string; +}; + export type TDecodedGcpIamAuthJwt = { header: { alg: string; diff --git a/backend/src/services/identity-gcp-auth/identity-gcp-auth-validators.ts b/backend/src/services/identity-gcp-auth/identity-gcp-auth-validators.ts new file mode 100644 index 000000000..7e3ac9439 --- /dev/null +++ b/backend/src/services/identity-gcp-auth/identity-gcp-auth-validators.ts @@ -0,0 +1,24 @@ +import { z } from "zod"; + +import { IdentityGcpAuthsSchema } from "@app/db/schemas"; + +export const ModifiedIdentityGcpAuthsSchema = IdentityGcpAuthsSchema.omit({ + encryptedCredentials: true, + credentialsIV: true, + credentialsTag: true +}).extend({ + credentials: z.string() +}); + +export const validateGcpAuthField = z + .string() + .trim() + .default("") + .transform((data) => { + if (data === "") return ""; + // Trim each ID and join with ', ' to ensure formatting + return data + .split(",") + .map((id) => id.trim()) + .join(", "); + }); diff --git a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-dal.ts b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-dal.ts deleted file mode 100644 index 78db67968..000000000 --- a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-dal.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { TDbClient } from "@app/db"; -import { TableName } from "@app/db/schemas"; -import { ormify } from "@app/lib/knex"; - -export type TIdentityGcpIamAuthDALFactory = ReturnType; - -export const identityGcpIamAuthDALFactory = (db: TDbClient) => { - const gcpIamAuthOrm = ormify(db, TableName.IdentityGcpIamAuth); - return gcpIamAuthOrm; -}; diff --git a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-fns.ts b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-fns.ts deleted file mode 100644 index f9d054b1b..000000000 --- a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-fns.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Extracts the GCP service account email into the name and project ID parts where - * the email is in the format: @.iam.gserviceaccount.com - */ -export const extractGcpServiceAccountEmail = (email: string) => { - const regex = /^(.+)@(.+)\.iam\.gserviceaccount\.com$/; - const match = email.match(regex); - - if (!match) { - throw new Error("Invalid GCP service account email format."); - } - - const name = match[1]; - const projectId = match[2]; - - return { name, projectId }; -}; diff --git a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service.ts b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service.ts deleted file mode 100644 index 380fffd68..000000000 --- a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-service.ts +++ /dev/null @@ -1,304 +0,0 @@ -import { ForbiddenError } from "@casl/ability"; -import axios from "axios"; -import jwt from "jsonwebtoken"; - -import { IdentityAuthMethod } from "@app/db/schemas"; -import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; -import { OrgPermissionActions, OrgPermissionSubjects } from "@app/ee/services/permission/org-permission"; -import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service"; -import { getConfig } from "@app/lib/config/env"; -import { BadRequestError, UnauthorizedError } from "@app/lib/errors"; -import { extractIPDetails, isValidIpOrCidr } from "@app/lib/ip"; - -import { AuthTokenType } from "../auth/auth-type"; -import { TIdentityDALFactory } from "../identity/identity-dal"; -import { TIdentityOrgDALFactory } from "../identity/identity-org-dal"; -import { TIdentityAccessTokenDALFactory } from "../identity-access-token/identity-access-token-dal"; -import { TIdentityAccessTokenJwtPayload } from "../identity-access-token/identity-access-token-types"; -import { TIdentityGcpIamAuthDALFactory } from "./identity-gcp-iam-auth-dal"; -import { extractGcpServiceAccountEmail } from "./identity-gcp-iam-auth-fns"; -import { - TAttachGcpIamAuthDTO, - TDecodedGcpIamAuthJwt, - TGetGcpIamAuthDTO, - TLoginGcpIamAuthDTO, - TUpdateGcpIamAuthDTO -} from "./identity-gcp-iam-auth-types"; - -type TIdentityGcpIamAuthServiceFactoryDep = { - identityGcpIamAuthDAL: Pick; - identityOrgMembershipDAL: Pick; - identityAccessTokenDAL: Pick; - identityDAL: Pick; - permissionService: Pick; - licenseService: Pick; -}; - -export type TIdentityGcpIamAuthServiceFactory = ReturnType; - -export const identityGcpIamAuthServiceFactory = ({ - identityGcpIamAuthDAL, - identityOrgMembershipDAL, - identityAccessTokenDAL, - identityDAL, - permissionService, - licenseService -}: TIdentityGcpIamAuthServiceFactoryDep) => { - const login = async ({ identityId, jwt: serviceAccountJwt }: TLoginGcpIamAuthDTO) => { - const identityGcpIamAuth = await identityGcpIamAuthDAL.findOne({ identityId }); - if (!identityGcpIamAuth) throw new UnauthorizedError(); - - const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId: identityGcpIamAuth.identityId }); - - const decodedJwt = jwt.decode(serviceAccountJwt, { complete: true }) as TDecodedGcpIamAuthJwt; - const { sub, aud } = decodedJwt.payload; - - const { - data - }: { - data: { - [key: string]: string; - }; - } = await axios.get(`https://www.googleapis.com/service_accounts/v1/metadata/x509/${sub}`); - - const publicKey = data[decodedJwt.header.kid]; - - jwt.verify(serviceAccountJwt, publicKey, { - algorithms: ["RS256"] - }); - - if (aud !== identityId) throw new UnauthorizedError(); - - const { name, projectId } = extractGcpServiceAccountEmail(sub); - - if (identityGcpIamAuth.allowedServiceAccounts) { - // validate if the service account is in the list of allowed service accounts - - const isServiceAccountAllowed = identityGcpIamAuth.allowedServiceAccounts - .split(",") - .map((serviceAccount) => serviceAccount.trim()) - .some((serviceAccount) => serviceAccount === name); - - if (!isServiceAccountAllowed) throw new UnauthorizedError(); - } - - if (identityGcpIamAuth.allowedProjects) { - // validate if the project that the service account belongs to is in the list of allowed projects - - const isProjectAllowed = identityGcpIamAuth.allowedProjects - .split(",") - .map((project) => project.trim()) - .some((project) => project === projectId); - - if (!isProjectAllowed) throw new UnauthorizedError(); - } - - const identityAccessToken = await identityGcpIamAuthDAL.transaction(async (tx) => { - const newToken = await identityAccessTokenDAL.create( - { - identityId: identityGcpIamAuth.identityId, - isAccessTokenRevoked: false, - accessTokenTTL: identityGcpIamAuth.accessTokenTTL, - accessTokenMaxTTL: identityGcpIamAuth.accessTokenMaxTTL, - accessTokenNumUses: 0, - accessTokenNumUsesLimit: identityGcpIamAuth.accessTokenNumUsesLimit - }, - tx - ); - return newToken; - }); - - const appCfg = getConfig(); - const accessToken = jwt.sign( - { - identityId: identityGcpIamAuth.identityId, - identityAccessTokenId: identityAccessToken.id, - authTokenType: AuthTokenType.IDENTITY_ACCESS_TOKEN - } as TIdentityAccessTokenJwtPayload, - appCfg.AUTH_SECRET, - { - expiresIn: - Number(identityAccessToken.accessTokenMaxTTL) === 0 - ? undefined - : Number(identityAccessToken.accessTokenMaxTTL) - } - ); - - return { accessToken, identityGcpIamAuth, identityAccessToken, identityMembershipOrg }; - }; - - const attachGcpIamAuth = async ({ - identityId, - allowedServiceAccounts, - allowedProjects, - accessTokenTTL, - accessTokenMaxTTL, - accessTokenNumUsesLimit, - accessTokenTrustedIps, - actorId, - actorAuthMethod, - actor, - actorOrgId - }: TAttachGcpIamAuthDTO) => { - const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); - if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); - if (identityMembershipOrg.identity.authMethod) - throw new BadRequestError({ - message: "Failed to add AWS IAM Auth to already configured identity" - }); - - if (accessTokenMaxTTL > 0 && accessTokenTTL > accessTokenMaxTTL) { - throw new BadRequestError({ message: "Access token TTL cannot be greater than max TTL" }); - } - - const { permission } = await permissionService.getOrgPermission( - actor, - actorId, - identityMembershipOrg.orgId, - actorAuthMethod, - actorOrgId - ); - ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Create, OrgPermissionSubjects.Identity); - - const plan = await licenseService.getPlan(identityMembershipOrg.orgId); - const reformattedAccessTokenTrustedIps = accessTokenTrustedIps.map((accessTokenTrustedIp) => { - if ( - !plan.ipAllowlisting && - accessTokenTrustedIp.ipAddress !== "0.0.0.0/0" && - accessTokenTrustedIp.ipAddress !== "::/0" - ) - throw new BadRequestError({ - message: - "Failed to add IP access range to access token due to plan restriction. Upgrade plan to add IP access range." - }); - if (!isValidIpOrCidr(accessTokenTrustedIp.ipAddress)) - throw new BadRequestError({ - message: "The IP is not a valid IPv4, IPv6, or CIDR block" - }); - return extractIPDetails(accessTokenTrustedIp.ipAddress); - }); - - const identityAwsIamAuth = await identityGcpIamAuthDAL.transaction(async (tx) => { - const doc = await identityGcpIamAuthDAL.create( - { - identityId: identityMembershipOrg.identityId, - allowedServiceAccounts, - allowedProjects, - accessTokenMaxTTL, - accessTokenTTL, - accessTokenNumUsesLimit, - accessTokenTrustedIps: JSON.stringify(reformattedAccessTokenTrustedIps) - }, - tx - ); - await identityDAL.updateById( - identityMembershipOrg.identityId, - { - authMethod: IdentityAuthMethod.GCP_IAM_AUTH - }, - tx - ); - return doc; - }); - return { ...identityAwsIamAuth, orgId: identityMembershipOrg.orgId }; - }; - - const updateGcpIamAuth = async ({ - identityId, - allowedServiceAccounts, - allowedProjects, - accessTokenTTL, - accessTokenMaxTTL, - accessTokenNumUsesLimit, - accessTokenTrustedIps, - actorId, - actorAuthMethod, - actor, - actorOrgId - }: TUpdateGcpIamAuthDTO) => { - const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); - if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); - if (identityMembershipOrg.identity?.authMethod !== IdentityAuthMethod.GCP_IAM_AUTH) - throw new BadRequestError({ - message: "Failed to update GCP IAM Auth" - }); - - const identityGcpIamAuth = await identityGcpIamAuthDAL.findOne({ identityId }); - - if ( - (accessTokenMaxTTL || identityGcpIamAuth.accessTokenMaxTTL) > 0 && - (accessTokenTTL || identityGcpIamAuth.accessTokenMaxTTL) > - (accessTokenMaxTTL || identityGcpIamAuth.accessTokenMaxTTL) - ) { - throw new BadRequestError({ message: "Access token TTL cannot be greater than max TTL" }); - } - - const { permission } = await permissionService.getOrgPermission( - actor, - actorId, - identityMembershipOrg.orgId, - actorAuthMethod, - actorOrgId - ); - ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Edit, OrgPermissionSubjects.Identity); - - const plan = await licenseService.getPlan(identityMembershipOrg.orgId); - const reformattedAccessTokenTrustedIps = accessTokenTrustedIps?.map((accessTokenTrustedIp) => { - if ( - !plan.ipAllowlisting && - accessTokenTrustedIp.ipAddress !== "0.0.0.0/0" && - accessTokenTrustedIp.ipAddress !== "::/0" - ) - throw new BadRequestError({ - message: - "Failed to add IP access range to access token due to plan restriction. Upgrade plan to add IP access range." - }); - if (!isValidIpOrCidr(accessTokenTrustedIp.ipAddress)) - throw new BadRequestError({ - message: "The IP is not a valid IPv4, IPv6, or CIDR block" - }); - return extractIPDetails(accessTokenTrustedIp.ipAddress); - }); - - const updatedGcpIamAuth = await identityGcpIamAuthDAL.updateById(identityGcpIamAuth.id, { - allowedServiceAccounts, - allowedProjects, - accessTokenMaxTTL, - accessTokenTTL, - accessTokenNumUsesLimit, - accessTokenTrustedIps: reformattedAccessTokenTrustedIps - ? JSON.stringify(reformattedAccessTokenTrustedIps) - : undefined - }); - - return { ...updatedGcpIamAuth, orgId: identityMembershipOrg.orgId }; - }; - - const getGcpIamAuth = async ({ identityId, actorId, actor, actorAuthMethod, actorOrgId }: TGetGcpIamAuthDTO) => { - const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); - if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); - if (identityMembershipOrg.identity?.authMethod !== IdentityAuthMethod.GCP_IAM_AUTH) - throw new BadRequestError({ - message: "The identity does not have GCP IAM Auth attached" - }); - - const gcpIamIdentityAuth = await identityGcpIamAuthDAL.findOne({ identityId }); - - const { permission } = await permissionService.getOrgPermission( - actor, - actorId, - identityMembershipOrg.orgId, - actorAuthMethod, - actorOrgId - ); - ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Read, OrgPermissionSubjects.Identity); - return { ...gcpIamIdentityAuth, orgId: identityMembershipOrg.orgId }; - }; - - return { - login, - attachGcpIamAuth, - updateGcpIamAuth, - getGcpIamAuth - }; -}; diff --git a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-validators.ts b/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-validators.ts deleted file mode 100644 index a581ba9cc..000000000 --- a/backend/src/services/identity-gcp-iam-auth/identity-gcp-iam-auth-validators.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { z } from "zod"; - -export const validateGcpIamAuthField = z - .string() - .trim() - .default("") - .transform((data) => { - if (data === "") return ""; - // Trim each ID and join with ', ' to ensure formatting - return data - .split(",") - .map((id) => id.trim()) - .join(", "); - }); diff --git a/docs/documentation/platform/identities/gcp-iam-auth.mdx b/docs/documentation/platform/identities/gcp-iam-auth.mdx index cf46e36b0..5bc2b5d78 100644 --- a/docs/documentation/platform/identities/gcp-iam-auth.mdx +++ b/docs/documentation/platform/identities/gcp-iam-auth.mdx @@ -1,6 +1,6 @@ --- -title: GCP IAM Auth -description: "Learn how to authenticate with Infisical Google Cloud Platform via IAM service accounts" +title: GCP Auth +description: "Learn how to authenticate with Infisical Google Cloud Platform" --- **GCP IAM Auth** is a GCP-native authentication method for IAM service accounts. @@ -70,6 +70,19 @@ access the Infisical API using the GCP IAM authentication method. To access the Infisical API as the identity, you need to generate a signed JWT token using the `projects.serviceAccounts.signJwt` [API method](https://cloud.google.com/iam/docs/reference/credentials/rest/v1/projects.serviceAccounts/signJwt) and make a request to the `/api/v1/auth/gcp-iam-auth/login` endpoint containing the signed JWT token in exchange for an access token. + + Enable the [IAM Service Account Credentials API](https://console.developers.google.com/apis/api/iamcredentials.googleapis.com/overview) in your project + Cloud Resource Manager API + Identity and Access Management (IAM) API has not been used in project 512461120021 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/iam.googleapis.com/overview?project=512461120021 then retry. + + Add the role `roles/iam.serviceAccountTokenCreator` to the service account. This role includes the required `iam.serviceAccounts.signJwt` permission. + + Must have: `resourcemanager.projects.get` (for the Infisical service account) + +o Infisical uses scope:https://www.googleapis.com/auth/cloud-platform.read-only + + + We provide a few code examples below of how you can authenticate with Infisical to access the [Infisical API](/api-reference/overview/introduction). diff --git a/frontend/src/hooks/api/identities/constants.tsx b/frontend/src/hooks/api/identities/constants.tsx index a97b83861..798a13b88 100644 --- a/frontend/src/hooks/api/identities/constants.tsx +++ b/frontend/src/hooks/api/identities/constants.tsx @@ -2,6 +2,6 @@ import { IdentityAuthMethod } from "./enums"; export const identityAuthToNameMap: { [I in IdentityAuthMethod]: string } = { [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth", - [IdentityAuthMethod.GCP_IAM_AUTH]: "GCP IAM Auth", + [IdentityAuthMethod.GCP_AUTH]: "GCP Auth", [IdentityAuthMethod.AWS_IAM_AUTH]: "AWS IAM Auth" }; diff --git a/frontend/src/hooks/api/identities/enums.tsx b/frontend/src/hooks/api/identities/enums.tsx index ecc8f1215..be50c72ad 100644 --- a/frontend/src/hooks/api/identities/enums.tsx +++ b/frontend/src/hooks/api/identities/enums.tsx @@ -1,5 +1,5 @@ export enum IdentityAuthMethod { UNIVERSAL_AUTH = "universal-auth", - GCP_IAM_AUTH = "gcp-iam-auth", + GCP_AUTH = "gcp-auth", AWS_IAM_AUTH = "aws-iam-auth" } diff --git a/frontend/src/hooks/api/identities/index.tsx b/frontend/src/hooks/api/identities/index.tsx index 21166816f..bd7347f88 100644 --- a/frontend/src/hooks/api/identities/index.tsx +++ b/frontend/src/hooks/api/identities/index.tsx @@ -2,7 +2,7 @@ export { identityAuthToNameMap } from "./constants"; export { IdentityAuthMethod } from "./enums"; export { useAddIdentityAwsIamAuth, - useAddIdentityGcpIamAuth, + useAddIdentityGcpAuth, useAddIdentityUniversalAuth, useCreateIdentity, useCreateIdentityUniversalAuthClientSecret, @@ -10,12 +10,12 @@ export { useRevokeIdentityUniversalAuthClientSecret, useUpdateIdentity, useUpdateIdentityAwsIamAuth, - useUpdateIdentityGcpIamAuth, + useUpdateIdentityGcpAuth, useUpdateIdentityUniversalAuth } from "./mutations"; export { useGetIdentityAwsIamAuth, - useGetIdentityGcpIamAuth, + useGetIdentityGcpAuth, useGetIdentityUniversalAuth, useGetIdentityUniversalAuthClientSecrets } from "./queries"; diff --git a/frontend/src/hooks/api/identities/mutations.tsx b/frontend/src/hooks/api/identities/mutations.tsx index 914264b87..e2cdc8841 100644 --- a/frontend/src/hooks/api/identities/mutations.tsx +++ b/frontend/src/hooks/api/identities/mutations.tsx @@ -6,7 +6,7 @@ import { organizationKeys } from "../organization/queries"; import { identitiesKeys } from "./queries"; import { AddIdentityAwsIamAuthDTO, - AddIdentityGcpIamAuthDTO, + AddIdentityGcpAuthDTO, AddIdentityUniversalAuthDTO, ClientSecretData, CreateIdentityDTO, @@ -16,11 +16,11 @@ import { DeleteIdentityUniversalAuthClientSecretDTO, Identity, IdentityAwsIamAuth, - IdentityGcpIamAuth, + IdentityGcpAuth, IdentityUniversalAuth, UpdateIdentityAwsIamAuthDTO, UpdateIdentityDTO, - UpdateIdentityGcpIamAuthDTO, + UpdateIdentityGcpAuthDTO, UpdateIdentityUniversalAuthDTO } from "./types"; @@ -176,25 +176,31 @@ export const useRevokeIdentityUniversalAuthClientSecret = () => { }); }; -export const useAddIdentityGcpIamAuth = () => { +export const useAddIdentityGcpAuth = () => { const queryClient = useQueryClient(); - return useMutation({ + return useMutation({ mutationFn: async ({ identityId, + credentials, + type, allowedServiceAccounts, allowedProjects, + allowedZones, accessTokenTTL, accessTokenMaxTTL, accessTokenNumUsesLimit, accessTokenTrustedIps }) => { const { - data: { identityGcpIamAuth } - } = await apiRequest.post<{ identityGcpIamAuth: IdentityGcpIamAuth }>( - `/api/v1/auth/gcp-iam-auth/identities/${identityId}`, + data: { identityGcpAuth } + } = await apiRequest.post<{ identityGcpAuth: IdentityGcpAuth }>( + `/api/v1/auth/gcp-auth/identities/${identityId}`, { + credentials, + type, allowedServiceAccounts, allowedProjects, + allowedZones, accessTokenTTL, accessTokenMaxTTL, accessTokenNumUsesLimit, @@ -202,7 +208,47 @@ export const useAddIdentityGcpIamAuth = () => { } ); - return identityGcpIamAuth; + return identityGcpAuth; + }, + onSuccess: (_, { organizationId }) => { + queryClient.invalidateQueries(organizationKeys.getOrgIdentityMemberships(organizationId)); + } + }); +}; + +export const useUpdateIdentityGcpAuth = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ + identityId, + credentials, + type, + allowedServiceAccounts, + allowedProjects, + allowedZones, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + }) => { + const { + data: { identityGcpAuth } + } = await apiRequest.patch<{ identityGcpAuth: IdentityGcpAuth }>( + `/api/v1/auth/gcp-auth/identities/${identityId}`, + { + credentials, + type, + allowedServiceAccounts, + allowedProjects, + allowedZones, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + } + ); + + return identityGcpAuth; }, onSuccess: (_, { organizationId }) => { queryClient.invalidateQueries(organizationKeys.getOrgIdentityMemberships(organizationId)); @@ -246,40 +292,6 @@ export const useAddIdentityAwsIamAuth = () => { }); }; -export const useUpdateIdentityGcpIamAuth = () => { - const queryClient = useQueryClient(); - return useMutation({ - mutationFn: async ({ - identityId, - allowedServiceAccounts, - allowedProjects, - accessTokenTTL, - accessTokenMaxTTL, - accessTokenNumUsesLimit, - accessTokenTrustedIps - }) => { - const { - data: { identityGcpIamAuth } - } = await apiRequest.patch<{ identityGcpIamAuth: IdentityGcpIamAuth }>( - `/api/v1/auth/gcp-iam-auth/identities/${identityId}`, - { - allowedServiceAccounts, - allowedProjects, - accessTokenTTL, - accessTokenMaxTTL, - accessTokenNumUsesLimit, - accessTokenTrustedIps - } - ); - - return identityGcpIamAuth; - }, - onSuccess: (_, { organizationId }) => { - queryClient.invalidateQueries(organizationKeys.getOrgIdentityMemberships(organizationId)); - } - }); -}; - export const useUpdateIdentityAwsIamAuth = () => { const queryClient = useQueryClient(); return useMutation({ diff --git a/frontend/src/hooks/api/identities/queries.tsx b/frontend/src/hooks/api/identities/queries.tsx index 623f1b310..62f139f5f 100644 --- a/frontend/src/hooks/api/identities/queries.tsx +++ b/frontend/src/hooks/api/identities/queries.tsx @@ -5,7 +5,7 @@ import { apiRequest } from "@app/config/request"; import { ClientSecretData, IdentityAwsIamAuth, - IdentityGcpIamAuth, + IdentityGcpAuth, IdentityUniversalAuth } from "./types"; @@ -14,7 +14,7 @@ export const identitiesKeys = { [{ identityId }, "identity-universal-auth"] as const, getIdentityUniversalAuthClientSecrets: (identityId: string) => [{ identityId }, "identity-universal-auth-client-secrets"] as const, - getIdentityGcpIamAuth: (identityId: string) => [{ identityId }, "identity-gcp-iam-auth"] as const, + getIdentityGcpAuth: (identityId: string) => [{ identityId }, "identity-gcp-auth"] as const, getIdentityAwsIamAuth: (identityId: string) => [{ identityId }, "identity-aws-iam-auth"] as const }; @@ -48,17 +48,17 @@ export const useGetIdentityUniversalAuthClientSecrets = (identityId: string) => }); }; -export const useGetIdentityGcpIamAuth = (identityId: string) => { +export const useGetIdentityGcpAuth = (identityId: string) => { return useQuery({ enabled: Boolean(identityId), - queryKey: identitiesKeys.getIdentityGcpIamAuth(identityId), + queryKey: identitiesKeys.getIdentityGcpAuth(identityId), queryFn: async () => { const { - data: { identityGcpIamAuth } - } = await apiRequest.get<{ identityGcpIamAuth: IdentityGcpIamAuth }>( - `/api/v1/auth/gcp-iam-auth/identities/${identityId}` + data: { identityGcpAuth } + } = await apiRequest.get<{ identityGcpAuth: IdentityGcpAuth }>( + `/api/v1/auth/gcp-auth/identities/${identityId}` ); - return identityGcpIamAuth; + return identityGcpAuth; } }); }; diff --git a/frontend/src/hooks/api/identities/types.ts b/frontend/src/hooks/api/identities/types.ts index bb904f462..6cdb05a8c 100644 --- a/frontend/src/hooks/api/identities/types.ts +++ b/frontend/src/hooks/api/identities/types.ts @@ -113,21 +113,27 @@ export type UpdateIdentityUniversalAuthDTO = { }[]; }; -export type IdentityGcpIamAuth = { +export type IdentityGcpAuth = { identityId: string; + credentials: string; + type: "iam" | "gce"; allowedServiceAccounts: string; allowedProjects: string; + allowedZones: string; accessTokenTTL: number; accessTokenMaxTTL: number; accessTokenNumUsesLimit: number; accessTokenTrustedIps: IdentityTrustedIp[]; }; -export type AddIdentityGcpIamAuthDTO = { +export type AddIdentityGcpAuthDTO = { organizationId: string; identityId: string; + credentials: string; + type: "iam" | "gce"; allowedServiceAccounts: string; allowedProjects: string; + allowedZones: string; accessTokenTTL: number; accessTokenMaxTTL: number; accessTokenNumUsesLimit: number; @@ -136,11 +142,14 @@ export type AddIdentityGcpIamAuthDTO = { }[]; }; -export type UpdateIdentityGcpIamAuthDTO = { +export type UpdateIdentityGcpAuthDTO = { organizationId: string; identityId: string; + credentials?: string; + type?: "iam" | "gce"; allowedServiceAccounts?: string; allowedProjects?: string; + allowedZones?: string; accessTokenTTL?: number; accessTokenMaxTTL?: number; accessTokenNumUsesLimit?: number; diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModal.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModal.tsx index ca62bd617..994672ee1 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModal.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModal.tsx @@ -15,7 +15,7 @@ import { IdentityAuthMethod } from "@app/hooks/api/identities"; import { UsePopUpState } from "@app/hooks/usePopUp"; import { IdentityAwsIamAuthForm } from "./IdentityAwsIamAuthForm"; -import { IdentityGcpIamAuthForm } from "./IdentityGcpIamAuthForm"; +import { IdentityGcpAuthForm } from "./IdentityGcpAuthForm"; import { IdentityUniversalAuthForm } from "./IdentityUniversalAuthForm"; type Props = { @@ -30,7 +30,7 @@ type Props = { const identityAuthMethods = [ { label: "Universal Auth", value: IdentityAuthMethod.UNIVERSAL_AUTH }, { label: "AWS IAM Auth", value: IdentityAuthMethod.AWS_IAM_AUTH }, - { label: "GCP Auth", value: IdentityAuthMethod.GCP_IAM_AUTH } + { label: "GCP Auth", value: IdentityAuthMethod.GCP_AUTH } ]; const schema = yup @@ -77,9 +77,9 @@ export const IdentityAuthMethodModal = ({ popUp, handlePopUpOpen, handlePopUpTog /> ); } - case IdentityAuthMethod.GCP_IAM_AUTH: { + case IdentityAuthMethod.GCP_AUTH: { return ( - ; +export type FormData = z.infer; type Props = { handlePopUpOpen: (popUpName: keyof UsePopUpState<["upgradePlan"]>) => void; @@ -51,7 +60,7 @@ type Props = { }; }; -export const IdentityGcpIamAuthForm = ({ +export const IdentityGcpAuthForm = ({ handlePopUpOpen, handlePopUpToggle, identityAuthMethodData @@ -60,21 +69,25 @@ export const IdentityGcpIamAuthForm = ({ const orgId = currentOrg?.id || ""; const { subscription } = useSubscription(); - const { mutateAsync: addMutateAsync } = useAddIdentityGcpIamAuth(); - const { mutateAsync: updateMutateAsync } = useUpdateIdentityGcpIamAuth(); + const { mutateAsync: addMutateAsync } = useAddIdentityGcpAuth(); + const { mutateAsync: updateMutateAsync } = useUpdateIdentityGcpAuth(); - const { data } = useGetIdentityGcpIamAuth(identityAuthMethodData?.identityId ?? ""); + const { data } = useGetIdentityGcpAuth(identityAuthMethodData?.identityId ?? ""); const { control, handleSubmit, reset, - formState: { isSubmitting } + formState: { isSubmitting }, + watch } = useForm({ - resolver: yupResolver(schema), + resolver: zodResolver(schema), defaultValues: { + credentials: "", + type: "iam", allowedServiceAccounts: "", allowedProjects: "", + allowedZones: "", accessTokenTTL: "2592000", accessTokenMaxTTL: "2592000", accessTokenNumUsesLimit: "0", @@ -82,6 +95,8 @@ export const IdentityGcpIamAuthForm = ({ } }); + const watchedType = watch("type"); + const { fields: accessTokenTrustedIpsFields, append: appendAccessTokenTrustedIp, @@ -91,8 +106,11 @@ export const IdentityGcpIamAuthForm = ({ useEffect(() => { if (data) { reset({ + credentials: data.credentials, + type: data.type, allowedServiceAccounts: data.allowedServiceAccounts, allowedProjects: data.allowedProjects, + allowedZones: data.allowedZones, accessTokenTTL: String(data.accessTokenTTL), accessTokenMaxTTL: String(data.accessTokenMaxTTL), accessTokenNumUsesLimit: String(data.accessTokenNumUsesLimit), @@ -106,8 +124,10 @@ export const IdentityGcpIamAuthForm = ({ }); } else { reset({ + type: "iam", allowedServiceAccounts: "", allowedProjects: "", + allowedZones: "", accessTokenTTL: "2592000", accessTokenMaxTTL: "2592000", accessTokenNumUsesLimit: "0", @@ -117,8 +137,11 @@ export const IdentityGcpIamAuthForm = ({ }, [data]); const onFormSubmit = async ({ + credentials, + type, allowedServiceAccounts, allowedProjects, + allowedZones, accessTokenTTL, accessTokenMaxTTL, accessTokenNumUsesLimit, @@ -129,10 +152,13 @@ export const IdentityGcpIamAuthForm = ({ if (data) { await updateMutateAsync({ + identityId: identityAuthMethodData.identityId, organizationId: orgId, + credentials, + type, allowedServiceAccounts, allowedProjects, - identityId: identityAuthMethodData.identityId, + allowedZones, accessTokenTTL: Number(accessTokenTTL), accessTokenMaxTTL: Number(accessTokenMaxTTL), accessTokenNumUsesLimit: Number(accessTokenNumUsesLimit), @@ -140,10 +166,13 @@ export const IdentityGcpIamAuthForm = ({ }); } else { await addMutateAsync({ - organizationId: orgId, identityId: identityAuthMethodData.identityId, + organizationId: orgId, + credentials, + type, allowedServiceAccounts: allowedServiceAccounts || "", allowedProjects: allowedProjects || "", + allowedZones: allowedZones || "", accessTokenTTL: Number(accessTokenTTL), accessTokenMaxTTL: Number(accessTokenMaxTTL), accessTokenNumUsesLimit: Number(accessTokenNumUsesLimit), @@ -171,6 +200,41 @@ export const IdentityGcpIamAuthForm = ({ return (

+ ( + +