@igstack/app-catalog-backend-core 0.8.1 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/db/syncAppCatalog.mjs +3 -1
- package/dist/db/syncAppCatalog.mjs.map +1 -1
- package/dist/generated/prisma/internal/class.mjs +4 -4
- package/dist/generated/prisma/internal/class.mjs.map +1 -1
- package/dist/generated/prisma/internal/prismaNamespace.d.mts +2 -0
- package/dist/generated/prisma/internal/prismaNamespace.d.mts.map +1 -1
- package/dist/generated/prisma/models/DbResource.d.mts +87 -2
- package/dist/generated/prisma/models/DbResource.d.mts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/modules/appCatalog/freshness.mjs +29 -0
- package/dist/modules/appCatalog/freshness.mjs.map +1 -0
- package/dist/modules/appCatalog/service.mjs +4 -1
- package/dist/modules/appCatalog/service.mjs.map +1 -1
- package/dist/types/common/appCatalogTypes.d.mts +25 -1
- package/dist/types/common/appCatalogTypes.d.mts.map +1 -1
- package/package.json +4 -4
- package/prisma/schema.prisma +4 -0
- package/src/__tests__/freshness.test.ts +63 -0
- package/src/db/syncAppCatalog.ts +6 -0
- package/src/generated/prisma/internal/class.ts +4 -4
- package/src/generated/prisma/internal/prismaNamespace.ts +2 -0
- package/src/generated/prisma/internal/prismaNamespaceBrowser.ts +2 -0
- package/src/generated/prisma/models/DbResource.ts +87 -1
- package/src/modules/appCatalog/freshness.ts +47 -0
- package/src/modules/appCatalog/service.ts +7 -0
- package/src/types/common/appCatalogTypes.ts +25 -0
|
@@ -164,7 +164,9 @@ async function syncAppCatalog(resources, tagsDefinitions, approvalMethods, scree
|
|
|
164
164
|
ownerPersonSlug: resource.ownerPersonSlug ?? null,
|
|
165
165
|
accessMaintainerGroupSlugs: resource.accessMaintainerGroupSlugs ?? [],
|
|
166
166
|
accessComments: resource.accessComments ?? null,
|
|
167
|
-
extra: resource.extra ?? null
|
|
167
|
+
extra: resource.extra ?? null,
|
|
168
|
+
lastCheckedAt: resource.lastCheckedAt ? new Date(resource.lastCheckedAt) : null,
|
|
169
|
+
nextCheckAfter: resource.nextCheckAfter ? new Date(resource.nextCheckAfter) : null
|
|
168
170
|
};
|
|
169
171
|
});
|
|
170
172
|
const result = await sync.sync(dbResources);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncAppCatalog.mjs","names":[],"sources":["../../src/db/syncAppCatalog.ts"],"sourcesContent":["import type {\n GroupingTagDefinition,\n Resource,\n} from '../types/common/appCatalogTypes'\nimport { getDbClient } from './client'\nimport { TABLE_SYNC_MAGAZINE } from './tableSyncMagazine'\nimport { tableSyncPrisma } from './tableSyncPrismaAdapter'\nimport { readFile, readdir, stat } from 'node:fs/promises'\nimport { group } from 'radashi'\nimport { upsertAsset } from '../modules/assets/upsertAsset'\nimport type { ApprovalMethod, Group, Person } from '../types'\nimport type { PrismaClient } from '../generated/prisma/client'\nimport { naturalSort } from '../utils/naturalSort'\nimport { parseSourceSlug } from '../utils/parseSourceSlug'\n\nexport interface SyncAppCatalogResult {\n created: number\n updated: number\n deleted: number\n total: number\n}\n\ninterface AssetSyncResult {\n screenshotIds: string[]\n iconName: string | null\n}\n\nfunction isFileNotFoundError(error: unknown): boolean {\n return (\n error instanceof Error &&\n 'code' in error &&\n (error as NodeJS.ErrnoException).code === 'ENOENT'\n )\n}\n\nasync function processAssetDirectory(\n dirPath: string,\n appSlug: string,\n assetType: 'screenshot' | 'icon',\n prisma: PrismaClient,\n): Promise<string[]> {\n try {\n const files = await readdir(dirPath)\n const sortedFiles = naturalSort(files)\n const assetIds: string[] = []\n\n for (let i = 0; i < sortedFiles.length; i++) {\n const fileName = sortedFiles[i]\n if (!fileName) continue\n\n const assetName =\n assetType === 'screenshot'\n ? `${appSlug}-screenshot-${i + 1}`\n : `${appSlug}-icon`\n\n const id = await upsertAsset({\n prisma,\n buffer: await readFile(`${dirPath}/${fileName}`),\n originalFilename: fileName,\n name: assetName,\n assetType,\n })\n assetIds.push(id)\n\n // For icons, only process the first file\n if (assetType === 'icon') {\n break\n }\n }\n\n return assetIds\n } catch (error: unknown) {\n if (isFileNotFoundError(error)) {\n return []\n }\n throw error\n }\n}\n\nasync function syncAppAssets(\n appSlug: string,\n appPath: string,\n prisma: PrismaClient,\n): Promise<AssetSyncResult> {\n const screenshotIds = await processAssetDirectory(\n `${appPath}/screenshots`,\n appSlug,\n 'screenshot',\n prisma,\n )\n\n const iconIds = await processAssetDirectory(\n `${appPath}/icons`,\n appSlug,\n 'icon',\n prisma,\n )\n\n return {\n screenshotIds,\n iconName: iconIds.length > 0 ? `${appSlug}-icon` : null,\n }\n}\n\nasync function syncAssetsFromFileSystem(\n resources: Resource[],\n allAppsAssetsPath: string,\n) {\n const appDirectories = await readdir(allAppsAssetsPath)\n const prisma = getDbClient()\n const bySlug = group(resources, (a) => a.slug)\n\n for (const appDirName of appDirectories) {\n try {\n const stats = await stat(`${allAppsAssetsPath}/${appDirName}`)\n if (!stats.isDirectory()) {\n continue\n }\n } catch (error: unknown) {\n if (isFileNotFoundError(error)) {\n continue\n }\n throw error\n }\n\n const appSlug = appDirName\n if (!bySlug[appSlug]) {\n throw new Error(\n `App '${appSlug}' does not exist in the app catalog. Existing apps: ${Object.keys(bySlug).join(', ')}`,\n )\n }\n\n try {\n const { screenshotIds, iconName } = await syncAppAssets(\n appSlug,\n `${allAppsAssetsPath}/${appDirName}`,\n prisma,\n )\n\n const updateData: {\n screenshotIds?: string[]\n iconName?: string | null\n } = {}\n\n if (screenshotIds.length > 0) {\n updateData.screenshotIds = screenshotIds\n }\n if (iconName !== null) {\n updateData.iconName = iconName\n }\n\n if (Object.keys(updateData).length > 0) {\n await prisma.dbResource.update({\n where: { slug: appSlug },\n data: updateData,\n })\n }\n } catch (error: unknown) {\n const errorMessage =\n error instanceof Error ? error.message : String(error)\n throw new Error(\n `Error while upserting assets for app '${appSlug}': ${errorMessage}`,\n )\n }\n }\n}\n\n/**\n * Optional data to sync alongside the core app catalog.\n */\nexport interface SyncAppCatalogOptions {\n persons?: Person[]\n groups?: Group[]\n}\n\n/**\n * Syncs app catalog data to the database using table sync.\n * This will create new resources, update existing ones, and delete any that are no longer in the input.\n *\n * Note: Call connectDb() before and disconnectDb() after if running in a script.\n */\nexport async function syncAppCatalog(\n resources: Resource[],\n tagsDefinitions: GroupingTagDefinition[],\n approvalMethods: ApprovalMethod[],\n screenshotsPath?: string,\n options?: SyncAppCatalogOptions,\n): Promise<SyncAppCatalogResult> {\n try {\n const prisma = getDbClient()\n\n // Sync Persons first (groups depend on persons via memberships)\n if (options?.persons) {\n const dbPersons = options.persons.map((p) => ({\n slug: p.slug,\n firstName: p.firstName,\n lastName: p.lastName,\n email: p.email ?? null,\n }))\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbPerson,\n }).sync(dbPersons)\n }\n\n // Sync Groups (without memberships first)\n if (options?.groups) {\n const dbGroups = options.groups.map((g) => ({\n slug: g.slug,\n displayName: g.displayName ?? null,\n email: g.email ?? null,\n }))\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbGroup,\n }).sync(dbGroups)\n\n // Now sync GroupMemberships\n const allMemberships = options.groups.flatMap((g) =>\n g.memberSlugs.map((personSlug) => ({\n groupSlug: g.slug,\n personSlug,\n })),\n )\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbGroupMembership,\n }).sync(allMemberships)\n }\n\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbApprovalMethod,\n }).sync(approvalMethods)\n\n const sync = tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbResource,\n })\n\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbAppTagDefinition,\n }).sync(tagsDefinitions)\n\n // Collect all unique source slugs for sync\n const uniqueSourceSlugs = new Set<string>()\n for (const resource of resources) {\n for (const source of resource.sources ?? []) {\n const url = typeof source === 'string' ? source : source.url\n const sourceSlug = parseSourceSlug(url)\n uniqueSourceSlugs.add(sourceSlug)\n }\n }\n\n // Sync Source entries using tableSyncPrisma\n const sources = Array.from(uniqueSourceSlugs).map((slug) => ({\n slug,\n userPrompt: null,\n }))\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.Source,\n }).sync(sources)\n\n // Sort resources: parents first (no parentSlug), then children — for FK integrity\n const sortedResources = [...resources].sort((a, b) => {\n const aIsChild = a.parentSlug ? 1 : 0\n const bIsChild = b.parentSlug ? 1 : 0\n return aIsChild - bIsChild\n })\n\n // Transform Resource to DbResource format (scalar fields only)\n const dbResources = sortedResources.map((resource) => {\n const slug =\n resource.slug ||\n resource.displayName\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n\n return {\n slug,\n type: resource.type ?? 'application',\n displayName: resource.displayName,\n abbreviation: resource.abbreviation ?? null,\n nicknames: resource.nicknames ?? [],\n description: resource.description,\n teams: resource.teams ?? [],\n accessRequest: resource.accessRequest ?? null,\n notes: resource.notes ?? null,\n tags: resource.tags ?? [],\n appUrl: resource.appUrl ?? null,\n links: resource.links ?? null,\n iconName: resource.iconName ?? null,\n screenshotIds: resource.screenshotIds ?? [],\n deprecated: resource.deprecated ?? null,\n aiPrompt: resource.aiPrompt ?? null,\n urlIssues: resource.urlIssues ?? [],\n tiers: resource.tiers ?? null,\n // Fields from former SubResource\n parentSlug: resource.parentSlug ?? null,\n tier: resource.tier ?? null,\n familySlug: resource.familySlug ?? null,\n aliases: resource.aliases ?? [],\n ownerPersonSlug: resource.ownerPersonSlug ?? null,\n accessMaintainerGroupSlugs: resource.accessMaintainerGroupSlugs ?? [],\n accessComments: resource.accessComments ?? null,\n extra: resource.extra ?? null,\n }\n })\n\n // Sync resources\n const result = await sync.sync(dbResources)\n\n // Resolve slug -> id for synced resources so SourceReference can reference by resourceId\n const slugs = dbResources.map((a) => a.slug)\n const resourceRows = await prisma.dbResource.findMany({\n where: { slug: { in: slugs } },\n select: { slug: true, id: true },\n })\n const slugToId = Object.fromEntries(resourceRows.map((r) => [r.slug, r.id]))\n\n // Build allSourceRefs with resourceId (slug already resolved to id)\n const allSourceRefs = sortedResources.flatMap((resource) => {\n const resourceSlug =\n resource.slug ||\n resource.displayName\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n const resourceId = slugToId[resourceSlug]\n if (!resourceId) {\n throw new Error(\n `Resource '${resourceSlug}' has no id after sync. Existing slugs: ${Object.keys(slugToId).join(', ')}`,\n )\n }\n\n return (resource.sources ?? []).map((source) => {\n const url = typeof source === 'string' ? source : source.url\n const sourceSlug = parseSourceSlug(url)\n return {\n resourceId,\n sourceSlug,\n url,\n parseDate: null,\n excerpts: [],\n userPrompt: null,\n }\n })\n })\n\n // Then sync all SourceReferences (with set semantics: old ones deleted, new ones created)\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.SourceReference,\n }).sync(allSourceRefs)\n\n // Get actual synced data to calculate stats\n const actual = result.getActual()\n\n if (screenshotsPath) {\n await syncAssetsFromFileSystem(resources, screenshotsPath)\n } else {\n console.warn('Do not sync screenhots')\n }\n\n return {\n created:\n actual.length - resources.length + (resources.length - actual.length),\n updated: 0, // TableSync doesn't expose this directly\n deleted: 0, // TableSync doesn't expose this directly\n total: actual.length,\n }\n } catch (error) {\n // Wrap error with context\n const errorMessage = error instanceof Error ? error.message : String(error)\n const errorStack = error instanceof Error ? error.stack : undefined\n\n throw new Error(\n `Error syncing app catalog: ${errorMessage}\\n\\nDetails:\\n${errorStack || 'No stack trace available'}`,\n )\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"syncAppCatalog.mjs","names":[],"sources":["../../src/db/syncAppCatalog.ts"],"sourcesContent":["import type {\n GroupingTagDefinition,\n Resource,\n} from '../types/common/appCatalogTypes'\nimport { getDbClient } from './client'\nimport { TABLE_SYNC_MAGAZINE } from './tableSyncMagazine'\nimport { tableSyncPrisma } from './tableSyncPrismaAdapter'\nimport { readFile, readdir, stat } from 'node:fs/promises'\nimport { group } from 'radashi'\nimport { upsertAsset } from '../modules/assets/upsertAsset'\nimport type { ApprovalMethod, Group, Person } from '../types'\nimport type { PrismaClient } from '../generated/prisma/client'\nimport { naturalSort } from '../utils/naturalSort'\nimport { parseSourceSlug } from '../utils/parseSourceSlug'\n\nexport interface SyncAppCatalogResult {\n created: number\n updated: number\n deleted: number\n total: number\n}\n\ninterface AssetSyncResult {\n screenshotIds: string[]\n iconName: string | null\n}\n\nfunction isFileNotFoundError(error: unknown): boolean {\n return (\n error instanceof Error &&\n 'code' in error &&\n (error as NodeJS.ErrnoException).code === 'ENOENT'\n )\n}\n\nasync function processAssetDirectory(\n dirPath: string,\n appSlug: string,\n assetType: 'screenshot' | 'icon',\n prisma: PrismaClient,\n): Promise<string[]> {\n try {\n const files = await readdir(dirPath)\n const sortedFiles = naturalSort(files)\n const assetIds: string[] = []\n\n for (let i = 0; i < sortedFiles.length; i++) {\n const fileName = sortedFiles[i]\n if (!fileName) continue\n\n const assetName =\n assetType === 'screenshot'\n ? `${appSlug}-screenshot-${i + 1}`\n : `${appSlug}-icon`\n\n const id = await upsertAsset({\n prisma,\n buffer: await readFile(`${dirPath}/${fileName}`),\n originalFilename: fileName,\n name: assetName,\n assetType,\n })\n assetIds.push(id)\n\n // For icons, only process the first file\n if (assetType === 'icon') {\n break\n }\n }\n\n return assetIds\n } catch (error: unknown) {\n if (isFileNotFoundError(error)) {\n return []\n }\n throw error\n }\n}\n\nasync function syncAppAssets(\n appSlug: string,\n appPath: string,\n prisma: PrismaClient,\n): Promise<AssetSyncResult> {\n const screenshotIds = await processAssetDirectory(\n `${appPath}/screenshots`,\n appSlug,\n 'screenshot',\n prisma,\n )\n\n const iconIds = await processAssetDirectory(\n `${appPath}/icons`,\n appSlug,\n 'icon',\n prisma,\n )\n\n return {\n screenshotIds,\n iconName: iconIds.length > 0 ? `${appSlug}-icon` : null,\n }\n}\n\nasync function syncAssetsFromFileSystem(\n resources: Resource[],\n allAppsAssetsPath: string,\n) {\n const appDirectories = await readdir(allAppsAssetsPath)\n const prisma = getDbClient()\n const bySlug = group(resources, (a) => a.slug)\n\n for (const appDirName of appDirectories) {\n try {\n const stats = await stat(`${allAppsAssetsPath}/${appDirName}`)\n if (!stats.isDirectory()) {\n continue\n }\n } catch (error: unknown) {\n if (isFileNotFoundError(error)) {\n continue\n }\n throw error\n }\n\n const appSlug = appDirName\n if (!bySlug[appSlug]) {\n throw new Error(\n `App '${appSlug}' does not exist in the app catalog. Existing apps: ${Object.keys(bySlug).join(', ')}`,\n )\n }\n\n try {\n const { screenshotIds, iconName } = await syncAppAssets(\n appSlug,\n `${allAppsAssetsPath}/${appDirName}`,\n prisma,\n )\n\n const updateData: {\n screenshotIds?: string[]\n iconName?: string | null\n } = {}\n\n if (screenshotIds.length > 0) {\n updateData.screenshotIds = screenshotIds\n }\n if (iconName !== null) {\n updateData.iconName = iconName\n }\n\n if (Object.keys(updateData).length > 0) {\n await prisma.dbResource.update({\n where: { slug: appSlug },\n data: updateData,\n })\n }\n } catch (error: unknown) {\n const errorMessage =\n error instanceof Error ? error.message : String(error)\n throw new Error(\n `Error while upserting assets for app '${appSlug}': ${errorMessage}`,\n )\n }\n }\n}\n\n/**\n * Optional data to sync alongside the core app catalog.\n */\nexport interface SyncAppCatalogOptions {\n persons?: Person[]\n groups?: Group[]\n}\n\n/**\n * Syncs app catalog data to the database using table sync.\n * This will create new resources, update existing ones, and delete any that are no longer in the input.\n *\n * Note: Call connectDb() before and disconnectDb() after if running in a script.\n */\nexport async function syncAppCatalog(\n resources: Resource[],\n tagsDefinitions: GroupingTagDefinition[],\n approvalMethods: ApprovalMethod[],\n screenshotsPath?: string,\n options?: SyncAppCatalogOptions,\n): Promise<SyncAppCatalogResult> {\n try {\n const prisma = getDbClient()\n\n // Sync Persons first (groups depend on persons via memberships)\n if (options?.persons) {\n const dbPersons = options.persons.map((p) => ({\n slug: p.slug,\n firstName: p.firstName,\n lastName: p.lastName,\n email: p.email ?? null,\n }))\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbPerson,\n }).sync(dbPersons)\n }\n\n // Sync Groups (without memberships first)\n if (options?.groups) {\n const dbGroups = options.groups.map((g) => ({\n slug: g.slug,\n displayName: g.displayName ?? null,\n email: g.email ?? null,\n }))\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbGroup,\n }).sync(dbGroups)\n\n // Now sync GroupMemberships\n const allMemberships = options.groups.flatMap((g) =>\n g.memberSlugs.map((personSlug) => ({\n groupSlug: g.slug,\n personSlug,\n })),\n )\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbGroupMembership,\n }).sync(allMemberships)\n }\n\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbApprovalMethod,\n }).sync(approvalMethods)\n\n const sync = tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbResource,\n })\n\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.DbAppTagDefinition,\n }).sync(tagsDefinitions)\n\n // Collect all unique source slugs for sync\n const uniqueSourceSlugs = new Set<string>()\n for (const resource of resources) {\n for (const source of resource.sources ?? []) {\n const url = typeof source === 'string' ? source : source.url\n const sourceSlug = parseSourceSlug(url)\n uniqueSourceSlugs.add(sourceSlug)\n }\n }\n\n // Sync Source entries using tableSyncPrisma\n const sources = Array.from(uniqueSourceSlugs).map((slug) => ({\n slug,\n userPrompt: null,\n }))\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.Source,\n }).sync(sources)\n\n // Sort resources: parents first (no parentSlug), then children — for FK integrity\n const sortedResources = [...resources].sort((a, b) => {\n const aIsChild = a.parentSlug ? 1 : 0\n const bIsChild = b.parentSlug ? 1 : 0\n return aIsChild - bIsChild\n })\n\n // Transform Resource to DbResource format (scalar fields only)\n const dbResources = sortedResources.map((resource) => {\n const slug =\n resource.slug ||\n resource.displayName\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n\n return {\n slug,\n type: resource.type ?? 'application',\n displayName: resource.displayName,\n abbreviation: resource.abbreviation ?? null,\n nicknames: resource.nicknames ?? [],\n description: resource.description,\n teams: resource.teams ?? [],\n accessRequest: resource.accessRequest ?? null,\n notes: resource.notes ?? null,\n tags: resource.tags ?? [],\n appUrl: resource.appUrl ?? null,\n links: resource.links ?? null,\n iconName: resource.iconName ?? null,\n screenshotIds: resource.screenshotIds ?? [],\n deprecated: resource.deprecated ?? null,\n aiPrompt: resource.aiPrompt ?? null,\n urlIssues: resource.urlIssues ?? [],\n tiers: resource.tiers ?? null,\n // Fields from former SubResource\n parentSlug: resource.parentSlug ?? null,\n tier: resource.tier ?? null,\n familySlug: resource.familySlug ?? null,\n aliases: resource.aliases ?? [],\n ownerPersonSlug: resource.ownerPersonSlug ?? null,\n accessMaintainerGroupSlugs: resource.accessMaintainerGroupSlugs ?? [],\n accessComments: resource.accessComments ?? null,\n extra: resource.extra ?? null,\n lastCheckedAt: resource.lastCheckedAt\n ? new Date(resource.lastCheckedAt)\n : null,\n nextCheckAfter: resource.nextCheckAfter\n ? new Date(resource.nextCheckAfter)\n : null,\n }\n })\n\n // Sync resources\n const result = await sync.sync(dbResources)\n\n // Resolve slug -> id for synced resources so SourceReference can reference by resourceId\n const slugs = dbResources.map((a) => a.slug)\n const resourceRows = await prisma.dbResource.findMany({\n where: { slug: { in: slugs } },\n select: { slug: true, id: true },\n })\n const slugToId = Object.fromEntries(resourceRows.map((r) => [r.slug, r.id]))\n\n // Build allSourceRefs with resourceId (slug already resolved to id)\n const allSourceRefs = sortedResources.flatMap((resource) => {\n const resourceSlug =\n resource.slug ||\n resource.displayName\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n const resourceId = slugToId[resourceSlug]\n if (!resourceId) {\n throw new Error(\n `Resource '${resourceSlug}' has no id after sync. Existing slugs: ${Object.keys(slugToId).join(', ')}`,\n )\n }\n\n return (resource.sources ?? []).map((source) => {\n const url = typeof source === 'string' ? source : source.url\n const sourceSlug = parseSourceSlug(url)\n return {\n resourceId,\n sourceSlug,\n url,\n parseDate: null,\n excerpts: [],\n userPrompt: null,\n }\n })\n })\n\n // Then sync all SourceReferences (with set semantics: old ones deleted, new ones created)\n await tableSyncPrisma({\n prisma,\n ...TABLE_SYNC_MAGAZINE.SourceReference,\n }).sync(allSourceRefs)\n\n // Get actual synced data to calculate stats\n const actual = result.getActual()\n\n if (screenshotsPath) {\n await syncAssetsFromFileSystem(resources, screenshotsPath)\n } else {\n console.warn('Do not sync screenhots')\n }\n\n return {\n created:\n actual.length - resources.length + (resources.length - actual.length),\n updated: 0, // TableSync doesn't expose this directly\n deleted: 0, // TableSync doesn't expose this directly\n total: actual.length,\n }\n } catch (error) {\n // Wrap error with context\n const errorMessage = error instanceof Error ? error.message : String(error)\n const errorStack = error instanceof Error ? error.stack : undefined\n\n throw new Error(\n `Error syncing app catalog: ${errorMessage}\\n\\nDetails:\\n${errorStack || 'No stack trace available'}`,\n )\n }\n}\n"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ const config = {
|
|
|
6
6
|
"clientVersion": "7.4.2",
|
|
7
7
|
"engineVersion": "94a226be1cf2967af2541cca5529f0f7ba866919",
|
|
8
8
|
"activeProvider": "postgresql",
|
|
9
|
-
"inlineSchema": "// Prisma schema for backend-core library\n// Uses AC_CORE_DATABASE_URL environment variable\n\ndatasource db {\n provider = \"postgresql\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ngenerator json {\n provider = \"prisma-json-types-generator\"\n}\n\n// ========== Better Auth Models ==========\nmodel user {\n id String @id\n name String?\n email String? @unique\n emailVerified Boolean @default(false)\n image String?\n role String @default(\"user\") // 'user' | 'admin'\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n accounts account[]\n sessions session[]\n}\n\nmodel session {\n id String @id\n token String @unique\n userId String\n user user @relation(fields: [userId], references: [id], onDelete: Cascade)\n expiresAt DateTime\n ipAddress String?\n userAgent String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel account {\n id String @id\n userId String\n user user @relation(fields: [userId], references: [id], onDelete: Cascade)\n accountId String\n providerId String\n refreshToken String?\n accessToken String?\n accessTokenExpiresAt DateTime?\n refreshTokenExpiresAt DateTime?\n idToken String?\n scope String?\n password String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([providerId, accountId])\n}\n\nmodel verification {\n id String @id\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([identifier, value])\n}\n\n// ========== EnvHopper Models ==========\n\nenum ApprovalMethodType {\n service\n personTeam\n custom\n noAccessRequired\n unknown\n}\n\n// ========== Person & Group Models ==========\n\nmodel DbPerson {\n slug String @id // email or synthetic\n firstName String\n lastName String\n email String? @unique\n memberships DbGroupMembership[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel DbGroup {\n slug String @id\n displayName String?\n email String? // team alias\n memberships DbGroupMembership[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel DbGroupMembership {\n id Int @id @default(autoincrement())\n groupSlug String\n group DbGroup @relation(fields: [groupSlug], references: [slug], onDelete: Cascade)\n personSlug String\n person DbPerson @relation(fields: [personSlug], references: [slug], onDelete: Cascade)\n\n @@unique([groupSlug, personSlug])\n}\n\nmodel DbApprovalMethod {\n slug String @id\n type ApprovalMethodType\n displayName String\n /// [ApprovalMethodConfig] - Type-specific configuration\n config Json?\n deprecatedAliases String[] @default([]) // Old URLs that should redirect to this method\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([type, displayName])\n}\n\nmodel DbResource {\n id String @id @default(cuid())\n slug String @unique // URL-friendly identifier for navigation\n type String @default(\"application\") // \"application\" | \"sub-resource\" | etc.\n displayName String\n abbreviation String? // Optional short abbreviation (e.g. K8s, ECR, LV)\n nicknames String[] @default([]) // Alternative names / AKA\n description String\n /// [AccessMethod]\n access Json?\n teams String[] @default([])\n /// [AccessRequest] - Per-resource approval configuration linking to ApprovalMethod\n accessRequest Json?\n notes String?\n tags String[] @default([])\n appUrl String?\n /// [AppLink[]]\n links Json? // Array of {displayName?: string, url: string}\n iconName String? // Optional icon identifier matching DbAsset.name\n screenshotIds String[] @default([]) // Ordered array of DbAsset IDs\n /// [AppDeprecation] - Deprecation info with optional replacement slug\n deprecated Json?\n aiPrompt String?\n urlIssues String[] @default([])\n /// [TierVariant[]]\n tiers Json?\n sourceRefs SourceReference[]\n // Self-referential tree: sub-resources point to their parent\n parentSlug String?\n parent DbResource? @relation(\"ResourceTree\", fields: [parentSlug], references: [slug])\n children DbResource[] @relation(\"ResourceTree\")\n // Fields merged from former DbSubResource\n tier String? // e.g. \"prod\", \"dev\"\n familySlug String? // groups tier variants visually\n aliases String[] @default([])\n ownerPersonSlug String?\n accessMaintainerGroupSlugs String[] @default([])\n accessComments String?\n /// [SubResourceExtra]\n extra Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([displayName])\n @@index([slug])\n @@index([tags])\n @@index([parentSlug])\n}\n\nmodel DbAppTagDefinition {\n id String @id @default(cuid())\n prefix String @unique\n displayName String\n description String\n /// [GroupingTagValue[]]\n values Json\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum AssetType {\n icon\n screenshot\n}\n\nmodel DbAsset {\n id String @id @default(cuid())\n name String @unique // Name with extension (e.g., \"jira.svg\", \"github.png\")\n assetType AssetType @default(icon)\n content Bytes // Binary storage for all asset types (SVG, PNG, etc)\n checksum String // SHA-256 of content for deduplication\n mimeType String // e.g., \"image/svg+xml\", \"image/png\", \"image/jpeg\"\n fileSize Int // Size in bytes\n width Int? // Image width in pixels\n height Int? // Image height in pixels\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([name])\n @@index([assetType])\n}\n\nmodel Source {\n slug String @id\n userPrompt String?\n references SourceReference[]\n}\n\nmodel SourceReference {\n id Int @id @default(autoincrement())\n sourceSlug String\n source Source @relation(fields: [sourceSlug], references: [slug], onDelete: Cascade)\n resourceId String\n resource DbResource @relation(fields: [resourceId], references: [id], onDelete: Cascade)\n url String\n parseDate DateTime?\n excerpts String[] @default([])\n userPrompt String?\n\n @@unique([resourceId, url])\n}\n",
|
|
9
|
+
"inlineSchema": "// Prisma schema for backend-core library\n// Uses AC_CORE_DATABASE_URL environment variable\n\ndatasource db {\n provider = \"postgresql\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ngenerator json {\n provider = \"prisma-json-types-generator\"\n}\n\n// ========== Better Auth Models ==========\nmodel user {\n id String @id\n name String?\n email String? @unique\n emailVerified Boolean @default(false)\n image String?\n role String @default(\"user\") // 'user' | 'admin'\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n accounts account[]\n sessions session[]\n}\n\nmodel session {\n id String @id\n token String @unique\n userId String\n user user @relation(fields: [userId], references: [id], onDelete: Cascade)\n expiresAt DateTime\n ipAddress String?\n userAgent String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel account {\n id String @id\n userId String\n user user @relation(fields: [userId], references: [id], onDelete: Cascade)\n accountId String\n providerId String\n refreshToken String?\n accessToken String?\n accessTokenExpiresAt DateTime?\n refreshTokenExpiresAt DateTime?\n idToken String?\n scope String?\n password String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([providerId, accountId])\n}\n\nmodel verification {\n id String @id\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([identifier, value])\n}\n\n// ========== EnvHopper Models ==========\n\nenum ApprovalMethodType {\n service\n personTeam\n custom\n noAccessRequired\n unknown\n}\n\n// ========== Person & Group Models ==========\n\nmodel DbPerson {\n slug String @id // email or synthetic\n firstName String\n lastName String\n email String? @unique\n memberships DbGroupMembership[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel DbGroup {\n slug String @id\n displayName String?\n email String? // team alias\n memberships DbGroupMembership[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel DbGroupMembership {\n id Int @id @default(autoincrement())\n groupSlug String\n group DbGroup @relation(fields: [groupSlug], references: [slug], onDelete: Cascade)\n personSlug String\n person DbPerson @relation(fields: [personSlug], references: [slug], onDelete: Cascade)\n\n @@unique([groupSlug, personSlug])\n}\n\nmodel DbApprovalMethod {\n slug String @id\n type ApprovalMethodType\n displayName String\n /// [ApprovalMethodConfig] - Type-specific configuration\n config Json?\n deprecatedAliases String[] @default([]) // Old URLs that should redirect to this method\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([type, displayName])\n}\n\nmodel DbResource {\n id String @id @default(cuid())\n slug String @unique // URL-friendly identifier for navigation\n type String @default(\"application\") // \"application\" | \"sub-resource\" | etc.\n displayName String\n abbreviation String? // Optional short abbreviation (e.g. K8s, ECR, LV)\n nicknames String[] @default([]) // Alternative names / AKA\n description String\n /// [AccessMethod]\n access Json?\n teams String[] @default([])\n /// [AccessRequest] - Per-resource approval configuration linking to ApprovalMethod\n accessRequest Json?\n notes String?\n tags String[] @default([])\n appUrl String?\n /// [AppLink[]]\n links Json? // Array of {displayName?: string, url: string}\n iconName String? // Optional icon identifier matching DbAsset.name\n screenshotIds String[] @default([]) // Ordered array of DbAsset IDs\n /// [AppDeprecation] - Deprecation info with optional replacement slug\n deprecated Json?\n aiPrompt String?\n urlIssues String[] @default([])\n /// [TierVariant[]]\n tiers Json?\n sourceRefs SourceReference[]\n // Self-referential tree: sub-resources point to their parent\n parentSlug String?\n parent DbResource? @relation(\"ResourceTree\", fields: [parentSlug], references: [slug])\n children DbResource[] @relation(\"ResourceTree\")\n // Fields merged from former DbSubResource\n tier String? // e.g. \"prod\", \"dev\"\n familySlug String? // groups tier variants visually\n aliases String[] @default([])\n ownerPersonSlug String?\n accessMaintainerGroupSlugs String[] @default([])\n accessComments String?\n /// [SubResourceExtra]\n extra Json?\n // Freshness (autoupdate scan): when sources were last verified and when the\n // next check is due. Nullable — apps that have never been scanned carry null.\n lastCheckedAt DateTime?\n nextCheckAfter DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([displayName])\n @@index([slug])\n @@index([tags])\n @@index([parentSlug])\n}\n\nmodel DbAppTagDefinition {\n id String @id @default(cuid())\n prefix String @unique\n displayName String\n description String\n /// [GroupingTagValue[]]\n values Json\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum AssetType {\n icon\n screenshot\n}\n\nmodel DbAsset {\n id String @id @default(cuid())\n name String @unique // Name with extension (e.g., \"jira.svg\", \"github.png\")\n assetType AssetType @default(icon)\n content Bytes // Binary storage for all asset types (SVG, PNG, etc)\n checksum String // SHA-256 of content for deduplication\n mimeType String // e.g., \"image/svg+xml\", \"image/png\", \"image/jpeg\"\n fileSize Int // Size in bytes\n width Int? // Image width in pixels\n height Int? // Image height in pixels\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([name])\n @@index([assetType])\n}\n\nmodel Source {\n slug String @id\n userPrompt String?\n references SourceReference[]\n}\n\nmodel SourceReference {\n id Int @id @default(autoincrement())\n sourceSlug String\n source Source @relation(fields: [sourceSlug], references: [slug], onDelete: Cascade)\n resourceId String\n resource DbResource @relation(fields: [resourceId], references: [id], onDelete: Cascade)\n url String\n parseDate DateTime?\n excerpts String[] @default([])\n userPrompt String?\n\n @@unique([resourceId, url])\n}\n",
|
|
10
10
|
"runtimeDataModel": {
|
|
11
11
|
"models": {},
|
|
12
12
|
"enums": {},
|
|
@@ -17,10 +17,10 @@ const config = {
|
|
|
17
17
|
"graph": ""
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
|
-
config.runtimeDataModel = JSON.parse("{\"models\":{\"user\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"account\",\"relationName\":\"accountTouser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"session\",\"relationName\":\"sessionTouser\"}],\"dbName\":null},\"session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"sessionTouser\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"accountTouser\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbPerson\":{\"fields\":[{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberships\",\"kind\":\"object\",\"type\":\"DbGroupMembership\",\"relationName\":\"DbGroupMembershipToDbPerson\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbGroup\":{\"fields\":[{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberships\",\"kind\":\"object\",\"type\":\"DbGroupMembership\",\"relationName\":\"DbGroupToDbGroupMembership\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbGroupMembership\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"groupSlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"group\",\"kind\":\"object\",\"type\":\"DbGroup\",\"relationName\":\"DbGroupToDbGroupMembership\"},{\"name\":\"personSlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"person\",\"kind\":\"object\",\"type\":\"DbPerson\",\"relationName\":\"DbGroupMembershipToDbPerson\"}],\"dbName\":null},\"DbApprovalMethod\":{\"fields\":[{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"ApprovalMethodType\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"config\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"deprecatedAliases\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbResource\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nicknames\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"access\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"teams\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessRequest\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"notes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tags\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"appUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"links\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"iconName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"screenshotIds\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"deprecated\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"aiPrompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"urlIssues\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tiers\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"sourceRefs\",\"kind\":\"object\",\"type\":\"SourceReference\",\"relationName\":\"DbResourceToSourceReference\"},{\"name\":\"parentSlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"DbResource\",\"relationName\":\"ResourceTree\"},{\"name\":\"children\",\"kind\":\"object\",\"type\":\"DbResource\",\"relationName\":\"ResourceTree\"},{\"name\":\"tier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"familySlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"aliases\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ownerPersonSlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessMaintainerGroupSlugs\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessComments\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"extra\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbAppTagDefinition\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prefix\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"values\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbAsset\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"assetType\",\"kind\":\"enum\",\"type\":\"AssetType\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"Bytes\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"width\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"height\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Source\":{\"fields\":[{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userPrompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"references\",\"kind\":\"object\",\"type\":\"SourceReference\",\"relationName\":\"SourceToSourceReference\"}],\"dbName\":null},\"SourceReference\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"sourceSlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"source\",\"kind\":\"object\",\"type\":\"Source\",\"relationName\":\"SourceToSourceReference\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource\",\"kind\":\"object\",\"type\":\"DbResource\",\"relationName\":\"DbResourceToSourceReference\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parseDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"excerpts\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userPrompt\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}");
|
|
20
|
+
config.runtimeDataModel = JSON.parse("{\"models\":{\"user\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"account\",\"relationName\":\"accountTouser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"session\",\"relationName\":\"sessionTouser\"}],\"dbName\":null},\"session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"sessionTouser\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"accountTouser\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbPerson\":{\"fields\":[{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberships\",\"kind\":\"object\",\"type\":\"DbGroupMembership\",\"relationName\":\"DbGroupMembershipToDbPerson\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbGroup\":{\"fields\":[{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberships\",\"kind\":\"object\",\"type\":\"DbGroupMembership\",\"relationName\":\"DbGroupToDbGroupMembership\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbGroupMembership\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"groupSlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"group\",\"kind\":\"object\",\"type\":\"DbGroup\",\"relationName\":\"DbGroupToDbGroupMembership\"},{\"name\":\"personSlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"person\",\"kind\":\"object\",\"type\":\"DbPerson\",\"relationName\":\"DbGroupMembershipToDbPerson\"}],\"dbName\":null},\"DbApprovalMethod\":{\"fields\":[{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"ApprovalMethodType\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"config\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"deprecatedAliases\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbResource\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"abbreviation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nicknames\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"access\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"teams\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessRequest\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"notes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tags\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"appUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"links\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"iconName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"screenshotIds\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"deprecated\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"aiPrompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"urlIssues\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tiers\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"sourceRefs\",\"kind\":\"object\",\"type\":\"SourceReference\",\"relationName\":\"DbResourceToSourceReference\"},{\"name\":\"parentSlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"DbResource\",\"relationName\":\"ResourceTree\"},{\"name\":\"children\",\"kind\":\"object\",\"type\":\"DbResource\",\"relationName\":\"ResourceTree\"},{\"name\":\"tier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"familySlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"aliases\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ownerPersonSlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessMaintainerGroupSlugs\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessComments\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"extra\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"lastCheckedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"nextCheckAfter\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbAppTagDefinition\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prefix\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"values\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"DbAsset\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"assetType\",\"kind\":\"enum\",\"type\":\"AssetType\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"Bytes\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fileSize\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"width\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"height\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Source\":{\"fields\":[{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userPrompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"references\",\"kind\":\"object\",\"type\":\"SourceReference\",\"relationName\":\"SourceToSourceReference\"}],\"dbName\":null},\"SourceReference\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"sourceSlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"source\",\"kind\":\"object\",\"type\":\"Source\",\"relationName\":\"SourceToSourceReference\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource\",\"kind\":\"object\",\"type\":\"DbResource\",\"relationName\":\"DbResourceToSourceReference\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parseDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"excerpts\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userPrompt\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}");
|
|
21
21
|
config.parameterizationSchema = {
|
|
22
|
-
strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"sessions\",\"_count\",\"user.findUnique\",\"user.findUniqueOrThrow\",\"user.findFirst\",\"user.findFirstOrThrow\",\"user.findMany\",\"data\",\"user.createOne\",\"user.createMany\",\"user.createManyAndReturn\",\"user.updateOne\",\"user.updateMany\",\"user.updateManyAndReturn\",\"create\",\"update\",\"user.upsertOne\",\"user.deleteOne\",\"user.deleteMany\",\"having\",\"_min\",\"_max\",\"user.groupBy\",\"user.aggregate\",\"session.findUnique\",\"session.findUniqueOrThrow\",\"session.findFirst\",\"session.findFirstOrThrow\",\"session.findMany\",\"session.createOne\",\"session.createMany\",\"session.createManyAndReturn\",\"session.updateOne\",\"session.updateMany\",\"session.updateManyAndReturn\",\"session.upsertOne\",\"session.deleteOne\",\"session.deleteMany\",\"session.groupBy\",\"session.aggregate\",\"account.findUnique\",\"account.findUniqueOrThrow\",\"account.findFirst\",\"account.findFirstOrThrow\",\"account.findMany\",\"account.createOne\",\"account.createMany\",\"account.createManyAndReturn\",\"account.updateOne\",\"account.updateMany\",\"account.updateManyAndReturn\",\"account.upsertOne\",\"account.deleteOne\",\"account.deleteMany\",\"account.groupBy\",\"account.aggregate\",\"verification.findUnique\",\"verification.findUniqueOrThrow\",\"verification.findFirst\",\"verification.findFirstOrThrow\",\"verification.findMany\",\"verification.createOne\",\"verification.createMany\",\"verification.createManyAndReturn\",\"verification.updateOne\",\"verification.updateMany\",\"verification.updateManyAndReturn\",\"verification.upsertOne\",\"verification.deleteOne\",\"verification.deleteMany\",\"verification.groupBy\",\"verification.aggregate\",\"memberships\",\"group\",\"person\",\"DbPerson.findUnique\",\"DbPerson.findUniqueOrThrow\",\"DbPerson.findFirst\",\"DbPerson.findFirstOrThrow\",\"DbPerson.findMany\",\"DbPerson.createOne\",\"DbPerson.createMany\",\"DbPerson.createManyAndReturn\",\"DbPerson.updateOne\",\"DbPerson.updateMany\",\"DbPerson.updateManyAndReturn\",\"DbPerson.upsertOne\",\"DbPerson.deleteOne\",\"DbPerson.deleteMany\",\"DbPerson.groupBy\",\"DbPerson.aggregate\",\"DbGroup.findUnique\",\"DbGroup.findUniqueOrThrow\",\"DbGroup.findFirst\",\"DbGroup.findFirstOrThrow\",\"DbGroup.findMany\",\"DbGroup.createOne\",\"DbGroup.createMany\",\"DbGroup.createManyAndReturn\",\"DbGroup.updateOne\",\"DbGroup.updateMany\",\"DbGroup.updateManyAndReturn\",\"DbGroup.upsertOne\",\"DbGroup.deleteOne\",\"DbGroup.deleteMany\",\"DbGroup.groupBy\",\"DbGroup.aggregate\",\"DbGroupMembership.findUnique\",\"DbGroupMembership.findUniqueOrThrow\",\"DbGroupMembership.findFirst\",\"DbGroupMembership.findFirstOrThrow\",\"DbGroupMembership.findMany\",\"DbGroupMembership.createOne\",\"DbGroupMembership.createMany\",\"DbGroupMembership.createManyAndReturn\",\"DbGroupMembership.updateOne\",\"DbGroupMembership.updateMany\",\"DbGroupMembership.updateManyAndReturn\",\"DbGroupMembership.upsertOne\",\"DbGroupMembership.deleteOne\",\"DbGroupMembership.deleteMany\",\"_avg\",\"_sum\",\"DbGroupMembership.groupBy\",\"DbGroupMembership.aggregate\",\"DbApprovalMethod.findUnique\",\"DbApprovalMethod.findUniqueOrThrow\",\"DbApprovalMethod.findFirst\",\"DbApprovalMethod.findFirstOrThrow\",\"DbApprovalMethod.findMany\",\"DbApprovalMethod.createOne\",\"DbApprovalMethod.createMany\",\"DbApprovalMethod.createManyAndReturn\",\"DbApprovalMethod.updateOne\",\"DbApprovalMethod.updateMany\",\"DbApprovalMethod.updateManyAndReturn\",\"DbApprovalMethod.upsertOne\",\"DbApprovalMethod.deleteOne\",\"DbApprovalMethod.deleteMany\",\"DbApprovalMethod.groupBy\",\"DbApprovalMethod.aggregate\",\"references\",\"source\",\"resource\",\"sourceRefs\",\"parent\",\"children\",\"DbResource.findUnique\",\"DbResource.findUniqueOrThrow\",\"DbResource.findFirst\",\"DbResource.findFirstOrThrow\",\"DbResource.findMany\",\"DbResource.createOne\",\"DbResource.createMany\",\"DbResource.createManyAndReturn\",\"DbResource.updateOne\",\"DbResource.updateMany\",\"DbResource.updateManyAndReturn\",\"DbResource.upsertOne\",\"DbResource.deleteOne\",\"DbResource.deleteMany\",\"DbResource.groupBy\",\"DbResource.aggregate\",\"DbAppTagDefinition.findUnique\",\"DbAppTagDefinition.findUniqueOrThrow\",\"DbAppTagDefinition.findFirst\",\"DbAppTagDefinition.findFirstOrThrow\",\"DbAppTagDefinition.findMany\",\"DbAppTagDefinition.createOne\",\"DbAppTagDefinition.createMany\",\"DbAppTagDefinition.createManyAndReturn\",\"DbAppTagDefinition.updateOne\",\"DbAppTagDefinition.updateMany\",\"DbAppTagDefinition.updateManyAndReturn\",\"DbAppTagDefinition.upsertOne\",\"DbAppTagDefinition.deleteOne\",\"DbAppTagDefinition.deleteMany\",\"DbAppTagDefinition.groupBy\",\"DbAppTagDefinition.aggregate\",\"DbAsset.findUnique\",\"DbAsset.findUniqueOrThrow\",\"DbAsset.findFirst\",\"DbAsset.findFirstOrThrow\",\"DbAsset.findMany\",\"DbAsset.createOne\",\"DbAsset.createMany\",\"DbAsset.createManyAndReturn\",\"DbAsset.updateOne\",\"DbAsset.updateMany\",\"DbAsset.updateManyAndReturn\",\"DbAsset.upsertOne\",\"DbAsset.deleteOne\",\"DbAsset.deleteMany\",\"DbAsset.groupBy\",\"DbAsset.aggregate\",\"Source.findUnique\",\"Source.findUniqueOrThrow\",\"Source.findFirst\",\"Source.findFirstOrThrow\",\"Source.findMany\",\"Source.createOne\",\"Source.createMany\",\"Source.createManyAndReturn\",\"Source.updateOne\",\"Source.updateMany\",\"Source.updateManyAndReturn\",\"Source.upsertOne\",\"Source.deleteOne\",\"Source.deleteMany\",\"Source.groupBy\",\"Source.aggregate\",\"SourceReference.findUnique\",\"SourceReference.findUniqueOrThrow\",\"SourceReference.findFirst\",\"SourceReference.findFirstOrThrow\",\"SourceReference.findMany\",\"SourceReference.createOne\",\"SourceReference.createMany\",\"SourceReference.createManyAndReturn\",\"SourceReference.updateOne\",\"SourceReference.updateMany\",\"SourceReference.updateManyAndReturn\",\"SourceReference.upsertOne\",\"SourceReference.deleteOne\",\"SourceReference.deleteMany\",\"SourceReference.groupBy\",\"SourceReference.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"sourceSlug\",\"resourceId\",\"url\",\"parseDate\",\"excerpts\",\"userPrompt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"contains\",\"startsWith\",\"endsWith\",\"not\",\"has\",\"hasEvery\",\"hasSome\",\"slug\",\"every\",\"some\",\"none\",\"name\",\"AssetType\",\"assetType\",\"content\",\"checksum\",\"mimeType\",\"fileSize\",\"width\",\"height\",\"createdAt\",\"updatedAt\",\"prefix\",\"displayName\",\"description\",\"values\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"type\",\"abbreviation\",\"nicknames\",\"access\",\"teams\",\"accessRequest\",\"notes\",\"tags\",\"appUrl\",\"links\",\"iconName\",\"screenshotIds\",\"deprecated\",\"aiPrompt\",\"urlIssues\",\"tiers\",\"parentSlug\",\"tier\",\"familySlug\",\"aliases\",\"ownerPersonSlug\",\"accessMaintainerGroupSlugs\",\"accessComments\",\"extra\",\"resourceId_url\",\"ApprovalMethodType\",\"config\",\"deprecatedAliases\",\"type_displayName\",\"groupSlug\",\"personSlug\",\"email\",\"firstName\",\"lastName\",\"groupSlug_personSlug\",\"identifier\",\"value\",\"expiresAt\",\"identifier_value\",\"userId\",\"accountId\",\"providerId\",\"refreshToken\",\"accessToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"idToken\",\"scope\",\"password\",\"token\",\"ipAddress\",\"userAgent\",\"emailVerified\",\"image\",\"role\",\"providerId_accountId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
|
|
23
|
-
graph: "mQV00AENBAAArAMAIAUAAK0DACDoAQAAqgMAMOkBAAAOABDqAQAAqgMAMOsBAQAAAAGEAgEA6gIAIY0CQAD-AgAhjgJAAP4CACG4AgEAAAABzQIgAKsDACHOAgEA6gIAIc8CAQDpAgAhAQAAAAEAIBEDAACvAwAg6AEAALEDADDpAQAAAwAQ6gEAALEDADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACHAAgEA6QIAIcECAQDpAgAhwgIBAOkCACHDAgEA6gIAIcQCAQDqAgAhxQJAAI0DACHGAkAAjQMAIccCAQDqAgAhyAIBAOoCACHJAgEA6gIAIQgDAADvBAAgwwIAALIDACDEAgAAsgMAIMUCAACyAwAgxgIAALIDACDHAgAAsgMAIMgCAACyAwAgyQIAALIDACASAwAArwMAIOgBAACxAwAw6QEAAAMAEOoBAACxAwAw6wEBAAAAAY0CQAD-AgAhjgJAAP4CACHAAgEA6QIAIcECAQDpAgAhwgIBAOkCACHDAgEA6gIAIcQCAQDqAgAhxQJAAI0DACHGAkAAjQMAIccCAQDqAgAhyAIBAOoCACHJAgEA6gIAIdACAACwAwAgAwAAAAMAIAEAAAQAMAIAAAUAIAwDAACvAwAg6AEAAK4DADDpAQAABwAQ6gEAAK4DADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACG-AkAA_gIAIcACAQDpAgAhygIBAOkCACHLAgEA6gIAIcwCAQDqAgAhAwMAAO8EACDLAgAAsgMAIMwCAACyAwAgDAMAAK8DACDoAQAArgMAMOkBAAAHABDqAQAArgMAMOsBAQAAAAGNAkAA_gIAIY4CQAD-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_ACAN6wEBAAAAAY0CQAAAAAGOAkAAAAABwAIBAAAAAcECAQAAAAHCAgEAAAABwwIBAAAAAcQCAQAAAAHFAkAAAAABxgJAAAAAAccCAQAAAAHIAgEAAAAByQIBAAAAAQEMAABBADABDAAAQQAwDgMAAMYEACDrAQEAuAMAIY0CQADcAwAhjgJAANwDACHAAgEAuAMAIcECAQC4AwAhwgIBALgDACHDAgEAuwMAIcQCAQC7AwAhxQJAALkDACHGAkAAuQMAIccCAQC7AwAhyAIBALsDACHJAgEAuwMAIQIAAAAFACAMAABEACAN6wEBALgDACGNAkAA3AMAIY4CQADcAwAhwAIBALgDACHBAgEAuAMAIcICAQC4AwAhwwIBALsDACHEAgEAuwMAIcUCQAC5AwAhxgJAALkDACHHAgEAuwMAIcgCAQC7AwAhyQIBALsDACECAAAAAwAgDAAARgAgAgAAAAMAIAwAAEYAIAMAAAAFACATAAA_ACAUAABEACABAAAABQAgAQAAAAMAIAoGAADDBAAgGQAAxQQAIBoAAMQEACDDAgAAsgMAIMQCAACyAwAgxQIAALIDACDGAgAAsgMAIMcCAACyAwAgyAIAALIDACDJAgAAsgMAIBDoAQAApAMAMOkBAABNABDqAQAApAMAMOsBAQDZAgAhjQJAAPACACGOAkAA8AIAIcACAQDZAgAhwQIBANkCACHCAgEA2QIAIcMCAQDcAgAhxAIBANwCACHFAkAA2gIAIcYCQADaAgAhxwIBANwCACHIAgEA3AIAIckCAQDcAgAhAwAAAAMAIAEAAEwAMBgAAE0AIAMAAAADACABAAAEADACAAAFACAK6AEAAKIDADDpAQAAUwAQ6gEAAKIDADDrAQEAAAABjQJAAP4CACGOAkAA_gIAIbwCAQDpAgAhvQIBAOkCACG-AkAA_gIAIb8CAACjAwAgAQAAAFAAIAEAAABQACAJ6AEAAKIDADDpAQAAUwAQ6gEAAKIDADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACG8AgEA6QIAIb0CAQDpAgAhvgJAAP4CACEAAwAAAFMAIAEAAFQAMAIAAFAAIAMAAABTACABAABUADACAABQACADAAAAUwAgAQAAVAAwAgAAUAAgBusBAQAAAAGNAkAAAAABjgJAAAAAAbwCAQAAAAG9AgEAAAABvgJAAAAAAQEMAABYACAG6wEBAAAAAY0CQAAAAAGOAkAAAAABvAIBAAAAAb0CAQAAAAG-AkAAAAABAQwAAFoAMAEMAABaADAG6wEBALgDACGNAkAA3AMAIY4CQADcAwAhvAIBALgDACG9AgEAuAMAIb4CQADcAwAhAgAAAFAAIAwAAF0AIAbrAQEAuAMAIY0CQADcAwAhjgJAANwDACG8AgEAuAMAIb0CAQC4AwAhvgJAANwDACECAAAAUwAgDAAAXwAgAgAAAFMAIAwAAF8AIAMAAABQACATAABYACAUAABdACABAAAAUAAgAQAAAFMAIAMGAADABAAgGQAAwgQAIBoAAMEEACAJ6AEAAKEDADDpAQAAZgAQ6gEAAKEDADDrAQEA2QIAIY0CQADwAgAhjgJAAPACACG8AgEA2QIAIb0CAQDZAgAhvgJAAPACACEDAAAAUwAgAQAAZQAwGAAAZgAgAwAAAFMAIAEAAFQAMAIAAFAAIApNAACaAwAg6AEAAJwDADDpAQAAcwAQ6gEAAJwDADCAAgEAAAABjQJAAP4CACGOAkAA_gIAIbgCAQAAAAG5AgEA6QIAIboCAQDpAgAhAQAAAGkAIAhOAACfAwAgTwAAoAMAIOgBAACeAwAw6QEAAGsAEOoBAACeAwAw6wECAPwCACG2AgEA6QIAIbcCAQDpAgAhAk4AAL4EACBPAAC_BAAgCU4AAJ8DACBPAACgAwAg6AEAAJ4DADDpAQAAawAQ6gEAAJ4DADDrAQIAAAABtgIBAOkCACG3AgEA6QIAIbsCAACdAwAgAwAAAGsAIAEAAGwAMAIAAG0AIAMAAABrACABAABsADACAABtACABAAAAawAgAQAAAGsAIAEAAABpACAKTQAAmgMAIOgBAACcAwAw6QEAAHMAEOoBAACcAwAwgAIBAOkCACGNAkAA_gIAIY4CQAD-AgAhuAIBAOoCACG5AgEA6QIAIboCAQDpAgAhAk0AAK8EACC4AgAAsgMAIAMAAABzACABAAB0ADACAABpACADAAAAcwAgAQAAdAAwAgAAaQAgAwAAAHMAIAEAAHQAMAIAAGkAIAdNAAC9BAAggAIBAAAAAY0CQAAAAAGOAkAAAAABuAIBAAAAAbkCAQAAAAG6AgEAAAABAQwAAHgAIAaAAgEAAAABjQJAAAAAAY4CQAAAAAG4AgEAAAABuQIBAAAAAboCAQAAAAEBDAAAegAwAQwAAHoAMAdNAACzBAAggAIBALgDACGNAkAA3AMAIY4CQADcAwAhuAIBALsDACG5AgEAuAMAIboCAQC4AwAhAgAAAGkAIAwAAH0AIAaAAgEAuAMAIY0CQADcAwAhjgJAANwDACG4AgEAuwMAIbkCAQC4AwAhugIBALgDACECAAAAcwAgDAAAfwAgAgAAAHMAIAwAAH8AIAMAAABpACATAAB4ACAUAAB9ACABAAAAaQAgAQAAAHMAIAQGAACwBAAgGQAAsgQAIBoAALEEACC4AgAAsgMAIAnoAQAAmwMAMOkBAACGAQAQ6gEAAJsDADCAAgEA2QIAIY0CQADwAgAhjgJAAPACACG4AgEA3AIAIbkCAQDZAgAhugIBANkCACEDAAAAcwAgAQAAhQEAMBgAAIYBACADAAAAcwAgAQAAdAAwAgAAaQAgCU0AAJoDACDoAQAAmQMAMOkBAACMAQAQ6gEAAJkDADCAAgEAAAABjQJAAP4CACGOAkAA_gIAIZACAQDqAgAhuAIBAOoCACEBAAAAiQEAIAEAAACJAQAgCU0AAJoDACDoAQAAmQMAMOkBAACMAQAQ6gEAAJkDADCAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6gIAIbgCAQDqAgAhA00AAK8EACCQAgAAsgMAILgCAACyAwAgAwAAAIwBACABAACNAQAwAgAAiQEAIAMAAACMAQAgAQAAjQEAMAIAAIkBACADAAAAjAEAIAEAAI0BADACAACJAQAgBk0AAK4EACCAAgEAAAABjQJAAAAAAY4CQAAAAAGQAgEAAAABuAIBAAAAAQEMAACRAQAgBYACAQAAAAGNAkAAAAABjgJAAAAAAZACAQAAAAG4AgEAAAABAQwAAJMBADABDAAAkwEAMAZNAAChBAAggAIBALgDACGNAkAA3AMAIY4CQADcAwAhkAIBALsDACG4AgEAuwMAIQIAAACJAQAgDAAAlgEAIAWAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuwMAIbgCAQC7AwAhAgAAAIwBACAMAACYAQAgAgAAAIwBACAMAACYAQAgAwAAAIkBACATAACRAQAgFAAAlgEAIAEAAACJAQAgAQAAAIwBACAFBgAAngQAIBkAAKAEACAaAACfBAAgkAIAALIDACC4AgAAsgMAIAjoAQAAmAMAMOkBAACfAQAQ6gEAAJgDADCAAgEA2QIAIY0CQADwAgAhjgJAAPACACGQAgEA3AIAIbgCAQDcAgAhAwAAAIwBACABAACeAQAwGAAAnwEAIAMAAACMAQAgAQAAjQEAMAIAAIkBACABAAAAbQAgAQAAAG0AIAMAAABrACABAABsADACAABtACADAAAAawAgAQAAbAAwAgAAbQAgAwAAAGsAIAEAAGwAMAIAAG0AIAVOAACcBAAgTwAAnQQAIOsBAgAAAAG2AgEAAAABtwIBAAAAAQEMAACnAQAgA-sBAgAAAAG2AgEAAAABtwIBAAAAAQEMAACpAQAwAQwAAKkBADAFTgAAmgQAIE8AAJsEACDrAQIAvAMAIbYCAQC4AwAhtwIBALgDACECAAAAbQAgDAAArAEAIAPrAQIAvAMAIbYCAQC4AwAhtwIBALgDACECAAAAawAgDAAArgEAIAIAAABrACAMAACuAQAgAwAAAG0AIBMAAKcBACAUAACsAQAgAQAAAG0AIAEAAABrACAFBgAAlQQAIBkAAJgEACAaAACXBAAgfgAAlgQAIH8AAJkEACAG6AEAAJcDADDpAQAAtQEAEOoBAACXAwAw6wECANgCACG2AgEA2QIAIbcCAQDZAgAhAwAAAGsAIAEAALQBADAYAAC1AQAgAwAAAGsAIAEAAGwAMAIAAG0AIAvoAQAAlAMAMOkBAAC7AQAQ6gEAAJQDADCAAgEAAAABjQJAAP4CACGOAkAA_gIAIZACAQDpAgAhmQIAAJUDswIiswIAAIgDACC0AgAA2wIAILUCAACWAwAgAQAAALgBACABAAAAuAEAIAroAQAAlAMAMOkBAAC7AQAQ6gEAAJQDADCAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6QIAIZkCAACVA7MCIrMCAACIAwAgtAIAANsCACABswIAALIDACADAAAAuwEAIAEAALwBADACAAC4AQAgAwAAALsBACABAAC8AQAwAgAAuAEAIAMAAAC7AQAgAQAAvAEAMAIAALgBACAHgAIBAAAAAY0CQAAAAAGOAkAAAAABkAIBAAAAAZkCAAAAswICswKAAAAAAbQCAACUBAAgAQwAAMABACAHgAIBAAAAAY0CQAAAAAGOAkAAAAABkAIBAAAAAZkCAAAAswICswKAAAAAAbQCAACUBAAgAQwAAMIBADABDAAAwgEAMAeAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuAMAIZkCAACSBLMCIrMCgAAAAAG0AgAAkwQAIAIAAAC4AQAgDAAAxQEAIAeAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuAMAIZkCAACSBLMCIrMCgAAAAAG0AgAAkwQAIAIAAAC7AQAgDAAAxwEAIAIAAAC7AQAgDAAAxwEAIAMAAAC4AQAgEwAAwAEAIBQAAMUBACABAAAAuAEAIAEAAAC7AQAgBAYAAI8EACAZAACRBAAgGgAAkAQAILMCAACyAwAgCugBAACQAwAw6QEAAM4BABDqAQAAkAMAMIACAQDZAgAhjQJAAPACACGOAkAA8AIAIZACAQDZAgAhmQIAAJEDswIiswIAAIUDACC0AgAA2wIAIAMAAAC7AQAgAQAAzQEAMBgAAM4BACADAAAAuwEAIAEAALwBADACAAC4AQAgJJUBAADrAgAglgEAAIkDACCXAQAAigMAIOgBAACHAwAw6QEAANkBABDqAQAAhwMAMOsBAQAAAAGAAgEAAAABjQJAAP4CACGOAkAA_gIAIZACAQDpAgAhkQIBAOkCACGZAgEA6QIAIZoCAQDqAgAhmwIAANsCACCcAgAAiAMAIJ0CAADbAgAgngIAAIgDACCfAgEA6gIAIaACAADbAgAgoQIBAOoCACGiAgAAiAMAIKMCAQDqAgAhpAIAANsCACClAgAAiAMAIKYCAQDqAgAhpwIAANsCACCoAgAAiAMAIKkCAQDqAgAhqgIBAOoCACGrAgEA6gIAIawCAADbAgAgrQIBAOoCACGuAgAA2wIAIK8CAQDqAgAhsAIAAIgDACABAAAA0QEAIAyTAQAAjgMAIJQBAACPAwAg6AEAAIwDADDpAQAA0wEAEOoBAACMAwAw6wECAPwCACHsAQEA6QIAIe0BAQDpAgAh7gEBAOkCACHvAUAAjQMAIfABAADbAgAg8QEBAOoCACEEkwEAAI4EACCUAQAAjAQAIO8BAACyAwAg8QEAALIDACANkwEAAI4DACCUAQAAjwMAIOgBAACMAwAw6QEAANMBABDqAQAAjAMAMOsBAgAAAAHsAQEA6QIAIe0BAQDpAgAh7gEBAOkCACHvAUAAjQMAIfABAADbAgAg8QEBAOoCACGxAgAAiwMAIAMAAADTAQAgAQAA1AEAMAIAANUBACADAAAA0wEAIAEAANQBADACAADVAQAgAQAAANMBACAklQEAAOsCACCWAQAAiQMAIJcBAACKAwAg6AEAAIcDADDpAQAA2QEAEOoBAACHAwAw6wEBAOkCACGAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6QIAIZECAQDpAgAhmQIBAOkCACGaAgEA6gIAIZsCAADbAgAgnAIAAIgDACCdAgAA2wIAIJ4CAACIAwAgnwIBAOoCACGgAgAA2wIAIKECAQDqAgAhogIAAIgDACCjAgEA6gIAIaQCAADbAgAgpQIAAIgDACCmAgEA6gIAIacCAADbAgAgqAIAAIgDACCpAgEA6gIAIaoCAQDqAgAhqwIBAOoCACGsAgAA2wIAIK0CAQDqAgAhrgIAANsCACCvAgEA6gIAIbACAACIAwAgAQAAANkBACATlQEAANMDACCWAQAAjAQAIJcBAACNBAAgmgIAALIDACCcAgAAsgMAIJ4CAACyAwAgnwIAALIDACChAgAAsgMAIKICAACyAwAgowIAALIDACClAgAAsgMAIKYCAACyAwAgqAIAALIDACCpAgAAsgMAIKoCAACyAwAgqwIAALIDACCtAgAAsgMAIK8CAACyAwAgsAIAALIDACADAAAA2QEAIAEAANsBADACAADRAQAgAQAAANMBACABAAAA2QEAIAEAAADRAQAgAwAAANkBACABAADbAQAwAgAA0QEAIAMAAADZAQAgAQAA2wEAMAIAANEBACADAAAA2QEAIAEAANsBADACAADRAQAgIZUBAACABAAglgEAAIsEACCXAQAAgQQAIOsBAQAAAAGAAgEAAAABjQJAAAAAAY4CQAAAAAGQAgEAAAABkQIBAAAAAZkCAQAAAAGaAgEAAAABmwIAAPkDACCcAoAAAAABnQIAAPoDACCeAoAAAAABnwIBAAAAAaACAAD7AwAgoQIBAAAAAaICgAAAAAGjAgEAAAABpAIAAPwDACClAoAAAAABpgIBAAAAAacCAAD9AwAgqAKAAAAAAakCAQAAAAGqAgEAAAABqwIBAAAAAawCAAD-AwAgrQIBAAAAAa4CAAD_AwAgrwIBAAAAAbACgAAAAAEBDAAA4wEAIB7rAQEAAAABgAIBAAAAAY0CQAAAAAGOAkAAAAABkAIBAAAAAZECAQAAAAGZAgEAAAABmgIBAAAAAZsCAAD5AwAgnAKAAAAAAZ0CAAD6AwAgngKAAAAAAZ8CAQAAAAGgAgAA-wMAIKECAQAAAAGiAoAAAAABowIBAAAAAaQCAAD8AwAgpQKAAAAAAaYCAQAAAAGnAgAA_QMAIKgCgAAAAAGpAgEAAAABqgIBAAAAAasCAQAAAAGsAgAA_gMAIK0CAQAAAAGuAgAA_wMAIK8CAQAAAAGwAoAAAAABAQwAAOUBADABDAAA5QEAMAEAAADZAQAgIZUBAADqAwAglgEAAOsDACCXAQAA7AMAIOsBAQC4AwAhgAIBALgDACGNAkAA3AMAIY4CQADcAwAhkAIBALgDACGRAgEAuAMAIZkCAQC4AwAhmgIBALsDACGbAgAA4wMAIJwCgAAAAAGdAgAA5AMAIJ4CgAAAAAGfAgEAuwMAIaACAADlAwAgoQIBALsDACGiAoAAAAABowIBALsDACGkAgAA5gMAIKUCgAAAAAGmAgEAuwMAIacCAADnAwAgqAKAAAAAAakCAQC7AwAhqgIBALsDACGrAgEAuwMAIawCAADoAwAgrQIBALsDACGuAgAA6QMAIK8CAQC7AwAhsAKAAAAAAQIAAADRAQAgDAAA6QEAIB7rAQEAuAMAIYACAQC4AwAhjQJAANwDACGOAkAA3AMAIZACAQC4AwAhkQIBALgDACGZAgEAuAMAIZoCAQC7AwAhmwIAAOMDACCcAoAAAAABnQIAAOQDACCeAoAAAAABnwIBALsDACGgAgAA5QMAIKECAQC7AwAhogKAAAAAAaMCAQC7AwAhpAIAAOYDACClAoAAAAABpgIBALsDACGnAgAA5wMAIKgCgAAAAAGpAgEAuwMAIaoCAQC7AwAhqwIBALsDACGsAgAA6AMAIK0CAQC7AwAhrgIAAOkDACCvAgEAuwMAIbACgAAAAAECAAAA2QEAIAwAAOsBACACAAAA2QEAIAwAAOsBACABAAAA2QEAIAMAAADRAQAgEwAA4wEAIBQAAOkBACABAAAA0QEAIAEAAADZAQAgEwYAAOADACAZAADiAwAgGgAA4QMAIJoCAACyAwAgnAIAALIDACCeAgAAsgMAIJ8CAACyAwAgoQIAALIDACCiAgAAsgMAIKMCAACyAwAgpQIAALIDACCmAgAAsgMAIKgCAACyAwAgqQIAALIDACCqAgAAsgMAIKsCAACyAwAgrQIAALIDACCvAgAAsgMAILACAACyAwAgIegBAACEAwAw6QEAAPMBABDqAQAAhAMAMOsBAQDZAgAhgAIBANkCACGNAkAA8AIAIY4CQADwAgAhkAIBANkCACGRAgEA2QIAIZkCAQDZAgAhmgIBANwCACGbAgAA2wIAIJwCAACFAwAgnQIAANsCACCeAgAAhQMAIJ8CAQDcAgAhoAIAANsCACChAgEA3AIAIaICAACFAwAgowIBANwCACGkAgAA2wIAIKUCAACFAwAgpgIBANwCACGnAgAA2wIAIKgCAACFAwAgqQIBANwCACGqAgEA3AIAIasCAQDcAgAhrAIAANsCACCtAgEA3AIAIa4CAADbAgAgrwIBANwCACGwAgAAhQMAIAMAAADZAQAgAQAA8gEAMBgAAPMBACADAAAA2QEAIAEAANsBADACAADRAQAgCugBAACCAwAw6QEAAPkBABDqAQAAggMAMOsBAQAAAAGNAkAA_gIAIY4CQAD-AgAhjwIBAAAAAZACAQDpAgAhkQIBAOkCACGSAgAAgwMAIAEAAAD2AQAgAQAAAPYBACAK6AEAAIIDADDpAQAA-QEAEOoBAACCAwAw6wEBAOkCACGNAkAA_gIAIY4CQAD-AgAhjwIBAOkCACGQAgEA6QIAIZECAQDpAgAhkgIAAIMDACAAAwAAAPkBACABAAD6AQAwAgAA9gEAIAMAAAD5AQAgAQAA-gEAMAIAAPYBACADAAAA-QEAIAEAAPoBADACAAD2AQAgB-sBAQAAAAGNAkAAAAABjgJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICgAAAAAEBDAAA_gEAIAfrAQEAAAABjQJAAAAAAY4CQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAoAAAAABAQwAAIACADABDAAAgAIAMAfrAQEAuAMAIY0CQADcAwAhjgJAANwDACGPAgEAuAMAIZACAQC4AwAhkQIBALgDACGSAoAAAAABAgAAAPYBACAMAACDAgAgB-sBAQC4AwAhjQJAANwDACGOAkAA3AMAIY8CAQC4AwAhkAIBALgDACGRAgEAuAMAIZICgAAAAAECAAAA-QEAIAwAAIUCACACAAAA-QEAIAwAAIUCACADAAAA9gEAIBMAAP4BACAUAACDAgAgAQAAAPYBACABAAAA-QEAIAMGAADdAwAgGQAA3wMAIBoAAN4DACAK6AEAAP8CADDpAQAAjAIAEOoBAAD_AgAw6wEBANkCACGNAkAA8AIAIY4CQADwAgAhjwIBANkCACGQAgEA2QIAIZECAQDZAgAhkgIAAIADACADAAAA-QEAIAEAAIsCADAYAACMAgAgAwAAAPkBACABAAD6AQAwAgAA9gEAIA7oAQAA-QIAMOkBAACSAgAQ6gEAAPkCADDrAQEAAAABhAIBAAAAAYYCAAD6AoYCIocCAAH7AgAhiAIBAOkCACGJAgEA6QIAIYoCAgD8AgAhiwICAP0CACGMAgIA_QIAIY0CQAD-AgAhjgJAAP4CACEBAAAAjwIAIAEAAACPAgAgDugBAAD5AgAw6QEAAJICABDqAQAA-QIAMOsBAQDpAgAhhAIBAOkCACGGAgAA-gKGAiKHAgAB-wIAIYgCAQDpAgAhiQIBAOkCACGKAgIA_AIAIYsCAgD9AgAhjAICAP0CACGNAkAA_gIAIY4CQAD-AgAhAosCAACyAwAgjAIAALIDACADAAAAkgIAIAEAAJMCADACAACPAgAgAwAAAJICACABAACTAgAwAgAAjwIAIAMAAACSAgAgAQAAkwIAMAIAAI8CACAL6wEBAAAAAYQCAQAAAAGGAgAAAIYCAocCAAEAAAGIAgEAAAABiQIBAAAAAYoCAgAAAAGLAgIAAAABjAICAAAAAY0CQAAAAAGOAkAAAAABAQwAAJcCACAL6wEBAAAAAYQCAQAAAAGGAgAAAIYCAocCAAEAAAGIAgEAAAABiQIBAAAAAYoCAgAAAAGLAgIAAAABjAICAAAAAY0CQAAAAAGOAkAAAAABAQwAAJkCADABDAAAmQIAMAvrAQEAuAMAIYQCAQC4AwAhhgIAANkDhgIihwIAAdoDACGIAgEAuAMAIYkCAQC4AwAhigICALwDACGLAgIA2wMAIYwCAgDbAwAhjQJAANwDACGOAkAA3AMAIQIAAACPAgAgDAAAnAIAIAvrAQEAuAMAIYQCAQC4AwAhhgIAANkDhgIihwIAAdoDACGIAgEAuAMAIYkCAQC4AwAhigICALwDACGLAgIA2wMAIYwCAgDbAwAhjQJAANwDACGOAkAA3AMAIQIAAACSAgAgDAAAngIAIAIAAACSAgAgDAAAngIAIAMAAACPAgAgEwAAlwIAIBQAAJwCACABAAAAjwIAIAEAAACSAgAgBwYAANQDACAZAADXAwAgGgAA1gMAIH4AANUDACB_AADYAwAgiwIAALIDACCMAgAAsgMAIA7oAQAA7AIAMOkBAAClAgAQ6gEAAOwCADDrAQEA2QIAIYQCAQDZAgAhhgIAAO0ChgIihwIAAe4CACGIAgEA2QIAIYkCAQDZAgAhigICANgCACGLAgIA7wIAIYwCAgDvAgAhjQJAAPACACGOAkAA8AIAIQMAAACSAgAgAQAApAIAMBgAAKUCACADAAAAkgIAIAEAAJMCADACAACPAgAgBpIBAADrAgAg6AEAAOgCADDpAQAAqwIAEOoBAADoAgAw8QEBAOoCACGAAgEAAAABAQAAAKgCACABAAAAqAIAIAaSAQAA6wIAIOgBAADoAgAw6QEAAKsCABDqAQAA6AIAMPEBAQDqAgAhgAIBAOkCACECkgEAANMDACDxAQAAsgMAIAMAAACrAgAgAQAArAIAMAIAAKgCACADAAAAqwIAIAEAAKwCADACAACoAgAgAwAAAKsCACABAACsAgAwAgAAqAIAIAOSAQAA0gMAIPEBAQAAAAGAAgEAAAABAQwAALACACAC8QEBAAAAAYACAQAAAAEBDAAAsgIAMAEMAACyAgAwA5IBAADFAwAg8QEBALsDACGAAgEAuAMAIQIAAACoAgAgDAAAtQIAIALxAQEAuwMAIYACAQC4AwAhAgAAAKsCACAMAAC3AgAgAgAAAKsCACAMAAC3AgAgAwAAAKgCACATAACwAgAgFAAAtQIAIAEAAACoAgAgAQAAAKsCACAEBgAAwgMAIBkAAMQDACAaAADDAwAg8QEAALIDACAF6AEAAOcCADDpAQAAvgIAEOoBAADnAgAw8QEBANwCACGAAgEA2QIAIQMAAACrAgAgAQAAvQIAMBgAAL4CACADAAAAqwIAIAEAAKwCADACAACoAgAgAQAAANUBACABAAAA1QEAIAMAAADTAQAgAQAA1AEAMAIAANUBACADAAAA0wEAIAEAANQBADACAADVAQAgAwAAANMBACABAADUAQAwAgAA1QEAIAmTAQAAwAMAIJQBAADBAwAg6wECAAAAAewBAQAAAAHtAQEAAAAB7gEBAAAAAe8BQAAAAAHwAQAAvwMAIPEBAQAAAAEBDAAAxgIAIAfrAQIAAAAB7AEBAAAAAe0BAQAAAAHuAQEAAAAB7wFAAAAAAfABAAC_AwAg8QEBAAAAAQEMAADIAgAwAQwAAMgCADAJkwEAAL0DACCUAQAAvgMAIOsBAgC8AwAh7AEBALgDACHtAQEAuAMAIe4BAQC4AwAh7wFAALkDACHwAQAAugMAIPEBAQC7AwAhAgAAANUBACAMAADLAgAgB-sBAgC8AwAh7AEBALgDACHtAQEAuAMAIe4BAQC4AwAh7wFAALkDACHwAQAAugMAIPEBAQC7AwAhAgAAANMBACAMAADNAgAgAgAAANMBACAMAADNAgAgAwAAANUBACATAADGAgAgFAAAywIAIAEAAADVAQAgAQAAANMBACAHBgAAswMAIBkAALYDACAaAAC1AwAgfgAAtAMAIH8AALcDACDvAQAAsgMAIPEBAACyAwAgCugBAADXAgAw6QEAANQCABDqAQAA1wIAMOsBAgDYAgAh7AEBANkCACHtAQEA2QIAIe4BAQDZAgAh7wFAANoCACHwAQAA2wIAIPEBAQDcAgAhAwAAANMBACABAADTAgAwGAAA1AIAIAMAAADTAQAgAQAA1AEAMAIAANUBACAK6AEAANcCADDpAQAA1AIAEOoBAADXAgAw6wECANgCACHsAQEA2QIAIe0BAQDZAgAh7gEBANkCACHvAUAA2gIAIfABAADbAgAg8QEBANwCACENBgAA4wIAIBkAAOMCACAaAADjAgAgfgAA5gIAIH8AAOMCACDyAQIAAAAB8wECAAAABPQBAgAAAAT1AQIAAAAB9gECAAAAAfcBAgAAAAH4AQIAAAAB_AECAOUCACEOBgAA4wIAIBkAAOQCACAaAADkAgAg8gEBAAAAAfMBAQAAAAT0AQEAAAAE9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wEBAAAAAfwBAQDiAgAhCwYAAN4CACAZAADhAgAgGgAA4QIAIPIBQAAAAAHzAUAAAAAF9AFAAAAABfUBQAAAAAH2AUAAAAAB9wFAAAAAAfgBQAAAAAH8AUAA4AIAIQTyAQEAAAAF_QEBAAAAAf4BAQAAAAT_AQEAAAAEDgYAAN4CACAZAADfAgAgGgAA3wIAIPIBAQAAAAHzAQEAAAAF9AEBAAAABfUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBAQAAAAH8AQEA3QIAIQ4GAADeAgAgGQAA3wIAIBoAAN8CACDyAQEAAAAB8wEBAAAABfQBAQAAAAX1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAAB_AEBAN0CACEI8gECAAAAAfMBAgAAAAX0AQIAAAAF9QECAAAAAfYBAgAAAAH3AQIAAAAB-AECAAAAAfwBAgDeAgAhC_IBAQAAAAHzAQEAAAAF9AEBAAAABfUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBAQAAAAH8AQEA3wIAIQsGAADeAgAgGQAA4QIAIBoAAOECACDyAUAAAAAB8wFAAAAABfQBQAAAAAX1AUAAAAAB9gFAAAAAAfcBQAAAAAH4AUAAAAAB_AFAAOACACEI8gFAAAAAAfMBQAAAAAX0AUAAAAAF9QFAAAAAAfYBQAAAAAH3AUAAAAAB-AFAAAAAAfwBQADhAgAhDgYAAOMCACAZAADkAgAgGgAA5AIAIPIBAQAAAAHzAQEAAAAE9AEBAAAABPUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBAQAAAAH8AQEA4gIAIQjyAQIAAAAB8wECAAAABPQBAgAAAAT1AQIAAAAB9gECAAAAAfcBAgAAAAH4AQIAAAAB_AECAOMCACEL8gEBAAAAAfMBAQAAAAT0AQEAAAAE9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wEBAAAAAfwBAQDkAgAhDQYAAOMCACAZAADjAgAgGgAA4wIAIH4AAOYCACB_AADjAgAg8gECAAAAAfMBAgAAAAT0AQIAAAAE9QECAAAAAfYBAgAAAAH3AQIAAAAB-AECAAAAAfwBAgDlAgAhCPIBCAAAAAHzAQgAAAAE9AEIAAAABPUBCAAAAAH2AQgAAAAB9wEIAAAAAfgBCAAAAAH8AQgA5gIAIQXoAQAA5wIAMOkBAAC-AgAQ6gEAAOcCADDxAQEA3AIAIYACAQDZAgAhBpIBAADrAgAg6AEAAOgCADDpAQAAqwIAEOoBAADoAgAw8QEBAOoCACGAAgEA6QIAIQvyAQEAAAAB8wEBAAAABPQBAQAAAAT1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAAB_AEBAOQCACEL8gEBAAAAAfMBAQAAAAX0AQEAAAAF9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wEBAAAAAfwBAQDfAgAhA4ECAADTAQAgggIAANMBACCDAgAA0wEAIA7oAQAA7AIAMOkBAAClAgAQ6gEAAOwCADDrAQEA2QIAIYQCAQDZAgAhhgIAAO0ChgIihwIAAe4CACGIAgEA2QIAIYkCAQDZAgAhigICANgCACGLAgIA7wIAIYwCAgDvAgAhjQJAAPACACGOAkAA8AIAIQcGAADjAgAgGQAA-AIAIBoAAPgCACDyAQAAAIYCAvMBAAAAhgII9AEAAACGAgj8AQAA9wKGAiIHBgAA4wIAIBkAAPYCACAaAAD2AgAg8gEAAQAAAfMBAAEAAAT0AQABAAAE_AEAAfUCACENBgAA3gIAIBkAAN4CACAaAADeAgAgfgAA9AIAIH8AAN4CACDyAQIAAAAB8wECAAAABfQBAgAAAAX1AQIAAAAB9gECAAAAAfcBAgAAAAH4AQIAAAAB_AECAPMCACELBgAA4wIAIBkAAPICACAaAADyAgAg8gFAAAAAAfMBQAAAAAT0AUAAAAAE9QFAAAAAAfYBQAAAAAH3AUAAAAAB-AFAAAAAAfwBQADxAgAhCwYAAOMCACAZAADyAgAgGgAA8gIAIPIBQAAAAAHzAUAAAAAE9AFAAAAABPUBQAAAAAH2AUAAAAAB9wFAAAAAAfgBQAAAAAH8AUAA8QIAIQjyAUAAAAAB8wFAAAAABPQBQAAAAAT1AUAAAAAB9gFAAAAAAfcBQAAAAAH4AUAAAAAB_AFAAPICACENBgAA3gIAIBkAAN4CACAaAADeAgAgfgAA9AIAIH8AAN4CACDyAQIAAAAB8wECAAAABfQBAgAAAAX1AQIAAAAB9gECAAAAAfcBAgAAAAH4AQIAAAAB_AECAPMCACEI8gEIAAAAAfMBCAAAAAX0AQgAAAAF9QEIAAAAAfYBCAAAAAH3AQgAAAAB-AEIAAAAAfwBCAD0AgAhBwYAAOMCACAZAAD2AgAgGgAA9gIAIPIBAAEAAAHzAQABAAAE9AEAAQAABPwBAAH1AgAhBPIBAAEAAAHzAQABAAAE9AEAAQAABPwBAAH2AgAhBwYAAOMCACAZAAD4AgAgGgAA-AIAIPIBAAAAhgIC8wEAAACGAgj0AQAAAIYCCPwBAAD3AoYCIgTyAQAAAIYCAvMBAAAAhgII9AEAAACGAgj8AQAA-AKGAiIO6AEAAPkCADDpAQAAkgIAEOoBAAD5AgAw6wEBAOkCACGEAgEA6QIAIYYCAAD6AoYCIocCAAH7AgAhiAIBAOkCACGJAgEA6QIAIYoCAgD8AgAhiwICAP0CACGMAgIA_QIAIY0CQAD-AgAhjgJAAP4CACEE8gEAAACGAgLzAQAAAIYCCPQBAAAAhgII_AEAAPgChgIiBPIBAAEAAAHzAQABAAAE9AEAAQAABPwBAAH2AgAhCPIBAgAAAAHzAQIAAAAE9AECAAAABPUBAgAAAAH2AQIAAAAB9wECAAAAAfgBAgAAAAH8AQIA4wIAIQjyAQIAAAAB8wECAAAABfQBAgAAAAX1AQIAAAAB9gECAAAAAfcBAgAAAAH4AQIAAAAB_AECAN4CACEI8gFAAAAAAfMBQAAAAAT0AUAAAAAE9QFAAAAAAfYBQAAAAAH3AUAAAAAB-AFAAAAAAfwBQADyAgAhCugBAAD_AgAw6QEAAIwCABDqAQAA_wIAMOsBAQDZAgAhjQJAAPACACGOAkAA8AIAIY8CAQDZAgAhkAIBANkCACGRAgEA2QIAIZICAACAAwAgDwYAAOMCACAZAACBAwAgGgAAgQMAIPIBgAAAAAH1AYAAAAAB9gGAAAAAAfcBgAAAAAH4AYAAAAAB_AGAAAAAAZMCAQAAAAGUAgEAAAABlQIBAAAAAZYCgAAAAAGXAoAAAAABmAKAAAAAAQzyAYAAAAAB9QGAAAAAAfYBgAAAAAH3AYAAAAAB-AGAAAAAAfwBgAAAAAGTAgEAAAABlAIBAAAAAZUCAQAAAAGWAoAAAAABlwKAAAAAAZgCgAAAAAEK6AEAAIIDADDpAQAA-QEAEOoBAACCAwAw6wEBAOkCACGNAkAA_gIAIY4CQAD-AgAhjwIBAOkCACGQAgEA6QIAIZECAQDpAgAhkgIAAIMDACAM8gGAAAAAAfUBgAAAAAH2AYAAAAAB9wGAAAAAAfgBgAAAAAH8AYAAAAABkwIBAAAAAZQCAQAAAAGVAgEAAAABlgKAAAAAAZcCgAAAAAGYAoAAAAABIegBAACEAwAw6QEAAPMBABDqAQAAhAMAMOsBAQDZAgAhgAIBANkCACGNAkAA8AIAIY4CQADwAgAhkAIBANkCACGRAgEA2QIAIZkCAQDZAgAhmgIBANwCACGbAgAA2wIAIJwCAACFAwAgnQIAANsCACCeAgAAhQMAIJ8CAQDcAgAhoAIAANsCACChAgEA3AIAIaICAACFAwAgowIBANwCACGkAgAA2wIAIKUCAACFAwAgpgIBANwCACGnAgAA2wIAIKgCAACFAwAgqQIBANwCACGqAgEA3AIAIasCAQDcAgAhrAIAANsCACCtAgEA3AIAIa4CAADbAgAgrwIBANwCACGwAgAAhQMAIA8GAADeAgAgGQAAhgMAIBoAAIYDACDyAYAAAAAB9QGAAAAAAfYBgAAAAAH3AYAAAAAB-AGAAAAAAfwBgAAAAAGTAgEAAAABlAIBAAAAAZUCAQAAAAGWAoAAAAABlwKAAAAAAZgCgAAAAAEM8gGAAAAAAfUBgAAAAAH2AYAAAAAB9wGAAAAAAfgBgAAAAAH8AYAAAAABkwIBAAAAAZQCAQAAAAGVAgEAAAABlgKAAAAAAZcCgAAAAAGYAoAAAAABJJUBAADrAgAglgEAAIkDACCXAQAAigMAIOgBAACHAwAw6QEAANkBABDqAQAAhwMAMOsBAQDpAgAhgAIBAOkCACGNAkAA_gIAIY4CQAD-AgAhkAIBAOkCACGRAgEA6QIAIZkCAQDpAgAhmgIBAOoCACGbAgAA2wIAIJwCAACIAwAgnQIAANsCACCeAgAAiAMAIJ8CAQDqAgAhoAIAANsCACChAgEA6gIAIaICAACIAwAgowIBAOoCACGkAgAA2wIAIKUCAACIAwAgpgIBAOoCACGnAgAA2wIAIKgCAACIAwAgqQIBAOoCACGqAgEA6gIAIasCAQDqAgAhrAIAANsCACCtAgEA6gIAIa4CAADbAgAgrwIBAOoCACGwAgAAiAMAIAzyAYAAAAAB9QGAAAAAAfYBgAAAAAH3AYAAAAAB-AGAAAAAAfwBgAAAAAGTAgEAAAABlAIBAAAAAZUCAQAAAAGWAoAAAAABlwKAAAAAAZgCgAAAAAEmlQEAAOsCACCWAQAAiQMAIJcBAACKAwAg6AEAAIcDADDpAQAA2QEAEOoBAACHAwAw6wEBAOkCACGAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6QIAIZECAQDpAgAhmQIBAOkCACGaAgEA6gIAIZsCAADbAgAgnAIAAIgDACCdAgAA2wIAIJ4CAACIAwAgnwIBAOoCACGgAgAA2wIAIKECAQDqAgAhogIAAIgDACCjAgEA6gIAIaQCAADbAgAgpQIAAIgDACCmAgEA6gIAIacCAADbAgAgqAIAAIgDACCpAgEA6gIAIaoCAQDqAgAhqwIBAOoCACGsAgAA2wIAIK0CAQDqAgAhrgIAANsCACCvAgEA6gIAIbACAACIAwAg0QIAANkBACDSAgAA2QEAIAOBAgAA2QEAIIICAADZAQAggwIAANkBACAC7QEBAAAAAe4BAQAAAAEMkwEAAI4DACCUAQAAjwMAIOgBAACMAwAw6QEAANMBABDqAQAAjAMAMOsBAgD8AgAh7AEBAOkCACHtAQEA6QIAIe4BAQDpAgAh7wFAAI0DACHwAQAA2wIAIPEBAQDqAgAhCPIBQAAAAAHzAUAAAAAF9AFAAAAABfUBQAAAAAH2AUAAAAAB9wFAAAAAAfgBQAAAAAH8AUAA4QIAIQiSAQAA6wIAIOgBAADoAgAw6QEAAKsCABDqAQAA6AIAMPEBAQDqAgAhgAIBAOkCACHRAgAAqwIAINICAACrAgAgJpUBAADrAgAglgEAAIkDACCXAQAAigMAIOgBAACHAwAw6QEAANkBABDqAQAAhwMAMOsBAQDpAgAhgAIBAOkCACGNAkAA_gIAIY4CQAD-AgAhkAIBAOkCACGRAgEA6QIAIZkCAQDpAgAhmgIBAOoCACGbAgAA2wIAIJwCAACIAwAgnQIAANsCACCeAgAAiAMAIJ8CAQDqAgAhoAIAANsCACChAgEA6gIAIaICAACIAwAgowIBAOoCACGkAgAA2wIAIKUCAACIAwAgpgIBAOoCACGnAgAA2wIAIKgCAACIAwAgqQIBAOoCACGqAgEA6gIAIasCAQDqAgAhrAIAANsCACCtAgEA6gIAIa4CAADbAgAgrwIBAOoCACGwAgAAiAMAINECAADZAQAg0gIAANkBACAK6AEAAJADADDpAQAAzgEAEOoBAACQAwAwgAIBANkCACGNAkAA8AIAIY4CQADwAgAhkAIBANkCACGZAgAAkQOzAiKzAgAAhQMAILQCAADbAgAgBwYAAOMCACAZAACTAwAgGgAAkwMAIPIBAAAAswIC8wEAAACzAgj0AQAAALMCCPwBAACSA7MCIgcGAADjAgAgGQAAkwMAIBoAAJMDACDyAQAAALMCAvMBAAAAswII9AEAAACzAgj8AQAAkgOzAiIE8gEAAACzAgLzAQAAALMCCPQBAAAAswII_AEAAJMDswIiCugBAACUAwAw6QEAALsBABDqAQAAlAMAMIACAQDpAgAhjQJAAP4CACGOAkAA_gIAIZACAQDpAgAhmQIAAJUDswIiswIAAIgDACC0AgAA2wIAIATyAQAAALMCAvMBAAAAswII9AEAAACzAgj8AQAAkwOzAiICkAIBAAAAAZkCAAAAswICBugBAACXAwAw6QEAALUBABDqAQAAlwMAMOsBAgDYAgAhtgIBANkCACG3AgEA2QIAIQjoAQAAmAMAMOkBAACfAQAQ6gEAAJgDADCAAgEA2QIAIY0CQADwAgAhjgJAAPACACGQAgEA3AIAIbgCAQDcAgAhCU0AAJoDACDoAQAAmQMAMOkBAACMAQAQ6gEAAJkDADCAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6gIAIbgCAQDqAgAhA4ECAABrACCCAgAAawAggwIAAGsAIAnoAQAAmwMAMOkBAACGAQAQ6gEAAJsDADCAAgEA2QIAIY0CQADwAgAhjgJAAPACACG4AgEA3AIAIbkCAQDZAgAhugIBANkCACEKTQAAmgMAIOgBAACcAwAw6QEAAHMAEOoBAACcAwAwgAIBAOkCACGNAkAA_gIAIY4CQAD-AgAhuAIBAOoCACG5AgEA6QIAIboCAQDpAgAhArYCAQAAAAG3AgEAAAABCE4AAJ8DACBPAACgAwAg6AEAAJ4DADDpAQAAawAQ6gEAAJ4DADDrAQIA_AIAIbYCAQDpAgAhtwIBAOkCACELTQAAmgMAIOgBAACZAwAw6QEAAIwBABDqAQAAmQMAMIACAQDpAgAhjQJAAP4CACGOAkAA_gIAIZACAQDqAgAhuAIBAOoCACHRAgAAjAEAINICAACMAQAgDE0AAJoDACDoAQAAnAMAMOkBAABzABDqAQAAnAMAMIACAQDpAgAhjQJAAP4CACGOAkAA_gIAIbgCAQDqAgAhuQIBAOkCACG6AgEA6QIAIdECAABzACDSAgAAcwAgCegBAAChAwAw6QEAAGYAEOoBAAChAwAw6wEBANkCACGNAkAA8AIAIY4CQADwAgAhvAIBANkCACG9AgEA2QIAIb4CQADwAgAhCegBAACiAwAw6QEAAFMAEOoBAACiAwAw6wEBAOkCACGNAkAA_gIAIY4CQAD-AgAhvAIBAOkCACG9AgEA6QIAIb4CQAD-AgAhArwCAQAAAAG9AgEAAAABEOgBAACkAwAw6QEAAE0AEOoBAACkAwAw6wEBANkCACGNAkAA8AIAIY4CQADwAgAhwAIBANkCACHBAgEA2QIAIcICAQDZAgAhwwIBANwCACHEAgEA3AIAIcUCQADaAgAhxgJAANoCACHHAgEA3AIAIcgCAQDcAgAhyQIBANwCACEL6AEAAKUDADDpAQAANwAQ6gEAAKUDADDrAQEA2QIAIY0CQADwAgAhjgJAAPACACG-AkAA8AIAIcACAQDZAgAhygIBANkCACHLAgEA3AIAIcwCAQDcAgAhC-gBAACmAwAw6QEAACEAEOoBAACmAwAw6wEBANkCACGEAgEA3AIAIY0CQADwAgAhjgJAAPACACG4AgEA3AIAIc0CIACnAwAhzgIBANwCACHPAgEA2QIAIQUGAADjAgAgGQAAqQMAIBoAAKkDACDyASAAAAAB_AEgAKgDACEFBgAA4wIAIBkAAKkDACAaAACpAwAg8gEgAAAAAfwBIACoAwAhAvIBIAAAAAH8ASAAqQMAIQ0EAACsAwAgBQAArQMAIOgBAACqAwAw6QEAAA4AEOoBAACqAwAw6wEBAOkCACGEAgEA6gIAIY0CQAD-AgAhjgJAAP4CACG4AgEA6gIAIc0CIACrAwAhzgIBAOoCACHPAgEA6QIAIQLyASAAAAAB_AEgAKkDACEDgQIAAAMAIIICAAADACCDAgAAAwAgA4ECAAAHACCCAgAABwAggwIAAAcAIAwDAACvAwAg6AEAAK4DADDpAQAABwAQ6gEAAK4DADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACG-AkAA_gIAIcACAQDpAgAhygIBAOkCACHLAgEA6gIAIcwCAQDqAgAhDwQAAKwDACAFAACtAwAg6AEAAKoDADDpAQAADgAQ6gEAAKoDADDrAQEA6QIAIYQCAQDqAgAhjQJAAP4CACGOAkAA_gIAIbgCAQDqAgAhzQIgAKsDACHOAgEA6gIAIc8CAQDpAgAh0QIAAA4AINICAAAOACACwQIBAAAAAcICAQAAAAERAwAArwMAIOgBAACxAwAw6QEAAAMAEOoBAACxAwAw6wEBAOkCACGNAkAA_gIAIY4CQAD-AgAhwAIBAOkCACHBAgEA6QIAIcICAQDpAgAhwwIBAOoCACHEAgEA6gIAIcUCQACNAwAhxgJAAI0DACHHAgEA6gIAIcgCAQDqAgAhyQIBAOoCACEAAAAAAAAB1gIBAAAAAQHWAkAAAAABAtYCAQAAAATcAgEAAAAFAdYCAQAAAAEF1gICAAAAAd0CAgAAAAHeAgIAAAAB3wICAAAAAeACAgAAAAEFEwAAkgUAIBQAAJgFACDTAgAAkwUAINQCAACXBQAg2QIAAKgCACAFEwAAkAUAIBQAAJUFACDTAgAAkQUAINQCAACUBQAg2QIAANEBACAB1gIBAAAABAMTAACSBQAg0wIAAJMFACDZAgAAqAIAIAMTAACQBQAg0wIAAJEFACDZAgAA0QEAIAAAAAsTAADGAwAwFAAAywMAMNMCAADHAwAw1AIAAMgDADDVAgAAyQMAINYCAADKAwAw1wIAAMoDADDYAgAAygMAMNkCAADKAwAw2gIAAMwDADDbAgAAzQMAMAeUAQAAwQMAIOsBAgAAAAHtAQEAAAAB7gEBAAAAAe8BQAAAAAHwAQAAvwMAIPEBAQAAAAECAAAA1QEAIBMAANEDACADAAAA1QEAIBMAANEDACAUAADQAwAgAQwAAI8FADANkwEAAI4DACCUAQAAjwMAIOgBAACMAwAw6QEAANMBABDqAQAAjAMAMOsBAgAAAAHsAQEA6QIAIe0BAQDpAgAh7gEBAOkCACHvAUAAjQMAIfABAADbAgAg8QEBAOoCACGxAgAAiwMAIAIAAADVAQAgDAAA0AMAIAIAAADOAwAgDAAAzwMAIAroAQAAzQMAMOkBAADOAwAQ6gEAAM0DADDrAQIA_AIAIewBAQDpAgAh7QEBAOkCACHuAQEA6QIAIe8BQACNAwAh8AEAANsCACDxAQEA6gIAIQroAQAAzQMAMOkBAADOAwAQ6gEAAM0DADDrAQIA_AIAIewBAQDpAgAh7QEBAOkCACHuAQEA6QIAIe8BQACNAwAh8AEAANsCACDxAQEA6gIAIQbrAQIAvAMAIe0BAQC4AwAh7gEBALgDACHvAUAAuQMAIfABAAC6AwAg8QEBALsDACEHlAEAAL4DACDrAQIAvAMAIe0BAQC4AwAh7gEBALgDACHvAUAAuQMAIfABAAC6AwAg8QEBALsDACEHlAEAAMEDACDrAQIAAAAB7QEBAAAAAe4BAQAAAAHvAUAAAAAB8AEAAL8DACDxAQEAAAABBBMAAMYDADDTAgAAxwMAMNUCAADJAwAg2QIAAMoDADAAAAAAAAAB1gIAAACGAgIB1gIAAQAAAQXWAgIAAAAB3QICAAAAAd4CAgAAAAHfAgIAAAAB4AICAAAAAQHWAkAAAAABAAAAAAAAAtYCAQAAAATcAgEAAAAFAtYCAQAAAATcAgEAAAAFAtYCAQAAAATcAgEAAAAFAtYCAQAAAATcAgEAAAAFAtYCAQAAAATcAgEAAAAFAtYCAQAAAATcAgEAAAAFAtYCAQAAAATcAgEAAAAFCxMAAIIEADAUAACHBAAw0wIAAIMEADDUAgAAhgQAMNUCAACEBAAg1gIAAMoDADDXAgAAygMAMNgCAADKAwAw2QIAAMoDADDaAgAAiAQAMNsCAADNAwAwBxMAAIgFACAUAACNBQAg0wIAAIkFACDUAgAAjAUAINcCAADZAQAg2AIAANkBACDZAgAA0QEAIAsTAADtAwAwFAAA8gMAMNMCAADuAwAw1AIAAO8DADDVAgAA8AMAINYCAADxAwAw1wIAAPEDADDYAgAA8QMAMNkCAADxAwAw2gIAAPMDADDbAgAA9AMAMB-VAQAAgAQAIJcBAACBBAAg6wEBAAAAAYACAQAAAAGNAkAAAAABjgJAAAAAAZACAQAAAAGRAgEAAAABmQIBAAAAAZoCAQAAAAGbAgAA-QMAIJwCgAAAAAGdAgAA-gMAIJ4CgAAAAAGfAgEAAAABoAIAAPsDACChAgEAAAABogKAAAAAAaMCAQAAAAGkAgAA_AMAIKUCgAAAAAGmAgEAAAABpwIAAP0DACCoAoAAAAABqgIBAAAAAasCAQAAAAGsAgAA_gMAIK0CAQAAAAGuAgAA_wMAIK8CAQAAAAGwAoAAAAABAgAAANEBACATAAD4AwAgAwAAANEBACATAAD4AwAgFAAA9wMAIAEMAACLBQAwJJUBAADrAgAglgEAAIkDACCXAQAAigMAIOgBAACHAwAw6QEAANkBABDqAQAAhwMAMOsBAQAAAAGAAgEAAAABjQJAAP4CACGOAkAA_gIAIZACAQDpAgAhkQIBAOkCACGZAgEA6QIAIZoCAQDqAgAhmwIAANsCACCcAgAAiAMAIJ0CAADbAgAgngIAAIgDACCfAgEA6gIAIaACAADbAgAgoQIBAOoCACGiAgAAiAMAIKMCAQDqAgAhpAIAANsCACClAgAAiAMAIKYCAQDqAgAhpwIAANsCACCoAgAAiAMAIKkCAQDqAgAhqgIBAOoCACGrAgEA6gIAIawCAADbAgAgrQIBAOoCACGuAgAA2wIAIK8CAQDqAgAhsAIAAIgDACACAAAA0QEAIAwAAPcDACACAAAA9QMAIAwAAPYDACAh6AEAAPQDADDpAQAA9QMAEOoBAAD0AwAw6wEBAOkCACGAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6QIAIZECAQDpAgAhmQIBAOkCACGaAgEA6gIAIZsCAADbAgAgnAIAAIgDACCdAgAA2wIAIJ4CAACIAwAgnwIBAOoCACGgAgAA2wIAIKECAQDqAgAhogIAAIgDACCjAgEA6gIAIaQCAADbAgAgpQIAAIgDACCmAgEA6gIAIacCAADbAgAgqAIAAIgDACCpAgEA6gIAIaoCAQDqAgAhqwIBAOoCACGsAgAA2wIAIK0CAQDqAgAhrgIAANsCACCvAgEA6gIAIbACAACIAwAgIegBAAD0AwAw6QEAAPUDABDqAQAA9AMAMOsBAQDpAgAhgAIBAOkCACGNAkAA_gIAIY4CQAD-AgAhkAIBAOkCACGRAgEA6QIAIZkCAQDpAgAhmgIBAOoCACGbAgAA2wIAIJwCAACIAwAgnQIAANsCACCeAgAAiAMAIJ8CAQDqAgAhoAIAANsCACChAgEA6gIAIaICAACIAwAgowIBAOoCACGkAgAA2wIAIKUCAACIAwAgpgIBAOoCACGnAgAA2wIAIKgCAACIAwAgqQIBAOoCACGqAgEA6gIAIasCAQDqAgAhrAIAANsCACCtAgEA6gIAIa4CAADbAgAgrwIBAOoCACGwAgAAiAMAIB3rAQEAuAMAIYACAQC4AwAhjQJAANwDACGOAkAA3AMAIZACAQC4AwAhkQIBALgDACGZAgEAuAMAIZoCAQC7AwAhmwIAAOMDACCcAoAAAAABnQIAAOQDACCeAoAAAAABnwIBALsDACGgAgAA5QMAIKECAQC7AwAhogKAAAAAAaMCAQC7AwAhpAIAAOYDACClAoAAAAABpgIBALsDACGnAgAA5wMAIKgCgAAAAAGqAgEAuwMAIasCAQC7AwAhrAIAAOgDACCtAgEAuwMAIa4CAADpAwAgrwIBALsDACGwAoAAAAABH5UBAADqAwAglwEAAOwDACDrAQEAuAMAIYACAQC4AwAhjQJAANwDACGOAkAA3AMAIZACAQC4AwAhkQIBALgDACGZAgEAuAMAIZoCAQC7AwAhmwIAAOMDACCcAoAAAAABnQIAAOQDACCeAoAAAAABnwIBALsDACGgAgAA5QMAIKECAQC7AwAhogKAAAAAAaMCAQC7AwAhpAIAAOYDACClAoAAAAABpgIBALsDACGnAgAA5wMAIKgCgAAAAAGqAgEAuwMAIasCAQC7AwAhrAIAAOgDACCtAgEAuwMAIa4CAADpAwAgrwIBALsDACGwAoAAAAABH5UBAACABAAglwEAAIEEACDrAQEAAAABgAIBAAAAAY0CQAAAAAGOAkAAAAABkAIBAAAAAZECAQAAAAGZAgEAAAABmgIBAAAAAZsCAAD5AwAgnAKAAAAAAZ0CAAD6AwAgngKAAAAAAZ8CAQAAAAGgAgAA-wMAIKECAQAAAAGiAoAAAAABowIBAAAAAaQCAAD8AwAgpQKAAAAAAaYCAQAAAAGnAgAA_QMAIKgCgAAAAAGqAgEAAAABqwIBAAAAAawCAAD-AwAgrQIBAAAAAa4CAAD_AwAgrwIBAAAAAbACgAAAAAEB1gIBAAAABAHWAgEAAAAEAdYCAQAAAAQB1gIBAAAABAHWAgEAAAAEAdYCAQAAAAQB1gIBAAAABAQTAACCBAAw0wIAAIMEADDVAgAAhAQAINkCAADKAwAwBBMAAO0DADDTAgAA7gMAMNUCAADwAwAg2QIAAPEDADAHkwEAAMADACDrAQIAAAAB7AEBAAAAAe4BAQAAAAHvAUAAAAAB8AEAAL8DACDxAQEAAAABAgAAANUBACATAACFBAAgAQwAAIoFADAHkwEAAMADACDrAQIAAAAB7AEBAAAAAe4BAQAAAAHvAUAAAAAB8AEAAL8DACDxAQEAAAABAwAAANUBACATAACFBAAgFAAAigQAIAIAAADVAQAgDAAAigQAIAIAAADOAwAgDAAAiQQAIAbrAQIAvAMAIewBAQC4AwAh7gEBALgDACHvAUAAuQMAIfABAAC6AwAg8QEBALsDACEHkwEAAL0DACDrAQIAvAMAIewBAQC4AwAh7gEBALgDACHvAUAAuQMAIfABAAC6AwAg8QEBALsDACEDEwAAiAUAINMCAACJBQAg2QIAANEBACATlQEAANMDACCWAQAAjAQAIJcBAACNBAAgmgIAALIDACCcAgAAsgMAIJ4CAACyAwAgnwIAALIDACChAgAAsgMAIKICAACyAwAgowIAALIDACClAgAAsgMAIKYCAACyAwAgqAIAALIDACCpAgAAsgMAIKoCAACyAwAgqwIAALIDACCtAgAAsgMAIK8CAACyAwAgsAIAALIDACAAApIBAADTAwAg8QEAALIDACAAAAAB1gIAAACzAgIC1gIBAAAABNwCAQAAAAUB1gIBAAAABAAAAAAABRMAAIAFACAUAACGBQAg0wIAAIEFACDUAgAAhQUAINkCAACJAQAgBRMAAP4EACAUAACDBQAg0wIAAP8EACDUAgAAggUAINkCAABpACADEwAAgAUAINMCAACBBQAg2QIAAIkBACADEwAA_gQAINMCAAD_BAAg2QIAAGkAIAAAAAsTAACiBAAwFAAApwQAMNMCAACjBAAw1AIAAKQEADDVAgAApQQAINYCAACmBAAw1wIAAKYEADDYAgAApgQAMNkCAACmBAAw2gIAAKgEADDbAgAAqQQAMANPAACdBAAg6wECAAAAAbcCAQAAAAECAAAAbQAgEwAArQQAIAMAAABtACATAACtBAAgFAAArAQAIAEMAAD9BAAwCU4AAJ8DACBPAACgAwAg6AEAAJ4DADDpAQAAawAQ6gEAAJ4DADDrAQIAAAABtgIBAOkCACG3AgEA6QIAIbsCAACdAwAgAgAAAG0AIAwAAKwEACACAAAAqgQAIAwAAKsEACAG6AEAAKkEADDpAQAAqgQAEOoBAACpBAAw6wECAPwCACG2AgEA6QIAIbcCAQDpAgAhBugBAACpBAAw6QEAAKoEABDqAQAAqQQAMOsBAgD8AgAhtgIBAOkCACG3AgEA6QIAIQLrAQIAvAMAIbcCAQC4AwAhA08AAJsEACDrAQIAvAMAIbcCAQC4AwAhA08AAJ0EACDrAQIAAAABtwIBAAAAAQQTAACiBAAw0wIAAKMEADDVAgAApQQAINkCAACmBAAwAAAAAAsTAAC0BAAwFAAAuAQAMNMCAAC1BAAw1AIAALYEADDVAgAAtwQAINYCAACmBAAw1wIAAKYEADDYAgAApgQAMNkCAACmBAAw2gIAALkEADDbAgAAqQQAMANOAACcBAAg6wECAAAAAbYCAQAAAAECAAAAbQAgEwAAvAQAIAMAAABtACATAAC8BAAgFAAAuwQAIAEMAAD8BAAwAgAAAG0AIAwAALsEACACAAAAqgQAIAwAALoEACAC6wECALwDACG2AgEAuAMAIQNOAACaBAAg6wECALwDACG2AgEAuAMAIQNOAACcBAAg6wECAAAAAbYCAQAAAAEEEwAAtAQAMNMCAAC1BAAw1QIAALcEACDZAgAApgQAMANNAACvBAAgkAIAALIDACC4AgAAsgMAIAJNAACvBAAguAIAALIDACAAAAAAAAAFEwAA9wQAIBQAAPoEACDTAgAA-AQAINQCAAD5BAAg2QIAAAEAIAMTAAD3BAAg0wIAAPgEACDZAgAAAQAgAAAABRMAAPIEACAUAAD1BAAg0wIAAPMEACDUAgAA9AQAINkCAAABACADEwAA8gQAINMCAADzBAAg2QIAAAEAIAAAAAHWAiAAAAABCxMAAN8EADAUAADkBAAw0wIAAOAEADDUAgAA4QQAMNUCAADiBAAg1gIAAOMEADDXAgAA4wQAMNgCAADjBAAw2QIAAOMEADDaAgAA5QQAMNsCAADmBAAwCxMAANMEADAUAADYBAAw0wIAANQEADDUAgAA1QQAMNUCAADWBAAg1gIAANcEADDXAgAA1wQAMNgCAADXBAAw2QIAANcEADDaAgAA2QQAMNsCAADaBAAwB-sBAQAAAAGNAkAAAAABjgJAAAAAAb4CQAAAAAHKAgEAAAABywIBAAAAAcwCAQAAAAECAAAACQAgEwAA3gQAIAMAAAAJACATAADeBAAgFAAA3QQAIAEMAADxBAAwDAMAAK8DACDoAQAArgMAMOkBAAAHABDqAQAArgMAMOsBAQAAAAGNAkAA_gIAIY4CQAD-AgAhvgJAAP4CACHAAgEA6QIAIcoCAQAAAAHLAgEA6gIAIcwCAQDqAgAhAgAAAAkAIAwAAN0EACACAAAA2wQAIAwAANwEACAL6AEAANoEADDpAQAA2wQAEOoBAADaBAAw6wEBAOkCACGNAkAA_gIAIY4CQAD-AgAhvgJAAP4CACHAAgEA6QIAIcoCAQDpAgAhywIBAOoCACHMAgEA6gIAIQvoAQAA2gQAMOkBAADbBAAQ6gEAANoEADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACG-AkAA_gIAIcACAQDpAgAhygIBAOkCACHLAgEA6gIAIcwCAQDqAgAhB-sBAQC4AwAhjQJAANwDACGOAkAA3AMAIb4CQADcAwAhygIBALgDACHLAgEAuwMAIcwCAQC7AwAhB-sBAQC4AwAhjQJAANwDACGOAkAA3AMAIb4CQADcAwAhygIBALgDACHLAgEAuwMAIcwCAQC7AwAhB-sBAQAAAAGNAkAAAAABjgJAAAAAAb4CQAAAAAHKAgEAAAABywIBAAAAAcwCAQAAAAEM6wEBAAAAAY0CQAAAAAGOAkAAAAABwQIBAAAAAcICAQAAAAHDAgEAAAABxAIBAAAAAcUCQAAAAAHGAkAAAAABxwIBAAAAAcgCAQAAAAHJAgEAAAABAgAAAAUAIBMAAOoEACADAAAABQAgEwAA6gQAIBQAAOkEACABDAAA8AQAMBIDAACvAwAg6AEAALEDADDpAQAAAwAQ6gEAALEDADDrAQEAAAABjQJAAP4CACGOAkAA_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-QMAIJwCgAAAAAGdAgAA-gMAIJ4CgAAAAAGfAgEAAAABoAIAAPsDACChAgEAAAABogKAAAAAAaMCAQAAAAGkAgAA_AMAIKUCgAAAAAGmAgEAAAABpwIAAP0DACCoAoAAAAABqQIBAAAAAaoCAQAAAAGrAgEAAAABrAIAAP4DACCtAgEAAAABrgIAAP8DACCvAgEAAAABsAKAAAAAAQIAAADRAQAgEwAAiAUAIAbrAQIAAAAB7AEBAAAAAe4BAQAAAAHvAUAAAAAB8AEAAL8DACDxAQEAAAABHesBAQAAAAGAAgEAAAABjQJAAAAAAY4CQAAAAAGQAgEAAAABkQIBAAAAAZkCAQAAAAGaAgEAAAABmwIAAPkDACCcAoAAAAABnQIAAPoDACCeAoAAAAABnwIBAAAAAaACAAD7AwAgoQIBAAAAAaICgAAAAAGjAgEAAAABpAIAAPwDACClAoAAAAABpgIBAAAAAacCAAD9AwAgqAKAAAAAAaoCAQAAAAGrAgEAAAABrAIAAP4DACCtAgEAAAABrgIAAP8DACCvAgEAAAABsAKAAAAAAQMAAADZAQAgEwAAiAUAIBQAAI4FACAiAAAA2QEAIAwAAI4FACCVAQAA6gMAIJYBAADrAwAg6wEBALgDACGAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuAMAIZECAQC4AwAhmQIBALgDACGaAgEAuwMAIZsCAADjAwAgnAKAAAAAAZ0CAADkAwAgngKAAAAAAZ8CAQC7AwAhoAIAAOUDACChAgEAuwMAIaICgAAAAAGjAgEAuwMAIaQCAADmAwAgpQKAAAAAAaYCAQC7AwAhpwIAAOcDACCoAoAAAAABqQIBALsDACGqAgEAuwMAIasCAQC7AwAhrAIAAOgDACCtAgEAuwMAIa4CAADpAwAgrwIBALsDACGwAoAAAAABIJUBAADqAwAglgEAAOsDACDrAQEAuAMAIYACAQC4AwAhjQJAANwDACGOAkAA3AMAIZACAQC4AwAhkQIBALgDACGZAgEAuAMAIZoCAQC7AwAhmwIAAOMDACCcAoAAAAABnQIAAOQDACCeAoAAAAABnwIBALsDACGgAgAA5QMAIKECAQC7AwAhogKAAAAAAaMCAQC7AwAhpAIAAOYDACClAoAAAAABpgIBALsDACGnAgAA5wMAIKgCgAAAAAGpAgEAuwMAIaoCAQC7AwAhqwIBALsDACGsAgAA6AMAIK0CAQC7AwAhrgIAAOkDACCvAgEAuwMAIbACgAAAAAEG6wECAAAAAe0BAQAAAAHuAQEAAAAB7wFAAAAAAfABAAC_AwAg8QEBAAAAASCWAQAAiwQAIJcBAACBBAAg6wEBAAAAAYACAQAAAAGNAkAAAAABjgJAAAAAAZACAQAAAAGRAgEAAAABmQIBAAAAAZoCAQAAAAGbAgAA-QMAIJwCgAAAAAGdAgAA-gMAIJ4CgAAAAAGfAgEAAAABoAIAAPsDACChAgEAAAABogKAAAAAAaMCAQAAAAGkAgAA_AMAIKUCgAAAAAGmAgEAAAABpwIAAP0DACCoAoAAAAABqQIBAAAAAaoCAQAAAAGrAgEAAAABrAIAAP4DACCtAgEAAAABrgIAAP8DACCvAgEAAAABsAKAAAAAAQIAAADRAQAgEwAAkAUAIALxAQEAAAABgAIBAAAAAQIAAACoAgAgEwAAkgUAIAMAAADZAQAgEwAAkAUAIBQAAJYFACAiAAAA2QEAIAwAAJYFACCWAQAA6wMAIJcBAADsAwAg6wEBALgDACGAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuAMAIZECAQC4AwAhmQIBALgDACGaAgEAuwMAIZsCAADjAwAgnAKAAAAAAZ0CAADkAwAgngKAAAAAAZ8CAQC7AwAhoAIAAOUDACChAgEAuwMAIaICgAAAAAGjAgEAuwMAIaQCAADmAwAgpQKAAAAAAaYCAQC7AwAhpwIAAOcDACCoAoAAAAABqQIBALsDACGqAgEAuwMAIasCAQC7AwAhrAIAAOgDACCtAgEAuwMAIa4CAADpAwAgrwIBALsDACGwAoAAAAABIJYBAADrAwAglwEAAOwDACDrAQEAuAMAIYACAQC4AwAhjQJAANwDACGOAkAA3AMAIZACAQC4AwAhkQIBALgDACGZAgEAuAMAIZoCAQC7AwAhmwIAAOMDACCcAoAAAAABnQIAAOQDACCeAoAAAAABnwIBALsDACGgAgAA5QMAIKECAQC7AwAhogKAAAAAAaMCAQC7AwAhpAIAAOYDACClAoAAAAABpgIBALsDACGnAgAA5wMAIKgCgAAAAAGpAgEAuwMAIaoCAQC7AwAhqwIBALsDACGsAgAA6AMAIK0CAQC7AwAhrgIAAOkDACCvAgEAuwMAIbACgAAAAAEDAAAAqwIAIBMAAJIFACAUAACZBQAgBAAAAKsCACAMAACZBQAg8QEBALsDACGAAgEAuAMAIQLxAQEAuwMAIYACAQC4AwAhAwQGAgUKAwYABAEDAAEBAwABAgQLAAUMAAAAAAMGAAkZAAoaAAsAAAADBgAJGQAKGgALAQMAAQEDAAEDBgAQGQARGgASAAAAAwYAEBkAERoAEgEDAAEBAwABAwYAFxkAGBoAGQAAAAMGABcZABgaABkAAAADBgAfGQAgGgAhAAAAAwYAHxkAIBoAIQIGACdNbiQCTgAlTwAjAgYAJk1vJAFNcAABTXEAAAADBgArGQAsGgAtAAAAAwYAKxkALBoALQAAAwYAMhkAMxoANAAAAAMGADIZADMaADQCTgAlTwAjAk4AJU8AIwUGADkZADwaAD1-ADp_ADsAAAAAAAUGADkZADwaAD1-ADp_ADsAAAADBgBDGQBEGgBFAAAAAwYAQxkARBoARQQGAEuVAdYBSJYB2gFHlwHcAUcCkwEASZQBAEcCBgBKkgHXAUgBkgHYAQAClQHdAQCXAd4BAAGWAegBRwGWAe4BRwMGAE8ZAFAaAFEAAAADBgBPGQBQGgBRAAAAAwYAVxkAWBoAWQAAAAMGAFcZAFgaAFkAAAAFBgBfGQBiGgBjfgBgfwBhAAAAAAAFBgBfGQBiGgBjfgBgfwBhAAADBgBoGQBpGgBqAAAAAwYAaBkAaRoAagKTAQBJlAEARwKTAQBJlAEARwUGAG8ZAHIaAHN-AHB_AHEAAAAAAAUGAG8ZAHIaAHN-AHB_AHEHAgEIDQEJEAEKEQELEgENFAEOFgUPFwYQGQERGwUSHAcVHQEWHgEXHwUbIggcIwwdJAMeJQMfJgMgJwMhKAMiKgMjLAUkLQ0lLwMmMQUnMg4oMwMpNAMqNQUrOA8sORMtOgIuOwIvPAIwPQIxPgIyQAIzQgU0QxQ1RQI2RwU3SBU4SQI5SgI6SwU7ThY8Txo9URs-Uhs_VRtAVhtBVxtCWRtDWwVEXBxFXhtGYAVHYR1IYhtJYxtKZAVLZx5MaCJQaiNRciNSdSNTdiNUdyNVeSNWewVXfChYfiNZgAEFWoEBKVuCASNcgwEjXYQBBV6HASpfiAEuYIoBJWGLASVijgElY48BJWSQASVlkgElZpQBBWeVAS9olwElaZkBBWqaATBrmwElbJwBJW2dAQVuoAExb6EBNXCiASRxowEkcqQBJHOlASR0pgEkdagBJHaqAQV3qwE2eK0BJHmvAQV6sAE3e7EBJHyyASR9swEFgAG2ATiBAbcBPoIBuQE_gwG6AT-EAb0BP4UBvgE_hgG_AT-HAcEBP4gBwwEFiQHEAUCKAcYBP4sByAEFjAHJAUGNAcoBP44BywE_jwHMAQWQAc8BQpEB0AFGmAHSAUeZAd8BR5oB4AFHmwHhAUecAeIBR50B5AFHngHmAQWfAecBTKAB6gFHoQHsAQWiAe0BTaMB7wFHpAHwAUelAfEBBaYB9AFOpwH1AVKoAfcBU6kB-AFTqgH7AVOrAfwBU6wB_QFTrQH_AVOuAYECBa8BggJUsAGEAlOxAYYCBbIBhwJVswGIAlO0AYkCU7UBigIFtgGNAla3AY4CWrgBkAJbuQGRAlu6AZQCW7sBlQJbvAGWAlu9AZgCW74BmgIFvwGbAlzAAZ0CW8EBnwIFwgGgAl3DAaECW8QBogJbxQGjAgXGAaYCXscBpwJkyAGpAknJAaoCScoBrQJJywGuAknMAa8CSc0BsQJJzgGzAgXPAbQCZdABtgJJ0QG4AgXSAbkCZtMBugJJ1AG7AknVAbwCBdYBvwJn1wHAAmvYAcECSNkBwgJI2gHDAkjbAcQCSNwBxQJI3QHHAkjeAckCBd8BygJs4AHMAkjhAc4CBeIBzwJt4wHQAkjkAdECSOUB0gIF5gHVAm7nAdYCdA"
|
|
22
|
+
strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"sessions\",\"_count\",\"user.findUnique\",\"user.findUniqueOrThrow\",\"user.findFirst\",\"user.findFirstOrThrow\",\"user.findMany\",\"data\",\"user.createOne\",\"user.createMany\",\"user.createManyAndReturn\",\"user.updateOne\",\"user.updateMany\",\"user.updateManyAndReturn\",\"create\",\"update\",\"user.upsertOne\",\"user.deleteOne\",\"user.deleteMany\",\"having\",\"_min\",\"_max\",\"user.groupBy\",\"user.aggregate\",\"session.findUnique\",\"session.findUniqueOrThrow\",\"session.findFirst\",\"session.findFirstOrThrow\",\"session.findMany\",\"session.createOne\",\"session.createMany\",\"session.createManyAndReturn\",\"session.updateOne\",\"session.updateMany\",\"session.updateManyAndReturn\",\"session.upsertOne\",\"session.deleteOne\",\"session.deleteMany\",\"session.groupBy\",\"session.aggregate\",\"account.findUnique\",\"account.findUniqueOrThrow\",\"account.findFirst\",\"account.findFirstOrThrow\",\"account.findMany\",\"account.createOne\",\"account.createMany\",\"account.createManyAndReturn\",\"account.updateOne\",\"account.updateMany\",\"account.updateManyAndReturn\",\"account.upsertOne\",\"account.deleteOne\",\"account.deleteMany\",\"account.groupBy\",\"account.aggregate\",\"verification.findUnique\",\"verification.findUniqueOrThrow\",\"verification.findFirst\",\"verification.findFirstOrThrow\",\"verification.findMany\",\"verification.createOne\",\"verification.createMany\",\"verification.createManyAndReturn\",\"verification.updateOne\",\"verification.updateMany\",\"verification.updateManyAndReturn\",\"verification.upsertOne\",\"verification.deleteOne\",\"verification.deleteMany\",\"verification.groupBy\",\"verification.aggregate\",\"memberships\",\"group\",\"person\",\"DbPerson.findUnique\",\"DbPerson.findUniqueOrThrow\",\"DbPerson.findFirst\",\"DbPerson.findFirstOrThrow\",\"DbPerson.findMany\",\"DbPerson.createOne\",\"DbPerson.createMany\",\"DbPerson.createManyAndReturn\",\"DbPerson.updateOne\",\"DbPerson.updateMany\",\"DbPerson.updateManyAndReturn\",\"DbPerson.upsertOne\",\"DbPerson.deleteOne\",\"DbPerson.deleteMany\",\"DbPerson.groupBy\",\"DbPerson.aggregate\",\"DbGroup.findUnique\",\"DbGroup.findUniqueOrThrow\",\"DbGroup.findFirst\",\"DbGroup.findFirstOrThrow\",\"DbGroup.findMany\",\"DbGroup.createOne\",\"DbGroup.createMany\",\"DbGroup.createManyAndReturn\",\"DbGroup.updateOne\",\"DbGroup.updateMany\",\"DbGroup.updateManyAndReturn\",\"DbGroup.upsertOne\",\"DbGroup.deleteOne\",\"DbGroup.deleteMany\",\"DbGroup.groupBy\",\"DbGroup.aggregate\",\"DbGroupMembership.findUnique\",\"DbGroupMembership.findUniqueOrThrow\",\"DbGroupMembership.findFirst\",\"DbGroupMembership.findFirstOrThrow\",\"DbGroupMembership.findMany\",\"DbGroupMembership.createOne\",\"DbGroupMembership.createMany\",\"DbGroupMembership.createManyAndReturn\",\"DbGroupMembership.updateOne\",\"DbGroupMembership.updateMany\",\"DbGroupMembership.updateManyAndReturn\",\"DbGroupMembership.upsertOne\",\"DbGroupMembership.deleteOne\",\"DbGroupMembership.deleteMany\",\"_avg\",\"_sum\",\"DbGroupMembership.groupBy\",\"DbGroupMembership.aggregate\",\"DbApprovalMethod.findUnique\",\"DbApprovalMethod.findUniqueOrThrow\",\"DbApprovalMethod.findFirst\",\"DbApprovalMethod.findFirstOrThrow\",\"DbApprovalMethod.findMany\",\"DbApprovalMethod.createOne\",\"DbApprovalMethod.createMany\",\"DbApprovalMethod.createManyAndReturn\",\"DbApprovalMethod.updateOne\",\"DbApprovalMethod.updateMany\",\"DbApprovalMethod.updateManyAndReturn\",\"DbApprovalMethod.upsertOne\",\"DbApprovalMethod.deleteOne\",\"DbApprovalMethod.deleteMany\",\"DbApprovalMethod.groupBy\",\"DbApprovalMethod.aggregate\",\"references\",\"source\",\"resource\",\"sourceRefs\",\"parent\",\"children\",\"DbResource.findUnique\",\"DbResource.findUniqueOrThrow\",\"DbResource.findFirst\",\"DbResource.findFirstOrThrow\",\"DbResource.findMany\",\"DbResource.createOne\",\"DbResource.createMany\",\"DbResource.createManyAndReturn\",\"DbResource.updateOne\",\"DbResource.updateMany\",\"DbResource.updateManyAndReturn\",\"DbResource.upsertOne\",\"DbResource.deleteOne\",\"DbResource.deleteMany\",\"DbResource.groupBy\",\"DbResource.aggregate\",\"DbAppTagDefinition.findUnique\",\"DbAppTagDefinition.findUniqueOrThrow\",\"DbAppTagDefinition.findFirst\",\"DbAppTagDefinition.findFirstOrThrow\",\"DbAppTagDefinition.findMany\",\"DbAppTagDefinition.createOne\",\"DbAppTagDefinition.createMany\",\"DbAppTagDefinition.createManyAndReturn\",\"DbAppTagDefinition.updateOne\",\"DbAppTagDefinition.updateMany\",\"DbAppTagDefinition.updateManyAndReturn\",\"DbAppTagDefinition.upsertOne\",\"DbAppTagDefinition.deleteOne\",\"DbAppTagDefinition.deleteMany\",\"DbAppTagDefinition.groupBy\",\"DbAppTagDefinition.aggregate\",\"DbAsset.findUnique\",\"DbAsset.findUniqueOrThrow\",\"DbAsset.findFirst\",\"DbAsset.findFirstOrThrow\",\"DbAsset.findMany\",\"DbAsset.createOne\",\"DbAsset.createMany\",\"DbAsset.createManyAndReturn\",\"DbAsset.updateOne\",\"DbAsset.updateMany\",\"DbAsset.updateManyAndReturn\",\"DbAsset.upsertOne\",\"DbAsset.deleteOne\",\"DbAsset.deleteMany\",\"DbAsset.groupBy\",\"DbAsset.aggregate\",\"Source.findUnique\",\"Source.findUniqueOrThrow\",\"Source.findFirst\",\"Source.findFirstOrThrow\",\"Source.findMany\",\"Source.createOne\",\"Source.createMany\",\"Source.createManyAndReturn\",\"Source.updateOne\",\"Source.updateMany\",\"Source.updateManyAndReturn\",\"Source.upsertOne\",\"Source.deleteOne\",\"Source.deleteMany\",\"Source.groupBy\",\"Source.aggregate\",\"SourceReference.findUnique\",\"SourceReference.findUniqueOrThrow\",\"SourceReference.findFirst\",\"SourceReference.findFirstOrThrow\",\"SourceReference.findMany\",\"SourceReference.createOne\",\"SourceReference.createMany\",\"SourceReference.createManyAndReturn\",\"SourceReference.updateOne\",\"SourceReference.updateMany\",\"SourceReference.updateManyAndReturn\",\"SourceReference.upsertOne\",\"SourceReference.deleteOne\",\"SourceReference.deleteMany\",\"SourceReference.groupBy\",\"SourceReference.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"sourceSlug\",\"resourceId\",\"url\",\"parseDate\",\"excerpts\",\"userPrompt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"contains\",\"startsWith\",\"endsWith\",\"not\",\"has\",\"hasEvery\",\"hasSome\",\"slug\",\"every\",\"some\",\"none\",\"name\",\"AssetType\",\"assetType\",\"content\",\"checksum\",\"mimeType\",\"fileSize\",\"width\",\"height\",\"createdAt\",\"updatedAt\",\"prefix\",\"displayName\",\"description\",\"values\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"type\",\"abbreviation\",\"nicknames\",\"access\",\"teams\",\"accessRequest\",\"notes\",\"tags\",\"appUrl\",\"links\",\"iconName\",\"screenshotIds\",\"deprecated\",\"aiPrompt\",\"urlIssues\",\"tiers\",\"parentSlug\",\"tier\",\"familySlug\",\"aliases\",\"ownerPersonSlug\",\"accessMaintainerGroupSlugs\",\"accessComments\",\"extra\",\"lastCheckedAt\",\"nextCheckAfter\",\"resourceId_url\",\"ApprovalMethodType\",\"config\",\"deprecatedAliases\",\"type_displayName\",\"groupSlug\",\"personSlug\",\"email\",\"firstName\",\"lastName\",\"groupSlug_personSlug\",\"identifier\",\"value\",\"expiresAt\",\"identifier_value\",\"userId\",\"accountId\",\"providerId\",\"refreshToken\",\"accessToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"idToken\",\"scope\",\"password\",\"token\",\"ipAddress\",\"userAgent\",\"emailVerified\",\"image\",\"role\",\"providerId_accountId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
|
|
23
|
+
graph: "mQV00AENBAAArAMAIAUAAK0DACDoAQAAqgMAMOkBAAAOABDqAQAAqgMAMOsBAQAAAAGEAgEA6gIAIY0CQAD-AgAhjgJAAP4CACG6AgEAAAABzwIgAKsDACHQAgEA6gIAIdECAQDpAgAhAQAAAAEAIBEDAACvAwAg6AEAALEDADDpAQAAAwAQ6gEAALEDADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACHCAgEA6QIAIcMCAQDpAgAhxAIBAOkCACHFAgEA6gIAIcYCAQDqAgAhxwJAAIkDACHIAkAAiQMAIckCAQDqAgAhygIBAOoCACHLAgEA6gIAIQgDAADvBAAgxQIAALIDACDGAgAAsgMAIMcCAACyAwAgyAIAALIDACDJAgAAsgMAIMoCAACyAwAgywIAALIDACASAwAArwMAIOgBAACxAwAw6QEAAAMAEOoBAACxAwAw6wEBAAAAAY0CQAD-AgAhjgJAAP4CACHCAgEA6QIAIcMCAQDpAgAhxAIBAOkCACHFAgEA6gIAIcYCAQDqAgAhxwJAAIkDACHIAkAAiQMAIckCAQDqAgAhygIBAOoCACHLAgEA6gIAIdICAACwAwAgAwAAAAMAIAEAAAQAMAIAAAUAIAwDAACvAwAg6AEAAK4DADDpAQAABwAQ6gEAAK4DADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACHAAkAA_gIAIcICAQDpAgAhzAIBAOkCACHNAgEA6gIAIc4CAQDqAgAhAwMAAO8EACDNAgAAsgMAIM4CAACyAwAgDAMAAK8DACDoAQAArgMAMOkBAAAHABDqAQAArgMAMOsBAQAAAAGNAkAA_gIAIY4CQAD-AgAhwAJAAP4CACHCAgEA6QIAIcwCAQAAAAHNAgEA6gIAIc4CAQDqAgAhAwAAAAcAIAEAAAgAMAIAAAkAIAEAAAADACABAAAABwAgAQAAAAEAIA0EAACsAwAgBQAArQMAIOgBAACqAwAw6QEAAA4AEOoBAACqAwAw6wEBAOkCACGEAgEA6gIAIY0CQAD-AgAhjgJAAP4CACG6AgEA6gIAIc8CIACrAwAh0AIBAOoCACHRAgEA6QIAIQUEAADtBAAgBQAA7gQAIIQCAACyAwAgugIAALIDACDQAgAAsgMAIAMAAAAOACABAAAPADACAAABACADAAAADgAgAQAADwAwAgAAAQAgAwAAAA4AIAEAAA8AMAIAAAEAIAoEAADrBAAgBQAA7AQAIOsBAQAAAAGEAgEAAAABjQJAAAAAAY4CQAAAAAG6AgEAAAABzwIgAAAAAdACAQAAAAHRAgEAAAABAQwAABMAIAjrAQEAAAABhAIBAAAAAY0CQAAAAAGOAkAAAAABugIBAAAAAc8CIAAAAAHQAgEAAAAB0QIBAAAAAQEMAAAVADABDAAAFQAwCgQAANEEACAFAADSBAAg6wEBALgDACGEAgEAuwMAIY0CQADcAwAhjgJAANwDACG6AgEAuwMAIc8CIADQBAAh0AIBALsDACHRAgEAuAMAIQIAAAABACAMAAAYACAI6wEBALgDACGEAgEAuwMAIY0CQADcAwAhjgJAANwDACG6AgEAuwMAIc8CIADQBAAh0AIBALsDACHRAgEAuAMAIQIAAAAOACAMAAAaACACAAAADgAgDAAAGgAgAwAAAAEAIBMAABMAIBQAABgAIAEAAAABACABAAAADgAgBgYAAM0EACAZAADPBAAgGgAAzgQAIIQCAACyAwAgugIAALIDACDQAgAAsgMAIAvoAQAApgMAMOkBAAAhABDqAQAApgMAMOsBAQDZAgAhhAIBANwCACGNAkAA8AIAIY4CQADwAgAhugIBANwCACHPAiAApwMAIdACAQDcAgAh0QIBANkCACEDAAAADgAgAQAAIAAwGAAAIQAgAwAAAA4AIAEAAA8AMAIAAAEAIAEAAAAJACABAAAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgCQMAAMwEACDrAQEAAAABjQJAAAAAAY4CQAAAAAHAAkAAAAABwgIBAAAAAcwCAQAAAAHNAgEAAAABzgIBAAAAAQEMAAApACAI6wEBAAAAAY0CQAAAAAGOAkAAAAABwAJAAAAAAcICAQAAAAHMAgEAAAABzQIBAAAAAc4CAQAAAAEBDAAAKwAwAQwAACsAMAkDAADLBAAg6wEBALgDACGNAkAA3AMAIY4CQADcAwAhwAJAANwDACHCAgEAuAMAIcwCAQC4AwAhzQIBALsDACHOAgEAuwMAIQIAAAAJACAMAAAuACAI6wEBALgDACGNAkAA3AMAIY4CQADcAwAhwAJAANwDACHCAgEAuAMAIcwCAQC4AwAhzQIBALsDACHOAgEAuwMAIQIAAAAHACAMAAAwACACAAAABwAgDAAAMAAgAwAAAAkAIBMAACkAIBQAAC4AIAEAAAAJACABAAAABwAgBQYAAMgEACAZAADKBAAgGgAAyQQAIM0CAACyAwAgzgIAALIDACAL6AEAAKUDADDpAQAANwAQ6gEAAKUDADDrAQEA2QIAIY0CQADwAgAhjgJAAPACACHAAkAA8AIAIcICAQDZAgAhzAIBANkCACHNAgEA3AIAIc4CAQDcAgAhAwAAAAcAIAEAADYAMBgAADcAIAMAAAAHACABAAAIADACAAAJACABAAAABQAgAQAAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIA4DAADHBAAg6wEBAAAAAY0CQAAAAAGOAkAAAAABwgIBAAAAAcMCAQAAAAHEAgEAAAABxQIBAAAAAcYCAQAAAAHHAkAAAAAByAJAAAAAAckCAQAAAAHKAgEAAAABywIBAAAAAQEMAAA_ACAN6wEBAAAAAY0CQAAAAAGOAkAAAAABwgIBAAAAAcMCAQAAAAHEAgEAAAABxQIBAAAAAcYCAQAAAAHHAkAAAAAByAJAAAAAAckCAQAAAAHKAgEAAAABywIBAAAAAQEMAABBADABDAAAQQAwDgMAAMYEACDrAQEAuAMAIY0CQADcAwAhjgJAANwDACHCAgEAuAMAIcMCAQC4AwAhxAIBALgDACHFAgEAuwMAIcYCAQC7AwAhxwJAALkDACHIAkAAuQMAIckCAQC7AwAhygIBALsDACHLAgEAuwMAIQIAAAAFACAMAABEACAN6wEBALgDACGNAkAA3AMAIY4CQADcAwAhwgIBALgDACHDAgEAuAMAIcQCAQC4AwAhxQIBALsDACHGAgEAuwMAIccCQAC5AwAhyAJAALkDACHJAgEAuwMAIcoCAQC7AwAhywIBALsDACECAAAAAwAgDAAARgAgAgAAAAMAIAwAAEYAIAMAAAAFACATAAA_ACAUAABEACABAAAABQAgAQAAAAMAIAoGAADDBAAgGQAAxQQAIBoAAMQEACDFAgAAsgMAIMYCAACyAwAgxwIAALIDACDIAgAAsgMAIMkCAACyAwAgygIAALIDACDLAgAAsgMAIBDoAQAApAMAMOkBAABNABDqAQAApAMAMOsBAQDZAgAhjQJAAPACACGOAkAA8AIAIcICAQDZAgAhwwIBANkCACHEAgEA2QIAIcUCAQDcAgAhxgIBANwCACHHAkAA2gIAIcgCQADaAgAhyQIBANwCACHKAgEA3AIAIcsCAQDcAgAhAwAAAAMAIAEAAEwAMBgAAE0AIAMAAAADACABAAAEADACAAAFACAK6AEAAKIDADDpAQAAUwAQ6gEAAKIDADDrAQEAAAABjQJAAP4CACGOAkAA_gIAIb4CAQDpAgAhvwIBAOkCACHAAkAA_gIAIcECAACjAwAgAQAAAFAAIAEAAABQACAJ6AEAAKIDADDpAQAAUwAQ6gEAAKIDADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACG-AgEA6QIAIb8CAQDpAgAhwAJAAP4CACEAAwAAAFMAIAEAAFQAMAIAAFAAIAMAAABTACABAABUADACAABQACADAAAAUwAgAQAAVAAwAgAAUAAgBusBAQAAAAGNAkAAAAABjgJAAAAAAb4CAQAAAAG_AgEAAAABwAJAAAAAAQEMAABYACAG6wEBAAAAAY0CQAAAAAGOAkAAAAABvgIBAAAAAb8CAQAAAAHAAkAAAAABAQwAAFoAMAEMAABaADAG6wEBALgDACGNAkAA3AMAIY4CQADcAwAhvgIBALgDACG_AgEAuAMAIcACQADcAwAhAgAAAFAAIAwAAF0AIAbrAQEAuAMAIY0CQADcAwAhjgJAANwDACG-AgEAuAMAIb8CAQC4AwAhwAJAANwDACECAAAAUwAgDAAAXwAgAgAAAFMAIAwAAF8AIAMAAABQACATAABYACAUAABdACABAAAAUAAgAQAAAFMAIAMGAADABAAgGQAAwgQAIBoAAMEEACAJ6AEAAKEDADDpAQAAZgAQ6gEAAKEDADDrAQEA2QIAIY0CQADwAgAhjgJAAPACACG-AgEA2QIAIb8CAQDZAgAhwAJAAPACACEDAAAAUwAgAQAAZQAwGAAAZgAgAwAAAFMAIAEAAFQAMAIAAFAAIApNAACaAwAg6AEAAJwDADDpAQAAcwAQ6gEAAJwDADCAAgEAAAABjQJAAP4CACGOAkAA_gIAIboCAQAAAAG7AgEA6QIAIbwCAQDpAgAhAQAAAGkAIAhOAACfAwAgTwAAoAMAIOgBAACeAwAw6QEAAGsAEOoBAACeAwAw6wECAPwCACG4AgEA6QIAIbkCAQDpAgAhAk4AAL4EACBPAAC_BAAgCU4AAJ8DACBPAACgAwAg6AEAAJ4DADDpAQAAawAQ6gEAAJ4DADDrAQIAAAABuAIBAOkCACG5AgEA6QIAIb0CAACdAwAgAwAAAGsAIAEAAGwAMAIAAG0AIAMAAABrACABAABsADACAABtACABAAAAawAgAQAAAGsAIAEAAABpACAKTQAAmgMAIOgBAACcAwAw6QEAAHMAEOoBAACcAwAwgAIBAOkCACGNAkAA_gIAIY4CQAD-AgAhugIBAOoCACG7AgEA6QIAIbwCAQDpAgAhAk0AAK8EACC6AgAAsgMAIAMAAABzACABAAB0ADACAABpACADAAAAcwAgAQAAdAAwAgAAaQAgAwAAAHMAIAEAAHQAMAIAAGkAIAdNAAC9BAAggAIBAAAAAY0CQAAAAAGOAkAAAAABugIBAAAAAbsCAQAAAAG8AgEAAAABAQwAAHgAIAaAAgEAAAABjQJAAAAAAY4CQAAAAAG6AgEAAAABuwIBAAAAAbwCAQAAAAEBDAAAegAwAQwAAHoAMAdNAACzBAAggAIBALgDACGNAkAA3AMAIY4CQADcAwAhugIBALsDACG7AgEAuAMAIbwCAQC4AwAhAgAAAGkAIAwAAH0AIAaAAgEAuAMAIY0CQADcAwAhjgJAANwDACG6AgEAuwMAIbsCAQC4AwAhvAIBALgDACECAAAAcwAgDAAAfwAgAgAAAHMAIAwAAH8AIAMAAABpACATAAB4ACAUAAB9ACABAAAAaQAgAQAAAHMAIAQGAACwBAAgGQAAsgQAIBoAALEEACC6AgAAsgMAIAnoAQAAmwMAMOkBAACGAQAQ6gEAAJsDADCAAgEA2QIAIY0CQADwAgAhjgJAAPACACG6AgEA3AIAIbsCAQDZAgAhvAIBANkCACEDAAAAcwAgAQAAhQEAMBgAAIYBACADAAAAcwAgAQAAdAAwAgAAaQAgCU0AAJoDACDoAQAAmQMAMOkBAACMAQAQ6gEAAJkDADCAAgEAAAABjQJAAP4CACGOAkAA_gIAIZACAQDqAgAhugIBAOoCACEBAAAAiQEAIAEAAACJAQAgCU0AAJoDACDoAQAAmQMAMOkBAACMAQAQ6gEAAJkDADCAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6gIAIboCAQDqAgAhA00AAK8EACCQAgAAsgMAILoCAACyAwAgAwAAAIwBACABAACNAQAwAgAAiQEAIAMAAACMAQAgAQAAjQEAMAIAAIkBACADAAAAjAEAIAEAAI0BADACAACJAQAgBk0AAK4EACCAAgEAAAABjQJAAAAAAY4CQAAAAAGQAgEAAAABugIBAAAAAQEMAACRAQAgBYACAQAAAAGNAkAAAAABjgJAAAAAAZACAQAAAAG6AgEAAAABAQwAAJMBADABDAAAkwEAMAZNAAChBAAggAIBALgDACGNAkAA3AMAIY4CQADcAwAhkAIBALsDACG6AgEAuwMAIQIAAACJAQAgDAAAlgEAIAWAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuwMAIboCAQC7AwAhAgAAAIwBACAMAACYAQAgAgAAAIwBACAMAACYAQAgAwAAAIkBACATAACRAQAgFAAAlgEAIAEAAACJAQAgAQAAAIwBACAFBgAAngQAIBkAAKAEACAaAACfBAAgkAIAALIDACC6AgAAsgMAIAjoAQAAmAMAMOkBAACfAQAQ6gEAAJgDADCAAgEA2QIAIY0CQADwAgAhjgJAAPACACGQAgEA3AIAIboCAQDcAgAhAwAAAIwBACABAACeAQAwGAAAnwEAIAMAAACMAQAgAQAAjQEAMAIAAIkBACABAAAAbQAgAQAAAG0AIAMAAABrACABAABsADACAABtACADAAAAawAgAQAAbAAwAgAAbQAgAwAAAGsAIAEAAGwAMAIAAG0AIAVOAACcBAAgTwAAnQQAIOsBAgAAAAG4AgEAAAABuQIBAAAAAQEMAACnAQAgA-sBAgAAAAG4AgEAAAABuQIBAAAAAQEMAACpAQAwAQwAAKkBADAFTgAAmgQAIE8AAJsEACDrAQIAvAMAIbgCAQC4AwAhuQIBALgDACECAAAAbQAgDAAArAEAIAPrAQIAvAMAIbgCAQC4AwAhuQIBALgDACECAAAAawAgDAAArgEAIAIAAABrACAMAACuAQAgAwAAAG0AIBMAAKcBACAUAACsAQAgAQAAAG0AIAEAAABrACAFBgAAlQQAIBkAAJgEACAaAACXBAAgfgAAlgQAIH8AAJkEACAG6AEAAJcDADDpAQAAtQEAEOoBAACXAwAw6wECANgCACG4AgEA2QIAIbkCAQDZAgAhAwAAAGsAIAEAALQBADAYAAC1AQAgAwAAAGsAIAEAAGwAMAIAAG0AIAvoAQAAlAMAMOkBAAC7AQAQ6gEAAJQDADCAAgEAAAABjQJAAP4CACGOAkAA_gIAIZACAQDpAgAhmQIAAJUDtQIitQIAAIgDACC2AgAA2wIAILcCAACWAwAgAQAAALgBACABAAAAuAEAIAroAQAAlAMAMOkBAAC7AQAQ6gEAAJQDADCAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6QIAIZkCAACVA7UCIrUCAACIAwAgtgIAANsCACABtQIAALIDACADAAAAuwEAIAEAALwBADACAAC4AQAgAwAAALsBACABAAC8AQAwAgAAuAEAIAMAAAC7AQAgAQAAvAEAMAIAALgBACAHgAIBAAAAAY0CQAAAAAGOAkAAAAABkAIBAAAAAZkCAAAAtQICtQKAAAAAAbYCAACUBAAgAQwAAMABACAHgAIBAAAAAY0CQAAAAAGOAkAAAAABkAIBAAAAAZkCAAAAtQICtQKAAAAAAbYCAACUBAAgAQwAAMIBADABDAAAwgEAMAeAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuAMAIZkCAACSBLUCIrUCgAAAAAG2AgAAkwQAIAIAAAC4AQAgDAAAxQEAIAeAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuAMAIZkCAACSBLUCIrUCgAAAAAG2AgAAkwQAIAIAAAC7AQAgDAAAxwEAIAIAAAC7AQAgDAAAxwEAIAMAAAC4AQAgEwAAwAEAIBQAAMUBACABAAAAuAEAIAEAAAC7AQAgBAYAAI8EACAZAACRBAAgGgAAkAQAILUCAACyAwAgCugBAACQAwAw6QEAAM4BABDqAQAAkAMAMIACAQDZAgAhjQJAAPACACGOAkAA8AIAIZACAQDZAgAhmQIAAJEDtQIitQIAAIUDACC2AgAA2wIAIAMAAAC7AQAgAQAAzQEAMBgAAM4BACADAAAAuwEAIAEAALwBADACAAC4AQAgJpUBAADrAgAglgEAAIoDACCXAQAAiwMAIOgBAACHAwAw6QEAANkBABDqAQAAhwMAMOsBAQAAAAGAAgEAAAABjQJAAP4CACGOAkAA_gIAIZACAQDpAgAhkQIBAOkCACGZAgEA6QIAIZoCAQDqAgAhmwIAANsCACCcAgAAiAMAIJ0CAADbAgAgngIAAIgDACCfAgEA6gIAIaACAADbAgAgoQIBAOoCACGiAgAAiAMAIKMCAQDqAgAhpAIAANsCACClAgAAiAMAIKYCAQDqAgAhpwIAANsCACCoAgAAiAMAIKkCAQDqAgAhqgIBAOoCACGrAgEA6gIAIawCAADbAgAgrQIBAOoCACGuAgAA2wIAIK8CAQDqAgAhsAIAAIgDACCxAkAAiQMAIbICQACJAwAhAQAAANEBACAMkwEAAI4DACCUAQAAjwMAIOgBAACNAwAw6QEAANMBABDqAQAAjQMAMOsBAgD8AgAh7AEBAOkCACHtAQEA6QIAIe4BAQDpAgAh7wFAAIkDACHwAQAA2wIAIPEBAQDqAgAhBJMBAACOBAAglAEAAIwEACDvAQAAsgMAIPEBAACyAwAgDZMBAACOAwAglAEAAI8DACDoAQAAjQMAMOkBAADTAQAQ6gEAAI0DADDrAQIAAAAB7AEBAOkCACHtAQEA6QIAIe4BAQDpAgAh7wFAAIkDACHwAQAA2wIAIPEBAQDqAgAhswIAAIwDACADAAAA0wEAIAEAANQBADACAADVAQAgAwAAANMBACABAADUAQAwAgAA1QEAIAEAAADTAQAgJpUBAADrAgAglgEAAIoDACCXAQAAiwMAIOgBAACHAwAw6QEAANkBABDqAQAAhwMAMOsBAQDpAgAhgAIBAOkCACGNAkAA_gIAIY4CQAD-AgAhkAIBAOkCACGRAgEA6QIAIZkCAQDpAgAhmgIBAOoCACGbAgAA2wIAIJwCAACIAwAgnQIAANsCACCeAgAAiAMAIJ8CAQDqAgAhoAIAANsCACChAgEA6gIAIaICAACIAwAgowIBAOoCACGkAgAA2wIAIKUCAACIAwAgpgIBAOoCACGnAgAA2wIAIKgCAACIAwAgqQIBAOoCACGqAgEA6gIAIasCAQDqAgAhrAIAANsCACCtAgEA6gIAIa4CAADbAgAgrwIBAOoCACGwAgAAiAMAILECQACJAwAhsgJAAIkDACEBAAAA2QEAIBWVAQAA0wMAIJYBAACMBAAglwEAAI0EACCaAgAAsgMAIJwCAACyAwAgngIAALIDACCfAgAAsgMAIKECAACyAwAgogIAALIDACCjAgAAsgMAIKUCAACyAwAgpgIAALIDACCoAgAAsgMAIKkCAACyAwAgqgIAALIDACCrAgAAsgMAIK0CAACyAwAgrwIAALIDACCwAgAAsgMAILECAACyAwAgsgIAALIDACADAAAA2QEAIAEAANsBADACAADRAQAgAQAAANMBACABAAAA2QEAIAEAAADRAQAgAwAAANkBACABAADbAQAwAgAA0QEAIAMAAADZAQAgAQAA2wEAMAIAANEBACADAAAA2QEAIAEAANsBADACAADRAQAgI5UBAACABAAglgEAAIsEACCXAQAAgQQAIOsBAQAAAAGAAgEAAAABjQJAAAAAAY4CQAAAAAGQAgEAAAABkQIBAAAAAZkCAQAAAAGaAgEAAAABmwIAAPkDACCcAoAAAAABnQIAAPoDACCeAoAAAAABnwIBAAAAAaACAAD7AwAgoQIBAAAAAaICgAAAAAGjAgEAAAABpAIAAPwDACClAoAAAAABpgIBAAAAAacCAAD9AwAgqAKAAAAAAakCAQAAAAGqAgEAAAABqwIBAAAAAawCAAD-AwAgrQIBAAAAAa4CAAD_AwAgrwIBAAAAAbACgAAAAAGxAkAAAAABsgJAAAAAAQEMAADjAQAgIOsBAQAAAAGAAgEAAAABjQJAAAAAAY4CQAAAAAGQAgEAAAABkQIBAAAAAZkCAQAAAAGaAgEAAAABmwIAAPkDACCcAoAAAAABnQIAAPoDACCeAoAAAAABnwIBAAAAAaACAAD7AwAgoQIBAAAAAaICgAAAAAGjAgEAAAABpAIAAPwDACClAoAAAAABpgIBAAAAAacCAAD9AwAgqAKAAAAAAakCAQAAAAGqAgEAAAABqwIBAAAAAawCAAD-AwAgrQIBAAAAAa4CAAD_AwAgrwIBAAAAAbACgAAAAAGxAkAAAAABsgJAAAAAAQEMAADlAQAwAQwAAOUBADABAAAA2QEAICOVAQAA6gMAIJYBAADrAwAglwEAAOwDACDrAQEAuAMAIYACAQC4AwAhjQJAANwDACGOAkAA3AMAIZACAQC4AwAhkQIBALgDACGZAgEAuAMAIZoCAQC7AwAhmwIAAOMDACCcAoAAAAABnQIAAOQDACCeAoAAAAABnwIBALsDACGgAgAA5QMAIKECAQC7AwAhogKAAAAAAaMCAQC7AwAhpAIAAOYDACClAoAAAAABpgIBALsDACGnAgAA5wMAIKgCgAAAAAGpAgEAuwMAIaoCAQC7AwAhqwIBALsDACGsAgAA6AMAIK0CAQC7AwAhrgIAAOkDACCvAgEAuwMAIbACgAAAAAGxAkAAuQMAIbICQAC5AwAhAgAAANEBACAMAADpAQAgIOsBAQC4AwAhgAIBALgDACGNAkAA3AMAIY4CQADcAwAhkAIBALgDACGRAgEAuAMAIZkCAQC4AwAhmgIBALsDACGbAgAA4wMAIJwCgAAAAAGdAgAA5AMAIJ4CgAAAAAGfAgEAuwMAIaACAADlAwAgoQIBALsDACGiAoAAAAABowIBALsDACGkAgAA5gMAIKUCgAAAAAGmAgEAuwMAIacCAADnAwAgqAKAAAAAAakCAQC7AwAhqgIBALsDACGrAgEAuwMAIawCAADoAwAgrQIBALsDACGuAgAA6QMAIK8CAQC7AwAhsAKAAAAAAbECQAC5AwAhsgJAALkDACECAAAA2QEAIAwAAOsBACACAAAA2QEAIAwAAOsBACABAAAA2QEAIAMAAADRAQAgEwAA4wEAIBQAAOkBACABAAAA0QEAIAEAAADZAQAgFQYAAOADACAZAADiAwAgGgAA4QMAIJoCAACyAwAgnAIAALIDACCeAgAAsgMAIJ8CAACyAwAgoQIAALIDACCiAgAAsgMAIKMCAACyAwAgpQIAALIDACCmAgAAsgMAIKgCAACyAwAgqQIAALIDACCqAgAAsgMAIKsCAACyAwAgrQIAALIDACCvAgAAsgMAILACAACyAwAgsQIAALIDACCyAgAAsgMAICPoAQAAhAMAMOkBAADzAQAQ6gEAAIQDADDrAQEA2QIAIYACAQDZAgAhjQJAAPACACGOAkAA8AIAIZACAQDZAgAhkQIBANkCACGZAgEA2QIAIZoCAQDcAgAhmwIAANsCACCcAgAAhQMAIJ0CAADbAgAgngIAAIUDACCfAgEA3AIAIaACAADbAgAgoQIBANwCACGiAgAAhQMAIKMCAQDcAgAhpAIAANsCACClAgAAhQMAIKYCAQDcAgAhpwIAANsCACCoAgAAhQMAIKkCAQDcAgAhqgIBANwCACGrAgEA3AIAIawCAADbAgAgrQIBANwCACGuAgAA2wIAIK8CAQDcAgAhsAIAAIUDACCxAkAA2gIAIbICQADaAgAhAwAAANkBACABAADyAQAwGAAA8wEAIAMAAADZAQAgAQAA2wEAMAIAANEBACAK6AEAAIIDADDpAQAA-QEAEOoBAACCAwAw6wEBAAAAAY0CQAD-AgAhjgJAAP4CACGPAgEAAAABkAIBAOkCACGRAgEA6QIAIZICAACDAwAgAQAAAPYBACABAAAA9gEAIAroAQAAggMAMOkBAAD5AQAQ6gEAAIIDADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACGPAgEA6QIAIZACAQDpAgAhkQIBAOkCACGSAgAAgwMAIAADAAAA-QEAIAEAAPoBADACAAD2AQAgAwAAAPkBACABAAD6AQAwAgAA9gEAIAMAAAD5AQAgAQAA-gEAMAIAAPYBACAH6wEBAAAAAY0CQAAAAAGOAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgKAAAAAAQEMAAD-AQAgB-sBAQAAAAGNAkAAAAABjgJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICgAAAAAEBDAAAgAIAMAEMAACAAgAwB-sBAQC4AwAhjQJAANwDACGOAkAA3AMAIY8CAQC4AwAhkAIBALgDACGRAgEAuAMAIZICgAAAAAECAAAA9gEAIAwAAIMCACAH6wEBALgDACGNAkAA3AMAIY4CQADcAwAhjwIBALgDACGQAgEAuAMAIZECAQC4AwAhkgKAAAAAAQIAAAD5AQAgDAAAhQIAIAIAAAD5AQAgDAAAhQIAIAMAAAD2AQAgEwAA_gEAIBQAAIMCACABAAAA9gEAIAEAAAD5AQAgAwYAAN0DACAZAADfAwAgGgAA3gMAIAroAQAA_wIAMOkBAACMAgAQ6gEAAP8CADDrAQEA2QIAIY0CQADwAgAhjgJAAPACACGPAgEA2QIAIZACAQDZAgAhkQIBANkCACGSAgAAgAMAIAMAAAD5AQAgAQAAiwIAMBgAAIwCACADAAAA-QEAIAEAAPoBADACAAD2AQAgDugBAAD5AgAw6QEAAJICABDqAQAA-QIAMOsBAQAAAAGEAgEAAAABhgIAAPoChgIihwIAAfsCACGIAgEA6QIAIYkCAQDpAgAhigICAPwCACGLAgIA_QIAIYwCAgD9AgAhjQJAAP4CACGOAkAA_gIAIQEAAACPAgAgAQAAAI8CACAO6AEAAPkCADDpAQAAkgIAEOoBAAD5AgAw6wEBAOkCACGEAgEA6QIAIYYCAAD6AoYCIocCAAH7AgAhiAIBAOkCACGJAgEA6QIAIYoCAgD8AgAhiwICAP0CACGMAgIA_QIAIY0CQAD-AgAhjgJAAP4CACECiwIAALIDACCMAgAAsgMAIAMAAACSAgAgAQAAkwIAMAIAAI8CACADAAAAkgIAIAEAAJMCADACAACPAgAgAwAAAJICACABAACTAgAwAgAAjwIAIAvrAQEAAAABhAIBAAAAAYYCAAAAhgIChwIAAQAAAYgCAQAAAAGJAgEAAAABigICAAAAAYsCAgAAAAGMAgIAAAABjQJAAAAAAY4CQAAAAAEBDAAAlwIAIAvrAQEAAAABhAIBAAAAAYYCAAAAhgIChwIAAQAAAYgCAQAAAAGJAgEAAAABigICAAAAAYsCAgAAAAGMAgIAAAABjQJAAAAAAY4CQAAAAAEBDAAAmQIAMAEMAACZAgAwC-sBAQC4AwAhhAIBALgDACGGAgAA2QOGAiKHAgAB2gMAIYgCAQC4AwAhiQIBALgDACGKAgIAvAMAIYsCAgDbAwAhjAICANsDACGNAkAA3AMAIY4CQADcAwAhAgAAAI8CACAMAACcAgAgC-sBAQC4AwAhhAIBALgDACGGAgAA2QOGAiKHAgAB2gMAIYgCAQC4AwAhiQIBALgDACGKAgIAvAMAIYsCAgDbAwAhjAICANsDACGNAkAA3AMAIY4CQADcAwAhAgAAAJICACAMAACeAgAgAgAAAJICACAMAACeAgAgAwAAAI8CACATAACXAgAgFAAAnAIAIAEAAACPAgAgAQAAAJICACAHBgAA1AMAIBkAANcDACAaAADWAwAgfgAA1QMAIH8AANgDACCLAgAAsgMAIIwCAACyAwAgDugBAADsAgAw6QEAAKUCABDqAQAA7AIAMOsBAQDZAgAhhAIBANkCACGGAgAA7QKGAiKHAgAB7gIAIYgCAQDZAgAhiQIBANkCACGKAgIA2AIAIYsCAgDvAgAhjAICAO8CACGNAkAA8AIAIY4CQADwAgAhAwAAAJICACABAACkAgAwGAAApQIAIAMAAACSAgAgAQAAkwIAMAIAAI8CACAGkgEAAOsCACDoAQAA6AIAMOkBAACrAgAQ6gEAAOgCADDxAQEA6gIAIYACAQAAAAEBAAAAqAIAIAEAAACoAgAgBpIBAADrAgAg6AEAAOgCADDpAQAAqwIAEOoBAADoAgAw8QEBAOoCACGAAgEA6QIAIQKSAQAA0wMAIPEBAACyAwAgAwAAAKsCACABAACsAgAwAgAAqAIAIAMAAACrAgAgAQAArAIAMAIAAKgCACADAAAAqwIAIAEAAKwCADACAACoAgAgA5IBAADSAwAg8QEBAAAAAYACAQAAAAEBDAAAsAIAIALxAQEAAAABgAIBAAAAAQEMAACyAgAwAQwAALICADADkgEAAMUDACDxAQEAuwMAIYACAQC4AwAhAgAAAKgCACAMAAC1AgAgAvEBAQC7AwAhgAIBALgDACECAAAAqwIAIAwAALcCACACAAAAqwIAIAwAALcCACADAAAAqAIAIBMAALACACAUAAC1AgAgAQAAAKgCACABAAAAqwIAIAQGAADCAwAgGQAAxAMAIBoAAMMDACDxAQAAsgMAIAXoAQAA5wIAMOkBAAC-AgAQ6gEAAOcCADDxAQEA3AIAIYACAQDZAgAhAwAAAKsCACABAAC9AgAwGAAAvgIAIAMAAACrAgAgAQAArAIAMAIAAKgCACABAAAA1QEAIAEAAADVAQAgAwAAANMBACABAADUAQAwAgAA1QEAIAMAAADTAQAgAQAA1AEAMAIAANUBACADAAAA0wEAIAEAANQBADACAADVAQAgCZMBAADAAwAglAEAAMEDACDrAQIAAAAB7AEBAAAAAe0BAQAAAAHuAQEAAAAB7wFAAAAAAfABAAC_AwAg8QEBAAAAAQEMAADGAgAgB-sBAgAAAAHsAQEAAAAB7QEBAAAAAe4BAQAAAAHvAUAAAAAB8AEAAL8DACDxAQEAAAABAQwAAMgCADABDAAAyAIAMAmTAQAAvQMAIJQBAAC-AwAg6wECALwDACHsAQEAuAMAIe0BAQC4AwAh7gEBALgDACHvAUAAuQMAIfABAAC6AwAg8QEBALsDACECAAAA1QEAIAwAAMsCACAH6wECALwDACHsAQEAuAMAIe0BAQC4AwAh7gEBALgDACHvAUAAuQMAIfABAAC6AwAg8QEBALsDACECAAAA0wEAIAwAAM0CACACAAAA0wEAIAwAAM0CACADAAAA1QEAIBMAAMYCACAUAADLAgAgAQAAANUBACABAAAA0wEAIAcGAACzAwAgGQAAtgMAIBoAALUDACB-AAC0AwAgfwAAtwMAIO8BAACyAwAg8QEAALIDACAK6AEAANcCADDpAQAA1AIAEOoBAADXAgAw6wECANgCACHsAQEA2QIAIe0BAQDZAgAh7gEBANkCACHvAUAA2gIAIfABAADbAgAg8QEBANwCACEDAAAA0wEAIAEAANMCADAYAADUAgAgAwAAANMBACABAADUAQAwAgAA1QEAIAroAQAA1wIAMOkBAADUAgAQ6gEAANcCADDrAQIA2AIAIewBAQDZAgAh7QEBANkCACHuAQEA2QIAIe8BQADaAgAh8AEAANsCACDxAQEA3AIAIQ0GAADjAgAgGQAA4wIAIBoAAOMCACB-AADmAgAgfwAA4wIAIPIBAgAAAAHzAQIAAAAE9AECAAAABPUBAgAAAAH2AQIAAAAB9wECAAAAAfgBAgAAAAH8AQIA5QIAIQ4GAADjAgAgGQAA5AIAIBoAAOQCACDyAQEAAAAB8wEBAAAABPQBAQAAAAT1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAAB_AEBAOICACELBgAA3gIAIBkAAOECACAaAADhAgAg8gFAAAAAAfMBQAAAAAX0AUAAAAAF9QFAAAAAAfYBQAAAAAH3AUAAAAAB-AFAAAAAAfwBQADgAgAhBPIBAQAAAAX9AQEAAAAB_gEBAAAABP8BAQAAAAQOBgAA3gIAIBkAAN8CACAaAADfAgAg8gEBAAAAAfMBAQAAAAX0AQEAAAAF9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wEBAAAAAfwBAQDdAgAhDgYAAN4CACAZAADfAgAgGgAA3wIAIPIBAQAAAAHzAQEAAAAF9AEBAAAABfUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBAQAAAAH8AQEA3QIAIQjyAQIAAAAB8wECAAAABfQBAgAAAAX1AQIAAAAB9gECAAAAAfcBAgAAAAH4AQIAAAAB_AECAN4CACEL8gEBAAAAAfMBAQAAAAX0AQEAAAAF9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wEBAAAAAfwBAQDfAgAhCwYAAN4CACAZAADhAgAgGgAA4QIAIPIBQAAAAAHzAUAAAAAF9AFAAAAABfUBQAAAAAH2AUAAAAAB9wFAAAAAAfgBQAAAAAH8AUAA4AIAIQjyAUAAAAAB8wFAAAAABfQBQAAAAAX1AUAAAAAB9gFAAAAAAfcBQAAAAAH4AUAAAAAB_AFAAOECACEOBgAA4wIAIBkAAOQCACAaAADkAgAg8gEBAAAAAfMBAQAAAAT0AQEAAAAE9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wEBAAAAAfwBAQDiAgAhCPIBAgAAAAHzAQIAAAAE9AECAAAABPUBAgAAAAH2AQIAAAAB9wECAAAAAfgBAgAAAAH8AQIA4wIAIQvyAQEAAAAB8wEBAAAABPQBAQAAAAT1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAAB_AEBAOQCACENBgAA4wIAIBkAAOMCACAaAADjAgAgfgAA5gIAIH8AAOMCACDyAQIAAAAB8wECAAAABPQBAgAAAAT1AQIAAAAB9gECAAAAAfcBAgAAAAH4AQIAAAAB_AECAOUCACEI8gEIAAAAAfMBCAAAAAT0AQgAAAAE9QEIAAAAAfYBCAAAAAH3AQgAAAAB-AEIAAAAAfwBCADmAgAhBegBAADnAgAw6QEAAL4CABDqAQAA5wIAMPEBAQDcAgAhgAIBANkCACEGkgEAAOsCACDoAQAA6AIAMOkBAACrAgAQ6gEAAOgCADDxAQEA6gIAIYACAQDpAgAhC_IBAQAAAAHzAQEAAAAE9AEBAAAABPUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBAQAAAAH8AQEA5AIAIQvyAQEAAAAB8wEBAAAABfQBAQAAAAX1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAAB_AEBAN8CACEDgQIAANMBACCCAgAA0wEAIIMCAADTAQAgDugBAADsAgAw6QEAAKUCABDqAQAA7AIAMOsBAQDZAgAhhAIBANkCACGGAgAA7QKGAiKHAgAB7gIAIYgCAQDZAgAhiQIBANkCACGKAgIA2AIAIYsCAgDvAgAhjAICAO8CACGNAkAA8AIAIY4CQADwAgAhBwYAAOMCACAZAAD4AgAgGgAA-AIAIPIBAAAAhgIC8wEAAACGAgj0AQAAAIYCCPwBAAD3AoYCIgcGAADjAgAgGQAA9gIAIBoAAPYCACDyAQABAAAB8wEAAQAABPQBAAEAAAT8AQAB9QIAIQ0GAADeAgAgGQAA3gIAIBoAAN4CACB-AAD0AgAgfwAA3gIAIPIBAgAAAAHzAQIAAAAF9AECAAAABfUBAgAAAAH2AQIAAAAB9wECAAAAAfgBAgAAAAH8AQIA8wIAIQsGAADjAgAgGQAA8gIAIBoAAPICACDyAUAAAAAB8wFAAAAABPQBQAAAAAT1AUAAAAAB9gFAAAAAAfcBQAAAAAH4AUAAAAAB_AFAAPECACELBgAA4wIAIBkAAPICACAaAADyAgAg8gFAAAAAAfMBQAAAAAT0AUAAAAAE9QFAAAAAAfYBQAAAAAH3AUAAAAAB-AFAAAAAAfwBQADxAgAhCPIBQAAAAAHzAUAAAAAE9AFAAAAABPUBQAAAAAH2AUAAAAAB9wFAAAAAAfgBQAAAAAH8AUAA8gIAIQ0GAADeAgAgGQAA3gIAIBoAAN4CACB-AAD0AgAgfwAA3gIAIPIBAgAAAAHzAQIAAAAF9AECAAAABfUBAgAAAAH2AQIAAAAB9wECAAAAAfgBAgAAAAH8AQIA8wIAIQjyAQgAAAAB8wEIAAAABfQBCAAAAAX1AQgAAAAB9gEIAAAAAfcBCAAAAAH4AQgAAAAB_AEIAPQCACEHBgAA4wIAIBkAAPYCACAaAAD2AgAg8gEAAQAAAfMBAAEAAAT0AQABAAAE_AEAAfUCACEE8gEAAQAAAfMBAAEAAAT0AQABAAAE_AEAAfYCACEHBgAA4wIAIBkAAPgCACAaAAD4AgAg8gEAAACGAgLzAQAAAIYCCPQBAAAAhgII_AEAAPcChgIiBPIBAAAAhgIC8wEAAACGAgj0AQAAAIYCCPwBAAD4AoYCIg7oAQAA-QIAMOkBAACSAgAQ6gEAAPkCADDrAQEA6QIAIYQCAQDpAgAhhgIAAPoChgIihwIAAfsCACGIAgEA6QIAIYkCAQDpAgAhigICAPwCACGLAgIA_QIAIYwCAgD9AgAhjQJAAP4CACGOAkAA_gIAIQTyAQAAAIYCAvMBAAAAhgII9AEAAACGAgj8AQAA-AKGAiIE8gEAAQAAAfMBAAEAAAT0AQABAAAE_AEAAfYCACEI8gECAAAAAfMBAgAAAAT0AQIAAAAE9QECAAAAAfYBAgAAAAH3AQIAAAAB-AECAAAAAfwBAgDjAgAhCPIBAgAAAAHzAQIAAAAF9AECAAAABfUBAgAAAAH2AQIAAAAB9wECAAAAAfgBAgAAAAH8AQIA3gIAIQjyAUAAAAAB8wFAAAAABPQBQAAAAAT1AUAAAAAB9gFAAAAAAfcBQAAAAAH4AUAAAAAB_AFAAPICACEK6AEAAP8CADDpAQAAjAIAEOoBAAD_AgAw6wEBANkCACGNAkAA8AIAIY4CQADwAgAhjwIBANkCACGQAgEA2QIAIZECAQDZAgAhkgIAAIADACAPBgAA4wIAIBkAAIEDACAaAACBAwAg8gGAAAAAAfUBgAAAAAH2AYAAAAAB9wGAAAAAAfgBgAAAAAH8AYAAAAABkwIBAAAAAZQCAQAAAAGVAgEAAAABlgKAAAAAAZcCgAAAAAGYAoAAAAABDPIBgAAAAAH1AYAAAAAB9gGAAAAAAfcBgAAAAAH4AYAAAAAB_AGAAAAAAZMCAQAAAAGUAgEAAAABlQIBAAAAAZYCgAAAAAGXAoAAAAABmAKAAAAAAQroAQAAggMAMOkBAAD5AQAQ6gEAAIIDADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACGPAgEA6QIAIZACAQDpAgAhkQIBAOkCACGSAgAAgwMAIAzyAYAAAAAB9QGAAAAAAfYBgAAAAAH3AYAAAAAB-AGAAAAAAfwBgAAAAAGTAgEAAAABlAIBAAAAAZUCAQAAAAGWAoAAAAABlwKAAAAAAZgCgAAAAAEj6AEAAIQDADDpAQAA8wEAEOoBAACEAwAw6wEBANkCACGAAgEA2QIAIY0CQADwAgAhjgJAAPACACGQAgEA2QIAIZECAQDZAgAhmQIBANkCACGaAgEA3AIAIZsCAADbAgAgnAIAAIUDACCdAgAA2wIAIJ4CAACFAwAgnwIBANwCACGgAgAA2wIAIKECAQDcAgAhogIAAIUDACCjAgEA3AIAIaQCAADbAgAgpQIAAIUDACCmAgEA3AIAIacCAADbAgAgqAIAAIUDACCpAgEA3AIAIaoCAQDcAgAhqwIBANwCACGsAgAA2wIAIK0CAQDcAgAhrgIAANsCACCvAgEA3AIAIbACAACFAwAgsQJAANoCACGyAkAA2gIAIQ8GAADeAgAgGQAAhgMAIBoAAIYDACDyAYAAAAAB9QGAAAAAAfYBgAAAAAH3AYAAAAAB-AGAAAAAAfwBgAAAAAGTAgEAAAABlAIBAAAAAZUCAQAAAAGWAoAAAAABlwKAAAAAAZgCgAAAAAEM8gGAAAAAAfUBgAAAAAH2AYAAAAAB9wGAAAAAAfgBgAAAAAH8AYAAAAABkwIBAAAAAZQCAQAAAAGVAgEAAAABlgKAAAAAAZcCgAAAAAGYAoAAAAABJpUBAADrAgAglgEAAIoDACCXAQAAiwMAIOgBAACHAwAw6QEAANkBABDqAQAAhwMAMOsBAQDpAgAhgAIBAOkCACGNAkAA_gIAIY4CQAD-AgAhkAIBAOkCACGRAgEA6QIAIZkCAQDpAgAhmgIBAOoCACGbAgAA2wIAIJwCAACIAwAgnQIAANsCACCeAgAAiAMAIJ8CAQDqAgAhoAIAANsCACChAgEA6gIAIaICAACIAwAgowIBAOoCACGkAgAA2wIAIKUCAACIAwAgpgIBAOoCACGnAgAA2wIAIKgCAACIAwAgqQIBAOoCACGqAgEA6gIAIasCAQDqAgAhrAIAANsCACCtAgEA6gIAIa4CAADbAgAgrwIBAOoCACGwAgAAiAMAILECQACJAwAhsgJAAIkDACEM8gGAAAAAAfUBgAAAAAH2AYAAAAAB9wGAAAAAAfgBgAAAAAH8AYAAAAABkwIBAAAAAZQCAQAAAAGVAgEAAAABlgKAAAAAAZcCgAAAAAGYAoAAAAABCPIBQAAAAAHzAUAAAAAF9AFAAAAABfUBQAAAAAH2AUAAAAAB9wFAAAAAAfgBQAAAAAH8AUAA4QIAISiVAQAA6wIAIJYBAACKAwAglwEAAIsDACDoAQAAhwMAMOkBAADZAQAQ6gEAAIcDADDrAQEA6QIAIYACAQDpAgAhjQJAAP4CACGOAkAA_gIAIZACAQDpAgAhkQIBAOkCACGZAgEA6QIAIZoCAQDqAgAhmwIAANsCACCcAgAAiAMAIJ0CAADbAgAgngIAAIgDACCfAgEA6gIAIaACAADbAgAgoQIBAOoCACGiAgAAiAMAIKMCAQDqAgAhpAIAANsCACClAgAAiAMAIKYCAQDqAgAhpwIAANsCACCoAgAAiAMAIKkCAQDqAgAhqgIBAOoCACGrAgEA6gIAIawCAADbAgAgrQIBAOoCACGuAgAA2wIAIK8CAQDqAgAhsAIAAIgDACCxAkAAiQMAIbICQACJAwAh0wIAANkBACDUAgAA2QEAIAOBAgAA2QEAIIICAADZAQAggwIAANkBACAC7QEBAAAAAe4BAQAAAAEMkwEAAI4DACCUAQAAjwMAIOgBAACNAwAw6QEAANMBABDqAQAAjQMAMOsBAgD8AgAh7AEBAOkCACHtAQEA6QIAIe4BAQDpAgAh7wFAAIkDACHwAQAA2wIAIPEBAQDqAgAhCJIBAADrAgAg6AEAAOgCADDpAQAAqwIAEOoBAADoAgAw8QEBAOoCACGAAgEA6QIAIdMCAACrAgAg1AIAAKsCACAolQEAAOsCACCWAQAAigMAIJcBAACLAwAg6AEAAIcDADDpAQAA2QEAEOoBAACHAwAw6wEBAOkCACGAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6QIAIZECAQDpAgAhmQIBAOkCACGaAgEA6gIAIZsCAADbAgAgnAIAAIgDACCdAgAA2wIAIJ4CAACIAwAgnwIBAOoCACGgAgAA2wIAIKECAQDqAgAhogIAAIgDACCjAgEA6gIAIaQCAADbAgAgpQIAAIgDACCmAgEA6gIAIacCAADbAgAgqAIAAIgDACCpAgEA6gIAIaoCAQDqAgAhqwIBAOoCACGsAgAA2wIAIK0CAQDqAgAhrgIAANsCACCvAgEA6gIAIbACAACIAwAgsQJAAIkDACGyAkAAiQMAIdMCAADZAQAg1AIAANkBACAK6AEAAJADADDpAQAAzgEAEOoBAACQAwAwgAIBANkCACGNAkAA8AIAIY4CQADwAgAhkAIBANkCACGZAgAAkQO1AiK1AgAAhQMAILYCAADbAgAgBwYAAOMCACAZAACTAwAgGgAAkwMAIPIBAAAAtQIC8wEAAAC1Agj0AQAAALUCCPwBAACSA7UCIgcGAADjAgAgGQAAkwMAIBoAAJMDACDyAQAAALUCAvMBAAAAtQII9AEAAAC1Agj8AQAAkgO1AiIE8gEAAAC1AgLzAQAAALUCCPQBAAAAtQII_AEAAJMDtQIiCugBAACUAwAw6QEAALsBABDqAQAAlAMAMIACAQDpAgAhjQJAAP4CACGOAkAA_gIAIZACAQDpAgAhmQIAAJUDtQIitQIAAIgDACC2AgAA2wIAIATyAQAAALUCAvMBAAAAtQII9AEAAAC1Agj8AQAAkwO1AiICkAIBAAAAAZkCAAAAtQICBugBAACXAwAw6QEAALUBABDqAQAAlwMAMOsBAgDYAgAhuAIBANkCACG5AgEA2QIAIQjoAQAAmAMAMOkBAACfAQAQ6gEAAJgDADCAAgEA2QIAIY0CQADwAgAhjgJAAPACACGQAgEA3AIAIboCAQDcAgAhCU0AAJoDACDoAQAAmQMAMOkBAACMAQAQ6gEAAJkDADCAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6gIAIboCAQDqAgAhA4ECAABrACCCAgAAawAggwIAAGsAIAnoAQAAmwMAMOkBAACGAQAQ6gEAAJsDADCAAgEA2QIAIY0CQADwAgAhjgJAAPACACG6AgEA3AIAIbsCAQDZAgAhvAIBANkCACEKTQAAmgMAIOgBAACcAwAw6QEAAHMAEOoBAACcAwAwgAIBAOkCACGNAkAA_gIAIY4CQAD-AgAhugIBAOoCACG7AgEA6QIAIbwCAQDpAgAhArgCAQAAAAG5AgEAAAABCE4AAJ8DACBPAACgAwAg6AEAAJ4DADDpAQAAawAQ6gEAAJ4DADDrAQIA_AIAIbgCAQDpAgAhuQIBAOkCACELTQAAmgMAIOgBAACZAwAw6QEAAIwBABDqAQAAmQMAMIACAQDpAgAhjQJAAP4CACGOAkAA_gIAIZACAQDqAgAhugIBAOoCACHTAgAAjAEAINQCAACMAQAgDE0AAJoDACDoAQAAnAMAMOkBAABzABDqAQAAnAMAMIACAQDpAgAhjQJAAP4CACGOAkAA_gIAIboCAQDqAgAhuwIBAOkCACG8AgEA6QIAIdMCAABzACDUAgAAcwAgCegBAAChAwAw6QEAAGYAEOoBAAChAwAw6wEBANkCACGNAkAA8AIAIY4CQADwAgAhvgIBANkCACG_AgEA2QIAIcACQADwAgAhCegBAACiAwAw6QEAAFMAEOoBAACiAwAw6wEBAOkCACGNAkAA_gIAIY4CQAD-AgAhvgIBAOkCACG_AgEA6QIAIcACQAD-AgAhAr4CAQAAAAG_AgEAAAABEOgBAACkAwAw6QEAAE0AEOoBAACkAwAw6wEBANkCACGNAkAA8AIAIY4CQADwAgAhwgIBANkCACHDAgEA2QIAIcQCAQDZAgAhxQIBANwCACHGAgEA3AIAIccCQADaAgAhyAJAANoCACHJAgEA3AIAIcoCAQDcAgAhywIBANwCACEL6AEAAKUDADDpAQAANwAQ6gEAAKUDADDrAQEA2QIAIY0CQADwAgAhjgJAAPACACHAAkAA8AIAIcICAQDZAgAhzAIBANkCACHNAgEA3AIAIc4CAQDcAgAhC-gBAACmAwAw6QEAACEAEOoBAACmAwAw6wEBANkCACGEAgEA3AIAIY0CQADwAgAhjgJAAPACACG6AgEA3AIAIc8CIACnAwAh0AIBANwCACHRAgEA2QIAIQUGAADjAgAgGQAAqQMAIBoAAKkDACDyASAAAAAB_AEgAKgDACEFBgAA4wIAIBkAAKkDACAaAACpAwAg8gEgAAAAAfwBIACoAwAhAvIBIAAAAAH8ASAAqQMAIQ0EAACsAwAgBQAArQMAIOgBAACqAwAw6QEAAA4AEOoBAACqAwAw6wEBAOkCACGEAgEA6gIAIY0CQAD-AgAhjgJAAP4CACG6AgEA6gIAIc8CIACrAwAh0AIBAOoCACHRAgEA6QIAIQLyASAAAAAB_AEgAKkDACEDgQIAAAMAIIICAAADACCDAgAAAwAgA4ECAAAHACCCAgAABwAggwIAAAcAIAwDAACvAwAg6AEAAK4DADDpAQAABwAQ6gEAAK4DADDrAQEA6QIAIY0CQAD-AgAhjgJAAP4CACHAAkAA_gIAIcICAQDpAgAhzAIBAOkCACHNAgEA6gIAIc4CAQDqAgAhDwQAAKwDACAFAACtAwAg6AEAAKoDADDpAQAADgAQ6gEAAKoDADDrAQEA6QIAIYQCAQDqAgAhjQJAAP4CACGOAkAA_gIAIboCAQDqAgAhzwIgAKsDACHQAgEA6gIAIdECAQDpAgAh0wIAAA4AINQCAAAOACACwwIBAAAAAcQCAQAAAAERAwAArwMAIOgBAACxAwAw6QEAAAMAEOoBAACxAwAw6wEBAOkCACGNAkAA_gIAIY4CQAD-AgAhwgIBAOkCACHDAgEA6QIAIcQCAQDpAgAhxQIBAOoCACHGAgEA6gIAIccCQACJAwAhyAJAAIkDACHJAgEA6gIAIcoCAQDqAgAhywIBAOoCACEAAAAAAAAB2AIBAAAAAQHYAkAAAAABAtgCAQAAAATeAgEAAAAFAdgCAQAAAAEF2AICAAAAAd8CAgAAAAHgAgIAAAAB4QICAAAAAeICAgAAAAEFEwAAkgUAIBQAAJgFACDVAgAAkwUAINYCAACXBQAg2wIAAKgCACAFEwAAkAUAIBQAAJUFACDVAgAAkQUAINYCAACUBQAg2wIAANEBACAB2AIBAAAABAMTAACSBQAg1QIAAJMFACDbAgAAqAIAIAMTAACQBQAg1QIAAJEFACDbAgAA0QEAIAAAAAsTAADGAwAwFAAAywMAMNUCAADHAwAw1gIAAMgDADDXAgAAyQMAINgCAADKAwAw2QIAAMoDADDaAgAAygMAMNsCAADKAwAw3AIAAMwDADDdAgAAzQMAMAeUAQAAwQMAIOsBAgAAAAHtAQEAAAAB7gEBAAAAAe8BQAAAAAHwAQAAvwMAIPEBAQAAAAECAAAA1QEAIBMAANEDACADAAAA1QEAIBMAANEDACAUAADQAwAgAQwAAI8FADANkwEAAI4DACCUAQAAjwMAIOgBAACNAwAw6QEAANMBABDqAQAAjQMAMOsBAgAAAAHsAQEA6QIAIe0BAQDpAgAh7gEBAOkCACHvAUAAiQMAIfABAADbAgAg8QEBAOoCACGzAgAAjAMAIAIAAADVAQAgDAAA0AMAIAIAAADOAwAgDAAAzwMAIAroAQAAzQMAMOkBAADOAwAQ6gEAAM0DADDrAQIA_AIAIewBAQDpAgAh7QEBAOkCACHuAQEA6QIAIe8BQACJAwAh8AEAANsCACDxAQEA6gIAIQroAQAAzQMAMOkBAADOAwAQ6gEAAM0DADDrAQIA_AIAIewBAQDpAgAh7QEBAOkCACHuAQEA6QIAIe8BQACJAwAh8AEAANsCACDxAQEA6gIAIQbrAQIAvAMAIe0BAQC4AwAh7gEBALgDACHvAUAAuQMAIfABAAC6AwAg8QEBALsDACEHlAEAAL4DACDrAQIAvAMAIe0BAQC4AwAh7gEBALgDACHvAUAAuQMAIfABAAC6AwAg8QEBALsDACEHlAEAAMEDACDrAQIAAAAB7QEBAAAAAe4BAQAAAAHvAUAAAAAB8AEAAL8DACDxAQEAAAABBBMAAMYDADDVAgAAxwMAMNcCAADJAwAg2wIAAMoDADAAAAAAAAAB2AIAAACGAgIB2AIAAQAAAQXYAgIAAAAB3wICAAAAAeACAgAAAAHhAgIAAAAB4gICAAAAAQHYAkAAAAABAAAAAAAAAtgCAQAAAATeAgEAAAAFAtgCAQAAAATeAgEAAAAFAtgCAQAAAATeAgEAAAAFAtgCAQAAAATeAgEAAAAFAtgCAQAAAATeAgEAAAAFAtgCAQAAAATeAgEAAAAFAtgCAQAAAATeAgEAAAAFCxMAAIIEADAUAACHBAAw1QIAAIMEADDWAgAAhgQAMNcCAACEBAAg2AIAAMoDADDZAgAAygMAMNoCAADKAwAw2wIAAMoDADDcAgAAiAQAMN0CAADNAwAwBxMAAIgFACAUAACNBQAg1QIAAIkFACDWAgAAjAUAINkCAADZAQAg2gIAANkBACDbAgAA0QEAIAsTAADtAwAwFAAA8gMAMNUCAADuAwAw1gIAAO8DADDXAgAA8AMAINgCAADxAwAw2QIAAPEDADDaAgAA8QMAMNsCAADxAwAw3AIAAPMDADDdAgAA9AMAMCGVAQAAgAQAIJcBAACBBAAg6wEBAAAAAYACAQAAAAGNAkAAAAABjgJAAAAAAZACAQAAAAGRAgEAAAABmQIBAAAAAZoCAQAAAAGbAgAA-QMAIJwCgAAAAAGdAgAA-gMAIJ4CgAAAAAGfAgEAAAABoAIAAPsDACChAgEAAAABogKAAAAAAaMCAQAAAAGkAgAA_AMAIKUCgAAAAAGmAgEAAAABpwIAAP0DACCoAoAAAAABqgIBAAAAAasCAQAAAAGsAgAA_gMAIK0CAQAAAAGuAgAA_wMAIK8CAQAAAAGwAoAAAAABsQJAAAAAAbICQAAAAAECAAAA0QEAIBMAAPgDACADAAAA0QEAIBMAAPgDACAUAAD3AwAgAQwAAIsFADAmlQEAAOsCACCWAQAAigMAIJcBAACLAwAg6AEAAIcDADDpAQAA2QEAEOoBAACHAwAw6wEBAAAAAYACAQAAAAGNAkAA_gIAIY4CQAD-AgAhkAIBAOkCACGRAgEA6QIAIZkCAQDpAgAhmgIBAOoCACGbAgAA2wIAIJwCAACIAwAgnQIAANsCACCeAgAAiAMAIJ8CAQDqAgAhoAIAANsCACChAgEA6gIAIaICAACIAwAgowIBAOoCACGkAgAA2wIAIKUCAACIAwAgpgIBAOoCACGnAgAA2wIAIKgCAACIAwAgqQIBAOoCACGqAgEA6gIAIasCAQDqAgAhrAIAANsCACCtAgEA6gIAIa4CAADbAgAgrwIBAOoCACGwAgAAiAMAILECQACJAwAhsgJAAIkDACECAAAA0QEAIAwAAPcDACACAAAA9QMAIAwAAPYDACAj6AEAAPQDADDpAQAA9QMAEOoBAAD0AwAw6wEBAOkCACGAAgEA6QIAIY0CQAD-AgAhjgJAAP4CACGQAgEA6QIAIZECAQDpAgAhmQIBAOkCACGaAgEA6gIAIZsCAADbAgAgnAIAAIgDACCdAgAA2wIAIJ4CAACIAwAgnwIBAOoCACGgAgAA2wIAIKECAQDqAgAhogIAAIgDACCjAgEA6gIAIaQCAADbAgAgpQIAAIgDACCmAgEA6gIAIacCAADbAgAgqAIAAIgDACCpAgEA6gIAIaoCAQDqAgAhqwIBAOoCACGsAgAA2wIAIK0CAQDqAgAhrgIAANsCACCvAgEA6gIAIbACAACIAwAgsQJAAIkDACGyAkAAiQMAISPoAQAA9AMAMOkBAAD1AwAQ6gEAAPQDADDrAQEA6QIAIYACAQDpAgAhjQJAAP4CACGOAkAA_gIAIZACAQDpAgAhkQIBAOkCACGZAgEA6QIAIZoCAQDqAgAhmwIAANsCACCcAgAAiAMAIJ0CAADbAgAgngIAAIgDACCfAgEA6gIAIaACAADbAgAgoQIBAOoCACGiAgAAiAMAIKMCAQDqAgAhpAIAANsCACClAgAAiAMAIKYCAQDqAgAhpwIAANsCACCoAgAAiAMAIKkCAQDqAgAhqgIBAOoCACGrAgEA6gIAIawCAADbAgAgrQIBAOoCACGuAgAA2wIAIK8CAQDqAgAhsAIAAIgDACCxAkAAiQMAIbICQACJAwAhH-sBAQC4AwAhgAIBALgDACGNAkAA3AMAIY4CQADcAwAhkAIBALgDACGRAgEAuAMAIZkCAQC4AwAhmgIBALsDACGbAgAA4wMAIJwCgAAAAAGdAgAA5AMAIJ4CgAAAAAGfAgEAuwMAIaACAADlAwAgoQIBALsDACGiAoAAAAABowIBALsDACGkAgAA5gMAIKUCgAAAAAGmAgEAuwMAIacCAADnAwAgqAKAAAAAAaoCAQC7AwAhqwIBALsDACGsAgAA6AMAIK0CAQC7AwAhrgIAAOkDACCvAgEAuwMAIbACgAAAAAGxAkAAuQMAIbICQAC5AwAhIZUBAADqAwAglwEAAOwDACDrAQEAuAMAIYACAQC4AwAhjQJAANwDACGOAkAA3AMAIZACAQC4AwAhkQIBALgDACGZAgEAuAMAIZoCAQC7AwAhmwIAAOMDACCcAoAAAAABnQIAAOQDACCeAoAAAAABnwIBALsDACGgAgAA5QMAIKECAQC7AwAhogKAAAAAAaMCAQC7AwAhpAIAAOYDACClAoAAAAABpgIBALsDACGnAgAA5wMAIKgCgAAAAAGqAgEAuwMAIasCAQC7AwAhrAIAAOgDACCtAgEAuwMAIa4CAADpAwAgrwIBALsDACGwAoAAAAABsQJAALkDACGyAkAAuQMAISGVAQAAgAQAIJcBAACBBAAg6wEBAAAAAYACAQAAAAGNAkAAAAABjgJAAAAAAZACAQAAAAGRAgEAAAABmQIBAAAAAZoCAQAAAAGbAgAA-QMAIJwCgAAAAAGdAgAA-gMAIJ4CgAAAAAGfAgEAAAABoAIAAPsDACChAgEAAAABogKAAAAAAaMCAQAAAAGkAgAA_AMAIKUCgAAAAAGmAgEAAAABpwIAAP0DACCoAoAAAAABqgIBAAAAAasCAQAAAAGsAgAA_gMAIK0CAQAAAAGuAgAA_wMAIK8CAQAAAAGwAoAAAAABsQJAAAAAAbICQAAAAAEB2AIBAAAABAHYAgEAAAAEAdgCAQAAAAQB2AIBAAAABAHYAgEAAAAEAdgCAQAAAAQB2AIBAAAABAQTAACCBAAw1QIAAIMEADDXAgAAhAQAINsCAADKAwAwBBMAAO0DADDVAgAA7gMAMNcCAADwAwAg2wIAAPEDADAHkwEAAMADACDrAQIAAAAB7AEBAAAAAe4BAQAAAAHvAUAAAAAB8AEAAL8DACDxAQEAAAABAgAAANUBACATAACFBAAgAQwAAIoFADAHkwEAAMADACDrAQIAAAAB7AEBAAAAAe4BAQAAAAHvAUAAAAAB8AEAAL8DACDxAQEAAAABAwAAANUBACATAACFBAAgFAAAigQAIAIAAADVAQAgDAAAigQAIAIAAADOAwAgDAAAiQQAIAbrAQIAvAMAIewBAQC4AwAh7gEBALgDACHvAUAAuQMAIfABAAC6AwAg8QEBALsDACEHkwEAAL0DACDrAQIAvAMAIewBAQC4AwAh7gEBALgDACHvAUAAuQMAIfABAAC6AwAg8QEBALsDACEDEwAAiAUAINUCAACJBQAg2wIAANEBACAVlQEAANMDACCWAQAAjAQAIJcBAACNBAAgmgIAALIDACCcAgAAsgMAIJ4CAACyAwAgnwIAALIDACChAgAAsgMAIKICAACyAwAgowIAALIDACClAgAAsgMAIKYCAACyAwAgqAIAALIDACCpAgAAsgMAIKoCAACyAwAgqwIAALIDACCtAgAAsgMAIK8CAACyAwAgsAIAALIDACCxAgAAsgMAILICAACyAwAgAAKSAQAA0wMAIPEBAACyAwAgAAAAAdgCAAAAtQICAtgCAQAAAATeAgEAAAAFAdgCAQAAAAQAAAAAAAUTAACABQAgFAAAhgUAINUCAACBBQAg1gIAAIUFACDbAgAAiQEAIAUTAAD-BAAgFAAAgwUAINUCAAD_BAAg1gIAAIIFACDbAgAAaQAgAxMAAIAFACDVAgAAgQUAINsCAACJAQAgAxMAAP4EACDVAgAA_wQAINsCAABpACAAAAALEwAAogQAMBQAAKcEADDVAgAAowQAMNYCAACkBAAw1wIAAKUEACDYAgAApgQAMNkCAACmBAAw2gIAAKYEADDbAgAApgQAMNwCAACoBAAw3QIAAKkEADADTwAAnQQAIOsBAgAAAAG5AgEAAAABAgAAAG0AIBMAAK0EACADAAAAbQAgEwAArQQAIBQAAKwEACABDAAA_QQAMAlOAACfAwAgTwAAoAMAIOgBAACeAwAw6QEAAGsAEOoBAACeAwAw6wECAAAAAbgCAQDpAgAhuQIBAOkCACG9AgAAnQMAIAIAAABtACAMAACsBAAgAgAAAKoEACAMAACrBAAgBugBAACpBAAw6QEAAKoEABDqAQAAqQQAMOsBAgD8AgAhuAIBAOkCACG5AgEA6QIAIQboAQAAqQQAMOkBAACqBAAQ6gEAAKkEADDrAQIA_AIAIbgCAQDpAgAhuQIBAOkCACEC6wECALwDACG5AgEAuAMAIQNPAACbBAAg6wECALwDACG5AgEAuAMAIQNPAACdBAAg6wECAAAAAbkCAQAAAAEEEwAAogQAMNUCAACjBAAw1wIAAKUEACDbAgAApgQAMAAAAAALEwAAtAQAMBQAALgEADDVAgAAtQQAMNYCAAC2BAAw1wIAALcEACDYAgAApgQAMNkCAACmBAAw2gIAAKYEADDbAgAApgQAMNwCAAC5BAAw3QIAAKkEADADTgAAnAQAIOsBAgAAAAG4AgEAAAABAgAAAG0AIBMAALwEACADAAAAbQAgEwAAvAQAIBQAALsEACABDAAA_AQAMAIAAABtACAMAAC7BAAgAgAAAKoEACAMAAC6BAAgAusBAgC8AwAhuAIBALgDACEDTgAAmgQAIOsBAgC8AwAhuAIBALgDACEDTgAAnAQAIOsBAgAAAAG4AgEAAAABBBMAALQEADDVAgAAtQQAMNcCAAC3BAAg2wIAAKYEADADTQAArwQAIJACAACyAwAgugIAALIDACACTQAArwQAILoCAACyAwAgAAAAAAAABRMAAPcEACAUAAD6BAAg1QIAAPgEACDWAgAA-QQAINsCAAABACADEwAA9wQAINUCAAD4BAAg2wIAAAEAIAAAAAUTAADyBAAgFAAA9QQAINUCAADzBAAg1gIAAPQEACDbAgAAAQAgAxMAAPIEACDVAgAA8wQAINsCAAABACAAAAAB2AIgAAAAAQsTAADfBAAwFAAA5AQAMNUCAADgBAAw1gIAAOEEADDXAgAA4gQAINgCAADjBAAw2QIAAOMEADDaAgAA4wQAMNsCAADjBAAw3AIAAOUEADDdAgAA5gQAMAsTAADTBAAwFAAA2AQAMNUCAADUBAAw1gIAANUEADDXAgAA1gQAINgCAADXBAAw2QIAANcEADDaAgAA1wQAMNsCAADXBAAw3AIAANkEADDdAgAA2gQAMAfrAQEAAAABjQJAAAAAAY4CQAAAAAHAAkAAAAABzAIBAAAAAc0CAQAAAAHOAgEAAAABAgAAAAkAIBMAAN4EACADAAAACQAgEwAA3gQAIBQAAN0EACABDAAA8QQAMAwDAACvAwAg6AEAAK4DADDpAQAABwAQ6gEAAK4DADDrAQEAAAABjQJAAP4CACGOAkAA_gIAIcACQAD-AgAhwgIBAOkCACHMAgEAAAABzQIBAOoCACHOAgEA6gIAIQIAAAAJACAMAADdBAAgAgAAANsEACAMAADcBAAgC-gBAADaBAAw6QEAANsEABDqAQAA2gQAMOsBAQDpAgAhjQJAAP4CACGOAkAA_gIAIcACQAD-AgAhwgIBAOkCACHMAgEA6QIAIc0CAQDqAgAhzgIBAOoCACEL6AEAANoEADDpAQAA2wQAEOoBAADaBAAw6wEBAOkCACGNAkAA_gIAIY4CQAD-AgAhwAJAAP4CACHCAgEA6QIAIcwCAQDpAgAhzQIBAOoCACHOAgEA6gIAIQfrAQEAuAMAIY0CQADcAwAhjgJAANwDACHAAkAA3AMAIcwCAQC4AwAhzQIBALsDACHOAgEAuwMAIQfrAQEAuAMAIY0CQADcAwAhjgJAANwDACHAAkAA3AMAIcwCAQC4AwAhzQIBALsDACHOAgEAuwMAIQfrAQEAAAABjQJAAAAAAY4CQAAAAAHAAkAAAAABzAIBAAAAAc0CAQAAAAHOAgEAAAABDOsBAQAAAAGNAkAAAAABjgJAAAAAAcMCAQAAAAHEAgEAAAABxQIBAAAAAcYCAQAAAAHHAkAAAAAByAJAAAAAAckCAQAAAAHKAgEAAAABywIBAAAAAQIAAAAFACATAADqBAAgAwAAAAUAIBMAAOoEACAUAADpBAAgAQwAAPAEADASAwAArwMAIOgBAACxAwAw6QEAAAMAEOoBAACxAwAw6wEBAAAAAY0CQAD-AgAhjgJAAP4CACHCAgEA6QIAIcMCAQDpAgAhxAIBAOkCACHFAgEA6gIAIcYCAQDqAgAhxwJAAIkDACHIAkAAiQMAIckCAQDqAgAhygIBAOoCACHLAgEA6gIAIdICAACwAwAgAgAAAAUAIAwAAOkEACACAAAA5wQAIAwAAOgEACAQ6AEAAOYEADDpAQAA5wQAEOoBAADmBAAw6wEBAOkCACGNAkAA_gIAIY4CQAD-AgAhwgIBAOkCACHDAgEA6QIAIcQCAQDpAgAhxQIBAOoCACHGAgEA6gIAIccCQACJAwAhyAJAAIkDACHJAgEA6gIAIcoCAQDqAgAhywIBAOoCACEQ6AEAAOYEADDpAQAA5wQAEOoBAADmBAAw6wEBAOkCACGNAkAA_gIAIY4CQAD-AgAhwgIBAOkCACHDAgEA6QIAIcQCAQDpAgAhxQIBAOoCACHGAgEA6gIAIccCQACJAwAhyAJAAIkDACHJAgEA6gIAIcoCAQDqAgAhywIBAOoCACEM6wEBALgDACGNAkAA3AMAIY4CQADcAwAhwwIBALgDACHEAgEAuAMAIcUCAQC7AwAhxgIBALsDACHHAkAAuQMAIcgCQAC5AwAhyQIBALsDACHKAgEAuwMAIcsCAQC7AwAhDOsBAQC4AwAhjQJAANwDACGOAkAA3AMAIcMCAQC4AwAhxAIBALgDACHFAgEAuwMAIcYCAQC7AwAhxwJAALkDACHIAkAAuQMAIckCAQC7AwAhygIBALsDACHLAgEAuwMAIQzrAQEAAAABjQJAAAAAAY4CQAAAAAHDAgEAAAABxAIBAAAAAcUCAQAAAAHGAgEAAAABxwJAAAAAAcgCQAAAAAHJAgEAAAABygIBAAAAAcsCAQAAAAEEEwAA3wQAMNUCAADgBAAw1wIAAOIEACDbAgAA4wQAMAQTAADTBAAw1QIAANQEADDXAgAA1gQAINsCAADXBAAwAAAFBAAA7QQAIAUAAO4EACCEAgAAsgMAILoCAACyAwAg0AIAALIDACAM6wEBAAAAAY0CQAAAAAGOAkAAAAABwwIBAAAAAcQCAQAAAAHFAgEAAAABxgIBAAAAAccCQAAAAAHIAkAAAAAByQIBAAAAAcoCAQAAAAHLAgEAAAABB-sBAQAAAAGNAkAAAAABjgJAAAAAAcACQAAAAAHMAgEAAAABzQIBAAAAAc4CAQAAAAEJBAAA6wQAIOsBAQAAAAGEAgEAAAABjQJAAAAAAY4CQAAAAAG6AgEAAAABzwIgAAAAAdACAQAAAAHRAgEAAAABAgAAAAEAIBMAAPIEACADAAAADgAgEwAA8gQAIBQAAPYEACALAAAADgAgBAAA0QQAIAwAAPYEACDrAQEAuAMAIYQCAQC7AwAhjQJAANwDACGOAkAA3AMAIboCAQC7AwAhzwIgANAEACHQAgEAuwMAIdECAQC4AwAhCQQAANEEACDrAQEAuAMAIYQCAQC7AwAhjQJAANwDACGOAkAA3AMAIboCAQC7AwAhzwIgANAEACHQAgEAuwMAIdECAQC4AwAhCQUAAOwEACDrAQEAAAABhAIBAAAAAY0CQAAAAAGOAkAAAAABugIBAAAAAc8CIAAAAAHQAgEAAAAB0QIBAAAAAQIAAAABACATAAD3BAAgAwAAAA4AIBMAAPcEACAUAAD7BAAgCwAAAA4AIAUAANIEACAMAAD7BAAg6wEBALgDACGEAgEAuwMAIY0CQADcAwAhjgJAANwDACG6AgEAuwMAIc8CIADQBAAh0AIBALsDACHRAgEAuAMAIQkFAADSBAAg6wEBALgDACGEAgEAuwMAIY0CQADcAwAhjgJAANwDACG6AgEAuwMAIc8CIADQBAAh0AIBALsDACHRAgEAuAMAIQLrAQIAAAABuAIBAAAAAQLrAQIAAAABuQIBAAAAAQaAAgEAAAABjQJAAAAAAY4CQAAAAAG6AgEAAAABuwIBAAAAAbwCAQAAAAECAAAAaQAgEwAA_gQAIAWAAgEAAAABjQJAAAAAAY4CQAAAAAGQAgEAAAABugIBAAAAAQIAAACJAQAgEwAAgAUAIAMAAABzACATAAD-BAAgFAAAhAUAIAgAAABzACAMAACEBQAggAIBALgDACGNAkAA3AMAIY4CQADcAwAhugIBALsDACG7AgEAuAMAIbwCAQC4AwAhBoACAQC4AwAhjQJAANwDACGOAkAA3AMAIboCAQC7AwAhuwIBALgDACG8AgEAuAMAIQMAAACMAQAgEwAAgAUAIBQAAIcFACAHAAAAjAEAIAwAAIcFACCAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuwMAIboCAQC7AwAhBYACAQC4AwAhjQJAANwDACGOAkAA3AMAIZACAQC7AwAhugIBALsDACEilQEAAIAEACCWAQAAiwQAIOsBAQAAAAGAAgEAAAABjQJAAAAAAY4CQAAAAAGQAgEAAAABkQIBAAAAAZkCAQAAAAGaAgEAAAABmwIAAPkDACCcAoAAAAABnQIAAPoDACCeAoAAAAABnwIBAAAAAaACAAD7AwAgoQIBAAAAAaICgAAAAAGjAgEAAAABpAIAAPwDACClAoAAAAABpgIBAAAAAacCAAD9AwAgqAKAAAAAAakCAQAAAAGqAgEAAAABqwIBAAAAAawCAAD-AwAgrQIBAAAAAa4CAAD_AwAgrwIBAAAAAbACgAAAAAGxAkAAAAABsgJAAAAAAQIAAADRAQAgEwAAiAUAIAbrAQIAAAAB7AEBAAAAAe4BAQAAAAHvAUAAAAAB8AEAAL8DACDxAQEAAAABH-sBAQAAAAGAAgEAAAABjQJAAAAAAY4CQAAAAAGQAgEAAAABkQIBAAAAAZkCAQAAAAGaAgEAAAABmwIAAPkDACCcAoAAAAABnQIAAPoDACCeAoAAAAABnwIBAAAAAaACAAD7AwAgoQIBAAAAAaICgAAAAAGjAgEAAAABpAIAAPwDACClAoAAAAABpgIBAAAAAacCAAD9AwAgqAKAAAAAAaoCAQAAAAGrAgEAAAABrAIAAP4DACCtAgEAAAABrgIAAP8DACCvAgEAAAABsAKAAAAAAbECQAAAAAGyAkAAAAABAwAAANkBACATAACIBQAgFAAAjgUAICQAAADZAQAgDAAAjgUAIJUBAADqAwAglgEAAOsDACDrAQEAuAMAIYACAQC4AwAhjQJAANwDACGOAkAA3AMAIZACAQC4AwAhkQIBALgDACGZAgEAuAMAIZoCAQC7AwAhmwIAAOMDACCcAoAAAAABnQIAAOQDACCeAoAAAAABnwIBALsDACGgAgAA5QMAIKECAQC7AwAhogKAAAAAAaMCAQC7AwAhpAIAAOYDACClAoAAAAABpgIBALsDACGnAgAA5wMAIKgCgAAAAAGpAgEAuwMAIaoCAQC7AwAhqwIBALsDACGsAgAA6AMAIK0CAQC7AwAhrgIAAOkDACCvAgEAuwMAIbACgAAAAAGxAkAAuQMAIbICQAC5AwAhIpUBAADqAwAglgEAAOsDACDrAQEAuAMAIYACAQC4AwAhjQJAANwDACGOAkAA3AMAIZACAQC4AwAhkQIBALgDACGZAgEAuAMAIZoCAQC7AwAhmwIAAOMDACCcAoAAAAABnQIAAOQDACCeAoAAAAABnwIBALsDACGgAgAA5QMAIKECAQC7AwAhogKAAAAAAaMCAQC7AwAhpAIAAOYDACClAoAAAAABpgIBALsDACGnAgAA5wMAIKgCgAAAAAGpAgEAuwMAIaoCAQC7AwAhqwIBALsDACGsAgAA6AMAIK0CAQC7AwAhrgIAAOkDACCvAgEAuwMAIbACgAAAAAGxAkAAuQMAIbICQAC5AwAhBusBAgAAAAHtAQEAAAAB7gEBAAAAAe8BQAAAAAHwAQAAvwMAIPEBAQAAAAEilgEAAIsEACCXAQAAgQQAIOsBAQAAAAGAAgEAAAABjQJAAAAAAY4CQAAAAAGQAgEAAAABkQIBAAAAAZkCAQAAAAGaAgEAAAABmwIAAPkDACCcAoAAAAABnQIAAPoDACCeAoAAAAABnwIBAAAAAaACAAD7AwAgoQIBAAAAAaICgAAAAAGjAgEAAAABpAIAAPwDACClAoAAAAABpgIBAAAAAacCAAD9AwAgqAKAAAAAAakCAQAAAAGqAgEAAAABqwIBAAAAAawCAAD-AwAgrQIBAAAAAa4CAAD_AwAgrwIBAAAAAbACgAAAAAGxAkAAAAABsgJAAAAAAQIAAADRAQAgEwAAkAUAIALxAQEAAAABgAIBAAAAAQIAAACoAgAgEwAAkgUAIAMAAADZAQAgEwAAkAUAIBQAAJYFACAkAAAA2QEAIAwAAJYFACCWAQAA6wMAIJcBAADsAwAg6wEBALgDACGAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuAMAIZECAQC4AwAhmQIBALgDACGaAgEAuwMAIZsCAADjAwAgnAKAAAAAAZ0CAADkAwAgngKAAAAAAZ8CAQC7AwAhoAIAAOUDACChAgEAuwMAIaICgAAAAAGjAgEAuwMAIaQCAADmAwAgpQKAAAAAAaYCAQC7AwAhpwIAAOcDACCoAoAAAAABqQIBALsDACGqAgEAuwMAIasCAQC7AwAhrAIAAOgDACCtAgEAuwMAIa4CAADpAwAgrwIBALsDACGwAoAAAAABsQJAALkDACGyAkAAuQMAISKWAQAA6wMAIJcBAADsAwAg6wEBALgDACGAAgEAuAMAIY0CQADcAwAhjgJAANwDACGQAgEAuAMAIZECAQC4AwAhmQIBALgDACGaAgEAuwMAIZsCAADjAwAgnAKAAAAAAZ0CAADkAwAgngKAAAAAAZ8CAQC7AwAhoAIAAOUDACChAgEAuwMAIaICgAAAAAGjAgEAuwMAIaQCAADmAwAgpQKAAAAAAaYCAQC7AwAhpwIAAOcDACCoAoAAAAABqQIBALsDACGqAgEAuwMAIasCAQC7AwAhrAIAAOgDACCtAgEAuwMAIa4CAADpAwAgrwIBALsDACGwAoAAAAABsQJAALkDACGyAkAAuQMAIQMAAACrAgAgEwAAkgUAIBQAAJkFACAEAAAAqwIAIAwAAJkFACDxAQEAuwMAIYACAQC4AwAhAvEBAQC7AwAhgAIBALgDACEDBAYCBQoDBgAEAQMAAQEDAAECBAsABQwAAAAAAwYACRkAChoACwAAAAMGAAkZAAoaAAsBAwABAQMAAQMGABAZABEaABIAAAADBgAQGQARGgASAQMAAQEDAAEDBgAXGQAYGgAZAAAAAwYAFxkAGBoAGQAAAAMGAB8ZACAaACEAAAADBgAfGQAgGgAhAgYAJ01uJAJOACVPACMCBgAmTW8kAU1wAAFNcQAAAAMGACsZACwaAC0AAAADBgArGQAsGgAtAAADBgAyGQAzGgA0AAAAAwYAMhkAMxoANAJOACVPACMCTgAlTwAjBQYAORkAPBoAPX4AOn8AOwAAAAAABQYAORkAPBoAPX4AOn8AOwAAAAMGAEMZAEQaAEUAAAADBgBDGQBEGgBFBAYAS5UB1gFIlgHaAUeXAdwBRwKTAQBJlAEARwIGAEqSAdcBSAGSAdgBAAKVAd0BAJcB3gEAAZYB6AFHAZYB7gFHAwYATxkAUBoAUQAAAAMGAE8ZAFAaAFEAAAADBgBXGQBYGgBZAAAAAwYAVxkAWBoAWQAAAAUGAF8ZAGIaAGN-AGB_AGEAAAAAAAUGAF8ZAGIaAGN-AGB_AGEAAAMGAGgZAGkaAGoAAAADBgBoGQBpGgBqApMBAEmUAQBHApMBAEmUAQBHBQYAbxkAchoAc34AcH8AcQAAAAAABQYAbxkAchoAc34AcH8AcQcCAQgNAQkQAQoRAQsSAQ0UAQ4WBQ8XBhAZAREbBRIcBxUdARYeARcfBRsiCBwjDB0kAx4lAx8mAyAnAyEoAyIqAyMsBSQtDSUvAyYxBScyDigzAyk0Ayo1BSs4Dyw5Ey06Ai47Ai88AjA9AjE-AjJAAjNCBTRDFDVFAjZHBTdIFThJAjlKAjpLBTtOFjxPGj1RGz5SGz9VG0BWG0FXG0JZG0NbBURcHEVeG0ZgBUdhHUhiG0ljG0pkBUtnHkxoIlBqI1FyI1J1I1N2I1R3I1V5I1Z7BVd8KFh-I1mAAQVagQEpW4IBI1yDASNdhAEFXocBKl-IAS5gigElYYsBJWKOASVjjwElZJABJWWSASVmlAEFZ5UBL2iXASVpmQEFapoBMGubASVsnAElbZ0BBW6gATFvoQE1cKIBJHGjASRypAEkc6UBJHSmASR1qAEkdqoBBXerATZ4rQEkea8BBXqwATd7sQEkfLIBJH2zAQWAAbYBOIEBtwE-ggG5AT-DAboBP4QBvQE_hQG-AT-GAb8BP4cBwQE_iAHDAQWJAcQBQIoBxgE_iwHIAQWMAckBQY0BygE_jgHLAT-PAcwBBZABzwFCkQHQAUaYAdIBR5kB3wFHmgHgAUebAeEBR5wB4gFHnQHkAUeeAeYBBZ8B5wFMoAHqAUehAewBBaIB7QFNowHvAUekAfABR6UB8QEFpgH0AU6nAfUBUqgB9wFTqQH4AVOqAfsBU6sB_AFTrAH9AVOtAf8BU64BgQIFrwGCAlSwAYQCU7EBhgIFsgGHAlWzAYgCU7QBiQJTtQGKAgW2AY0CVrcBjgJauAGQAlu5AZECW7oBlAJbuwGVAlu8AZYCW70BmAJbvgGaAgW_AZsCXMABnQJbwQGfAgXCAaACXcMBoQJbxAGiAlvFAaMCBcYBpgJexwGnAmTIAakCSckBqgJJygGtAknLAa4CScwBrwJJzQGxAknOAbMCBc8BtAJl0AG2AknRAbgCBdIBuQJm0wG6AknUAbsCSdUBvAIF1gG_AmfXAcACa9gBwQJI2QHCAkjaAcMCSNsBxAJI3AHFAkjdAccCSN4ByQIF3wHKAmzgAcwCSOEBzgIF4gHPAm3jAdACSOQB0QJI5QHSAgXmAdUCbucB1gJ0"
|
|
24
24
|
};
|
|
25
25
|
async function decodeBase64AsWasm(wasmBase64) {
|
|
26
26
|
const { Buffer } = await import("node:buffer");
|