From d764569eac4db4913e006d945be6ad58b18a5447 Mon Sep 17 00:00:00 2001 From: Chad Burt Date: Tue, 30 Jun 2026 16:22:10 -0700 Subject: [PATCH 01/32] Added support for CSV uploads --- packages/api/generated-schema.gql | 9 + packages/api/migrations/current.sql | 75 ++ packages/api/schema.sql | 29 +- packages/api/tasks/processDataUpload.ts | 5 +- .../src/admin/data/QuotaUsageTreemap.tsx | 2 + .../HostedLayerInfo.tsx | 2 + .../uploads/ProjectBackgroundJobContext.tsx | 250 +++++-- .../uploads/ProjectBackgroundJobManager.ts | 4 + .../DelimitedUploadConfigModal.tsx | 413 +++++++++++ .../detectDelimitedGeometry.test.ts | 125 ++++ .../detectDelimitedGeometry.ts | 396 +++++++++++ .../resolveDelimitedUploads.ts | 70 ++ .../admin/uploads/delimitedSpatial/types.ts | 44 ++ .../src/dataLayers/DataDownloadModal.tsx | 4 + packages/client/src/generated/graphql.ts | 14 +- packages/client/src/generated/queries.ts | 13 +- packages/client/src/index.css | 658 +++++------------- .../client/src/queries/DataUploads.graphql | 2 + .../dist/bin/geostats.js | 24 +- .../dist/bin/geostats.js.map | 2 +- .../spatial-uploads-handler/dist/handler.d.ts | 2 +- .../dist/handler.d.ts.map | 2 +- .../spatial-uploads-handler/dist/handler.js | 2 +- .../dist/handler.js.map | 2 +- .../dist/src/formats/delimited.d.ts | 13 + .../dist/src/formats/delimited.d.ts.map | 1 + .../dist/src/formats/delimited.js | 61 ++ .../dist/src/formats/delimited.js.map | 1 + .../dist/src/handleUpload.d.ts | 7 +- .../dist/src/handleUpload.d.ts.map | 2 +- .../dist/src/handleUpload.js | 29 +- .../dist/src/handleUpload.js.map | 2 +- .../dist/src/index.d.ts | 2 +- .../dist/src/index.d.ts.map | 2 +- .../dist/src/index.js.map | 2 +- .../dist/src/processVectorUpload.d.ts | 3 + .../dist/src/processVectorUpload.d.ts.map | 2 +- .../dist/src/processVectorUpload.js | 22 +- .../dist/src/processVectorUpload.js.map | 2 +- .../dist/src/spatialUploadsHandlerTypes.d.ts | 17 + .../src/spatialUploadsHandlerTypes.d.ts.map | 2 +- .../dist/src/uploadPipelineShared.d.ts | 2 +- .../dist/src/uploadPipelineShared.d.ts.map | 2 +- .../dist/src/uploadPipelineShared.js.map | 2 +- packages/spatial-uploads-handler/handler.ts | 6 +- packages/spatial-uploads-handler/server.ts | 1 + .../src/formats/delimited.ts | 86 +++ .../src/handleUpload.ts | 9 +- packages/spatial-uploads-handler/src/index.ts | 1 + .../src/processVectorUpload.ts | 36 + .../src/spatialUploadsHandlerTypes.ts | 20 + .../src/uploadPipelineShared.ts | 3 +- 52 files changed, 1852 insertions(+), 635 deletions(-) create mode 100644 packages/client/src/admin/uploads/delimitedSpatial/DelimitedUploadConfigModal.tsx create mode 100644 packages/client/src/admin/uploads/delimitedSpatial/detectDelimitedGeometry.test.ts create mode 100644 packages/client/src/admin/uploads/delimitedSpatial/detectDelimitedGeometry.ts create mode 100644 packages/client/src/admin/uploads/delimitedSpatial/resolveDelimitedUploads.ts create mode 100644 packages/client/src/admin/uploads/delimitedSpatial/types.ts create mode 100644 packages/spatial-uploads-handler/dist/src/formats/delimited.d.ts create mode 100644 packages/spatial-uploads-handler/dist/src/formats/delimited.d.ts.map create mode 100644 packages/spatial-uploads-handler/dist/src/formats/delimited.js create mode 100644 packages/spatial-uploads-handler/dist/src/formats/delimited.js.map create mode 100644 packages/spatial-uploads-handler/src/formats/delimited.ts diff --git a/packages/api/generated-schema.gql b/packages/api/generated-schema.gql index 6457ac865..fef19d9e3 100644 --- a/packages/api/generated-schema.gql +++ b/packages/api/generated-schema.gql @@ -1715,6 +1715,7 @@ input CreateDataUploadInput { clientMutationId: String contentType: String filename: String + processingOptions: JSON projectId: Int replaceTableOfContentsItemId: Int } @@ -4257,6 +4258,7 @@ type DataUploadOutput implements Node { } enum DataUploadOutputType { + CSV FLAT_GEOBUF GEO_JSON GEO_TIFF @@ -4301,6 +4303,13 @@ type DataUploadTask implements Node { """Use to upload source data to s3. Must be an admin.""" presignedUploadUrl: String + """ + Format-specific processing instructions supplied by the client at upload time + (e.g. column mapping and CRS for delimited text uploads). Consumed by the + spatial-uploads-handler. + """ + processingOptions: JSON + """ Reads a single `ProjectBackgroundJob` that is related to this `DataUploadTask`. """ diff --git a/packages/api/migrations/current.sql b/packages/api/migrations/current.sql index 8da533983..08966f73e 100644 --- a/packages/api/migrations/current.sql +++ b/packages/api/migrations/current.sql @@ -1 +1,76 @@ -- Enter migration here +alter type data_upload_output_type add value if not exists 'CSV'; + +alter table data_upload_tasks add column if not exists processing_options jsonb; + +comment on column data_upload_tasks.processing_options is 'Format-specific processing instructions supplied by the client at upload time (e.g. column mapping and CRS for delimited text uploads). Consumed by the spatial-uploads-handler.'; + +drop function if exists create_data_upload(text, integer, text, integer); +CREATE OR REPLACE FUNCTION public.create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer, processing_options jsonb default null) RETURNS public.data_upload_tasks + LANGUAGE plpgsql SECURITY DEFINER + AS $$ + declare + upload data_upload_tasks; + used bigint; + quota bigint; + job project_background_jobs; + begin + if session_is_admin(project_id) then + select projects_data_hosting_quota_used(projects.*), projects_data_hosting_quota(projects.*) into used, quota from projects where id = project_id; + if replace_table_of_contents_item_id is not null and (select exists( + select + data_upload_tasks.id + from + data_upload_tasks + inner join + project_background_jobs + on + data_upload_tasks.project_background_job_id = project_background_jobs.id + where + data_upload_tasks.replace_table_of_contents_item_id is not null and + project_background_jobs.state in ('queued', 'running') and + data_upload_tasks.replace_table_of_contents_item_id = create_data_upload.replace_table_of_contents_item_id + )) then + raise exception 'There is already an active upload task for this layer'; + end if; + if quota - used > 0 then + insert into project_background_jobs ( + project_id, + title, + user_id, + type, + timeout_at + ) values ( + project_id, + ( + case when replace_table_of_contents_item_id is not null then 'Replacement upload ' else '' end + ) || filename, + nullif(current_setting('session.user_id', TRUE), '')::integer, + 'data_upload', + timezone('utc'::text, now()) + interval '15 minutes' + ) + returning * into job; + insert into data_upload_tasks( + filename, + content_type, + project_background_job_id, + replace_table_of_contents_item_id, + processing_options + ) values ( + create_data_upload.filename, + create_data_upload.content_type, + job.id, + create_data_upload.replace_table_of_contents_item_id, + create_data_upload.processing_options + ) returning * into upload; + return upload; + else + raise exception 'data hosting quota exceeded'; + end if; + else + raise exception 'permission denied'; + end if; + end; + $$; + +grant execute on function create_data_upload to seasketch_user; diff --git a/packages/api/schema.sql b/packages/api/schema.sql index 681e18dee..e6b5a5ac1 100644 --- a/packages/api/schema.sql +++ b/packages/api/schema.sql @@ -307,7 +307,8 @@ CREATE TYPE public.data_upload_output_type AS ENUM ( 'XMLMetadata', 'NetCDF', 'ReportingFlatgeobufV1', - 'ReportingCOG' + 'ReportingCOG', + 'CSV' ); @@ -7573,7 +7574,8 @@ CREATE TABLE public.data_upload_tasks ( project_background_job_id uuid NOT NULL, changelog text, replace_table_of_contents_item_id integer, - data_library_metadata jsonb + data_library_metadata jsonb, + processing_options jsonb ); @@ -7592,10 +7594,17 @@ COMMENT ON COLUMN public.data_upload_tasks.content_type IS 'Content-Type of the -- --- Name: create_data_upload(text, integer, text, integer); Type: FUNCTION; Schema: public; Owner: - +-- Name: COLUMN data_upload_tasks.processing_options; Type: COMMENT; Schema: public; Owner: - +-- + +COMMENT ON COLUMN public.data_upload_tasks.processing_options IS 'Format-specific processing instructions supplied by the client at upload time (e.g. column mapping and CRS for delimited text uploads). Consumed by the spatial-uploads-handler.'; + + +-- +-- Name: create_data_upload(text, integer, text, integer, jsonb); Type: FUNCTION; Schema: public; Owner: - -- -CREATE FUNCTION public.create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer) RETURNS public.data_upload_tasks +CREATE FUNCTION public.create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer, processing_options jsonb DEFAULT NULL::jsonb) RETURNS public.data_upload_tasks LANGUAGE plpgsql SECURITY DEFINER AS $$ declare @@ -7643,12 +7652,14 @@ CREATE FUNCTION public.create_data_upload(filename text, project_id integer, con filename, content_type, project_background_job_id, - replace_table_of_contents_item_id + replace_table_of_contents_item_id, + processing_options ) values ( create_data_upload.filename, create_data_upload.content_type, job.id, - create_data_upload.replace_table_of_contents_item_id + create_data_upload.replace_table_of_contents_item_id, + create_data_upload.processing_options ) returning * into upload; return upload; else @@ -35785,11 +35796,11 @@ GRANT SELECT(content_type) ON TABLE public.data_upload_tasks TO seasketch_user; -- --- Name: FUNCTION create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer); Type: ACL; Schema: public; Owner: - +-- Name: FUNCTION create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer, processing_options jsonb); Type: ACL; Schema: public; Owner: - -- -REVOKE ALL ON FUNCTION public.create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer) FROM PUBLIC; -GRANT ALL ON FUNCTION public.create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer) TO seasketch_user; +REVOKE ALL ON FUNCTION public.create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer, processing_options jsonb) FROM PUBLIC; +GRANT ALL ON FUNCTION public.create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer, processing_options jsonb) TO seasketch_user; -- diff --git a/packages/api/tasks/processDataUpload.ts b/packages/api/tasks/processDataUpload.ts index 058c9f183..37f05a6d7 100644 --- a/packages/api/tasks/processDataUpload.ts +++ b/packages/api/tasks/processDataUpload.ts @@ -29,7 +29,8 @@ export default async function processDataUpload( const q = await client.query( ` select - id || '/' || filename as object_key + id || '/' || filename as object_key, + processing_options from data_upload_tasks where @@ -42,6 +43,7 @@ export default async function processDataUpload( throw new Error("Could not find objectKey for job with ID=" + jobId); } const objectKey = q.rows[0].object_key; + const processingOptions = q.rows[0].processing_options ?? undefined; if (!job) { throw new Error("Could not find job with ID=" + job.id); } @@ -75,6 +77,7 @@ export default async function processDataUpload( requestingUser: user.fullname ? `${user.fullname} <${user.email || user.canonical_email}>` : user.email || user.canonical_email, + processingOptions, }); } catch (e) { console.error("error!!", e); diff --git a/packages/client/src/admin/data/QuotaUsageTreemap.tsx b/packages/client/src/admin/data/QuotaUsageTreemap.tsx index 5ef383f41..afa7d2fc7 100644 --- a/packages/client/src/admin/data/QuotaUsageTreemap.tsx +++ b/packages/client/src/admin/data/QuotaUsageTreemap.tsx @@ -398,6 +398,8 @@ export function humanizeOutputType(type: DataUploadOutputType | "Archives") { return "PNG Image"; case DataUploadOutputType.NetCdf: return "NetCDF"; + case DataUploadOutputType.Csv: + return "CSV"; case "Archives": return "Archived Versions"; case DataUploadOutputType.Xmlmetadata: diff --git a/packages/client/src/admin/data/TableOfContentsItemEditor/HostedLayerInfo.tsx b/packages/client/src/admin/data/TableOfContentsItemEditor/HostedLayerInfo.tsx index c313e4c28..23c857fdd 100644 --- a/packages/client/src/admin/data/TableOfContentsItemEditor/HostedLayerInfo.tsx +++ b/packages/client/src/admin/data/TableOfContentsItemEditor/HostedLayerInfo.tsx @@ -279,6 +279,8 @@ export function humanizeSourceType(type: DataUploadOutputType) { return "PNG"; case DataUploadOutputType.ZippedShapefile: return "Shapefile"; + case DataUploadOutputType.Csv: + return "CSV"; default: return type; } diff --git a/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx b/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx index b1eef84c9..97a9457ae 100644 --- a/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx +++ b/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx @@ -38,6 +38,9 @@ import ProjectBackgroundJobManager, { import sleep from "../../sleep"; import ConvertFeatureLayerToHostedModal from "../data/arcgis/ConvertFeatureLayerToHostedModal"; import AiDataAnalystUploadPromptModal from "./AiDataAnalystUploadPromptModal"; +import DelimitedUploadConfigModal from "./delimitedSpatial/DelimitedUploadConfigModal"; +import { resolveDelimitedUploads } from "./delimitedSpatial/resolveDelimitedUploads"; +import { DelimitedUploadProcessingOptions } from "./delimitedSpatial/types"; export type UploadType = "create" | "replace"; @@ -46,7 +49,8 @@ type SupportedSpatialFormat = | "shapefileZip" | "geotiff" | "netcdf" - | "flatgeobuf"; + | "flatgeobuf" + | "delimited"; const SUPPORTED_FORMATS: { id: SupportedSpatialFormat; @@ -84,6 +88,12 @@ const SUPPORTED_FORMATS: { extensions: ".fgb", tag: "FGB", }, + { + id: "delimited", + label: "CSV / Delimited Text", + extensions: ".csv, .tsv, .txt", + tag: "CSV", + }, ]; // A generic "document" glyph (a page with a folded corner) used to represent @@ -165,11 +175,21 @@ function detectSupportedFormat( return "netcdf"; case ".fgb": return "flatgeobuf"; + case ".csv": + case ".tsv": + case ".txt": + return "delimited"; default: return null; } } +/** CSV/TSV/TXT files require column-mapping configuration before upload. */ +function isDelimitedSpatialFile(fileName: string): boolean { + const ext = fileExtension(fileName); + return ext === ".csv" || ext === ".tsv" || ext === ".txt"; +} + type DroppedFileInfo = { name: string; format: SupportedSpatialFormat | null; @@ -225,6 +245,16 @@ export default function DataUploadDropzone({ finishedWithChangelog: boolean; changelog?: string; aiDataAnalystUploadPromptOpen: boolean; + /** + * Set when one or more dropped files require delimited-text column + * mapping. Upload of the entire batch (delimited and non-delimited + * files dropped together) is held until the user confirms or cancels. + */ + pendingDelimitedUpload: { + delimitedFiles: File[]; + otherFiles: File[]; + autoConfigsByFile: Map; + } | null; }>({ droppedFiles: 0, droppedFileInfos: [], @@ -232,6 +262,7 @@ export default function DataUploadDropzone({ disabled: false, uploadType: "create", isUploadingReplacement: false, + pendingDelimitedUpload: null, replaceTableOfContentsItemId: null, finishedWithChangelog: true, aiDataAnalystUploadPromptOpen: false, @@ -366,6 +397,82 @@ export default function DataUploadDropzone({ useEffect(() => clearDismissTimer, [clearDismissTimer]); + // Kicks off the actual upload (S3 PUT + createDataUpload/submitDataUpload) + // for a batch of files. Used both for the immediate-upload path (no + // delimited files present) and after the delimited config modal confirms. + const startUpload = useCallback( + ( + filesToUpload: File[], + processingOptionsByFile?: Map + ) => { + const droppedFileInfos: DroppedFileInfo[] = filesToUpload.map( + (file) => ({ + name: file.name, + format: detectSupportedFormat(file.name), + }) + ); + + setState((prev) => ({ + ...prev, + droppedFiles: filesToUpload.length, + droppedFileInfos, + error: undefined, + })); + + if (state.manager) { + if (state.uploadType === "replace") { + setState((prev) => ({ + ...prev, + isUploadingReplacement: true, + finishedWithChangelog: false, + })); + } + // Keep the confirmation visible briefly, then fade out and let the + // background job queue UI report on progress from here. + scheduleDismiss(OVERLAY_DISMISS_DELAY); + state.manager + .uploadFiles( + filesToUpload, + state.uploadType === "replace" && state.replaceTableOfContentsItemId + ? { + replaceTableOfContentsItemId: + state.replaceTableOfContentsItemId, + processingOptionsByFile, + } + : { processingOptionsByFile } + ) + .catch((e) => { + clearDismissTimer(); + const error: ReactNode = /quota exceeded/.test(e.message) ? ( + + This project has exceeded its data storage quota. Please delete + some data to make room for new uploads. You can see how much + space your layers are using by selecting{" "} + View {"->"} Data Hosting Quota from the toolbar. + + ) : ( + e.message + ); + setState((prev) => ({ + ...prev, + droppedFiles: 0, + droppedFileInfos: [], + isUploadingReplacement: false, + finishedWithChangelog: true, + error, + })); + }); + } + }, + [ + state.manager, + state.uploadType, + state.replaceTableOfContentsItemId, + scheduleDismiss, + clearDismissTimer, + ] + ); + const onDrop = useCallback( async (acceptedFiles: File[]) => { clearDismissTimer(); @@ -377,12 +484,8 @@ export default function DataUploadDropzone({ message = t(`"${file.name}" is a Word document.`); } else if (file.name.endsWith(".xlsx")) { message = t(`"${file.name}" is an Excel spreadsheet.`); - } else if (file.name.endsWith(".csv")) { - message = t(`"${file.name}" is a CSV file.`); } else if (file.name.endsWith(".pdf")) { message = t(`"${file.name}" is a PDF file.`); - } else if (file.name.endsWith(".txt")) { - message = t(`"${file.name}" is a text file.`); } else if (file.name.endsWith(".dbf")) { message = t(`"${file.name}" is a database file.`); isPartOfShapefile = true; @@ -481,72 +584,57 @@ export default function DataUploadDropzone({ return; } - const droppedFileInfos: DroppedFileInfo[] = filteredFiles.map((file) => ({ - name: file.name, - format: detectSupportedFormat(file.name), - })); + // CSV/TSV/TXT files need column-mapping configuration before they can + // be uploaded. Hold the entire batch (including any non-delimited + // files dropped alongside them) until the user confirms or cancels. + const delimitedFiles = filteredFiles.filter((f) => + isDelimitedSpatialFile(f.name) + ); + const otherFiles = filteredFiles.filter( + (f) => !isDelimitedSpatialFile(f.name) + ); + if (delimitedFiles.length > 0) { + const resolved = await resolveDelimitedUploads(delimitedFiles); + const blockingErrors = resolved + .map((entry) => entry.blockingError) + .filter((message): message is string => Boolean(message)); + if (blockingErrors.length > 0) { + alert(blockingErrors.join("\n\n")); + return; + } - setState((prev) => ({ - ...prev, - droppedFiles: filteredFiles.length, - droppedFileInfos, - error: undefined, - })); + const autoConfigsByFile = new Map< + File, + DelimitedUploadProcessingOptions + >(); + const filesNeedingConfig: File[] = []; + for (const entry of resolved) { + if (entry.needsConfig) { + filesNeedingConfig.push(entry.file); + } else if (entry.processingOptions) { + autoConfigsByFile.set(entry.file, entry.processingOptions); + } + } - if (state.manager) { - if (state.uploadType === "replace") { - setState((prev) => ({ - ...prev, - isUploadingReplacement: true, - finishedWithChangelog: false, - })); + if (filesNeedingConfig.length === 0) { + startUpload([...otherFiles, ...delimitedFiles], autoConfigsByFile); + return; } - // Keep the confirmation visible briefly, then fade out and let the - // background job queue UI report on progress from here. - scheduleDismiss(OVERLAY_DISMISS_DELAY); - state.manager - .uploadFiles( - filteredFiles, - state.uploadType === "replace" && state.replaceTableOfContentsItemId - ? { - replaceTableOfContentsItemId: - state.replaceTableOfContentsItemId, - } - : undefined - ) - .catch((e) => { - clearDismissTimer(); - const error: ReactNode = /quota exceeded/.test(e.message) ? ( - - This project has exceeded its data storage quota. Please delete - some data to make room for new uploads. You can see how much - space your layers are using by selecting{" "} - View {"->"} Data Hosting Quota from the toolbar. - - ) : ( - e.message - ); - setState((prev) => ({ - ...prev, - droppedFiles: 0, - droppedFileInfos: [], - isUploadingReplacement: false, - finishedWithChangelog: true, - error, - })); - }); + + setState((prev) => ({ + ...prev, + pendingDelimitedUpload: { + delimitedFiles: filesNeedingConfig, + otherFiles, + autoConfigsByFile, + }, + })); + return; } + + startUpload(filteredFiles); }, - [ - alert, - confirm, - state.manager, - t, - state.uploadType, - state.replaceTableOfContentsItemId, - scheduleDismiss, - clearDismissTimer, - ] + [alert, confirm, t, state.uploadType, clearDismissTimer, startUpload] ); const { getRootProps, getInputProps, isDragActive } = useDropzone({ @@ -554,6 +642,27 @@ export default function DataUploadDropzone({ noClick: true, }); + const onCancelDelimitedConfig = useCallback(() => { + setState((prev) => ({ ...prev, pendingDelimitedUpload: null })); + }, []); + + const onSubmitDelimitedConfig = useCallback( + (configsByFile: Map) => { + const pending = state.pendingDelimitedUpload; + if (!pending) return; + setState((prev) => ({ ...prev, pendingDelimitedUpload: null })); + const processingOptionsByFile = new Map(pending.autoConfigsByFile); + configsByFile.forEach((options, file) => { + processingOptionsByFile.set(file, options); + }); + startUpload( + [...pending.otherFiles, ...Array.from(processingOptionsByFile.keys())], + processingOptionsByFile + ); + }, + [state.pendingDelimitedUpload, startUpload] + ); + const showOverlay = isDragActive || state.droppedFiles > 0 || Boolean(state.error); @@ -592,7 +701,7 @@ export default function DataUploadDropzone({ browseForFiles: (multiple?: boolean) => { const fileInput = document.createElement("input"); fileInput.type = "file"; - fileInput.accept = ".zip,.json,.geojson,.fgb,.tif,.tiff"; + fileInput.accept = ".zip,.json,.geojson,.fgb,.tif,.tiff,.csv,.tsv,.txt"; fileInput.multiple = multiple || false; fileInput.onchange = async (e) => { const files = (e.target as HTMLInputElement).files; @@ -655,6 +764,13 @@ export default function DataUploadDropzone({ }} /> )} + {state.pendingDelimitedUpload && ( + + )} {children} {showOverlay && diff --git a/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts b/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts index 6409a1d46..9c4fde5c6 100644 --- a/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts +++ b/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts @@ -21,6 +21,7 @@ import { SubmitDataUploadMutation, } from "../../generated/graphql"; import axios from "axios"; +import { DelimitedUploadProcessingOptions } from "./delimitedSpatial/types"; export interface DataUploadProcessingCompleteEvent { jobId: string; @@ -260,6 +261,8 @@ export default class ProjectBackgroundJobManager extends EventEmitter<{ files: File[], options?: { replaceTableOfContentsItemId?: number; + /** Column-mapping/CRS configuration for delimited (CSV/TSV/TXT) files, keyed by the File instance being uploaded. */ + processingOptionsByFile?: Map; } ) { if (files.length > 1 && options?.replaceTableOfContentsItemId) { @@ -277,6 +280,7 @@ export default class ProjectBackgroundJobManager extends EventEmitter<{ contentType: file.type, replaceTableOfContentsItemId: options?.replaceTableOfContentsItemId, + processingOptions: options?.processingOptionsByFile?.get(file), }, }); if ( diff --git a/packages/client/src/admin/uploads/delimitedSpatial/DelimitedUploadConfigModal.tsx b/packages/client/src/admin/uploads/delimitedSpatial/DelimitedUploadConfigModal.tsx new file mode 100644 index 000000000..50fbb47cf --- /dev/null +++ b/packages/client/src/admin/uploads/delimitedSpatial/DelimitedUploadConfigModal.tsx @@ -0,0 +1,413 @@ +import { useEffect, useState } from "react"; +import { Trans, useTranslation } from "react-i18next"; +import Modal from "../../../components/Modal"; +import RadioGroup from "../../../components/RadioGroup"; +import Warning from "../../../components/Warning"; +import Spinner from "../../../components/Spinner"; +import { detectDelimitedGeometry, validateWgs84PointColumns, DELIMITED_SAMPLE_BYTES } from "./detectDelimitedGeometry"; +import { + DelimitedUploadProcessingOptions, + DetectDelimitedGeometryResult, +} from "./types"; + +// Only the first chunk of each file is read to detect columns and preview +// rows. This keeps detection fast even for very large CSVs. + +const selectClassName = + "block w-full rounded-md border-0 py-1.5 pl-3 pr-10 text-gray-900 ring-1 ring-inset ring-gray-300 focus:ring-2 focus:ring-indigo-600 sm:text-sm sm:leading-6"; + +type FileConfigState = { + file: File; + loading: boolean; + error: string | null; + detection: DetectDelimitedGeometryResult | null; + geometryMode: "point_xy" | "wkt"; + xField: string; + yField: string; + geometryField: string; + delimiter: DelimitedUploadProcessingOptions["delimiter"]; + hasHeaderRow: boolean; + validationError: string | null; +}; + +function initialFileConfigState(file: File): FileConfigState { + return { + file, + loading: true, + error: null, + detection: null, + geometryMode: "point_xy", + xField: "", + yField: "", + geometryField: "", + delimiter: ",", + hasHeaderRow: true, + validationError: null, + }; +} + +function getPointColumnValidationError( + state: FileConfigState +): string | null { + if ( + !state.detection || + state.geometryMode !== "point_xy" || + !state.xField || + !state.yField + ) { + return null; + } + return validateWgs84PointColumns( + state.detection.headers, + state.detection.rows, + state.xField, + state.yField + ); +} + +function isFileConfigValid(state: FileConfigState) { + if (state.loading || state.error || state.validationError) return false; + if (state.geometryMode === "wkt") return Boolean(state.geometryField); + return Boolean(state.xField) && Boolean(state.yField); +} + +function toProcessingOptions( + state: FileConfigState +): DelimitedUploadProcessingOptions { + return { + kind: "delimited", + geometryMode: state.geometryMode, + xField: state.geometryMode === "point_xy" ? state.xField : undefined, + yField: state.geometryMode === "point_xy" ? state.yField : undefined, + geometryField: + state.geometryMode === "wkt" ? state.geometryField : undefined, + crs: "EPSG:4326", + delimiter: state.delimiter, + hasHeaderRow: state.hasHeaderRow, + }; +} + +/** + * Presented when one or more dropped CSV/TSV/TXT files need the user to + * confirm (or correct) which columns contain location data before they are + * uploaded. Detection runs client-side via `detectDelimitedGeometry`; this + * modal is skipped entirely for files where detection is high-confidence. + */ +export default function DelimitedUploadConfigModal({ + files, + onSubmit, + onCancel, +}: { + files: File[]; + onSubmit: ( + configsByFile: Map + ) => void; + onCancel: () => void; +}) { + const { t } = useTranslation("admin:data"); + const [activeIndex, setActiveIndex] = useState(0); + const [fileStates, setFileStates] = useState(() => + files.map(initialFileConfigState) + ); + + useEffect(() => { + let cancelled = false; + files.forEach((file, i) => { + file + .slice(0, DELIMITED_SAMPLE_BYTES) + .text() + .then((sample) => { + if (cancelled) return; + const detection = detectDelimitedGeometry(sample); + setFileStates((prev) => { + const next = [...prev]; + const nextState: FileConfigState = { + ...next[i], + loading: false, + detection, + geometryMode: detection.geometryMode || "point_xy", + xField: detection.xField || "", + yField: detection.yField || "", + geometryField: detection.geometryField || "", + delimiter: detection.delimiter, + hasHeaderRow: detection.hasHeaderRow, + error: detection.error || null, + validationError: null, + }; + nextState.validationError = getPointColumnValidationError(nextState); + next[i] = nextState; + return next; + }); + }) + .catch((e) => { + if (cancelled) return; + setFileStates((prev) => { + const next = [...prev]; + next[i] = { + ...next[i], + loading: false, + error: e instanceof Error ? e.message : String(e), + }; + return next; + }); + }); + }); + return () => { + cancelled = true; + }; + // Detection only needs to run once per set of files. + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const updateActive = (update: Partial) => { + setFileStates((prev) => { + const next = [...prev]; + const merged = { ...next[activeIndex], ...update }; + merged.validationError = getPointColumnValidationError(merged); + next[activeIndex] = merged; + return next; + }); + }; + + const active = fileStates[activeIndex]; + const allValid = fileStates.every(isFileConfigValid); + const anyLoading = fileStates.some((f) => f.loading); + + return ( + 1 ? files.map((f) => f.name) : undefined} + onTabChange={files.length > 1 ? setActiveIndex : undefined} + footer={[ + { + label: t("Cancel"), + variant: "secondary", + onClick: onCancel, + }, + { + label: + files.length > 1 + ? t("Upload {{count}} files", { count: files.length }) + : t("Upload"), + variant: "primary", + autoFocus: true, + disabled: !allValid || anyLoading, + onClick: () => { + const configs = new Map(); + fileStates.forEach((state) => { + configs.set(state.file, toProcessingOptions(state)); + }); + onSubmit(configs); + }, + }, + ]} + > +
+ {files.length === 1 && ( +

+ {active.file.name} +

+ )} + {active.loading && ( +
+ +
+ )} + {active.error && ( + {active.error} + )} + {!active.loading && !active.error && active.detection && ( + + )} +
+
+ ); +} + +function FileConfigForm({ + state, + detection, + onChange, +}: { + state: FileConfigState; + detection: DetectDelimitedGeometryResult; + onChange: (update: Partial) => void; +}) { + const { t } = useTranslation("admin:data"); + + return ( +
+

+ + SeaSketch needs to know which columns in this file contain location + data. Review the detected mapping below, or choose different + columns. + +

+ + {detection.warnings.map((warning, i) => ( + + {warning} + + ))} + + {(state.error || state.validationError) && ( + {state.validationError || state.error} + )} + +

+ + Coordinates must be in WGS 84 (EPSG:4326) decimal degrees. + +

+ + + legend={t("Geometry type")} + value={state.geometryMode} + onChange={(geometryMode) => onChange({ geometryMode })} + items={[ + { + value: "point_xy", + label: t("Point coordinates"), + description: t( + "Use separate columns for latitude (Y) and longitude (X)" + ), + }, + { + value: "wkt", + label: t("Well-Known Text (WKT)"), + description: t( + "Use a single column containing WKT geometry strings (points, lines, or polygons)" + ), + }, + ]} + /> + + {state.geometryMode === "point_xy" ? ( +
+ + +
+ ) : ( + + )} + + + + +
+ ); +} + +function PreviewTable({ + detection, +}: { + detection: DetectDelimitedGeometryResult; +}) { + const { t } = useTranslation("admin:data"); + if (!detection.rows.length) return null; + return ( +
+ + {t("Preview")} + +
+ + + + {detection.headers.map((header) => ( + + ))} + + + + {detection.rows.map((row, i) => ( + + {row.map((cell, j) => ( + + ))} + + ))} + +
+ {header} +
+ {cell} +
+
+
+ ); +} diff --git a/packages/client/src/admin/uploads/delimitedSpatial/detectDelimitedGeometry.test.ts b/packages/client/src/admin/uploads/delimitedSpatial/detectDelimitedGeometry.test.ts new file mode 100644 index 000000000..345f06610 --- /dev/null +++ b/packages/client/src/admin/uploads/delimitedSpatial/detectDelimitedGeometry.test.ts @@ -0,0 +1,125 @@ +import { + detectDelimitedGeometry, + processingOptionsFromDetectionResult, +} from "./detectDelimitedGeometry"; + +test("standard latitude/longitude headers, comma delimited", () => { + const csv = [ + "name,latitude,longitude", + "Site A,42.686744,-73.822852", + "Site B,42.718588,-73.755328", + "Site C,42.814403,-73.930967", + ].join("\n"); + const result = detectDelimitedGeometry(csv); + expect(result.delimiter).toBe(","); + expect(result.geometryMode).toBe("point_xy"); + expect(result.xField).toBe("longitude"); + expect(result.yField).toBe("latitude"); + expect(result.confidence).toBe("high"); + expect(processingOptionsFromDetectionResult(result)).toEqual({ + kind: "delimited", + geometryMode: "point_xy", + xField: "longitude", + yField: "latitude", + geometryField: undefined, + crs: "EPSG:4326", + delimiter: ",", + hasHeaderRow: true, + }); +}); + +test("x/y headers, tab delimited", () => { + const tsv = [ + "name\tx\ty", + "Site A\t-73.822852\t42.686744", + "Site B\t-73.755328\t42.718588", + "Site C\t-73.930967\t42.814403", + ].join("\n"); + const result = detectDelimitedGeometry(tsv); + expect(result.delimiter).toBe("\t"); + expect(result.geometryMode).toBe("point_xy"); + expect(result.xField).toBe("x"); + expect(result.yField).toBe("y"); + expect(result.confidence).toBe("high"); +}); + +test("WKT geometry column", () => { + const csv = [ + "id,name,wkt", + '1,Region A,"POLYGON((-122.5 37.7, -122.4 37.7, -122.4 37.8, -122.5 37.8, -122.5 37.7))"', + '2,Region B,"POLYGON((-122.6 37.6, -122.5 37.6, -122.5 37.7, -122.6 37.7, -122.6 37.6))"', + '3,Region C,"POLYGON((-122.7 37.5, -122.6 37.5, -122.6 37.6, -122.7 37.6, -122.7 37.5))"', + ].join("\n"); + const result = detectDelimitedGeometry(csv); + expect(result.geometryMode).toBe("wkt"); + expect(result.geometryField).toBe("wkt"); + expect(result.confidence).toBe("high"); +}); + +test("ambiguous numeric columns trigger range-heuristic fallback with low confidence", () => { + const csv = [ + "id,col_a,col_b", + "1,42.686744,-73.822852", + "2,42.718588,-73.755328", + "3,42.814403,-73.930967", + ].join("\n"); + const result = detectDelimitedGeometry(csv); + expect(result.geometryMode).toBe("point_xy"); + expect(result.yField).toBe("col_a"); + expect(result.xField).toBe("col_b"); + expect(result.confidence).toBe("low"); + expect(result.warnings.length).toBeGreaterThan(0); +}); + +test("no detectable geometry columns", () => { + const csv = [ + "name,description", + "Site A,some text", + "Site B,more text", + ].join("\n"); + const result = detectDelimitedGeometry(csv); + expect(result.geometryMode).toBeNull(); + expect(result.confidence).toBe("low"); + expect(processingOptionsFromDetectionResult(result)).toBeNull(); +}); + +test("out-of-range coordinates are rejected as non-WGS 84", () => { + // Latitude values here exceed the valid [-90, 90] range, suggesting the + // columns may be swapped or the data is not in decimal degrees. + const csv = [ + "name,latitude,longitude", + "Site A,142.686744,-73.822852", + "Site B,142.718588,-73.755328", + "Site C,142.814403,-73.930967", + ].join("\n"); + const result = detectDelimitedGeometry(csv); + expect(result.geometryMode).toBe("point_xy"); + expect(result.error).toMatch(/WGS 84/); + expect(result.confidence).toBe("low"); + expect(processingOptionsFromDetectionResult(result)).toBeNull(); +}); + +test("semicolon delimited file", () => { + const csv = [ + "name;lat;lon", + "Site A;42.686744;-73.822852", + "Site B;42.718588;-73.755328", + ].join("\n"); + const result = detectDelimitedGeometry(csv); + expect(result.delimiter).toBe(";"); + expect(result.geometryMode).toBe("point_xy"); +}); + +test("file with no header row", () => { + const csv = [ + "42.686744,-73.822852,Site A", + "42.718588,-73.755328,Site B", + "42.814403,-73.930967,Site C", + ].join("\n"); + const result = detectDelimitedGeometry(csv); + expect(result.hasHeaderRow).toBe(false); + // Without recognizable headers, detection falls back to the numeric-range + // heuristic. + expect(result.geometryMode).toBe("point_xy"); + expect(result.confidence).toBe("low"); +}); diff --git a/packages/client/src/admin/uploads/delimitedSpatial/detectDelimitedGeometry.ts b/packages/client/src/admin/uploads/delimitedSpatial/detectDelimitedGeometry.ts new file mode 100644 index 000000000..2477ca853 --- /dev/null +++ b/packages/client/src/admin/uploads/delimitedSpatial/detectDelimitedGeometry.ts @@ -0,0 +1,396 @@ +/* eslint-disable i18next/no-literal-string */ +import Papa from "papaparse"; +import { + DelimitedColumnPreview, + DelimitedUploadProcessingOptions, + DetectDelimitedGeometryResult, +} from "./types"; + +const SAMPLE_ROW_LIMIT = 100; +export const DELIMITED_SAMPLE_BYTES = 200_000; +const CANDIDATE_DELIMITERS: DelimitedUploadProcessingOptions["delimiter"][] = [ + ",", + "\t", + ";", + "|", +]; + +// Header synonyms borrowed from how ArcGIS Online and Mapbox Studio detect +// CSV coordinate columns (see plan doc for sources). +const LAT_HEADER_SYNONYMS = new Set([ + "latitude", + "lat", + "y", + "ycenter", + "pointy", + "latdd", + "latdecdeg", + "latitude83", +]); +const LON_HEADER_SYNONYMS = new Set([ + "longitude", + "lon", + "long", + "lng", + "x", + "xcenter", + "pointx", + "londd", + "longdecdeg", + "longitude83", +]); +const WKT_HEADER_NAMES = new Set([ + "wkt", + "geom", + "geometry", + "thegeom", + "shape", +]); +const WKT_VALUE_PATTERN = + /^(SRID=\d+;)?\s*(POINT|LINESTRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)\s*\(/i; + +function normalizeHeader(header: string): string { + return header + .trim() + .toLowerCase() + .replace(/[^a-z0-9]/g, ""); +} + +function isNumeric(value: string): boolean { + if (value.trim() === "") return false; + return Number.isFinite(Number(value)); +} + +const WGS84_ERROR = + "Coordinates must be in WGS 84 (EPSG:4326) decimal degrees. This file appears to use a different coordinate system or column mapping."; + +/** Returns an error message when sample rows are not valid WGS 84 lon/lat. */ +export function validateWgs84PointColumns( + headers: string[], + dataRows: string[][], + xField: string, + yField: string +): string | null { + const xIndex = headers.indexOf(xField); + const yIndex = headers.indexOf(yField); + if (xIndex < 0 || yIndex < 0) return null; + const sample = dataRows.slice(0, 50); + if (!sample.length) return null; + const validRows = sample.filter((r) => { + const x = Number(r[xIndex]); + const y = Number(r[yIndex]); + return ( + Number.isFinite(x) && + Number.isFinite(y) && + Math.abs(x) <= 180 && + Math.abs(y) <= 90 + ); + }); + const validRatio = validRows.length / sample.length; + if (validRatio < 0.9) { + return WGS84_ERROR; + } + return null; +} + +function wgs84ValidRatio( + dataRows: string[][], + xIndex: number, + yIndex: number +): number { + const sample = dataRows.slice(0, 50); + if (!sample.length) return 0; + const validRows = sample.filter((r) => { + const x = Number(r[xIndex]); + const y = Number(r[yIndex]); + return ( + Number.isFinite(x) && + Number.isFinite(y) && + Math.abs(x) <= 180 && + Math.abs(y) <= 90 + ); + }); + return validRows.length / sample.length; +} + +/** Picks the delimiter that produces the most consistent column count across sample rows. */ +function detectDelimiter(sampleText: string): { + delimiter: DelimitedUploadProcessingOptions["delimiter"]; + rows: string[][]; +} { + let best: { + delimiter: DelimitedUploadProcessingOptions["delimiter"]; + rows: string[][]; + score: number; + } | null = null; + + for (const delimiter of CANDIDATE_DELIMITERS) { + const result = Papa.parse(sampleText, { + delimiter, + skipEmptyLines: true, + preview: SAMPLE_ROW_LIMIT, + }); + const rows = result.data; + if (rows.length < 2) continue; + const columnCount = rows[0].length; + if (columnCount < 2) continue; + const consistentRows = rows.filter((r) => r.length === columnCount).length; + const consistency = consistentRows / rows.length; + // Prefer delimiters that extract more columns with high row-to-row + // consistency, and penalize parse errors. + const score = columnCount * consistency - result.errors.length * 0.5; + if (!best || score > best.score) { + best = { delimiter, rows, score }; + } + } + + if (!best) { + const result = Papa.parse(sampleText, { + skipEmptyLines: true, + preview: SAMPLE_ROW_LIMIT, + }); + return { delimiter: ",", rows: result.data }; + } + + return { delimiter: best.delimiter, rows: best.rows }; +} + +/** + * Compares the first row against the rest of the sample to decide whether it + * is a header row. For columns that are consistently numeric in the data + * rows, a non-numeric value in the first row is a strong signal that it's a + * header label rather than data (a first row that is itself numeric in those + * columns means the file likely has no header at all). + */ +function looksLikeHeaderRow(rows: string[][]): boolean { + if (rows.length < 2) return true; + const [first, ...rest] = rows; + let numericColumnCount = 0; + let numericColumnWithNonNumericHeader = 0; + first.forEach((cell, i) => { + const restValues = rest + .map((r) => r[i] ?? "") + .filter((v) => v.trim() !== ""); + if (!restValues.length) return; + const numericRatio = + restValues.filter(isNumeric).length / restValues.length; + if (numericRatio >= 0.8) { + numericColumnCount++; + if (!isNumeric(cell)) numericColumnWithNonNumericHeader++; + } + }); + if (numericColumnCount === 0) { + // No reliably numeric columns to compare against; fall back to a simple + // check for any non-numeric cell in the first row. + return first.some( + (cell) => cell.trim() !== "" && Number.isNaN(Number(cell)) + ); + } + return numericColumnWithNonNumericHeader > 0; +} + +/** + * Inspects a sample of delimited text (CSV/TSV/etc.) and attempts to detect + * the delimiter, header row, and a geometry column or coordinate column pair. + * + * Detection proceeds in priority order: WKT geometry column, then header-name + * based lat/lon columns (the approach used by ArcGIS Online and Mapbox + * Studio), then a numeric-range heuristic fallback for unrecognized headers. + * Confidence is downgraded whenever the result relied on heuristics or + * sampled coordinates fall outside valid WGS 84 ranges, signaling that the + * upload UI should ask the user to confirm or correct the mapping. + */ +export function detectDelimitedGeometry( + sampleText: string +): DetectDelimitedGeometryResult { + const { delimiter, rows: allRows } = detectDelimiter(sampleText); + const warnings: string[] = []; + + if (allRows.length < 2) { + return { + delimiter, + hasHeaderRow: true, + headers: allRows[0] || [], + rows: [], + columns: [], + geometryMode: null, + crs: "EPSG:4326", + confidence: "low", + error: "Could not parse enough rows to detect columns.", + warnings: [], + }; + } + + const hasHeaderRow = looksLikeHeaderRow(allRows); + // Match GDAL's CSV driver naming for headerless files (HEADERS=NO) so that + // the field names selected here line up with what ogr2ogr will produce. + const headers = hasHeaderRow + ? allRows[0] + : allRows[0].map((_, i) => `field_${i + 1}`); + const dataRows = hasHeaderRow ? allRows.slice(1) : allRows; + + const columns: DelimitedColumnPreview[] = headers.map((name, i) => ({ + name, + sampleValues: dataRows.slice(0, 10).map((r) => r[i] ?? ""), + })); + + const base = { + delimiter, + hasHeaderRow, + headers, + rows: dataRows.slice(0, 10), + columns, + }; + + // --- 1. WKT geometry column --- + let geometryField: string | undefined; + for (let i = 0; i < headers.length; i++) { + if (!WKT_HEADER_NAMES.has(normalizeHeader(headers[i]))) continue; + const values = dataRows.slice(0, 20).map((r) => r[i] ?? ""); + const matches = values.filter((v) => WKT_VALUE_PATTERN.test(v)).length; + if ( + values.length > 0 && + matches >= Math.min(3, values.length) && + matches / values.length >= 0.8 + ) { + geometryField = headers[i]; + break; + } + } + + if (geometryField) { + return { + ...base, + geometryMode: "wkt", + geometryField, + crs: "EPSG:4326", + confidence: "high", + warnings, + }; + } + + // --- 2. Header-name based lat/lon detection --- + let xField: string | undefined; + let yField: string | undefined; + for (const header of headers) { + const normalized = normalizeHeader(header); + if (!xField && LON_HEADER_SYNONYMS.has(normalized)) xField = header; + if (!yField && LAT_HEADER_SYNONYMS.has(normalized)) yField = header; + } + + if (xField && yField) { + const xIndex = headers.indexOf(xField); + const yIndex = headers.indexOf(yField); + const validRatio = wgs84ValidRatio(dataRows, xIndex, yIndex); + if (validRatio < 0.9) { + return { + ...base, + geometryMode: "point_xy", + xField, + yField, + crs: "EPSG:4326", + confidence: "low", + error: WGS84_ERROR, + warnings: [], + }; + } + return { + ...base, + geometryMode: "point_xy", + xField, + yField, + crs: "EPSG:4326", + confidence: "high", + warnings, + }; + } + + // --- 3. Numeric-range heuristic fallback --- + const numericColumnIndices = headers + .map((_, i) => i) + .filter((i) => { + const sample = dataRows.slice(0, 100).map((r) => r[i] ?? ""); + const numeric = sample.filter(isNumeric); + return sample.length > 0 && numeric.length / sample.length >= 0.9; + }); + + const inRangeRatio = (i: number, max: number) => { + const sample = dataRows.slice(0, 100).map((r) => Number(r[i])); + const inRange = sample.filter( + (v) => Number.isFinite(v) && Math.abs(v) <= max + ); + return sample.length ? inRange.length / sample.length : 0; + }; + + // Coordinates are almost always fractional, while incidental numeric + // columns (row IDs, counts, etc.) tend to be whole numbers. Prefer + // candidates with decimal values when any are available. + const decimalRatio = (i: number) => { + const sample = dataRows + .slice(0, 100) + .map((r) => r[i] ?? "") + .filter((v) => v.trim() !== ""); + if (!sample.length) return 0; + return sample.filter((v) => v.includes(".")).length / sample.length; + }; + const preferDecimalValues = (indices: number[]) => { + const withDecimals = indices.filter((i) => decimalRatio(i) >= 0.5); + return withDecimals.length ? withDecimals : indices; + }; + + const latCandidateIndices = preferDecimalValues( + numericColumnIndices.filter((i) => inRangeRatio(i, 90) >= 0.85) + ); + const lonCandidateIndices = preferDecimalValues( + numericColumnIndices.filter((i) => inRangeRatio(i, 180) >= 0.85) + ); + + // Prefer a lat candidate that isn't also the only lon candidate, so a + // single ambiguous column isn't used for both axes. + const latIndex = latCandidateIndices.find( + (i) => lonCandidateIndices.length > 1 || lonCandidateIndices[0] !== i + ); + const lonIndex = lonCandidateIndices.find((i) => i !== latIndex); + + if (latIndex !== undefined && lonIndex !== undefined) { + warnings.push( + "Coordinate columns were guessed from numeric value ranges because no recognized header names (e.g. latitude/longitude) were found. Please confirm the mapping." + ); + return { + ...base, + geometryMode: "point_xy", + xField: headers[lonIndex], + yField: headers[latIndex], + crs: "EPSG:4326", + confidence: "low", + warnings, + }; + } + + warnings.push( + "Could not automatically detect coordinate or geometry columns. Please select them manually." + ); + return { + ...base, + geometryMode: null, + crs: "EPSG:4326", + confidence: "low", + warnings, + }; +} + +export function processingOptionsFromDetectionResult( + result: DetectDelimitedGeometryResult +): DelimitedUploadProcessingOptions | null { + if (!result.geometryMode || result.error) return null; + return { + kind: "delimited", + geometryMode: result.geometryMode, + xField: result.xField, + yField: result.yField, + geometryField: result.geometryField, + crs: result.crs, + delimiter: result.delimiter, + hasHeaderRow: result.hasHeaderRow, + }; +} diff --git a/packages/client/src/admin/uploads/delimitedSpatial/resolveDelimitedUploads.ts b/packages/client/src/admin/uploads/delimitedSpatial/resolveDelimitedUploads.ts new file mode 100644 index 000000000..17b905009 --- /dev/null +++ b/packages/client/src/admin/uploads/delimitedSpatial/resolveDelimitedUploads.ts @@ -0,0 +1,70 @@ +import { + DELIMITED_SAMPLE_BYTES, + detectDelimitedGeometry, + processingOptionsFromDetectionResult, +} from "./detectDelimitedGeometry"; +import { + DelimitedUploadProcessingOptions, + DetectDelimitedGeometryResult, +} from "./types"; + +/** Bytes read from each file for client-side column detection. */ +export { DELIMITED_SAMPLE_BYTES } from "./detectDelimitedGeometry"; + +export async function readDelimitedFileSample(file: File): Promise { + return file.slice(0, DELIMITED_SAMPLE_BYTES).text(); +} + +export async function detectDelimitedGeometryFromFile( + file: File +): Promise { + const sample = await readDelimitedFileSample(file); + return detectDelimitedGeometry(sample); +} + +/** True when detection is confident enough to upload without the config modal. */ +export function isAutoUploadReady(result: DetectDelimitedGeometryResult): boolean { + return ( + !result.error && + result.confidence === "high" && + Boolean(processingOptionsFromDetectionResult(result)) + ); +} + +export function getDelimitedUploadBlockingError( + result: DetectDelimitedGeometryResult, + fileName?: string +): string | null { + if (!result.error) return null; + return fileName ? `${fileName}: ${result.error}` : result.error; +} + +export type ResolvedDelimitedUpload = { + file: File; + detection: DetectDelimitedGeometryResult; + processingOptions: DelimitedUploadProcessingOptions | null; + needsConfig: boolean; + blockingError: string | null; +}; + +export async function resolveDelimitedUploads( + files: File[] +): Promise { + return Promise.all( + files.map(async (file) => { + const detection = await detectDelimitedGeometryFromFile(file); + const processingOptions = processingOptionsFromDetectionResult(detection); + const blockingError = getDelimitedUploadBlockingError( + detection, + file.name + ); + return { + file, + detection, + processingOptions, + needsConfig: !isAutoUploadReady(detection), + blockingError, + }; + }) + ); +} diff --git a/packages/client/src/admin/uploads/delimitedSpatial/types.ts b/packages/client/src/admin/uploads/delimitedSpatial/types.ts new file mode 100644 index 000000000..3eab6feec --- /dev/null +++ b/packages/client/src/admin/uploads/delimitedSpatial/types.ts @@ -0,0 +1,44 @@ +/** + * Processing instructions for delimited text (CSV/TSV/TXT) spatial uploads. + * + * This shape mirrors `DelimitedUploadProcessingOptions` defined in the + * `spatial-uploads-handler` package, which is the source of truth consumed + * server-side. It is duplicated here (rather than imported) because that + * package pulls in Node/GDAL-only dependencies that should not be bundled + * into the client. Keep both definitions in sync when making changes. + */ +export type DelimitedUploadProcessingOptions = { + kind: "delimited"; + geometryMode: "point_xy" | "wkt"; + xField?: string; + yField?: string; + geometryField?: string; + crs: string; + delimiter: "," | "\t" | ";" | "|"; + hasHeaderRow: boolean; +}; + +export type DelimitedGeometryConfidence = "high" | "medium" | "low"; + +export type DelimitedColumnPreview = { + name: string; + sampleValues: string[]; +}; + +export type DetectDelimitedGeometryResult = { + delimiter: DelimitedUploadProcessingOptions["delimiter"]; + hasHeaderRow: boolean; + headers: string[]; + rows: string[][]; + columns: DelimitedColumnPreview[]; + geometryMode: "point_xy" | "wkt" | null; + xField?: string; + yField?: string; + geometryField?: string; + crs: string; + confidence: DelimitedGeometryConfidence; + /** When set, the file cannot be uploaded until the issue is resolved. */ + error?: string | null; + /** Human-readable reasons the result has medium/low confidence. */ + warnings: string[]; +}; diff --git a/packages/client/src/dataLayers/DataDownloadModal.tsx b/packages/client/src/dataLayers/DataDownloadModal.tsx index f6ce2be82..d25137a56 100644 --- a/packages/client/src/dataLayers/DataDownloadModal.tsx +++ b/packages/client/src/dataLayers/DataDownloadModal.tsx @@ -327,6 +327,10 @@ function DownloadFormatDescription({ type }: { type: DataUploadOutputType }) { are a compressed binary format compatible with most software. ); + case DataUploadOutputType.Csv: + return t( + "Delimited text file (e.g. CSV), compatible with excel and other spreadsheet software." + ); default: return null; } diff --git a/packages/client/src/generated/graphql.ts b/packages/client/src/generated/graphql.ts index 5f2bd9eeb..c365d9c63 100644 --- a/packages/client/src/generated/graphql.ts +++ b/packages/client/src/generated/graphql.ts @@ -1510,6 +1510,7 @@ export type CreateDataUploadInput = { clientMutationId?: Maybe; contentType?: Maybe; filename?: Maybe; + processingOptions?: Maybe; projectId?: Maybe; replaceTableOfContentsItemId?: Maybe; }; @@ -3649,6 +3650,7 @@ export type DataUploadOutput = Node & { }; export enum DataUploadOutputType { + Csv = 'CSV', FlatGeobuf = 'FLAT_GEOBUF', GeoJson = 'GEO_JSON', GeoTiff = 'GEO_TIFF', @@ -3680,6 +3682,12 @@ export type DataUploadTask = Node & { outputs?: Maybe; /** Use to upload source data to s3. Must be an admin. */ presignedUploadUrl?: Maybe; + /** + * Format-specific processing instructions supplied by the client at upload time + * (e.g. column mapping and CRS for delimited text uploads). Consumed by the + * spatial-uploads-handler. + */ + processingOptions?: Maybe; /** Reads a single `ProjectBackgroundJob` that is related to this `DataUploadTask`. */ projectBackgroundJob?: Maybe; projectBackgroundJobId: Scalars['UUID']; @@ -20532,6 +20540,7 @@ export type CreateDataUploadMutationVariables = Exact<{ filename: Scalars['String']; contentType: Scalars['String']; replaceTableOfContentsItemId?: Maybe; + processingOptions?: Maybe; }>; @@ -31531,9 +31540,9 @@ export type DashboardBannerStatsQueryHookResult = ReturnType; export type DashboardBannerStatsQueryResult = Apollo.QueryResult; export const CreateDataUploadDocument = gql` - mutation createDataUpload($projectId: Int!, $filename: String!, $contentType: String!, $replaceTableOfContentsItemId: Int) { + mutation createDataUpload($projectId: Int!, $filename: String!, $contentType: String!, $replaceTableOfContentsItemId: Int, $processingOptions: JSON) { createDataUpload( - input: {filename: $filename, projectId: $projectId, contentType: $contentType, replaceTableOfContentsItemId: $replaceTableOfContentsItemId} + input: {filename: $filename, projectId: $projectId, contentType: $contentType, replaceTableOfContentsItemId: $replaceTableOfContentsItemId, processingOptions: $processingOptions} ) { dataUploadTask { ...DataUploadExtendedDetails @@ -31561,6 +31570,7 @@ export type CreateDataUploadMutationFn = Apollo.MutationFunction; contentType?: Maybe; filename?: Maybe; + processingOptions?: Maybe; projectId?: Maybe; replaceTableOfContentsItemId?: Maybe; }; @@ -3647,6 +3648,7 @@ export type DataUploadOutput = Node & { }; export enum DataUploadOutputType { + Csv = 'CSV', FlatGeobuf = 'FLAT_GEOBUF', GeoJson = 'GEO_JSON', GeoTiff = 'GEO_TIFF', @@ -3678,6 +3680,12 @@ export type DataUploadTask = Node & { outputs?: Maybe; /** Use to upload source data to s3. Must be an admin. */ presignedUploadUrl?: Maybe; + /** + * Format-specific processing instructions supplied by the client at upload time + * (e.g. column mapping and CRS for delimited text uploads). Consumed by the + * spatial-uploads-handler. + */ + processingOptions?: Maybe; /** Reads a single `ProjectBackgroundJob` that is related to this `DataUploadTask`. */ projectBackgroundJob?: Maybe; projectBackgroundJobId: Scalars['UUID']; @@ -20530,6 +20538,7 @@ export type CreateDataUploadMutationVariables = Exact<{ filename: Scalars['String']; contentType: Scalars['String']; replaceTableOfContentsItemId?: Maybe; + processingOptions?: Maybe; }>; @@ -29991,9 +30000,9 @@ export const DashboardBannerStatsDocument = /*#__PURE__*/ gql` } `; export const CreateDataUploadDocument = /*#__PURE__*/ gql` - mutation createDataUpload($projectId: Int!, $filename: String!, $contentType: String!, $replaceTableOfContentsItemId: Int) { + mutation createDataUpload($projectId: Int!, $filename: String!, $contentType: String!, $replaceTableOfContentsItemId: Int, $processingOptions: JSON) { createDataUpload( - input: {filename: $filename, projectId: $projectId, contentType: $contentType, replaceTableOfContentsItemId: $replaceTableOfContentsItemId} + input: {filename: $filename, projectId: $projectId, contentType: $contentType, replaceTableOfContentsItemId: $replaceTableOfContentsItemId, processingOptions: $processingOptions} ) { dataUploadTask { ...DataUploadExtendedDetails diff --git a/packages/client/src/index.css b/packages/client/src/index.css index 729161ba0..a4892a2b8 100644 --- a/packages/client/src/index.css +++ b/packages/client/src/index.css @@ -5838,6 +5838,11 @@ select{ right:-2.5rem } +.-inset-x-16{ + left:-4rem; + right:-4rem +} + .-inset-x-20{ left:-5rem; right:-5rem @@ -5858,6 +5863,11 @@ select{ right:-1.5rem } +.-inset-x-8{ + left:-2rem; + right:-2rem +} + .-inset-y-10{ top:-2.5rem; bottom:-2.5rem @@ -5898,19 +5908,9 @@ select{ right:0px } -.inset-y-0{ - top:0px; - bottom:0px -} - -.-inset-x-8{ - left:-2rem; - right:-2rem -} - -.-inset-x-16{ - left:-4rem; - right:-4rem +.inset-x-6{ + left:1.5rem; + right:1.5rem } .inset-x-8{ @@ -5918,9 +5918,9 @@ select{ right:2rem } -.inset-x-6{ - left:1.5rem; - right:1.5rem +.inset-y-0{ + top:0px; + bottom:0px } .\!-bottom-2{ @@ -6499,6 +6499,10 @@ select{ top:3rem } +.top-16{ + top:4rem +} + .top-2{ top:0.5rem } @@ -6563,50 +6567,6 @@ select{ top:1px } -.bottom-\[10\%\]{ - bottom:10% -} - -.left-\[0\%\]{ - left:0% -} - -.left-\[2\%\]{ - left:2% -} - -.right-\[-2\%\]{ - right:-2% -} - -.right-\[0\%\]{ - right:0% -} - -.right-\[4\%\]{ - right:4% -} - -.top-16{ - top:4rem -} - -.top-\[2\%\]{ - top:2% -} - -.top-\[4\%\]{ - top:4% -} - -.top-\[6\%\]{ - top:6% -} - -.top-1\/4{ - top:25% -} - .isolate{ isolation:isolate } @@ -6723,6 +6683,14 @@ select{ order:0 } +.col-span-1{ + grid-column:span 1 / span 1 +} + +.col-span-12{ + grid-column:span 12 / span 12 +} + .col-span-2{ grid-column:span 2 / span 2 } @@ -6731,10 +6699,18 @@ select{ grid-column:span 4 / span 4 } +.col-span-5{ + grid-column:span 5 / span 5 +} + .col-span-6{ grid-column:span 6 / span 6 } +.col-span-7{ + grid-column:span 7 / span 7 +} + .col-span-8{ grid-column:span 8 / span 8 } @@ -6743,22 +6719,6 @@ select{ grid-column:1 / -1 } -.col-span-1{ - grid-column:span 1 / span 1 -} - -.col-span-12{ - grid-column:span 12 / span 12 -} - -.col-span-5{ - grid-column:span 5 / span 5 -} - -.col-span-7{ - grid-column:span 7 / span 7 -} - .col-start-1{ grid-column-start:1 } @@ -7440,6 +7400,10 @@ select{ margin-top:6rem } +.mt-28{ + margin-top:7rem +} + .mt-3{ margin-top:0.75rem } @@ -7448,6 +7412,10 @@ select{ margin-top:0.875rem } +.mt-32{ + margin-top:8rem +} + .mt-4{ margin-top:1rem } @@ -7476,14 +7444,6 @@ select{ margin-top:2px } -.mt-28{ - margin-top:7rem -} - -.mt-32{ - margin-top:8rem -} - .box-border{ box-sizing:border-box } @@ -7830,10 +7790,6 @@ select{ height:100vh } -.h-\[360px\]{ - height:360px -} - .max-h-128{ max-height:32rem } @@ -8408,26 +8364,6 @@ select{ width:100vw } -.w-\[44\%\]{ - width:44% -} - -.w-\[46\%\]{ - width:46% -} - -.w-\[min\(92\%\2c 21rem\)\]{ - width:min(92%,21rem) -} - -.w-\[min\(72vw\2c 17\.5rem\)\]{ - width:min(72vw,17.5rem) -} - -.w-\[380px\]{ - width:380px -} - .min-w-0{ min-width:0px } @@ -8664,6 +8600,10 @@ select{ max-width:24rem } +.max-w-\[100vw\]{ + max-width:100vw +} + .max-w-\[11rem\]{ max-width:11rem } @@ -8844,10 +8784,6 @@ select{ max-width:20rem } -.max-w-\[100vw\]{ - max-width:100vw -} - .flex-1{ flex:1 1 0% } @@ -8934,6 +8870,10 @@ select{ transform-origin:bottom right } +.origin-center{ + transform-origin:center +} + .origin-left{ transform-origin:left } @@ -8950,10 +8890,6 @@ select{ transform-origin:top right } -.origin-center{ - transform-origin:center -} - .-translate-x-0{ --tw-translate-x:-0px; transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) @@ -9119,18 +9055,13 @@ select{ transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) } -.translate-y-px{ - --tw-translate-y:1px; - transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) -} - -.translate-x-1\/3{ - --tw-translate-x:33.333333%; +.translate-y-5{ + --tw-translate-y:1.25rem; transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) } -.translate-y-5{ - --tw-translate-y:1.25rem; +.translate-y-px{ + --tw-translate-y:1px; transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) } @@ -9194,36 +9125,6 @@ select{ transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) } -.-rotate-\[1\.5deg\]{ - --tw-rotate:-1.5deg; - transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) -} - -.-rotate-\[14deg\]{ - --tw-rotate:-14deg; - transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) -} - -.-rotate-\[9deg\]{ - --tw-rotate:-9deg; - transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) -} - -.rotate-\[10deg\]{ - --tw-rotate:10deg; - transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) -} - -.rotate-\[12deg\]{ - --tw-rotate:12deg; - transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) -} - -.rotate-\[9deg\]{ - --tw-rotate:9deg; - transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) -} - .scale-100{ --tw-scale-x:1; --tw-scale-y:1; @@ -10140,14 +10041,6 @@ select{ border-radius:0.75rem } -.rounded-\[1\.75rem\]{ - border-radius:1.75rem -} - -.rounded-\[2rem\]{ - border-radius:2rem -} - .rounded-b{ border-bottom-right-radius:0.25rem; border-bottom-left-radius:0.25rem @@ -10818,10 +10711,6 @@ select{ border-color:rgb(63 63 70 / var(--tw-border-opacity, 1)) } -.border-white\/90{ - border-color:rgb(255 255 255 / 0.9) -} - .border-b-black{ --tw-border-opacity:1; border-bottom-color:rgb(0 0 0 / var(--tw-border-opacity, 1)) @@ -11312,6 +11201,10 @@ select{ background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1)) } +.bg-gray-800\/80{ + background-color:rgb(31 41 55 / 0.8) +} + .bg-gray-900{ --tw-bg-opacity:1; background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1)) @@ -11730,6 +11623,11 @@ select{ background-color:rgb(237 233 254 / var(--tw-bg-opacity, 1)) } +.bg-violet-300{ + --tw-bg-opacity:1; + background-color:rgb(196 181 253 / var(--tw-bg-opacity, 1)) +} + .bg-violet-400{ --tw-bg-opacity:1; background-color:rgb(167 139 250 / var(--tw-bg-opacity, 1)) @@ -11834,27 +11732,6 @@ select{ background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1)) } -.bg-sky-300\/30{ - background-color:rgb(125 211 252 / 0.3) -} - -.bg-violet-300\/25{ - background-color:rgb(196 181 253 / 0.25) -} - -.bg-violet-300{ - --tw-bg-opacity:1; - background-color:rgb(196 181 253 / var(--tw-bg-opacity, 1)) -} - -.bg-sky-200\/40{ - background-color:rgb(186 230 253 / 0.4) -} - -.bg-white\/75{ - background-color:rgb(255 255 255 / 0.75) -} - .bg-opacity-10{ --tw-bg-opacity:0.1 } @@ -11943,6 +11820,10 @@ select{ background-image:linear-gradient(to bottom right, var(--tw-gradient-stops)) } +.bg-gradient-to-l{ + background-image:linear-gradient(to left, var(--tw-gradient-stops)) +} + .bg-gradient-to-r{ background-image:linear-gradient(to right, var(--tw-gradient-stops)) } @@ -11959,10 +11840,6 @@ select{ background-image:linear-gradient(to top right, var(--tw-gradient-stops)) } -.bg-gradient-to-l{ - background-image:linear-gradient(to left, var(--tw-gradient-stops)) -} - .from-amber-50{ --tw-gradient-from:#fffbeb var(--tw-gradient-from-position); --tw-gradient-to:rgb(255 251 235 / 0) var(--tw-gradient-to-position); @@ -12065,6 +11942,18 @@ select{ --tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to) } +.from-sky-100{ + --tw-gradient-from:#e0f2fe var(--tw-gradient-from-position); + --tw-gradient-to:rgb(224 242 254 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to) +} + +.from-sky-200{ + --tw-gradient-from:#bae6fd var(--tw-gradient-from-position); + --tw-gradient-to:rgb(186 230 253 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to) +} + .from-sky-300{ --tw-gradient-from:#7dd3fc var(--tw-gradient-from-position); --tw-gradient-to:rgb(125 211 252 / 0) var(--tw-gradient-to-position); @@ -12191,36 +12080,6 @@ select{ --tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to) } -.from-sky-200\/50{ - --tw-gradient-from:rgb(186 230 253 / 0.5) var(--tw-gradient-from-position); - --tw-gradient-to:rgb(186 230 253 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to) -} - -.from-sky-200{ - --tw-gradient-from:#bae6fd var(--tw-gradient-from-position); - --tw-gradient-to:rgb(186 230 253 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to) -} - -.from-sky-100\/70{ - --tw-gradient-from:rgb(224 242 254 / 0.7) var(--tw-gradient-from-position); - --tw-gradient-to:rgb(224 242 254 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to) -} - -.from-sky-100{ - --tw-gradient-from:#e0f2fe var(--tw-gradient-from-position); - --tw-gradient-to:rgb(224 242 254 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to) -} - -.from-sky-100\/80{ - --tw-gradient-from:rgb(224 242 254 / 0.8) var(--tw-gradient-from-position); - --tw-gradient-to:rgb(224 242 254 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to) -} - .via-cool-gray-800{ --tw-gradient-to:rgb(31 41 55 / 0) var(--tw-gradient-to-position); --tw-gradient-stops:var(--tw-gradient-from), #1F2937 var(--tw-gradient-via-position), var(--tw-gradient-to) @@ -12251,6 +12110,16 @@ select{ --tw-gradient-stops:var(--tw-gradient-from), #eef2ff var(--tw-gradient-via-position), var(--tw-gradient-to) } +.via-slate-100{ + --tw-gradient-to:rgb(241 245 249 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops:var(--tw-gradient-from), #f1f5f9 var(--tw-gradient-via-position), var(--tw-gradient-to) +} + +.via-slate-100\/80{ + --tw-gradient-to:rgb(241 245 249 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops:var(--tw-gradient-from), rgb(241 245 249 / 0.8) var(--tw-gradient-via-position), var(--tw-gradient-to) +} + .via-slate-50{ --tw-gradient-to:rgb(248 250 252 / 0) var(--tw-gradient-to-position); --tw-gradient-stops:var(--tw-gradient-from), #f8fafc var(--tw-gradient-via-position), var(--tw-gradient-to) @@ -12281,29 +12150,14 @@ select{ --tw-gradient-stops:var(--tw-gradient-from), rgb(2 6 23 / 0.3) var(--tw-gradient-via-position), var(--tw-gradient-to) } -.via-white{ - --tw-gradient-to:rgb(255 255 255 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops:var(--tw-gradient-from), #fff var(--tw-gradient-via-position), var(--tw-gradient-to) -} - -.via-violet-200\/30{ - --tw-gradient-to:rgb(221 214 254 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops:var(--tw-gradient-from), rgb(221 214 254 / 0.3) var(--tw-gradient-via-position), var(--tw-gradient-to) -} - .via-violet-200{ --tw-gradient-to:rgb(221 214 254 / 0) var(--tw-gradient-to-position); --tw-gradient-stops:var(--tw-gradient-from), #ddd6fe var(--tw-gradient-via-position), var(--tw-gradient-to) } -.via-slate-100\/80{ - --tw-gradient-to:rgb(241 245 249 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops:var(--tw-gradient-from), rgb(241 245 249 / 0.8) var(--tw-gradient-via-position), var(--tw-gradient-to) -} - -.via-slate-100{ - --tw-gradient-to:rgb(241 245 249 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops:var(--tw-gradient-from), #f1f5f9 var(--tw-gradient-via-position), var(--tw-gradient-to) +.via-white{ + --tw-gradient-to:rgb(255 255 255 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops:var(--tw-gradient-from), #fff var(--tw-gradient-via-position), var(--tw-gradient-to) } .to-amber-50{ @@ -12318,6 +12172,10 @@ select{ --tw-gradient-to:#111827 var(--tw-gradient-to-position) } +.to-emerald-200{ + --tw-gradient-to:#a7f3d0 var(--tw-gradient-to-position) +} + .to-emerald-300{ --tw-gradient-to:#6ee7b7 var(--tw-gradient-to-position) } @@ -12426,6 +12284,10 @@ select{ --tw-gradient-to:transparent var(--tw-gradient-to-position) } +.to-violet-100{ + --tw-gradient-to:#ede9fe var(--tw-gradient-to-position) +} + .to-white{ --tw-gradient-to:#fff var(--tw-gradient-to-position) } @@ -12438,26 +12300,6 @@ select{ --tw-gradient-to:rgb(252 211 77 / 0.3) var(--tw-gradient-to-position) } -.to-emerald-200\/40{ - --tw-gradient-to:rgb(167 243 208 / 0.4) var(--tw-gradient-to-position) -} - -.to-emerald-200{ - --tw-gradient-to:#a7f3d0 var(--tw-gradient-to-position) -} - -.to-violet-100\/50{ - --tw-gradient-to:rgb(237 233 254 / 0.5) var(--tw-gradient-to-position) -} - -.to-violet-100{ - --tw-gradient-to:#ede9fe var(--tw-gradient-to-position) -} - -.to-violet-100\/60{ - --tw-gradient-to:rgb(237 233 254 / 0.6) var(--tw-gradient-to-position) -} - .bg-contain{ background-size:contain } @@ -12817,11 +12659,6 @@ select{ padding-bottom:1px } -.py-\[5px\]{ - padding-top:5px; - padding-bottom:5px -} - .\!pl-0{ padding-left:0px !important } @@ -13126,10 +12963,6 @@ select{ padding-top:1px } -.pl-\[calc\(min\(36vw\2c 8\.75rem\)\+0\.625rem\)\]{ - padding-left:calc(min(36vw,8.75rem) + 0.625rem) -} - .text-left{ text-align:left } @@ -14082,11 +13915,21 @@ select{ text-decoration-line:none } +.decoration-amber-700{ + -webkit-text-decoration-color:#b45309; + text-decoration-color:#b45309 +} + .decoration-blue-400{ -webkit-text-decoration-color:#60a5fa; text-decoration-color:#60a5fa } +.decoration-blue-800{ + -webkit-text-decoration-color:#1e40af; + text-decoration-color:#1e40af +} + .decoration-gray-500{ -webkit-text-decoration-color:#6b7280; text-decoration-color:#6b7280 @@ -14107,16 +13950,6 @@ select{ text-decoration-color:#fff } -.decoration-amber-700{ - -webkit-text-decoration-color:#b45309; - text-decoration-color:#b45309 -} - -.decoration-blue-800{ - -webkit-text-decoration-color:#1e40af; - text-decoration-color:#1e40af -} - .decoration-dotted{ -webkit-text-decoration-style:dotted; text-decoration-style:dotted @@ -14320,18 +14153,6 @@ select{ box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) } -.shadow-\[0_20px_50px_-16px_rgba\(15\2c 23\2c 42\2c 0\.38\)\]{ - --tw-shadow:0 20px 50px -16px rgba(15,23,42,0.38); - --tw-shadow-colored:0 20px 50px -16px var(--tw-shadow-color); - box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) -} - -.shadow-\[0_28px_70px_-18px_rgba\(15\2c 23\2c 42\2c 0\.45\)\]{ - --tw-shadow:0 28px 70px -18px rgba(15,23,42,0.45); - --tw-shadow-colored:0 28px 70px -18px var(--tw-shadow-color); - box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) -} - .shadow-black{ --tw-shadow-color:#000; --tw-shadow:var(--tw-shadow-colored) @@ -14357,23 +14178,13 @@ select{ --tw-shadow:var(--tw-shadow-colored) } -.shadow-slate-300\/40{ - --tw-shadow-color:rgb(203 213 225 / 0.4); - --tw-shadow:var(--tw-shadow-colored) -} - -.shadow-slate-300\/35{ - --tw-shadow-color:rgb(203 213 225 / 0.35); - --tw-shadow:var(--tw-shadow-colored) -} - -.shadow-slate-300\/30{ - --tw-shadow-color:rgb(203 213 225 / 0.3); +.shadow-slate-300\/25{ + --tw-shadow-color:rgb(203 213 225 / 0.25); --tw-shadow:var(--tw-shadow-colored) } -.shadow-slate-300\/25{ - --tw-shadow-color:rgb(203 213 225 / 0.25); +.shadow-slate-300\/40{ + --tw-shadow-color:rgb(203 213 225 / 0.4); --tw-shadow:var(--tw-shadow-colored) } @@ -14709,6 +14520,14 @@ select{ --tw-ring-color:rgb(226 232 240 / var(--tw-ring-opacity, 1)) } +.ring-slate-200\/50{ + --tw-ring-color:rgb(226 232 240 / 0.5) +} + +.ring-slate-200\/60{ + --tw-ring-color:rgb(226 232 240 / 0.6) +} + .ring-slate-200\/70{ --tw-ring-color:rgb(226 232 240 / 0.7) } @@ -14763,18 +14582,6 @@ select{ --tw-ring-color:rgb(253 230 138 / var(--tw-ring-opacity, 1)) } -.ring-slate-200\/60{ - --tw-ring-color:rgb(226 232 240 / 0.6) -} - -.ring-white\/80{ - --tw-ring-color:rgb(255 255 255 / 0.8) -} - -.ring-slate-200\/50{ - --tw-ring-color:rgb(226 232 240 / 0.5) -} - .ring-opacity-10{ --tw-ring-opacity:0.1 } @@ -14985,12 +14792,6 @@ select{ transition-duration:150ms } -.transition-\[transform\2c box-shadow\]{ - transition-property:transform,box-shadow; - transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1); - transition-duration:150ms -} - .delay-100{ transition-delay:100ms } @@ -15530,16 +15331,6 @@ input[type="checkbox"][indeterminate="true"]:checked { --tw-ring-opacity:0.5 } -.hover\:-translate-y-0\.5:hover{ - --tw-translate-y:-0.125rem; - transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) -} - -.hover\:-translate-y-1:hover{ - --tw-translate-y:-0.25rem; - transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) -} - .hover\:scale-125:hover{ --tw-scale-x:1.25; --tw-scale-y:1.25; @@ -15919,6 +15710,11 @@ input[type="checkbox"][indeterminate="true"]:checked { color:rgb(219 234 254 / var(--tw-text-opacity, 1)) } +.hover\:text-blue-200:hover{ + --tw-text-opacity:1; + color:rgb(191 219 254 / var(--tw-text-opacity, 1)) +} + .hover\:text-blue-300:hover{ --tw-text-opacity:1; color:rgb(147 197 253 / var(--tw-text-opacity, 1)) @@ -16110,12 +15906,6 @@ input[type="checkbox"][indeterminate="true"]:checked { box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) } -.hover\:shadow-xl:hover{ - --tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); - --tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); - box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) -} - .hover\:outline:hover{ outline-style:solid } @@ -16139,14 +15929,14 @@ input[type="checkbox"][indeterminate="true"]:checked { --tw-ring-color:rgb(186 230 253 / var(--tw-ring-opacity, 1)) } -.hover\:ring-white\/20:hover{ - --tw-ring-color:rgb(255 255 255 / 0.2) -} - .hover\:ring-sky-200\/80:hover{ --tw-ring-color:rgb(186 230 253 / 0.8) } +.hover\:ring-white\/20:hover{ + --tw-ring-color:rgb(255 255 255 / 0.2) +} + .hover\:brightness-95:hover{ --tw-brightness:brightness(.95); filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) @@ -17055,6 +16845,10 @@ input[type="checkbox"][indeterminate="true"]:checked { margin-top:2.5rem } + .sm\:mt-12{ + margin-top:3rem + } + .sm\:mt-16{ margin-top:4rem } @@ -17071,10 +16865,6 @@ input[type="checkbox"][indeterminate="true"]:checked { margin-top:1.25rem } - .sm\:mt-12{ - margin-top:3rem - } - .sm\:block{ display:block } @@ -17131,10 +16921,6 @@ input[type="checkbox"][indeterminate="true"]:checked { height:100vh } - .sm\:h-\[400px\]{ - height:400px - } - .sm\:max-h-\[min\(90vh\2c calc\(100vh-3rem\)\)\]{ max-height:min(90vh,calc(100vh - 3rem)) } @@ -17151,6 +16937,10 @@ input[type="checkbox"][indeterminate="true"]:checked { width:2.5rem } + .sm\:w-16{ + width:4rem + } + .sm\:w-36{ width:9rem } @@ -17180,20 +16970,8 @@ input[type="checkbox"][indeterminate="true"]:checked { width:max-content } - .sm\:w-\[38\%\]{ - width:38% - } - - .sm\:w-\[min\(78\%\2c 24rem\)\]{ - width:min(78%,24rem) - } - - .sm\:w-16{ - width:4rem - } - - .sm\:w-64{ - width:16rem + .sm\:w-\[34rem\]{ + width:34rem } .sm\:max-w-2xl{ @@ -17319,10 +17097,6 @@ input[type="checkbox"][indeterminate="true"]:checked { gap:1px } - .sm\:gap-5{ - gap:1.25rem - } - .sm\:gap-x-4{ column-gap:1rem } @@ -17345,12 +17119,6 @@ input[type="checkbox"][indeterminate="true"]:checked { margin-bottom:calc(0px * var(--tw-space-y-reverse)) } - .sm\:space-y-5 > :not([hidden]) ~ :not([hidden]){ - --tw-space-y-reverse:0; - margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom:calc(1.25rem * var(--tw-space-y-reverse)) - } - .sm\:divide-y > :not([hidden]) ~ :not([hidden]){ --tw-divide-y-reverse:0; border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse))); @@ -17445,10 +17213,6 @@ input[type="checkbox"][indeterminate="true"]:checked { padding:2rem } - .sm\:p-5{ - padding:1.25rem - } - .sm\:px-0{ padding-left:0px; padding-right:0px @@ -17522,10 +17286,6 @@ input[type="checkbox"][indeterminate="true"]:checked { padding-top:0.5rem } - .sm\:pl-\[calc\(8rem\+0\.625rem\)\]{ - padding-left:calc(8rem + 0.625rem) - } - .sm\:text-left{ text-align:left } @@ -17649,11 +17409,6 @@ input[type="checkbox"][indeterminate="true"]:checked { bottom:-6rem } - .md\:-inset-x-16{ - left:-4rem; - right:-4rem - } - .md\:-left-10{ left:-2.5rem } @@ -17722,10 +17477,6 @@ input[type="checkbox"][indeterminate="true"]:checked { top:25% } - .md\:top-\[30\%\]{ - top:30% - } - .md\:order-1{ order:1 } @@ -17754,26 +17505,10 @@ input[type="checkbox"][indeterminate="true"]:checked { grid-column:span 8 / span 8 } - .md\:col-span-12{ - grid-column:span 12 / span 12 - } - - .md\:col-span-5{ - grid-column:span 5 / span 5 - } - - .md\:col-span-7{ - grid-column:span 7 / span 7 - } - .md\:row-span-2{ grid-row:span 2 / span 2 } - .md\:row-span-3{ - grid-row:span 3 / span 3 - } - .md\:m-1{ margin:0.25rem } @@ -17812,10 +17547,6 @@ input[type="checkbox"][indeterminate="true"]:checked { margin-top:0px } - .md\:mt-14{ - margin-top:3.5rem - } - .md\:mt-28{ margin-top:7rem } @@ -17872,14 +17603,6 @@ input[type="checkbox"][indeterminate="true"]:checked { height:100dvh } - .md\:h-\[460px\]{ - height:460px - } - - .md\:h-64{ - height:16rem - } - .md\:max-h-\[100dvh\]{ max-height:100dvh } @@ -17900,6 +17623,10 @@ input[type="checkbox"][indeterminate="true"]:checked { min-height:100vh } + .md\:w-24{ + width:6rem + } + .md\:w-40{ width:10rem } @@ -17936,22 +17663,6 @@ input[type="checkbox"][indeterminate="true"]:checked { width:100% } - .md\:w-\[40\%\]{ - width:40% - } - - .md\:w-\[min\(68\%\2c 26rem\)\]{ - width:min(68%,26rem) - } - - .md\:w-24{ - width:6rem - } - - .md\:w-72{ - width:18rem - } - .md\:min-w-lg{ min-width:32rem } @@ -18008,11 +17719,6 @@ input[type="checkbox"][indeterminate="true"]:checked { flex-shrink:0 } - .md\:translate-y-5{ - --tw-translate-y:1.25rem; - transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) - } - .md\:scale-100{ --tw-scale-x:1; --tw-scale-y:1; @@ -18097,14 +17803,6 @@ input[type="checkbox"][indeterminate="true"]:checked { gap:2rem } - .md\:gap-5{ - gap:1.25rem - } - - .md\:gap-6{ - gap:1.5rem - } - .md\:space-x-2 > :not([hidden]) ~ :not([hidden]){ --tw-space-x-reverse:0; margin-right:calc(0.5rem * var(--tw-space-x-reverse)); @@ -18129,10 +17827,6 @@ input[type="checkbox"][indeterminate="true"]:checked { margin-bottom:calc(5rem * var(--tw-space-y-reverse)) } - .md\:justify-self-center{ - justify-self:center - } - .md\:overflow-visible{ overflow:visible } @@ -18199,6 +17893,11 @@ input[type="checkbox"][indeterminate="true"]:checked { padding:2rem } + .md\:px-3{ + padding-left:0.75rem; + padding-right:0.75rem + } + .md\:px-4{ padding-left:1rem; padding-right:1rem @@ -18229,11 +17928,6 @@ input[type="checkbox"][indeterminate="true"]:checked { padding-bottom:1.5rem } - .md\:px-3{ - padding-left:0.75rem; - padding-right:0.75rem - } - .md\:pb-10{ padding-bottom:2.5rem } @@ -18266,10 +17960,6 @@ input[type="checkbox"][indeterminate="true"]:checked { padding-top:4rem } - .md\:pl-\[calc\(9rem\+0\.75rem\)\]{ - padding-left:calc(9rem + 0.75rem) - } - .md\:text-2xl{ font-size:1.5rem; line-height:2rem @@ -18409,16 +18099,16 @@ input[type="checkbox"][indeterminate="true"]:checked { margin-top:3rem } - .lg\:mt-6{ - margin-top:1.5rem + .lg\:mt-14{ + margin-top:3.5rem } .lg\:mt-32{ margin-top:8rem } - .lg\:mt-14{ - margin-top:3.5rem + .lg\:mt-6{ + margin-top:1.5rem } .lg\:block{ @@ -18457,10 +18147,6 @@ input[type="checkbox"][indeterminate="true"]:checked { height:16rem } - .lg\:h-\[500px\]{ - height:500px - } - .lg\:min-h-\[420px\]{ min-height:420px } @@ -18493,10 +18179,6 @@ input[type="checkbox"][indeterminate="true"]:checked { width:24rem } - .lg\:w-80{ - width:20rem - } - .lg\:max-w-2xl{ max-width:42rem } @@ -18541,10 +18223,6 @@ input[type="checkbox"][indeterminate="true"]:checked { max-width:36rem } - .lg\:max-w-4xl{ - max-width:56rem - } - .lg\:flex-none{ flex:none } @@ -18610,10 +18288,6 @@ input[type="checkbox"][indeterminate="true"]:checked { gap:2rem } - .lg\:gap-6{ - gap:1.5rem - } - .lg\:space-x-5 > :not([hidden]) ~ :not([hidden]){ --tw-space-x-reverse:0; margin-right:calc(1.25rem * var(--tw-space-x-reverse)); @@ -18626,12 +18300,6 @@ input[type="checkbox"][indeterminate="true"]:checked { margin-bottom:calc(7rem * var(--tw-space-y-reverse)) } - .lg\:space-y-6 > :not([hidden]) ~ :not([hidden]){ - --tw-space-y-reverse:0; - margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom:calc(1.5rem * var(--tw-space-y-reverse)) - } - .lg\:p-4{ padding:1rem } @@ -18711,10 +18379,6 @@ input[type="checkbox"][indeterminate="true"]:checked { padding-top:6rem } - .lg\:pl-\[calc\(10rem\+0\.75rem\)\]{ - padding-left:calc(10rem + 0.75rem) - } - .lg\:text-left{ text-align:left } @@ -18724,6 +18388,11 @@ input[type="checkbox"][indeterminate="true"]:checked { line-height:2rem } + .lg\:text-4xl{ + font-size:2.25rem; + line-height:2.5rem + } + .lg\:text-5xl{ font-size:3rem; line-height:1 @@ -18738,11 +18407,6 @@ input[type="checkbox"][indeterminate="true"]:checked { font-size:0.875rem; line-height:1.25rem } - - .lg\:text-4xl{ - font-size:2.25rem; - line-height:2.5rem - } } @media (min-width: 1280px){ diff --git a/packages/client/src/queries/DataUploads.graphql b/packages/client/src/queries/DataUploads.graphql index 4ab91c2d5..ff0508ce4 100644 --- a/packages/client/src/queries/DataUploads.graphql +++ b/packages/client/src/queries/DataUploads.graphql @@ -19,6 +19,7 @@ mutation createDataUpload( $filename: String! $contentType: String! $replaceTableOfContentsItemId: Int + $processingOptions: JSON ) { createDataUpload( input: { @@ -26,6 +27,7 @@ mutation createDataUpload( projectId: $projectId contentType: $contentType replaceTableOfContentsItemId: $replaceTableOfContentsItemId + processingOptions: $processingOptions } ) { dataUploadTask { diff --git a/packages/spatial-uploads-handler/dist/bin/geostats.js b/packages/spatial-uploads-handler/dist/bin/geostats.js index b16687846..46277879b 100644 --- a/packages/spatial-uploads-handler/dist/bin/geostats.js +++ b/packages/spatial-uploads-handler/dist/bin/geostats.js @@ -15,23 +15,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( }) : function(o, v) { o["default"] = v; }); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; Object.defineProperty(exports, "__esModule", { value: true }); /** * Calculates geostats or rasterInfo for a given dataset. For debugging diff --git a/packages/spatial-uploads-handler/dist/bin/geostats.js.map b/packages/spatial-uploads-handler/dist/bin/geostats.js.map index cc83d0a77..19cf3320e 100644 --- a/packages/spatial-uploads-handler/dist/bin/geostats.js.map +++ b/packages/spatial-uploads-handler/dist/bin/geostats.js.map @@ -1 +1 @@ -{"version":3,"file":"geostats.js","sourceRoot":"","sources":["../../bin/geostats.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,kEAA+D;AAC/D,0EAAwE;AACxE,uCAAyB;AAEzB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACd,OAAO,CAAC,KAAK,CACX,qEAAqE,CACtE,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,GAAG;IAChB,IAAI,KAAK,CAAC;IACV,IACE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzB,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EACzB,CAAC;QACD,KAAK,GAAG,MAAM,IAAA,gDAAuB,EAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,KAAK,GAAG,MAAM,IAAA,uCAAkB,EAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,IAAI,UAAU,EAAE,CAAC;QACf,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,GAAG,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"geostats.js","sourceRoot":"","sources":["../../bin/geostats.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,kEAA+D;AAC/D,0EAAwE;AACxE,uCAAyB;AAEzB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACd,OAAO,CAAC,KAAK,CACX,qEAAqE,CACtE,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,GAAG;IAChB,IAAI,KAAK,CAAC;IACV,IACE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzB,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EACzB,CAAC;QACD,KAAK,GAAG,MAAM,IAAA,gDAAuB,EAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,KAAK,GAAG,MAAM,IAAA,uCAAkB,EAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,IAAI,UAAU,EAAE,CAAC;QACf,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,GAAG,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/handler.d.ts b/packages/spatial-uploads-handler/dist/handler.d.ts index 71ddc5e36..ed1fa4ba5 100644 --- a/packages/spatial-uploads-handler/dist/handler.d.ts +++ b/packages/spatial-uploads-handler/dist/handler.d.ts @@ -1,5 +1,5 @@ import type { SpatialUploadsHandlerRequest } from "./src/spatialUploadsHandlerTypes"; -export type { SpatialUploadsHandlerRequest } from "./src/spatialUploadsHandlerTypes"; +export type { SpatialUploadsHandlerRequest, DelimitedUploadProcessingOptions, } from "./src/spatialUploadsHandlerTypes"; export declare const processUpload: (event: SpatialUploadsHandlerRequest) => Promise<{ log: string; logfile: string; diff --git a/packages/spatial-uploads-handler/dist/handler.d.ts.map b/packages/spatial-uploads-handler/dist/handler.d.ts.map index a78c6ec1d..da6dbff13 100644 --- a/packages/spatial-uploads-handler/dist/handler.d.ts.map +++ b/packages/spatial-uploads-handler/dist/handler.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAErF,YAAY,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAErF,eAAO,MAAM,aAAa,GAAU,OAAO,4BAA4B;;;;;;;;EAqBtE,CAAC"} \ No newline at end of file +{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAErF,YAAY,EACV,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,kCAAkC,CAAC;AAE1C,eAAO,MAAM,aAAa,UAAiB,4BAA4B;;;;;;;;EAsBtE,CAAC"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/handler.js b/packages/spatial-uploads-handler/dist/handler.js index d7855b0a3..d5e8dd30f 100644 --- a/packages/spatial-uploads-handler/dist/handler.js +++ b/packages/spatial-uploads-handler/dist/handler.js @@ -8,7 +8,7 @@ const handleUpload_1 = __importDefault(require("./src/handleUpload")); const processUpload = async (event) => { const s3LogPath = `s3://${process.env.BUCKET}/${event.taskId}.log.txt`; try { - const outputs = await (0, handleUpload_1.default)(event.taskId, event.objectKey, event.suffix, event.requestingUser, event.skipLoggingProgress, event.enableAiDataAnalyst); + const outputs = await (0, handleUpload_1.default)(event.taskId, event.objectKey, event.suffix, event.requestingUser, event.skipLoggingProgress, event.enableAiDataAnalyst, event.processingOptions); return { ...outputs, log: s3LogPath, diff --git a/packages/spatial-uploads-handler/dist/handler.js.map b/packages/spatial-uploads-handler/dist/handler.js.map index ffc13db06..57fcb110c 100644 --- a/packages/spatial-uploads-handler/dist/handler.js.map +++ b/packages/spatial-uploads-handler/dist/handler.js.map @@ -1 +1 @@ -{"version":3,"file":"handler.js","sourceRoot":"","sources":["../handler.ts"],"names":[],"mappings":";;;;;;AAAA,sEAA8C;AAKvC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAmC,EAAE,EAAE;IACzE,MAAM,SAAS,GAAG,QAAQ,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,UAAU,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,sBAAY,EAChC,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,mBAAmB,CAC1B,CAAC;QACF,OAAO;YACL,GAAG,OAAO;YACV,GAAG,EAAE,SAAS;SACf,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAG,CAAW,CAAC,OAAO;YAC3B,GAAG,EAAE,SAAS;SACf,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AArBW,QAAA,aAAa,iBAqBxB"} \ No newline at end of file +{"version":3,"file":"handler.js","sourceRoot":"","sources":["../handler.ts"],"names":[],"mappings":";;;;;;AAAA,sEAA8C;AAQvC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAmC,EAAE,EAAE;IACzE,MAAM,SAAS,GAAG,QAAQ,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,UAAU,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,sBAAY,EAChC,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,iBAAiB,CACxB,CAAC;QACF,OAAO;YACL,GAAG,OAAO;YACV,GAAG,EAAE,SAAS;SACf,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAG,CAAW,CAAC,OAAO;YAC3B,GAAG,EAAE,SAAS;SACf,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAtBW,QAAA,aAAa,iBAsBxB"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/formats/delimited.d.ts b/packages/spatial-uploads-handler/dist/src/formats/delimited.d.ts new file mode 100644 index 000000000..302efc6ce --- /dev/null +++ b/packages/spatial-uploads-handler/dist/src/formats/delimited.d.ts @@ -0,0 +1,13 @@ +import { Logger } from "../logger"; +import type { DelimitedUploadProcessingOptions } from "../spatialUploadsHandlerTypes"; +/** + * Converts a delimited text file (CSV/TSV/TXT) to GeoJSON using GDAL's CSV + * driver, based on the column mapping and CRS chosen by the user (or + * auto-detected client-side). The resulting file feeds into the same + * normalize-to-FlatGeobuf/tiling pipeline used for other vector formats. + * + * See https://gdal.org/en/stable/drivers/vector/csv.html for open option + * reference. + */ +export declare function convertDelimitedToGeoJSON(logger: Logger, inputPath: string, outputPath: string, options: DelimitedUploadProcessingOptions): Promise; +//# sourceMappingURL=delimited.d.ts.map \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/formats/delimited.d.ts.map b/packages/spatial-uploads-handler/dist/src/formats/delimited.d.ts.map new file mode 100644 index 000000000..eccb51222 --- /dev/null +++ b/packages/spatial-uploads-handler/dist/src/formats/delimited.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"delimited.d.ts","sourceRoot":"","sources":["../../../src/formats/delimited.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAC;AAYtF;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,IAAI,CAAC,CA0Df"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/formats/delimited.js b/packages/spatial-uploads-handler/dist/src/formats/delimited.js new file mode 100644 index 000000000..e889e01fe --- /dev/null +++ b/packages/spatial-uploads-handler/dist/src/formats/delimited.js @@ -0,0 +1,61 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.convertDelimitedToGeoJSON = convertDelimitedToGeoJSON; +const SEPARATOR_BY_DELIMITER = { + ",": "COMMA", + "\t": "TAB", + ";": "SEMICOLON", + "|": "PIPE", +}; +/** + * Converts a delimited text file (CSV/TSV/TXT) to GeoJSON using GDAL's CSV + * driver, based on the column mapping and CRS chosen by the user (or + * auto-detected client-side). The resulting file feeds into the same + * normalize-to-FlatGeobuf/tiling pipeline used for other vector formats. + * + * See https://gdal.org/en/stable/drivers/vector/csv.html for open option + * reference. + */ +async function convertDelimitedToGeoJSON(logger, inputPath, outputPath, options) { + if (options.crs && options.crs !== "EPSG:4326") { + throw new Error("Only WGS 84 (EPSG:4326) decimal degree coordinates are supported for delimited uploads."); + } + const openOptions = [ + "-oo", + `SEPARATOR=${SEPARATOR_BY_DELIMITER[options.delimiter]}`, + "-oo", + `HEADERS=${options.hasHeaderRow ? "YES" : "NO"}`, + // Geometry columns are already represented as the output geometry; don't + // duplicate them as regular attributes. + "-oo", + "KEEP_GEOM_COLUMNS=NO", + ]; + if (options.geometryMode === "wkt") { + if (!options.geometryField) { + throw new Error("processingOptions.geometryField is required when geometryMode is 'wkt'"); + } + openOptions.push("-oo", `GEOM_POSSIBLE_NAMES=${options.geometryField}`); + } + else { + if (!options.xField || !options.yField) { + throw new Error("processingOptions.xField and yField are required when geometryMode is 'point_xy'"); + } + openOptions.push("-oo", `X_POSSIBLE_NAMES=${options.xField}`, "-oo", `Y_POSSIBLE_NAMES=${options.yField}`); + } + await logger.exec([ + "ogr2ogr", + [ + "-f", + "GeoJSON", + "-s_srs", + "EPSG:4326", + "-t_srs", + "EPSG:4326", + "-skipfailures", + ...openOptions, + outputPath, + inputPath, + ], + ], "Problem converting delimited text file to spatial data. Double check the selected columns and coordinate reference system.", 2 / 30); +} +//# sourceMappingURL=delimited.js.map \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/formats/delimited.js.map b/packages/spatial-uploads-handler/dist/src/formats/delimited.js.map new file mode 100644 index 000000000..d3e4361fd --- /dev/null +++ b/packages/spatial-uploads-handler/dist/src/formats/delimited.js.map @@ -0,0 +1 @@ +{"version":3,"file":"delimited.js","sourceRoot":"","sources":["../../../src/formats/delimited.ts"],"names":[],"mappings":";;AAsBA,8DA+DC;AAlFD,MAAM,sBAAsB,GAGxB;IACF,GAAG,EAAE,OAAO;IACZ,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;;;;GAQG;AACI,KAAK,UAAU,yBAAyB,CAC7C,MAAc,EACd,SAAiB,EACjB,UAAkB,EAClB,OAAyC;IAEzC,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG;QAClB,KAAK;QACL,aAAa,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACxD,KAAK;QACL,WAAW,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QAChD,yEAAyE;QACzE,wCAAwC;QACxC,KAAK;QACL,sBAAsB;KACvB,CAAC;IAEF,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,uBAAuB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;QACJ,CAAC;QACD,WAAW,CAAC,IAAI,CACd,KAAK,EACL,oBAAoB,OAAO,CAAC,MAAM,EAAE,EACpC,KAAK,EACL,oBAAoB,OAAO,CAAC,MAAM,EAAE,CACrC,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,CAAC,IAAI,CACf;QACE,SAAS;QACT;YACE,IAAI;YACJ,SAAS;YACT,QAAQ;YACR,WAAW;YACX,QAAQ;YACR,WAAW;YACX,eAAe;YACf,GAAG,WAAW;YACd,UAAU;YACV,SAAS;SACV;KACF,EACD,4HAA4H,EAC5H,CAAC,GAAG,EAAE,CACP,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/handleUpload.d.ts b/packages/spatial-uploads-handler/dist/src/handleUpload.d.ts index 801629256..1c39884ed 100644 --- a/packages/spatial-uploads-handler/dist/src/handleUpload.d.ts +++ b/packages/spatial-uploads-handler/dist/src/handleUpload.d.ts @@ -1,5 +1,6 @@ import { type ProcessedUploadResponse } from "./uploadPipelineShared"; -export type { SpatialUploadsHandlerRequest } from "./spatialUploadsHandlerTypes"; +import type { DelimitedUploadProcessingOptions } from "./spatialUploadsHandlerTypes"; +export type { SpatialUploadsHandlerRequest, DelimitedUploadProcessingOptions, } from "./spatialUploadsHandlerTypes"; export { MAX_OUTPUT_SIZE, MVT_THRESHOLD, } from "./uploadPipelineShared"; export type { ProcessedUploadLayer, ProcessedUploadResponse, ProgressUpdater, ResponseOutput, SupportedTypes, } from "./uploadPipelineShared"; export default function handleUpload( @@ -14,5 +15,7 @@ slug: string, */ requestingUser: string, skipLoggingProgress?: boolean, /** When true, run column intelligence / title / attribution LLMs (requires CF_AIG_* env). */ -enableAiDataAnalyst?: boolean): Promise; +enableAiDataAnalyst?: boolean, +/** Column mapping / CRS for delimited (CSV/TSV/TXT) uploads. */ +processingOptions?: DelimitedUploadProcessingOptions): Promise; //# sourceMappingURL=handleUpload.d.ts.map \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/handleUpload.d.ts.map b/packages/spatial-uploads-handler/dist/src/handleUpload.d.ts.map index 1858957e4..a9a5baf15 100644 --- a/packages/spatial-uploads-handler/dist/src/handleUpload.d.ts.map +++ b/packages/spatial-uploads-handler/dist/src/handleUpload.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"handleUpload.d.ts","sourceRoot":"","sources":["../../src/handleUpload.ts"],"names":[],"mappings":"AAoBA,OAAO,EAGL,KAAK,uBAAuB,EAG7B,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAEjF,OAAO,EACL,eAAe,EACf,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,wBAAwB,CAAC;AAIhC,wBAA8B,YAAY;AACxC,mCAAmC;AACnC,KAAK,EAAE,MAAM;AACb,yBAAyB;AACzB,SAAS,EAAE,MAAM;AACjB,yBAAyB;AACzB,IAAI,EAAE,MAAM;AACZ;;GAEG;AACH,cAAc,EAAE,MAAM,EACtB,mBAAmB,CAAC,EAAE,OAAO;AAC7B,6FAA6F;AAC7F,mBAAmB,CAAC,EAAE,OAAO,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAgRlC"} \ No newline at end of file +{"version":3,"file":"handleUpload.d.ts","sourceRoot":"","sources":["../../src/handleUpload.ts"],"names":[],"mappings":"AAoBA,OAAO,EAGL,KAAK,uBAAuB,EAG7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAErF,YAAY,EACV,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,eAAe,EACf,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,wBAAwB,CAAC;AAIhC,wBAA8B,YAAY;AACxC,mCAAmC;AACnC,KAAK,EAAE,MAAM;AACb,yBAAyB;AACzB,SAAS,EAAE,MAAM;AACjB,yBAAyB;AACzB,IAAI,EAAE,MAAM;AACZ;;GAEG;AACH,cAAc,EAAE,MAAM,EACtB,mBAAmB,CAAC,EAAE,OAAO;AAC7B,6FAA6F;AAC7F,mBAAmB,CAAC,EAAE,OAAO;AAC7B,gEAAgE;AAChE,iBAAiB,CAAC,EAAE,gCAAgC,GACnD,OAAO,CAAC,uBAAuB,CAAC,CAiRlC"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/handleUpload.js b/packages/spatial-uploads-handler/dist/src/handleUpload.js index f1c2d474e..3c7efe06e 100644 --- a/packages/spatial-uploads-handler/dist/src/handleUpload.js +++ b/packages/spatial-uploads-handler/dist/src/handleUpload.js @@ -15,23 +15,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( }) : function(o, v) { o["default"] = v; }); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.MVT_THRESHOLD = exports.MAX_OUTPUT_SIZE = void 0; exports.default = handleUpload; @@ -66,7 +56,9 @@ slug, */ requestingUser, skipLoggingProgress, /** When true, run column intelligence / title / attribution LLMs (requires CF_AIG_* env). */ -enableAiDataAnalyst) { +enableAiDataAnalyst, +/** Column mapping / CRS for delimited (CSV/TSV/TXT) uploads. */ +processingOptions) { if (DEBUG) { console.log("DEBUG MODE ENABLED"); } @@ -154,6 +146,7 @@ enableAiDataAnalyst) { uploadFilename, workingDirectory: dist, enableAiDataAnalyst, + processingOptions, }); stats = vectorResult.layers; aiDataAnalystNotesPromise = vectorResult.aiDataAnalystNotesPromise; diff --git a/packages/spatial-uploads-handler/dist/src/handleUpload.js.map b/packages/spatial-uploads-handler/dist/src/handleUpload.js.map index 2313fd446..fa4d693d2 100644 --- a/packages/spatial-uploads-handler/dist/src/handleUpload.js.map +++ b/packages/spatial-uploads-handler/dist/src/handleUpload.js.map @@ -1 +1 @@ -{"version":3,"file":"handleUpload.js","sourceRoot":"","sources":["../../src/handleUpload.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"handleUpload.js","sourceRoot":"","sources":["../../src/handleUpload.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/index.d.ts b/packages/spatial-uploads-handler/dist/src/index.d.ts index d0a4f4771..df4d00173 100644 --- a/packages/spatial-uploads-handler/dist/src/index.d.ts +++ b/packages/spatial-uploads-handler/dist/src/index.d.ts @@ -1,4 +1,4 @@ -export { ProcessedUploadLayer, SpatialUploadsHandlerRequest, ProcessedUploadResponse, } from "./handleUpload"; +export { ProcessedUploadLayer, SpatialUploadsHandlerRequest, ProcessedUploadResponse, DelimitedUploadProcessingOptions, } from "./handleUpload"; /** Invoke the geostats PII classifier Lambda (e.g. backfill tasks). */ export { classifyGeostatsPii } from "./aiUploadNotes"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/index.d.ts.map b/packages/spatial-uploads-handler/dist/src/index.d.ts.map index a8b102f8e..79c65f464 100644 --- a/packages/spatial-uploads-handler/dist/src/index.d.ts.map +++ b/packages/spatial-uploads-handler/dist/src/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,uEAAuE;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,gBAAgB,CAAC;AAExB,uEAAuE;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/index.js.map b/packages/spatial-uploads-handler/dist/src/index.js.map index fb77a08aa..d37ca0271 100644 --- a/packages/spatial-uploads-handler/dist/src/index.js.map +++ b/packages/spatial-uploads-handler/dist/src/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAMA,uEAAuE;AACvE,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAOA,uEAAuE;AACvE,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/processVectorUpload.d.ts b/packages/spatial-uploads-handler/dist/src/processVectorUpload.d.ts index 91b44558b..84b6abad6 100644 --- a/packages/spatial-uploads-handler/dist/src/processVectorUpload.d.ts +++ b/packages/spatial-uploads-handler/dist/src/processVectorUpload.d.ts @@ -2,6 +2,7 @@ import { GeostatsLayer } from "@seasketch/geostats-types"; import { type ProgressUpdater, type ResponseOutput } from "./uploadPipelineShared"; import { Logger } from "./logger"; import { type AiDataAnalystNotes } from "ai-data-analyst"; +import type { DelimitedUploadProcessingOptions } from "./spatialUploadsHandlerTypes"; export default function fromMarkdown(md: string): any; /** * Process a vector upload, converting it to a normalized FlatGeobuf file and @@ -30,6 +31,8 @@ export declare function processVectorUpload(options: { uploadFilename: string; /** When true, run title / attribution / column intelligence LLMs (requires CF_AIG_* env). */ enableAiDataAnalyst?: boolean; + /** Column mapping / CRS for delimited (CSV/TSV/TXT) uploads. Required if `path` has a delimited extension. */ + processingOptions?: DelimitedUploadProcessingOptions; }): Promise<{ layers: GeostatsLayer[]; /** Resolve after local processing; caller should await after uploads so LLMs overlap I/O. */ diff --git a/packages/spatial-uploads-handler/dist/src/processVectorUpload.d.ts.map b/packages/spatial-uploads-handler/dist/src/processVectorUpload.d.ts.map index 4afcef27b..1b0cac095 100644 --- a/packages/spatial-uploads-handler/dist/src/processVectorUpload.d.ts.map +++ b/packages/spatial-uploads-handler/dist/src/processVectorUpload.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"processVectorUpload.d.ts","sourceRoot":"","sources":["../../src/processVectorUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAIL,KAAK,kBAAkB,EAGxB,MAAM,iBAAiB,CAAC;AAQzB,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,EAAE,MAAM,OAE9C;AAkFD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,CAAC,cAAc,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IAChD,cAAc,EAAE,eAAe,CAAC;IAEhC,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,gBAAgB,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,6FAA6F;IAC7F,yBAAyB,EAAE,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;CACpE,CAAC,CAicD"} \ No newline at end of file +{"version":3,"file":"processVectorUpload.d.ts","sourceRoot":"","sources":["../../src/processVectorUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAIL,KAAK,kBAAkB,EAGxB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAIrF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,EAAE,MAAM,OAE9C;AAkFD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,CAAC,cAAc,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IAChD,cAAc,EAAE,eAAe,CAAC;IAEhC,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,gBAAgB,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,8GAA8G;IAC9G,iBAAiB,CAAC,EAAE,gCAAgC,CAAC;CACtD,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,6FAA6F;IAC7F,yBAAyB,EAAE,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;CACpE,CAAC,CA+dD"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/processVectorUpload.js b/packages/spatial-uploads-handler/dist/src/processVectorUpload.js index 6fe4e611e..f8e1f3184 100644 --- a/packages/spatial-uploads-handler/dist/src/processVectorUpload.js +++ b/packages/spatial-uploads-handler/dist/src/processVectorUpload.js @@ -10,6 +10,8 @@ const prosemirror_markdown_1 = require("prosemirror-markdown"); const metadata_parser_1 = require("@seasketch/metadata-parser"); const ai_data_analyst_1 = require("ai-data-analyst"); const aiUploadNotes_1 = require("./aiUploadNotes"); +const delimited_1 = require("./formats/delimited"); +const DELIMITED_EXTENSIONS = new Set([".csv", ".tsv", ".txt"]); function fromMarkdown(md) { var _a; return (_a = prosemirror_markdown_1.defaultMarkdownParser.parse(md)) === null || _a === void 0 ? void 0 : _a.toJSON(); @@ -94,13 +96,23 @@ async function collectAttributionSidecarContents(logger, workingDirectory, worki */ async function processVectorUpload(options) { var _a; - const { logger, path, outputs, updateProgress, baseKey, workingDirectory, jobId, originalName, uploadFilename, enableAiDataAnalyst, } = options; + const { logger, path, outputs, updateProgress, baseKey, workingDirectory, jobId, originalName, uploadFilename, enableAiDataAnalyst, processingOptions, } = options; if (enableAiDataAnalyst) { (0, aiUploadNotes_1.assertAiDataAnalystEnvVarsPresent)(); } const originalFilePath = path; let workingFilePath = path; await updateProgress("running", "validating"); + const isDelimited = DELIMITED_EXTENSIONS.has((0, path_1.parse)(path).ext); + if (isDelimited) { + if (!processingOptions) { + throw new Error("This file requires column mapping configuration before it can be uploaded. Please configure coordinate columns and try again."); + } + const convertedPath = (0, path_1.join)(workingDirectory, jobId + ".geojson"); + await updateProgress("running", "converting delimited text"); + await (0, delimited_1.convertDelimitedToGeoJSON)(logger, workingFilePath, convertedPath, processingOptions); + workingFilePath = convertedPath; + } let titleP = enableAiDataAnalyst ? (0, aiUploadNotes_1.asNeverReject)((0, ai_data_analyst_1.generateTitle)(uploadFilename), "generateTitle") : null; @@ -240,6 +252,14 @@ async function processVectorUpload(options) { else { throw new Error("Not a recognized file type"); } + if (isDelimited) { + if (/Feature Count: 0\b/.test(ogrInfo)) { + throw new Error("No spatial features could be extracted from this file using the selected columns. Double check the column mapping and try again."); + } + // The original output should reflect the file as uploaded (delimited + // text), not the GeoJSON it was converted to above. + type = "CSV"; + } const sidecarFiles = await collectAttributionSidecarContents(logger, workingDirectory, workingFilePath, isZip || isRar); const attributionInputs = []; for (const s of sidecarFiles) { diff --git a/packages/spatial-uploads-handler/dist/src/processVectorUpload.js.map b/packages/spatial-uploads-handler/dist/src/processVectorUpload.js.map index cb5118961..16c0ce56d 100644 --- a/packages/spatial-uploads-handler/dist/src/processVectorUpload.js.map +++ b/packages/spatial-uploads-handler/dist/src/processVectorUpload.js.map @@ -1 +1 @@ -{"version":3,"file":"processVectorUpload.js","sourceRoot":"","sources":["../../src/processVectorUpload.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"processVectorUpload.js","sourceRoot":"","sources":["../../src/processVectorUpload.ts"],"names":[],"mappings":";;AAgCA,+BAEC;AAyFD,kDAwfC;AAlnBD,iEAKgC;AAChC,+BAA4D;AAC5D,2BAAwD;AACxD,qEAAmE;AAEnE,+DAA6D;AAC7D,gEAAmE;AACnE,qDAOyB;AACzB,mDAKyB;AACzB,mDAAgE;AAGhE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/D,SAAwB,YAAY,CAAC,EAAU;;IAC7C,OAAO,MAAA,4CAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,0CAAE,MAAM,EAAE,CAAC;AACnD,CAAC;AAID,KAAK,UAAU,iCAAiC,CAC9C,MAAc,EACd,gBAAwB,EACxB,eAAuB,EACvB,WAAoB;IAEpB,MAAM,OAAO,GAA6C,EAAE,CAAC;IAC7D,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,CACpC;YACE,MAAM;YACN;gBACE,gBAAgB;gBAChB,OAAO;gBACP,GAAG;gBACH,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,GAAG;gBACH,OAAO;gBACP,OAAO;gBACP,IAAI;gBACJ,OAAO;gBACP,QAAQ;gBACR,GAAG;aACJ;SACF,EACD,yDAAyD,EACzD,CAAC,CACF,CAAC;QACF,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,EAAE,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,CAAC,IAAI,CAAC,IAAA,eAAU,EAAC,CAAC,CAAC,EAAE,CAAC;oBACzB,SAAS;gBACX,CAAC;gBACD,MAAM,GAAG,GAAG,IAAA,YAAS,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAgB,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3D,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAA,iBAAY,EAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAA,YAAS,EAAC,eAAe,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG;YACZ,IAAI;YACJ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAU,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAA,WAAQ,EAAC,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;gBAClD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxB,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpB,IAAI,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,GAAG;4BACT,OAAO,EAAE,IAAA,iBAAY,EAAC,SAAS,EAAE,MAAM,CAAC;yBACzC,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CAAC,OAqBzC;;IAKC,MAAM,EACJ,MAAM,EACN,IAAI,EACJ,OAAO,EACP,cAAc,EACd,OAAO,EACP,gBAAgB,EAChB,KAAK,EACL,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,GAAG,OAAO,CAAC;IACZ,IAAI,mBAAmB,EAAE,CAAC;QACxB,IAAA,iDAAiC,GAAE,CAAC;IACtC,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,CAAC;IAC9B,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,MAAM,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAA,YAAS,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,+HAA+H,CAChI,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,IAAA,WAAQ,EAAC,gBAAgB,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;QACrE,MAAM,cAAc,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;QAC7D,MAAM,IAAA,qCAAyB,EAC7B,MAAM,EACN,eAAe,EACf,aAAa,EACb,iBAAiB,CAClB,CAAC;QACF,eAAe,GAAG,aAAa,CAAC;IAClC,CAAC;IAED,IAAI,MAAM,GAAG,mBAAmB;QAC9B,CAAC,CAAC,IAAA,6BAAa,EAAC,IAAA,+BAAa,EAAC,cAAc,CAAC,EAAE,eAAe,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,YAAY,GAEL,IAAI,CAAC;IAChB,IAAI,OAAO,GAEA,IAAI,CAAC;IAEhB,IAAI,IAAoB,CAAC;IACzB,IAAI,EAAE,GAAG,EAAE,GAAG,IAAA,YAAS,EAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,GAAG,KAAK,MAAM,CAAC;IAC7B,MAAM,KAAK,GAAG,GAAG,KAAK,MAAM,CAAC;IAC7B,IAAI,QAAQ,GAA4B,IAAI,CAAC;IAE7C,2DAA2D;IAC3D,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7C,oBAAoB;QACpB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,CAAC,IAAI,CACf,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAC1D,wBAAwB,EACxB,CAAC,GAAG,EAAE,CACP,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,CAAC,IAAI,CACf,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,gBAAgB,EAAE,eAAe,CAAC,CAAC,EAC3D,8BAA8B,EAC9B,CAAC,GAAG,EAAE,CACP,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACpD,qDAAqD;QACrD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CACjC;YACE,MAAM;YACN;gBACE,gBAAgB;gBAChB,OAAO;gBACP,GAAG;gBACH,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO;gBACP,OAAO;aACR;SACF,EACD,0CAA0C,EAC1C,CAAC,GAAG,EAAE,CACP,CAAC;QAEF,iDAAiD;QACjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC;YACE,MAAM;YACN;gBACE,gBAAgB;gBAChB,OAAO;gBACP,GAAG;gBACH,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO;gBACP,OAAO;aACR;SACF,EACD,uDAAuD,EACvD,CAAC,GAAG,EAAE,CACP,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC/D,CAAC;iBAAM,IAAI,KAAK,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,2BAA2B;QAC3B,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAA,YAAS,EAAC,eAAe,CAAC,CAAC;QAC3C,iDAAiD;QACjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC;YACE,MAAM;YACN;gBACE,gBAAgB;gBAChB,OAAO;gBACP,GAAG;gBACH,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO;gBACP,OAAO;aACR;SACF,EACD,+CAA+C,EAC/C,CAAC,GAAG,EAAE,CACP,CAAC;QACF,IAAI,CAAC;YACH,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1C,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,IAAA,iBAAY,EAAC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;wBAClD,MAAM,cAAc,GAAG,MAAM,IAAA,uCAAqB,EAAC,IAAI,CAAC,CAAC;wBACzD,IAAI,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC7D,QAAQ,GAAG,cAAc,CAAC;4BAC1B,OAAO,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,aAAa;gCACnB,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG;gCACnC,MAAM,EAAE,GACN,OAAO,CAAC,GAAG,CAAC,gBACd,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,EAAE;gCACnD,KAAK,EAAE,OAAO;gCACd,IAAI,EAAE,IAAA,aAAQ,EAAC,OAAO,CAAC,CAAC,IAAI;gCAC5B,GAAG,EAAE,GACH,OAAO,CAAC,GAAG,CAAC,gBACd,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,EAAE;6BACpD,CAAC,CAAC;4BACH,MAAM;wBACR,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;wBAC9C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,oBAAoB;QACtB,CAAC;IACH,CAAC;IAED,MAAM,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAE9C,2EAA2E;IAC3E,qBAAqB;IACrB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAC/B,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,EAC5C,GAAG,KAAK,MAAM;QACZ,CAAC,CAAC,gGAAgG;QAClG,CAAC,CAAC,+BAA+B,EACnC,CAAC,GAAG,EAAE,CACP,CAAC;IACF,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,IAAI,GAAG,SAAS,CAAC;IACnB,CAAC;SAAM,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,IAAI,GAAG,YAAY,CAAC;IACtB,CAAC;SAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,IAAI,GAAG,iBAAiB,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,kIAAkI,CACnI,CAAC;QACJ,CAAC;QACD,qEAAqE;QACrE,oDAAoD;QACpD,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,iCAAiC,CAC1D,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,KAAK,IAAI,KAAK,CACf,CAAC;IACF,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAC5E,iBAAiB,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,iBAAiB,CAAC,IAAI,CACpB,uDAAuD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAClF,CAAC;IACJ,CAAC;IACD,IAAI,mBAAmB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,YAAY,GAAG,IAAA,6BAAa,EAC1B,IAAA,qCAAmB,EAAC,iBAAiB,CAAC,EACtC,qBAAqB,CACtB,CAAC;IACJ,CAAC;IAED,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,mBAAmB,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,sEAAsE;IACtE,MAAM,cAAc,GAAG;QACrB,IAAI;QACJ,QAAQ,EAAE,KAAK,GAAG,GAAG;QACrB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,EAAE;QACnE,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,IAAA,aAAQ,EAAC,gBAAgB,CAAC,CAAC,IAAI;QACrC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,EAAE;QAChE,UAAU,EAAE,IAAI;QAChB,kBAAkB,EAAE,mBAAmB,IAAI,IAAI,KAAK,YAAY;KACjE,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE7B,IAAI,oBAAoB,GAAG,eAAe,CAAC;IAC3C,IAAI,wBAAwB,GAAG,IAAA,aAAQ,EAAC,eAAe,CAAC,CAAC,IAAI,CAAC;IAC9D,IAAI,CAAC,mBAAmB,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAClD,yEAAyE;QACzE,kBAAkB;QAClB,oBAAoB,GAAG,IAAA,WAAQ,EAAC,gBAAgB,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;QAClE,MAAM,cAAc,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,IAAI,CACf;YACE,SAAS;YACT;gBACE,eAAe;gBACf,QAAQ;gBACR,WAAW;gBACX,MAAM;gBACN,kBAAkB;gBAClB,KAAK;gBACL,+BAA+B;gBAC/B,kBAAkB;gBAClB,oBAAoB;gBACpB,eAAe;gBACf,MAAM;gBACN,YAAY;aACb;SACF,EACD,kCAAkC,EAClC,CAAC,GAAG,EAAE,CACP,CAAC;QAEF,gDAAgD;QAChD,wBAAwB,GAAG,IAAA,aAAQ,EAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,GAAG,KAAK,MAAM;YACxB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,IAAI,KAAK,MAAM;YACjE,KAAK,EAAE,oBAAoB;YAC3B,IAAI,EAAE,wBAAwB;YAC9B,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,IAAI,KAAK,MAAM;YAC9D,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,MAAM,KAAK,GAAG,MAAM,IAAA,gDAAuB,EAAC,oBAAoB,CAAC,CAAC;IAElE,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC/B,CAAC;IAED,iFAAiF;IACjF,wFAAwF;IACxF,IAAI,cAAc,GAAyB,IAAI,CAAC;IAChD,IAAI,mBAAmB,EAAE,CAAC;QACxB,iFAAiF;QACjF,kFAAkF;QAClF,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;YACpB,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,IAAA,mCAAmB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,OAAO,IAAA,6BAAa,EAClB,IAAA,4CAA0B,EAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EACpD,4BAA4B,CAC7B,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,IAAA,mCAAmB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IACD,4EAA4E;IAC5E,yEAAyE;IACzE,wBAAwB;IACxB,MAAM,cAAc,GAClB,wBAAwB,IAAI,oCAAa;QACzC,CAAC,cAAc,CAAC,IAAI,KAAK,SAAS;YAChC,cAAc,CAAC,IAAI,IAAI,oCAAa,GAAG,EAAE,CAAC,CAAC;IAE/C,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,IAAA,WAAQ,EAAC,gBAAgB,EAAE,KAAK,GAAG,eAAe,CAAC,CAAC;QACxE,MAAM,MAAM,CAAC,IAAI,CACf;YACE,SAAS;YACT;gBACE,eAAe;gBACf,QAAQ;gBACR,WAAW;gBACX,IAAI;gBACJ,SAAS;gBACT,MAAM;gBACN,kBAAkB;gBAClB,WAAW;gBACX,oBAAoB;aACrB;SACF,EACD,+BAA+B,EAC/B,EAAE,GAAG,EAAE,CACR,CAAC;QACF,sCAAsC;QACtC,sEAAsE;QACtE,2EAA2E;QAC3E,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,IAAI,KAAK,eAAe;YAC1E,KAAK,EAAE,WAAW;YAClB,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,IAAI,KAAK,eAAe;YACvE,IAAI,EAAE,IAAA,aAAQ,EAAC,WAAW,CAAC,CAAC,IAAI;YAChC,QAAQ,EAAE,GAAG,KAAK,eAAe;SAClC,CAAC,CAAC;IACL,CAAC;IAED,8CAA8C;IAC9C,IAAI,wBAAwB,IAAI,oCAAa,EAAE,CAAC;QAC9C,qEAAqE;QACrE,qEAAqE;QACrE,gEAAgE;QAChE,8BAA8B;QAC9B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAC/B,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,EACvC,mDAAmD,EACnD,CAAC,GAAG,EAAE,CACP,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,UAAU,KAAI,EAAE,CAAC;QACjD,MAAM,iBAAiB,GAIjB,EAAE,CAAC;QACT,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QACD;;;;;;;;;;WAUG;QACH,MAAM,OAAO,GAAG,IAAA,WAAQ,EAAC,gBAAgB,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAA,WAAQ,EAAC,gBAAgB,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;QACnE,MAAM,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACvC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;YACnB,CAAC,CAAE,KAAa,CAAC,QAAQ,CAAC;QAC5B,MAAM,MAAM,CAAC,IAAI,CACf;YACE,YAAY;YACZ;gBACE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;gBACrE,IAAI;gBACJ,IAAI,YAAY,GAAG;gBACnB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;oBAC7B,CAAC,CAAC;wBACE,mDAAmD;wBACnD,4GAA4G;wBAC5G,IAAI;wBACJ,GAAG;qBACJ;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,wBAAwB,GAAG,OAAO;oBACnE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;oBACd,CAAC,CAAC;wBACE,KAAK;wBACL,GAAG,CAAC,wBAAwB,GAAG,OAAO;4BACpC,CAAC,CAAC,CAAC,+BAA+B,EAAE,GAAG,CAAC;4BACxC,CAAC,CAAC,EAAE,CAAC;qBACR,CAAC;gBACN,gBAAgB;gBAChB,0BAA0B;gBAC1B,IAAI;gBACJ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;gBACpD,IAAI;gBACJ,OAAO;gBACP,oBAAoB;aACrB;SACF,EACD,mBAAmB,EACnB,EAAE,GAAG,EAAE,CACR,CAAC;QACF,yEAAyE;QACzE,UAAU;QACV,MAAM,MAAM,CAAC,IAAI,CACf,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,EAC9C,2BAA2B,EAC3B,CAAC,GAAG,EAAE,CACP,CAAC;QACF,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,IAAI,KAAK,UAAU;YACjE,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,IAAA,aAAQ,EAAC,WAAW,CAAC,CAAC,IAAI;YAChC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,IAAI,KAAK,UAAU;YAChE,QAAQ,EAAE,GAAG,KAAK,UAAU;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,yBAAyB,GAAG,mBAAmB;QACnD,CAAC,CAAC,IAAA,qDAAqC,EAAC;YACpC,cAAc;YACd,MAAM;YACN,YAAY;YACZ,OAAO;SACR,CAAC;QACJ,CAAC,CAAC,cAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAE1C,OAAO;QACL,MAAM,EAAE,KAAK;QACb,yBAAyB;KAC1B,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/spatialUploadsHandlerTypes.d.ts b/packages/spatial-uploads-handler/dist/src/spatialUploadsHandlerTypes.d.ts index f1e4b043f..d7f86d1f1 100644 --- a/packages/spatial-uploads-handler/dist/src/spatialUploadsHandlerTypes.d.ts +++ b/packages/spatial-uploads-handler/dist/src/spatialUploadsHandlerTypes.d.ts @@ -10,5 +10,22 @@ export interface SpatialUploadsHandlerRequest { skipLoggingProgress?: boolean; requestingUser: string; enableAiDataAnalyst?: boolean; + processingOptions?: DelimitedUploadProcessingOptions; } +/** + * Column mapping and coordinate reference system chosen (or auto-detected) + * for a delimited text (CSV/TSV/TXT) spatial upload. Mirrored on the client + * in `packages/client/src/admin/uploads/delimitedSpatial/types.ts` — keep + * both in sync when making changes. + */ +export type DelimitedUploadProcessingOptions = { + kind: "delimited"; + geometryMode: "point_xy" | "wkt"; + xField?: string; + yField?: string; + geometryField?: string; + crs: string; + delimiter: "," | "\t" | ";" | "|"; + hasHeaderRow: boolean; +}; //# sourceMappingURL=spatialUploadsHandlerTypes.d.ts.map \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/spatialUploadsHandlerTypes.d.ts.map b/packages/spatial-uploads-handler/dist/src/spatialUploadsHandlerTypes.d.ts.map index 94e669812..3f2172cf4 100644 --- a/packages/spatial-uploads-handler/dist/src/spatialUploadsHandlerTypes.d.ts.map +++ b/packages/spatial-uploads-handler/dist/src/spatialUploadsHandlerTypes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"spatialUploadsHandlerTypes.d.ts","sourceRoot":"","sources":["../../src/spatialUploadsHandlerTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC;IAGf,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,cAAc,EAAE,MAAM,CAAC;IAGvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B"} \ No newline at end of file +{"version":3,"file":"spatialUploadsHandlerTypes.d.ts","sourceRoot":"","sources":["../../src/spatialUploadsHandlerTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC;IAGf,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,cAAc,EAAE,MAAM,CAAC;IAGvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAG9B,iBAAiB,CAAC,EAAE,gCAAgC,CAAC;CACtD;AAED;;;;;GAKG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,UAAU,GAAG,KAAK,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.d.ts b/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.d.ts index 2e288dc53..1a6b64e19 100644 --- a/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.d.ts +++ b/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.d.ts @@ -7,7 +7,7 @@ import type { AiDataAnalystNotes } from "ai-data-analyst"; * `processVectorUpload` do not import `handleUpload` (which imports them), * which would create a circular dependency and break Node 22+ / tsx. */ -export type SupportedTypes = "GeoJSON" | "FlatGeobuf" | "ZippedShapefile" | "GeoTIFF" | "NetCDF"; +export type SupportedTypes = "GeoJSON" | "FlatGeobuf" | "ZippedShapefile" | "GeoTIFF" | "NetCDF" | "CSV"; export interface ResponseOutput { /** Remote location string as used in rclone */ remote: string; diff --git a/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.d.ts.map b/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.d.ts.map index b1f66464f..df41279ce 100644 --- a/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.d.ts.map +++ b/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"uploadPipelineShared.d.ts","sourceRoot":"","sources":["../../src/uploadPipelineShared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,EACA,cAAc,GACd,SAAS,GAET,KAAK,GACL,aAAa,CAAC;IAClB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;wDACoD;IACpD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,IAAI,CAAC;IAC5C,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,eAAO,MAAM,aAAa,SAAU,CAAC;AACrC,0DAA0D;AAC1D,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C,MAAM,MAAM,eAAe,GAAG,CAC5B,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,EACxC,eAAe,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"uploadPipelineShared.d.ts","sourceRoot":"","sources":["../../src/uploadPipelineShared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,SAAS,GACT,QAAQ,GACR,KAAK,CAAC;AAEV,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,EACA,cAAc,GACd,SAAS,GAET,KAAK,GACL,aAAa,CAAC;IAClB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;wDACoD;IACpD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,IAAI,CAAC;IAC5C,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,eAAO,MAAM,aAAa,SAAU,CAAC;AACrC,0DAA0D;AAC1D,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C,MAAM,MAAM,eAAe,GAAG,CAC5B,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,EACxC,eAAe,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.js.map b/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.js.map index 1c2fd14c9..75f41706b 100644 --- a/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.js.map +++ b/packages/spatial-uploads-handler/dist/src/uploadPipelineShared.js.map @@ -1 +1 @@ -{"version":3,"file":"uploadPipelineShared.js","sourceRoot":"","sources":["../../src/uploadPipelineShared.ts"],"names":[],"mappings":";;;AA4DA,2DAA2D;AAC9C,QAAA,aAAa,GAAG,MAAO,CAAC;AACrC,0DAA0D;AAC7C,QAAA,eAAe,GAAG,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"uploadPipelineShared.js","sourceRoot":"","sources":["../../src/uploadPipelineShared.ts"],"names":[],"mappings":";;;AA6DA,2DAA2D;AAC9C,QAAA,aAAa,GAAG,MAAO,CAAC;AACrC,0DAA0D;AAC7C,QAAA,eAAe,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/handler.ts b/packages/spatial-uploads-handler/handler.ts index 037c7d8e9..985a94f9f 100644 --- a/packages/spatial-uploads-handler/handler.ts +++ b/packages/spatial-uploads-handler/handler.ts @@ -1,7 +1,10 @@ import handleUpload from "./src/handleUpload"; import type { SpatialUploadsHandlerRequest } from "./src/spatialUploadsHandlerTypes"; -export type { SpatialUploadsHandlerRequest } from "./src/spatialUploadsHandlerTypes"; +export type { + SpatialUploadsHandlerRequest, + DelimitedUploadProcessingOptions, +} from "./src/spatialUploadsHandlerTypes"; export const processUpload = async (event: SpatialUploadsHandlerRequest) => { const s3LogPath = `s3://${process.env.BUCKET}/${event.taskId}.log.txt`; @@ -13,6 +16,7 @@ export const processUpload = async (event: SpatialUploadsHandlerRequest) => { event.requestingUser, event.skipLoggingProgress, event.enableAiDataAnalyst, + event.processingOptions, ); return { ...outputs, diff --git a/packages/spatial-uploads-handler/server.ts b/packages/spatial-uploads-handler/server.ts index 33fddf927..e0136f21d 100755 --- a/packages/spatial-uploads-handler/server.ts +++ b/packages/spatial-uploads-handler/server.ts @@ -23,6 +23,7 @@ const server = createServer(function (req, res) { data.requestingUser, data.skipLoggingProgress, data.enableAiDataAnalyst, + data.processingOptions, ); for (const layer of outputs.layers) { console.log(`outputted - ${layer.name} ${layer.url}`); diff --git a/packages/spatial-uploads-handler/src/formats/delimited.ts b/packages/spatial-uploads-handler/src/formats/delimited.ts new file mode 100644 index 000000000..923b0ff26 --- /dev/null +++ b/packages/spatial-uploads-handler/src/formats/delimited.ts @@ -0,0 +1,86 @@ +import { Logger } from "../logger"; +import type { DelimitedUploadProcessingOptions } from "../spatialUploadsHandlerTypes"; + +const SEPARATOR_BY_DELIMITER: Record< + DelimitedUploadProcessingOptions["delimiter"], + string +> = { + ",": "COMMA", + "\t": "TAB", + ";": "SEMICOLON", + "|": "PIPE", +}; + +/** + * Converts a delimited text file (CSV/TSV/TXT) to GeoJSON using GDAL's CSV + * driver, based on the column mapping and CRS chosen by the user (or + * auto-detected client-side). The resulting file feeds into the same + * normalize-to-FlatGeobuf/tiling pipeline used for other vector formats. + * + * See https://gdal.org/en/stable/drivers/vector/csv.html for open option + * reference. + */ +export async function convertDelimitedToGeoJSON( + logger: Logger, + inputPath: string, + outputPath: string, + options: DelimitedUploadProcessingOptions, +): Promise { + if (options.crs && options.crs !== "EPSG:4326") { + throw new Error( + "Only WGS 84 (EPSG:4326) decimal degree coordinates are supported for delimited uploads.", + ); + } + + const openOptions = [ + "-oo", + `SEPARATOR=${SEPARATOR_BY_DELIMITER[options.delimiter]}`, + "-oo", + `HEADERS=${options.hasHeaderRow ? "YES" : "NO"}`, + // Geometry columns are already represented as the output geometry; don't + // duplicate them as regular attributes. + "-oo", + "KEEP_GEOM_COLUMNS=NO", + ]; + + if (options.geometryMode === "wkt") { + if (!options.geometryField) { + throw new Error( + "processingOptions.geometryField is required when geometryMode is 'wkt'", + ); + } + openOptions.push("-oo", `GEOM_POSSIBLE_NAMES=${options.geometryField}`); + } else { + if (!options.xField || !options.yField) { + throw new Error( + "processingOptions.xField and yField are required when geometryMode is 'point_xy'", + ); + } + openOptions.push( + "-oo", + `X_POSSIBLE_NAMES=${options.xField}`, + "-oo", + `Y_POSSIBLE_NAMES=${options.yField}`, + ); + } + + await logger.exec( + [ + "ogr2ogr", + [ + "-f", + "GeoJSON", + "-s_srs", + "EPSG:4326", + "-t_srs", + "EPSG:4326", + "-skipfailures", + ...openOptions, + outputPath, + inputPath, + ], + ], + "Problem converting delimited text file to spatial data. Double check the selected columns and coordinate reference system.", + 2 / 30, + ); +} diff --git a/packages/spatial-uploads-handler/src/handleUpload.ts b/packages/spatial-uploads-handler/src/handleUpload.ts index 17b4910f3..2bf218c72 100644 --- a/packages/spatial-uploads-handler/src/handleUpload.ts +++ b/packages/spatial-uploads-handler/src/handleUpload.ts @@ -25,8 +25,12 @@ import { type ProgressUpdater, type ResponseOutput, } from "./uploadPipelineShared"; +import type { DelimitedUploadProcessingOptions } from "./spatialUploadsHandlerTypes"; -export type { SpatialUploadsHandlerRequest } from "./spatialUploadsHandlerTypes"; +export type { + SpatialUploadsHandlerRequest, + DelimitedUploadProcessingOptions, +} from "./spatialUploadsHandlerTypes"; export { MAX_OUTPUT_SIZE, @@ -56,6 +60,8 @@ export default async function handleUpload( skipLoggingProgress?: boolean, /** When true, run column intelligence / title / attribution LLMs (requires CF_AIG_* env). */ enableAiDataAnalyst?: boolean, + /** Column mapping / CRS for delimited (CSV/TSV/TXT) uploads. */ + processingOptions?: DelimitedUploadProcessingOptions, ): Promise { if (DEBUG) { console.log("DEBUG MODE ENABLED"); @@ -173,6 +179,7 @@ export default async function handleUpload( uploadFilename, workingDirectory: dist, enableAiDataAnalyst, + processingOptions, }); stats = vectorResult.layers; aiDataAnalystNotesPromise = vectorResult.aiDataAnalystNotesPromise; diff --git a/packages/spatial-uploads-handler/src/index.ts b/packages/spatial-uploads-handler/src/index.ts index acbb0cf1a..b993b5dcf 100644 --- a/packages/spatial-uploads-handler/src/index.ts +++ b/packages/spatial-uploads-handler/src/index.ts @@ -2,6 +2,7 @@ export { ProcessedUploadLayer, SpatialUploadsHandlerRequest, ProcessedUploadResponse, + DelimitedUploadProcessingOptions, } from "./handleUpload"; /** Invoke the geostats PII classifier Lambda (e.g. backfill tasks). */ diff --git a/packages/spatial-uploads-handler/src/processVectorUpload.ts b/packages/spatial-uploads-handler/src/processVectorUpload.ts index 101bb431a..d887e5a1d 100644 --- a/packages/spatial-uploads-handler/src/processVectorUpload.ts +++ b/packages/spatial-uploads-handler/src/processVectorUpload.ts @@ -25,6 +25,10 @@ import { classifyGeostatsPii, composeAiDataAnalystNotesFromPromises, } from "./aiUploadNotes"; +import { convertDelimitedToGeoJSON } from "./formats/delimited"; +import type { DelimitedUploadProcessingOptions } from "./spatialUploadsHandlerTypes"; + +const DELIMITED_EXTENSIONS = new Set([".csv", ".tsv", ".txt"]); export default function fromMarkdown(md: string) { return defaultMarkdownParser.parse(md)?.toJSON(); @@ -136,6 +140,8 @@ export async function processVectorUpload(options: { uploadFilename: string; /** When true, run title / attribution / column intelligence LLMs (requires CF_AIG_* env). */ enableAiDataAnalyst?: boolean; + /** Column mapping / CRS for delimited (CSV/TSV/TXT) uploads. Required if `path` has a delimited extension. */ + processingOptions?: DelimitedUploadProcessingOptions; }): Promise<{ layers: GeostatsLayer[]; /** Resolve after local processing; caller should await after uploads so LLMs overlap I/O. */ @@ -152,6 +158,7 @@ export async function processVectorUpload(options: { originalName, uploadFilename, enableAiDataAnalyst, + processingOptions, } = options; if (enableAiDataAnalyst) { assertAiDataAnalystEnvVarsPresent(); @@ -160,6 +167,24 @@ export async function processVectorUpload(options: { let workingFilePath = path; await updateProgress("running", "validating"); + const isDelimited = DELIMITED_EXTENSIONS.has(parsePath(path).ext); + if (isDelimited) { + if (!processingOptions) { + throw new Error( + "This file requires column mapping configuration before it can be uploaded. Please configure coordinate columns and try again.", + ); + } + const convertedPath = pathJoin(workingDirectory, jobId + ".geojson"); + await updateProgress("running", "converting delimited text"); + await convertDelimitedToGeoJSON( + logger, + workingFilePath, + convertedPath, + processingOptions, + ); + workingFilePath = convertedPath; + } + let titleP = enableAiDataAnalyst ? asNeverReject(generateTitle(uploadFilename), "generateTitle") : null; @@ -332,6 +357,17 @@ export async function processVectorUpload(options: { throw new Error("Not a recognized file type"); } + if (isDelimited) { + if (/Feature Count: 0\b/.test(ogrInfo)) { + throw new Error( + "No spatial features could be extracted from this file using the selected columns. Double check the column mapping and try again.", + ); + } + // The original output should reflect the file as uploaded (delimited + // text), not the GeoJSON it was converted to above. + type = "CSV"; + } + const sidecarFiles = await collectAttributionSidecarContents( logger, workingDirectory, diff --git a/packages/spatial-uploads-handler/src/spatialUploadsHandlerTypes.ts b/packages/spatial-uploads-handler/src/spatialUploadsHandlerTypes.ts index 08ecc8e52..77b44ea8f 100644 --- a/packages/spatial-uploads-handler/src/spatialUploadsHandlerTypes.ts +++ b/packages/spatial-uploads-handler/src/spatialUploadsHandlerTypes.ts @@ -17,4 +17,24 @@ export interface SpatialUploadsHandlerRequest { // Whether to enable AI data analyst. If not set or false, will skip sending // data to openai. *Will* still run classification of PII using local models. enableAiDataAnalyst?: boolean; + // Column mapping / CRS configuration for delimited (CSV/TSV/TXT) uploads. + // Required if the upload is a delimited text file. + processingOptions?: DelimitedUploadProcessingOptions; } + +/** + * Column mapping and coordinate reference system chosen (or auto-detected) + * for a delimited text (CSV/TSV/TXT) spatial upload. Mirrored on the client + * in `packages/client/src/admin/uploads/delimitedSpatial/types.ts` — keep + * both in sync when making changes. + */ +export type DelimitedUploadProcessingOptions = { + kind: "delimited"; + geometryMode: "point_xy" | "wkt"; + xField?: string; + yField?: string; + geometryField?: string; + crs: string; + delimiter: "," | "\t" | ";" | "|"; + hasHeaderRow: boolean; +}; diff --git a/packages/spatial-uploads-handler/src/uploadPipelineShared.ts b/packages/spatial-uploads-handler/src/uploadPipelineShared.ts index 01111703d..a9ee43153 100644 --- a/packages/spatial-uploads-handler/src/uploadPipelineShared.ts +++ b/packages/spatial-uploads-handler/src/uploadPipelineShared.ts @@ -13,7 +13,8 @@ export type SupportedTypes = | "FlatGeobuf" | "ZippedShapefile" | "GeoTIFF" - | "NetCDF"; + | "NetCDF" + | "CSV"; export interface ResponseOutput { /** Remote location string as used in rclone */ From dfbbccdc6cbf469503ed652ac1103980f081dd9f Mon Sep 17 00:00:00 2001 From: Chad Burt Date: Mon, 6 Jul 2026 08:07:55 -0700 Subject: [PATCH 02/32] WIP --- lerna.json | 1 + packages/api/.env.template | 2 + packages/api/generated-schema-clean.gql | 530 ++++ packages/api/generated-schema.gql | 550 ++++ packages/api/migrations/committed/000429.sql | 844 ++++++ packages/api/migrations/current.sql | 304 +- packages/api/process-env.d.ts | 2 + packages/api/schema.sql | 937 +++++- packages/api/src/graphileOptions.ts | 3 +- .../api/src/plugins/overlayDataTablePlugin.ts | 48 + .../api/tasks/cleanupProjectBackgroundJobs.ts | 9 +- packages/api/tasks/processDataTableUpload.ts | 104 + .../tasks/processDataTableUploadOutputs.ts | 48 + packages/api/tests/overlayDataTables.test.ts | 279 ++ .../changelogs/DataTablesChangeLogList.tsx | 133 + .../changelogs/dataTableChangeLogRefetch.ts | 33 + .../DataTableCreatedFieldGroupListItem.tsx | 28 + .../DataTableDeletedFieldGroupListItem.tsx | 28 + .../DataTableRenamedFieldGroupListItem.tsx | 38 + .../DataTableReplacedFieldGroupListItem.tsx | 47 + .../DataTableRollbackFieldGroupListItem.tsx | 33 + .../fieldGroups/dataTableSummary.ts | 131 + .../src/admin/changelogs/fieldGroups/index.ts | 10 + .../src/admin/data/EnableDataTables.tsx | 113 + .../data/LayerTableOfContentsItemEditor.tsx | 107 +- .../data/PublishSummarizedChangesPanel.tsx | 2 + .../data/PublishTableOfContentsModal.tsx | 10 + .../LayerEditorTabs.tsx | 47 + .../DataTableJoinColumnModal.tsx | 314 ++ .../DataTableUploadJobProgress.tsx | 85 + .../DataTableUploadModal.tsx | 467 +++ .../overlayDataTables/DataTablesEditor.tsx | 57 + .../overlayDataTables/RelatedDataTables.tsx | 375 +++ .../detectJoinColumn.test.ts | 213 ++ .../overlayDataTables/detectJoinColumn.ts | 160 + .../overlayJoinColumnOptions.test.ts | 91 + .../overlayJoinColumnOptions.ts | 265 ++ .../src/admin/data/overlayDataTables/types.ts | 7 + .../PublishBadgeDetailContent.tsx | 36 + .../data/publishBadgeDetails/presentation.ts | 2 + .../src/admin/data/publishChangelogSummary.ts | 22 + .../uploads/ProjectBackgroundJobContext.tsx | 8 + .../uploads/ProjectBackgroundJobManager.ts | 211 +- packages/client/src/generated/graphql.ts | 969 +++++- packages/client/src/generated/queries.ts | 777 ++++- packages/client/src/index.css | 75 + .../client/src/queries/DataUploads.graphql | 6 + .../src/queries/DraftTableOfContents.graphql | 44 +- .../src/queries/OverlayDataTables.graphql | 90 + packages/data-tables-handler/Dockerfile | 21 + .../data-tables-handler/dist/handler.d.ts | 3 + packages/data-tables-handler/dist/handler.js | 16 + packages/data-tables-handler/dist/server.d.ts | 2 + packages/data-tables-handler/dist/server.js | 58 + .../dist/src/handleDataTableUpload.d.ts | 2 + .../dist/src/handleDataTableUpload.js | 162 + .../dist/src/inferCsvColumnPlans.d.ts | 17 + .../dist/src/inferCsvColumnPlans.js | 114 + .../dist/src/inferCsvColumnPlans.test.d.ts | 1 + .../dist/src/inferCsvColumnPlans.test.js | 24 + .../dist/src/lambda-db-client.d.ts | 2 + .../dist/src/lambda-db-client.js | 82 + .../dist/src/normalizeCsvEncoding.d.ts | 9 + .../dist/src/normalizeCsvEncoding.js | 52 + .../dist/src/processWithDuckDb.d.ts | 9 + .../dist/src/processWithDuckDb.js | 149 + .../data-tables-handler/dist/src/remotes.d.ts | 8 + .../data-tables-handler/dist/src/remotes.js | 95 + .../data-tables-handler/dist/src/types.d.ts | 29 + .../data-tables-handler/dist/src/types.js | 2 + .../dist/src/validateJoinColumn.d.ts | 12 + .../dist/src/validateJoinColumn.js | 69 + packages/data-tables-handler/handler.ts | 14 + .../data-tables-handler/package-lock.json | 2632 +++++++++++++++++ packages/data-tables-handler/package.json | 32 + packages/data-tables-handler/server.ts | 34 + .../src/handleDataTableUpload.ts | 200 ++ .../src/inferCsvColumnPlans.ts | 178 ++ .../src/lambda-db-client.ts | 85 + .../src/normalizeCsvEncoding.ts | 35 + .../src/processWithDuckDb.ts | 210 ++ packages/data-tables-handler/src/remotes.ts | 81 + packages/data-tables-handler/src/types.ts | 32 + .../src/validateJoinColumn.ts | 88 + packages/data-tables-handler/tsconfig.json | 16 + packages/geostats-types/dist/lib/index.d.ts | 18 + .../geostats-types/dist/lib/index.d.ts.map | 2 +- packages/geostats-types/lib/index.ts | 19 + packages/infra/bin/infra.ts | 14 + .../infra/lib/DataTablesHandlerLambdaStack.ts | 80 + packages/infra/lib/GraphQLStack.ts | 4 + .../dist/handler.d.ts.map | 2 +- .../dist/src/handleUpload.js | 24 +- .../dist/src/handleUpload.js.map | 2 +- 94 files changed, 13259 insertions(+), 176 deletions(-) create mode 100644 packages/api/migrations/committed/000429.sql create mode 100644 packages/api/src/plugins/overlayDataTablePlugin.ts create mode 100644 packages/api/tasks/processDataTableUpload.ts create mode 100644 packages/api/tasks/processDataTableUploadOutputs.ts create mode 100644 packages/api/tests/overlayDataTables.test.ts create mode 100644 packages/client/src/admin/changelogs/DataTablesChangeLogList.tsx create mode 100644 packages/client/src/admin/changelogs/dataTableChangeLogRefetch.ts create mode 100644 packages/client/src/admin/changelogs/fieldGroups/DataTableCreatedFieldGroupListItem.tsx create mode 100644 packages/client/src/admin/changelogs/fieldGroups/DataTableDeletedFieldGroupListItem.tsx create mode 100644 packages/client/src/admin/changelogs/fieldGroups/DataTableRenamedFieldGroupListItem.tsx create mode 100644 packages/client/src/admin/changelogs/fieldGroups/DataTableReplacedFieldGroupListItem.tsx create mode 100644 packages/client/src/admin/changelogs/fieldGroups/DataTableRollbackFieldGroupListItem.tsx create mode 100644 packages/client/src/admin/changelogs/fieldGroups/dataTableSummary.ts create mode 100644 packages/client/src/admin/data/EnableDataTables.tsx create mode 100644 packages/client/src/admin/data/TableOfContentsItemEditor/LayerEditorTabs.tsx create mode 100644 packages/client/src/admin/data/overlayDataTables/DataTableJoinColumnModal.tsx create mode 100644 packages/client/src/admin/data/overlayDataTables/DataTableUploadJobProgress.tsx create mode 100644 packages/client/src/admin/data/overlayDataTables/DataTableUploadModal.tsx create mode 100644 packages/client/src/admin/data/overlayDataTables/DataTablesEditor.tsx create mode 100644 packages/client/src/admin/data/overlayDataTables/RelatedDataTables.tsx create mode 100644 packages/client/src/admin/data/overlayDataTables/detectJoinColumn.test.ts create mode 100644 packages/client/src/admin/data/overlayDataTables/detectJoinColumn.ts create mode 100644 packages/client/src/admin/data/overlayDataTables/overlayJoinColumnOptions.test.ts create mode 100644 packages/client/src/admin/data/overlayDataTables/overlayJoinColumnOptions.ts create mode 100644 packages/client/src/admin/data/overlayDataTables/types.ts create mode 100644 packages/client/src/queries/OverlayDataTables.graphql create mode 100644 packages/data-tables-handler/Dockerfile create mode 100644 packages/data-tables-handler/dist/handler.d.ts create mode 100644 packages/data-tables-handler/dist/handler.js create mode 100644 packages/data-tables-handler/dist/server.d.ts create mode 100644 packages/data-tables-handler/dist/server.js create mode 100644 packages/data-tables-handler/dist/src/handleDataTableUpload.d.ts create mode 100644 packages/data-tables-handler/dist/src/handleDataTableUpload.js create mode 100644 packages/data-tables-handler/dist/src/inferCsvColumnPlans.d.ts create mode 100644 packages/data-tables-handler/dist/src/inferCsvColumnPlans.js create mode 100644 packages/data-tables-handler/dist/src/inferCsvColumnPlans.test.d.ts create mode 100644 packages/data-tables-handler/dist/src/inferCsvColumnPlans.test.js create mode 100644 packages/data-tables-handler/dist/src/lambda-db-client.d.ts create mode 100644 packages/data-tables-handler/dist/src/lambda-db-client.js create mode 100644 packages/data-tables-handler/dist/src/normalizeCsvEncoding.d.ts create mode 100644 packages/data-tables-handler/dist/src/normalizeCsvEncoding.js create mode 100644 packages/data-tables-handler/dist/src/processWithDuckDb.d.ts create mode 100644 packages/data-tables-handler/dist/src/processWithDuckDb.js create mode 100644 packages/data-tables-handler/dist/src/remotes.d.ts create mode 100644 packages/data-tables-handler/dist/src/remotes.js create mode 100644 packages/data-tables-handler/dist/src/types.d.ts create mode 100644 packages/data-tables-handler/dist/src/types.js create mode 100644 packages/data-tables-handler/dist/src/validateJoinColumn.d.ts create mode 100644 packages/data-tables-handler/dist/src/validateJoinColumn.js create mode 100644 packages/data-tables-handler/handler.ts create mode 100644 packages/data-tables-handler/package-lock.json create mode 100644 packages/data-tables-handler/package.json create mode 100644 packages/data-tables-handler/server.ts create mode 100644 packages/data-tables-handler/src/handleDataTableUpload.ts create mode 100644 packages/data-tables-handler/src/inferCsvColumnPlans.ts create mode 100644 packages/data-tables-handler/src/lambda-db-client.ts create mode 100644 packages/data-tables-handler/src/normalizeCsvEncoding.ts create mode 100644 packages/data-tables-handler/src/processWithDuckDb.ts create mode 100644 packages/data-tables-handler/src/remotes.ts create mode 100644 packages/data-tables-handler/src/types.ts create mode 100644 packages/data-tables-handler/src/validateJoinColumn.ts create mode 100644 packages/data-tables-handler/tsconfig.json create mode 100644 packages/infra/lib/DataTablesHandlerLambdaStack.ts diff --git a/lerna.json b/lerna.json index ad2126c14..174feea13 100644 --- a/lerna.json +++ b/lerna.json @@ -10,6 +10,7 @@ "packages/map-tile-cache-calculator", "packages/mapbox-gl-esri-sources", "packages/spatial-uploads-handler", + "packages/data-tables-handler", "packages/uploads-server", "packages/vector-data-source", "packages/geostats-types", diff --git a/packages/api/.env.template b/packages/api/.env.template index a2d37db7e..c7404455e 100644 --- a/packages/api/.env.template +++ b/packages/api/.env.template @@ -24,3 +24,5 @@ POEDITOR_API_TOKEN="op://SeaSketch/dev/POEditor/APIToken" POEDITOR_PROJECT="op://SeaSketch/dev/POEditor/Project" REDIS_PASSWORD="op://SeaSketch/dev/Redis/Password" CLIENT_DOMAIN="op://SeaSketch/dev/ClientDomain" +# Local data table upload processing (run `npm run dev` in packages/data-tables-handler) +DATA_TABLES_LAMBDA_DEV_HANDLER=http://localhost:3006 diff --git a/packages/api/generated-schema-clean.gql b/packages/api/generated-schema-clean.gql index 2ee31f0c6..8bdc4c124 100644 --- a/packages/api/generated-schema-clean.gql +++ b/packages/api/generated-schema-clean.gql @@ -1101,6 +1101,11 @@ input ChangeLogCondition { } enum ChangeLogFieldGroup { + DATA_TABLE_CREATED + DATA_TABLE_DELETED + DATA_TABLE_RENAMED + DATA_TABLE_REPLACED + DATA_TABLE_ROLLBACK FOLDER_ACL FOLDER_CREATED FOLDER_DELETED @@ -1718,6 +1723,7 @@ input CreateDataUploadInput { clientMutationId: String contentType: String filename: String + processingOptions: JSON projectId: Int replaceTableOfContentsItemId: Int } @@ -2258,6 +2264,46 @@ type CreateOptionalBasemapLayerPayload { query: Query } +"""All input for the `createOverlayDataTableUpload` mutation.""" +input CreateOverlayDataTableUploadInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + contentType: String + filename: String + processingOptions: JSON + replaceOverlayDataTableId: Int + tocItemId: Int +} + +"""The output of our `createOverlayDataTableUpload` mutation.""" +type CreateOverlayDataTableUploadPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + overlayDataTableUpload: OverlayDataTableUpload + + """An edge for our `OverlayDataTableUpload`. May be used by Relay 1.""" + overlayDataTableUploadEdge( + """The method to use when ordering `OverlayDataTableUpload`.""" + orderBy: [OverlayDataTableUploadsOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTableUploadsEdge + + """ + Reads a single `ProjectBackgroundJob` that is related to this `OverlayDataTableUpload`. + """ + projectBackgroundJob: ProjectBackgroundJob + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query +} + input CreateProjectGeographyClippingLayerInput { """ If provided, features used for clipping will be filtered based on this @@ -4193,6 +4239,7 @@ type DataUploadOutput implements Node { } enum DataUploadOutputType { + CSV FLAT_GEOBUF GEO_JSON GEO_TIFF @@ -4237,6 +4284,13 @@ type DataUploadTask implements Node { """Use to upload source data to s3. Must be an admin.""" presignedUploadUrl: String + """ + Format-specific processing instructions supplied by the client at upload time + (e.g. column mapping and CRS for delimited text uploads). Consumed by the + spatial-uploads-handler. + """ + processingOptions: JSON + """ Reads a single `ProjectBackgroundJob` that is related to this `DataUploadTask`. """ @@ -9333,6 +9387,12 @@ type Mutation { """ input: CreateOptionalBasemapLayerInput! ): CreateOptionalBasemapLayerPayload + createOverlayDataTableUpload( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: CreateOverlayDataTableUploadInput! + ): CreateOverlayDataTableUploadPayload createPost(message: JSON!, topicId: Int!): Post! """ @@ -10328,6 +10388,12 @@ type Mutation { """ input: RemoveValidChildSketchClassInput! ): RemoveValidChildSketchClassPayload + renameOverlayDataTable( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: RenameOverlayDataTableInput! + ): RenameOverlayDataTablePayload renameReportTab( """ The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. @@ -10408,6 +10474,12 @@ type Mutation { """ input: RevokeApiKeyInput! ): RevokeApiKeyPayload + rollbackOverlayDataTableVersion( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: RollbackOverlayDataTableVersionInput! + ): RollbackOverlayDataTableVersionPayload rollbackToArchivedSource( """ The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. @@ -10570,6 +10642,12 @@ type Mutation { """ input: ShareSpriteInput! ): ShareSpritePayload + softDeleteOverlayDataTable( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: SoftDeleteOverlayDataTableInput! + ): SoftDeleteOverlayDataTablePayload """ Superusers only. "Deletes" a sprite but keeps it in the DB in case layers are already referencing it. @@ -10586,6 +10664,12 @@ type Mutation { """ input: SubmitDataUploadInput! ): SubmitDataUploadPayload + submitOverlayDataTableUpload( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: SubmitOverlayDataTableUploadInput! + ): SubmitOverlayDataTableUploadPayload """ Toggle admin access for the given project and user. User must have already @@ -11688,6 +11772,162 @@ type OutstandingSurveyInvites { token: String! } +type OverlayDataTable implements Node { + columnStatsRemote: String! + columnStatsUrl: String + createdAt: Datetime + createdBy: Int! + deletedAt: Datetime + id: Int! + joinColumn: String! + name: String! + + """ + A globally unique identifier. Can be used in various places throughout the system to identify this single value. + """ + nodeId: ID! + overlayJoinColumn: String! + parquetRemote: String! + parquetUrl: String + + """Reads a single `Project` that is related to this `OverlayDataTable`.""" + project: Project + projectId: Int! + replacedById: Int + rowCount: Int! + tableOfContentsItemId: Int! + updatedAt: Datetime + version: Int! +} + +""" +A condition to be used against `OverlayDataTable` object types. All fields are +tested for equality and combined with a logical ‘and.’ +""" +input OverlayDataTableCondition { + """Checks for equality with the object’s `id` field.""" + id: Int + + """Checks for equality with the object’s `projectId` field.""" + projectId: Int +} + +"""A connection to a list of `OverlayDataTable` values.""" +type OverlayDataTablesConnection { + """ + A list of edges which contains the `OverlayDataTable` and cursor to aid in pagination. + """ + edges: [OverlayDataTablesEdge!]! + + """A list of `OverlayDataTable` objects.""" + nodes: [OverlayDataTable!]! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """ + The count of *all* `OverlayDataTable` you could get from the connection. + """ + totalCount: Int! +} + +"""A `OverlayDataTable` edge in the connection.""" +type OverlayDataTablesEdge { + """A cursor for use in pagination.""" + cursor: Cursor + + """The `OverlayDataTable` at the end of the edge.""" + node: OverlayDataTable! +} + +"""Methods to use when ordering `OverlayDataTable`.""" +enum OverlayDataTablesOrderBy { + ID_ASC + ID_DESC + NATURAL + PRIMARY_KEY_ASC + PRIMARY_KEY_DESC + PROJECT_ID_ASC + PROJECT_ID_DESC +} + +type OverlayDataTableUpload implements Node { + contentType: String! + createdAt: Datetime + errorDetails: JSON + filename: String! + id: UUID! + + """ + A globally unique identifier. Can be used in various places throughout the system to identify this single value. + """ + nodeId: ID! + overlayGeostats: JSON! + overlayJoinColumn: String + presignedUploadUrl: String + processingOptions: JSON! + + """ + Reads a single `ProjectBackgroundJob` that is related to this `OverlayDataTableUpload`. + """ + projectBackgroundJob: ProjectBackgroundJob + projectBackgroundJobId: UUID! + replaceOverlayDataTableId: Int + tableOfContentsItemId: Int! + updatedAt: Datetime +} + +""" +A condition to be used against `OverlayDataTableUpload` object types. All fields +are tested for equality and combined with a logical ‘and.’ +""" +input OverlayDataTableUploadCondition { + """Checks for equality with the object’s `id` field.""" + id: UUID + + """Checks for equality with the object’s `projectBackgroundJobId` field.""" + projectBackgroundJobId: UUID +} + +"""A connection to a list of `OverlayDataTableUpload` values.""" +type OverlayDataTableUploadsConnection { + """ + A list of edges which contains the `OverlayDataTableUpload` and cursor to aid in pagination. + """ + edges: [OverlayDataTableUploadsEdge!]! + + """A list of `OverlayDataTableUpload` objects.""" + nodes: [OverlayDataTableUpload!]! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """ + The count of *all* `OverlayDataTableUpload` you could get from the connection. + """ + totalCount: Int! +} + +"""A `OverlayDataTableUpload` edge in the connection.""" +type OverlayDataTableUploadsEdge { + """A cursor for use in pagination.""" + cursor: Cursor + + """The `OverlayDataTableUpload` at the end of the edge.""" + node: OverlayDataTableUpload! +} + +"""Methods to use when ordering `OverlayDataTableUpload`.""" +enum OverlayDataTableUploadsOrderBy { + ID_ASC + ID_DESC + NATURAL + PRIMARY_KEY_ASC + PRIMARY_KEY_DESC + PROJECT_BACKGROUND_JOB_ID_ASC + PROJECT_BACKGROUND_JOB_ID_DESC +} + """Information about pagination in a connection.""" type PageInfo { """When paginating forwards, the cursor to continue.""" @@ -12482,6 +12722,35 @@ type Project implements Node { orderBy: [OfflineTileSettingsOrderBy!] ): [OfflineTileSetting!]! + """Reads and enables pagination through a set of `OverlayDataTable`.""" + overlayDataTablesConnection( + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """ + A condition to be used in determining which values should be returned by the collection. + """ + condition: OverlayDataTableCondition + + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """The method to use when ordering `OverlayDataTable`.""" + orderBy: [OverlayDataTablesOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTablesConnection! + """ Count of all users who have opted into participating in the project, sharing their profile with project administrators. """ @@ -12835,6 +13104,42 @@ type ProjectBackgroundJob implements Node { A globally unique identifier. Can be used in various places throughout the system to identify this single value. """ nodeId: ID! + + """ + Reads a single `OverlayDataTableUpload` that is related to this `ProjectBackgroundJob`. + """ + overlayDataTableUpload: OverlayDataTableUpload + + """ + Reads and enables pagination through a set of `OverlayDataTableUpload`. + """ + overlayDataTableUploadsConnection( + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """ + A condition to be used in determining which values should be returned by the collection. + """ + condition: OverlayDataTableUploadCondition + + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """The method to use when ordering `OverlayDataTableUpload`.""" + orderBy: [OverlayDataTableUploadsOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTableUploadsConnection! @deprecated(reason: "Please use overlayDataTableUpload instead") progress: BigFloat progressMessage: String! @@ -12892,6 +13197,7 @@ type ProjectBackgroundJobSubscriptionPayload { enum ProjectBackgroundJobType { ARCGIS_IMPORT CONSOLIDATE_DATA_SOURCES + DATA_TABLE_UPLOAD DATA_UPLOAD REPLACEMENT_UPLOAD } @@ -14167,6 +14473,88 @@ type Query implements Node { """ nodeId: ID! ): OptionalBasemapLayer + overlayDataTable(id: Int!): OverlayDataTable + + """Reads a single `OverlayDataTable` using its globally unique `ID`.""" + overlayDataTableByNodeId( + """ + The globally unique `ID` to be used in selecting a single `OverlayDataTable`. + """ + nodeId: ID! + ): OverlayDataTable + overlayDataTableLinkedTocIsDraft(pid: Int, tocItemId: Int): Boolean + + """Reads and enables pagination through a set of `OverlayDataTable`.""" + overlayDataTablesConnection( + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """ + A condition to be used in determining which values should be returned by the collection. + """ + condition: OverlayDataTableCondition + + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """The method to use when ordering `OverlayDataTable`.""" + orderBy: [OverlayDataTablesOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTablesConnection + overlayDataTableUpload(id: UUID!): OverlayDataTableUpload + + """ + Reads a single `OverlayDataTableUpload` using its globally unique `ID`. + """ + overlayDataTableUploadByNodeId( + """ + The globally unique `ID` to be used in selecting a single `OverlayDataTableUpload`. + """ + nodeId: ID! + ): OverlayDataTableUpload + overlayDataTableUploadByProjectBackgroundJobId(projectBackgroundJobId: UUID!): OverlayDataTableUpload + + """ + Reads and enables pagination through a set of `OverlayDataTableUpload`. + """ + overlayDataTableUploadsConnection( + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """ + A condition to be used in determining which values should be returned by the collection. + """ + condition: OverlayDataTableUploadCondition + + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """The method to use when ordering `OverlayDataTableUpload`.""" + orderBy: [OverlayDataTableUploadsOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTableUploadsConnection post(id: Int!): Post """Reads a single `Post` using its globally unique `ID`.""" @@ -14916,6 +15304,41 @@ type RemoveValidChildSketchClassPayload { query: Query } +"""All input for the `renameOverlayDataTable` mutation.""" +input RenameOverlayDataTableInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + newName: String + tableId: Int +} + +"""The output of our `renameOverlayDataTable` mutation.""" +type RenameOverlayDataTablePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + overlayDataTable: OverlayDataTable + + """An edge for our `OverlayDataTable`. May be used by Relay 1.""" + overlayDataTableEdge( + """The method to use when ordering `OverlayDataTable`.""" + orderBy: [OverlayDataTablesOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTablesEdge + + """Reads a single `Project` that is related to this `OverlayDataTable`.""" + project: Project + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query +} + """All input for the `renameReportTab` mutation.""" input RenameReportTabInput { alternateLanguageSettings: JSON @@ -15558,6 +15981,40 @@ type RevokeApiKeyPayload { query: Query } +"""All input for the `rollbackOverlayDataTableVersion` mutation.""" +input RollbackOverlayDataTableVersionInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + tableId: Int +} + +"""The output of our `rollbackOverlayDataTableVersion` mutation.""" +type RollbackOverlayDataTableVersionPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + overlayDataTable: OverlayDataTable + + """An edge for our `OverlayDataTable`. May be used by Relay 1.""" + overlayDataTableEdge( + """The method to use when ordering `OverlayDataTable`.""" + orderBy: [OverlayDataTablesOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTablesEdge + + """Reads a single `Project` that is related to this `OverlayDataTable`.""" + project: Project + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query +} + """All input for the `rollbackToArchivedSource` mutation.""" input RollbackToArchivedSourceInput { """ @@ -16560,6 +17017,40 @@ enum SketchGeometryType { POLYGON } +"""All input for the `softDeleteOverlayDataTable` mutation.""" +input SoftDeleteOverlayDataTableInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + tableId: Int +} + +"""The output of our `softDeleteOverlayDataTable` mutation.""" +type SoftDeleteOverlayDataTablePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + overlayDataTable: OverlayDataTable + + """An edge for our `OverlayDataTable`. May be used by Relay 1.""" + overlayDataTableEdge( + """The method to use when ordering `OverlayDataTable`.""" + orderBy: [OverlayDataTablesOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTablesEdge + + """Reads a single `Project` that is related to this `OverlayDataTable`.""" + project: Project + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query +} + """All input for the `softDeleteSprite` mutation.""" input SoftDeleteSpriteInput { """ @@ -16821,6 +17312,36 @@ type SubmitDataUploadPayload { query: Query } +"""All input for the `submitOverlayDataTableUpload` mutation.""" +input SubmitOverlayDataTableUploadInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + jobId: UUID +} + +"""The output of our `submitOverlayDataTableUpload` mutation.""" +type SubmitOverlayDataTableUploadPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """ + Reads a single `Project` that is related to this `ProjectBackgroundJob`. + """ + project: Project + projectBackgroundJob: ProjectBackgroundJob + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query +} + """ The root subscription type: contains realtime events you can subscribe to with the `subscription` operation. """ @@ -17593,6 +18114,15 @@ type TableOfContentsItem implements Node { """ nodeId: ID! + """Reads and enables pagination through a set of `OverlayDataTable`.""" + overlayDataTables( + """Only read the first `n` values of the set.""" + first: Int + + """Skip the first `n` values.""" + offset: Int + ): [OverlayDataTable!] + """ stable_id of the parent folder, if any. This property cannot be changed directly. To rearrange items into folders, use the diff --git a/packages/api/generated-schema.gql b/packages/api/generated-schema.gql index fef19d9e3..adfc1de76 100644 --- a/packages/api/generated-schema.gql +++ b/packages/api/generated-schema.gql @@ -1101,6 +1101,11 @@ input ChangeLogCondition { } enum ChangeLogFieldGroup { + DATA_TABLE_CREATED + DATA_TABLE_DELETED + DATA_TABLE_RENAMED + DATA_TABLE_REPLACED + DATA_TABLE_ROLLBACK FOLDER_ACL FOLDER_CREATED FOLDER_DELETED @@ -2291,6 +2296,46 @@ type CreateOriginalSourceIdPayload { query: Query } +"""All input for the `createOverlayDataTableUpload` mutation.""" +input CreateOverlayDataTableUploadInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + contentType: String + filename: String + processingOptions: JSON + replaceOverlayDataTableId: Int + tocItemId: Int +} + +"""The output of our `createOverlayDataTableUpload` mutation.""" +type CreateOverlayDataTableUploadPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + overlayDataTableUpload: OverlayDataTableUpload + + """An edge for our `OverlayDataTableUpload`. May be used by Relay 1.""" + overlayDataTableUploadEdge( + """The method to use when ordering `OverlayDataTableUpload`.""" + orderBy: [OverlayDataTableUploadsOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTableUploadsEdge + + """ + Reads a single `ProjectBackgroundJob` that is related to this `OverlayDataTableUpload`. + """ + projectBackgroundJob: ProjectBackgroundJob + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query +} + input CreateProjectGeographyClippingLayerInput { """ If provided, features used for clipping will be filtered based on this @@ -9436,6 +9481,12 @@ type Mutation { """ input: CreateOriginalSourceIdInput! ): CreateOriginalSourceIdPayload + createOverlayDataTableUpload( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: CreateOverlayDataTableUploadInput! + ): CreateOverlayDataTableUploadPayload createPost(message: JSON!, topicId: Int!): Post! """ @@ -10445,6 +10496,12 @@ type Mutation { """ input: RemoveValidChildSketchClassInput! ): RemoveValidChildSketchClassPayload + renameOverlayDataTable( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: RenameOverlayDataTableInput! + ): RenameOverlayDataTablePayload renameReportTab( """ The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. @@ -10525,6 +10582,12 @@ type Mutation { """ input: RevokeApiKeyInput! ): RevokeApiKeyPayload + rollbackOverlayDataTableVersion( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: RollbackOverlayDataTableVersionInput! + ): RollbackOverlayDataTableVersionPayload rollbackToArchivedSource( """ The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. @@ -10687,6 +10750,12 @@ type Mutation { """ input: ShareSpriteInput! ): ShareSpritePayload + softDeleteOverlayDataTable( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: SoftDeleteOverlayDataTableInput! + ): SoftDeleteOverlayDataTablePayload """ Superusers only. "Deletes" a sprite but keeps it in the DB in case layers are already referencing it. @@ -10703,6 +10772,12 @@ type Mutation { """ input: SubmitDataUploadInput! ): SubmitDataUploadPayload + submitOverlayDataTableUpload( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: SubmitOverlayDataTableUploadInput! + ): SubmitOverlayDataTableUploadPayload """ Toggle admin access for the given project and user. User must have already @@ -11847,6 +11922,162 @@ type OutstandingSurveyInvites { token: String! } +type OverlayDataTable implements Node { + columnStatsRemote: String! + columnStatsUrl: String + createdAt: Datetime + createdBy: Int! + deletedAt: Datetime + id: Int! + joinColumn: String! + name: String! + + """ + A globally unique identifier. Can be used in various places throughout the system to identify this single value. + """ + nodeId: ID! + overlayJoinColumn: String! + parquetRemote: String! + parquetUrl: String + + """Reads a single `Project` that is related to this `OverlayDataTable`.""" + project: Project + projectId: Int! + replacedById: Int + rowCount: Int! + tableOfContentsItemId: Int! + updatedAt: Datetime + version: Int! +} + +""" +A condition to be used against `OverlayDataTable` object types. All fields are +tested for equality and combined with a logical ‘and.’ +""" +input OverlayDataTableCondition { + """Checks for equality with the object’s `id` field.""" + id: Int + + """Checks for equality with the object’s `projectId` field.""" + projectId: Int +} + +"""A connection to a list of `OverlayDataTable` values.""" +type OverlayDataTablesConnection { + """ + A list of edges which contains the `OverlayDataTable` and cursor to aid in pagination. + """ + edges: [OverlayDataTablesEdge!]! + + """A list of `OverlayDataTable` objects.""" + nodes: [OverlayDataTable!]! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """ + The count of *all* `OverlayDataTable` you could get from the connection. + """ + totalCount: Int! +} + +"""A `OverlayDataTable` edge in the connection.""" +type OverlayDataTablesEdge { + """A cursor for use in pagination.""" + cursor: Cursor + + """The `OverlayDataTable` at the end of the edge.""" + node: OverlayDataTable! +} + +"""Methods to use when ordering `OverlayDataTable`.""" +enum OverlayDataTablesOrderBy { + ID_ASC + ID_DESC + NATURAL + PRIMARY_KEY_ASC + PRIMARY_KEY_DESC + PROJECT_ID_ASC + PROJECT_ID_DESC +} + +type OverlayDataTableUpload implements Node { + contentType: String! + createdAt: Datetime + errorDetails: JSON + filename: String! + id: UUID! + + """ + A globally unique identifier. Can be used in various places throughout the system to identify this single value. + """ + nodeId: ID! + overlayGeostats: JSON! + overlayJoinColumn: String + presignedUploadUrl: String + processingOptions: JSON! + + """ + Reads a single `ProjectBackgroundJob` that is related to this `OverlayDataTableUpload`. + """ + projectBackgroundJob: ProjectBackgroundJob + projectBackgroundJobId: UUID! + replaceOverlayDataTableId: Int + tableOfContentsItemId: Int! + updatedAt: Datetime +} + +""" +A condition to be used against `OverlayDataTableUpload` object types. All fields +are tested for equality and combined with a logical ‘and.’ +""" +input OverlayDataTableUploadCondition { + """Checks for equality with the object’s `id` field.""" + id: UUID + + """Checks for equality with the object’s `projectBackgroundJobId` field.""" + projectBackgroundJobId: UUID +} + +"""A connection to a list of `OverlayDataTableUpload` values.""" +type OverlayDataTableUploadsConnection { + """ + A list of edges which contains the `OverlayDataTableUpload` and cursor to aid in pagination. + """ + edges: [OverlayDataTableUploadsEdge!]! + + """A list of `OverlayDataTableUpload` objects.""" + nodes: [OverlayDataTableUpload!]! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """ + The count of *all* `OverlayDataTableUpload` you could get from the connection. + """ + totalCount: Int! +} + +"""A `OverlayDataTableUpload` edge in the connection.""" +type OverlayDataTableUploadsEdge { + """A cursor for use in pagination.""" + cursor: Cursor + + """The `OverlayDataTableUpload` at the end of the edge.""" + node: OverlayDataTableUpload! +} + +"""Methods to use when ordering `OverlayDataTableUpload`.""" +enum OverlayDataTableUploadsOrderBy { + ID_ASC + ID_DESC + NATURAL + PRIMARY_KEY_ASC + PRIMARY_KEY_DESC + PROJECT_BACKGROUND_JOB_ID_ASC + PROJECT_BACKGROUND_JOB_ID_DESC +} + """Information about pagination in a connection.""" type PageInfo { """When paginating forwards, the cursor to continue.""" @@ -12641,6 +12872,35 @@ type Project implements Node { orderBy: [OfflineTileSettingsOrderBy!] ): [OfflineTileSetting!]! + """Reads and enables pagination through a set of `OverlayDataTable`.""" + overlayDataTablesConnection( + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """ + A condition to be used in determining which values should be returned by the collection. + """ + condition: OverlayDataTableCondition + + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """The method to use when ordering `OverlayDataTable`.""" + orderBy: [OverlayDataTablesOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTablesConnection! + """ Count of all users who have opted into participating in the project, sharing their profile with project administrators. """ @@ -12994,6 +13254,42 @@ type ProjectBackgroundJob implements Node { A globally unique identifier. Can be used in various places throughout the system to identify this single value. """ nodeId: ID! + + """ + Reads a single `OverlayDataTableUpload` that is related to this `ProjectBackgroundJob`. + """ + overlayDataTableUpload: OverlayDataTableUpload + + """ + Reads and enables pagination through a set of `OverlayDataTableUpload`. + """ + overlayDataTableUploadsConnection( + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """ + A condition to be used in determining which values should be returned by the collection. + """ + condition: OverlayDataTableUploadCondition + + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """The method to use when ordering `OverlayDataTableUpload`.""" + orderBy: [OverlayDataTableUploadsOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTableUploadsConnection! @deprecated(reason: "Please use overlayDataTableUpload instead") progress: BigFloat progressMessage: String! @@ -13051,6 +13347,7 @@ type ProjectBackgroundJobSubscriptionPayload { enum ProjectBackgroundJobType { ARCGIS_IMPORT CONSOLIDATE_DATA_SOURCES + DATA_TABLE_UPLOAD DATA_UPLOAD REPLACEMENT_UPLOAD } @@ -14392,6 +14689,88 @@ type Query implements Node { """The method to use when ordering `OriginalSourceId`.""" orderBy: [OriginalSourceIdsOrderBy!] = [NATURAL] ): OriginalSourceIdsConnection + overlayDataTable(id: Int!): OverlayDataTable + + """Reads a single `OverlayDataTable` using its globally unique `ID`.""" + overlayDataTableByNodeId( + """ + The globally unique `ID` to be used in selecting a single `OverlayDataTable`. + """ + nodeId: ID! + ): OverlayDataTable + overlayDataTableLinkedTocIsDraft(pid: Int, tocItemId: Int): Boolean + + """Reads and enables pagination through a set of `OverlayDataTable`.""" + overlayDataTablesConnection( + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """ + A condition to be used in determining which values should be returned by the collection. + """ + condition: OverlayDataTableCondition + + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """The method to use when ordering `OverlayDataTable`.""" + orderBy: [OverlayDataTablesOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTablesConnection + overlayDataTableUpload(id: UUID!): OverlayDataTableUpload + + """ + Reads a single `OverlayDataTableUpload` using its globally unique `ID`. + """ + overlayDataTableUploadByNodeId( + """ + The globally unique `ID` to be used in selecting a single `OverlayDataTableUpload`. + """ + nodeId: ID! + ): OverlayDataTableUpload + overlayDataTableUploadByProjectBackgroundJobId(projectBackgroundJobId: UUID!): OverlayDataTableUpload + + """ + Reads and enables pagination through a set of `OverlayDataTableUpload`. + """ + overlayDataTableUploadsConnection( + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """ + A condition to be used in determining which values should be returned by the collection. + """ + condition: OverlayDataTableUploadCondition + + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """The method to use when ordering `OverlayDataTableUpload`.""" + orderBy: [OverlayDataTableUploadsOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTableUploadsConnection post(id: Int!): Post """Reads a single `Post` using its globally unique `ID`.""" @@ -15165,6 +15544,41 @@ type RemoveValidChildSketchClassPayload { query: Query } +"""All input for the `renameOverlayDataTable` mutation.""" +input RenameOverlayDataTableInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + newName: String + tableId: Int +} + +"""The output of our `renameOverlayDataTable` mutation.""" +type RenameOverlayDataTablePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + overlayDataTable: OverlayDataTable + + """An edge for our `OverlayDataTable`. May be used by Relay 1.""" + overlayDataTableEdge( + """The method to use when ordering `OverlayDataTable`.""" + orderBy: [OverlayDataTablesOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTablesEdge + + """Reads a single `Project` that is related to this `OverlayDataTable`.""" + project: Project + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query +} + """All input for the `renameReportTab` mutation.""" input RenameReportTabInput { alternateLanguageSettings: JSON @@ -15770,6 +16184,40 @@ type RevokeApiKeyPayload { query: Query } +"""All input for the `rollbackOverlayDataTableVersion` mutation.""" +input RollbackOverlayDataTableVersionInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + tableId: Int +} + +"""The output of our `rollbackOverlayDataTableVersion` mutation.""" +type RollbackOverlayDataTableVersionPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + overlayDataTable: OverlayDataTable + + """An edge for our `OverlayDataTable`. May be used by Relay 1.""" + overlayDataTableEdge( + """The method to use when ordering `OverlayDataTable`.""" + orderBy: [OverlayDataTablesOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTablesEdge + + """Reads a single `Project` that is related to this `OverlayDataTable`.""" + project: Project + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query +} + """All input for the `rollbackToArchivedSource` mutation.""" input RollbackToArchivedSourceInput { """ @@ -16772,6 +17220,40 @@ enum SketchGeometryType { POLYGON } +"""All input for the `softDeleteOverlayDataTable` mutation.""" +input SoftDeleteOverlayDataTableInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + tableId: Int +} + +"""The output of our `softDeleteOverlayDataTable` mutation.""" +type SoftDeleteOverlayDataTablePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + overlayDataTable: OverlayDataTable + + """An edge for our `OverlayDataTable`. May be used by Relay 1.""" + overlayDataTableEdge( + """The method to use when ordering `OverlayDataTable`.""" + orderBy: [OverlayDataTablesOrderBy!] = [PRIMARY_KEY_ASC] + ): OverlayDataTablesEdge + + """Reads a single `Project` that is related to this `OverlayDataTable`.""" + project: Project + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query +} + """All input for the `softDeleteSprite` mutation.""" input SoftDeleteSpriteInput { """ @@ -17033,6 +17515,36 @@ type SubmitDataUploadPayload { query: Query } +"""All input for the `submitOverlayDataTableUpload` mutation.""" +input SubmitOverlayDataTableUploadInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + jobId: UUID +} + +"""The output of our `submitOverlayDataTableUpload` mutation.""" +type SubmitOverlayDataTableUploadPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """ + Reads a single `Project` that is related to this `ProjectBackgroundJob`. + """ + project: Project + projectBackgroundJob: ProjectBackgroundJob + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query +} + """ The root subscription type: contains realtime events you can subscribe to with the `subscription` operation. """ @@ -17730,6 +18242,20 @@ type TableOfContentsItem implements Node { dataLayerId: Int dataSourceType: DataSourceTypes + """Reads and enables pagination through a set of `ChangeLog`.""" + dataTableChangeLogs( + """Only read the first `n` values of the set.""" + first: Int + + """Skip the first `n` values.""" + offset: Int + ): [ChangeLog!] + + """ + Overlay attribute name used as the canonical feature ID for linked data tables. Required when enable_data_tables is true. + """ + dataTableJoinColumn: String + """Reads and enables pagination through a set of `DownloadOption`.""" downloadOptions( """Only read the first `n` values of the set.""" @@ -17738,6 +18264,11 @@ type TableOfContentsItem implements Node { """Skip the first `n` values.""" offset: Int ): [DownloadOption!] + + """ + When true, admins can attach CSV data tables linked to this layer by a canonical join column. + """ + enableDataTables: Boolean! enableDownload: Boolean! ftsAr: String ftsDa: String @@ -17805,6 +18336,15 @@ type TableOfContentsItem implements Node { """ nodeId: ID! + """Reads and enables pagination through a set of `OverlayDataTable`.""" + overlayDataTables( + """Only read the first `n` values of the set.""" + first: Int + + """Skip the first `n` values.""" + offset: Int + ): [OverlayDataTable!] + """ stable_id of the parent folder, if any. This property cannot be changed directly. To rearrange items into folders, use the @@ -18025,6 +18565,16 @@ input TableOfContentsItemPatch { If is_folder=false, a DataLayers visibility will be controlled by this item """ dataLayerId: Int + + """ + Overlay attribute name used as the canonical feature ID for linked data tables. Required when enable_data_tables is true. + """ + dataTableJoinColumn: String + + """ + When true, admins can attach CSV data tables linked to this layer by a canonical join column. + """ + enableDataTables: Boolean enableDownload: Boolean geoprocessingReferenceId: String hideChildren: Boolean diff --git a/packages/api/migrations/committed/000429.sql b/packages/api/migrations/committed/000429.sql new file mode 100644 index 000000000..d1d7a8868 --- /dev/null +++ b/packages/api/migrations/committed/000429.sql @@ -0,0 +1,844 @@ +--! Previous: sha1:09532ee08a6abd672c0fbed235e5b2c3d6e8fdcf +--! Hash: sha1:6bb7e77902519cb8af23ff3e71d98c944520112a + +-- Enter migration here +alter type data_upload_output_type add value if not exists 'CSV'; + +alter table data_upload_tasks add column if not exists processing_options jsonb; + +comment on column data_upload_tasks.processing_options is 'Format-specific processing instructions supplied by the client at upload time (e.g. column mapping and CRS for delimited text uploads). Consumed by the spatial-uploads-handler.'; + +drop function if exists create_data_upload(text, integer, text, integer); +CREATE OR REPLACE FUNCTION public.create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer, processing_options jsonb default null) RETURNS public.data_upload_tasks + LANGUAGE plpgsql SECURITY DEFINER + AS $$ + declare + upload data_upload_tasks; + used bigint; + quota bigint; + job project_background_jobs; + begin + if session_is_admin(project_id) then + select projects_data_hosting_quota_used(projects.*), projects_data_hosting_quota(projects.*) into used, quota from projects where id = project_id; + if replace_table_of_contents_item_id is not null and (select exists( + select + data_upload_tasks.id + from + data_upload_tasks + inner join + project_background_jobs + on + data_upload_tasks.project_background_job_id = project_background_jobs.id + where + data_upload_tasks.replace_table_of_contents_item_id is not null and + project_background_jobs.state in ('queued', 'running') and + data_upload_tasks.replace_table_of_contents_item_id = create_data_upload.replace_table_of_contents_item_id + )) then + raise exception 'There is already an active upload task for this layer'; + end if; + if quota - used > 0 then + insert into project_background_jobs ( + project_id, + title, + user_id, + type, + timeout_at + ) values ( + project_id, + ( + case when replace_table_of_contents_item_id is not null then 'Replacement upload ' else '' end + ) || filename, + nullif(current_setting('session.user_id', TRUE), '')::integer, + 'data_upload', + timezone('utc'::text, now()) + interval '15 minutes' + ) + returning * into job; + insert into data_upload_tasks( + filename, + content_type, + project_background_job_id, + replace_table_of_contents_item_id, + processing_options + ) values ( + create_data_upload.filename, + create_data_upload.content_type, + job.id, + create_data_upload.replace_table_of_contents_item_id, + create_data_upload.processing_options + ) returning * into upload; + return upload; + else + raise exception 'data hosting quota exceeded'; + end if; + else + raise exception 'permission denied'; + end if; + end; + $$; + +grant execute on function create_data_upload to seasketch_user; + +drop table if exists overlay_data_table_uploads cascade; +drop table if exists overlay_data_tables cascade; + +create table if not exists overlay_data_tables ( + id integer generated always as identity primary key, + table_of_contents_item_id integer not null references table_of_contents_items(id) on delete cascade, + project_id integer not null references projects(id) on delete cascade, + name text not null, + join_column text not null, + overlay_join_column text not null, + row_count integer not null, + created_at timestamptz default now(), + updated_at timestamptz default now(), + created_by integer not null references users(id), + deleted_at timestamptz, + replaced_by_id integer references overlay_data_tables(id), + version integer not null default 1, + parquet_remote text not null, + column_stats_remote text not null +); + + +create table if not exists overlay_data_table_uploads ( + id uuid primary key default uuid_generate_v4(), + project_background_job_id uuid not null references project_background_jobs(id) on delete cascade, + table_of_contents_item_id integer not null references table_of_contents_items(id) on delete cascade, + filename text not null, + content_type text not null, + processing_options jsonb not null default '{}', + overlay_geostats jsonb not null, + overlay_join_column text, + replace_overlay_data_table_id integer references overlay_data_tables(id), + error_details jsonb, + created_at timestamptz default now(), + updated_at timestamptz default now(), + constraint overlay_data_table_uploads_unique_project_background_job unique (project_background_job_id) +); + +-- Indexes and constraints +create unique index if not exists overlay_data_tables_active_name_per_toc + on overlay_data_tables (table_of_contents_item_id, name) + where deleted_at is null; + +create index if not exists overlay_data_tables_toc_active_idx + on overlay_data_tables (table_of_contents_item_id) + where deleted_at is null; + +create index if not exists overlay_data_tables_project_idx + on overlay_data_tables (project_id); + +do $$ begin + alter table overlay_data_tables + add constraint overlay_data_tables_version_positive check (version > 0); +exception + when duplicate_object then null; +end $$; + +alter type project_background_job_type add value if not exists 'data_table_upload'; + +-- Changelog field groups +do $$ begin + if not exists ( + select 1 from pg_enum e + inner join pg_type t on t.oid = e.enumtypid + where t.typname = 'change_log_field_group' and e.enumlabel = 'data_table:created' + ) then + alter type change_log_field_group add value 'data_table:created'; + end if; +end $$; + +do $$ begin + if not exists ( + select 1 from pg_enum e + inner join pg_type t on t.oid = e.enumtypid + where t.typname = 'change_log_field_group' and e.enumlabel = 'data_table:deleted' + ) then + alter type change_log_field_group add value 'data_table:deleted'; + end if; +end $$; + +do $$ begin + if not exists ( + select 1 from pg_enum e + inner join pg_type t on t.oid = e.enumtypid + where t.typname = 'change_log_field_group' and e.enumlabel = 'data_table:renamed' + ) then + alter type change_log_field_group add value 'data_table:renamed'; + end if; +end $$; + +do $$ begin + if not exists ( + select 1 from pg_enum e + inner join pg_type t on t.oid = e.enumtypid + where t.typname = 'change_log_field_group' and e.enumlabel = 'data_table:replaced' + ) then + alter type change_log_field_group add value 'data_table:replaced'; + end if; +end $$; + +do $$ begin + if not exists ( + select 1 from pg_enum e + inner join pg_type t on t.oid = e.enumtypid + where t.typname = 'change_log_field_group' and e.enumlabel = 'data_table:rollback' + ) then + alter type change_log_field_group add value 'data_table:rollback'; + end if; +end $$; + +comment on table overlay_data_tables is '@omit delete'; +comment on table overlay_data_table_uploads is '@omit delete'; + +alter table overlay_data_tables enable row level security; +alter table overlay_data_table_uploads enable row level security; + +grant select on overlay_data_tables to anon; +grant select on overlay_data_tables to seasketch_user; +grant select on overlay_data_table_uploads to seasketch_user; + +create or replace function public.overlay_data_table_linked_toc_is_draft( + toc_item_id integer, + pid integer +) returns boolean +language sql +stable +security definer +as $$ + select exists ( + select 1 + from table_of_contents_items + where id = toc_item_id + and project_id = pid + and is_draft = true + ); +$$; + +grant execute on function public.overlay_data_table_linked_toc_is_draft(integer, integer) to seasketch_user; + +drop policy if exists overlay_data_tables_select on overlay_data_tables; +create policy overlay_data_tables_select on overlay_data_tables + for select using ( + session_is_admin(project_id) + or ( + exists ( + select 1 from table_of_contents_items toc + where toc.id = overlay_data_tables.table_of_contents_item_id + and toc.is_draft = false + and _session_on_toc_item_acl(toc.path) + ) + ) + ); + +drop policy if exists overlay_data_tables_insert on overlay_data_tables; +create policy overlay_data_tables_insert on overlay_data_tables + for insert with check ( + session_is_admin(project_id) + and overlay_data_table_linked_toc_is_draft( + table_of_contents_item_id, + project_id + ) + ); + +drop policy if exists overlay_data_tables_update on overlay_data_tables; +create policy overlay_data_tables_update on overlay_data_tables + for update using ( + session_is_admin(project_id) + and overlay_data_table_linked_toc_is_draft( + table_of_contents_item_id, + project_id + ) + ); + +drop policy if exists overlay_data_tables_delete on overlay_data_tables; +create policy overlay_data_tables_delete on overlay_data_tables + for delete using ( + session_is_admin(project_id) + and overlay_data_table_linked_toc_is_draft( + table_of_contents_item_id, + project_id + ) + ); + +drop policy if exists overlay_data_table_uploads_select on overlay_data_table_uploads; +create policy overlay_data_table_uploads_select on overlay_data_table_uploads + for select using ( + session_is_admin(( + select project_id from table_of_contents_items where id = overlay_data_table_uploads.table_of_contents_item_id + )) + ); + +drop policy if exists overlay_data_table_uploads_insert on overlay_data_table_uploads; +create policy overlay_data_table_uploads_insert on overlay_data_table_uploads + for insert with check ( + session_is_admin(( + select project_id from table_of_contents_items where id = overlay_data_table_uploads.table_of_contents_item_id + )) + ); + +create or replace function overlay_data_tables_draft_toc_has_changes() +returns trigger +language plpgsql +security definer +as $$ +declare + pid int; + toc_is_draft boolean; +begin + if tg_op = 'DELETE' then + select project_id, table_of_contents_items.is_draft into pid, toc_is_draft + from table_of_contents_items where id = old.table_of_contents_item_id; + else + select project_id, table_of_contents_items.is_draft into pid, toc_is_draft + from table_of_contents_items where id = new.table_of_contents_item_id; + end if; + if toc_is_draft then + update projects set draft_table_of_contents_has_changes = true where id = pid; + end if; + if tg_op = 'DELETE' then + return old; + end if; + return new; +end; +$$; + +drop trigger if exists overlay_data_tables_draft_toc_has_changes on overlay_data_tables; +create trigger overlay_data_tables_draft_toc_has_changes + after insert or update or delete on overlay_data_tables + for each row execute function overlay_data_tables_draft_toc_has_changes(); + +create or replace function trg_publish_overlay_data_tables_for_toc_item() +returns trigger +language plpgsql +security definer +as $$ +declare + draft_toc_id int; +begin + if new.is_draft = false and new.is_folder = false then + select id into draft_toc_id + from table_of_contents_items + where stable_id = new.stable_id + and project_id = new.project_id + and table_of_contents_items.is_draft = true + limit 1; + if draft_toc_id is not null then + insert into overlay_data_tables ( + table_of_contents_item_id, + project_id, + name, + join_column, + overlay_join_column, + row_count, + created_by, + version, + parquet_remote, + column_stats_remote + ) + select + new.id, + odt.project_id, + odt.name, + odt.join_column, + odt.overlay_join_column, + odt.row_count, + odt.created_by, + odt.version, + odt.parquet_remote, + odt.column_stats_remote + from overlay_data_tables odt + where odt.table_of_contents_item_id = draft_toc_id + and odt.deleted_at is null; + end if; + end if; + return new; +end; +$$; + +drop trigger if exists publish_overlay_data_tables_for_toc_item on table_of_contents_items; +create trigger publish_overlay_data_tables_for_toc_item + after insert on table_of_contents_items + for each row execute function trg_publish_overlay_data_tables_for_toc_item(); + +create or replace function table_of_contents_items_overlay_data_tables(item public.table_of_contents_items) +returns setof overlay_data_tables +language sql +stable +security definer +as $$ + select odt.* + from overlay_data_tables odt + where odt.table_of_contents_item_id = item.id + and odt.deleted_at is null + and ( + session_is_admin(item.project_id) + or (item.is_draft = false and _session_on_toc_item_acl(item.path)) + ); +$$; + +comment on function table_of_contents_items_overlay_data_tables(public.table_of_contents_items) is '@simpleCollections only'; + +grant execute on function table_of_contents_items_overlay_data_tables(public.table_of_contents_items) to seasketch_user; + +create or replace function public.table_of_contents_items_project_background_jobs(item public.table_of_contents_items) +returns setof public.project_background_jobs +language sql +stable +security definer +as $$ + select * + from project_background_jobs + where session_is_admin(item.project_id) + and ( + id = ( + select project_background_job_id + from esri_feature_layer_conversion_tasks + where table_of_contents_item_id = item.id + limit 1 + ) + or id in ( + select odtu.project_background_job_id + from overlay_data_table_uploads odtu + where odtu.table_of_contents_item_id = item.id + ) + ); +$$; + +create or replace function create_overlay_data_table_upload( + toc_item_id integer, + filename text, + content_type text, + processing_options jsonb default '{}'::jsonb, + replace_overlay_data_table_id integer default null +) returns overlay_data_table_uploads +language plpgsql +security definer +as $$ +declare + upload overlay_data_table_uploads; + job project_background_jobs; + pid int; + geostats jsonb; +begin + select project_id into pid + from table_of_contents_items + where id = toc_item_id and is_draft = true and is_folder = false; + if pid is null then + raise exception 'Draft layer table of contents item not found'; + end if; + if not session_is_admin(pid) then + raise exception 'permission denied'; + end if; + + select ds.geostats into geostats + from table_of_contents_items toc + inner join data_layers dl on dl.id = toc.data_layer_id + inner join data_sources ds on ds.id = dl.data_source_id + where toc.id = toc_item_id; + if geostats is null then + raise exception 'Overlay layer has no geostats'; + end if; + + if replace_overlay_data_table_id is not null then + if not exists ( + select 1 from overlay_data_tables + where id = replace_overlay_data_table_id + and table_of_contents_item_id = toc_item_id + and deleted_at is null + ) then + raise exception 'Replace target data table not found or not active'; + end if; + end if; + + if exists ( + select 1 + from overlay_data_table_uploads odtu + inner join project_background_jobs pbj on pbj.id = odtu.project_background_job_id + where odtu.table_of_contents_item_id = toc_item_id + and odtu.filename = create_overlay_data_table_upload.filename + and pbj.state in ('queued', 'running') + ) then + raise exception 'There is already an active data table upload for this file'; + end if; + + insert into project_background_jobs ( + project_id, + title, + user_id, + type, + timeout_at + ) values ( + pid, + (case when replace_overlay_data_table_id is not null then 'Replacement data table ' else 'Data table ' end) || filename, + nullif(current_setting('session.user_id', true), '')::integer, + 'data_table_upload', + timezone('utc', now()) + interval '15 minutes' + ) returning * into job; + + insert into overlay_data_table_uploads ( + project_background_job_id, + table_of_contents_item_id, + filename, + content_type, + processing_options, + overlay_geostats, + overlay_join_column, + replace_overlay_data_table_id + ) values ( + job.id, + toc_item_id, + create_overlay_data_table_upload.filename, + content_type, + coalesce(processing_options, '{}'::jsonb), + geostats, + processing_options->>'overlayJoinColumn', + replace_overlay_data_table_id + ) returning * into upload; + + return upload; +end; +$$; + +grant execute on function create_overlay_data_table_upload(integer, text, text, jsonb, integer) to seasketch_user; + +create or replace function submit_overlay_data_table_upload(job_id uuid) +returns project_background_jobs +language plpgsql +security definer +as $$ +declare + job project_background_jobs; + pid int; +begin + select project_id into pid + from project_background_jobs + where id = submit_overlay_data_table_upload.job_id; + if not session_is_admin(pid) then + raise exception 'permission denied'; + end if; + if not exists ( + select 1 from overlay_data_table_uploads where project_background_job_id = job_id + ) then + raise exception 'Data table upload not found for job'; + end if; + update project_background_jobs + set state = 'running', progress_message = 'uploaded', started_at = now() + where id = job_id + returning * into job; + perform graphile_worker.add_job( + 'processDataTableUpload', + json_build_object('jobId', job.id), + max_attempts := 1 + ); + return job; +end; +$$; + +grant execute on function submit_overlay_data_table_upload(uuid) to seasketch_user; + +create or replace function rename_overlay_data_table(table_id integer, new_name text) +returns overlay_data_tables +language plpgsql +security definer +as $$ +declare + row overlay_data_tables; + old_name text; + editor_id int; +begin + select * into row from overlay_data_tables where id = table_id and deleted_at is null; + if row is null then + raise exception 'Active data table not found'; + end if; + if not session_is_admin(row.project_id) then + raise exception 'permission denied'; + end if; + if not exists ( + select 1 from table_of_contents_items + where id = row.table_of_contents_item_id and is_draft = true + ) then + raise exception 'Can only rename data tables on draft layers'; + end if; + old_name := row.name; + update overlay_data_tables + set name = new_name, updated_at = now() + where id = table_id + returning * into row; + + editor_id := nullif(current_setting('session.user_id', true), '')::int; + if editor_id is not null then + perform record_changelog( + row.project_id, + editor_id, + 'overlay_data_table', + row.id, + 'data_table:renamed'::change_log_field_group, + jsonb_build_object('name', old_name), + jsonb_build_object('name', new_name), + null, null, + jsonb_build_object('table_of_contents_item_id', row.table_of_contents_item_id, 'version', row.version) + ); + end if; + return row; +end; +$$; + +grant execute on function rename_overlay_data_table(integer, text) to seasketch_user; + +create or replace function soft_delete_overlay_data_table(table_id integer) +returns overlay_data_tables +language plpgsql +security definer +as $$ +declare + row overlay_data_tables; + editor_id int; +begin + select * into row from overlay_data_tables where id = table_id and deleted_at is null; + if row is null then + raise exception 'Active data table not found'; + end if; + if not session_is_admin(row.project_id) then + raise exception 'permission denied'; + end if; + if not exists ( + select 1 from table_of_contents_items + where id = row.table_of_contents_item_id and is_draft = true + ) then + raise exception 'Can only delete data tables on draft layers'; + end if; + + update overlay_data_tables + set deleted_at = now(), updated_at = now() + where id = table_id + returning * into row; + + editor_id := nullif(current_setting('session.user_id', true), '')::int; + if editor_id is not null then + perform record_changelog( + row.project_id, + editor_id, + 'overlay_data_table', + row.id, + 'data_table:deleted'::change_log_field_group, + jsonb_build_object('name', row.name, 'version', row.version), + '{}'::jsonb, + null, null, + jsonb_build_object('table_of_contents_item_id', row.table_of_contents_item_id) + ); + end if; + return row; +end; +$$; + +grant execute on function soft_delete_overlay_data_table(integer) to seasketch_user; + +create or replace function rollback_overlay_data_table_version(table_id integer) +returns overlay_data_tables +language plpgsql +security definer +as $$ +declare + target overlay_data_tables; + successor overlay_data_tables; + editor_id int; +begin + select * into target from overlay_data_tables where id = table_id; + if target is null then + raise exception 'Data table not found'; + end if; + if target.deleted_at is null then + select * into target + from overlay_data_tables + where replaced_by_id = table_id + and deleted_at is not null + order by version desc + limit 1; + if target is null then + raise exception 'No previous version found to rollback to'; + end if; + end if; + if not session_is_admin(target.project_id) then + raise exception 'permission denied'; + end if; + if not exists ( + select 1 from table_of_contents_items + where id = target.table_of_contents_item_id and is_draft = true + ) then + raise exception 'Can only rollback data tables on draft layers'; + end if; + + select * into successor + from overlay_data_tables + where id = target.replaced_by_id + and deleted_at is null + limit 1; + if successor is null then + raise exception 'No successor version found to rollback from'; + end if; + + delete from overlay_data_tables where id = successor.id; + + update overlay_data_tables + set deleted_at = null, replaced_by_id = null, updated_at = now() + where id = target.id + returning * into target; + + editor_id := nullif(current_setting('session.user_id', true), '')::int; + if editor_id is not null then + perform record_changelog( + target.project_id, + editor_id, + 'overlay_data_table', + target.id, + 'data_table:rollback'::change_log_field_group, + jsonb_build_object('removed_version', successor.version), + jsonb_build_object('name', target.name, 'version', target.version), + null, null, + jsonb_build_object( + 'table_of_contents_item_id', target.table_of_contents_item_id, + 'removed_id', successor.id + ) + ); + end if; + return target; +end; +$$; + +grant execute on function rollback_overlay_data_table_version(integer) to seasketch_user; + +create or replace function complete_overlay_data_table_upload( + job_id uuid, + p_name text, + p_join_column text, + p_overlay_join_column text, + p_row_count integer, + p_parquet_remote text, + p_column_stats_remote text +) returns overlay_data_tables +language plpgsql +security definer +as $$ +declare + upload overlay_data_table_uploads; + job project_background_jobs; + new_row overlay_data_tables; + old_row overlay_data_tables; + editor_id int; + new_version int := 1; +begin + select * into upload + from overlay_data_table_uploads + where project_background_job_id = job_id; + if upload is null then + raise exception 'Upload not found for job'; + end if; + + select * into job from project_background_jobs where id = job_id; + + if upload.replace_overlay_data_table_id is not null then + select * into old_row + from overlay_data_tables + where id = upload.replace_overlay_data_table_id + and deleted_at is null; + if old_row is null then + raise exception 'Replace target no longer active'; + end if; + new_version := old_row.version + 1; + update overlay_data_tables + set deleted_at = now(), updated_at = now() + where id = old_row.id; + end if; + + insert into overlay_data_tables ( + table_of_contents_item_id, + project_id, + name, + join_column, + overlay_join_column, + row_count, + created_by, + version, + parquet_remote, + column_stats_remote + ) values ( + upload.table_of_contents_item_id, + job.project_id, + p_name, + p_join_column, + p_overlay_join_column, + p_row_count, + coalesce(job.user_id, nullif(current_setting('session.user_id', true), '')::integer), + new_version, + p_parquet_remote, + p_column_stats_remote + ) returning * into new_row; + + if upload.replace_overlay_data_table_id is not null then + update overlay_data_tables + set replaced_by_id = new_row.id, updated_at = now() + where id = old_row.id; + + editor_id := nullif(current_setting('session.user_id', true), '')::int; + if editor_id is not null then + perform record_changelog( + new_row.project_id, + editor_id, + 'overlay_data_table', + new_row.id, + 'data_table:replaced'::change_log_field_group, + jsonb_build_object('name', old_row.name, 'version', old_row.version, 'id', old_row.id), + jsonb_build_object('name', new_row.name, 'version', new_row.version, 'id', new_row.id), + null, null, + jsonb_build_object('table_of_contents_item_id', new_row.table_of_contents_item_id) + ); + end if; + else + editor_id := coalesce(job.user_id, nullif(current_setting('session.user_id', true), '')::int); + if editor_id is not null then + perform record_changelog( + new_row.project_id, + editor_id, + 'overlay_data_table', + new_row.id, + 'data_table:created'::change_log_field_group, + '{}'::jsonb, + jsonb_build_object('name', new_row.name, 'version', new_row.version), + null, null, + jsonb_build_object('table_of_contents_item_id', new_row.table_of_contents_item_id) + ); + end if; + end if; + + update project_background_jobs + set state = 'complete', progress = 1, progress_message = 'complete', error_message = null + where id = job_id; + + return new_row; +end; +$$; + +revoke all on function complete_overlay_data_table_upload(uuid, text, text, text, integer, text, text) from public; + +create or replace function fail_overlay_data_table_upload( + job_id uuid, + error_message text, + error_details jsonb default null +) returns void +language plpgsql +security definer +as $$ +begin + update overlay_data_table_uploads + set error_details = coalesce(fail_overlay_data_table_upload.error_details, error_details), + updated_at = now() + where project_background_job_id = job_id; + + update project_background_jobs + set state = 'failed', progress_message = 'failed', error_message = fail_overlay_data_table_upload.error_message + where id = job_id; +end; +$$; + +revoke all on function fail_overlay_data_table_upload(uuid, text, jsonb) from public; diff --git a/packages/api/migrations/current.sql b/packages/api/migrations/current.sql index 08966f73e..29d9c1b57 100644 --- a/packages/api/migrations/current.sql +++ b/packages/api/migrations/current.sql @@ -1,76 +1,234 @@ -- Enter migration here -alter type data_upload_output_type add value if not exists 'CSV'; - -alter table data_upload_tasks add column if not exists processing_options jsonb; - -comment on column data_upload_tasks.processing_options is 'Format-specific processing instructions supplied by the client at upload time (e.g. column mapping and CRS for delimited text uploads). Consumed by the spatial-uploads-handler.'; - -drop function if exists create_data_upload(text, integer, text, integer); -CREATE OR REPLACE FUNCTION public.create_data_upload(filename text, project_id integer, content_type text, replace_table_of_contents_item_id integer, processing_options jsonb default null) RETURNS public.data_upload_tasks - LANGUAGE plpgsql SECURITY DEFINER - AS $$ - declare - upload data_upload_tasks; - used bigint; - quota bigint; - job project_background_jobs; - begin - if session_is_admin(project_id) then - select projects_data_hosting_quota_used(projects.*), projects_data_hosting_quota(projects.*) into used, quota from projects where id = project_id; - if replace_table_of_contents_item_id is not null and (select exists( - select - data_upload_tasks.id - from - data_upload_tasks - inner join - project_background_jobs - on - data_upload_tasks.project_background_job_id = project_background_jobs.id - where - data_upload_tasks.replace_table_of_contents_item_id is not null and - project_background_jobs.state in ('queued', 'running') and - data_upload_tasks.replace_table_of_contents_item_id = create_data_upload.replace_table_of_contents_item_id - )) then - raise exception 'There is already an active upload task for this layer'; - end if; - if quota - used > 0 then - insert into project_background_jobs ( - project_id, - title, - user_id, - type, - timeout_at - ) values ( - project_id, - ( - case when replace_table_of_contents_item_id is not null then 'Replacement upload ' else '' end - ) || filename, - nullif(current_setting('session.user_id', TRUE), '')::integer, - 'data_upload', - timezone('utc'::text, now()) + interval '15 minutes' - ) - returning * into job; - insert into data_upload_tasks( - filename, - content_type, - project_background_job_id, - replace_table_of_contents_item_id, - processing_options - ) values ( - create_data_upload.filename, - create_data_upload.content_type, - job.id, - create_data_upload.replace_table_of_contents_item_id, - create_data_upload.processing_options - ) returning * into upload; - return upload; - else - raise exception 'data hosting quota exceeded'; - end if; - else - raise exception 'permission denied'; - end if; - end; + +alter table table_of_contents_items + add column if not exists enable_data_tables boolean not null default false, + add column if not exists data_table_join_column text; + +alter table table_of_contents_items + drop constraint if exists table_of_contents_items_data_tables_join_column_required; + +alter table table_of_contents_items + add constraint table_of_contents_items_data_tables_join_column_required + check ( + not enable_data_tables + or ( + data_table_join_column is not null + and length(trim(data_table_join_column)) > 0 + ) + ); + +grant select (enable_data_tables, data_table_join_column) on table_of_contents_items to anon; +grant update (enable_data_tables, data_table_join_column) on table_of_contents_items to seasketch_user; + +comment on column table_of_contents_items.enable_data_tables is + 'When true, admins can attach CSV data tables linked to this layer by a canonical join column.'; +comment on column table_of_contents_items.data_table_join_column is + 'Overlay attribute name used as the canonical feature ID for linked data tables. Required when enable_data_tables is true.'; + +create or replace function trg_copy_data_table_settings_from_draft_toc() +returns trigger +language plpgsql +as $$ +begin + if new.is_draft = false and not new.is_folder then + select + draft.enable_data_tables, + draft.data_table_join_column + into + new.enable_data_tables, + new.data_table_join_column + from table_of_contents_items draft + where + draft.project_id = new.project_id + and draft.stable_id = new.stable_id + and draft.is_draft = true; + end if; + return new; +end; +$$; + +drop trigger if exists copy_data_table_settings_from_draft_toc on table_of_contents_items; +create trigger copy_data_table_settings_from_draft_toc + before insert on table_of_contents_items + for each row execute function trg_copy_data_table_settings_from_draft_toc(); + +drop index if exists overlay_data_tables_active_name_per_toc; + +create or replace function create_overlay_data_table_upload( + toc_item_id integer, + filename text, + content_type text, + processing_options jsonb default '{}'::jsonb, + replace_overlay_data_table_id integer default null +) returns overlay_data_table_uploads +language plpgsql +security definer +as $$ +declare + upload overlay_data_table_uploads; + job project_background_jobs; + pid int; + geostats jsonb; + join_col text; + enabled boolean; +begin + select project_id, enable_data_tables, data_table_join_column + into pid, enabled, join_col + from table_of_contents_items + where id = toc_item_id and is_draft = true and is_folder = false; + if pid is null then + raise exception 'Draft layer table of contents item not found'; + end if; + if not session_is_admin(pid) then + raise exception 'permission denied'; + end if; + if not coalesce(enabled, false) then + raise exception 'Data tables are not enabled for this layer'; + end if; + if join_col is null or length(trim(join_col)) = 0 then + raise exception 'Data table join column is not configured for this layer'; + end if; + + select ds.geostats into geostats + from table_of_contents_items toc + inner join data_layers dl on dl.id = toc.data_layer_id + inner join data_sources ds on ds.id = dl.data_source_id + where toc.id = toc_item_id; + if geostats is null then + raise exception 'Overlay layer has no geostats'; + end if; + + if replace_overlay_data_table_id is not null then + if not exists ( + select 1 from overlay_data_tables + where id = replace_overlay_data_table_id + and table_of_contents_item_id = toc_item_id + and deleted_at is null + ) then + raise exception 'Replace target data table not found or not active'; + end if; + end if; + + insert into project_background_jobs ( + project_id, + title, + user_id, + type, + timeout_at + ) values ( + pid, + (case when replace_overlay_data_table_id is not null then 'Replacement data table ' else 'Data table ' end) || filename, + nullif(current_setting('session.user_id', true), '')::integer, + 'data_table_upload', + timezone('utc', now()) + interval '15 minutes' + ) returning * into job; + + insert into overlay_data_table_uploads ( + project_background_job_id, + table_of_contents_item_id, + filename, + content_type, + processing_options, + overlay_geostats, + overlay_join_column, + replace_overlay_data_table_id + ) values ( + job.id, + toc_item_id, + create_overlay_data_table_upload.filename, + content_type, + coalesce(processing_options, '{}'::jsonb), + geostats, + join_col, + replace_overlay_data_table_id + ) returning * into upload; + + return upload; +end; +$$; + +grant execute on function create_overlay_data_table_upload(integer, text, text, jsonb, integer) to seasketch_user; + +create or replace function fail_overlay_data_table_upload( + job_id uuid, + error_message text, + error_details jsonb default null +) returns void +language plpgsql +security definer +as $$ +begin + update overlay_data_table_uploads odtu + set error_details = coalesce(fail_overlay_data_table_upload.error_details, odtu.error_details), + updated_at = now() + where odtu.project_background_job_id = job_id; + + update project_background_jobs + set + state = 'failed', + progress_message = case + when fail_overlay_data_table_upload.error_message = 'Timed out' then 'timeout' + else 'failed' + end, + error_message = fail_overlay_data_table_upload.error_message + where id = job_id; +end; +$$; + +revoke all on function fail_overlay_data_table_upload(uuid, text, jsonb) from public; + +create or replace function submit_overlay_data_table_upload(job_id uuid) +returns project_background_jobs +language plpgsql +security definer +as $$ +declare + job project_background_jobs; + pid int; +begin + select project_id into pid + from project_background_jobs + where id = submit_overlay_data_table_upload.job_id; + if not session_is_admin(pid) then + raise exception 'permission denied'; + end if; + if not exists ( + select 1 from overlay_data_table_uploads where project_background_job_id = job_id + ) then + raise exception 'Data table upload not found for job'; + end if; + update project_background_jobs + set + state = 'running', + progress_message = 'uploaded', + started_at = now(), + timeout_at = timezone('utc', now()) + interval '60 seconds' + where id = job_id + returning * into job; + perform graphile_worker.add_job( + 'processDataTableUpload', + json_build_object('jobId', job.id), + max_attempts := 1 + ); + return job; +end; +$$; + +grant execute on function submit_overlay_data_table_upload(uuid) to seasketch_user; + +create or replace function table_of_contents_items_data_table_change_logs(item table_of_contents_items) + returns setof change_logs + language sql + security definer + stable + as $$ + select * from change_logs + where entity_type = 'overlay_data_table' + and net_zero_changes = false + and (meta->>'table_of_contents_item_id')::int = item.id + order by last_at desc; $$; -grant execute on function create_data_upload to seasketch_user; +grant execute on function table_of_contents_items_data_table_change_logs(item table_of_contents_items) to seasketch_user; + +comment on function table_of_contents_items_data_table_change_logs(item table_of_contents_items) is '@simpleCollections only'; diff --git a/packages/api/process-env.d.ts b/packages/api/process-env.d.ts index 382ff7e87..124426298 100644 --- a/packages/api/process-env.d.ts +++ b/packages/api/process-env.d.ts @@ -32,6 +32,8 @@ declare namespace NodeJS { NORMALIZED_SPATIAL_UPLOADS_BUCKET: string; SPATIAL_UPLOADS_LAMBDA_DEV_HANDLER?: string; SPATIAL_UPLOADS_LAMBDA_ARN?: string; + DATA_TABLES_LAMBDA_DEV_HANDLER?: string; + DATA_TABLES_HANDLER_LAMBDA_ARN?: string; /** Geostats PII classifier — optional warm ping on createDataUpload */ GEOSTATS_PII_CLASSIFIER_ARN?: string; R2_ACCESS_KEY_ID: string; diff --git a/packages/api/schema.sql b/packages/api/schema.sql index e6b5a5ac1..976ed2caa 100644 --- a/packages/api/schema.sql +++ b/packages/api/schema.sql @@ -251,7 +251,12 @@ CREATE TYPE public.change_log_field_group AS ENUM ( 'resolvable_layer_comments:created', 'resolvable_layer_comments:responded', 'resolvable_layer_comments:resolved', - 'resolvable_layer_comments:reopened' + 'resolvable_layer_comments:reopened', + 'data_table:created', + 'data_table:deleted', + 'data_table:renamed', + 'data_table:replaced', + 'data_table:rollback' ); @@ -790,7 +795,8 @@ CREATE TYPE public.project_background_job_type AS ENUM ( 'data_upload', 'arcgis_import', 'consolidate_data_sources', - 'replacement_upload' + 'replacement_upload', + 'data_table_upload' ); @@ -5902,6 +5908,144 @@ CREATE FUNCTION public.collection_as_geojson(id integer) RETURNS jsonb COMMENT ON FUNCTION public.collection_as_geojson(id integer) IS '@omit'; +-- +-- Name: overlay_data_tables; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public.overlay_data_tables ( + id integer NOT NULL, + table_of_contents_item_id integer NOT NULL, + project_id integer NOT NULL, + name text NOT NULL, + join_column text NOT NULL, + overlay_join_column text NOT NULL, + row_count integer NOT NULL, + created_at timestamp with time zone DEFAULT now(), + updated_at timestamp with time zone DEFAULT now(), + created_by integer NOT NULL, + deleted_at timestamp with time zone, + replaced_by_id integer, + version integer DEFAULT 1 NOT NULL, + parquet_remote text NOT NULL, + column_stats_remote text NOT NULL, + CONSTRAINT overlay_data_tables_version_positive CHECK ((version > 0)) +); + + +-- +-- Name: TABLE overlay_data_tables; Type: COMMENT; Schema: public; Owner: - +-- + +COMMENT ON TABLE public.overlay_data_tables IS '@omit delete'; + + +-- +-- Name: complete_overlay_data_table_upload(uuid, text, text, text, integer, text, text); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.complete_overlay_data_table_upload(job_id uuid, p_name text, p_join_column text, p_overlay_join_column text, p_row_count integer, p_parquet_remote text, p_column_stats_remote text) RETURNS public.overlay_data_tables + LANGUAGE plpgsql SECURITY DEFINER + AS $$ +declare + upload overlay_data_table_uploads; + job project_background_jobs; + new_row overlay_data_tables; + old_row overlay_data_tables; + editor_id int; + new_version int := 1; +begin + select * into upload + from overlay_data_table_uploads + where project_background_job_id = job_id; + if upload is null then + raise exception 'Upload not found for job'; + end if; + + select * into job from project_background_jobs where id = job_id; + + if upload.replace_overlay_data_table_id is not null then + select * into old_row + from overlay_data_tables + where id = upload.replace_overlay_data_table_id + and deleted_at is null; + if old_row is null then + raise exception 'Replace target no longer active'; + end if; + new_version := old_row.version + 1; + update overlay_data_tables + set deleted_at = now(), updated_at = now() + where id = old_row.id; + end if; + + insert into overlay_data_tables ( + table_of_contents_item_id, + project_id, + name, + join_column, + overlay_join_column, + row_count, + created_by, + version, + parquet_remote, + column_stats_remote + ) values ( + upload.table_of_contents_item_id, + job.project_id, + p_name, + p_join_column, + p_overlay_join_column, + p_row_count, + coalesce(job.user_id, nullif(current_setting('session.user_id', true), '')::integer), + new_version, + p_parquet_remote, + p_column_stats_remote + ) returning * into new_row; + + if upload.replace_overlay_data_table_id is not null then + update overlay_data_tables + set replaced_by_id = new_row.id, updated_at = now() + where id = old_row.id; + + editor_id := nullif(current_setting('session.user_id', true), '')::int; + if editor_id is not null then + perform record_changelog( + new_row.project_id, + editor_id, + 'overlay_data_table', + new_row.id, + 'data_table:replaced'::change_log_field_group, + jsonb_build_object('name', old_row.name, 'version', old_row.version, 'id', old_row.id), + jsonb_build_object('name', new_row.name, 'version', new_row.version, 'id', new_row.id), + null, null, + jsonb_build_object('table_of_contents_item_id', new_row.table_of_contents_item_id) + ); + end if; + else + editor_id := coalesce(job.user_id, nullif(current_setting('session.user_id', true), '')::int); + if editor_id is not null then + perform record_changelog( + new_row.project_id, + editor_id, + 'overlay_data_table', + new_row.id, + 'data_table:created'::change_log_field_group, + '{}'::jsonb, + jsonb_build_object('name', new_row.name, 'version', new_row.version), + null, null, + jsonb_build_object('table_of_contents_item_id', new_row.table_of_contents_item_id) + ); + end if; + end if; + + update project_background_jobs + set state = 'complete', progress = 1, progress_message = 'complete', error_message = null + where id = job_id; + + return new_row; +end; +$$; + + -- -- Name: compute_project_geography_hash(integer); Type: FUNCTION; Schema: public; Owner: - -- @@ -8236,6 +8380,126 @@ $$; COMMENT ON FUNCTION public.create_metadata_xml_output(data_source_id integer, url text, remote text, size bigint, filename text, metadata_type text) IS '@omit'; +-- +-- Name: overlay_data_table_uploads; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public.overlay_data_table_uploads ( + id uuid DEFAULT public.uuid_generate_v4() NOT NULL, + project_background_job_id uuid NOT NULL, + table_of_contents_item_id integer NOT NULL, + filename text NOT NULL, + content_type text NOT NULL, + processing_options jsonb DEFAULT '{}'::jsonb NOT NULL, + overlay_geostats jsonb NOT NULL, + overlay_join_column text, + replace_overlay_data_table_id integer, + error_details jsonb, + created_at timestamp with time zone DEFAULT now(), + updated_at timestamp with time zone DEFAULT now() +); + + +-- +-- Name: TABLE overlay_data_table_uploads; Type: COMMENT; Schema: public; Owner: - +-- + +COMMENT ON TABLE public.overlay_data_table_uploads IS '@omit delete'; + + +-- +-- Name: create_overlay_data_table_upload(integer, text, text, jsonb, integer); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.create_overlay_data_table_upload(toc_item_id integer, filename text, content_type text, processing_options jsonb DEFAULT '{}'::jsonb, replace_overlay_data_table_id integer DEFAULT NULL::integer) RETURNS public.overlay_data_table_uploads + LANGUAGE plpgsql SECURITY DEFINER + AS $$ +declare + upload overlay_data_table_uploads; + job project_background_jobs; + pid int; + geostats jsonb; +begin + select project_id into pid + from table_of_contents_items + where id = toc_item_id and is_draft = true and is_folder = false; + if pid is null then + raise exception 'Draft layer table of contents item not found'; + end if; + if not session_is_admin(pid) then + raise exception 'permission denied'; + end if; + + select ds.geostats into geostats + from table_of_contents_items toc + inner join data_layers dl on dl.id = toc.data_layer_id + inner join data_sources ds on ds.id = dl.data_source_id + where toc.id = toc_item_id; + if geostats is null then + raise exception 'Overlay layer has no geostats'; + end if; + + if replace_overlay_data_table_id is not null then + if not exists ( + select 1 from overlay_data_tables + where id = replace_overlay_data_table_id + and table_of_contents_item_id = toc_item_id + and deleted_at is null + ) then + raise exception 'Replace target data table not found or not active'; + end if; + end if; + + if exists ( + select 1 + from overlay_data_table_uploads odtu + inner join project_background_jobs pbj on pbj.id = odtu.project_background_job_id + where odtu.table_of_contents_item_id = toc_item_id + and odtu.filename = create_overlay_data_table_upload.filename + and pbj.state in ('queued', 'running') + ) then + raise exception 'There is already an active data table upload for this file'; + end if; + + insert into project_background_jobs ( + project_id, + title, + user_id, + type, + timeout_at + ) values ( + pid, + (case when replace_overlay_data_table_id is not null then 'Replacement data table ' else 'Data table ' end) || filename, + nullif(current_setting('session.user_id', true), '')::integer, + 'data_table_upload', + timezone('utc', now()) + interval '15 minutes' + ) returning * into job; + + insert into overlay_data_table_uploads ( + project_background_job_id, + table_of_contents_item_id, + filename, + content_type, + processing_options, + overlay_geostats, + overlay_join_column, + replace_overlay_data_table_id + ) values ( + job.id, + toc_item_id, + create_overlay_data_table_upload.filename, + content_type, + coalesce(processing_options, '{}'::jsonb), + geostats, + processing_options->>'overlayJoinColumn', + replace_overlay_data_table_id + ) returning * into upload; + + return upload; +end; +$$; + + -- -- Name: extract_post_bookmark_attachments(jsonb); Type: FUNCTION; Schema: public; Owner: - -- @@ -11354,6 +11618,26 @@ CREATE FUNCTION public.fail_data_upload(id uuid, msg text) RETURNS public.data_u $$; +-- +-- Name: fail_overlay_data_table_upload(uuid, text, jsonb); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.fail_overlay_data_table_upload(job_id uuid, error_message text, error_details jsonb DEFAULT NULL::jsonb) RETURNS void + LANGUAGE plpgsql SECURITY DEFINER + AS $$ +begin + update overlay_data_table_uploads + set error_details = coalesce(fail_overlay_data_table_upload.error_details, error_details), + updated_at = now() + where project_background_job_id = job_id; + + update project_background_jobs + set state = 'failed', progress_message = 'failed', error_message = fail_overlay_data_table_upload.error_message + where id = job_id; +end; +$$; + + -- -- Name: filter_state_to_search_string(jsonb, integer); Type: FUNCTION; Schema: public; Owner: - -- @@ -14761,6 +15045,52 @@ $$; COMMENT ON FUNCTION public.overlapping_fragments_for_collection(input_collection_id integer, input_envelopes public.geometry[], edited_sketch_id integer) IS '@omit'; +-- +-- Name: overlay_data_table_linked_toc_is_draft(integer, integer); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.overlay_data_table_linked_toc_is_draft(toc_item_id integer, pid integer) RETURNS boolean + LANGUAGE sql STABLE SECURITY DEFINER + AS $$ + select exists ( + select 1 + from table_of_contents_items + where id = toc_item_id + and project_id = pid + and is_draft = true + ); +$$; + + +-- +-- Name: overlay_data_tables_draft_toc_has_changes(); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.overlay_data_tables_draft_toc_has_changes() RETURNS trigger + LANGUAGE plpgsql SECURITY DEFINER + AS $$ +declare + pid int; + toc_is_draft boolean; +begin + if tg_op = 'DELETE' then + select project_id, table_of_contents_items.is_draft into pid, toc_is_draft + from table_of_contents_items where id = old.table_of_contents_item_id; + else + select project_id, table_of_contents_items.is_draft into pid, toc_is_draft + from table_of_contents_items where id = new.table_of_contents_item_id; + end if; + if toc_is_draft then + update projects set draft_table_of_contents_has_changes = true where id = pid; + end if; + if tg_op = 'DELETE' then + return old; + end if; + return new; +end; +$$; + + -- -- Name: posts_author_profile(public.posts); Type: FUNCTION; Schema: public; Owner: - -- @@ -18465,6 +18795,56 @@ Remove a SketchClass from the list of valid children for a Collection. '; +-- +-- Name: rename_overlay_data_table(integer, text); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.rename_overlay_data_table(table_id integer, new_name text) RETURNS public.overlay_data_tables + LANGUAGE plpgsql SECURITY DEFINER + AS $$ +declare + row overlay_data_tables; + old_name text; + editor_id int; +begin + select * into row from overlay_data_tables where id = table_id and deleted_at is null; + if row is null then + raise exception 'Active data table not found'; + end if; + if not session_is_admin(row.project_id) then + raise exception 'permission denied'; + end if; + if not exists ( + select 1 from table_of_contents_items + where id = row.table_of_contents_item_id and is_draft = true + ) then + raise exception 'Can only rename data tables on draft layers'; + end if; + old_name := row.name; + update overlay_data_tables + set name = new_name, updated_at = now() + where id = table_id + returning * into row; + + editor_id := nullif(current_setting('session.user_id', true), '')::int; + if editor_id is not null then + perform record_changelog( + row.project_id, + editor_id, + 'overlay_data_table', + row.id, + 'data_table:renamed'::change_log_field_group, + jsonb_build_object('name', old_name), + jsonb_build_object('name', new_name), + null, null, + jsonb_build_object('table_of_contents_item_id', row.table_of_contents_item_id, 'version', row.version) + ); + end if; + return row; +end; +$$; + + -- -- Name: rename_report_tab(integer, text, jsonb); Type: FUNCTION; Schema: public; Owner: - -- @@ -19614,6 +19994,81 @@ CREATE FUNCTION public.revoke_api_key(id uuid) RETURNS void $$; +-- +-- Name: rollback_overlay_data_table_version(integer); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.rollback_overlay_data_table_version(table_id integer) RETURNS public.overlay_data_tables + LANGUAGE plpgsql SECURITY DEFINER + AS $$ +declare + target overlay_data_tables; + successor overlay_data_tables; + editor_id int; +begin + select * into target from overlay_data_tables where id = table_id; + if target is null then + raise exception 'Data table not found'; + end if; + if target.deleted_at is null then + select * into target + from overlay_data_tables + where replaced_by_id = table_id + and deleted_at is not null + order by version desc + limit 1; + if target is null then + raise exception 'No previous version found to rollback to'; + end if; + end if; + if not session_is_admin(target.project_id) then + raise exception 'permission denied'; + end if; + if not exists ( + select 1 from table_of_contents_items + where id = target.table_of_contents_item_id and is_draft = true + ) then + raise exception 'Can only rollback data tables on draft layers'; + end if; + + select * into successor + from overlay_data_tables + where id = target.replaced_by_id + and deleted_at is null + limit 1; + if successor is null then + raise exception 'No successor version found to rollback from'; + end if; + + delete from overlay_data_tables where id = successor.id; + + update overlay_data_tables + set deleted_at = null, replaced_by_id = null, updated_at = now() + where id = target.id + returning * into target; + + editor_id := nullif(current_setting('session.user_id', true), '')::int; + if editor_id is not null then + perform record_changelog( + target.project_id, + editor_id, + 'overlay_data_table', + target.id, + 'data_table:rollback'::change_log_field_group, + jsonb_build_object('removed_version', successor.version), + jsonb_build_object('name', target.name, 'version', target.version), + null, null, + jsonb_build_object( + 'table_of_contents_item_id', target.table_of_contents_item_id, + 'removed_id', successor.id + ) + ); + end if; + return target; +end; +$$; + + -- -- Name: rollback_to_archived_source(integer, boolean); Type: FUNCTION; Schema: public; Owner: - -- @@ -21764,6 +22219,55 @@ CREATE FUNCTION public.slugify(value text, allow_unicode boolean) RETURNS text $$; +-- +-- Name: soft_delete_overlay_data_table(integer); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.soft_delete_overlay_data_table(table_id integer) RETURNS public.overlay_data_tables + LANGUAGE plpgsql SECURITY DEFINER + AS $$ +declare + row overlay_data_tables; + editor_id int; +begin + select * into row from overlay_data_tables where id = table_id and deleted_at is null; + if row is null then + raise exception 'Active data table not found'; + end if; + if not session_is_admin(row.project_id) then + raise exception 'permission denied'; + end if; + if not exists ( + select 1 from table_of_contents_items + where id = row.table_of_contents_item_id and is_draft = true + ) then + raise exception 'Can only delete data tables on draft layers'; + end if; + + update overlay_data_tables + set deleted_at = now(), updated_at = now() + where id = table_id + returning * into row; + + editor_id := nullif(current_setting('session.user_id', true), '')::int; + if editor_id is not null then + perform record_changelog( + row.project_id, + editor_id, + 'overlay_data_table', + row.id, + 'data_table:deleted'::change_log_field_group, + jsonb_build_object('name', row.name, 'version', row.version), + '{}'::jsonb, + null, null, + jsonb_build_object('table_of_contents_item_id', row.table_of_contents_item_id) + ); + end if; + return row; +end; +$$; + + -- -- Name: soft_delete_sprite(integer); Type: FUNCTION; Schema: public; Owner: - -- @@ -21915,6 +22419,42 @@ CREATE FUNCTION public.submit_data_upload(id uuid, enable_ai_data_analyst boolea $$; +-- +-- Name: submit_overlay_data_table_upload(uuid); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.submit_overlay_data_table_upload(job_id uuid) RETURNS public.project_background_jobs + LANGUAGE plpgsql SECURITY DEFINER + AS $$ +declare + job project_background_jobs; + pid int; +begin + select project_id into pid + from project_background_jobs + where id = submit_overlay_data_table_upload.job_id; + if not session_is_admin(pid) then + raise exception 'permission denied'; + end if; + if not exists ( + select 1 from overlay_data_table_uploads where project_background_job_id = job_id + ) then + raise exception 'Data table upload not found for job'; + end if; + update project_background_jobs + set state = 'running', progress_message = 'uploaded', started_at = now() + where id = job_id + returning * into job; + perform graphile_worker.add_job( + 'processDataTableUpload', + json_build_object('jobId', job.id), + max_attempts := 1 + ); + return job; +end; +$$; + + -- -- Name: survey_group_ids(integer); Type: FUNCTION; Schema: public; Owner: - -- @@ -22644,6 +23184,31 @@ CREATE FUNCTION public.table_of_contents_items_metadata_xml(item public.table_of $$; +-- +-- Name: table_of_contents_items_overlay_data_tables(public.table_of_contents_items); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.table_of_contents_items_overlay_data_tables(item public.table_of_contents_items) RETURNS SETOF public.overlay_data_tables + LANGUAGE sql STABLE SECURITY DEFINER + AS $$ + select odt.* + from overlay_data_tables odt + where odt.table_of_contents_item_id = item.id + and odt.deleted_at is null + and ( + session_is_admin(item.project_id) + or (item.is_draft = false and _session_on_toc_item_acl(item.path)) + ); +$$; + + +-- +-- Name: FUNCTION table_of_contents_items_overlay_data_tables(item public.table_of_contents_items); Type: COMMENT; Schema: public; Owner: - +-- + +COMMENT ON FUNCTION public.table_of_contents_items_overlay_data_tables(item public.table_of_contents_items) IS '@simpleCollections only'; + + -- -- Name: table_of_contents_items_primary_download_url(public.table_of_contents_items); Type: FUNCTION; Schema: public; Owner: - -- @@ -22721,20 +23286,23 @@ CREATE FUNCTION public.table_of_contents_items_project(t public.table_of_content CREATE FUNCTION public.table_of_contents_items_project_background_jobs(item public.table_of_contents_items) RETURNS SETOF public.project_background_jobs LANGUAGE sql STABLE SECURITY DEFINER AS $$ - select - * - from - project_background_jobs - where + select * + from project_background_jobs + where session_is_admin(item.project_id) + and ( id = ( - select - project_background_job_id - from - esri_feature_layer_conversion_tasks - where - table_of_contents_item_id = item.id - ) and session_is_admin(item.project_id); - $$; + select project_background_job_id + from esri_feature_layer_conversion_tasks + where table_of_contents_item_id = item.id + limit 1 + ) + or id in ( + select odtu.project_background_job_id + from overlay_data_table_uploads odtu + where odtu.table_of_contents_item_id = item.id + ) + ); +$$; -- @@ -24345,6 +24913,57 @@ $$; COMMENT ON FUNCTION public.trg_changelog_table_of_contents_items_title() IS 'Records admin changelog entries when a draft table_of_contents_items title is updated (session.user_id).'; +-- +-- Name: trg_publish_overlay_data_tables_for_toc_item(); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION public.trg_publish_overlay_data_tables_for_toc_item() RETURNS trigger + LANGUAGE plpgsql SECURITY DEFINER + AS $$ +declare + draft_toc_id int; +begin + if new.is_draft = false and new.is_folder = false then + select id into draft_toc_id + from table_of_contents_items + where stable_id = new.stable_id + and project_id = new.project_id + and table_of_contents_items.is_draft = true + limit 1; + if draft_toc_id is not null then + insert into overlay_data_tables ( + table_of_contents_item_id, + project_id, + name, + join_column, + overlay_join_column, + row_count, + created_by, + version, + parquet_remote, + column_stats_remote + ) + select + new.id, + odt.project_id, + odt.name, + odt.join_column, + odt.overlay_join_column, + odt.row_count, + odt.created_by, + odt.version, + odt.parquet_remote, + odt.column_stats_remote + from overlay_data_tables odt + where odt.table_of_contents_item_id = draft_toc_id + and odt.deleted_at is null; + end if; + end if; + return new; +end; +$$; + + -- -- Name: trg_resolvable_layer_comment_changelog(); Type: FUNCTION; Schema: public; Owner: - -- @@ -26889,6 +27508,20 @@ CREATE TABLE public.original_source_id ( ); +-- +-- Name: overlay_data_tables_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +ALTER TABLE public.overlay_data_tables ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY ( + SEQUENCE NAME public.overlay_data_tables_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1 +); + + -- -- Name: pending_topic_notifications; Type: TABLE; Schema: public; Owner: - -- @@ -27983,6 +28616,30 @@ ALTER TABLE ONLY public.optional_basemap_layers ADD CONSTRAINT optional_basemap_layers_pkey PRIMARY KEY (id); +-- +-- Name: overlay_data_table_uploads overlay_data_table_uploads_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.overlay_data_table_uploads + ADD CONSTRAINT overlay_data_table_uploads_pkey PRIMARY KEY (id); + + +-- +-- Name: overlay_data_table_uploads overlay_data_table_uploads_unique_project_background_job; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.overlay_data_table_uploads + ADD CONSTRAINT overlay_data_table_uploads_unique_project_background_job UNIQUE (project_background_job_id); + + +-- +-- Name: overlay_data_tables overlay_data_tables_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.overlay_data_tables + ADD CONSTRAINT overlay_data_tables_pkey PRIMARY KEY (id); + + -- -- Name: pending_topic_notifications pending_topic_notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -28937,6 +29594,27 @@ CREATE UNIQUE INDEX offline_tile_settings_unique_project_default ON public.offli CREATE INDEX optional_basemap_layers_basemap_id_idx ON public.optional_basemap_layers USING btree (basemap_id); +-- +-- Name: overlay_data_tables_active_name_per_toc; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX overlay_data_tables_active_name_per_toc ON public.overlay_data_tables USING btree (table_of_contents_item_id, name) WHERE (deleted_at IS NULL); + + +-- +-- Name: overlay_data_tables_project_idx; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX overlay_data_tables_project_idx ON public.overlay_data_tables USING btree (project_id); + + +-- +-- Name: overlay_data_tables_toc_active_idx; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX overlay_data_tables_toc_active_idx ON public.overlay_data_tables USING btree (table_of_contents_item_id) WHERE (deleted_at IS NULL); + + -- -- Name: posts_topic_id_idx; Type: INDEX; Schema: public; Owner: - -- @@ -29861,6 +30539,13 @@ CREATE TRIGGER on_delete_offline_tile_package_001 AFTER DELETE ON public.offline CREATE TRIGGER on_map_bookmark_update_trigger AFTER UPDATE ON public.map_bookmarks FOR EACH ROW EXECUTE FUNCTION public.on_map_bookmark_update(); +-- +-- Name: overlay_data_tables overlay_data_tables_draft_toc_has_changes; Type: TRIGGER; Schema: public; Owner: - +-- + +CREATE TRIGGER overlay_data_tables_draft_toc_has_changes AFTER INSERT OR DELETE OR UPDATE ON public.overlay_data_tables FOR EACH ROW EXECUTE FUNCTION public.overlay_data_tables_draft_toc_has_changes(); + + -- -- Name: posts post_after_insert_notify_subscriptions; Type: TRIGGER; Schema: public; Owner: - -- @@ -29875,6 +30560,13 @@ CREATE TRIGGER post_after_insert_notify_subscriptions AFTER INSERT ON public.pos CREATE TRIGGER project_background_job_notify_subscriptions AFTER INSERT OR UPDATE ON public.project_background_jobs FOR EACH ROW EXECUTE FUNCTION public.after_project_background_jobs_insert_or_update_notify_subscript(); +-- +-- Name: table_of_contents_items publish_overlay_data_tables_for_toc_item; Type: TRIGGER; Schema: public; Owner: - +-- + +CREATE TRIGGER publish_overlay_data_tables_for_toc_item AFTER INSERT ON public.table_of_contents_items FOR EACH ROW EXECUTE FUNCTION public.trg_publish_overlay_data_tables_for_toc_item(); + + -- -- Name: data_upload_outputs record_project_activity_on_delete; Type: TRIGGER; Schema: public; Owner: - -- @@ -30800,6 +31492,62 @@ ALTER TABLE ONLY public.optional_basemap_layers ADD CONSTRAINT optional_basemap_layers_basemap_id_fkey FOREIGN KEY (basemap_id) REFERENCES public.basemaps(id) ON DELETE CASCADE; +-- +-- Name: overlay_data_table_uploads overlay_data_table_uploads_project_background_job_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.overlay_data_table_uploads + ADD CONSTRAINT overlay_data_table_uploads_project_background_job_id_fkey FOREIGN KEY (project_background_job_id) REFERENCES public.project_background_jobs(id) ON DELETE CASCADE; + + +-- +-- Name: overlay_data_table_uploads overlay_data_table_uploads_replace_overlay_data_table_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.overlay_data_table_uploads + ADD CONSTRAINT overlay_data_table_uploads_replace_overlay_data_table_id_fkey FOREIGN KEY (replace_overlay_data_table_id) REFERENCES public.overlay_data_tables(id); + + +-- +-- Name: overlay_data_table_uploads overlay_data_table_uploads_table_of_contents_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.overlay_data_table_uploads + ADD CONSTRAINT overlay_data_table_uploads_table_of_contents_item_id_fkey FOREIGN KEY (table_of_contents_item_id) REFERENCES public.table_of_contents_items(id) ON DELETE CASCADE; + + +-- +-- Name: overlay_data_tables overlay_data_tables_created_by_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.overlay_data_tables + ADD CONSTRAINT overlay_data_tables_created_by_fkey FOREIGN KEY (created_by) REFERENCES public.users(id); + + +-- +-- Name: overlay_data_tables overlay_data_tables_project_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.overlay_data_tables + ADD CONSTRAINT overlay_data_tables_project_id_fkey FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + + +-- +-- Name: overlay_data_tables overlay_data_tables_replaced_by_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.overlay_data_tables + ADD CONSTRAINT overlay_data_tables_replaced_by_id_fkey FOREIGN KEY (replaced_by_id) REFERENCES public.overlay_data_tables(id); + + +-- +-- Name: overlay_data_tables overlay_data_tables_table_of_contents_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.overlay_data_tables + ADD CONSTRAINT overlay_data_tables_table_of_contents_item_id_fkey FOREIGN KEY (table_of_contents_item_id) REFERENCES public.table_of_contents_items(id) ON DELETE CASCADE; + + -- -- Name: pending_topic_notifications pending_topic_notifications_topic_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -32154,6 +32902,66 @@ CREATE POLICY optional_basemap_layers_admin ON public.optional_basemap_layers US CREATE POLICY optional_basemap_layers_select ON public.optional_basemap_layers FOR SELECT USING (true); +-- +-- Name: overlay_data_table_uploads; Type: ROW SECURITY; Schema: public; Owner: - +-- + +ALTER TABLE public.overlay_data_table_uploads ENABLE ROW LEVEL SECURITY; + +-- +-- Name: overlay_data_table_uploads overlay_data_table_uploads_insert; Type: POLICY; Schema: public; Owner: - +-- + +CREATE POLICY overlay_data_table_uploads_insert ON public.overlay_data_table_uploads FOR INSERT WITH CHECK (public.session_is_admin(( SELECT table_of_contents_items.project_id + FROM public.table_of_contents_items + WHERE (table_of_contents_items.id = overlay_data_table_uploads.table_of_contents_item_id)))); + + +-- +-- Name: overlay_data_table_uploads overlay_data_table_uploads_select; Type: POLICY; Schema: public; Owner: - +-- + +CREATE POLICY overlay_data_table_uploads_select ON public.overlay_data_table_uploads FOR SELECT USING (public.session_is_admin(( SELECT table_of_contents_items.project_id + FROM public.table_of_contents_items + WHERE (table_of_contents_items.id = overlay_data_table_uploads.table_of_contents_item_id)))); + + +-- +-- Name: overlay_data_tables; Type: ROW SECURITY; Schema: public; Owner: - +-- + +ALTER TABLE public.overlay_data_tables ENABLE ROW LEVEL SECURITY; + +-- +-- Name: overlay_data_tables overlay_data_tables_delete; Type: POLICY; Schema: public; Owner: - +-- + +CREATE POLICY overlay_data_tables_delete ON public.overlay_data_tables FOR DELETE USING ((public.session_is_admin(project_id) AND public.overlay_data_table_linked_toc_is_draft(table_of_contents_item_id, project_id))); + + +-- +-- Name: overlay_data_tables overlay_data_tables_insert; Type: POLICY; Schema: public; Owner: - +-- + +CREATE POLICY overlay_data_tables_insert ON public.overlay_data_tables FOR INSERT WITH CHECK ((public.session_is_admin(project_id) AND public.overlay_data_table_linked_toc_is_draft(table_of_contents_item_id, project_id))); + + +-- +-- Name: overlay_data_tables overlay_data_tables_select; Type: POLICY; Schema: public; Owner: - +-- + +CREATE POLICY overlay_data_tables_select ON public.overlay_data_tables FOR SELECT USING ((public.session_is_admin(project_id) OR (EXISTS ( SELECT 1 + FROM public.table_of_contents_items toc + WHERE ((toc.id = overlay_data_tables.table_of_contents_item_id) AND (toc.is_draft = false) AND public._session_on_toc_item_acl(toc.path)))))); + + +-- +-- Name: overlay_data_tables overlay_data_tables_update; Type: POLICY; Schema: public; Owner: - +-- + +CREATE POLICY overlay_data_tables_update ON public.overlay_data_tables FOR UPDATE USING ((public.session_is_admin(project_id) AND public.overlay_data_table_linked_toc_is_draft(table_of_contents_item_id, project_id))); + + -- -- Name: posts posts_delete; Type: POLICY; Schema: public; Owner: - -- @@ -35301,6 +36109,21 @@ REVOKE ALL ON FUNCTION public.collection_as_geojson(id integer) FROM PUBLIC; GRANT ALL ON FUNCTION public.collection_as_geojson(id integer) TO anon; +-- +-- Name: TABLE overlay_data_tables; Type: ACL; Schema: public; Owner: - +-- + +GRANT SELECT ON TABLE public.overlay_data_tables TO anon; +GRANT SELECT ON TABLE public.overlay_data_tables TO seasketch_user; + + +-- +-- Name: FUNCTION complete_overlay_data_table_upload(job_id uuid, p_name text, p_join_column text, p_overlay_join_column text, p_row_count integer, p_parquet_remote text, p_column_stats_remote text); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.complete_overlay_data_table_upload(job_id uuid, p_name text, p_join_column text, p_overlay_join_column text, p_row_count integer, p_parquet_remote text, p_column_stats_remote text) FROM PUBLIC; + + -- -- Name: FUNCTION compute_project_geography_hash(geog_id integer); Type: ACL; Schema: public; Owner: - -- @@ -35880,6 +36703,21 @@ REVOKE ALL ON FUNCTION public.create_metadata_xml_output(data_source_id integer, GRANT ALL ON FUNCTION public.create_metadata_xml_output(data_source_id integer, url text, remote text, size bigint, filename text, metadata_type text) TO seasketch_user; +-- +-- Name: TABLE overlay_data_table_uploads; Type: ACL; Schema: public; Owner: - +-- + +GRANT SELECT ON TABLE public.overlay_data_table_uploads TO seasketch_user; + + +-- +-- Name: FUNCTION create_overlay_data_table_upload(toc_item_id integer, filename text, content_type text, processing_options jsonb, replace_overlay_data_table_id integer); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.create_overlay_data_table_upload(toc_item_id integer, filename text, content_type text, processing_options jsonb, replace_overlay_data_table_id integer) FROM PUBLIC; +GRANT ALL ON FUNCTION public.create_overlay_data_table_upload(toc_item_id integer, filename text, content_type text, processing_options jsonb, replace_overlay_data_table_id integer) TO seasketch_user; + + -- -- Name: FUNCTION extract_post_bookmark_attachments(doc jsonb); Type: ACL; Schema: public; Owner: - -- @@ -36942,6 +37780,13 @@ REVOKE ALL ON FUNCTION public.fail_data_upload(id uuid, msg text) FROM PUBLIC; GRANT ALL ON FUNCTION public.fail_data_upload(id uuid, msg text) TO seasketch_user; +-- +-- Name: FUNCTION fail_overlay_data_table_upload(job_id uuid, error_message text, error_details jsonb); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.fail_overlay_data_table_upload(job_id uuid, error_message text, error_details jsonb) FROM PUBLIC; + + -- -- Name: FUNCTION filter_state_to_search_string(filters jsonb, sketch_class_id integer); Type: ACL; Schema: public; Owner: - -- @@ -39086,6 +39931,21 @@ REVOKE ALL ON FUNCTION public.overlaps_nd(public.gidx, public.geometry) FROM PUB REVOKE ALL ON FUNCTION public.overlaps_nd(public.gidx, public.gidx) FROM PUBLIC; +-- +-- Name: FUNCTION overlay_data_table_linked_toc_is_draft(toc_item_id integer, pid integer); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.overlay_data_table_linked_toc_is_draft(toc_item_id integer, pid integer) FROM PUBLIC; +GRANT ALL ON FUNCTION public.overlay_data_table_linked_toc_is_draft(toc_item_id integer, pid integer) TO seasketch_user; + + +-- +-- Name: FUNCTION overlay_data_tables_draft_toc_has_changes(); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.overlay_data_tables_draft_toc_has_changes() FROM PUBLIC; + + -- -- Name: FUNCTION path(public.geometry); Type: ACL; Schema: public; Owner: - -- @@ -40428,6 +41288,14 @@ REVOKE ALL ON FUNCTION public.remove_valid_child_sketch_class(parent integer, ch GRANT ALL ON FUNCTION public.remove_valid_child_sketch_class(parent integer, child integer) TO seasketch_user; +-- +-- Name: FUNCTION rename_overlay_data_table(table_id integer, new_name text); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.rename_overlay_data_table(table_id integer, new_name text) FROM PUBLIC; +GRANT ALL ON FUNCTION public.rename_overlay_data_table(table_id integer, new_name text) TO seasketch_user; + + -- -- Name: FUNCTION rename_report_tab(tab_id integer, title text, alternate_language_settings jsonb); Type: ACL; Schema: public; Owner: - -- @@ -40671,6 +41539,14 @@ REVOKE ALL ON FUNCTION public.revoke_api_key(id uuid) FROM PUBLIC; GRANT ALL ON FUNCTION public.revoke_api_key(id uuid) TO seasketch_user; +-- +-- Name: FUNCTION rollback_overlay_data_table_version(table_id integer); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.rollback_overlay_data_table_version(table_id integer) FROM PUBLIC; +GRANT ALL ON FUNCTION public.rollback_overlay_data_table_version(table_id integer) TO seasketch_user; + + -- -- Name: FUNCTION rollback_to_archived_source(source_id integer, rollback_gl_style boolean); Type: ACL; Schema: public; Owner: - -- @@ -41242,6 +42118,14 @@ REVOKE ALL ON FUNCTION public.slugify(value text, allow_unicode boolean) FROM PU GRANT ALL ON FUNCTION public.slugify(value text, allow_unicode boolean) TO anon; +-- +-- Name: FUNCTION soft_delete_overlay_data_table(table_id integer); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.soft_delete_overlay_data_table(table_id integer) FROM PUBLIC; +GRANT ALL ON FUNCTION public.soft_delete_overlay_data_table(table_id integer) TO seasketch_user; + + -- -- Name: FUNCTION soft_delete_sprite(id integer); Type: ACL; Schema: public; Owner: - -- @@ -44065,6 +44949,14 @@ REVOKE ALL ON FUNCTION public.submit_data_upload(id uuid, enable_ai_data_analyst GRANT ALL ON FUNCTION public.submit_data_upload(id uuid, enable_ai_data_analyst boolean) TO seasketch_user; +-- +-- Name: FUNCTION submit_overlay_data_table_upload(job_id uuid); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.submit_overlay_data_table_upload(job_id uuid) FROM PUBLIC; +GRANT ALL ON FUNCTION public.submit_overlay_data_table_upload(job_id uuid) TO seasketch_user; + + -- -- Name: FUNCTION subpath(public.ltree, integer); Type: ACL; Schema: public; Owner: - -- @@ -44341,6 +45233,14 @@ REVOKE ALL ON FUNCTION public.table_of_contents_items_metadata_xml(item public.t GRANT ALL ON FUNCTION public.table_of_contents_items_metadata_xml(item public.table_of_contents_items) TO anon; +-- +-- Name: FUNCTION table_of_contents_items_overlay_data_tables(item public.table_of_contents_items); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.table_of_contents_items_overlay_data_tables(item public.table_of_contents_items) FROM PUBLIC; +GRANT ALL ON FUNCTION public.table_of_contents_items_overlay_data_tables(item public.table_of_contents_items) TO seasketch_user; + + -- -- Name: FUNCTION table_of_contents_items_primary_download_url(item public.table_of_contents_items); Type: ACL; Schema: public; Owner: - -- @@ -44754,6 +45654,13 @@ REVOKE ALL ON FUNCTION public.trg_changelog_table_of_contents_items_parent_chang REVOKE ALL ON FUNCTION public.trg_changelog_table_of_contents_items_title() FROM PUBLIC; +-- +-- Name: FUNCTION trg_publish_overlay_data_tables_for_toc_item(); Type: ACL; Schema: public; Owner: - +-- + +REVOKE ALL ON FUNCTION public.trg_publish_overlay_data_tables_for_toc_item() FROM PUBLIC; + + -- -- Name: FUNCTION trg_resolvable_layer_comment_changelog(); Type: ACL; Schema: public; Owner: - -- diff --git a/packages/api/src/graphileOptions.ts b/packages/api/src/graphileOptions.ts index dc0db913f..a9a6d3c73 100644 --- a/packages/api/src/graphileOptions.ts +++ b/packages/api/src/graphileOptions.ts @@ -51,6 +51,7 @@ import ReportsPlugin from "./plugins/reportsPlugin"; import FeatureFlagsPlugin from "./plugins/featureFlagsPlugin"; import UserActivityPlugin from "./plugins/userActivityPlugin"; import DataUploadPiiClassifierWarmPlugin from "./plugins/dataUploadPiiClassifierWarmPlugin"; +import OverlayDataTablePlugin from "./plugins/overlayDataTablePlugin"; const pluginHook = makePluginHook([{ ...PgPubsub, ...SentryPlugin }]); @@ -115,7 +116,7 @@ export default function graphileOptions(): PostGraphileOptions { ReportsPlugin, FeatureFlagsPlugin, UserActivityPlugin, - // reorderSchemaFields(graphqlSchemaModifiers.fieldOrder), + OverlayDataTablePlugin, // extraDocumentationPlugin(graphqlSchemaModifiers.documentation), ], graphileBuildOptions: { diff --git a/packages/api/src/plugins/overlayDataTablePlugin.ts b/packages/api/src/plugins/overlayDataTablePlugin.ts new file mode 100644 index 000000000..2d2016571 --- /dev/null +++ b/packages/api/src/plugins/overlayDataTablePlugin.ts @@ -0,0 +1,48 @@ +import { makeExtendSchemaPlugin, gql } from "graphile-utils"; +import { S3 } from "aws-sdk"; + +export const DATA_TABLE_UPLOAD_PRESIGNED_URL_TTL = 60 * 120; + +function remoteToPublicUrl(remote: string | null | undefined): string | null { + if (!remote) return null; + const base = + process.env.UPLOADS_BASE_URL || process.env.TILES_BASE_URL || ""; + if (!base) return null; + const key = remote.replace(/^r2:\/\//, "").split("/").slice(1).join("/"); + return `${base.replace(/\/$/, "")}/${key}`; +} + +const OverlayDataTablePlugin = makeExtendSchemaPlugin(() => ({ + typeDefs: gql` + extend type OverlayDataTable { + parquetUrl: String @requires(columns: ["parquetRemote"]) + columnStatsUrl: String @requires(columns: ["columnStatsRemote"]) + } + + extend type OverlayDataTableUpload { + presignedUploadUrl: String + @requires(columns: ["id", "filename", "contentType"]) + } + `, + resolvers: { + OverlayDataTable: { + parquetUrl: (table) => remoteToPublicUrl(table.parquetRemote), + columnStatsUrl: (table) => remoteToPublicUrl(table.columnStatsRemote), + }, + OverlayDataTableUpload: { + presignedUploadUrl: async (upload) => { + const region = process.env.S3_REGION; + const bucket = process.env.SPATIAL_UPLOADS_BUCKET; + const s3 = new S3({ region }); + return s3.getSignedUrlPromise("putObject", { + Bucket: bucket, + Key: `${upload.id}/${upload.filename}`, + Expires: DATA_TABLE_UPLOAD_PRESIGNED_URL_TTL, + ContentType: upload.contentType, + }); + }, + }, + }, +})); + +export default OverlayDataTablePlugin; diff --git a/packages/api/tasks/cleanupProjectBackgroundJobs.ts b/packages/api/tasks/cleanupProjectBackgroundJobs.ts index f8a6fa91e..9ffb4323a 100644 --- a/packages/api/tasks/cleanupProjectBackgroundJobs.ts +++ b/packages/api/tasks/cleanupProjectBackgroundJobs.ts @@ -11,7 +11,14 @@ import { Helpers } from "graphile-worker"; async function cleanupProjectBackgroundJobs(payload: {}, helpers: Helpers) { await helpers.withPgClient(async (client) => { await client.query(` - update project_background_jobs set state = 'failed', error_message = 'Timed out', progress_message = 'timeout' where (state = 'queued' or state = 'running') and now() >= timeout_at + select fail_overlay_data_table_upload(pbj.id, 'Timed out') + from project_background_jobs pbj + where pbj.type = 'data_table_upload' + and pbj.state in ('queued', 'running') + and now() >= pbj.timeout_at + `); + await client.query(` + update project_background_jobs set state = 'failed', error_message = 'Timed out', progress_message = 'timeout' where (state = 'queued' or state = 'running') and now() >= timeout_at and type != 'data_table_upload' `); await client.query(` delete from project_background_jobs where state = 'queued' and created_at < now() - interval '1 day' diff --git a/packages/api/tasks/processDataTableUpload.ts b/packages/api/tasks/processDataTableUpload.ts new file mode 100644 index 000000000..eccf16fef --- /dev/null +++ b/packages/api/tasks/processDataTableUpload.ts @@ -0,0 +1,104 @@ +import { Helpers } from "graphile-worker"; +import AWS from "aws-sdk"; + +interface DataTablesHandlerRequest { + taskId: string; + uploadId: string; + objectKey: string; + suffix: string; + skipLoggingProgress?: boolean; +} + +const client = new AWS.Lambda({ + region: process.env.AWS_REGION || "us-west-2", + httpOptions: { timeout: 60000 * 5.5 }, +}); + +export async function runDataTablesLambda(event: DataTablesHandlerRequest) { + if (process.env.DATA_TABLES_LAMBDA_DEV_HANDLER) { + const url = process.env.DATA_TABLES_LAMBDA_DEV_HANDLER; + const response = await fetch(url, { + method: "POST", + body: JSON.stringify(event), + headers: { "Content-Type": "application/json" }, + }); + const text = await response.text(); + if (!response.ok) { + throw new Error( + `Data tables dev handler HTTP ${response.status}: ${text.slice(0, 500)}`, + ); + } + return JSON.parse(text); + } + if (process.env.DATA_TABLES_HANDLER_LAMBDA_ARN) { + await client + .invoke({ + InvocationType: "Event", + FunctionName: process.env.DATA_TABLES_HANDLER_LAMBDA_ARN, + Payload: JSON.stringify({ + ...event, + skipLoggingProgress: + process.env.PGHOST && /rds.amazonaws.com/.test(process.env.PGHOST) + ? false + : true, + }), + }) + .promise(); + return; + } + throw new Error( + "Neither DATA_TABLES_HANDLER_LAMBDA_ARN nor DATA_TABLES_LAMBDA_DEV_HANDLER are defined. " + + "For local dev, run `npm run dev` in packages/data-tables-handler and set " + + "DATA_TABLES_LAMBDA_DEV_HANDLER=http://localhost:3006 on the API server.", + ); +} + +export default async function processDataTableUpload( + payload: { jobId: string }, + helpers: Helpers, +) { + const { jobId } = payload; + helpers.logger.info(`Handling data table upload: ${jobId}`); + await helpers.withPgClient(async (client) => { + await client.query( + `update project_background_jobs set progress_message = 'processing', state = 'running', started_at = now(), timeout_at = timezone('utc', now()) + interval '60 seconds' where id = $1`, + [jobId], + ); + const q = await client.query( + `select + odtu.id as upload_id, + odtu.id || '/' || odtu.filename as object_key + from overlay_data_table_uploads odtu + where odtu.project_background_job_id = $1 + limit 1`, + [jobId], + ); + if (!q.rows[0]) { + throw new Error("Could not find upload for job " + jobId); + } + const slugResults = await client.query( + `select slug from projects where id = (select project_id from project_background_jobs where id = $1)`, + [jobId], + ); + try { + await runDataTablesLambda({ + taskId: jobId, + uploadId: q.rows[0].upload_id, + objectKey: q.rows[0].object_key, + suffix: slugResults.rows[0].slug, + }); + } catch (e) { + if (process.env.DATA_TABLES_LAMBDA_DEV_HANDLER) { + await client.query( + `select fail_overlay_data_table_upload($1, $2)`, + [jobId, (e as Error).message], + ); + } else { + await client.query( + `select fail_overlay_data_table_upload($1, $2)`, + [jobId, "Lambda invocation failure"], + ); + } + } + }); +} diff --git a/packages/api/tasks/processDataTableUploadOutputs.ts b/packages/api/tasks/processDataTableUploadOutputs.ts new file mode 100644 index 000000000..a935ba4ce --- /dev/null +++ b/packages/api/tasks/processDataTableUploadOutputs.ts @@ -0,0 +1,48 @@ +import { Helpers } from "graphile-worker"; + +export default async function processDataTableUploadOutputs( + payload: { + jobId: string; + data: { + uploadId: string; + name: string; + joinColumn: string; + overlayJoinColumn: string; + rowCount: number; + parquetRemote: string; + columnStatsRemote: string; + }; + }, + helpers: Helpers, +) { + const { jobId, data } = payload; + helpers.logger.info(`Completing data table upload: ${jobId}`); + await helpers.withPgClient(async (client) => { + try { + if (!data?.parquetRemote || !data?.columnStatsRemote) { + await client.query(`select fail_overlay_data_table_upload($1, $2)`, [ + jobId, + "Missing output artifacts from processor", + ]); + return; + } + await client.query( + `select complete_overlay_data_table_upload($1, $2, $3, $4, $5, $6, $7)`, + [ + jobId, + data.name, + data.joinColumn, + data.overlayJoinColumn, + data.rowCount, + data.parquetRemote, + data.columnStatsRemote, + ], + ); + } catch (e) { + await client.query(`select fail_overlay_data_table_upload($1, $2)`, [ + jobId, + (e as Error).message, + ]); + } + }); +} diff --git a/packages/api/tests/overlayDataTables.test.ts b/packages/api/tests/overlayDataTables.test.ts new file mode 100644 index 000000000..bb5fe7248 --- /dev/null +++ b/packages/api/tests/overlayDataTables.test.ts @@ -0,0 +1,279 @@ +import { sql } from "slonik"; +import { createPool } from "./pool"; +import { + createUser, + createProject, + createSession, + clearSession, + projectTransaction, +} from "./helpers"; +// @ts-ignore +import nanoid from "nanoid"; + +const id = nanoid.customAlphabet( + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", + 9, +); + +const pool = createPool("test"); + +async function asPostgres( + conn: any, + fn: () => Promise, + restore?: { userId: number; projectId: number }, +) { + await conn.any(sql`SAVEPOINT as_postgres`); + await conn.any(sql`set role postgres`); + try { + await fn(); + await conn.any(sql`set role seasketch_user`); + await conn.any(sql`RELEASE SAVEPOINT as_postgres`); + if (restore) { + await createSession(conn, restore.userId, true, false, restore.projectId); + } + } catch (error) { + await conn.any(sql`ROLLBACK TO SAVEPOINT as_postgres`); + await conn.any(sql`RELEASE SAVEPOINT as_postgres`); + if (restore) { + await createSession(conn, restore.userId, true, false, restore.projectId); + } + throw error; + } +} + +async function createDraftLayer( + conn: any, + projectId: number, + adminId: number, +) { + const sourceId = await conn.oneFirst( + sql`insert into data_sources (project_id, type, url, attribution) + values (${projectId}, 'vector', 'https://example.com/vector-tiles/{z}/{x}/{y}.pbf', 'test') + returning id`, + ); + const layerId = await conn.oneFirst( + sql`insert into data_layers (project_id, data_source_id, source_layer, mapbox_gl_styles) + values (${projectId}, ${sourceId}, 'test-layer', ${sql.json([ + { type: "circle", paint: { "circle-color": "#0000ff" } }, + ])}) returning id`, + ); + const stableId = id(); + const tocId = await conn.oneFirst( + sql`insert into table_of_contents_items (project_id, title, is_folder, data_layer_id, stable_id) + values (${projectId}, 'Sites', false, ${layerId}, ${stableId}) returning id`, + ); + return { sourceId, layerId, tocId }; +} + +describe("overlay_data_tables", () => { + test("admin can insert and soft delete draft data table", async () => { + await projectTransaction( + pool, + "public", + async (conn, projectId, adminId) => { + await createSession(conn, adminId, true, false, projectId); + const { tocId } = await createDraftLayer(conn, projectId, adminId); + + let jobId: string; + await asPostgres( + conn, + async () => { + jobId = (await conn.oneFirst(sql` + insert into project_background_jobs (project_id, title, type, user_id) + values (${projectId}, 'test', 'data_table_upload', ${adminId}) returning id`)) as string; + await conn.any(sql` + insert into overlay_data_table_uploads ( + project_background_job_id, table_of_contents_item_id, filename, content_type, + overlay_geostats + ) values ( + ${jobId}, ${tocId}, 'fish.csv', 'text/csv', '{"layers":[]}'::jsonb + )`); + await conn.any(sql` + select complete_overlay_data_table_upload( + ${jobId}, 'fish', 'site_id', 'id', 10, + 'r2://bucket/projects/test/public/dataTables/u1/data.parquet', + 'r2://bucket/projects/test/public/dataTables/u1/column-stats.json' + )`); + }, + { userId: adminId, projectId }, + ); + + const row = await conn.one( + sql`select name from overlay_data_tables where table_of_contents_item_id = ${tocId} and deleted_at is null`, + ); + expect(row.name).toBe("fish"); + + const tableId = await conn.oneFirst( + sql`select id from overlay_data_tables where table_of_contents_item_id = ${tocId} and deleted_at is null`, + ); + await conn.any( + sql`select soft_delete_overlay_data_table(${tableId})`, + ); + const deleted = await conn.one( + sql`select deleted_at from overlay_data_tables where id = ${tableId}`, + ); + expect(deleted.deleted_at).not.toBeNull(); + }, + ); + }); + + test("non-admin cannot insert overlay data tables", async () => { + await projectTransaction( + pool, + "public", + async (conn, projectId, adminId, [userA]) => { + await createSession(conn, adminId, true, false, projectId); + const { tocId } = await createDraftLayer(conn, projectId, adminId); + await createSession(conn, userA, true, false, projectId); + await expect( + conn.oneFirst(sql` + insert into overlay_data_tables ( + table_of_contents_item_id, project_id, name, join_column, overlay_join_column, + row_count, created_by, parquet_remote, column_stats_remote + ) values ( + ${tocId}, ${projectId}, 'fish', 'site_id', 'id', 10, ${userA}, + 'r2://bucket/a.parquet', 'r2://bucket/a.json' + ) returning id`), + ).rejects.toThrow(); + }, + ); + }); + + test("publish copies active draft tables to published toc item", async () => { + await projectTransaction( + pool, + "public", + async (conn, projectId, adminId) => { + await createSession(conn, adminId, true, false, projectId); + const { tocId } = await createDraftLayer(conn, projectId, adminId); + + await asPostgres( + conn, + async () => { + await conn.any(sql` + insert into overlay_data_tables ( + table_of_contents_item_id, project_id, name, join_column, overlay_join_column, + row_count, created_by, parquet_remote, column_stats_remote + ) values ( + ${tocId}, ${projectId}, 'fish', 'site_id', 'id', 10, ${adminId}, + 'r2://bucket/projects/test/public/dataTables/u1/data.parquet', + 'r2://bucket/projects/test/public/dataTables/u1/column-stats.json' + )`); + }, + { userId: adminId, projectId }, + ); + + await conn.any(sql`select publish_table_of_contents(${projectId})`); + + const published = await conn.one(sql` + select odt.name, toc.is_draft + from overlay_data_tables odt + inner join table_of_contents_items toc on toc.id = odt.table_of_contents_item_id + where odt.project_id = ${projectId} and toc.is_draft = false`); + + expect(published.name).toBe("fish"); + expect(published.is_draft).toBe(false); + }, + ); + }); + + test("allows duplicate active table names per toc item", async () => { + await projectTransaction( + pool, + "public", + async (conn, projectId, adminId) => { + await createSession(conn, adminId, true, false, projectId); + const { tocId } = await createDraftLayer(conn, projectId, adminId); + + await asPostgres( + conn, + async () => { + await conn.any(sql` + insert into overlay_data_tables ( + table_of_contents_item_id, project_id, name, join_column, overlay_join_column, + row_count, created_by, parquet_remote, column_stats_remote + ) values ( + ${tocId}, ${projectId}, 'fish', 'site_id', 'id', 10, ${adminId}, + 'r2://bucket/a.parquet', 'r2://bucket/a.json' + )`); + await conn.any(sql` + insert into overlay_data_tables ( + table_of_contents_item_id, project_id, name, join_column, overlay_join_column, + row_count, created_by, parquet_remote, column_stats_remote + ) values ( + ${tocId}, ${projectId}, 'fish', 'site_id', 'id', 5, ${adminId}, + 'r2://bucket/b.parquet', 'r2://bucket/b.json' + )`); + }, + { userId: adminId, projectId }, + ); + + const count = await conn.oneFirst(sql` + select count(*) from overlay_data_tables + where table_of_contents_item_id = ${tocId} + and name = 'fish' + and deleted_at is null`); + expect(count).toBe(2); + }, + ); + }); + + test("replace increments version and soft deletes previous", async () => { + await projectTransaction( + pool, + "public", + async (conn, projectId, adminId) => { + await createSession(conn, adminId, true, false, projectId); + const { tocId } = await createDraftLayer(conn, projectId, adminId); + + let jobId: string; + let oldId: number; + await asPostgres( + conn, + async () => { + jobId = (await conn.oneFirst(sql` + insert into project_background_jobs (project_id, title, type, user_id) + values (${projectId}, 'test', 'data_table_upload', ${adminId}) returning id`)) as string; + + oldId = Number(await conn.oneFirst(sql` + insert into overlay_data_tables ( + table_of_contents_item_id, project_id, name, join_column, overlay_join_column, + row_count, created_by, version, parquet_remote, column_stats_remote + ) values ( + ${tocId}, ${projectId}, 'fish', 'site_id', 'id', 10, ${adminId}, 1, + 'r2://bucket/old.parquet', 'r2://bucket/old.json' + ) returning id`)); + + await conn.any(sql` + insert into overlay_data_table_uploads ( + project_background_job_id, table_of_contents_item_id, filename, content_type, + overlay_geostats, replace_overlay_data_table_id + ) values ( + ${jobId}, ${tocId}, 'fish.csv', 'text/csv', + '{"layers":[{"attributes":[]}]}'::jsonb, + ${oldId} + )`); + await conn.any(sql` + select complete_overlay_data_table_upload( + ${jobId}, 'fish', 'site_id', 'id', 20, + 'r2://bucket/new.parquet', 'r2://bucket/new.json' + )`); + }, + { userId: adminId, projectId }, + ); + + const oldRow = await conn.one( + sql`select deleted_at, replaced_by_id, version from overlay_data_tables where id = ${oldId!}`, + ); + expect(oldRow.deleted_at).not.toBeNull(); + expect(oldRow.replaced_by_id).not.toBeNull(); + + const newRow = await conn.one( + sql`select version, deleted_at from overlay_data_tables where id = ${oldRow.replaced_by_id}`, + ); + expect(newRow.version).toBe(2); + expect(newRow.deleted_at).toBeNull(); + }, + ); + }); +}); diff --git a/packages/client/src/admin/changelogs/DataTablesChangeLogList.tsx b/packages/client/src/admin/changelogs/DataTablesChangeLogList.tsx new file mode 100644 index 000000000..571bb6388 --- /dev/null +++ b/packages/client/src/admin/changelogs/DataTablesChangeLogList.tsx @@ -0,0 +1,133 @@ +import { useLayoutEffect, useMemo, useRef, useState } from "react"; +import { Trans, useTranslation } from "react-i18next"; +import { ChevronDownIcon } from "@heroicons/react/outline"; +import { + DataTableChangeLogQuery, + useDataTableChangeLogQuery, +} from "../../generated/graphql"; +import ChangeLogListItem from "./ChangeLogListItem"; +import { + DATA_TABLE_CHANGE_LOG_EXPANDED_FIRST, + DATA_TABLE_CHANGE_LOG_PAGE_SIZE, +} from "./dataTableChangeLogRefetch"; + +function findScrollParent(from: HTMLElement | null): HTMLElement | null { + if (!from) return null; + let el: HTMLElement | null = from.parentElement; + while (el) { + const { overflowY } = window.getComputedStyle(el); + if ( + overflowY === "auto" || + overflowY === "scroll" || + overflowY === "overlay" + ) { + if (el.scrollHeight > el.clientHeight) { + return el; + } + } + el = el.parentElement; + } + return null; +} + +export default function DataTablesChangeLogList({ + tableOfContentsItemId, +}: { + tableOfContentsItemId: number; +}) { + const { t } = useTranslation("admin:data"); + const [showAllHistory, setShowAllHistory] = useState(false); + const scrollRestoreRef = useRef<{ el: HTMLElement; top: number } | null>( + null, + ); + const lastTocRef = useRef< + NonNullable | undefined + >(undefined); + + const variables = useMemo( + () => ({ + id: tableOfContentsItemId, + first: showAllHistory + ? DATA_TABLE_CHANGE_LOG_EXPANDED_FIRST + : DATA_TABLE_CHANGE_LOG_PAGE_SIZE, + }), + [tableOfContentsItemId, showAllHistory], + ); + + const { data, loading } = useDataTableChangeLogQuery({ + variables, + skip: !tableOfContentsItemId, + fetchPolicy: "cache-and-network", + nextFetchPolicy: "cache-first", + }); + + const tocQuery = data?.tableOfContentsItem; + if (tocQuery) { + lastTocRef.current = tocQuery; + } + + const toc = + tocQuery ?? + (showAllHistory && loading ? lastTocRef.current : undefined) ?? + lastTocRef.current; + + const changeLogs = toc?.dataTableChangeLogs ? [...toc.dataTableChangeLogs] : []; + + const canShowMore = + !showAllHistory && + changeLogs.length >= DATA_TABLE_CHANGE_LOG_PAGE_SIZE && + changeLogs.length > 0; + + const initialLoading = loading && !tocQuery && !showAllHistory; + + useLayoutEffect(() => { + const pending = scrollRestoreRef.current; + if (!pending || !showAllHistory) return; + pending.el.scrollTop = pending.top; + scrollRestoreRef.current = null; + }, [showAllHistory, changeLogs.length]); + + if ((initialLoading && !toc) || changeLogs.length === 0) { + return null; + } + + return ( +
+

+ History +

+
    + {changeLogs.map((changeLog, index) => ( + + ))} +
+ {canShowMore && ( +
+ +
+ )} +
+ ); +} diff --git a/packages/client/src/admin/changelogs/dataTableChangeLogRefetch.ts b/packages/client/src/admin/changelogs/dataTableChangeLogRefetch.ts new file mode 100644 index 000000000..2aefea5c0 --- /dev/null +++ b/packages/client/src/admin/changelogs/dataTableChangeLogRefetch.ts @@ -0,0 +1,33 @@ +import type { RefetchQueriesInclude } from "@apollo/client"; +import { DataTableChangeLogDocument } from "../../generated/graphql"; +import { + LAYER_SETTINGS_CHANGE_LOG_EXPANDED_FIRST, + LAYER_SETTINGS_CHANGE_LOG_PAGE_SIZE, +} from "./layerSettingsChangeLogRefetch"; + +export { + LAYER_SETTINGS_CHANGE_LOG_PAGE_SIZE as DATA_TABLE_CHANGE_LOG_PAGE_SIZE, + LAYER_SETTINGS_CHANGE_LOG_EXPANDED_FIRST as DATA_TABLE_CHANGE_LOG_EXPANDED_FIRST, +}; + +/** Refetches both paginated variants of {@link DataTableChangeLogDocument}. */ +export function dataTableChangeLogRefetchQueries( + tableOfContentsItemId: number, +): RefetchQueriesInclude { + return [ + { + query: DataTableChangeLogDocument, + variables: { + id: tableOfContentsItemId, + first: LAYER_SETTINGS_CHANGE_LOG_PAGE_SIZE, + }, + }, + { + query: DataTableChangeLogDocument, + variables: { + id: tableOfContentsItemId, + first: LAYER_SETTINGS_CHANGE_LOG_EXPANDED_FIRST, + }, + }, + ] as unknown as RefetchQueriesInclude; +} diff --git a/packages/client/src/admin/changelogs/fieldGroups/DataTableCreatedFieldGroupListItem.tsx b/packages/client/src/admin/changelogs/fieldGroups/DataTableCreatedFieldGroupListItem.tsx new file mode 100644 index 000000000..023e2b74c --- /dev/null +++ b/packages/client/src/admin/changelogs/fieldGroups/DataTableCreatedFieldGroupListItem.tsx @@ -0,0 +1,28 @@ +import { TableIcon } from "@heroicons/react/outline"; +import { Trans, useTranslation } from "react-i18next"; +import BaseFieldGroupListItem, { + ChangeValue, + FieldGroupListItemProps, + summary, +} from "./FieldGroupListItemBase"; +import { tableLabel } from "./dataTableSummary"; + +export default function DataTableCreatedFieldGroupListItem( + props: FieldGroupListItemProps, +) { + const to = summary(props.changeLog.toSummary); + const { t } = useTranslation("admin:data"); + const label = tableLabel(to, t("Untitled table")); + + return ( + } + iconClassName="bg-green-50 text-green-500" + > + + uploaded data table {label} + + + ); +} diff --git a/packages/client/src/admin/changelogs/fieldGroups/DataTableDeletedFieldGroupListItem.tsx b/packages/client/src/admin/changelogs/fieldGroups/DataTableDeletedFieldGroupListItem.tsx new file mode 100644 index 000000000..e8f1d4058 --- /dev/null +++ b/packages/client/src/admin/changelogs/fieldGroups/DataTableDeletedFieldGroupListItem.tsx @@ -0,0 +1,28 @@ +import { TrashIcon } from "@heroicons/react/outline"; +import { Trans, useTranslation } from "react-i18next"; +import BaseFieldGroupListItem, { + ChangeValue, + FieldGroupListItemProps, + summary, +} from "./FieldGroupListItemBase"; +import { tableLabel } from "./dataTableSummary"; + +export default function DataTableDeletedFieldGroupListItem( + props: FieldGroupListItemProps, +) { + const from = summary(props.changeLog.fromSummary); + const { t } = useTranslation("admin:data"); + + return ( + } + iconClassName="bg-red-50 text-red-500" + > + + deleted data table{" "} + {tableLabel(from, t("Untitled table"))} + + + ); +} diff --git a/packages/client/src/admin/changelogs/fieldGroups/DataTableRenamedFieldGroupListItem.tsx b/packages/client/src/admin/changelogs/fieldGroups/DataTableRenamedFieldGroupListItem.tsx new file mode 100644 index 000000000..27dd2983e --- /dev/null +++ b/packages/client/src/admin/changelogs/fieldGroups/DataTableRenamedFieldGroupListItem.tsx @@ -0,0 +1,38 @@ +import { PencilIcon } from "@heroicons/react/outline"; +import { Trans, useTranslation } from "react-i18next"; +import BaseFieldGroupListItem, { + ChangeValue, + FieldGroupListItemProps, + summary, + valueText, +} from "./FieldGroupListItemBase"; +import { tableVersionFromSummary } from "./dataTableSummary"; + +export default function DataTableRenamedFieldGroupListItem( + props: FieldGroupListItemProps, +) { + const from = summary(props.changeLog.fromSummary); + const to = summary(props.changeLog.toSummary); + const { t } = useTranslation("admin:data"); + const version = tableVersionFromSummary(to); + + return ( + } + iconClassName="bg-gray-50 text-gray-500" + > + + renamed data table from{" "} + + {valueText(from.name, t("Untitled table"))} + {" "} + {" -> "} + {valueText(to.name, t("Untitled table"))} + + {version != null ? ( + <> {t("(v{{version}})", { version })} + ) : null} + + ); +} diff --git a/packages/client/src/admin/changelogs/fieldGroups/DataTableReplacedFieldGroupListItem.tsx b/packages/client/src/admin/changelogs/fieldGroups/DataTableReplacedFieldGroupListItem.tsx new file mode 100644 index 000000000..9bb17e47a --- /dev/null +++ b/packages/client/src/admin/changelogs/fieldGroups/DataTableReplacedFieldGroupListItem.tsx @@ -0,0 +1,47 @@ +import { RefreshIcon } from "@heroicons/react/outline"; +import { Trans, useTranslation } from "react-i18next"; +import BaseFieldGroupListItem, { + ChangeValue, + FieldGroupListItemProps, + summary, +} from "./FieldGroupListItemBase"; +import { + tableLabel, + tableNameFromSummary, + tableVersionFromSummary, +} from "./dataTableSummary"; + +export default function DataTableReplacedFieldGroupListItem( + props: FieldGroupListItemProps, +) { + const from = summary(props.changeLog.fromSummary); + const to = summary(props.changeLog.toSummary); + const { t } = useTranslation("admin:data"); + const name = + tableNameFromSummary(to) || + tableNameFromSummary(from) || + t("Untitled table"); + const fromVersion = tableVersionFromSummary(from); + const toVersion = tableVersionFromSummary(to); + + return ( + } + iconClassName="bg-indigo-50 text-indigo-500" + > + {fromVersion != null && toVersion != null ? ( + <> + replaced data table{" "} + {name}{" "} + {t("v{{fromVersion}} → v{{toVersion}}", { fromVersion, toVersion })} + + ) : ( + + replaced data table{" "} + {tableLabel(to, t("Untitled table"))} + + )} + + ); +} diff --git a/packages/client/src/admin/changelogs/fieldGroups/DataTableRollbackFieldGroupListItem.tsx b/packages/client/src/admin/changelogs/fieldGroups/DataTableRollbackFieldGroupListItem.tsx new file mode 100644 index 000000000..663bd9f1a --- /dev/null +++ b/packages/client/src/admin/changelogs/fieldGroups/DataTableRollbackFieldGroupListItem.tsx @@ -0,0 +1,33 @@ +import { ReplyIcon } from "@heroicons/react/outline"; +import { Trans, useTranslation } from "react-i18next"; +import BaseFieldGroupListItem, { + ChangeValue, + FieldGroupListItemProps, + summary, +} from "./FieldGroupListItemBase"; +import { removedVersionFromSummary, tableLabel } from "./dataTableSummary"; + +export default function DataTableRollbackFieldGroupListItem( + props: FieldGroupListItemProps, +) { + const from = summary(props.changeLog.fromSummary); + const to = summary(props.changeLog.toSummary); + const { t } = useTranslation("admin:data"); + const removedVersion = removedVersionFromSummary(from); + const restored = tableLabel(to, t("Untitled table")); + + return ( + } + iconClassName="bg-amber-50 text-amber-600" + > + + rolled back to {restored} + + {removedVersion != null ? ( + <> {t("(removed v{{version}})", { version: removedVersion })} + ) : null} + + ); +} diff --git a/packages/client/src/admin/changelogs/fieldGroups/dataTableSummary.ts b/packages/client/src/admin/changelogs/fieldGroups/dataTableSummary.ts new file mode 100644 index 000000000..c7083faaf --- /dev/null +++ b/packages/client/src/admin/changelogs/fieldGroups/dataTableSummary.ts @@ -0,0 +1,131 @@ +import { summary, Summary, valueText } from "./FieldGroupListItemBase"; + +export function tocItemIdFromMeta(meta: unknown): number | undefined { + if (!meta || typeof meta !== "object" || Array.isArray(meta)) { + return undefined; + } + const value = (meta as Record).table_of_contents_item_id; + if (typeof value === "number" && Number.isFinite(value)) { + return value; + } + if (typeof value === "string") { + const parsed = parseInt(value, 10); + return Number.isFinite(parsed) ? parsed : undefined; + } + return undefined; +} + +export function tableNameFromSummary(s: Summary): string { + return valueText(s.name); +} + +export function tableVersionFromSummary(s: Summary): number | undefined { + const version = s.version; + if (typeof version === "number" && Number.isFinite(version)) { + return version; + } + if (typeof version === "string") { + const parsed = parseInt(version, 10); + return Number.isFinite(parsed) ? parsed : undefined; + } + return undefined; +} + +export function tableLabel( + s: Summary, + fallback: string, + options?: { includeVersion?: boolean }, +): string { + const name = tableNameFromSummary(s) || fallback; + const version = tableVersionFromSummary(s); + if (options?.includeVersion === false || version == null) { + return name; + } + // eslint-disable-next-line i18next/no-literal-string -- version suffix formatted for display inside Trans/ChangeValue + return `${name} (v${version})`; +} + +export function tableLabelFromChangeLog( + fromSummary: unknown, + toSummary: unknown, + prefer: "from" | "to", + fallback: string, +): string { + const from = summary(fromSummary); + const to = summary(toSummary); + const s = prefer === "from" ? from : to; + return tableLabel(s, fallback); +} + +export function removedVersionFromSummary(s: Summary): number | undefined { + const removed = s.removed_version; + if (typeof removed === "number" && Number.isFinite(removed)) { + return removed; + } + if (typeof removed === "string") { + const parsed = parseInt(removed, 10); + return Number.isFinite(parsed) ? parsed : undefined; + } + return undefined; +} + +export function dataTableEventDescription( + fieldGroup: string, + fromSummary: unknown, + toSummary: unknown, + t: (key: string, opts?: Record) => string, +): string { + const from = summary(fromSummary); + const to = summary(toSummary); + const fallback = t("Untitled table"); + + switch (fieldGroup) { + case "DATA_TABLE_CREATED": + return t("Uploaded {{table}}", { + table: tableLabel(to, fallback), + }); + case "DATA_TABLE_REPLACED": { + const fromVersion = tableVersionFromSummary(from); + const toVersion = tableVersionFromSummary(to); + const name = tableNameFromSummary(to) || tableNameFromSummary(from) || fallback; + if (fromVersion != null && toVersion != null) { + return t("Replaced {{name}} v{{fromVersion}} → v{{toVersion}}", { + name, + fromVersion, + toVersion, + }); + } + return t("Replaced {{table}}", { table: tableLabel(to, fallback) }); + } + case "DATA_TABLE_RENAMED": { + const version = tableVersionFromSummary(to); + const fromName = tableNameFromSummary(from) || fallback; + const toName = tableNameFromSummary(to) || fallback; + if (version != null) { + return t("Renamed {{fromName}} → {{toName}} (v{{version}})", { + fromName, + toName, + version, + }); + } + return t("Renamed {{fromName}} → {{toName}}", { fromName, toName }); + } + case "DATA_TABLE_DELETED": + return t("Deleted {{table}}", { + table: tableLabel(from, fallback), + }); + case "DATA_TABLE_ROLLBACK": { + const removedVersion = removedVersionFromSummary(from); + const restored = tableLabel(to, fallback); + if (removedVersion != null) { + return t("Rolled back to {{restored}} (removed v{{removedVersion}})", { + restored, + removedVersion, + }); + } + return t("Rolled back to {{restored}}", { restored }); + } + default: + return t("Updated data table"); + } +} diff --git a/packages/client/src/admin/changelogs/fieldGroups/index.ts b/packages/client/src/admin/changelogs/fieldGroups/index.ts index d53732ebc..b0051918b 100644 --- a/packages/client/src/admin/changelogs/fieldGroups/index.ts +++ b/packages/client/src/admin/changelogs/fieldGroups/index.ts @@ -18,6 +18,11 @@ import LayerUploadedFieldGroupListItem from "./LayerUploadedFieldGroupListItem"; import LayersPublishedFieldGroupListItem from "./LayersPublishedFieldGroupListItem"; import LayersZOrderChangeFieldGroupListItem from "./LayersZOrderChangeFieldGroupListItem"; import ResolvableLayerCommentFieldGroupListItem from "./ResolvableLayerCommentFieldGroupListItem"; +import DataTableCreatedFieldGroupListItem from "./DataTableCreatedFieldGroupListItem"; +import DataTableDeletedFieldGroupListItem from "./DataTableDeletedFieldGroupListItem"; +import DataTableRenamedFieldGroupListItem from "./DataTableRenamedFieldGroupListItem"; +import DataTableReplacedFieldGroupListItem from "./DataTableReplacedFieldGroupListItem"; +import DataTableRollbackFieldGroupListItem from "./DataTableRollbackFieldGroupListItem"; export { GenericFieldGroupListItem }; @@ -50,4 +55,9 @@ export const FIELD_GROUP_LIST_ITEM_COMPONENTS: Partial< ResolvableLayerCommentFieldGroupListItem, [ChangeLogFieldGroup.ResolvableLayerCommentsReopened]: ResolvableLayerCommentFieldGroupListItem, + [ChangeLogFieldGroup.DataTableCreated]: DataTableCreatedFieldGroupListItem, + [ChangeLogFieldGroup.DataTableDeleted]: DataTableDeletedFieldGroupListItem, + [ChangeLogFieldGroup.DataTableRenamed]: DataTableRenamedFieldGroupListItem, + [ChangeLogFieldGroup.DataTableReplaced]: DataTableReplacedFieldGroupListItem, + [ChangeLogFieldGroup.DataTableRollback]: DataTableRollbackFieldGroupListItem, }; diff --git a/packages/client/src/admin/data/EnableDataTables.tsx b/packages/client/src/admin/data/EnableDataTables.tsx new file mode 100644 index 000000000..5c3e16e5d --- /dev/null +++ b/packages/client/src/admin/data/EnableDataTables.tsx @@ -0,0 +1,113 @@ +import { useState } from "react"; +import { Trans, useTranslation } from "react-i18next"; +import { + FullAdminOverlayFragment, + useUpdateDataTablesSettingsMutation, +} from "../../generated/graphql"; +import { GeostatsLayer } from "@seasketch/geostats-types"; +import Switch from "../../components/Switch"; +import { layerSettingsChangeLogRefetchQueries } from "../changelogs/layerSettingsChangeLogRefetch"; +import DataTableJoinColumnModal from "./overlayDataTables/DataTableJoinColumnModal"; + +export default function EnableDataTables({ + className, + item, + geostatsLayer, + aiBestIdColumnHint, +}: { + className?: string; + item: Pick< + FullAdminOverlayFragment, + "id" | "enableDataTables" | "dataTableJoinColumn" + >; + geostatsLayer: GeostatsLayer | undefined; + aiBestIdColumnHint?: string | null; +}) { + const { t } = useTranslation("admin:data"); + const [modalOpen, setModalOpen] = useState(false); + const [updateSettings, updateSettingsState] = + useUpdateDataTablesSettingsMutation(); + + const saveSettings = async ( + enableDataTables: boolean, + dataTableJoinColumn?: string | null + ) => { + await updateSettings({ + variables: { + id: item.id, + enableDataTables, + dataTableJoinColumn, + }, + refetchQueries: [...layerSettingsChangeLogRefetchQueries(item.id)], + }); + }; + + const onToggle = () => { + if (item.enableDataTables) { + saveSettings(false, item.dataTableJoinColumn); + return; + } + setModalOpen(true); + }; + + const openJoinColumnModal = () => setModalOpen(true); + + return ( + <> +
+
+
+
+
+ Enable Data Tables +
+

+ + Attach multidimensional data about features in this layer + using a shared ID column. Great for monitoring data. For + example, add annual species observations for survey sites. + +

+
+ +
+ + {item.enableDataTables && item.dataTableJoinColumn ? ( +
+ + {t("Overlay join column")} + + +
+ ) : null} +
+
+ + {modalOpen ? ( + setModalOpen(false)} + geostatsLayer={geostatsLayer} + aiBestIdColumnHint={aiBestIdColumnHint} + initialJoinColumn={item.dataTableJoinColumn} + saving={updateSettingsState.loading} + onSave={async (joinColumn) => { + await saveSettings(true, joinColumn); + setModalOpen(false); + }} + /> + ) : null} + + ); +} diff --git a/packages/client/src/admin/data/LayerTableOfContentsItemEditor.tsx b/packages/client/src/admin/data/LayerTableOfContentsItemEditor.tsx index d97ae3882..92214a63c 100644 --- a/packages/client/src/admin/data/LayerTableOfContentsItemEditor.tsx +++ b/packages/client/src/admin/data/LayerTableOfContentsItemEditor.tsx @@ -12,8 +12,8 @@ import InteractivitySettings from "./InteractivitySettings"; import { gql, useApolloClient } from "@apollo/client"; import useDebounce from "../../useDebounce"; import GLStyleEditor from "./GLStyleEditor/GLStyleEditor"; -import Tabs, { NonLinkTabItem } from "../../components/Tabs"; import { MapManagerContext } from "../../dataLayers/MapContextManager"; +import LayerEditorTabs from "./TableOfContentsItemEditor/LayerEditorTabs"; import { CaretRightIcon, ExclamationTriangleIcon } from "@radix-ui/react-icons"; import Skeleton from "../../components/Skeleton"; import FolderIcon from "../../components/FolderIcon"; @@ -22,6 +22,7 @@ import useDialog from "../../components/useDialog"; import LayerSettings from "./TableOfContentsItemEditor/LayerSettings"; import { XIcon } from "@heroicons/react/outline"; import LayerVersioning from "./TableOfContentsItemEditor/LayerVersioning"; +import DataTablesEditor from "./overlayDataTables/DataTablesEditor"; import { layerSettingsChangeLogRefetchQueries } from "../changelogs/layerSettingsChangeLogRefetch"; interface LayerTableOfContentsItemEditorProps { @@ -102,6 +103,8 @@ export default function LayerTableOfContentsItemEditor( }); const item = data?.tableOfContentsItem; + const [selectedTab, setSelectedTab] = useState("settings"); + const activeTab = selectedTab; useEffect(() => { if (item?.stableId && item.dataLayer && manager) { @@ -133,8 +136,6 @@ export default function LayerTableOfContentsItemEditor( // eslint-disable-next-line react-hooks/exhaustive-deps }, [debouncedStyle]); - const [selectedTab, setSelectedTab] = useState("settings"); - const geostats = (source?.geostats?.layers || []).find( (l: { layer: string }) => { if (!Boolean(layer?.sourceLayer)) { @@ -145,35 +146,52 @@ export default function LayerTableOfContentsItemEditor( } ); - const tabs: NonLinkTabItem[] = useMemo(() => { - return [ + const supportsDataTables = Boolean(geostats); + + const tabs = useMemo(() => { + const items: { + id: string; + name: string; + title?: string; + current: boolean; + }[] = [ { - name: "Settings", + name: t("Settings"), id: "settings", - current: selectedTab === "settings", + current: activeTab === "settings", }, { - name: "Data Source", + name: t("Source"), + title: t("Data Source"), id: "versions", - current: selectedTab === "versions", + current: activeTab === "versions", }, { - name: "Metadata", - id: "metadata", - current: selectedTab === "metadata", - }, - { - name: "Style", + name: t("Style"), id: "style", - current: selectedTab === "style", + current: activeTab === "style", }, { - name: "Interactivity", + name: t("Interact"), id: "interactivity", - current: selectedTab === "interactivity", + current: activeTab === "interactivity", + }, + { + name: t("Metadata"), + id: "metadata", + current: activeTab === "metadata", }, ]; - }, [selectedTab]); + if (supportsDataTables) { + items.push({ + name: t("Tables"), + title: t("Data Tables"), + id: "dataTables", + current: activeTab === "dataTables", + }); + } + return items; + }, [activeTab, supportsDataTables, t]); const isArcGISCustomSource = source?.type === DataSourceTypes.ArcgisDynamicMapserver || @@ -185,26 +203,26 @@ export default function LayerTableOfContentsItemEditor( className="bg-white z-30 absolute bottom-0 w-128 flex flex-col" style={{ height: "calc(100vh)" }} > -
-

- {error ? t("Error") : item?.title || props.title || t("Loading")} -

- -
- {item?.containedBy && item.containedBy.length > 0 && ( -
- +
+
+

+ {error ? t("Error") : item?.title || props.title || t("Loading")} +

+
- )} -
- setSelectedTab(id)} /> + {item?.containedBy && item.containedBy.length > 0 && ( +
+ +
+ )} +
{error && (
@@ -213,12 +231,13 @@ export default function LayerTableOfContentsItemEditor(
)} {!item && !error && } - {item && selectedTab === "settings" && } - {item && selectedTab === "versions" && } + {item && activeTab === "settings" && } + {item && activeTab === "dataTables" && } + {item && activeTab === "versions" && } {item && (
)} {item && - selectedTab === "interactivity" && + activeTab === "interactivity" && source && source.type === DataSourceTypes.Inaturalist && (
@@ -246,7 +265,7 @@ export default function LayerTableOfContentsItemEditor(
)} {item && - selectedTab === "interactivity" && + activeTab === "interactivity" && source && source.type !== DataSourceTypes.Inaturalist && (
@@ -305,7 +324,7 @@ export default function LayerTableOfContentsItemEditor(
)} - {item && selectedTab === "style" && ( + {item && activeTab === "style" && (
{source && source.type === DataSourceTypes.Inaturalist && (
diff --git a/packages/client/src/admin/data/PublishSummarizedChangesPanel.tsx b/packages/client/src/admin/data/PublishSummarizedChangesPanel.tsx index a30f5c3b9..76ec08943 100644 --- a/packages/client/src/admin/data/PublishSummarizedChangesPanel.tsx +++ b/packages/client/src/admin/data/PublishSummarizedChangesPanel.tsx @@ -114,6 +114,8 @@ function badgeLabel(key: PublishBadgeKey, t: (s: string) => string): string { return t("moved"); case "source": return t("source"); + case "dataTables": + return t("data tables"); case "folderBehavior": return t("folder behavior"); case "comments": diff --git a/packages/client/src/admin/data/PublishTableOfContentsModal.tsx b/packages/client/src/admin/data/PublishTableOfContentsModal.tsx index afc4537e0..8c6af2d1f 100644 --- a/packages/client/src/admin/data/PublishTableOfContentsModal.tsx +++ b/packages/client/src/admin/data/PublishTableOfContentsModal.tsx @@ -19,6 +19,7 @@ import { summary, valueText, } from "../changelogs/fieldGroups/FieldGroupListItemBase"; +import { tocItemIdFromMeta } from "../../changelogs/fieldGroups/dataTableSummary"; import useProjectId from "../../useProjectId"; import { CHANGE_LOG_INTRODUCTION_DATE } from "../changelogs/constants"; import PublishSummarizedChangesPanel from "./PublishSummarizedChangesPanel"; @@ -766,6 +767,15 @@ function titleForChangeLog( itemTitleById: Map, fallback: (key: string) => string ) { + if (changeLog.entityType === "overlay_data_table") { + const tocItemId = tocItemIdFromMeta(changeLog.meta); + if (tocItemId == null) { + return undefined; + } + const currentItem = itemTitleById.get(tocItemId); + return currentItem?.title ?? fallback("Unknown layer"); + } + if (changeLog.entityType !== "table_of_contents_items") { return undefined; } diff --git a/packages/client/src/admin/data/TableOfContentsItemEditor/LayerEditorTabs.tsx b/packages/client/src/admin/data/TableOfContentsItemEditor/LayerEditorTabs.tsx new file mode 100644 index 000000000..9745ae225 --- /dev/null +++ b/packages/client/src/admin/data/TableOfContentsItemEditor/LayerEditorTabs.tsx @@ -0,0 +1,47 @@ +import { useTranslation } from "react-i18next"; + +export type LayerEditorTab = { + id: string; + name: string; + title?: string; + current: boolean; +}; + +export default function LayerEditorTabs({ + tabs, + onSelect, +}: { + tabs: LayerEditorTab[]; + onSelect: (id: string) => void; +}) { + const { t } = useTranslation("admin"); + + return ( +
+ +
+ ); +} diff --git a/packages/client/src/admin/data/overlayDataTables/DataTableJoinColumnModal.tsx b/packages/client/src/admin/data/overlayDataTables/DataTableJoinColumnModal.tsx new file mode 100644 index 000000000..2a20d0d71 --- /dev/null +++ b/packages/client/src/admin/data/overlayDataTables/DataTableJoinColumnModal.tsx @@ -0,0 +1,314 @@ +import { useEffect, useMemo, useState } from "react"; +import { Trans, useTranslation, TFunction } from "react-i18next"; +import { QuestionMarkCircledIcon } from "@radix-ui/react-icons"; +import * as Tooltip from "@radix-ui/react-tooltip"; +import { GeostatsLayer } from "@seasketch/geostats-types"; +import Modal from "../../../components/Modal"; +import Warning from "../../../components/Warning"; +import { + OverlayJoinColumnOption, + partitionOverlayJoinColumnOptions, +} from "./overlayJoinColumnOptions"; + +export default function DataTableJoinColumnModal({ + open, + onClose, + geostatsLayer, + aiBestIdColumnHint, + initialJoinColumn, + onSave, + saving, +}: { + open: boolean; + onClose: () => void; + geostatsLayer: GeostatsLayer | undefined; + aiBestIdColumnHint?: string | null; + initialJoinColumn?: string | null; + onSave: (joinColumn: string) => void; + saving?: boolean; +}) { + const { t } = useTranslation("admin:data"); + const { suggested, other, featureCount } = useMemo( + () => partitionOverlayJoinColumnOptions(geostatsLayer, aiBestIdColumnHint), + [geostatsLayer, aiBestIdColumnHint] + ); + const validOptions = useMemo( + () => + [...suggested, ...other].filter((option) => option.status === "valid"), + [suggested, other] + ); + const [selected, setSelected] = useState(""); + + useEffect(() => { + if (!open) { + return; + } + const preferred = + initialJoinColumn && + validOptions.some((option) => option.attribute === initialJoinColumn) + ? initialJoinColumn + : validOptions[0]?.attribute || ""; + setSelected(preferred); + }, [open, initialJoinColumn, validOptions]); + + const hasAnyOptions = suggested.length + other.length > 0; + + return ( + selected && onSave(selected), + disabled: saving || !selected, + loading: saving, + }, + ]} + > + +

+ + Data tables you upload will need to be joined to spatial features in + this layer using a common ID column (e.g. site_id). When you upload + new tables, distinct values in all columns will be compared to this + column in order to determine how to join the two datasets. + +

+ + {!hasAnyOptions ? ( + + + No attribute statistics are available for this layer. Upload or + reprocess the source data so geostats can be computed before + enabling data tables. + + + ) : ( +
+ {suggested.length > 0 ? ( +
+

+ {t("Best columns")} +

+
+ {suggested.map((option) => ( + setSelected(option.attribute)} + /> + ))} +
+ {hasAnyOptions && validOptions.length === 0 ? ( + + + None of the suggested columns uniquely identify every + feature. Fix the source data in desktop GIS and re-upload + in order to enable data tables. + + + ) : null} +
+ ) : null} + + {other.length > 0 ? ( +
+

+ {t("Unsuitable columns")} +

+
+ {other.map((option) => ( + + ))} +
+
+ ) : null} +
+ )} +
+
+ ); +} + +function getJoinColumnReasonText( + option: OverlayJoinColumnOption, + t: TFunction<"admin:data"> +): string | null { + switch (option.reason) { + case "unsupported_type": + return t("Only text or numeric columns can be used as join keys."); + case "too_few_values": + return t("This column has too few distinct values to identify features."); + case "duplicate_values": + return t( + "{{distinct}} distinct values for {{features}} features. {{shared}} value(s) appear on multiple features, so rows cannot be linked unambiguously.", + { + distinct: option.distinctCount.toLocaleString(), + features: option.featureCount.toLocaleString(), + shared: option.duplicateValueNames ?? 0, + } + ); + case "not_unique": + return t( + "This column does not have exactly one value per feature in the layer." + ); + default: + return option.status === "valid" + ? t("Unique value for every feature.") + : null; + } +} + +function UnsuitableColumnRow({ option }: { option: OverlayJoinColumnOption }) { + const { t } = useTranslation("admin:data"); + const sampleText = option.sampleValues.join(", "); + const reasonText = getJoinColumnReasonText(option, t); + + return ( +
+ + {option.attribute} + + {sampleText ? ( + + {sampleText} + + ) : ( + + )} + + {t("{{distinct}} distinct values", { + distinct: option.distinctCount.toLocaleString(), + })} + + {reasonText ? ( + + + + + + + {reasonText} + + + + + ) : null} +
+ ); +} + +function JoinColumnOptionRow({ + option, + selected, + onSelect, +}: { + option: OverlayJoinColumnOption; + selected: boolean; + onSelect: () => void; +}) { + const { t } = useTranslation("admin:data"); + const disabled = option.status !== "valid"; + const sampleText = option.sampleValues.join(", "); + const reasonText = getJoinColumnReasonText(option, t); + + const rowClassName = disabled + ? "border-gray-200 bg-gray-50 cursor-not-allowed select-none" + : selected + ? "border-primary-500 bg-primary-50 cursor-pointer" + : "border-gray-200 bg-white hover:border-gray-300 cursor-pointer"; + + const body = ( +
+ +
+
+ + {option.attribute} + + + {t("{{distinct}} / {{features}} distinct", { + distinct: option.distinctCount.toLocaleString(), + features: option.featureCount.toLocaleString(), + })} + +
+ {sampleText ? ( +

+ {t("Examples: {{values}}", { values: sampleText })} +

+ ) : null} + {option.status === "valid" ? ( +

{reasonText}

+ ) : reasonText ? ( +

+ {reasonText} +

+ ) : null} +
+
+ ); + + if (disabled) { + return ( +
+ {body} +
+ ); + } + + return ( + + ); +} diff --git a/packages/client/src/admin/data/overlayDataTables/DataTableUploadJobProgress.tsx b/packages/client/src/admin/data/overlayDataTables/DataTableUploadJobProgress.tsx new file mode 100644 index 000000000..7b8843c20 --- /dev/null +++ b/packages/client/src/admin/data/overlayDataTables/DataTableUploadJobProgress.tsx @@ -0,0 +1,85 @@ +import { useTranslation } from "react-i18next"; +import { + JobDetailsFragment, + ProjectBackgroundJobState, +} from "../../../generated/graphql"; +import ProgressBar from "../../../components/ProgressBar"; +import Spinner from "../../../components/Spinner"; + +export default function DataTableUploadJobProgress({ + job, + onDismiss, +}: { + job: Pick< + JobDetailsFragment, + "state" | "progress" | "progressMessage" | "errorMessage" + >; + onDismiss?: () => void; +}) { + const { t } = useTranslation("admin:data"); + const failed = job.state === ProjectBackgroundJobState.Failed; + const active = + job.state === ProjectBackgroundJobState.Queued || + job.state === ProjectBackgroundJobState.Running; + const showBar = + active || job.state === ProjectBackgroundJobState.Complete; + + const progressLabel = failed + ? job.errorMessage || t("Upload failed") + : job.progressMessage === "uploading" + ? t("Uploading file…") + : job.progressMessage || t("Processing…"); + + if (failed) { + return ( +
+
+ {onDismiss ? ( + + ) : null} +
+
+          {progressLabel}
+        
+
+ ); + } + + return ( +
+ {showBar ? ( +
+ +
+ ) : null} +
+ {active ? : null} + {progressLabel} + {active && job.progressMessage === "uploading" ? ( + + {t("{{percent}}%", { + percent: Math.round((job.progress ?? 0) * 100), + })} + + ) : null} +
+
+ ); +} diff --git a/packages/client/src/admin/data/overlayDataTables/DataTableUploadModal.tsx b/packages/client/src/admin/data/overlayDataTables/DataTableUploadModal.tsx new file mode 100644 index 000000000..d7cc25e2a --- /dev/null +++ b/packages/client/src/admin/data/overlayDataTables/DataTableUploadModal.tsx @@ -0,0 +1,467 @@ +import { useCallback, useEffect, useRef, useState } from "react"; +import { createPortal } from "react-dom"; +import { Trans, useTranslation } from "react-i18next"; +import Papa from "papaparse"; +import { + ChevronDownIcon, + DocumentTextIcon, + RefreshIcon, + TableIcon, + UploadIcon, +} from "@heroicons/react/outline"; +import { CheckIcon } from "@radix-ui/react-icons"; +import * as DropdownMenu from "@radix-ui/react-dropdown-menu"; +import { GeostatsLayer } from "@seasketch/geostats-types"; +import Modal from "../../../components/Modal"; +import Spinner from "../../../components/Spinner"; +import Warning from "../../../components/Warning"; +import { + detectJoinColumnCandidates, + JoinColumnCandidate, + pickJoinColumn, +} from "./detectJoinColumn"; +import { DELIMITED_SAMPLE_BYTES } from "../../uploads/delimitedSpatial/detectDelimitedGeometry"; +import { DataTableUploadProcessingOptions } from "./types"; +import ProjectBackgroundJobManager from "../../uploads/ProjectBackgroundJobManager"; + +const CSV_ACCEPT = ".csv,.tsv,.txt"; + +function DataTableCsvJoinColumnPicker({ + joinColumn, + candidates, + overlayJoinColumn, + onSelect, + disabled, +}: { + joinColumn: string; + candidates: JoinColumnCandidate[]; + overlayJoinColumn: string; + onSelect: (csvColumn: string) => void; + disabled?: boolean; +}) { + const { t } = useTranslation("admin:data"); + const hasAlternatives = candidates.length > 1; + + return ( + + + + + + e.preventDefault()} + className="z-[60] min-w-[14rem] max-w-xs rounded-md border border-black/5 bg-white p-1 text-sm shadow-lg" + > + {candidates.map((candidate) => ( + onSelect(candidate.csvColumn)} + > + {candidate.csvColumn} + {candidate.csvColumn === joinColumn ? ( + + ) : null} + + ))} + {!hasAlternatives ? ( + <> + +

+ {t( + "No other columns in this file match the ID column chosen for this spatial layer.", + { overlayJoinColumn }, + )} +

+ + ) : null} +
+
+
+ ); +} + +function defaultName(filename: string) { + return filename.replace(/\.[^.]+$/, ""); +} + +type PreviewData = { + headers: string[]; + rows: string[][]; +}; + +export default function DataTableUploadModal({ + open, + onClose, + tableOfContentsItemId, + geostatsLayer, + canonicalOverlayJoinColumn, + replaceTableId, + onUploadStarted, + uploadOverlayDataTable, +}: { + open: boolean; + onClose: () => void; + tableOfContentsItemId: number; + geostatsLayer: GeostatsLayer | undefined; + canonicalOverlayJoinColumn: string; + replaceTableId?: number; + onUploadStarted: () => void; + uploadOverlayDataTable?: ProjectBackgroundJobManager["uploadOverlayDataTable"]; +}) { + const { t } = useTranslation("admin:data"); + const fileInputRef = useRef(null); + const [file, setFile] = useState(null); + const [preview, setPreview] = useState(null); + const [error, setError] = useState(null); + const [joinColumn, setJoinColumn] = useState(""); + const [overlayJoinColumn, setOverlayJoinColumn] = useState(""); + const [candidates, setCandidates] = useState([]); + const [analyzing, setAnalyzing] = useState(false); + const [startingUpload, setStartingUpload] = useState(false); + + const formatFileSize = useCallback( + (bytes: number) => { + if (bytes < 1024) { + return t("{{size}} B", { size: bytes }); + } + if (bytes < 1024 * 1024) { + return t("{{size}} KB", { size: (bytes / 1024).toFixed(1) }); + } + return t("{{size}} MB", { + size: (bytes / (1024 * 1024)).toFixed(1), + }); + }, + [t], + ); + + const resetForm = useCallback(() => { + setFile(null); + setPreview(null); + setError(null); + setJoinColumn(""); + setOverlayJoinColumn(""); + setCandidates([]); + setAnalyzing(false); + setStartingUpload(false); + }, []); + + useEffect(() => { + if (!open) { + resetForm(); + } + }, [open, resetForm]); + + const analyzeFile = useCallback( + async (selected: File) => { + setAnalyzing(true); + setError(null); + setPreview(null); + setJoinColumn(""); + setOverlayJoinColumn(""); + setCandidates([]); + try { + const chunk = selected.slice(0, DELIMITED_SAMPLE_BYTES); + const text = await chunk.text(); + const parsed = Papa.parse(text, { + header: false, + skipEmptyLines: true, + }); + const rows = (parsed.data as string[][]).filter((r) => r.length > 0); + if (rows.length < 2) { + setError(t("Could not parse CSV file")); + return; + } + const headers = rows[0].map((h) => h.trim()); + const dataRows = rows.slice(1, 6); + setPreview({ headers, rows: dataRows }); + const detected = detectJoinColumnCandidates( + headers, + rows.slice(1), + geostatsLayer, + canonicalOverlayJoinColumn, + ); + setCandidates(detected); + const picked = pickJoinColumn(detected); + if (!picked) { + setError( + t("Could not detect a join column matching the overlay layer"), + ); + return; + } + setJoinColumn(picked.joinColumn); + setOverlayJoinColumn(canonicalOverlayJoinColumn); + } finally { + setAnalyzing(false); + } + }, + [geostatsLayer, canonicalOverlayJoinColumn, t], + ); + + const onFileSelected = useCallback( + (selected: File | null) => { + setFile(selected); + if (selected) { + analyzeFile(selected); + } else { + setPreview(null); + setCandidates([]); + setJoinColumn(""); + setOverlayJoinColumn(""); + setError(null); + } + }, + [analyzeFile], + ); + + const onInputChange = useCallback( + (e: React.ChangeEvent) => { + const selected = e.target.files?.[0] ?? null; + onFileSelected(selected); + e.target.value = ""; + }, + [onFileSelected], + ); + + const openFilePicker = useCallback(() => { + fileInputRef.current?.click(); + }, []); + + const onSubmit = async () => { + if (!file || !joinColumn || !overlayJoinColumn || !uploadOverlayDataTable) { + return; + } + setStartingUpload(true); + setError(null); + try { + const processingOptions: DataTableUploadProcessingOptions = { + delimiter: ",", + hasHeaderRow: true, + joinColumn, + overlayJoinColumn, + name: defaultName(file.name), + }; + await uploadOverlayDataTable({ + tableOfContentsItemId, + file, + processingOptions, + replaceOverlayDataTableId: replaceTableId, + }); + onUploadStarted(); + onClose(); + } catch (e) { + setError((e as Error).message); + } finally { + setStartingUpload(false); + } + }; + + const title = replaceTableId + ? t("Replace Data Table") + : t("Upload Data Table"); + + return createPortal( + +
+ {replaceTableId ? ( +
+ + Upload a new CSV to replace the existing table. The previous + version will be kept in history and can be rolled back. + +
+ ) : null} + +
+
+ +
+

+ + Attach a CSV of observations or measurements to this map + layer. Rows are linked to overlay features using a shared ID + column, then stored as an optimized table for reports and + analysis. + +

+
    +
  • + + CSV, TSV, or tab-delimited text with a header row + +
  • +
  • + + One column must match an attribute on this layer + +
  • +
  • + + Processing converts the file to a fast columnar format + +
  • +
+
+
+
+ + + + {!file ? ( +
+ +

+ {t("Choose a CSV file")} +

+

+ {t(".csv, .tsv, or .txt with a header row")} +

+ +
+ ) : ( +
+
+ +
+

+ {file.name} +

+

+ {formatFileSize(file.size)} +

+
+ {analyzing ? ( + + ) : ( + + )} +
+ + {joinColumn && !analyzing ? ( +
+ { + setJoinColumn(csvColumn); + setOverlayJoinColumn(canonicalOverlayJoinColumn); + }} + /> +
+ ) : null} + + {preview && !analyzing ? ( +
+ + {t("Preview")} + +
+ + + + {preview.headers.map((header) => ( + + ))} + + + + {preview.rows.map((row, i) => ( + + {row.map((cell, j) => ( + + ))} + + ))} + +
+ {header} +
+ {cell} +
+
+
+ ) : null} +
+ )} + + {error ? {error} : null} +
+
, + document.body, + ); +} diff --git a/packages/client/src/admin/data/overlayDataTables/DataTablesEditor.tsx b/packages/client/src/admin/data/overlayDataTables/DataTablesEditor.tsx new file mode 100644 index 000000000..07650bf58 --- /dev/null +++ b/packages/client/src/admin/data/overlayDataTables/DataTablesEditor.tsx @@ -0,0 +1,57 @@ +import { useMemo } from "react"; +import { Trans, useTranslation } from "react-i18next"; +import { FullAdminOverlayFragment } from "../../../generated/graphql"; +import EnableDataTables from "../EnableDataTables"; +import RelatedDataTables from "./RelatedDataTables"; +import DataTablesChangeLogList from "../../changelogs/DataTablesChangeLogList"; + +export default function DataTablesEditor({ + item, +}: { + item: FullAdminOverlayFragment; +}) { + const { t } = useTranslation("admin:data"); + const layer = item.dataLayer; + const source = layer?.dataSource; + + const geostatsLayer = useMemo(() => { + const layers = source?.geostats?.layers || []; + if (!layer) { + return undefined; + } + return ( + layers.find((entry) => + layer.sourceLayer ? entry.layer === layer.sourceLayer : true + ) || layers[0] + ); + }, [layer, source?.geostats?.layers]); + + if (!layer || !geostatsLayer) { + return ( +
+
+ + Data tables are not available for this layer type. + +
+
+ ); + } + + return ( +
+ + {item.enableDataTables && item.dataTableJoinColumn ? ( + <> + + + + ) : null} +
+ ); +} diff --git a/packages/client/src/admin/data/overlayDataTables/RelatedDataTables.tsx b/packages/client/src/admin/data/overlayDataTables/RelatedDataTables.tsx new file mode 100644 index 000000000..1e2c204af --- /dev/null +++ b/packages/client/src/admin/data/overlayDataTables/RelatedDataTables.tsx @@ -0,0 +1,375 @@ +import { useCallback, useContext, useEffect, useMemo, useState } from "react"; +import { useApolloClient } from "@apollo/client"; +import { useTranslation } from "react-i18next"; +import { + FullAdminOverlayFragment, + OverlayDataTableDetailsFragment, + ProjectBackgroundJobState, + ProjectBackgroundJobType, + useGetLayerItemQuery, + useRenameOverlayDataTableMutation, + useRollbackOverlayDataTableVersionMutation, + useSoftDeleteOverlayDataTableMutation, +} from "../../../generated/graphql"; +import { GeostatsLayer } from "@seasketch/geostats-types"; +import { ProjectBackgroundJobContext } from "../../uploads/ProjectBackgroundJobContext"; +import { dataTableChangeLogRefetchQueries } from "../../changelogs/dataTableChangeLogRefetch"; +import DataTableUploadJobProgress from "./DataTableUploadJobProgress"; +import DataTableUploadModal from "./DataTableUploadModal"; + +type RelatedDataTablesProps = { + item: FullAdminOverlayFragment; +}; + +type DataTableJob = NonNullable< + FullAdminOverlayFragment["projectBackgroundJobs"] +>[number]; + +function isActiveDataTableJob(job: DataTableJob) { + return ( + job.type === ProjectBackgroundJobType.DataTableUpload && + (job.state === ProjectBackgroundJobState.Queued || + job.state === ProjectBackgroundJobState.Running || + job.state === ProjectBackgroundJobState.Failed) + ); +} + +function getJobForTable(tableId: number, jobs: DataTableJob[]) { + return jobs.find( + (job) => + isActiveDataTableJob(job) && + job.overlayDataTableUpload?.replaceOverlayDataTableId === tableId + ); +} + +function DataTableRow({ + table, + job, + onDismissJob, + onRename, + onDelete, + onReplace, + onRollback, +}: { + table: OverlayDataTableDetailsFragment; + job?: DataTableJob; + onDismissJob: (jobId: string) => void; + onRename: (id: number, name: string) => void; + onDelete: (id: number) => void; + onReplace: (id: number) => void; + onRollback: (id: number) => void; +}) { + const { t } = useTranslation("admin:data"); + const [editing, setEditing] = useState(false); + const [name, setName] = useState(table.name); + const isProcessing = Boolean(job); + + return ( +
  • +
    + {editing ? ( + setName(e.target.value)} + onBlur={() => { + setEditing(false); + if (name !== table.name) onRename(table.id, name); + }} + /> + ) : ( + + )} +
    + + +
    +
    + {job ? ( + onDismissJob(job.id) + : undefined + } + /> + ) : ( + <> +

    + {t("{{count}} rows · {{joinColumn}} → {{overlayJoinColumn}}", { + count: table.rowCount.toLocaleString(), + joinColumn: table.joinColumn, + overlayJoinColumn: table.overlayJoinColumn, + })} +

    + {table.parquetUrl ? ( + + {table.parquetUrl} + + ) : null} + + )} + {!job && table.version > 1 ? ( + + ) : null} +
  • + ); +} + +function PendingDataTableUploadRow({ + job, + onDismissJob, +}: { + job: DataTableJob; + onDismissJob: (jobId: string) => void; +}) { + const filename = + job.overlayDataTableUpload?.filename || + job.title + ?.replace(/^Replacement data table /, "") + .replace(/^Data table /, ""); + + return ( +
  • +

    {filename}

    + onDismissJob(job.id) + : undefined + } + /> +
  • + ); +} + +export default function RelatedDataTables({ item }: RelatedDataTablesProps) { + const { t } = useTranslation("admin:data"); + const [uploadOpen, setUploadOpen] = useState(false); + const [replaceId, setReplaceId] = useState(); + const { manager } = useContext(ProjectBackgroundJobContext); + const client = useApolloClient(); + + const { data, refetch } = useGetLayerItemQuery({ + variables: { id: item.id }, + fetchPolicy: "cache-and-network", + }); + + const layerItem = data?.tableOfContentsItem ?? item; + const tables = layerItem.overlayDataTables || []; + const layer = layerItem.dataLayer; + const source = layer?.dataSource; + const geostatsLayer: GeostatsLayer | undefined = useMemo(() => { + const layers = source?.geostats?.layers || []; + if (!layer) { + return undefined; + } + return ( + layers.find((entry) => + layer.sourceLayer ? entry.layer === layer.sourceLayer : true + ) || layers[0] + ); + }, [layer, source?.geostats?.layers]); + const overlayJoinColumn = layerItem.dataTableJoinColumn || ""; + + const changeLogRefetchQueries = useMemo( + () => [...dataTableChangeLogRefetchQueries(layerItem.id)], + [layerItem.id], + ); + + const refetchTablesAndHistory = useCallback(async () => { + await refetch(); + await client.refetchQueries({ + include: changeLogRefetchQueries as Parameters< + typeof client.refetchQueries + >[0]["include"], + }); + }, [refetch, client, changeLogRefetchQueries]); + + const [renameTable] = useRenameOverlayDataTableMutation({ + refetchQueries: changeLogRefetchQueries, + }); + const [deleteTable] = useSoftDeleteOverlayDataTableMutation({ + refetchQueries: changeLogRefetchQueries, + }); + const [rollbackTable] = useRollbackOverlayDataTableVersionMutation({ + refetchQueries: changeLogRefetchQueries, + }); + + const dataTableJobs = useMemo( + () => + (layerItem.projectBackgroundJobs || []).filter( + (job) => job.type === ProjectBackgroundJobType.DataTableUpload + ), + [layerItem.projectBackgroundJobs] + ); + + const activeDataTableJobs = useMemo( + () => dataTableJobs.filter(isActiveDataTableJob), + [dataTableJobs] + ); + + const pendingNewUploadJobs = useMemo( + () => + activeDataTableJobs.filter( + (job) => !job.overlayDataTableUpload?.replaceOverlayDataTableId + ), + [activeDataTableJobs] + ); + + const onUploadStarted = useCallback(() => { + void refetchTablesAndHistory(); + }, [refetchTablesAndHistory]); + + const onDismissJob = useCallback( + async (jobId: string) => { + if (manager) { + await manager.dismissFailedUpload(jobId); + await refetchTablesAndHistory(); + } + }, + [manager, refetchTablesAndHistory], + ); + + const hasActiveUploads = activeDataTableJobs.some( + (job) => job.state !== ProjectBackgroundJobState.Failed, + ); + + useEffect(() => { + if (!hasActiveUploads) { + return; + } + const intervalId = window.setInterval(() => { + void refetchTablesAndHistory(); + }, 3000); + return () => window.clearInterval(intervalId); + }, [hasActiveUploads, refetchTablesAndHistory]); + + const openUploadModal = useCallback(() => { + setReplaceId(undefined); + setUploadOpen(true); + }, []); + + return ( +
    +
    +
    +

    + {t("Related Data Tables")} +

    +

    + {t( + "Upload CSV tables linked to this layer by a shared ID column—for example species counts per site or survey results per polygon." + )} +

    +
    + +
    + {tables.length === 0 && pendingNewUploadJobs.length === 0 ? ( +
    +

    + {t("No data tables associated with this layer.")} +

    + +
    + ) : ( +
      + {pendingNewUploadJobs.map((job) => ( + + ))} + {tables.map((table) => ( + + renameTable({ variables: { id, name } }).then(() => + refetchTablesAndHistory(), + ) + } + onDelete={(id) => + deleteTable({ variables: { id } }).then(() => + refetchTablesAndHistory(), + ) + } + onReplace={(id) => { + setReplaceId(id); + setUploadOpen(true); + }} + onRollback={(id) => + rollbackTable({ variables: { id } }).then(() => + refetchTablesAndHistory(), + ) + } + /> + ))} +
    + )} + setUploadOpen(false)} + tableOfContentsItemId={layerItem.id} + geostatsLayer={geostatsLayer} + canonicalOverlayJoinColumn={overlayJoinColumn} + replaceTableId={replaceId} + onUploadStarted={onUploadStarted} + uploadOverlayDataTable={manager?.uploadOverlayDataTable.bind(manager)} + /> +
    + ); +} diff --git a/packages/client/src/admin/data/overlayDataTables/detectJoinColumn.test.ts b/packages/client/src/admin/data/overlayDataTables/detectJoinColumn.test.ts new file mode 100644 index 000000000..65056d9f4 --- /dev/null +++ b/packages/client/src/admin/data/overlayDataTables/detectJoinColumn.test.ts @@ -0,0 +1,213 @@ +import { describe, expect, it } from "@jest/globals"; +import { + detectJoinColumnCandidates, + isOverlayIdAttribute, + pickJoinColumn, +} from "./detectJoinColumn"; +import { GeostatsLayer } from "@seasketch/geostats-types"; + +const numericIdLayer: GeostatsLayer = { + layer: "sites", + count: 3, + geometry: "Point", + hasZ: false, + attributeCount: 1, + attributes: [ + { + attribute: "id", + type: "number", + count: 3, + countDistinct: 3, + values: { "1": 1, "2": 1, "3": 1 }, + }, + ], +}; + +const kelpSiteLayer: GeostatsLayer = { + layer: "site_points", + count: 3, + geometry: "Point", + hasZ: false, + attributeCount: 3, + attributes: [ + { + attribute: "site", + type: "string", + count: 3, + countDistinct: 3, + values: { HOPKINS_DC: 1, HOPKINS_UC: 1, ASILOMAR_DC: 1 }, + }, + { + attribute: "campus", + type: "string", + count: 3, + countDistinct: 1, + values: { UCSC: 3 }, + }, + { + attribute: "CA_MPA_Name_Short", + type: "string", + count: 3, + countDistinct: 2, + values: { "Lovers Point - Julia Platt SMR": 2, "Asilomar SMR": 1 }, + }, + ], +}; + +describe("isOverlayIdAttribute", () => { + it("requires one distinct value per feature", () => { + expect( + isOverlayIdAttribute(kelpSiteLayer.attributes[0], kelpSiteLayer.count), + ).toBe(true); + expect( + isOverlayIdAttribute(kelpSiteLayer.attributes[1], kelpSiteLayer.count), + ).toBe(false); + expect( + isOverlayIdAttribute(kelpSiteLayer.attributes[2], kelpSiteLayer.count), + ).toBe(false); + }); +}); + +describe("detectJoinColumn", () => { + it("finds site_id as join to numeric id", () => { + const candidates = detectJoinColumnCandidates( + ["site_id", "species", "count"], + [ + ["1", "bass", "99"], + ["2", "bass", "88"], + ], + numericIdLayer, + "id", + ); + expect(candidates).toEqual([ + { + csvColumn: "site_id", + overlayAttribute: "id", + score: 2, + }, + ]); + }); + + it("prefers the csv column with the most matching id values", () => { + const layer: GeostatsLayer = { + ...numericIdLayer, + count: 4, + attributes: [ + { + attribute: "id", + type: "number", + count: 4, + countDistinct: 4, + values: { "1": 1, "2": 1, "3": 1, "4": 1 }, + }, + ], + }; + const candidates = detectJoinColumnCandidates( + ["partial_id", "full_id", "species"], + [ + ["1", "1", "bass"], + ["2", "2", "bass"], + ["3", "3", "bass"], + ["", "4", "bass"], + ], + layer, + "id", + ); + expect(candidates[0]).toMatchObject({ + csvColumn: "full_id", + overlayAttribute: "id", + score: 4, + }); + expect(candidates[1]).toMatchObject({ + csvColumn: "partial_id", + overlayAttribute: "id", + score: 3, + }); + }); + + it("matches swath observations to overlay site ids only", () => { + const candidates = detectJoinColumnCandidates( + [ + "campus", + "method", + "survey_year", + "year", + "month", + "day", + "site", + "zone", + ], + [ + ["UCSC", "SBTL_SWATH_PISCO", "1999", "1999", "9", "7", "HOPKINS_DC", "INNER"], + ["UCSC", "SBTL_SWATH_PISCO", "1999", "1999", "9", "7", "HOPKINS_DC", "MID"], + ["UCSC", "SBTL_SWATH_PISCO", "1999", "1999", "9", "7", "HOPKINS_UC", "INNER"], + ], + kelpSiteLayer, + "site", + ); + expect(candidates).toEqual([ + { + csvColumn: "site", + overlayAttribute: "site", + score: 2, + }, + ]); + }); + + it("rejects csv columns with values missing from the overlay id set", () => { + const candidates = detectJoinColumnCandidates( + ["site", "site_name_old"], + [ + ["HOPKINS_DC", "UNKNOWN_SITE"], + ["HOPKINS_UC", "UNKNOWN_SITE"], + ["MYSTERY_SITE", "UNKNOWN_SITE"], + ], + kelpSiteLayer, + "site", + ); + expect(candidates).toEqual([]); + }); + + it("auto-picks when only one strong candidate", () => { + const candidates = detectJoinColumnCandidates( + ["site_id", "species"], + [["1", "bass"]], + numericIdLayer, + "id", + ); + const picked = pickJoinColumn(candidates); + expect(picked?.needsPrompt).toBe(false); + expect(picked?.joinColumn).toBe("site_id"); + }); + + it("prompts when multiple candidates tie for the top score", () => { + const layer: GeostatsLayer = { + layer: "sites", + count: 2, + geometry: "Point", + hasZ: false, + attributeCount: 2, + attributes: [ + { + attribute: "site_code", + type: "string", + count: 2, + countDistinct: 2, + values: { A: 1, B: 1 }, + }, + ], + }; + const candidates = detectJoinColumnCandidates( + ["site", "site_alias"], + [ + ["A", "A"], + ["B", "B"], + ], + layer, + "site_code", + ); + const picked = pickJoinColumn(candidates); + expect(candidates).toHaveLength(2); + expect(picked?.needsPrompt).toBe(true); + }); +}); diff --git a/packages/client/src/admin/data/overlayDataTables/detectJoinColumn.ts b/packages/client/src/admin/data/overlayDataTables/detectJoinColumn.ts new file mode 100644 index 000000000..031307c37 --- /dev/null +++ b/packages/client/src/admin/data/overlayDataTables/detectJoinColumn.ts @@ -0,0 +1,160 @@ +import { + GeostatsAttribute, + GeostatsAttributeType, + GeostatsLayer, +} from "@seasketch/geostats-types"; + +export type JoinColumnCandidate = { + csvColumn: string; + overlayAttribute: string; + /** Number of distinct CSV values that match the overlay ID column */ + score: number; +}; + +export function isOverlayIdAttribute( + attr: GeostatsAttribute, + featureCount: number, +): boolean { + if (featureCount <= 0) { + return false; + } + if (attr.type !== "string" && attr.type !== "number") { + return false; + } + const distinct = attr.countDistinct; + if (distinct !== featureCount) { + return false; + } + const valueEntries = Object.entries(attr.values || {}); + if (valueEntries.length === 0) { + return false; + } + if (valueEntries.length !== distinct) { + return false; + } + const total = valueEntries.reduce((sum, [, count]) => sum + count, 0); + if (total !== featureCount) { + return false; + } + return valueEntries.every(([, count]) => count === 1); +} + +function normalizeValue(value: string, type: GeostatsAttributeType): string { + const trimmed = value.trim(); + if (type === "number") { + const n = Number(trimmed); + if (!Number.isNaN(n)) { + return String(n); + } + } + return trimmed; +} + +function getColumnDistinctValues( + headers: string[], + rows: string[][], + columnName: string, +): Set { + const colIndex = headers.indexOf(columnName); + if (colIndex < 0) { + return new Set(); + } + const values = new Set(); + for (const row of rows) { + const raw = (row[colIndex] ?? "").trim(); + if (raw) { + values.add(raw); + } + } + return values; +} + +function typesCompatible( + csvValues: Set, + overlayAttr: GeostatsAttribute, +): boolean { + if (overlayAttr.type === "number") { + for (const v of csvValues) { + if (Number.isNaN(Number(v))) { + return false; + } + } + } + return true; +} + +function csvValuesSubsetOfOverlay( + csvValues: Set, + overlayAttr: GeostatsAttribute, +): boolean { + const overlayKeys = new Set(Object.keys(overlayAttr.values || {})); + if (overlayKeys.size === 0) { + return false; + } + for (const csvValue of csvValues) { + const normalized = normalizeValue(csvValue, overlayAttr.type); + if (!overlayKeys.has(normalized)) { + return false; + } + } + return true; +} + +export function detectJoinColumnCandidates( + headers: string[], + rows: string[][], + geostatsLayer: GeostatsLayer | undefined, + overlayJoinColumn: string, +): JoinColumnCandidate[] { + if ( + !geostatsLayer?.attributes?.length || + headers.length === 0 || + !overlayJoinColumn + ) { + return []; + } + + const overlayAttr = geostatsLayer.attributes.find( + (attr) => attr.attribute === overlayJoinColumn, + ); + if (!overlayAttr) { + return []; + } + + const candidates: JoinColumnCandidate[] = []; + + for (const header of headers) { + const csvValues = getColumnDistinctValues(headers, rows, header); + if (csvValues.size === 0) { + continue; + } + if (!typesCompatible(csvValues, overlayAttr)) { + continue; + } + if (!csvValuesSubsetOfOverlay(csvValues, overlayAttr)) { + continue; + } + candidates.push({ + csvColumn: header, + overlayAttribute: overlayJoinColumn, + score: csvValues.size, + }); + } + + return candidates.sort((a, b) => b.score - a.score); +} + +export function pickJoinColumn( + candidates: JoinColumnCandidate[], +): { joinColumn: string; overlayJoinColumn: string; needsPrompt: boolean } | null { + if (candidates.length === 0) { + return null; + } + const top = candidates[0]; + const tiedTop = candidates.filter((c) => c.score === top.score); + return { + joinColumn: top.csvColumn, + overlayJoinColumn: top.overlayAttribute, + needsPrompt: tiedTop.length > 1, + }; +} diff --git a/packages/client/src/admin/data/overlayDataTables/overlayJoinColumnOptions.test.ts b/packages/client/src/admin/data/overlayDataTables/overlayJoinColumnOptions.test.ts new file mode 100644 index 000000000..b28aee109 --- /dev/null +++ b/packages/client/src/admin/data/overlayDataTables/overlayJoinColumnOptions.test.ts @@ -0,0 +1,91 @@ +/* eslint-disable i18next/no-literal-string */ +import { describe, expect, it } from "@jest/globals"; +import { GeostatsLayer } from "@seasketch/geostats-types"; +import { partitionOverlayJoinColumnOptions } from "./overlayJoinColumnOptions"; + +const kelpSiteLayer: GeostatsLayer = { + layer: "site_points", + count: 401, + geometry: "Point", + hasZ: false, + attributeCount: 4, + attributes: [ + { + attribute: "site", + type: "string", + count: 401, + countDistinct: 396, + values: Object.fromEntries( + Array.from({ length: 396 }, (_, i) => [`SITE_${i}`, i < 391 ? 1 : 2]), + ), + }, + { + attribute: "CA_MPA_Name_Short", + type: "string", + count: 401, + countDistinct: 59, + values: Object.fromEntries( + Array.from({ length: 59 }, (_, i) => [`MPA_${i}`, Math.ceil(401 / 59)]), + ), + }, + { + attribute: "campus", + type: "string", + count: 401, + countDistinct: 1, + values: { UCSC: 401 }, + }, + { + attribute: "source_row_count", + type: "number", + count: 401, + countDistinct: 80, + values: Object.fromEntries( + Array.from({ length: 80 }, (_, i) => [String(i + 1), 5]), + ), + }, + ], +}; + +describe("partitionOverlayJoinColumnOptions", () => { + it("puts ai bestIdColumn first in suggested even when close", () => { + const { suggested, other } = partitionOverlayJoinColumnOptions( + kelpSiteLayer, + "site", + ); + expect(suggested[0]?.attribute).toBe("site"); + expect(suggested[0]?.hintSource).toBe("ai"); + expect(suggested[0]?.status).toBe("close"); + expect(other.map((option) => option.attribute)).not.toContain("site"); + }); + + it("uses cardinality heuristics when ai hint is unavailable", () => { + const { suggested, primaryHint } = partitionOverlayJoinColumnOptions( + kelpSiteLayer, + ); + expect(primaryHint).toBe("site"); + expect(suggested[0]?.attribute).toBe("site"); + expect(suggested[0]?.hintSource).toBe("computed"); + }); + + it("includes valid columns in suggested ahead of low-cardinality fields", () => { + const layer: GeostatsLayer = { + ...kelpSiteLayer, + count: 3, + attributes: [ + { + attribute: "site_id", + type: "string", + count: 3, + countDistinct: 3, + values: { A: 1, B: 1, C: 1 }, + }, + kelpSiteLayer.attributes[1], + ], + }; + const { suggested } = partitionOverlayJoinColumnOptions(layer); + expect(suggested.map((option) => option.attribute)).toContain("site_id"); + expect(suggested.find((option) => option.attribute === "site_id")?.status) + .toBe("valid"); + }); +}); diff --git a/packages/client/src/admin/data/overlayDataTables/overlayJoinColumnOptions.ts b/packages/client/src/admin/data/overlayDataTables/overlayJoinColumnOptions.ts new file mode 100644 index 000000000..4c0312649 --- /dev/null +++ b/packages/client/src/admin/data/overlayDataTables/overlayJoinColumnOptions.ts @@ -0,0 +1,265 @@ +import { + GeostatsAttribute, + GeostatsLayer, +} from "@seasketch/geostats-types"; +import { isOverlayIdAttribute } from "./detectJoinColumn"; + +export type OverlayJoinColumnOptionStatus = "valid" | "close" | "invalid"; + +export type OverlayJoinColumnOptionReason = + | "unsupported_type" + | "too_few_values" + | "duplicate_values" + | "not_unique"; + +export type OverlayJoinColumnHintSource = "ai" | "computed"; + +export type OverlayJoinColumnOption = { + attribute: string; + distinctCount: number; + featureCount: number; + sampleValues: string[]; + status: OverlayJoinColumnOptionStatus; + reason?: OverlayJoinColumnOptionReason; + duplicateValueNames?: number; + hintSource?: OverlayJoinColumnHintSource; + isPrimaryHint?: boolean; + rankScore: number; +}; + +export type OverlayJoinColumnSections = { + suggested: OverlayJoinColumnOption[]; + other: OverlayJoinColumnOption[]; + featureCount: number; + primaryHint?: string; +}; + +const CLOSE_SUGGESTED_RATIO = 0.9; + +function sampleAttributeValues(attr: GeostatsAttribute, limit = 12): string[] { + return Object.keys(attr.values || {}) + .sort((a, b) => a.localeCompare(b)) + .slice(0, limit); +} + +function duplicateValueCount(attr: GeostatsAttribute): number { + return Object.values(attr.values || {}).filter((count) => count > 1).length; +} + +function cardinalityRatio(distinctCount: number, featureCount: number): number { + if (featureCount <= 0) { + return 0; + } + return distinctCount / featureCount; +} + +function computeRankScore( + status: OverlayJoinColumnOptionStatus, + distinctCount: number, + featureCount: number, +): number { + const ratio = cardinalityRatio(distinctCount, featureCount); + if (status === "valid") { + return 10000 + distinctCount; + } + if (status === "close") { + return 5000 + ratio * 1000 + distinctCount * 0.01; + } + return ratio * 100 + distinctCount * 0.01; +} + +function analyzeAttribute( + attr: GeostatsAttribute, + featureCount: number, +): OverlayJoinColumnOption { + const distinctCount = + attr.countDistinct ?? Object.keys(attr.values || {}).length; + const sampleValues = sampleAttributeValues(attr); + + if (attr.type !== "string" && attr.type !== "number") { + return { + attribute: attr.attribute, + distinctCount, + featureCount, + sampleValues, + status: "invalid", + reason: "unsupported_type", + rankScore: computeRankScore("invalid", distinctCount, featureCount), + }; + } + + if (distinctCount <= 1) { + return { + attribute: attr.attribute, + distinctCount, + featureCount, + sampleValues, + status: "invalid", + reason: "too_few_values", + rankScore: computeRankScore("invalid", distinctCount, featureCount), + }; + } + + if (isOverlayIdAttribute(attr, featureCount)) { + return { + attribute: attr.attribute, + distinctCount, + featureCount, + sampleValues, + status: "valid", + rankScore: computeRankScore("valid", distinctCount, featureCount), + }; + } + + if (distinctCount < featureCount) { + const duplicateValueNames = duplicateValueCount(attr); + return { + attribute: attr.attribute, + distinctCount, + featureCount, + sampleValues, + status: "close", + reason: "duplicate_values", + duplicateValueNames, + rankScore: computeRankScore("close", distinctCount, featureCount), + }; + } + + return { + attribute: attr.attribute, + distinctCount, + featureCount, + sampleValues, + status: "invalid", + reason: "not_unique", + rankScore: computeRankScore("invalid", distinctCount, featureCount), + }; +} + +function normalizeHint(hint?: string | null): string | undefined { + const trimmed = hint?.trim(); + return trimmed ? trimmed : undefined; +} + +function findMatchingOption( + options: OverlayJoinColumnOption[], + hint?: string, +): OverlayJoinColumnOption | undefined { + if (!hint) { + return undefined; + } + const normalized = hint.toLowerCase(); + return options.find( + (option) => option.attribute.toLowerCase() === normalized, + ); +} + +function isHighlyRankedCandidate(option: OverlayJoinColumnOption): boolean { + if (option.status === "valid") { + return true; + } + if (option.status === "close") { + return ( + cardinalityRatio(option.distinctCount, option.featureCount) >= + CLOSE_SUGGESTED_RATIO + ); + } + return false; +} + +export function getOverlayJoinColumnOptions( + geostatsLayer: GeostatsLayer | undefined, +): OverlayJoinColumnOption[] { + if (!geostatsLayer?.attributes?.length) { + return []; + } + + const featureCount = geostatsLayer.count; + return geostatsLayer.attributes + .map((attr) => analyzeAttribute(attr, featureCount)) + .sort((a, b) => b.rankScore - a.rankScore); +} + +export function partitionOverlayJoinColumnOptions( + geostatsLayer: GeostatsLayer | undefined, + aiBestIdColumnHint?: string | null, +): OverlayJoinColumnSections { + const options = getOverlayJoinColumnOptions(geostatsLayer); + const featureCount = geostatsLayer?.count ?? 0; + + if (options.length === 0) { + return { suggested: [], other: [], featureCount }; + } + + const aiHint = normalizeHint(aiBestIdColumnHint); + const aiMatch = findMatchingOption(options, aiHint); + const computedBest = + aiMatch || + [...options].sort((a, b) => b.rankScore - a.rankScore)[0]; + const primaryHint = aiMatch?.attribute ?? computedBest?.attribute; + + const annotated = options.map((option) => { + const isPrimaryHint = option.attribute === primaryHint; + let hintSource: OverlayJoinColumnHintSource | undefined; + if (isPrimaryHint) { + hintSource = aiMatch ? "ai" : "computed"; + } + return { + ...option, + isPrimaryHint, + hintSource, + }; + }); + + const suggestedAttributes = new Set(); + const suggested: OverlayJoinColumnOption[] = []; + + const pushSuggested = (option: OverlayJoinColumnOption | undefined) => { + if (!option || suggestedAttributes.has(option.attribute)) { + return; + } + suggestedAttributes.add(option.attribute); + suggested.push(option); + }; + + if (primaryHint) { + pushSuggested(annotated.find((option) => option.attribute === primaryHint)); + } + + for (const option of annotated) { + if (option.status === "valid") { + pushSuggested(option); + } + } + + for (const option of annotated) { + if (isHighlyRankedCandidate(option)) { + pushSuggested(option); + } + } + + const other = annotated + .filter((option) => !suggestedAttributes.has(option.attribute)) + .sort((a, b) => b.rankScore - a.rankScore); + + return { + suggested, + other, + featureCount, + primaryHint, + }; +} + +export function typesCompatibleWithOverlayAttribute( + csvValues: Set, + type: "string" | "number" | GeostatsAttribute["type"], +): boolean { + if (type === "number") { + for (const value of csvValues) { + if (Number.isNaN(Number(value))) { + return false; + } + } + } + return true; +} diff --git a/packages/client/src/admin/data/overlayDataTables/types.ts b/packages/client/src/admin/data/overlayDataTables/types.ts new file mode 100644 index 000000000..3d43a32f0 --- /dev/null +++ b/packages/client/src/admin/data/overlayDataTables/types.ts @@ -0,0 +1,7 @@ +export type DataTableUploadProcessingOptions = { + delimiter: string; + hasHeaderRow: boolean; + joinColumn: string; + overlayJoinColumn: string; + name: string; +}; diff --git a/packages/client/src/admin/data/publishBadgeDetails/PublishBadgeDetailContent.tsx b/packages/client/src/admin/data/publishBadgeDetails/PublishBadgeDetailContent.tsx index a38c8cdec..a0a037d23 100644 --- a/packages/client/src/admin/data/publishBadgeDetails/PublishBadgeDetailContent.tsx +++ b/packages/client/src/admin/data/publishBadgeDetails/PublishBadgeDetailContent.tsx @@ -35,6 +35,7 @@ import { Summary, valueText, } from "../../changelogs/fieldGroups/FieldGroupListItemBase"; +import { dataTableEventDescription } from "../../changelogs/fieldGroups/dataTableSummary"; import { formatTimeAgo } from "../../changelogs/ChangeLogTimelineItem"; import { ResolvableCommentBody } from "../TableOfContentsItemEditor/ResolvableCommentEditor"; import { oldestChangeLogId, PublishBadgeKey } from "../publishChangelogSummary"; @@ -418,6 +419,37 @@ function CommentPreviewItem({ ); } +function DataTableActivityDetails({ + logs, + t, +}: { + logs: ChangeLogDetailsFragment[]; + t: TFunction; +}) { + const sorted = [...logs].sort( + (a, b) => new Date(b.lastAt).getTime() - new Date(a.lastAt).getTime(), + ); + return ( +
      + {sorted.map((log) => { + const date = new Date(log.lastAt); + return ( +
    • +

      {dataTableEventDescription(log.fieldGroup, log.fromSummary, log.toSummary, t)}

      + +
    • + ); + })} +
    + ); +} + export default function PublishBadgeDetailContent( props: PublishBadgeDetailContentProps ) { @@ -524,6 +556,10 @@ export default function PublishBadgeDetailContent( ); break; } + case "dataTables": { + main = ; + break; + } case "metadata": { main = (

    diff --git a/packages/client/src/admin/data/publishBadgeDetails/presentation.ts b/packages/client/src/admin/data/publishBadgeDetails/presentation.ts index 35fa0d42d..7ac2a3a93 100644 --- a/packages/client/src/admin/data/publishBadgeDetails/presentation.ts +++ b/packages/client/src/admin/data/publishBadgeDetails/presentation.ts @@ -11,6 +11,8 @@ export function badgePopoverContentClassName(badgeKey: PublishBadgeKey): string return "max-w-xs"; case "comments": return "w-[30rem] max-w-[min(calc(100vw-1rem),30rem)]"; + case "dataTables": + return "max-w-md"; default: return "max-w-sm"; } diff --git a/packages/client/src/admin/data/publishChangelogSummary.ts b/packages/client/src/admin/data/publishChangelogSummary.ts index 560b09945..cf32e97ac 100644 --- a/packages/client/src/admin/data/publishChangelogSummary.ts +++ b/packages/client/src/admin/data/publishChangelogSummary.ts @@ -5,8 +5,10 @@ import { ChangeLogsSinceLastPublishQuery, } from "../../generated/graphql"; import { summary } from "../changelogs/fieldGroups/FieldGroupListItemBase"; +import { tocItemIdFromMeta } from "../changelogs/fieldGroups/dataTableSummary"; export const TOC_ENTITY_TYPE = "table_of_contents_items"; +export const DATA_TABLE_ENTITY_TYPE = "overlay_data_table"; export type PublishBadgeKey = | "title" @@ -18,6 +20,7 @@ export type PublishBadgeKey = | "interactivity" | "moved" | "source" + | "dataTables" | "folderBehavior" | "comments"; @@ -30,6 +33,7 @@ export const PUBLISH_BADGE_ORDER: PublishBadgeKey[] = [ "metadata", "cartography", "downloads", + "dataTables", "interactivity", "comments", "moved", @@ -50,6 +54,11 @@ const FIELD_GROUP_TO_BADGE: Partial< [ChangeLogFieldGroup.LayerInteractivity]: "interactivity", [ChangeLogFieldGroup.LayerParentChanged]: "moved", [ChangeLogFieldGroup.LayerUploaded]: "source", + [ChangeLogFieldGroup.DataTableCreated]: "dataTables", + [ChangeLogFieldGroup.DataTableDeleted]: "dataTables", + [ChangeLogFieldGroup.DataTableRenamed]: "dataTables", + [ChangeLogFieldGroup.DataTableReplaced]: "dataTables", + [ChangeLogFieldGroup.DataTableRollback]: "dataTables", [ChangeLogFieldGroup.FolderType]: "folderBehavior", [ChangeLogFieldGroup.ResolvableLayerCommentsCreated]: "comments", [ChangeLogFieldGroup.ResolvableLayerCommentsResponded]: "comments", @@ -295,6 +304,19 @@ export function buildPublishChangeSummary({ byEntity.set(log.entityId, list); } + const dataTableLogs = changeLogs.filter( + (l) => l.entityType === DATA_TABLE_ENTITY_TYPE, + ); + for (const log of dataTableLogs) { + const tocItemId = tocItemIdFromMeta(log.meta); + if (tocItemId == null) { + continue; + } + const list = byEntity.get(tocItemId) ?? []; + list.push(log); + byEntity.set(tocItemId, list); + } + const draftById = new Map(draftItems.map((i) => [i.id, i])); const added: PublishSummaryRow[] = []; diff --git a/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx b/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx index 97a9457ae..d900b120c 100644 --- a/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx +++ b/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx @@ -319,6 +319,14 @@ export default function DataUploadDropzone({ }); } ); + manager.on( + "data-table-upload-complete", + (event: { jobId: string; tableOfContentsItemId: number }) => { + client.refetchQueries({ + include: [GetLayerItemDocument, DraftTableOfContentsDocument], + }); + } + ); manager.on("upload-error", (event: DataUploadErrorEvent) => { if (dismissTimerRef.current) { clearTimeout(dismissTimerRef.current); diff --git a/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts b/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts index 9c4fde5c6..446511dbb 100644 --- a/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts +++ b/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts @@ -6,6 +6,8 @@ import { CancelUploadMutation, CreateDataUploadDocument, CreateDataUploadMutation, + CreateOverlayDataTableUploadDocument, + CreateOverlayDataTableUploadMutation, DismissFailedJobDocument, DismissFailedJobInput, JobDetailsFragment, @@ -19,9 +21,12 @@ import { ProjectBackgroundJobsQuery, SubmitDataUploadDocument, SubmitDataUploadMutation, + SubmitOverlayDataTableUploadDocument, + SubmitOverlayDataTableUploadMutation, } from "../../generated/graphql"; import axios from "axios"; import { DelimitedUploadProcessingOptions } from "./delimitedSpatial/types"; +import { DataTableUploadProcessingOptions } from "../data/overlayDataTables/types"; export interface DataUploadProcessingCompleteEvent { jobId: string; @@ -103,6 +108,11 @@ export default class ProjectBackgroundJobManager extends EventEmitter<{ * fired for all uploads, not just those from the current session. */ "upload-processing-complete": DataUploadProcessingCompleteEvent; + "data-table-upload-complete": { jobId: string; tableOfContentsItemId: number }; + "data-table-upload-started": { + jobId: string; + tableOfContentsItemId: number; + }; "feature-layer-conversion-complete": FeatureLayerConversionCompleteEvent; "file-uploaded": { uploadTaskId: string; jobId: string }; "upload-submitted": UploadSubmittedEvent; @@ -415,6 +425,179 @@ export default class ProjectBackgroundJobManager extends EventEmitter<{ } } + addJobToTableOfContentsItemCache( + tocItemId: number, + job: JobDetailsFragment, + ) { + try { + this.client.cache.updateFragment( + { + // eslint-disable-next-line i18next/no-literal-string + id: `TableOfContentsItem:${tocItemId}`, + // eslint-disable-next-line i18next/no-literal-string + fragment: gql` + fragment UpdateTocItemDataTableJobs on TableOfContentsItem { + id + projectBackgroundJobs { + id + type + title + state + progress + progressMessage + errorMessage + overlayDataTableUpload { + id + tableOfContentsItemId + filename + replaceOverlayDataTableId + } + } + } + `, + }, + (data) => { + if (!data) { + return data; + } + const existing = data.projectBackgroundJobs || []; + return { + ...data, + projectBackgroundJobs: [ + ...existing.filter((entry) => entry.id !== job.id), + job, + ], + }; + }, + ); + } catch (e) { + console.error(e); + } + } + + private updateDataTableUploadProgress(jobId: string, progress: number) { + this.client.cache.writeFragment({ + // eslint-disable-next-line i18next/no-literal-string + id: `ProjectBackgroundJob:${jobId}`, + fragment: gql` + fragment DataTableUploadProgress on ProjectBackgroundJob { + progress + progressMessage + } + `, + data: { + progress, + progressMessage: "uploading", + }, + }); + } + + private async runDataTableFileUpload( + jobId: string, + presignedUrl: string, + file: File, + ) { + const signal = this.abortControllers[jobId]?.signal; + const response = await axios({ + url: presignedUrl, + method: "PUT", + data: file, + signal, + headers: { + "Content-Type": file.type || "text/csv", + }, + onUploadProgress: (progressEvent) => { + if (!signal?.aborted && progressEvent.total) { + this.updateDataTableUploadProgress( + jobId, + progressEvent.loaded / progressEvent.total, + ); + } + }, + }); + if (response.status !== 200) { + throw new Error("Non-200 response code"); + } + this.updateDataTableUploadProgress(jobId, 1); + await this.client.mutate({ + mutation: SubmitOverlayDataTableUploadDocument, + variables: { jobId }, + }); + this.client.cache.writeFragment({ + // eslint-disable-next-line i18next/no-literal-string + id: `ProjectBackgroundJob:${jobId}`, + fragment: gql` + fragment DataTableProcessingStart on ProjectBackgroundJob { + progress + progressMessage + } + `, + data: { + progress: 0, + progressMessage: "processing", + }, + }); + delete this.abortControllers[jobId]; + } + + async uploadOverlayDataTable({ + tableOfContentsItemId, + file, + processingOptions, + replaceOverlayDataTableId, + }: { + tableOfContentsItemId: number; + file: File; + processingOptions: DataTableUploadProcessingOptions; + replaceOverlayDataTableId?: number; + }) { + const upload = await this.client.mutate( + { + mutation: CreateOverlayDataTableUploadDocument, + variables: { + tableOfContentsItemId, + filename: file.name, + contentType: file.type || "text/csv", + replaceOverlayDataTableId, + processingOptions, + }, + }, + ); + if (upload.errors || !upload.data?.createOverlayDataTableUpload) { + throw new Error(upload.errors?.toString() || "Upload could not be created"); + } + const payload = upload.data.createOverlayDataTableUpload; + const overlayUpload = payload.overlayDataTableUpload; + const job = payload.projectBackgroundJob; + const presignedUrl = overlayUpload?.presignedUploadUrl; + const jobId = job?.id ?? overlayUpload?.projectBackgroundJobId; + if (!presignedUrl || !jobId || !job) { + throw new Error("Upload could not be created"); + } + + this.addJobToQueryCache(job); + this.addJobToTableOfContentsItemCache(tableOfContentsItemId, job); + this.sessionUploadJobIds.push(jobId); + this.activeJobs.add(jobId); + this.abortControllers[jobId] = new AbortController(); + this.emit("data-table-upload-started", { + jobId, + tableOfContentsItemId, + }); + + void this.runDataTableFileUpload(jobId, presignedUrl, file).catch((e) => { + const message = e instanceof Error ? e.message : String(e); + delete this.abortControllers[jobId]; + this.emit("upload-error", { + error: message, + isQuotaError: /quota exceeded/i.test(message), + jobId, + }); + }); + + return { jobId }; + } + isUploadFromMySession(taskId: string) { return this.sessionUploadJobIds.includes(taskId); } @@ -469,6 +652,21 @@ export default class ProjectBackgroundJobManager extends EventEmitter<{ ?.stableId, }); } + const dataTableUpload = event.job.overlayDataTableUpload; + if ( + dataTableUpload && + event.job.type === ProjectBackgroundJobType.DataTableUpload && + !this.completedTasks.has(event.job.id) && + event.previousState && + event.previousState !== ProjectBackgroundJobState.Complete && + event.job.state === ProjectBackgroundJobState.Complete + ) { + this.completedTasks.add(event.job.id); + this.emit("data-table-upload-complete", { + jobId: event.job.id, + tableOfContentsItemId: dataTableUpload.tableOfContentsItemId, + }); + } } /** @@ -512,13 +710,19 @@ export default class ProjectBackgroundJobManager extends EventEmitter<{ id } } + overlayDataTableUpload { + tableOfContentsItemId + } } `, }); const tocId = // @ts-ignore - cachedItem?.esriFeatureLayerConversionTask?.tableOfContentsItem?.id; - this.client.cache.updateFragment( + cachedItem?.esriFeatureLayerConversionTask?.tableOfContentsItem?.id ?? + // @ts-ignore + cachedItem?.overlayDataTableUpload?.tableOfContentsItemId; + if (tocId) { + this.client.cache.updateFragment( { // eslint-disable-next-line i18next/no-literal-string id: `TableOfContentsItem:${tocId}`, @@ -545,8 +749,9 @@ export default class ProjectBackgroundJobManager extends EventEmitter<{ } else { return data; } - } + }, ); + } // Remove from job list query this.client.cache.updateQuery( { diff --git a/packages/client/src/generated/graphql.ts b/packages/client/src/generated/graphql.ts index c365d9c63..221a8ca21 100644 --- a/packages/client/src/generated/graphql.ts +++ b/packages/client/src/generated/graphql.ts @@ -956,6 +956,11 @@ export type ChangeLogCondition = { }; export enum ChangeLogFieldGroup { + DataTableCreated = 'DATA_TABLE_CREATED', + DataTableDeleted = 'DATA_TABLE_DELETED', + DataTableRenamed = 'DATA_TABLE_RENAMED', + DataTableReplaced = 'DATA_TABLE_REPLACED', + DataTableRollback = 'DATA_TABLE_ROLLBACK', FolderAcl = 'FOLDER_ACL', FolderCreated = 'FOLDER_CREATED', FolderDeleted = 'FOLDER_DELETED', @@ -2029,6 +2034,43 @@ export type CreateOriginalSourceIdPayloadOriginalSourceIdEdgeArgs = { orderBy?: Maybe>; }; +/** All input for the `createOverlayDataTableUpload` mutation. */ +export type CreateOverlayDataTableUploadInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: Maybe; + contentType?: Maybe; + filename?: Maybe; + processingOptions?: Maybe; + replaceOverlayDataTableId?: Maybe; + tocItemId?: Maybe; +}; + +/** The output of our `createOverlayDataTableUpload` mutation. */ +export type CreateOverlayDataTableUploadPayload = { + __typename?: 'CreateOverlayDataTableUploadPayload'; + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe; + overlayDataTableUpload?: Maybe; + /** An edge for our `OverlayDataTableUpload`. May be used by Relay 1. */ + overlayDataTableUploadEdge?: Maybe; + /** Reads a single `ProjectBackgroundJob` that is related to this `OverlayDataTableUpload`. */ + projectBackgroundJob?: Maybe; + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe; +}; + + +/** The output of our `createOverlayDataTableUpload` mutation. */ +export type CreateOverlayDataTableUploadPayloadOverlayDataTableUploadEdgeArgs = { + orderBy?: Maybe>; +}; + export type CreateProjectGeographyClippingLayerInput = { /** * If provided, features used for clipping will be filtered based on this @@ -7991,6 +8033,7 @@ export type Mutation = { createOptionalBasemapLayer?: Maybe; /** Creates a single `OriginalSourceId`. */ createOriginalSourceId?: Maybe; + createOverlayDataTableUpload?: Maybe; createPost: Post; /** * Users with verified emails can create new projects by choosing a unique name @@ -8274,6 +8317,7 @@ export type Mutation = { removeUserFromGroup?: Maybe; /** Remove a SketchClass from the list of valid children for a Collection. */ removeValidChildSketchClass?: Maybe; + renameOverlayDataTable?: Maybe; renameReportTab?: Maybe; reopenResolvableLayerComment?: Maybe; reorderReportTabCards?: Maybe; @@ -8293,6 +8337,7 @@ export type Mutation = { /** Remove participant admin privileges. */ revokeAdminAccess?: Maybe; revokeApiKey?: Maybe; + rollbackOverlayDataTableVersion?: Maybe; rollbackToArchivedSource?: Maybe; /** Send all UNSENT invites in the current project. */ sendAllProjectInvites?: Maybe; @@ -8352,9 +8397,11 @@ export type Mutation = { setUserGroups?: Maybe; /** Superusers only. Promote a sprite to be globally available. */ shareSprite?: Maybe; + softDeleteOverlayDataTable?: Maybe; /** Superusers only. "Deletes" a sprite but keeps it in the DB in case layers are already referencing it. */ softDeleteSprite?: Maybe; submitDataUpload?: Maybe; + submitOverlayDataTableUpload?: Maybe; /** * Toggle admin access for the given project and user. User must have already * joined the project and shared their user profile. @@ -8829,6 +8876,12 @@ export type MutationCreateOriginalSourceIdArgs = { }; +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationCreateOverlayDataTableUploadArgs = { + input: CreateOverlayDataTableUploadInput; +}; + + /** The root mutation type which contains root level fields which mutate data. */ export type MutationCreatePostArgs = { message: Scalars['JSON']; @@ -9606,6 +9659,12 @@ export type MutationRemoveValidChildSketchClassArgs = { }; +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationRenameOverlayDataTableArgs = { + input: RenameOverlayDataTableInput; +}; + + /** The root mutation type which contains root level fields which mutate data. */ export type MutationRenameReportTabArgs = { input: RenameReportTabInput; @@ -9679,6 +9738,12 @@ export type MutationRevokeApiKeyArgs = { }; +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationRollbackOverlayDataTableVersionArgs = { + input: RollbackOverlayDataTableVersionInput; +}; + + /** The root mutation type which contains root level fields which mutate data. */ export type MutationRollbackToArchivedSourceArgs = { input: RollbackToArchivedSourceInput; @@ -9805,6 +9870,12 @@ export type MutationShareSpriteArgs = { }; +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationSoftDeleteOverlayDataTableArgs = { + input: SoftDeleteOverlayDataTableInput; +}; + + /** The root mutation type which contains root level fields which mutate data. */ export type MutationSoftDeleteSpriteArgs = { input: SoftDeleteSpriteInput; @@ -9817,6 +9888,12 @@ export type MutationSubmitDataUploadArgs = { }; +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationSubmitOverlayDataTableUploadArgs = { + input: SubmitOverlayDataTableUploadInput; +}; + + /** The root mutation type which contains root level fields which mutate data. */ export type MutationToggleAdminAccessArgs = { input: ToggleAdminAccessInput; @@ -10710,6 +10787,140 @@ export type OutstandingSurveyInvites = { token: Scalars['String']; }; +export type OverlayDataTable = Node & { + __typename?: 'OverlayDataTable'; + columnStatsRemote: Scalars['String']; + columnStatsUrl?: Maybe; + createdAt?: Maybe; + createdBy: Scalars['Int']; + deletedAt?: Maybe; + id: Scalars['Int']; + joinColumn: Scalars['String']; + name: Scalars['String']; + /** A globally unique identifier. Can be used in various places throughout the system to identify this single value. */ + nodeId: Scalars['ID']; + overlayJoinColumn: Scalars['String']; + parquetRemote: Scalars['String']; + parquetUrl?: Maybe; + /** Reads a single `Project` that is related to this `OverlayDataTable`. */ + project?: Maybe; + projectId: Scalars['Int']; + replacedById?: Maybe; + rowCount: Scalars['Int']; + tableOfContentsItemId: Scalars['Int']; + updatedAt?: Maybe; + version: Scalars['Int']; +}; + +/** + * A condition to be used against `OverlayDataTable` object types. All fields are + * tested for equality and combined with a logical ‘and.’ + */ +export type OverlayDataTableCondition = { + /** Checks for equality with the object’s `id` field. */ + id?: Maybe; + /** Checks for equality with the object’s `projectId` field. */ + projectId?: Maybe; +}; + +export type OverlayDataTableUpload = Node & { + __typename?: 'OverlayDataTableUpload'; + contentType: Scalars['String']; + createdAt?: Maybe; + errorDetails?: Maybe; + filename: Scalars['String']; + id: Scalars['UUID']; + /** A globally unique identifier. Can be used in various places throughout the system to identify this single value. */ + nodeId: Scalars['ID']; + overlayGeostats: Scalars['JSON']; + overlayJoinColumn?: Maybe; + presignedUploadUrl?: Maybe; + processingOptions: Scalars['JSON']; + /** Reads a single `ProjectBackgroundJob` that is related to this `OverlayDataTableUpload`. */ + projectBackgroundJob?: Maybe; + projectBackgroundJobId: Scalars['UUID']; + replaceOverlayDataTableId?: Maybe; + tableOfContentsItemId: Scalars['Int']; + updatedAt?: Maybe; +}; + +/** + * A condition to be used against `OverlayDataTableUpload` object types. All fields + * are tested for equality and combined with a logical ‘and.’ + */ +export type OverlayDataTableUploadCondition = { + /** Checks for equality with the object’s `id` field. */ + id?: Maybe; + /** Checks for equality with the object’s `projectBackgroundJobId` field. */ + projectBackgroundJobId?: Maybe; +}; + +/** A connection to a list of `OverlayDataTableUpload` values. */ +export type OverlayDataTableUploadsConnection = { + __typename?: 'OverlayDataTableUploadsConnection'; + /** A list of edges which contains the `OverlayDataTableUpload` and cursor to aid in pagination. */ + edges: Array; + /** A list of `OverlayDataTableUpload` objects. */ + nodes: Array; + /** Information to aid in pagination. */ + pageInfo: PageInfo; + /** The count of *all* `OverlayDataTableUpload` you could get from the connection. */ + totalCount: Scalars['Int']; +}; + +/** A `OverlayDataTableUpload` edge in the connection. */ +export type OverlayDataTableUploadsEdge = { + __typename?: 'OverlayDataTableUploadsEdge'; + /** A cursor for use in pagination. */ + cursor?: Maybe; + /** The `OverlayDataTableUpload` at the end of the edge. */ + node: OverlayDataTableUpload; +}; + +/** Methods to use when ordering `OverlayDataTableUpload`. */ +export enum OverlayDataTableUploadsOrderBy { + IdAsc = 'ID_ASC', + IdDesc = 'ID_DESC', + Natural = 'NATURAL', + PrimaryKeyAsc = 'PRIMARY_KEY_ASC', + PrimaryKeyDesc = 'PRIMARY_KEY_DESC', + ProjectBackgroundJobIdAsc = 'PROJECT_BACKGROUND_JOB_ID_ASC', + ProjectBackgroundJobIdDesc = 'PROJECT_BACKGROUND_JOB_ID_DESC' +} + +/** A connection to a list of `OverlayDataTable` values. */ +export type OverlayDataTablesConnection = { + __typename?: 'OverlayDataTablesConnection'; + /** A list of edges which contains the `OverlayDataTable` and cursor to aid in pagination. */ + edges: Array; + /** A list of `OverlayDataTable` objects. */ + nodes: Array; + /** Information to aid in pagination. */ + pageInfo: PageInfo; + /** The count of *all* `OverlayDataTable` you could get from the connection. */ + totalCount: Scalars['Int']; +}; + +/** A `OverlayDataTable` edge in the connection. */ +export type OverlayDataTablesEdge = { + __typename?: 'OverlayDataTablesEdge'; + /** A cursor for use in pagination. */ + cursor?: Maybe; + /** The `OverlayDataTable` at the end of the edge. */ + node: OverlayDataTable; +}; + +/** Methods to use when ordering `OverlayDataTable`. */ +export enum OverlayDataTablesOrderBy { + IdAsc = 'ID_ASC', + IdDesc = 'ID_DESC', + Natural = 'NATURAL', + PrimaryKeyAsc = 'PRIMARY_KEY_ASC', + PrimaryKeyDesc = 'PRIMARY_KEY_DESC', + ProjectIdAsc = 'PROJECT_ID_ASC', + ProjectIdDesc = 'PROJECT_ID_DESC' +} + /** Information about pagination in a connection. */ export type PageInfo = { __typename?: 'PageInfo'; @@ -11095,6 +11306,8 @@ export type Project = Node & { offlineTilePackagesConnection: OfflineTilePackagesConnection; /** Reads and enables pagination through a set of `OfflineTileSetting`. */ offlineTileSettings: Array; + /** Reads and enables pagination through a set of `OverlayDataTable`. */ + overlayDataTablesConnection: OverlayDataTablesConnection; /** Count of all users who have opted into participating in the project, sharing their profile with project administrators. */ participantCount?: Maybe; /** @@ -11514,6 +11727,21 @@ export type ProjectOfflineTileSettingsArgs = { }; +/** + * SeaSketch Project type. This root type contains most of the fields and queries + * needed to drive the application. + */ +export type ProjectOverlayDataTablesConnectionArgs = { + after?: Maybe; + before?: Maybe; + condition?: Maybe; + first?: Maybe; + last?: Maybe; + offset?: Maybe; + orderBy?: Maybe>; +}; + + /** * SeaSketch Project type. This root type contains most of the fields and queries * needed to drive the application. @@ -11725,6 +11953,13 @@ export type ProjectBackgroundJob = Node & { id: Scalars['UUID']; /** A globally unique identifier. Can be used in various places throughout the system to identify this single value. */ nodeId: Scalars['ID']; + /** Reads a single `OverlayDataTableUpload` that is related to this `ProjectBackgroundJob`. */ + overlayDataTableUpload?: Maybe; + /** + * Reads and enables pagination through a set of `OverlayDataTableUpload`. + * @deprecated Please use overlayDataTableUpload instead + */ + overlayDataTableUploadsConnection: OverlayDataTableUploadsConnection; progress?: Maybe; progressMessage: Scalars['String']; /** Reads a single `Project` that is related to this `ProjectBackgroundJob`. */ @@ -11749,6 +11984,17 @@ export type ProjectBackgroundJobDataUploadTasksConnectionArgs = { orderBy?: Maybe>; }; + +export type ProjectBackgroundJobOverlayDataTableUploadsConnectionArgs = { + after?: Maybe; + before?: Maybe; + condition?: Maybe; + first?: Maybe; + last?: Maybe; + offset?: Maybe; + orderBy?: Maybe>; +}; + /** * A condition to be used against `ProjectBackgroundJob` object types. All fields * are tested for equality and combined with a logical ‘and.’ @@ -11779,6 +12025,7 @@ export type ProjectBackgroundJobSubscriptionPayload = { export enum ProjectBackgroundJobType { ArcgisImport = 'ARCGIS_IMPORT', ConsolidateDataSources = 'CONSOLIDATE_DATA_SOURCES', + DataTableUpload = 'DATA_TABLE_UPLOAD', DataUpload = 'DATA_UPLOAD', ReplacementUpload = 'REPLACEMENT_UPLOAD' } @@ -12495,6 +12742,18 @@ export type Query = Node & { optionalBasemapLayerByNodeId?: Maybe; /** Reads and enables pagination through a set of `OriginalSourceId`. */ originalSourceIdsConnection?: Maybe; + overlayDataTable?: Maybe; + /** Reads a single `OverlayDataTable` using its globally unique `ID`. */ + overlayDataTableByNodeId?: Maybe; + overlayDataTableLinkedTocIsDraft?: Maybe; + /** Reads and enables pagination through a set of `OverlayDataTable`. */ + overlayDataTablesConnection?: Maybe; + overlayDataTableUpload?: Maybe; + /** Reads a single `OverlayDataTableUpload` using its globally unique `ID`. */ + overlayDataTableUploadByNodeId?: Maybe; + overlayDataTableUploadByProjectBackgroundJobId?: Maybe; + /** Reads and enables pagination through a set of `OverlayDataTableUpload`. */ + overlayDataTableUploadsConnection?: Maybe; post?: Maybe; /** Reads a single `Post` using its globally unique `ID`. */ postByNodeId?: Maybe; @@ -13392,6 +13651,67 @@ export type QueryOriginalSourceIdsConnectionArgs = { }; +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableArgs = { + id: Scalars['Int']; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableByNodeIdArgs = { + nodeId: Scalars['ID']; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableLinkedTocIsDraftArgs = { + pid?: Maybe; + tocItemId?: Maybe; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTablesConnectionArgs = { + after?: Maybe; + before?: Maybe; + condition?: Maybe; + first?: Maybe; + last?: Maybe; + offset?: Maybe; + orderBy?: Maybe>; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableUploadArgs = { + id: Scalars['UUID']; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableUploadByNodeIdArgs = { + nodeId: Scalars['ID']; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableUploadByProjectBackgroundJobIdArgs = { + projectBackgroundJobId: Scalars['UUID']; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableUploadsConnectionArgs = { + after?: Maybe; + before?: Maybe; + condition?: Maybe; + first?: Maybe; + last?: Maybe; + offset?: Maybe; + orderBy?: Maybe>; +}; + + /** The root query type which gives access points into the data universe. */ export type QueryPostArgs = { id: Scalars['Int']; @@ -14092,6 +14412,40 @@ export type RemoveValidChildSketchClassPayload = { query?: Maybe; }; +/** All input for the `renameOverlayDataTable` mutation. */ +export type RenameOverlayDataTableInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: Maybe; + newName?: Maybe; + tableId?: Maybe; +}; + +/** The output of our `renameOverlayDataTable` mutation. */ +export type RenameOverlayDataTablePayload = { + __typename?: 'RenameOverlayDataTablePayload'; + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe; + overlayDataTable?: Maybe; + /** An edge for our `OverlayDataTable`. May be used by Relay 1. */ + overlayDataTableEdge?: Maybe; + /** Reads a single `Project` that is related to this `OverlayDataTable`. */ + project?: Maybe; + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe; +}; + + +/** The output of our `renameOverlayDataTable` mutation. */ +export type RenameOverlayDataTablePayloadOverlayDataTableEdgeArgs = { + orderBy?: Maybe>; +}; + /** All input for the `renameReportTab` mutation. */ export type RenameReportTabInput = { alternateLanguageSettings?: Maybe; @@ -14628,6 +14982,39 @@ export type RevokeApiKeyPayload = { query?: Maybe; }; +/** All input for the `rollbackOverlayDataTableVersion` mutation. */ +export type RollbackOverlayDataTableVersionInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: Maybe; + tableId?: Maybe; +}; + +/** The output of our `rollbackOverlayDataTableVersion` mutation. */ +export type RollbackOverlayDataTableVersionPayload = { + __typename?: 'RollbackOverlayDataTableVersionPayload'; + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe; + overlayDataTable?: Maybe; + /** An edge for our `OverlayDataTable`. May be used by Relay 1. */ + overlayDataTableEdge?: Maybe; + /** Reads a single `Project` that is related to this `OverlayDataTable`. */ + project?: Maybe; + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe; +}; + + +/** The output of our `rollbackOverlayDataTableVersion` mutation. */ +export type RollbackOverlayDataTableVersionPayloadOverlayDataTableEdgeArgs = { + orderBy?: Maybe>; +}; + /** All input for the `rollbackToArchivedSource` mutation. */ export type RollbackToArchivedSourceInput = { /** @@ -15514,6 +15901,39 @@ export type SketchesRelatedFragmentsRecord = { sketches?: Maybe>>; }; +/** All input for the `softDeleteOverlayDataTable` mutation. */ +export type SoftDeleteOverlayDataTableInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: Maybe; + tableId?: Maybe; +}; + +/** The output of our `softDeleteOverlayDataTable` mutation. */ +export type SoftDeleteOverlayDataTablePayload = { + __typename?: 'SoftDeleteOverlayDataTablePayload'; + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe; + overlayDataTable?: Maybe; + /** An edge for our `OverlayDataTable`. May be used by Relay 1. */ + overlayDataTableEdge?: Maybe; + /** Reads a single `Project` that is related to this `OverlayDataTable`. */ + project?: Maybe; + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe; +}; + + +/** The output of our `softDeleteOverlayDataTable` mutation. */ +export type SoftDeleteOverlayDataTablePayloadOverlayDataTableEdgeArgs = { + orderBy?: Maybe>; +}; + /** All input for the `softDeleteSprite` mutation. */ export type SoftDeleteSpriteInput = { /** @@ -15737,6 +16157,31 @@ export type SubmitDataUploadPayload = { query?: Maybe; }; +/** All input for the `submitOverlayDataTableUpload` mutation. */ +export type SubmitOverlayDataTableUploadInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: Maybe; + jobId?: Maybe; +}; + +/** The output of our `submitOverlayDataTableUpload` mutation. */ +export type SubmitOverlayDataTableUploadPayload = { + __typename?: 'SubmitOverlayDataTableUploadPayload'; + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe; + /** Reads a single `Project` that is related to this `ProjectBackgroundJob`. */ + project?: Maybe; + projectBackgroundJob?: Maybe; + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe; +}; + /** The root subscription type: contains realtime events you can subscribe to with the `subscription` operation. */ export type Subscription = { __typename?: 'Subscription'; @@ -16284,8 +16729,14 @@ export type TableOfContentsItem = Node & { /** If is_folder=false, a DataLayers visibility will be controlled by this item */ dataLayerId?: Maybe; dataSourceType?: Maybe; + /** Reads and enables pagination through a set of `ChangeLog`. */ + dataTableChangeLogs?: Maybe>; + /** Overlay attribute name used as the canonical feature ID for linked data tables. Required when enable_data_tables is true. */ + dataTableJoinColumn?: Maybe; /** Reads and enables pagination through a set of `DownloadOption`. */ downloadOptions?: Maybe>; + /** When true, admins can attach CSV data tables linked to this layer by a canonical join column. */ + enableDataTables: Scalars['Boolean']; enableDownload: Scalars['Boolean']; ftsAr?: Maybe; ftsDa?: Maybe; @@ -16334,6 +16785,8 @@ export type TableOfContentsItem = Node & { metadataXml?: Maybe; /** A globally unique identifier. Can be used in various places throughout the system to identify this single value. */ nodeId: Scalars['ID']; + /** Reads and enables pagination through a set of `OverlayDataTable`. */ + overlayDataTables?: Maybe>; /** * stable_id of the parent folder, if any. This property cannot be changed * directly. To rearrange items into folders, use the @@ -16424,6 +16877,22 @@ export type TableOfContentsItemChangeLogsArgs = { }; +/** + * TableOfContentsItems represent a tree-view of folders and operational layers + * that can be added to the map. Both layers and folders may be nested into other + * folders for organization, and each folder has its own access control list. + * + * Items that represent data layers have a `DataLayer` relation, which in turn has + * a reference to a `DataSource`. Usually these relations should be fetched in + * batch only once the layer is turned on, using the + * `dataLayersAndSourcesByLayerId` query. + */ +export type TableOfContentsItemDataTableChangeLogsArgs = { + first?: Maybe; + offset?: Maybe; +}; + + /** * TableOfContentsItems represent a tree-view of folders and operational layers * that can be added to the map. Both layers and folders may be nested into other @@ -16456,6 +16925,22 @@ export type TableOfContentsItemMetadataChangeLogsArgs = { }; +/** + * TableOfContentsItems represent a tree-view of folders and operational layers + * that can be added to the map. Both layers and folders may be nested into other + * folders for organization, and each folder has its own access control list. + * + * Items that represent data layers have a `DataLayer` relation, which in turn has + * a reference to a `DataSource`. Usually these relations should be fetched in + * batch only once the layer is turned on, using the + * `dataLayersAndSourcesByLayerId` query. + */ +export type TableOfContentsItemOverlayDataTablesArgs = { + first?: Maybe; + offset?: Maybe; +}; + + /** * TableOfContentsItems represent a tree-view of folders and operational layers * that can be added to the map. Both layers and folders may be nested into other @@ -16628,6 +17113,10 @@ export type TableOfContentsItemPatch = { bounds?: Maybe>>; /** If is_folder=false, a DataLayers visibility will be controlled by this item */ dataLayerId?: Maybe; + /** Overlay attribute name used as the canonical feature ID for linked data tables. Required when enable_data_tables is true. */ + dataTableJoinColumn?: Maybe; + /** When true, admins can attach CSV data tables linked to this layer by a canonical join column. */ + enableDataTables?: Maybe; enableDownload?: Maybe; geoprocessingReferenceId?: Maybe; hideChildren?: Maybe; @@ -20569,6 +21058,9 @@ export type JobDetailsFragment = ( { __typename?: 'TableOfContentsItem' } & Pick )> } + )>, overlayDataTableUpload?: Maybe<( + { __typename?: 'OverlayDataTableUpload' } + & Pick )> } ); @@ -21169,6 +21661,24 @@ export type LayerSettingsChangeLogQuery = ( )> } ); +export type DataTableChangeLogQueryVariables = Exact<{ + id: Scalars['Int']; + first: Scalars['Int']; +}>; + + +export type DataTableChangeLogQuery = ( + { __typename?: 'Query' } + & { tableOfContentsItem?: Maybe<( + { __typename?: 'TableOfContentsItem' } + & Pick + & { dataTableChangeLogs?: Maybe> } + )> } +); + export type ResolvableLayerCommentDetailsFragment = ( { __typename?: 'ResolvableLayerComment' } & Pick @@ -21205,7 +21715,7 @@ export type ResolvableLayerCommentThreadForChangelogQuery = ( export type FullAdminOverlayFragment = ( { __typename?: 'TableOfContentsItem' } - & Pick + & Pick & { acl?: Maybe<( { __typename?: 'Acl' } & Pick @@ -21218,11 +21728,14 @@ export type FullAdminOverlayFragment = ( & Pick )>>>, projectBackgroundJobs?: Maybe + & JobDetailsFragment )>>, dataLayer?: Maybe<( { __typename?: 'DataLayer' } & FullAdminDataLayerFragment - )>, relatedReportCardDetails?: Maybe, overlayDataTables?: Maybe>, relatedReportCardDetails?: Maybe & { sketchClass: ( @@ -21292,6 +21805,24 @@ export type UpdateEnableDownloadMutation = ( )> } ); +export type UpdateDataTablesSettingsMutationVariables = Exact<{ + id: Scalars['Int']; + enableDataTables?: Maybe; + dataTableJoinColumn?: Maybe; +}>; + + +export type UpdateDataTablesSettingsMutation = ( + { __typename?: 'Mutation' } + & { updateTableOfContentsItem?: Maybe<( + { __typename?: 'UpdateTableOfContentsItemPayload' } + & { tableOfContentsItem?: Maybe<( + { __typename?: 'TableOfContentsItem' } + & Pick + )> } + )> } +); + export type UpdateLayerMutationVariables = Exact<{ id: Scalars['Int']; renderUnder?: Maybe; @@ -23275,6 +23806,104 @@ export type GetTilePackageQuery = ( )> } ); +export type OverlayDataTableDetailsFragment = ( + { __typename?: 'OverlayDataTable' } + & Pick +); + +export type OverlayDataTableUploadDetailsFragment = ( + { __typename?: 'OverlayDataTableUpload' } + & Pick +); + +export type CreateOverlayDataTableUploadMutationVariables = Exact<{ + tableOfContentsItemId: Scalars['Int']; + filename: Scalars['String']; + contentType: Scalars['String']; + processingOptions?: Maybe; + replaceOverlayDataTableId?: Maybe; +}>; + + +export type CreateOverlayDataTableUploadMutation = ( + { __typename?: 'Mutation' } + & { createOverlayDataTableUpload?: Maybe<( + { __typename?: 'CreateOverlayDataTableUploadPayload' } + & { overlayDataTableUpload?: Maybe<( + { __typename?: 'OverlayDataTableUpload' } + & OverlayDataTableUploadDetailsFragment + )>, projectBackgroundJob?: Maybe<( + { __typename?: 'ProjectBackgroundJob' } + & JobDetailsFragment + )> } + )> } +); + +export type SubmitOverlayDataTableUploadMutationVariables = Exact<{ + jobId: Scalars['UUID']; +}>; + + +export type SubmitOverlayDataTableUploadMutation = ( + { __typename?: 'Mutation' } + & { submitOverlayDataTableUpload?: Maybe<( + { __typename?: 'SubmitOverlayDataTableUploadPayload' } + & { projectBackgroundJob?: Maybe<( + { __typename?: 'ProjectBackgroundJob' } + & Pick + )> } + )> } +); + +export type RenameOverlayDataTableMutationVariables = Exact<{ + id: Scalars['Int']; + name: Scalars['String']; +}>; + + +export type RenameOverlayDataTableMutation = ( + { __typename?: 'Mutation' } + & { renameOverlayDataTable?: Maybe<( + { __typename?: 'RenameOverlayDataTablePayload' } + & { overlayDataTable?: Maybe<( + { __typename?: 'OverlayDataTable' } + & OverlayDataTableDetailsFragment + )> } + )> } +); + +export type SoftDeleteOverlayDataTableMutationVariables = Exact<{ + id: Scalars['Int']; +}>; + + +export type SoftDeleteOverlayDataTableMutation = ( + { __typename?: 'Mutation' } + & { softDeleteOverlayDataTable?: Maybe<( + { __typename?: 'SoftDeleteOverlayDataTablePayload' } + & { overlayDataTable?: Maybe<( + { __typename?: 'OverlayDataTable' } + & Pick + )> } + )> } +); + +export type RollbackOverlayDataTableVersionMutationVariables = Exact<{ + id: Scalars['Int']; +}>; + + +export type RollbackOverlayDataTableVersionMutation = ( + { __typename?: 'Mutation' } + & { rollbackOverlayDataTableVersion?: Maybe<( + { __typename?: 'RollbackOverlayDataTableVersionPayload' } + & { overlayDataTable?: Maybe<( + { __typename?: 'OverlayDataTable' } + & OverlayDataTableDetailsFragment + )> } + )> } +); + export type ProjectAccessControlSettingsQueryVariables = Exact<{ slug: Scalars['String']; }>; @@ -27564,6 +28193,12 @@ export const JobDetailsFragmentDoc = gql` title } } + overlayDataTableUpload { + id + tableOfContentsItemId + filename + replaceOverlayDataTableId + } } ${DataUploadDetailsFragmentDoc}`; export const DataUploadExtendedDetailsFragmentDoc = gql` @@ -27841,6 +28476,24 @@ export const FullAdminDataLayerFragmentDoc = gql` } ${FullAdminSourceFragmentDoc} ${ArchivedSourceFragmentDoc}`; +export const OverlayDataTableDetailsFragmentDoc = gql` + fragment OverlayDataTableDetails on OverlayDataTable { + id + name + version + joinColumn + overlayJoinColumn + rowCount + parquetRemote + columnStatsRemote + parquetUrl + columnStatsUrl + deletedAt + replacedById + createdAt + updatedAt +} + `; export const UserProfileDetailsFragmentDoc = gql` fragment UserProfileDetails on Profile { userId @@ -27904,22 +28557,21 @@ export const FullAdminOverlayFragmentDoc = gql` stableId title enableDownload + enableDataTables + dataTableJoinColumn geoprocessingReferenceId copiedFromDataLibraryTemplateId primaryDownloadUrl projectBackgroundJobs { - id - type - title - state - progress - progressMessage - errorMessage + ...JobDetails } hasOriginalSourceUpload dataLayer { ...FullAdminDataLayer } + overlayDataTables { + ...OverlayDataTableDetails + } relatedReportCardDetails { isDraft title @@ -27936,7 +28588,9 @@ export const FullAdminOverlayFragmentDoc = gql` ...ResolvableLayerCommentThread } } - ${FullAdminDataLayerFragmentDoc} + ${JobDetailsFragmentDoc} +${FullAdminDataLayerFragmentDoc} +${OverlayDataTableDetailsFragmentDoc} ${ResolvableLayerCommentThreadFragmentDoc}`; export const MetadataXmlFileFragmentDoc = gql` fragment MetadataXmlFile on DataUploadOutput { @@ -28247,6 +28901,20 @@ export const OfflineTileSettingsFragmentDoc = gql` } } `; +export const OverlayDataTableUploadDetailsFragmentDoc = gql` + fragment OverlayDataTableUploadDetails on OverlayDataTableUpload { + id + tableOfContentsItemId + filename + contentType + processingOptions + overlayJoinColumn + errorDetails + presignedUploadUrl + replaceOverlayDataTableId + projectBackgroundJobId +} + `; export const ProjectMetadataFragmentDoc = gql` fragment ProjectMetadata on Project { id @@ -32716,6 +33384,45 @@ export function useLayerSettingsChangeLogLazyQuery(baseOptions?: Apollo.LazyQuer export type LayerSettingsChangeLogQueryHookResult = ReturnType; export type LayerSettingsChangeLogLazyQueryHookResult = ReturnType; export type LayerSettingsChangeLogQueryResult = Apollo.QueryResult; +export const DataTableChangeLogDocument = gql` + query DataTableChangeLog($id: Int!, $first: Int!) { + tableOfContentsItem(id: $id) { + id + dataTableChangeLogs(first: $first) { + ...ChangeLogDetails + } + } +} + ${ChangeLogDetailsFragmentDoc}`; + +/** + * __useDataTableChangeLogQuery__ + * + * To run a query within a React component, call `useDataTableChangeLogQuery` and pass it any options that fit your needs. + * When your component renders, `useDataTableChangeLogQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useDataTableChangeLogQuery({ + * variables: { + * id: // value for 'id' + * first: // value for 'first' + * }, + * }); + */ +export function useDataTableChangeLogQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(DataTableChangeLogDocument, options); + } +export function useDataTableChangeLogLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(DataTableChangeLogDocument, options); + } +export type DataTableChangeLogQueryHookResult = ReturnType; +export type DataTableChangeLogLazyQueryHookResult = ReturnType; +export type DataTableChangeLogQueryResult = Apollo.QueryResult; export const ResolvableLayerCommentThreadForChangelogDocument = gql` query ResolvableLayerCommentThreadForChangelog($commentId: Int!) { getResolvableLayerComment(commentId: $commentId) { @@ -32877,6 +33584,47 @@ export function useUpdateEnableDownloadMutation(baseOptions?: Apollo.MutationHoo export type UpdateEnableDownloadMutationHookResult = ReturnType; export type UpdateEnableDownloadMutationResult = Apollo.MutationResult; export type UpdateEnableDownloadMutationOptions = Apollo.BaseMutationOptions; +export const UpdateDataTablesSettingsDocument = gql` + mutation UpdateDataTablesSettings($id: Int!, $enableDataTables: Boolean, $dataTableJoinColumn: String) { + updateTableOfContentsItem( + input: {id: $id, patch: {enableDataTables: $enableDataTables, dataTableJoinColumn: $dataTableJoinColumn}} + ) { + tableOfContentsItem { + id + enableDataTables + dataTableJoinColumn + } + } +} + `; +export type UpdateDataTablesSettingsMutationFn = Apollo.MutationFunction; + +/** + * __useUpdateDataTablesSettingsMutation__ + * + * To run a mutation, you first call `useUpdateDataTablesSettingsMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUpdateDataTablesSettingsMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [updateDataTablesSettingsMutation, { data, loading, error }] = useUpdateDataTablesSettingsMutation({ + * variables: { + * id: // value for 'id' + * enableDataTables: // value for 'enableDataTables' + * dataTableJoinColumn: // value for 'dataTableJoinColumn' + * }, + * }); + */ +export function useUpdateDataTablesSettingsMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UpdateDataTablesSettingsDocument, options); + } +export type UpdateDataTablesSettingsMutationHookResult = ReturnType; +export type UpdateDataTablesSettingsMutationResult = Apollo.MutationResult; +export type UpdateDataTablesSettingsMutationOptions = Apollo.BaseMutationOptions; export const UpdateLayerDocument = gql` mutation UpdateLayer($id: Int!, $renderUnder: RenderUnderType, $mapboxGlStyles: JSON, $sublayer: String, $staticId: String) { updateDataLayer( @@ -36587,6 +37335,196 @@ export function useGetTilePackageLazyQuery(baseOptions?: Apollo.LazyQueryHookOpt export type GetTilePackageQueryHookResult = ReturnType; export type GetTilePackageLazyQueryHookResult = ReturnType; export type GetTilePackageQueryResult = Apollo.QueryResult; +export const CreateOverlayDataTableUploadDocument = gql` + mutation CreateOverlayDataTableUpload($tableOfContentsItemId: Int!, $filename: String!, $contentType: String!, $processingOptions: JSON, $replaceOverlayDataTableId: Int) { + createOverlayDataTableUpload( + input: {tocItemId: $tableOfContentsItemId, filename: $filename, contentType: $contentType, processingOptions: $processingOptions, replaceOverlayDataTableId: $replaceOverlayDataTableId} + ) { + overlayDataTableUpload { + ...OverlayDataTableUploadDetails + } + projectBackgroundJob { + ...JobDetails + } + } +} + ${OverlayDataTableUploadDetailsFragmentDoc} +${JobDetailsFragmentDoc}`; +export type CreateOverlayDataTableUploadMutationFn = Apollo.MutationFunction; + +/** + * __useCreateOverlayDataTableUploadMutation__ + * + * To run a mutation, you first call `useCreateOverlayDataTableUploadMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateOverlayDataTableUploadMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createOverlayDataTableUploadMutation, { data, loading, error }] = useCreateOverlayDataTableUploadMutation({ + * variables: { + * tableOfContentsItemId: // value for 'tableOfContentsItemId' + * filename: // value for 'filename' + * contentType: // value for 'contentType' + * processingOptions: // value for 'processingOptions' + * replaceOverlayDataTableId: // value for 'replaceOverlayDataTableId' + * }, + * }); + */ +export function useCreateOverlayDataTableUploadMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateOverlayDataTableUploadDocument, options); + } +export type CreateOverlayDataTableUploadMutationHookResult = ReturnType; +export type CreateOverlayDataTableUploadMutationResult = Apollo.MutationResult; +export type CreateOverlayDataTableUploadMutationOptions = Apollo.BaseMutationOptions; +export const SubmitOverlayDataTableUploadDocument = gql` + mutation SubmitOverlayDataTableUpload($jobId: UUID!) { + submitOverlayDataTableUpload(input: {jobId: $jobId}) { + projectBackgroundJob { + id + state + progress + progressMessage + } + } +} + `; +export type SubmitOverlayDataTableUploadMutationFn = Apollo.MutationFunction; + +/** + * __useSubmitOverlayDataTableUploadMutation__ + * + * To run a mutation, you first call `useSubmitOverlayDataTableUploadMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useSubmitOverlayDataTableUploadMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [submitOverlayDataTableUploadMutation, { data, loading, error }] = useSubmitOverlayDataTableUploadMutation({ + * variables: { + * jobId: // value for 'jobId' + * }, + * }); + */ +export function useSubmitOverlayDataTableUploadMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(SubmitOverlayDataTableUploadDocument, options); + } +export type SubmitOverlayDataTableUploadMutationHookResult = ReturnType; +export type SubmitOverlayDataTableUploadMutationResult = Apollo.MutationResult; +export type SubmitOverlayDataTableUploadMutationOptions = Apollo.BaseMutationOptions; +export const RenameOverlayDataTableDocument = gql` + mutation RenameOverlayDataTable($id: Int!, $name: String!) { + renameOverlayDataTable(input: {tableId: $id, newName: $name}) { + overlayDataTable { + ...OverlayDataTableDetails + } + } +} + ${OverlayDataTableDetailsFragmentDoc}`; +export type RenameOverlayDataTableMutationFn = Apollo.MutationFunction; + +/** + * __useRenameOverlayDataTableMutation__ + * + * To run a mutation, you first call `useRenameOverlayDataTableMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useRenameOverlayDataTableMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [renameOverlayDataTableMutation, { data, loading, error }] = useRenameOverlayDataTableMutation({ + * variables: { + * id: // value for 'id' + * name: // value for 'name' + * }, + * }); + */ +export function useRenameOverlayDataTableMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(RenameOverlayDataTableDocument, options); + } +export type RenameOverlayDataTableMutationHookResult = ReturnType; +export type RenameOverlayDataTableMutationResult = Apollo.MutationResult; +export type RenameOverlayDataTableMutationOptions = Apollo.BaseMutationOptions; +export const SoftDeleteOverlayDataTableDocument = gql` + mutation SoftDeleteOverlayDataTable($id: Int!) { + softDeleteOverlayDataTable(input: {tableId: $id}) { + overlayDataTable { + id + deletedAt + } + } +} + `; +export type SoftDeleteOverlayDataTableMutationFn = Apollo.MutationFunction; + +/** + * __useSoftDeleteOverlayDataTableMutation__ + * + * To run a mutation, you first call `useSoftDeleteOverlayDataTableMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useSoftDeleteOverlayDataTableMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [softDeleteOverlayDataTableMutation, { data, loading, error }] = useSoftDeleteOverlayDataTableMutation({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useSoftDeleteOverlayDataTableMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(SoftDeleteOverlayDataTableDocument, options); + } +export type SoftDeleteOverlayDataTableMutationHookResult = ReturnType; +export type SoftDeleteOverlayDataTableMutationResult = Apollo.MutationResult; +export type SoftDeleteOverlayDataTableMutationOptions = Apollo.BaseMutationOptions; +export const RollbackOverlayDataTableVersionDocument = gql` + mutation RollbackOverlayDataTableVersion($id: Int!) { + rollbackOverlayDataTableVersion(input: {tableId: $id}) { + overlayDataTable { + ...OverlayDataTableDetails + } + } +} + ${OverlayDataTableDetailsFragmentDoc}`; +export type RollbackOverlayDataTableVersionMutationFn = Apollo.MutationFunction; + +/** + * __useRollbackOverlayDataTableVersionMutation__ + * + * To run a mutation, you first call `useRollbackOverlayDataTableVersionMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useRollbackOverlayDataTableVersionMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [rollbackOverlayDataTableVersionMutation, { data, loading, error }] = useRollbackOverlayDataTableVersionMutation({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useRollbackOverlayDataTableVersionMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(RollbackOverlayDataTableVersionDocument, options); + } +export type RollbackOverlayDataTableVersionMutationHookResult = ReturnType; +export type RollbackOverlayDataTableVersionMutationResult = Apollo.MutationResult; +export type RollbackOverlayDataTableVersionMutationOptions = Apollo.BaseMutationOptions; export const ProjectAccessControlSettingsDocument = gql` query ProjectAccessControlSettings($slug: String!) { projectBySlug(slug: $slug) { @@ -43613,6 +44551,7 @@ export const namedOperations = { layersAndSourcesForItems: 'layersAndSourcesForItems', GetFolder: 'GetFolder', LayerSettingsChangeLog: 'LayerSettingsChangeLog', + DataTableChangeLog: 'DataTableChangeLog', ResolvableLayerCommentThreadForChangelog: 'ResolvableLayerCommentThreadForChangelog', GetLayerItem: 'GetLayerItem', InteractivitySettingsForLayer: 'InteractivitySettingsForLayer', @@ -43770,6 +44709,7 @@ export const namedOperations = { UpdateFolder: 'UpdateFolder', UpdateTableOfContentsItem: 'UpdateTableOfContentsItem', UpdateEnableDownload: 'UpdateEnableDownload', + UpdateDataTablesSettings: 'UpdateDataTablesSettings', UpdateLayer: 'UpdateLayer', UpdateDataSource: 'UpdateDataSource', UpdateInteractivitySettings: 'UpdateInteractivitySettings', @@ -43817,6 +44757,11 @@ export const namedOperations = { UpdateBasemapOfflineTileSettings: 'UpdateBasemapOfflineTileSettings', generateOfflineTilePackage: 'generateOfflineTilePackage', deleteTilePackage: 'deleteTilePackage', + CreateOverlayDataTableUpload: 'CreateOverlayDataTableUpload', + SubmitOverlayDataTableUpload: 'SubmitOverlayDataTableUpload', + RenameOverlayDataTable: 'RenameOverlayDataTable', + SoftDeleteOverlayDataTable: 'SoftDeleteOverlayDataTable', + RollbackOverlayDataTableVersion: 'RollbackOverlayDataTableVersion', updateProjectAccessControlSettings: 'updateProjectAccessControlSettings', toggleLanguageSupport: 'toggleLanguageSupport', setTranslatedProps: 'setTranslatedProps', @@ -43991,6 +44936,8 @@ export const namedOperations = { OfflineBasemapDetails: 'OfflineBasemapDetails', OfflineTileSettingsForCalculation: 'OfflineTileSettingsForCalculation', OfflineTileSettings: 'OfflineTileSettings', + OverlayDataTableDetails: 'OverlayDataTableDetails', + OverlayDataTableUploadDetails: 'OverlayDataTableUploadDetails', ProjectMetadata: 'ProjectMetadata', ProjectPublicDetailsMetadata: 'ProjectPublicDetailsMetadata', ProjectMetadataMeFrag: 'ProjectMetadataMeFrag', diff --git a/packages/client/src/generated/queries.ts b/packages/client/src/generated/queries.ts index 410e9fe2f..bb0ab4248 100644 --- a/packages/client/src/generated/queries.ts +++ b/packages/client/src/generated/queries.ts @@ -954,6 +954,11 @@ export type ChangeLogCondition = { }; export enum ChangeLogFieldGroup { + DataTableCreated = 'DATA_TABLE_CREATED', + DataTableDeleted = 'DATA_TABLE_DELETED', + DataTableRenamed = 'DATA_TABLE_RENAMED', + DataTableReplaced = 'DATA_TABLE_REPLACED', + DataTableRollback = 'DATA_TABLE_ROLLBACK', FolderAcl = 'FOLDER_ACL', FolderCreated = 'FOLDER_CREATED', FolderDeleted = 'FOLDER_DELETED', @@ -2027,6 +2032,43 @@ export type CreateOriginalSourceIdPayloadOriginalSourceIdEdgeArgs = { orderBy?: Maybe>; }; +/** All input for the `createOverlayDataTableUpload` mutation. */ +export type CreateOverlayDataTableUploadInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: Maybe; + contentType?: Maybe; + filename?: Maybe; + processingOptions?: Maybe; + replaceOverlayDataTableId?: Maybe; + tocItemId?: Maybe; +}; + +/** The output of our `createOverlayDataTableUpload` mutation. */ +export type CreateOverlayDataTableUploadPayload = { + __typename?: 'CreateOverlayDataTableUploadPayload'; + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe; + overlayDataTableUpload?: Maybe; + /** An edge for our `OverlayDataTableUpload`. May be used by Relay 1. */ + overlayDataTableUploadEdge?: Maybe; + /** Reads a single `ProjectBackgroundJob` that is related to this `OverlayDataTableUpload`. */ + projectBackgroundJob?: Maybe; + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe; +}; + + +/** The output of our `createOverlayDataTableUpload` mutation. */ +export type CreateOverlayDataTableUploadPayloadOverlayDataTableUploadEdgeArgs = { + orderBy?: Maybe>; +}; + export type CreateProjectGeographyClippingLayerInput = { /** * If provided, features used for clipping will be filtered based on this @@ -7989,6 +8031,7 @@ export type Mutation = { createOptionalBasemapLayer?: Maybe; /** Creates a single `OriginalSourceId`. */ createOriginalSourceId?: Maybe; + createOverlayDataTableUpload?: Maybe; createPost: Post; /** * Users with verified emails can create new projects by choosing a unique name @@ -8272,6 +8315,7 @@ export type Mutation = { removeUserFromGroup?: Maybe; /** Remove a SketchClass from the list of valid children for a Collection. */ removeValidChildSketchClass?: Maybe; + renameOverlayDataTable?: Maybe; renameReportTab?: Maybe; reopenResolvableLayerComment?: Maybe; reorderReportTabCards?: Maybe; @@ -8291,6 +8335,7 @@ export type Mutation = { /** Remove participant admin privileges. */ revokeAdminAccess?: Maybe; revokeApiKey?: Maybe; + rollbackOverlayDataTableVersion?: Maybe; rollbackToArchivedSource?: Maybe; /** Send all UNSENT invites in the current project. */ sendAllProjectInvites?: Maybe; @@ -8350,9 +8395,11 @@ export type Mutation = { setUserGroups?: Maybe; /** Superusers only. Promote a sprite to be globally available. */ shareSprite?: Maybe; + softDeleteOverlayDataTable?: Maybe; /** Superusers only. "Deletes" a sprite but keeps it in the DB in case layers are already referencing it. */ softDeleteSprite?: Maybe; submitDataUpload?: Maybe; + submitOverlayDataTableUpload?: Maybe; /** * Toggle admin access for the given project and user. User must have already * joined the project and shared their user profile. @@ -8827,6 +8874,12 @@ export type MutationCreateOriginalSourceIdArgs = { }; +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationCreateOverlayDataTableUploadArgs = { + input: CreateOverlayDataTableUploadInput; +}; + + /** The root mutation type which contains root level fields which mutate data. */ export type MutationCreatePostArgs = { message: Scalars['JSON']; @@ -9604,6 +9657,12 @@ export type MutationRemoveValidChildSketchClassArgs = { }; +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationRenameOverlayDataTableArgs = { + input: RenameOverlayDataTableInput; +}; + + /** The root mutation type which contains root level fields which mutate data. */ export type MutationRenameReportTabArgs = { input: RenameReportTabInput; @@ -9677,6 +9736,12 @@ export type MutationRevokeApiKeyArgs = { }; +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationRollbackOverlayDataTableVersionArgs = { + input: RollbackOverlayDataTableVersionInput; +}; + + /** The root mutation type which contains root level fields which mutate data. */ export type MutationRollbackToArchivedSourceArgs = { input: RollbackToArchivedSourceInput; @@ -9803,6 +9868,12 @@ export type MutationShareSpriteArgs = { }; +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationSoftDeleteOverlayDataTableArgs = { + input: SoftDeleteOverlayDataTableInput; +}; + + /** The root mutation type which contains root level fields which mutate data. */ export type MutationSoftDeleteSpriteArgs = { input: SoftDeleteSpriteInput; @@ -9815,6 +9886,12 @@ export type MutationSubmitDataUploadArgs = { }; +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationSubmitOverlayDataTableUploadArgs = { + input: SubmitOverlayDataTableUploadInput; +}; + + /** The root mutation type which contains root level fields which mutate data. */ export type MutationToggleAdminAccessArgs = { input: ToggleAdminAccessInput; @@ -10708,6 +10785,140 @@ export type OutstandingSurveyInvites = { token: Scalars['String']; }; +export type OverlayDataTable = Node & { + __typename?: 'OverlayDataTable'; + columnStatsRemote: Scalars['String']; + columnStatsUrl?: Maybe; + createdAt?: Maybe; + createdBy: Scalars['Int']; + deletedAt?: Maybe; + id: Scalars['Int']; + joinColumn: Scalars['String']; + name: Scalars['String']; + /** A globally unique identifier. Can be used in various places throughout the system to identify this single value. */ + nodeId: Scalars['ID']; + overlayJoinColumn: Scalars['String']; + parquetRemote: Scalars['String']; + parquetUrl?: Maybe; + /** Reads a single `Project` that is related to this `OverlayDataTable`. */ + project?: Maybe; + projectId: Scalars['Int']; + replacedById?: Maybe; + rowCount: Scalars['Int']; + tableOfContentsItemId: Scalars['Int']; + updatedAt?: Maybe; + version: Scalars['Int']; +}; + +/** + * A condition to be used against `OverlayDataTable` object types. All fields are + * tested for equality and combined with a logical ‘and.’ + */ +export type OverlayDataTableCondition = { + /** Checks for equality with the object’s `id` field. */ + id?: Maybe; + /** Checks for equality with the object’s `projectId` field. */ + projectId?: Maybe; +}; + +export type OverlayDataTableUpload = Node & { + __typename?: 'OverlayDataTableUpload'; + contentType: Scalars['String']; + createdAt?: Maybe; + errorDetails?: Maybe; + filename: Scalars['String']; + id: Scalars['UUID']; + /** A globally unique identifier. Can be used in various places throughout the system to identify this single value. */ + nodeId: Scalars['ID']; + overlayGeostats: Scalars['JSON']; + overlayJoinColumn?: Maybe; + presignedUploadUrl?: Maybe; + processingOptions: Scalars['JSON']; + /** Reads a single `ProjectBackgroundJob` that is related to this `OverlayDataTableUpload`. */ + projectBackgroundJob?: Maybe; + projectBackgroundJobId: Scalars['UUID']; + replaceOverlayDataTableId?: Maybe; + tableOfContentsItemId: Scalars['Int']; + updatedAt?: Maybe; +}; + +/** + * A condition to be used against `OverlayDataTableUpload` object types. All fields + * are tested for equality and combined with a logical ‘and.’ + */ +export type OverlayDataTableUploadCondition = { + /** Checks for equality with the object’s `id` field. */ + id?: Maybe; + /** Checks for equality with the object’s `projectBackgroundJobId` field. */ + projectBackgroundJobId?: Maybe; +}; + +/** A connection to a list of `OverlayDataTableUpload` values. */ +export type OverlayDataTableUploadsConnection = { + __typename?: 'OverlayDataTableUploadsConnection'; + /** A list of edges which contains the `OverlayDataTableUpload` and cursor to aid in pagination. */ + edges: Array; + /** A list of `OverlayDataTableUpload` objects. */ + nodes: Array; + /** Information to aid in pagination. */ + pageInfo: PageInfo; + /** The count of *all* `OverlayDataTableUpload` you could get from the connection. */ + totalCount: Scalars['Int']; +}; + +/** A `OverlayDataTableUpload` edge in the connection. */ +export type OverlayDataTableUploadsEdge = { + __typename?: 'OverlayDataTableUploadsEdge'; + /** A cursor for use in pagination. */ + cursor?: Maybe; + /** The `OverlayDataTableUpload` at the end of the edge. */ + node: OverlayDataTableUpload; +}; + +/** Methods to use when ordering `OverlayDataTableUpload`. */ +export enum OverlayDataTableUploadsOrderBy { + IdAsc = 'ID_ASC', + IdDesc = 'ID_DESC', + Natural = 'NATURAL', + PrimaryKeyAsc = 'PRIMARY_KEY_ASC', + PrimaryKeyDesc = 'PRIMARY_KEY_DESC', + ProjectBackgroundJobIdAsc = 'PROJECT_BACKGROUND_JOB_ID_ASC', + ProjectBackgroundJobIdDesc = 'PROJECT_BACKGROUND_JOB_ID_DESC' +} + +/** A connection to a list of `OverlayDataTable` values. */ +export type OverlayDataTablesConnection = { + __typename?: 'OverlayDataTablesConnection'; + /** A list of edges which contains the `OverlayDataTable` and cursor to aid in pagination. */ + edges: Array; + /** A list of `OverlayDataTable` objects. */ + nodes: Array; + /** Information to aid in pagination. */ + pageInfo: PageInfo; + /** The count of *all* `OverlayDataTable` you could get from the connection. */ + totalCount: Scalars['Int']; +}; + +/** A `OverlayDataTable` edge in the connection. */ +export type OverlayDataTablesEdge = { + __typename?: 'OverlayDataTablesEdge'; + /** A cursor for use in pagination. */ + cursor?: Maybe; + /** The `OverlayDataTable` at the end of the edge. */ + node: OverlayDataTable; +}; + +/** Methods to use when ordering `OverlayDataTable`. */ +export enum OverlayDataTablesOrderBy { + IdAsc = 'ID_ASC', + IdDesc = 'ID_DESC', + Natural = 'NATURAL', + PrimaryKeyAsc = 'PRIMARY_KEY_ASC', + PrimaryKeyDesc = 'PRIMARY_KEY_DESC', + ProjectIdAsc = 'PROJECT_ID_ASC', + ProjectIdDesc = 'PROJECT_ID_DESC' +} + /** Information about pagination in a connection. */ export type PageInfo = { __typename?: 'PageInfo'; @@ -11093,6 +11304,8 @@ export type Project = Node & { offlineTilePackagesConnection: OfflineTilePackagesConnection; /** Reads and enables pagination through a set of `OfflineTileSetting`. */ offlineTileSettings: Array; + /** Reads and enables pagination through a set of `OverlayDataTable`. */ + overlayDataTablesConnection: OverlayDataTablesConnection; /** Count of all users who have opted into participating in the project, sharing their profile with project administrators. */ participantCount?: Maybe; /** @@ -11512,6 +11725,21 @@ export type ProjectOfflineTileSettingsArgs = { }; +/** + * SeaSketch Project type. This root type contains most of the fields and queries + * needed to drive the application. + */ +export type ProjectOverlayDataTablesConnectionArgs = { + after?: Maybe; + before?: Maybe; + condition?: Maybe; + first?: Maybe; + last?: Maybe; + offset?: Maybe; + orderBy?: Maybe>; +}; + + /** * SeaSketch Project type. This root type contains most of the fields and queries * needed to drive the application. @@ -11723,6 +11951,13 @@ export type ProjectBackgroundJob = Node & { id: Scalars['UUID']; /** A globally unique identifier. Can be used in various places throughout the system to identify this single value. */ nodeId: Scalars['ID']; + /** Reads a single `OverlayDataTableUpload` that is related to this `ProjectBackgroundJob`. */ + overlayDataTableUpload?: Maybe; + /** + * Reads and enables pagination through a set of `OverlayDataTableUpload`. + * @deprecated Please use overlayDataTableUpload instead + */ + overlayDataTableUploadsConnection: OverlayDataTableUploadsConnection; progress?: Maybe; progressMessage: Scalars['String']; /** Reads a single `Project` that is related to this `ProjectBackgroundJob`. */ @@ -11747,6 +11982,17 @@ export type ProjectBackgroundJobDataUploadTasksConnectionArgs = { orderBy?: Maybe>; }; + +export type ProjectBackgroundJobOverlayDataTableUploadsConnectionArgs = { + after?: Maybe; + before?: Maybe; + condition?: Maybe; + first?: Maybe; + last?: Maybe; + offset?: Maybe; + orderBy?: Maybe>; +}; + /** * A condition to be used against `ProjectBackgroundJob` object types. All fields * are tested for equality and combined with a logical ‘and.’ @@ -11777,6 +12023,7 @@ export type ProjectBackgroundJobSubscriptionPayload = { export enum ProjectBackgroundJobType { ArcgisImport = 'ARCGIS_IMPORT', ConsolidateDataSources = 'CONSOLIDATE_DATA_SOURCES', + DataTableUpload = 'DATA_TABLE_UPLOAD', DataUpload = 'DATA_UPLOAD', ReplacementUpload = 'REPLACEMENT_UPLOAD' } @@ -12493,6 +12740,18 @@ export type Query = Node & { optionalBasemapLayerByNodeId?: Maybe; /** Reads and enables pagination through a set of `OriginalSourceId`. */ originalSourceIdsConnection?: Maybe; + overlayDataTable?: Maybe; + /** Reads a single `OverlayDataTable` using its globally unique `ID`. */ + overlayDataTableByNodeId?: Maybe; + overlayDataTableLinkedTocIsDraft?: Maybe; + /** Reads and enables pagination through a set of `OverlayDataTable`. */ + overlayDataTablesConnection?: Maybe; + overlayDataTableUpload?: Maybe; + /** Reads a single `OverlayDataTableUpload` using its globally unique `ID`. */ + overlayDataTableUploadByNodeId?: Maybe; + overlayDataTableUploadByProjectBackgroundJobId?: Maybe; + /** Reads and enables pagination through a set of `OverlayDataTableUpload`. */ + overlayDataTableUploadsConnection?: Maybe; post?: Maybe; /** Reads a single `Post` using its globally unique `ID`. */ postByNodeId?: Maybe; @@ -13390,6 +13649,67 @@ export type QueryOriginalSourceIdsConnectionArgs = { }; +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableArgs = { + id: Scalars['Int']; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableByNodeIdArgs = { + nodeId: Scalars['ID']; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableLinkedTocIsDraftArgs = { + pid?: Maybe; + tocItemId?: Maybe; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTablesConnectionArgs = { + after?: Maybe; + before?: Maybe; + condition?: Maybe; + first?: Maybe; + last?: Maybe; + offset?: Maybe; + orderBy?: Maybe>; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableUploadArgs = { + id: Scalars['UUID']; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableUploadByNodeIdArgs = { + nodeId: Scalars['ID']; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableUploadByProjectBackgroundJobIdArgs = { + projectBackgroundJobId: Scalars['UUID']; +}; + + +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableUploadsConnectionArgs = { + after?: Maybe; + before?: Maybe; + condition?: Maybe; + first?: Maybe; + last?: Maybe; + offset?: Maybe; + orderBy?: Maybe>; +}; + + /** The root query type which gives access points into the data universe. */ export type QueryPostArgs = { id: Scalars['Int']; @@ -14090,6 +14410,40 @@ export type RemoveValidChildSketchClassPayload = { query?: Maybe; }; +/** All input for the `renameOverlayDataTable` mutation. */ +export type RenameOverlayDataTableInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: Maybe; + newName?: Maybe; + tableId?: Maybe; +}; + +/** The output of our `renameOverlayDataTable` mutation. */ +export type RenameOverlayDataTablePayload = { + __typename?: 'RenameOverlayDataTablePayload'; + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe; + overlayDataTable?: Maybe; + /** An edge for our `OverlayDataTable`. May be used by Relay 1. */ + overlayDataTableEdge?: Maybe; + /** Reads a single `Project` that is related to this `OverlayDataTable`. */ + project?: Maybe; + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe; +}; + + +/** The output of our `renameOverlayDataTable` mutation. */ +export type RenameOverlayDataTablePayloadOverlayDataTableEdgeArgs = { + orderBy?: Maybe>; +}; + /** All input for the `renameReportTab` mutation. */ export type RenameReportTabInput = { alternateLanguageSettings?: Maybe; @@ -14626,6 +14980,39 @@ export type RevokeApiKeyPayload = { query?: Maybe; }; +/** All input for the `rollbackOverlayDataTableVersion` mutation. */ +export type RollbackOverlayDataTableVersionInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: Maybe; + tableId?: Maybe; +}; + +/** The output of our `rollbackOverlayDataTableVersion` mutation. */ +export type RollbackOverlayDataTableVersionPayload = { + __typename?: 'RollbackOverlayDataTableVersionPayload'; + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe; + overlayDataTable?: Maybe; + /** An edge for our `OverlayDataTable`. May be used by Relay 1. */ + overlayDataTableEdge?: Maybe; + /** Reads a single `Project` that is related to this `OverlayDataTable`. */ + project?: Maybe; + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe; +}; + + +/** The output of our `rollbackOverlayDataTableVersion` mutation. */ +export type RollbackOverlayDataTableVersionPayloadOverlayDataTableEdgeArgs = { + orderBy?: Maybe>; +}; + /** All input for the `rollbackToArchivedSource` mutation. */ export type RollbackToArchivedSourceInput = { /** @@ -15512,6 +15899,39 @@ export type SketchesRelatedFragmentsRecord = { sketches?: Maybe>>; }; +/** All input for the `softDeleteOverlayDataTable` mutation. */ +export type SoftDeleteOverlayDataTableInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: Maybe; + tableId?: Maybe; +}; + +/** The output of our `softDeleteOverlayDataTable` mutation. */ +export type SoftDeleteOverlayDataTablePayload = { + __typename?: 'SoftDeleteOverlayDataTablePayload'; + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe; + overlayDataTable?: Maybe; + /** An edge for our `OverlayDataTable`. May be used by Relay 1. */ + overlayDataTableEdge?: Maybe; + /** Reads a single `Project` that is related to this `OverlayDataTable`. */ + project?: Maybe; + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe; +}; + + +/** The output of our `softDeleteOverlayDataTable` mutation. */ +export type SoftDeleteOverlayDataTablePayloadOverlayDataTableEdgeArgs = { + orderBy?: Maybe>; +}; + /** All input for the `softDeleteSprite` mutation. */ export type SoftDeleteSpriteInput = { /** @@ -15735,6 +16155,31 @@ export type SubmitDataUploadPayload = { query?: Maybe; }; +/** All input for the `submitOverlayDataTableUpload` mutation. */ +export type SubmitOverlayDataTableUploadInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: Maybe; + jobId?: Maybe; +}; + +/** The output of our `submitOverlayDataTableUpload` mutation. */ +export type SubmitOverlayDataTableUploadPayload = { + __typename?: 'SubmitOverlayDataTableUploadPayload'; + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe; + /** Reads a single `Project` that is related to this `ProjectBackgroundJob`. */ + project?: Maybe; + projectBackgroundJob?: Maybe; + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe; +}; + /** The root subscription type: contains realtime events you can subscribe to with the `subscription` operation. */ export type Subscription = { __typename?: 'Subscription'; @@ -16282,8 +16727,14 @@ export type TableOfContentsItem = Node & { /** If is_folder=false, a DataLayers visibility will be controlled by this item */ dataLayerId?: Maybe; dataSourceType?: Maybe; + /** Reads and enables pagination through a set of `ChangeLog`. */ + dataTableChangeLogs?: Maybe>; + /** Overlay attribute name used as the canonical feature ID for linked data tables. Required when enable_data_tables is true. */ + dataTableJoinColumn?: Maybe; /** Reads and enables pagination through a set of `DownloadOption`. */ downloadOptions?: Maybe>; + /** When true, admins can attach CSV data tables linked to this layer by a canonical join column. */ + enableDataTables: Scalars['Boolean']; enableDownload: Scalars['Boolean']; ftsAr?: Maybe; ftsDa?: Maybe; @@ -16332,6 +16783,8 @@ export type TableOfContentsItem = Node & { metadataXml?: Maybe; /** A globally unique identifier. Can be used in various places throughout the system to identify this single value. */ nodeId: Scalars['ID']; + /** Reads and enables pagination through a set of `OverlayDataTable`. */ + overlayDataTables?: Maybe>; /** * stable_id of the parent folder, if any. This property cannot be changed * directly. To rearrange items into folders, use the @@ -16422,6 +16875,22 @@ export type TableOfContentsItemChangeLogsArgs = { }; +/** + * TableOfContentsItems represent a tree-view of folders and operational layers + * that can be added to the map. Both layers and folders may be nested into other + * folders for organization, and each folder has its own access control list. + * + * Items that represent data layers have a `DataLayer` relation, which in turn has + * a reference to a `DataSource`. Usually these relations should be fetched in + * batch only once the layer is turned on, using the + * `dataLayersAndSourcesByLayerId` query. + */ +export type TableOfContentsItemDataTableChangeLogsArgs = { + first?: Maybe; + offset?: Maybe; +}; + + /** * TableOfContentsItems represent a tree-view of folders and operational layers * that can be added to the map. Both layers and folders may be nested into other @@ -16454,6 +16923,22 @@ export type TableOfContentsItemMetadataChangeLogsArgs = { }; +/** + * TableOfContentsItems represent a tree-view of folders and operational layers + * that can be added to the map. Both layers and folders may be nested into other + * folders for organization, and each folder has its own access control list. + * + * Items that represent data layers have a `DataLayer` relation, which in turn has + * a reference to a `DataSource`. Usually these relations should be fetched in + * batch only once the layer is turned on, using the + * `dataLayersAndSourcesByLayerId` query. + */ +export type TableOfContentsItemOverlayDataTablesArgs = { + first?: Maybe; + offset?: Maybe; +}; + + /** * TableOfContentsItems represent a tree-view of folders and operational layers * that can be added to the map. Both layers and folders may be nested into other @@ -16626,6 +17111,10 @@ export type TableOfContentsItemPatch = { bounds?: Maybe>>; /** If is_folder=false, a DataLayers visibility will be controlled by this item */ dataLayerId?: Maybe; + /** Overlay attribute name used as the canonical feature ID for linked data tables. Required when enable_data_tables is true. */ + dataTableJoinColumn?: Maybe; + /** When true, admins can attach CSV data tables linked to this layer by a canonical join column. */ + enableDataTables?: Maybe; enableDownload?: Maybe; geoprocessingReferenceId?: Maybe; hideChildren?: Maybe; @@ -20567,6 +21056,9 @@ export type JobDetailsFragment = ( { __typename?: 'TableOfContentsItem' } & Pick )> } + )>, overlayDataTableUpload?: Maybe<( + { __typename?: 'OverlayDataTableUpload' } + & Pick )> } ); @@ -21167,6 +21659,24 @@ export type LayerSettingsChangeLogQuery = ( )> } ); +export type DataTableChangeLogQueryVariables = Exact<{ + id: Scalars['Int']; + first: Scalars['Int']; +}>; + + +export type DataTableChangeLogQuery = ( + { __typename?: 'Query' } + & { tableOfContentsItem?: Maybe<( + { __typename?: 'TableOfContentsItem' } + & Pick + & { dataTableChangeLogs?: Maybe> } + )> } +); + export type ResolvableLayerCommentDetailsFragment = ( { __typename?: 'ResolvableLayerComment' } & Pick @@ -21203,7 +21713,7 @@ export type ResolvableLayerCommentThreadForChangelogQuery = ( export type FullAdminOverlayFragment = ( { __typename?: 'TableOfContentsItem' } - & Pick + & Pick & { acl?: Maybe<( { __typename?: 'Acl' } & Pick @@ -21216,11 +21726,14 @@ export type FullAdminOverlayFragment = ( & Pick )>>>, projectBackgroundJobs?: Maybe + & JobDetailsFragment )>>, dataLayer?: Maybe<( { __typename?: 'DataLayer' } & FullAdminDataLayerFragment - )>, relatedReportCardDetails?: Maybe, overlayDataTables?: Maybe>, relatedReportCardDetails?: Maybe & { sketchClass: ( @@ -21290,6 +21803,24 @@ export type UpdateEnableDownloadMutation = ( )> } ); +export type UpdateDataTablesSettingsMutationVariables = Exact<{ + id: Scalars['Int']; + enableDataTables?: Maybe; + dataTableJoinColumn?: Maybe; +}>; + + +export type UpdateDataTablesSettingsMutation = ( + { __typename?: 'Mutation' } + & { updateTableOfContentsItem?: Maybe<( + { __typename?: 'UpdateTableOfContentsItemPayload' } + & { tableOfContentsItem?: Maybe<( + { __typename?: 'TableOfContentsItem' } + & Pick + )> } + )> } +); + export type UpdateLayerMutationVariables = Exact<{ id: Scalars['Int']; renderUnder?: Maybe; @@ -23273,6 +23804,104 @@ export type GetTilePackageQuery = ( )> } ); +export type OverlayDataTableDetailsFragment = ( + { __typename?: 'OverlayDataTable' } + & Pick +); + +export type OverlayDataTableUploadDetailsFragment = ( + { __typename?: 'OverlayDataTableUpload' } + & Pick +); + +export type CreateOverlayDataTableUploadMutationVariables = Exact<{ + tableOfContentsItemId: Scalars['Int']; + filename: Scalars['String']; + contentType: Scalars['String']; + processingOptions?: Maybe; + replaceOverlayDataTableId?: Maybe; +}>; + + +export type CreateOverlayDataTableUploadMutation = ( + { __typename?: 'Mutation' } + & { createOverlayDataTableUpload?: Maybe<( + { __typename?: 'CreateOverlayDataTableUploadPayload' } + & { overlayDataTableUpload?: Maybe<( + { __typename?: 'OverlayDataTableUpload' } + & OverlayDataTableUploadDetailsFragment + )>, projectBackgroundJob?: Maybe<( + { __typename?: 'ProjectBackgroundJob' } + & JobDetailsFragment + )> } + )> } +); + +export type SubmitOverlayDataTableUploadMutationVariables = Exact<{ + jobId: Scalars['UUID']; +}>; + + +export type SubmitOverlayDataTableUploadMutation = ( + { __typename?: 'Mutation' } + & { submitOverlayDataTableUpload?: Maybe<( + { __typename?: 'SubmitOverlayDataTableUploadPayload' } + & { projectBackgroundJob?: Maybe<( + { __typename?: 'ProjectBackgroundJob' } + & Pick + )> } + )> } +); + +export type RenameOverlayDataTableMutationVariables = Exact<{ + id: Scalars['Int']; + name: Scalars['String']; +}>; + + +export type RenameOverlayDataTableMutation = ( + { __typename?: 'Mutation' } + & { renameOverlayDataTable?: Maybe<( + { __typename?: 'RenameOverlayDataTablePayload' } + & { overlayDataTable?: Maybe<( + { __typename?: 'OverlayDataTable' } + & OverlayDataTableDetailsFragment + )> } + )> } +); + +export type SoftDeleteOverlayDataTableMutationVariables = Exact<{ + id: Scalars['Int']; +}>; + + +export type SoftDeleteOverlayDataTableMutation = ( + { __typename?: 'Mutation' } + & { softDeleteOverlayDataTable?: Maybe<( + { __typename?: 'SoftDeleteOverlayDataTablePayload' } + & { overlayDataTable?: Maybe<( + { __typename?: 'OverlayDataTable' } + & Pick + )> } + )> } +); + +export type RollbackOverlayDataTableVersionMutationVariables = Exact<{ + id: Scalars['Int']; +}>; + + +export type RollbackOverlayDataTableVersionMutation = ( + { __typename?: 'Mutation' } + & { rollbackOverlayDataTableVersion?: Maybe<( + { __typename?: 'RollbackOverlayDataTableVersionPayload' } + & { overlayDataTable?: Maybe<( + { __typename?: 'OverlayDataTable' } + & OverlayDataTableDetailsFragment + )> } + )> } +); + export type ProjectAccessControlSettingsQueryVariables = Exact<{ slug: Scalars['String']; }>; @@ -27562,6 +28191,12 @@ export const JobDetailsFragmentDoc = /*#__PURE__*/ gql` title } } + overlayDataTableUpload { + id + tableOfContentsItemId + filename + replaceOverlayDataTableId + } } ${DataUploadDetailsFragmentDoc}`; export const DataUploadExtendedDetailsFragmentDoc = /*#__PURE__*/ gql` @@ -27839,6 +28474,24 @@ export const FullAdminDataLayerFragmentDoc = /*#__PURE__*/ gql` } ${FullAdminSourceFragmentDoc} ${ArchivedSourceFragmentDoc}`; +export const OverlayDataTableDetailsFragmentDoc = /*#__PURE__*/ gql` + fragment OverlayDataTableDetails on OverlayDataTable { + id + name + version + joinColumn + overlayJoinColumn + rowCount + parquetRemote + columnStatsRemote + parquetUrl + columnStatsUrl + deletedAt + replacedById + createdAt + updatedAt +} + `; export const UserProfileDetailsFragmentDoc = /*#__PURE__*/ gql` fragment UserProfileDetails on Profile { userId @@ -27902,22 +28555,21 @@ export const FullAdminOverlayFragmentDoc = /*#__PURE__*/ gql` stableId title enableDownload + enableDataTables + dataTableJoinColumn geoprocessingReferenceId copiedFromDataLibraryTemplateId primaryDownloadUrl projectBackgroundJobs { - id - type - title - state - progress - progressMessage - errorMessage + ...JobDetails } hasOriginalSourceUpload dataLayer { ...FullAdminDataLayer } + overlayDataTables { + ...OverlayDataTableDetails + } relatedReportCardDetails { isDraft title @@ -27934,7 +28586,9 @@ export const FullAdminOverlayFragmentDoc = /*#__PURE__*/ gql` ...ResolvableLayerCommentThread } } - ${FullAdminDataLayerFragmentDoc} + ${JobDetailsFragmentDoc} +${FullAdminDataLayerFragmentDoc} +${OverlayDataTableDetailsFragmentDoc} ${ResolvableLayerCommentThreadFragmentDoc}`; export const MetadataXmlFileFragmentDoc = /*#__PURE__*/ gql` fragment MetadataXmlFile on DataUploadOutput { @@ -28245,6 +28899,20 @@ export const OfflineTileSettingsFragmentDoc = /*#__PURE__*/ gql` } } `; +export const OverlayDataTableUploadDetailsFragmentDoc = /*#__PURE__*/ gql` + fragment OverlayDataTableUploadDetails on OverlayDataTableUpload { + id + tableOfContentsItemId + filename + contentType + processingOptions + overlayJoinColumn + errorDetails + presignedUploadUrl + replaceOverlayDataTableId + projectBackgroundJobId +} + `; export const ProjectMetadataFragmentDoc = /*#__PURE__*/ gql` fragment ProjectMetadata on Project { id @@ -30401,6 +31069,16 @@ export const LayerSettingsChangeLogDocument = /*#__PURE__*/ gql` } } ${ChangeLogDetailsFragmentDoc}`; +export const DataTableChangeLogDocument = /*#__PURE__*/ gql` + query DataTableChangeLog($id: Int!, $first: Int!) { + tableOfContentsItem(id: $id) { + id + dataTableChangeLogs(first: $first) { + ...ChangeLogDetails + } + } +} + ${ChangeLogDetailsFragmentDoc}`; export const ResolvableLayerCommentThreadForChangelogDocument = /*#__PURE__*/ gql` query ResolvableLayerCommentThreadForChangelog($commentId: Int!) { getResolvableLayerComment(commentId: $commentId) { @@ -30449,6 +31127,19 @@ export const UpdateEnableDownloadDocument = /*#__PURE__*/ gql` } } `; +export const UpdateDataTablesSettingsDocument = /*#__PURE__*/ gql` + mutation UpdateDataTablesSettings($id: Int!, $enableDataTables: Boolean, $dataTableJoinColumn: String) { + updateTableOfContentsItem( + input: {id: $id, patch: {enableDataTables: $enableDataTables, dataTableJoinColumn: $dataTableJoinColumn}} + ) { + tableOfContentsItem { + id + enableDataTables + dataTableJoinColumn + } + } +} + `; export const UpdateLayerDocument = /*#__PURE__*/ gql` mutation UpdateLayer($id: Int!, $renderUnder: RenderUnderType, $mapboxGlStyles: JSON, $sublayer: String, $staticId: String) { updateDataLayer( @@ -31779,6 +32470,61 @@ export const GetTilePackageDocument = /*#__PURE__*/ gql` } } ${OfflineTilePackageDetailsFragmentDoc}`; +export const CreateOverlayDataTableUploadDocument = /*#__PURE__*/ gql` + mutation CreateOverlayDataTableUpload($tableOfContentsItemId: Int!, $filename: String!, $contentType: String!, $processingOptions: JSON, $replaceOverlayDataTableId: Int) { + createOverlayDataTableUpload( + input: {tocItemId: $tableOfContentsItemId, filename: $filename, contentType: $contentType, processingOptions: $processingOptions, replaceOverlayDataTableId: $replaceOverlayDataTableId} + ) { + overlayDataTableUpload { + ...OverlayDataTableUploadDetails + } + projectBackgroundJob { + ...JobDetails + } + } +} + ${OverlayDataTableUploadDetailsFragmentDoc} +${JobDetailsFragmentDoc}`; +export const SubmitOverlayDataTableUploadDocument = /*#__PURE__*/ gql` + mutation SubmitOverlayDataTableUpload($jobId: UUID!) { + submitOverlayDataTableUpload(input: {jobId: $jobId}) { + projectBackgroundJob { + id + state + progress + progressMessage + } + } +} + `; +export const RenameOverlayDataTableDocument = /*#__PURE__*/ gql` + mutation RenameOverlayDataTable($id: Int!, $name: String!) { + renameOverlayDataTable(input: {tableId: $id, newName: $name}) { + overlayDataTable { + ...OverlayDataTableDetails + } + } +} + ${OverlayDataTableDetailsFragmentDoc}`; +export const SoftDeleteOverlayDataTableDocument = /*#__PURE__*/ gql` + mutation SoftDeleteOverlayDataTable($id: Int!) { + softDeleteOverlayDataTable(input: {tableId: $id}) { + overlayDataTable { + id + deletedAt + } + } +} + `; +export const RollbackOverlayDataTableVersionDocument = /*#__PURE__*/ gql` + mutation RollbackOverlayDataTableVersion($id: Int!) { + rollbackOverlayDataTableVersion(input: {tableId: $id}) { + overlayDataTable { + ...OverlayDataTableDetails + } + } +} + ${OverlayDataTableDetailsFragmentDoc}`; export const ProjectAccessControlSettingsDocument = /*#__PURE__*/ gql` query ProjectAccessControlSettings($slug: String!) { projectBySlug(slug: $slug) { @@ -34213,6 +34959,7 @@ export const namedOperations = { layersAndSourcesForItems: 'layersAndSourcesForItems', GetFolder: 'GetFolder', LayerSettingsChangeLog: 'LayerSettingsChangeLog', + DataTableChangeLog: 'DataTableChangeLog', ResolvableLayerCommentThreadForChangelog: 'ResolvableLayerCommentThreadForChangelog', GetLayerItem: 'GetLayerItem', InteractivitySettingsForLayer: 'InteractivitySettingsForLayer', @@ -34370,6 +35117,7 @@ export const namedOperations = { UpdateFolder: 'UpdateFolder', UpdateTableOfContentsItem: 'UpdateTableOfContentsItem', UpdateEnableDownload: 'UpdateEnableDownload', + UpdateDataTablesSettings: 'UpdateDataTablesSettings', UpdateLayer: 'UpdateLayer', UpdateDataSource: 'UpdateDataSource', UpdateInteractivitySettings: 'UpdateInteractivitySettings', @@ -34417,6 +35165,11 @@ export const namedOperations = { UpdateBasemapOfflineTileSettings: 'UpdateBasemapOfflineTileSettings', generateOfflineTilePackage: 'generateOfflineTilePackage', deleteTilePackage: 'deleteTilePackage', + CreateOverlayDataTableUpload: 'CreateOverlayDataTableUpload', + SubmitOverlayDataTableUpload: 'SubmitOverlayDataTableUpload', + RenameOverlayDataTable: 'RenameOverlayDataTable', + SoftDeleteOverlayDataTable: 'SoftDeleteOverlayDataTable', + RollbackOverlayDataTableVersion: 'RollbackOverlayDataTableVersion', updateProjectAccessControlSettings: 'updateProjectAccessControlSettings', toggleLanguageSupport: 'toggleLanguageSupport', setTranslatedProps: 'setTranslatedProps', @@ -34591,6 +35344,8 @@ export const namedOperations = { OfflineBasemapDetails: 'OfflineBasemapDetails', OfflineTileSettingsForCalculation: 'OfflineTileSettingsForCalculation', OfflineTileSettings: 'OfflineTileSettings', + OverlayDataTableDetails: 'OverlayDataTableDetails', + OverlayDataTableUploadDetails: 'OverlayDataTableUploadDetails', ProjectMetadata: 'ProjectMetadata', ProjectPublicDetailsMetadata: 'ProjectPublicDetailsMetadata', ProjectMetadataMeFrag: 'ProjectMetadataMeFrag', diff --git a/packages/client/src/index.css b/packages/client/src/index.css index a4892a2b8..110de7b55 100644 --- a/packages/client/src/index.css +++ b/packages/client/src/index.css @@ -7926,6 +7926,10 @@ select{ max-height:100vh } +.max-h-\[70vh\]{ + max-height:70vh +} + .min-h-0{ min-height:0px } @@ -8472,6 +8476,15 @@ select{ min-width:32rem } +.min-w-max{ + min-width:-webkit-max-content; + min-width:max-content +} + +.min-w-\[14rem\]{ + min-width:14rem +} + .\!max-w-128{ max-width:32rem !important } @@ -10711,6 +10724,11 @@ select{ border-color:rgb(63 63 70 / var(--tw-border-opacity, 1)) } +.border-indigo-300{ + --tw-border-opacity:1; + border-color:rgb(165 180 252 / var(--tw-border-opacity, 1)) +} + .border-b-black{ --tw-border-opacity:1; border-bottom-color:rgb(0 0 0 / var(--tw-border-opacity, 1)) @@ -11732,6 +11750,10 @@ select{ background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1)) } +.bg-gray-800\/90{ + background-color:rgb(31 41 55 / 0.9) +} + .bg-opacity-10{ --tw-bg-opacity:0.1 } @@ -12963,6 +12985,10 @@ select{ padding-top:1px } +.pb-2\.5{ + padding-bottom:0.625rem +} + .text-left{ text-align:left } @@ -13973,6 +13999,10 @@ select{ color:rgb(252 165 165 / var(--tw-placeholder-opacity, 1)) } +.accent-gray-400{ + accent-color:#9ca3af +} + .\!opacity-100{ opacity:1 !important } @@ -14857,6 +14887,14 @@ select{ contain:var(--tw-contain-size) var(--tw-contain-layout) var(--tw-contain-paint) var(--tw-contain-style) } +.\[-ms-overflow-style\:none\]{ + -ms-overflow-style:none +} + +.\[scrollbar-width\:none\]{ + scrollbar-width:none +} + .\[scrollbar-width\:thin\]{ scrollbar-width:thin } @@ -15381,6 +15419,11 @@ input[type="checkbox"][indeterminate="true"]:checked { border-color:transparent } +.hover\:border-gray-400:hover{ + --tw-border-opacity:1; + border-color:rgb(156 163 175 / var(--tw-border-opacity, 1)) +} + .hover\:border-opacity-100:hover{ --tw-border-opacity:1 } @@ -15649,6 +15692,14 @@ input[type="checkbox"][indeterminate="true"]:checked { background-color:rgb(253 230 138 / var(--tw-bg-opacity, 1)) } +.hover\:bg-gray-600\/70:hover{ + background-color:rgb(75 85 99 / 0.7) +} + +.hover\:bg-gray-700\/80:hover{ + background-color:rgb(55 65 81 / 0.8) +} + .hover\:bg-opacity-10:hover{ --tw-bg-opacity:0.1 } @@ -15865,6 +15916,21 @@ input[type="checkbox"][indeterminate="true"]:checked { color:rgb(255 255 255 / var(--tw-text-opacity, 1)) } +.hover\:text-primary-500:hover{ + --tw-text-opacity:1; + color:rgb(46 115 182 / var(--tw-text-opacity, 1)) +} + +.hover\:text-indigo-700:hover{ + --tw-text-opacity:1; + color:rgb(67 56 202 / var(--tw-text-opacity, 1)) +} + +.hover\:text-gray-200:hover{ + --tw-text-opacity:1; + color:rgb(229 231 235 / var(--tw-text-opacity, 1)) +} + .hover\:underline:hover{ -webkit-text-decoration-line:underline; text-decoration-line:underline @@ -16368,6 +16434,11 @@ input[type="checkbox"][indeterminate="true"]:checked { --tw-ring-color:rgb(255 255 255 / 0.5) } +.focus-visible\:ring-indigo-300:focus-visible{ + --tw-ring-opacity:1; + --tw-ring-color:rgb(165 180 252 / var(--tw-ring-opacity, 1)) +} + .focus-visible\:ring-offset-1:focus-visible{ --tw-ring-offset-width:1px } @@ -18785,6 +18856,10 @@ input[type="checkbox"][indeterminate="true"]:checked { } } +.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{ + display:none +} + .\[\&\>span\]\:min-h-0>span{ min-height:0px } diff --git a/packages/client/src/queries/DataUploads.graphql b/packages/client/src/queries/DataUploads.graphql index ff0508ce4..9c48ed266 100644 --- a/packages/client/src/queries/DataUploads.graphql +++ b/packages/client/src/queries/DataUploads.graphql @@ -60,6 +60,12 @@ fragment JobDetails on ProjectBackgroundJob { title } } + overlayDataTableUpload { + id + tableOfContentsItemId + filename + replaceOverlayDataTableId + } } mutation submitDataUpload($jobId: UUID!, $enableAiDataAnalyst: Boolean) { diff --git a/packages/client/src/queries/DraftTableOfContents.graphql b/packages/client/src/queries/DraftTableOfContents.graphql index 5fe46aa52..588537ead 100644 --- a/packages/client/src/queries/DraftTableOfContents.graphql +++ b/packages/client/src/queries/DraftTableOfContents.graphql @@ -460,6 +460,15 @@ query LayerSettingsChangeLog($id: Int!, $first: Int!) { } } +query DataTableChangeLog($id: Int!, $first: Int!) { + tableOfContentsItem(id: $id) { + id + dataTableChangeLogs(first: $first) { + ...ChangeLogDetails + } + } +} + fragment ResolvableLayerCommentDetails on ResolvableLayerComment { id projectId @@ -514,22 +523,21 @@ fragment FullAdminOverlay on TableOfContentsItem { stableId title enableDownload + enableDataTables + dataTableJoinColumn geoprocessingReferenceId copiedFromDataLibraryTemplateId primaryDownloadUrl projectBackgroundJobs { - id - type - title - state - progress - progressMessage - errorMessage + ...JobDetails } hasOriginalSourceUpload dataLayer { ...FullAdminDataLayer } + overlayDataTables { + ...OverlayDataTableDetails + } relatedReportCardDetails { isDraft title @@ -599,6 +607,28 @@ mutation UpdateEnableDownload($id: Int!, $enableDownload: Boolean) { } } +mutation UpdateDataTablesSettings( + $id: Int! + $enableDataTables: Boolean + $dataTableJoinColumn: String +) { + updateTableOfContentsItem( + input: { + id: $id + patch: { + enableDataTables: $enableDataTables + dataTableJoinColumn: $dataTableJoinColumn + } + } + ) { + tableOfContentsItem { + id + enableDataTables + dataTableJoinColumn + } + } +} + mutation UpdateLayer( $id: Int! $renderUnder: RenderUnderType diff --git a/packages/client/src/queries/OverlayDataTables.graphql b/packages/client/src/queries/OverlayDataTables.graphql new file mode 100644 index 000000000..7df13b504 --- /dev/null +++ b/packages/client/src/queries/OverlayDataTables.graphql @@ -0,0 +1,90 @@ +fragment OverlayDataTableDetails on OverlayDataTable { + id + name + version + joinColumn + overlayJoinColumn + rowCount + parquetRemote + columnStatsRemote + parquetUrl + columnStatsUrl + deletedAt + replacedById + createdAt + updatedAt +} + +fragment OverlayDataTableUploadDetails on OverlayDataTableUpload { + id + tableOfContentsItemId + filename + contentType + processingOptions + overlayJoinColumn + errorDetails + presignedUploadUrl + replaceOverlayDataTableId + projectBackgroundJobId +} + +mutation CreateOverlayDataTableUpload( + $tableOfContentsItemId: Int! + $filename: String! + $contentType: String! + $processingOptions: JSON + $replaceOverlayDataTableId: Int +) { + createOverlayDataTableUpload( + input: { + tocItemId: $tableOfContentsItemId + filename: $filename + contentType: $contentType + processingOptions: $processingOptions + replaceOverlayDataTableId: $replaceOverlayDataTableId + } + ) { + overlayDataTableUpload { + ...OverlayDataTableUploadDetails + } + projectBackgroundJob { + ...JobDetails + } + } +} + +mutation SubmitOverlayDataTableUpload($jobId: UUID!) { + submitOverlayDataTableUpload(input: { jobId: $jobId }) { + projectBackgroundJob { + id + state + progress + progressMessage + } + } +} + +mutation RenameOverlayDataTable($id: Int!, $name: String!) { + renameOverlayDataTable(input: { tableId: $id, newName: $name }) { + overlayDataTable { + ...OverlayDataTableDetails + } + } +} + +mutation SoftDeleteOverlayDataTable($id: Int!) { + softDeleteOverlayDataTable(input: { tableId: $id }) { + overlayDataTable { + id + deletedAt + } + } +} + +mutation RollbackOverlayDataTableVersion($id: Int!) { + rollbackOverlayDataTableVersion(input: { tableId: $id }) { + overlayDataTable { + ...OverlayDataTableDetails + } + } +} diff --git a/packages/data-tables-handler/Dockerfile b/packages/data-tables-handler/Dockerfile new file mode 100644 index 000000000..10d7d790a --- /dev/null +++ b/packages/data-tables-handler/Dockerfile @@ -0,0 +1,21 @@ +FROM amazon/aws-lambda-nodejs:20 as builder +WORKDIR /usr/app +COPY data-tables-handler/package.json ./ +RUN npm install +WORKDIR /usr/geostats-types +COPY geostats-types/package.json geostats-types/package-lock.json ./ +RUN npm ci +COPY geostats-types/ ./ +RUN npm run build +WORKDIR /usr/app +RUN mkdir -p node_modules/@seasketch && cp -r /usr/geostats-types node_modules/@seasketch/geostats-types +COPY data-tables-handler/handler.ts ./ +COPY data-tables-handler/src ./src +RUN npm run build + +FROM amazon/aws-lambda-nodejs:20 +WORKDIR ${LAMBDA_TASK_ROOT} +COPY --from=builder /usr/app/dist/* ./ +COPY --from=builder /usr/app/dist/src ./src +COPY --from=builder /usr/app/node_modules ./node_modules +CMD ["handler.processDataTableUpload"] diff --git a/packages/data-tables-handler/dist/handler.d.ts b/packages/data-tables-handler/dist/handler.d.ts new file mode 100644 index 000000000..668680154 --- /dev/null +++ b/packages/data-tables-handler/dist/handler.d.ts @@ -0,0 +1,3 @@ +import type { DataTablesHandlerRequest } from "./src/types"; +export type { DataTablesHandlerRequest, DataTablesHandlerResponse } from "./src/types"; +export declare const processDataTableUpload: (event: DataTablesHandlerRequest) => Promise; diff --git a/packages/data-tables-handler/dist/handler.js b/packages/data-tables-handler/dist/handler.js new file mode 100644 index 000000000..15a36c4bd --- /dev/null +++ b/packages/data-tables-handler/dist/handler.js @@ -0,0 +1,16 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.processDataTableUpload = void 0; +const handleDataTableUpload_1 = __importDefault(require("./src/handleDataTableUpload")); +const processDataTableUpload = async (event) => { + try { + return await (0, handleDataTableUpload_1.default)(event); + } + catch (e) { + return { error: e.message }; + } +}; +exports.processDataTableUpload = processDataTableUpload; diff --git a/packages/data-tables-handler/dist/server.d.ts b/packages/data-tables-handler/dist/server.d.ts new file mode 100644 index 000000000..bd6913440 --- /dev/null +++ b/packages/data-tables-handler/dist/server.d.ts @@ -0,0 +1,2 @@ +#!/usr/bin/env tsx +export {}; diff --git a/packages/data-tables-handler/dist/server.js b/packages/data-tables-handler/dist/server.js new file mode 100644 index 000000000..5332b61cc --- /dev/null +++ b/packages/data-tables-handler/dist/server.js @@ -0,0 +1,58 @@ +#!/usr/bin/env tsx +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const http_1 = require("http"); +const dotenv = __importStar(require("dotenv")); +dotenv.config(); +const PORT = process.env.PORT || 3006; +const server = (0, http_1.createServer)(function (req, res) { + if (req.method === "POST") { + let body = ""; + req.on("data", (chunk) => { + body += chunk.toString(); + }); + req.on("end", async () => { + const data = JSON.parse(body); + try { + const { processDataTableUpload } = await Promise.resolve().then(() => __importStar(require("./handler"))); + const outputs = await processDataTableUpload(data); + res.setHeader("Content-Type", "application/json"); + res.end(JSON.stringify(outputs)); + } + catch (e) { + res.writeHead(500, { "Content-Type": "application/json" }); + res.end(JSON.stringify({ error: e.message })); + } + }); + } + else { + res.writeHead(200); + res.end("POST to simulate data-tables-handler lambda"); + } +}); +server.listen(PORT); +console.log(`Data tables handler dev server on http://localhost:${PORT}`); +console.log(`Set DATA_TABLES_LAMBDA_DEV_HANDLER=http://localhost:${PORT}`); diff --git a/packages/data-tables-handler/dist/src/handleDataTableUpload.d.ts b/packages/data-tables-handler/dist/src/handleDataTableUpload.d.ts new file mode 100644 index 000000000..b3fad443b --- /dev/null +++ b/packages/data-tables-handler/dist/src/handleDataTableUpload.d.ts @@ -0,0 +1,2 @@ +import type { DataTablesHandlerRequest, DataTablesHandlerResponse } from "./types"; +export default function handleDataTableUpload(request: DataTablesHandlerRequest): Promise; diff --git a/packages/data-tables-handler/dist/src/handleDataTableUpload.js b/packages/data-tables-handler/dist/src/handleDataTableUpload.js new file mode 100644 index 000000000..1a5a7221e --- /dev/null +++ b/packages/data-tables-handler/dist/src/handleDataTableUpload.js @@ -0,0 +1,162 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = handleDataTableUpload; +const tmp_1 = require("tmp"); +const path = __importStar(require("path")); +const fs_1 = require("fs"); +const lambda_db_client_1 = require("./lambda-db-client"); +const remotes_1 = require("./remotes"); +const validateJoinColumn_1 = require("./validateJoinColumn"); +const processWithDuckDb_1 = require("./processWithDuckDb"); +function defaultTableName(filename) { + return filename.replace(/\.[^.]+$/, ""); +} +function logDebug(message, details) { + const suffix = details ? ` ${JSON.stringify(details)}` : ""; + console.log(`[data-tables-handler] ${message}${suffix}`); +} +async function handleDataTableUpload(request) { + const { taskId, uploadId, objectKey, suffix, skipLoggingProgress } = request; + logDebug("starting upload", { + taskId, + uploadId, + objectKey, + suffix, + skipLoggingProgress: Boolean(skipLoggingProgress), + }); + const pgClient = await (0, lambda_db_client_1.getClient)(); + const updateProgress = async (state, progressMessage, progress) => { + if (skipLoggingProgress) + return; + logDebug("updateProgress", { taskId, state, progressMessage, progress }); + try { + if (progress !== undefined) { + await pgClient.query(`update project_background_jobs set state = $1, progress = least($2::numeric, 1.0::numeric), progress_message = $3 where id = $4`, [state, progress, progressMessage, taskId]); + } + else { + await pgClient.query(`update project_background_jobs set state = $1, progress_message = $2 where id = $3`, [state, progressMessage, taskId]); + } + } + catch (e) { + logDebug("updateProgress failed", { + taskId, + state, + progressMessage, + progress, + error: e.message, + }); + throw e; + } + }; + const tmpobj = (0, tmp_1.dirSync)({ unsafeCleanup: true, keep: false, prefix: "dt-" }); + const csvPath = path.join(tmpobj.name, "input.csv"); + const parquetPath = path.join(tmpobj.name, "data.parquet"); + const statsPath = path.join(tmpobj.name, "column-stats.json"); + try { + await updateProgress("running", "downloading", 0.05); + const uploadQ = await pgClient.query(`select filename, processing_options, overlay_geostats, overlay_join_column, replace_overlay_data_table_id + from overlay_data_table_uploads where id = $1`, [uploadId]); + if (!uploadQ.rows[0]) { + throw new Error("Upload record not found"); + } + const upload = uploadQ.rows[0]; + const processingOptions = (upload.processing_options || + {}); + const joinColumn = processingOptions.joinColumn; + const overlayJoinColumn = processingOptions.overlayJoinColumn || upload.overlay_join_column; + if (!joinColumn || !overlayJoinColumn) { + throw new Error("Join column and overlay join column are required"); + } + logDebug("downloading staging object", { objectKey, csvPath }); + await (0, remotes_1.getStagingObject)(csvPath, objectKey); + await updateProgress("running", "processing", 0.2); + logDebug("processing csv with duckdb", { csvPath, parquetPath }); + const { rowCount, headers } = await (0, processWithDuckDb_1.processCsvWithDuckDb)(csvPath, parquetPath, processingOptions); + logDebug("csv processed", { rowCount, columnCount: headers.length }); + const joinValues = await (0, processWithDuckDb_1.readJoinValues)(parquetPath, joinColumn); + const layer = (0, validateJoinColumn_1.getGeostatsLayer)(upload.overlay_geostats); + const joinValidation = (0, validateJoinColumn_1.validateJoinColumnChoice)(headers, joinColumn, overlayJoinColumn, layer, joinValues); + logDebug("join validation complete", { + joinColumn, + overlayJoinColumn, + matchRate: joinValidation.matchRate, + matchedRows: joinValidation.matchedRows, + unmatchedRows: joinValidation.unmatchedRows, + }); + await updateProgress("running", "computing stats", 0.6); + const tableName = processingOptions.name || defaultTableName(upload.filename); + const columnStats = await (0, processWithDuckDb_1.computeColumnStatsFromParquet)(parquetPath, tableName, { + column: joinColumn, + overlayAttribute: overlayJoinColumn, + matchRate: joinValidation.matchRate, + matchedRows: joinValidation.matchedRows, + unmatchedRows: joinValidation.unmatchedRows, + unmatchedOverlayValues: joinValidation.unmatchedOverlayValues, + }); + (0, fs_1.writeFileSync)(statsPath, JSON.stringify(columnStats)); + await updateProgress("running", "uploading", 0.8); + const parquetTarget = (0, remotes_1.buildR2Remote)(suffix, uploadId, "data.parquet"); + const statsTarget = (0, remotes_1.buildR2Remote)(suffix, uploadId, "column-stats.json"); + await (0, remotes_1.putObject)(parquetPath, parquetTarget.remote); + await (0, remotes_1.putObject)(statsPath, statsTarget.remote); + const result = { + uploadId, + name: tableName, + joinColumn, + overlayJoinColumn, + rowCount: Math.trunc(Number(rowCount)), + parquetRemote: parquetTarget.remote, + columnStatsRemote: statsTarget.remote, + }; + logDebug("upload processing complete, enqueueing outputs job", { + taskId, + uploadId, + rowCount: result.rowCount, + parquetRemote: result.parquetRemote, + }); + await pgClient.query(`SELECT graphile_worker.add_job('processDataTableUploadOutputs', $1::json)`, [JSON.stringify({ jobId: taskId, data: result })]); + return { success: result }; + } + catch (e) { + const error = e; + logDebug("upload failed", { + taskId, + uploadId, + message: error.message, + stack: error.stack, + }); + const errorDetails = { message: error.message }; + await pgClient.query(`select fail_overlay_data_table_upload($1, $2, $3)`, [ + taskId, + error.message, + JSON.stringify(errorDetails), + ]); + return { error: error.message, errorDetails }; + } + finally { + tmpobj.removeCallback(); + } +} diff --git a/packages/data-tables-handler/dist/src/inferCsvColumnPlans.d.ts b/packages/data-tables-handler/dist/src/inferCsvColumnPlans.d.ts new file mode 100644 index 000000000..583dbfb94 --- /dev/null +++ b/packages/data-tables-handler/dist/src/inferCsvColumnPlans.d.ts @@ -0,0 +1,17 @@ +import duckdb from "duckdb"; +export declare const CSV_NULL_STRINGS_BASE: string[]; +export declare const CSV_NULL_STRINGS_WITH_NA: string[]; +export type CsvColumnPlan = { + name: string; + duckDbType: string; + nullifyNa: boolean; +}; +export declare function nullstrOption(nullStrings: string[]): string; +export declare function isNumericDuckDbType(type: string): boolean; +/** + * Compare two typed CSV reads (with vs without treating "NA" as null) to decide + * per-column whether bare "NA" is missing data or a valid string code. + */ +export declare function decideNaNullHandling(strictType: string, naNullType: string, naLiteralCount: number, naLooksLikeValidCode: boolean): Pick; +export declare function inferCsvColumnPlans(conn: duckdb.Connection, csvPath: string, readCsvOptionsSuffix: string): Promise; +export declare function buildTypedSelectSql(plans: CsvColumnPlan[]): string; diff --git a/packages/data-tables-handler/dist/src/inferCsvColumnPlans.js b/packages/data-tables-handler/dist/src/inferCsvColumnPlans.js new file mode 100644 index 000000000..96b2784e1 --- /dev/null +++ b/packages/data-tables-handler/dist/src/inferCsvColumnPlans.js @@ -0,0 +1,114 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CSV_NULL_STRINGS_WITH_NA = exports.CSV_NULL_STRINGS_BASE = void 0; +exports.nullstrOption = nullstrOption; +exports.isNumericDuckDbType = isNumericDuckDbType; +exports.decideNaNullHandling = decideNaNullHandling; +exports.inferCsvColumnPlans = inferCsvColumnPlans; +exports.buildTypedSelectSql = buildTypedSelectSql; +exports.CSV_NULL_STRINGS_BASE = ["", "N/A", "#N/A", "NULL", "null"]; +exports.CSV_NULL_STRINGS_WITH_NA = [...exports.CSV_NULL_STRINGS_BASE, "NA"]; +function run(conn, sql) { + return new Promise((resolve, reject) => { + conn.run(sql, (err) => (err ? reject(err) : resolve())); + }); +} +function all(conn, sql) { + return new Promise((resolve, reject) => { + conn.all(sql, (err, rows) => (err ? reject(err) : resolve(rows))); + }); +} +function nullstrOption(nullStrings) { + return `nullstr=[${nullStrings.map((v) => `'${v.replace(/'/g, "''")}'`).join(", ")}]`; +} +function isNumericDuckDbType(type) { + return /INT|DOUBLE|FLOAT|DECIMAL|NUMERIC|REAL|HUGEINT/i.test(type); +} +function quoteColumn(name) { + return `"${name.replace(/"/g, '""')}"`; +} +/** + * Compare two typed CSV reads (with vs without treating "NA" as null) to decide + * per-column whether bare "NA" is missing data or a valid string code. + */ +function decideNaNullHandling(strictType, naNullType, naLiteralCount, naLooksLikeValidCode) { + const strictIsNumeric = isNumericDuckDbType(strictType); + const naNullIsNumeric = isNumericDuckDbType(naNullType); + if (strictIsNumeric) { + return { duckDbType: strictType, nullifyNa: true }; + } + if (naNullIsNumeric) { + // "NA" was blocking numeric inference (e.g. count column with R-style NA). + return { duckDbType: naNullType, nullifyNa: true }; + } + if (naLiteralCount > 0 && naLooksLikeValidCode) { + // Column stays text either way; preserve literal "NA" codes (e.g. species). + return { duckDbType: "VARCHAR", nullifyNa: false }; + } + return { duckDbType: "VARCHAR", nullifyNa: true }; +} +async function naLooksLikeValidCode(conn, quotedColumn, naLiteralCount) { + if (naLiteralCount === 0) { + return false; + } + const freqRows = await all(conn, `SELECT + MAX(c)::INTEGER as max_c, + MEDIAN(c)::DOUBLE as median_c + FROM ( + SELECT COUNT(*)::INTEGER as c + FROM _csv_probe_strict + WHERE CAST(${quotedColumn} AS VARCHAR) != 'NA' + AND ${quotedColumn} IS NOT NULL + GROUP BY CAST(${quotedColumn} AS VARCHAR) + ) freq`); + const maxC = freqRows[0]?.max_c ?? 0; + const medianC = freqRows[0]?.median_c ?? 0; + const peerFrequency = Math.max(medianC, 1); + // NA appears roughly as often as a typical category value, not a bulk missing marker. + return naLiteralCount <= peerFrequency * 2 && naLiteralCount <= maxC; +} +async function inferCsvColumnPlans(conn, csvPath, readCsvOptionsSuffix) { + const escapedPath = csvPath.replace(/'/g, "''"); + const baseNullstr = nullstrOption(exports.CSV_NULL_STRINGS_BASE); + const naNullstr = nullstrOption(exports.CSV_NULL_STRINGS_WITH_NA); + await run(conn, `CREATE OR REPLACE TEMP TABLE _csv_probe_strict AS SELECT * FROM read_csv('${escapedPath}', ${readCsvOptionsSuffix}, ${baseNullstr})`); + await run(conn, `CREATE OR REPLACE TEMP TABLE _csv_probe_na_null AS SELECT * FROM read_csv('${escapedPath}', ${readCsvOptionsSuffix}, ${naNullstr})`); + const strictSchema = await all(conn, `SELECT column_name, data_type FROM information_schema.columns WHERE table_name = '_csv_probe_strict' ORDER BY ordinal_position`); + const naNullSchema = await all(conn, `SELECT column_name, data_type FROM information_schema.columns WHERE table_name = '_csv_probe_na_null' ORDER BY ordinal_position`); + const naNullTypeByColumn = new Map(naNullSchema.map((col) => [col.column_name, col.data_type])); + const plans = []; + for (const col of strictSchema) { + const quoted = quoteColumn(col.column_name); + const naLiteralRows = await all(conn, `SELECT COUNT(*)::INTEGER as count FROM _csv_probe_strict WHERE CAST(${quoted} AS VARCHAR) = 'NA'`); + const naLiteralCount = naLiteralRows[0]?.count ?? 0; + const validNaCode = await naLooksLikeValidCode(conn, quoted, naLiteralCount); + const decision = decideNaNullHandling(col.data_type, naNullTypeByColumn.get(col.column_name) || "VARCHAR", naLiteralCount, validNaCode); + plans.push({ + name: col.column_name, + ...decision, + }); + if (!decision.nullifyNa && naLiteralCount > 0) { + console.log(`[data-tables-handler] preserving literal "NA" in column ${col.column_name} (${naLiteralCount} row(s); looks like a category code)`); + } + } + await run(conn, "DROP TABLE IF EXISTS _csv_probe_strict"); + await run(conn, "DROP TABLE IF EXISTS _csv_probe_na_null"); + return plans; +} +function buildTypedSelectSql(plans) { + return plans + .map((plan) => { + const quoted = quoteColumn(plan.name); + if (isNumericDuckDbType(plan.duckDbType)) { + const valueExpr = plan.nullifyNa + ? `NULLIF(${quoted}, 'NA')` + : quoted; + return `TRY_CAST(${valueExpr} AS ${plan.duckDbType}) AS ${quoted}`; + } + if (plan.nullifyNa) { + return `NULLIF(${quoted}, 'NA') AS ${quoted}`; + } + return `${quoted}`; + }) + .join(", "); +} diff --git a/packages/data-tables-handler/dist/src/inferCsvColumnPlans.test.d.ts b/packages/data-tables-handler/dist/src/inferCsvColumnPlans.test.d.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/data-tables-handler/dist/src/inferCsvColumnPlans.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/data-tables-handler/dist/src/inferCsvColumnPlans.test.js b/packages/data-tables-handler/dist/src/inferCsvColumnPlans.test.js new file mode 100644 index 000000000..05190f101 --- /dev/null +++ b/packages/data-tables-handler/dist/src/inferCsvColumnPlans.test.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const inferCsvColumnPlans_1 = require("./inferCsvColumnPlans"); +describe("decideNaNullHandling", () => { + test("numeric column with R-style NA missing values", () => { + expect((0, inferCsvColumnPlans_1.decideNaNullHandling)("VARCHAR", "BIGINT", 19)).toEqual({ duckDbType: "BIGINT", nullifyNa: true }); + }); + test("string column with literal NA species code", () => { + expect((0, inferCsvColumnPlans_1.decideNaNullHandling)("VARCHAR", "VARCHAR", 1)).toEqual({ duckDbType: "VARCHAR", nullifyNa: false }); + }); + test("already numeric without NA strings", () => { + expect((0, inferCsvColumnPlans_1.decideNaNullHandling)("BIGINT", "BIGINT", 0)).toEqual({ duckDbType: "BIGINT", nullifyNa: true }); + }); + test("varchar with no NA literals", () => { + expect((0, inferCsvColumnPlans_1.decideNaNullHandling)("VARCHAR", "VARCHAR", 0)).toEqual({ duckDbType: "VARCHAR", nullifyNa: true }); + }); +}); +describe("isNumericDuckDbType", () => { + test("recognizes numeric duckdb types", () => { + expect((0, inferCsvColumnPlans_1.isNumericDuckDbType)("BIGINT")).toBe(true); + expect((0, inferCsvColumnPlans_1.isNumericDuckDbType)("DOUBLE")).toBe(true); + expect((0, inferCsvColumnPlans_1.isNumericDuckDbType)("VARCHAR")).toBe(false); + }); +}); diff --git a/packages/data-tables-handler/dist/src/lambda-db-client.d.ts b/packages/data-tables-handler/dist/src/lambda-db-client.d.ts new file mode 100644 index 000000000..14d41406c --- /dev/null +++ b/packages/data-tables-handler/dist/src/lambda-db-client.d.ts @@ -0,0 +1,2 @@ +import { Client } from "pg"; +export declare function getClient(): Promise; diff --git a/packages/data-tables-handler/dist/src/lambda-db-client.js b/packages/data-tables-handler/dist/src/lambda-db-client.js new file mode 100644 index 000000000..19ca599a4 --- /dev/null +++ b/packages/data-tables-handler/dist/src/lambda-db-client.js @@ -0,0 +1,82 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getClient = getClient; +const aws_sdk_1 = require("aws-sdk"); +const pg_1 = require("pg"); +async function getClient() { + if (!dbClient) { + if (db.host && + (/localhost/.test(db.host) || + /127.0.0.1/.test(db.host) || + /host.docker.internal/.test(db.host))) { + dbClient = new Promise(async (resolve, reject) => { + const client = new pg_1.Client({ + database: db.database, + host: db.host, + port: parseInt(db.port.toString()), + user: db.user, + password: process.env.PGPASSWORD, + }); + try { + await client.connect(); + client.on("error", () => { + dbClient = null; + }); + resolve(client); + } + catch (e) { + reject(e); + } + }); + } + else { + dbClient = new Promise((resolve, reject) => { + signer.getAuthToken({ + region: db.region, + hostname: db.host, + port: parseInt(db.port.toString()), + username: db.user, + }, async function (err, token) { + if (err) { + reject(new Error(`could not get auth token: ${err}`)); + } + else { + const client = new pg_1.Client({ + database: db.database, + host: db.host, + port: parseInt(db.port.toString()), + user: db.user, + password: token, + ssl: { rejectUnauthorized: false }, + }); + try { + await client.connect(); + client.on("error", () => { + dbClient = null; + }); + resolve(client); + } + catch (e) { + reject(e); + } + } + }); + }); + } + } + return dbClient; +} +const signer = new aws_sdk_1.RDS.Signer(); +for (const param of ["PGREGION", "PGHOST", "PGPORT", "PGUSER", "PGDATABASE"]) { + if (!process.env[param]) { + throw new Error(`Environment variable "${param}" not set`); + } +} +const db = { + region: process.env.PGREGION, + host: process.env.PGHOST, + port: parseInt(process.env.PGPORT), + user: process.env.PGUSER, + database: process.env.PGDATABASE, +}; +let dbClient = null; diff --git a/packages/data-tables-handler/dist/src/normalizeCsvEncoding.d.ts b/packages/data-tables-handler/dist/src/normalizeCsvEncoding.d.ts new file mode 100644 index 000000000..28e4fbce1 --- /dev/null +++ b/packages/data-tables-handler/dist/src/normalizeCsvEncoding.d.ts @@ -0,0 +1,9 @@ +/** + * DuckDB's CSV reader requires valid UTF-8. Many legacy exports (Excel, R, etc.) + * are Latin-1 / Windows-1252. Reinterpret single-byte encodings as Latin-1 and + * write UTF-8 so every byte 0x00–0xFF round-trips without parse failures. + */ +export declare function normalizeCsvEncodingIfNeeded(csvPath: string, normalizedPath?: string): { + path: string; + normalized: boolean; +}; diff --git a/packages/data-tables-handler/dist/src/normalizeCsvEncoding.js b/packages/data-tables-handler/dist/src/normalizeCsvEncoding.js new file mode 100644 index 000000000..eaf84b9b7 --- /dev/null +++ b/packages/data-tables-handler/dist/src/normalizeCsvEncoding.js @@ -0,0 +1,52 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalizeCsvEncodingIfNeeded = normalizeCsvEncodingIfNeeded; +const fs_1 = require("fs"); +const path = __importStar(require("path")); +function isValidUtf8(buffer) { + try { + new TextDecoder("utf-8", { fatal: true }).decode(buffer); + return true; + } + catch { + return false; + } +} +/** + * DuckDB's CSV reader requires valid UTF-8. Many legacy exports (Excel, R, etc.) + * are Latin-1 / Windows-1252. Reinterpret single-byte encodings as Latin-1 and + * write UTF-8 so every byte 0x00–0xFF round-trips without parse failures. + */ +function normalizeCsvEncodingIfNeeded(csvPath, normalizedPath) { + const buffer = (0, fs_1.readFileSync)(csvPath); + if (isValidUtf8(buffer)) { + return { path: csvPath, normalized: false }; + } + const out = normalizedPath || + path.join(path.dirname(csvPath), `${path.basename(csvPath, path.extname(csvPath))}.utf8${path.extname(csvPath) || ".csv"}`); + (0, fs_1.writeFileSync)(out, buffer.toString("latin1"), "utf8"); + return { path: out, normalized: true }; +} diff --git a/packages/data-tables-handler/dist/src/processWithDuckDb.d.ts b/packages/data-tables-handler/dist/src/processWithDuckDb.d.ts new file mode 100644 index 000000000..3c8f0385d --- /dev/null +++ b/packages/data-tables-handler/dist/src/processWithDuckDb.d.ts @@ -0,0 +1,9 @@ +import { DataTablesColumnStats } from "@seasketch/geostats-types"; +import type { DataTableUploadProcessingOptions } from "./types"; +export declare function processCsvWithDuckDb(csvPath: string, parquetPath: string, options: DataTableUploadProcessingOptions): Promise<{ + rowCount: number; + headers: string[]; + joinValues: Set; +}>; +export declare function readJoinValues(parquetPath: string, joinColumn: string): Promise>; +export declare function computeColumnStatsFromParquet(parquetPath: string, tableName: string, joinInfo: DataTablesColumnStats["join"]): Promise; diff --git a/packages/data-tables-handler/dist/src/processWithDuckDb.js b/packages/data-tables-handler/dist/src/processWithDuckDb.js new file mode 100644 index 000000000..772c83a46 --- /dev/null +++ b/packages/data-tables-handler/dist/src/processWithDuckDb.js @@ -0,0 +1,149 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.processCsvWithDuckDb = processCsvWithDuckDb; +exports.readJoinValues = readJoinValues; +exports.computeColumnStatsFromParquet = computeColumnStatsFromParquet; +const duckdb_1 = __importDefault(require("duckdb")); +const path = __importStar(require("path")); +const validateJoinColumn_1 = require("./validateJoinColumn"); +const normalizeCsvEncoding_1 = require("./normalizeCsvEncoding"); +const inferCsvColumnPlans_1 = require("./inferCsvColumnPlans"); +function run(conn, sql) { + return new Promise((resolve, reject) => { + conn.run(sql, (err) => (err ? reject(err) : resolve())); + }); +} +function all(conn, sql) { + return new Promise((resolve, reject) => { + conn.all(sql, (err, rows) => (err ? reject(err) : resolve(rows))); + }); +} +function escapePath(path) { + return path.replace(/'/g, "''"); +} +function delimiterOption(delimiter) { + switch (delimiter) { + case "\t": + return "delim='\\t'"; + case ";": + return "delim=';'"; + case "|": + return "delim='|'"; + default: + return ""; + } +} +async function processCsvWithDuckDb(csvPath, parquetPath, options) { + const db = new duckdb_1.default.Database(":memory:"); + const conn = db.connect(); + const { path: duckDbCsvPath, normalized } = (0, normalizeCsvEncoding_1.normalizeCsvEncodingIfNeeded)(csvPath, path.join(path.dirname(csvPath), "input.utf8.csv")); + if (normalized) { + console.log(`[data-tables-handler] normalized csv encoding to utf-8: ${duckDbCsvPath}`); + } + const delimiter = options.delimiter || ","; + const hasHeader = options.hasHeaderRow !== false; + const forceNotNull = options.forceNotNull || []; + const forceNotNullSql = forceNotNull.length > 0 + ? `, force_not_null=[${forceNotNull.map((c) => `'${c.replace(/'/g, "''")}'`).join(", ")}]` + : ""; + const readCsvOptionsSuffix = [ + "header=" + (hasHeader ? "true" : "false"), + "sample_size=-1", + delimiterOption(delimiter), + ] + .filter(Boolean) + .join(", "); + const columnPlans = await (0, inferCsvColumnPlans_1.inferCsvColumnPlans)(conn, duckDbCsvPath, readCsvOptionsSuffix); + const baseNullstr = (0, inferCsvColumnPlans_1.nullstrOption)(inferCsvColumnPlans_1.CSV_NULL_STRINGS_BASE); + await run(conn, `CREATE OR REPLACE TEMP TABLE _csv_raw AS SELECT * FROM read_csv('${escapePath(duckDbCsvPath)}', ${readCsvOptionsSuffix}, ${baseNullstr}, all_varchar=true${forceNotNullSql})`); + await run(conn, `CREATE OR REPLACE TABLE observations AS SELECT ${(0, inferCsvColumnPlans_1.buildTypedSelectSql)(columnPlans)} FROM _csv_raw`); + await run(conn, "DROP TABLE IF EXISTS _csv_raw"); + const countRows = await all(conn, "SELECT COUNT(*)::INTEGER as count FROM observations"); + const rowCount = countRows[0]?.count ?? 0; + const columns = await all(conn, `SELECT column_name FROM information_schema.columns WHERE table_name = 'observations' ORDER BY ordinal_position`); + const headers = columns.map((c) => c.column_name); + await run(conn, `COPY observations TO '${escapePath(parquetPath)}' (FORMAT PARQUET)`); + conn.close(); + db.close(); + return { rowCount, headers, joinValues: new Set() }; +} +async function readJoinValues(parquetPath, joinColumn) { + const db = new duckdb_1.default.Database(":memory:"); + const conn = db.connect(); + const col = joinColumn.replace(/"/g, '""'); + const rows = await all(conn, `SELECT DISTINCT CAST("${col}" AS VARCHAR) as v FROM read_parquet('${escapePath(parquetPath)}') WHERE "${col}" IS NOT NULL`); + conn.close(); + db.close(); + return new Set(rows.map((r) => r.v)); +} +async function computeColumnStatsFromParquet(parquetPath, tableName, joinInfo) { + const db = new duckdb_1.default.Database(":memory:"); + const conn = db.connect(); + await run(conn, `CREATE OR REPLACE TABLE observations AS SELECT * FROM read_parquet('${escapePath(parquetPath)}')`); + const countRows = await all(conn, "SELECT COUNT(*)::INTEGER as count FROM observations"); + const rowCount = countRows[0]?.count ?? 0; + const schema = await all(conn, `SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'observations' ORDER BY ordinal_position`); + const columns = []; + for (const col of schema) { + const colName = col.column_name.replace(/"/g, '""'); + const type = (0, validateJoinColumn_1.inferGeostatsType)(col.data_type); + const nonNull = await all(conn, `SELECT COUNT(*)::INTEGER as count FROM observations WHERE "${colName}" IS NOT NULL`); + const count = nonNull[0]?.count ?? 0; + const distinctRows = await all(conn, `SELECT CAST("${colName}" AS VARCHAR) as v, COUNT(*)::INTEGER as c FROM observations WHERE "${colName}" IS NOT NULL GROUP BY 1 ORDER BY c DESC LIMIT 500`); + const values = {}; + for (const row of distinctRows) { + values[row.v] = row.c; + } + const attr = { + attribute: col.column_name, + count, + countDistinct: distinctRows.length, + type, + values, + }; + if (type === "number") { + const stats = await all(conn, `SELECT MIN(CAST("${colName}" AS DOUBLE)) as min, MAX(CAST("${colName}" AS DOUBLE)) as max, AVG(CAST("${colName}" AS DOUBLE)) as avg, STDDEV(CAST("${colName}" AS DOUBLE)) as stdev FROM observations WHERE "${colName}" IS NOT NULL`); + if (stats[0]) { + attr.min = + stats[0].min; + attr.max = + stats[0].max; + } + } + columns.push(attr); + } + conn.close(); + db.close(); + return { + table: tableName, + rowCount, + columns, + join: joinInfo, + }; +} diff --git a/packages/data-tables-handler/dist/src/remotes.d.ts b/packages/data-tables-handler/dist/src/remotes.d.ts new file mode 100644 index 000000000..b906fd4d3 --- /dev/null +++ b/packages/data-tables-handler/dist/src/remotes.d.ts @@ -0,0 +1,8 @@ +export declare function putObject(filepath: string, remote: string): Promise; +export declare function getObject(filepath: string, remote: string): Promise; +export declare function getStagingObject(filepath: string, objectKey: string): Promise; +export declare function buildR2Remote(slug: string, uploadId: string, filename: string): { + remote: string; + key: string; + bucket: string; +}; diff --git a/packages/data-tables-handler/dist/src/remotes.js b/packages/data-tables-handler/dist/src/remotes.js new file mode 100644 index 000000000..96c881b4c --- /dev/null +++ b/packages/data-tables-handler/dist/src/remotes.js @@ -0,0 +1,95 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.putObject = putObject; +exports.getObject = getObject; +exports.getStagingObject = getStagingObject; +exports.buildR2Remote = buildR2Remote; +const fs_1 = require("fs"); +const client_s3_1 = require("@aws-sdk/client-s3"); +const lib_storage_1 = require("@aws-sdk/lib-storage"); +const bytes_1 = __importDefault(require("bytes")); +const s3Client = new client_s3_1.S3Client({ region: process.env.AWS_REGION }); +const r2Client = new client_s3_1.S3Client({ + region: "auto", + endpoint: process.env.R2_ENDPOINT, + credentials: { + accessKeyId: process.env.R2_ACCESS_KEY_ID, + secretAccessKey: process.env.R2_SECRET_ACCESS_KEY, + }, +}); +async function putObject(filepath, remote) { + if (!/r2:/.test(remote) && !/s3:/.test(remote)) { + throw new Error(`Invalid remote ${remote}`); + } + const parts = remote.replace(/\w+:\/\//, "").split("/"); + const client = /r2:/.test(remote) ? r2Client : s3Client; + const Bucket = parts[0]; + const Key = parts.slice(1).join("/"); + const fileSizeBytes = (0, fs_1.statSync)(filepath).size; + const fileStream = (0, fs_1.createReadStream)(filepath); + if (fileSizeBytes > 500 * 1024 * 1024) { + const upload = new lib_storage_1.Upload({ + client, + params: { Bucket, Key, Body: fileStream }, + }); + await upload.done(); + } + else { + await client.send(new client_s3_1.PutObjectCommand({ Bucket, Key, Body: fileStream })); + } + console.log(`putObject ${filepath} (${(0, bytes_1.default)(fileSizeBytes)}) to ${remote}`); +} +async function getObject(filepath, remote) { + const isR2 = /r2:/.test(remote); + const parts = remote.replace(/\w+:\/\//, "").split("/"); + const client = isR2 ? r2Client : s3Client; + const Bucket = parts[0]; + const Key = parts.slice(1).join("/"); + const response = await client.send(new client_s3_1.GetObjectCommand({ Bucket, Key })); + const body = response.Body; + const { createWriteStream } = await Promise.resolve().then(() => __importStar(require("fs"))); + const { pipeline } = await Promise.resolve().then(() => __importStar(require("stream/promises"))); + await pipeline(body, createWriteStream(filepath)); +} +async function getStagingObject(filepath, objectKey) { + const bucket = process.env.BUCKET; + const response = await s3Client.send(new client_s3_1.GetObjectCommand({ Bucket: bucket, Key: objectKey })); + const body = response.Body; + const { createWriteStream } = await Promise.resolve().then(() => __importStar(require("fs"))); + const { pipeline } = await Promise.resolve().then(() => __importStar(require("stream/promises"))); + await pipeline(body, createWriteStream(filepath)); +} +function buildR2Remote(slug, uploadId, filename) { + const bucket = process.env.R2_TILES_BUCKET || process.env.TILES_REMOTE?.replace("r2://", "").split("/")[0]; + if (!bucket) { + throw new Error("R2_TILES_BUCKET or TILES_REMOTE must be set"); + } + const key = `projects/${slug}/public/dataTables/${uploadId}/${filename}`; + return { remote: `r2://${bucket}/${key}`, key, bucket }; +} diff --git a/packages/data-tables-handler/dist/src/types.d.ts b/packages/data-tables-handler/dist/src/types.d.ts new file mode 100644 index 000000000..bc92b29dc --- /dev/null +++ b/packages/data-tables-handler/dist/src/types.d.ts @@ -0,0 +1,29 @@ +export interface DataTableUploadProcessingOptions { + delimiter?: "," | "\t" | ";" | "|"; + hasHeaderRow?: boolean; + joinColumn?: string; + overlayJoinColumn?: string; + forceNotNull?: string[]; + name?: string; +} +export interface DataTablesHandlerRequest { + taskId: string; + uploadId: string; + objectKey: string; + suffix: string; + skipLoggingProgress?: boolean; +} +export interface DataTablesHandlerSuccess { + uploadId: string; + name: string; + joinColumn: string; + overlayJoinColumn: string; + rowCount: number; + parquetRemote: string; + columnStatsRemote: string; +} +export interface DataTablesHandlerResponse { + success?: DataTablesHandlerSuccess; + error?: string; + errorDetails?: Record; +} diff --git a/packages/data-tables-handler/dist/src/types.js b/packages/data-tables-handler/dist/src/types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/data-tables-handler/dist/src/types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/data-tables-handler/dist/src/validateJoinColumn.d.ts b/packages/data-tables-handler/dist/src/validateJoinColumn.d.ts new file mode 100644 index 000000000..05390fef5 --- /dev/null +++ b/packages/data-tables-handler/dist/src/validateJoinColumn.d.ts @@ -0,0 +1,12 @@ +import { GeostatsAttribute, GeostatsAttributeType, GeostatsLayer } from "@seasketch/geostats-types"; +export declare function getGeostatsLayer(overlayGeostats: unknown): GeostatsLayer; +export declare function findOverlayAttribute(layer: GeostatsLayer, attributeName: string): GeostatsAttribute; +export declare function validateJoinColumnChoice(headers: string[], joinColumn: string, overlayJoinColumn: string, layer: GeostatsLayer, joinValues: Set): { + overlayAttr: GeostatsAttribute; + matchRate: number; + matchedRows: number; + unmatchedRows: number; + unmatchedOverlayValues: number; +}; +export declare function inferGeostatsType(duckDbType: string): GeostatsAttributeType; +export declare function sqlStringLiteral(value: string): string; diff --git a/packages/data-tables-handler/dist/src/validateJoinColumn.js b/packages/data-tables-handler/dist/src/validateJoinColumn.js new file mode 100644 index 000000000..66215f5d0 --- /dev/null +++ b/packages/data-tables-handler/dist/src/validateJoinColumn.js @@ -0,0 +1,69 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getGeostatsLayer = getGeostatsLayer; +exports.findOverlayAttribute = findOverlayAttribute; +exports.validateJoinColumnChoice = validateJoinColumnChoice; +exports.inferGeostatsType = inferGeostatsType; +exports.sqlStringLiteral = sqlStringLiteral; +function getGeostatsLayer(overlayGeostats) { + const data = overlayGeostats; + const layer = data?.layers?.[0]; + if (!layer?.attributes) { + throw new Error("Overlay geostats missing layer attributes"); + } + return layer; +} +function findOverlayAttribute(layer, attributeName) { + const attr = layer.attributes.find((a) => a.attribute === attributeName); + if (!attr) { + throw new Error(`Overlay attribute "${attributeName}" not found in geostats`); + } + return attr; +} +function validateJoinColumnChoice(headers, joinColumn, overlayJoinColumn, layer, joinValues) { + if (!headers.includes(joinColumn)) { + throw new Error(`Join column "${joinColumn}" not found in CSV headers`); + } + const overlayAttr = findOverlayAttribute(layer, overlayJoinColumn); + const overlayKeys = new Set(Object.keys(overlayAttr.values || {})); + let matchedRows = 0; + for (const v of joinValues) { + if (overlayKeys.has(v)) { + matchedRows++; + } + } + const unmatchedRows = joinValues.size - matchedRows; + if (matchedRows === 0) { + throw new Error("No values in the join column match overlay feature identifiers"); + } + if (unmatchedRows > 0) { + throw new Error(`${unmatchedRows} value(s) in the join column are not present in the overlay layer`); + } + let unmatchedOverlayValues = 0; + for (const k of overlayKeys) { + if (!joinValues.has(k)) { + unmatchedOverlayValues++; + } + } + const matchRate = joinValues.size > 0 ? matchedRows / joinValues.size : 0; + return { + overlayAttr, + matchRate, + matchedRows, + unmatchedRows, + unmatchedOverlayValues, + }; +} +function inferGeostatsType(duckDbType) { + const t = duckDbType.toUpperCase(); + if (/INT|DOUBLE|FLOAT|DECIMAL|NUMERIC|REAL|HUGEINT/.test(t)) { + return "number"; + } + if (/BOOL/.test(t)) { + return "boolean"; + } + return "string"; +} +function sqlStringLiteral(value) { + return `'${value.replace(/'/g, "''")}'`; +} diff --git a/packages/data-tables-handler/handler.ts b/packages/data-tables-handler/handler.ts new file mode 100644 index 000000000..1d1d7542b --- /dev/null +++ b/packages/data-tables-handler/handler.ts @@ -0,0 +1,14 @@ +import handleDataTableUpload from "./src/handleDataTableUpload"; +import type { DataTablesHandlerRequest } from "./src/types"; + +export type { DataTablesHandlerRequest, DataTablesHandlerResponse } from "./src/types"; + +export const processDataTableUpload = async ( + event: DataTablesHandlerRequest, +) => { + try { + return await handleDataTableUpload(event); + } catch (e) { + return { error: (e as Error).message }; + } +}; diff --git a/packages/data-tables-handler/package-lock.json b/packages/data-tables-handler/package-lock.json new file mode 100644 index 000000000..c81502221 --- /dev/null +++ b/packages/data-tables-handler/package-lock.json @@ -0,0 +1,2632 @@ +{ + "name": "data-tables-handler", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "data-tables-handler", + "version": "1.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "@aws-sdk/client-s3": "^3.758.0", + "@aws-sdk/lib-storage": "^3.758.0", + "@seasketch/geostats-types": "^1.0.0", + "aws-sdk": "^2.1234.0", + "bytes": "^3.1.2", + "duckdb": "^1.2.0", + "pg": "^8.8.0", + "sanitize-filename": "^1.6.3", + "tmp": "^0.2.1", + "typescript": "5.5.3" + }, + "devDependencies": { + "@types/bytes": "^3.1.1", + "@types/node": "^18.11.4", + "@types/pg": "^8.6.5", + "@types/tmp": "^0.2.3", + "dotenv": "^16.0.3" + } + }, + "node_modules/@aws-sdk/checksums": { + "version": "3.1000.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/checksums/-/checksums-3.1000.10.tgz", + "integrity": "sha512-OUNjNcyA8Ai2OdlRUxW5jHUf6XJmqqZk3UddL+mDiUCtXrVqdmIHHkdDFWBlBRjhore/3ZBMgRXgcS0ggtvD0Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.1077.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1077.0.tgz", + "integrity": "sha512-yWK6jOMrMUgGarXlrQaAopWXva20NaOqTPApuE68SzsBFQ57fQ5E13BKUPLwtPgymk+8L6vG/O4h7Q30IBYr2w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/checksums": "^3.1000.10", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/credential-provider-node": "^3.972.60", + "@aws-sdk/middleware-sdk-s3": "^3.972.56", + "@aws-sdk/signature-v4-multi-region": "^3.996.37", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/fetch-http-handler": "^5.6.1", + "@smithy/node-http-handler": "^4.9.1", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.974.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.25.tgz", + "integrity": "sha512-fJFkx6u6wCqGMV/v6EAxiwa2UzEukbvr1hNPv4MrD3yj4IFz011jZg42/eSTOP/u5kJ0tlILqEjCWtT8GiKZvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.14", + "@aws-sdk/xml-builder": "^3.972.32", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/core": "^3.28.0", + "@smithy/signature-v4": "^5.6.0", + "@smithy/types": "^4.15.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.51", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.51.tgz", + "integrity": "sha512-Xo+/zf5k5pZdo53X8aVXN4MJGfU/M1P7yMM/GbNY/x9fyRZGEzjhKqW38GA0FSQQ9TYKs+bfPyz5ja4bi6pjTQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.53", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.53.tgz", + "integrity": "sha512-7E9oFUcf9YWe+ttGiWhe/cCSI+pswwelzgQMoKXgPJi1AIfS27TK6et5ZULqEqHu30zbN+jh1RqlwcXqY/aXyg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/fetch-http-handler": "^5.6.1", + "@smithy/node-http-handler": "^4.9.1", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.58", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.58.tgz", + "integrity": "sha512-MPr0hD8pyDGfF3dWXvFOILhcKTB9ptqJOJK9JEuDQzpc2HgKisY16eR7IrKUXxSbz8LZj+LHz/CS8Y5G1ai7yw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/credential-provider-env": "^3.972.51", + "@aws-sdk/credential-provider-http": "^3.972.53", + "@aws-sdk/credential-provider-login": "^3.972.57", + "@aws-sdk/credential-provider-process": "^3.972.51", + "@aws-sdk/credential-provider-sso": "^3.972.57", + "@aws-sdk/credential-provider-web-identity": "^3.972.57", + "@aws-sdk/nested-clients": "^3.997.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/credential-provider-imds": "^4.4.4", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.57", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.57.tgz", + "integrity": "sha512-kPWc/SCrl9agKeywxKwPEoQHanWag0LcNQrcZpEQpjNifkxq6tQENhgrrS9al317CF6yytyihlX+FhPHlk0QjA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/nested-clients": "^3.997.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.60", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.60.tgz", + "integrity": "sha512-hE2hIBJQjCDRx8TbSqpVQ+/o2mIrJZQZbQ3LlwE2bJf7z47x5GmhcvGwZPqJH7Oq//SzTXEBGSZ4qSpK3yPbhw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.51", + "@aws-sdk/credential-provider-http": "^3.972.53", + "@aws-sdk/credential-provider-ini": "^3.972.58", + "@aws-sdk/credential-provider-process": "^3.972.51", + "@aws-sdk/credential-provider-sso": "^3.972.57", + "@aws-sdk/credential-provider-web-identity": "^3.972.57", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/credential-provider-imds": "^4.4.4", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.51", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.51.tgz", + "integrity": "sha512-081dD2RlnmY+G05v6E73KfACvDjPjnttrLjGHE2SSglbID25UcuijbWpL4g+XR5T2Kl4oIJoVBXi64s+2f009Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.57", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.57.tgz", + "integrity": "sha512-dC7ZyX3EHKHLOeVUEDzzGvk0L1s6N06YDrau7P0rGXL/j1cO+DzN2w1x9vcEh7zljVCR3019f5mi1Th+GGTURw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/nested-clients": "^3.997.25", + "@aws-sdk/token-providers": "3.1077.0", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.57", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.57.tgz", + "integrity": "sha512-HtWM3FV2o7NJFJSUqFLBlxmV9RxQRHpzCvQaP1n1Qo4CxQSvwpJ8ERWHiLqXMFDgDXyELt+EZNFcpG6XQRcJbQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/nested-clients": "^3.997.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/lib-storage": { + "version": "3.1077.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.1077.0.tgz", + "integrity": "sha512-WwheNNdvCqdw5Z5Uvl/XB5e3pN5Q/b4N3yDYloUsrN5EiMw21UHHDd6Bkt3cC2ALUU/7+l+TXhtx5d9DAGkiDQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", + "buffer": "5.6.0", + "events": "3.3.0", + "stream-browserify": "3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-s3": "^3.1077.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.972.56", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.56.tgz", + "integrity": "sha512-VFLd7bT8ef48H2n2iDrY/w9EPpXLmC0v4NEriXy2vuTgEP/FrKqrcwi7eobhcOrdO37uLbMt5AWZlY55R2/xqg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/signature-v4-multi-region": "^3.996.37", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.997.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.25.tgz", + "integrity": "sha512-VpRQ3wR6l+fwRHV5veJL2ehtyQFrGyH/2CJG9DVtb8H3xyqqnZWSTSrq/CJJ7DvDlDgrPRiW2SkYA8pN6VWCFQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/signature-v4-multi-region": "^3.996.37", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/fetch-http-handler": "^5.6.1", + "@smithy/node-http-handler": "^4.9.1", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.996.37", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.37.tgz", + "integrity": "sha512-u8qd064XsHzM0Mk+yH4IPKn/ZC9rdniEKs+neBHNlsPZirw3rcLvmrH4ImoKC4yF7A0I/MbcC3dseARnJLiAhg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.14", + "@smithy/signature-v4": "^5.6.0", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.1077.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1077.0.tgz", + "integrity": "sha512-sRUkfZ3fpOco95jZHsQUQiXvuIVLvCmWVclFg6dRFDyfsYs6Pdr/NuZ2+yJxeHN+6WAfDh2aZ8nlZntnvuhZUQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/nested-clients": "^3.997.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.973.14", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.14.tgz", + "integrity": "sha512-vH4pEu9YBEwr67yT+GVcmKX0GzfIrIYUn+MF5vXg9OspouVnAekuyVyawFvZHEK7WlcwVDwNrqI3ZBDUAiyu9A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.972.32", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.32.tgz", + "integrity": "sha512-2loKuOMRFDg1nwdni5AtJ9S5juVbRNPNsPC7tWTfkHyycPwACMhxepspUHi8GhvfNlL2cQo3sPMod1uib+KZ0w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.15.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "license": "MIT" + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@isaacs/fs-minipass/node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.3.tgz", + "integrity": "sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==", + "license": "BSD-3-Clause", + "dependencies": { + "consola": "^3.2.3", + "detect-libc": "^2.0.0", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^2.6.7", + "nopt": "^8.0.0", + "semver": "^7.5.3", + "tar": "^7.4.0" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@seasketch/geostats-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@seasketch/geostats-types/-/geostats-types-1.0.0.tgz", + "integrity": "sha512-vuUoQuPh4SdCjhxAXHU9UH8n1Nfq7hfv4hPO7OSjxqz+e77GW9QbqQduKON2sEpR0J0DrA1naMBi9hioUoud7w==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/geojson": "^7946.0.14" + } + }, + "node_modules/@smithy/core": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.29.0.tgz", + "integrity": "sha512-sEvpvkBVoMxjoek35XyJFn2ZD3EJ1RpiZrT47WaZodxzAIWS44zkdvbqGE/ZlugtjiQp62cffYZ9ldyRkjAGnA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.15.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.4.5.tgz", + "integrity": "sha512-LnjUTNG0GgQlKIq7IioeOrPaEmC5xOd1WtAz24TLSiYQnWX2uHr53GrFuQhkrJBktPYCMga/NbUOW7hFbSA2Cg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.29.0", + "@smithy/types": "^4.15.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.6.2.tgz", + "integrity": "sha512-q96PSDOAGw+X+nuELd7Cjebps0SYr+YlPbviEX9sLVw+VM4M7VV8hn1nL1mGS6urDu33eQ5A7WhlphaDO6kUyQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.29.0", + "@smithy/types": "^4.15.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.9.2.tgz", + "integrity": "sha512-s0yAIRj6TVfHgl+QzVyqal1KMGZ9B5512IrxKc6+dOpw8fUmFL3CvuAhjv0J+aNjUPfVZ2IhqPEDvkB5Ncx9oA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.29.0", + "@smithy/types": "^4.15.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.6.1.tgz", + "integrity": "sha512-SqvuP75p/DmgWWI7jv4kf/UW+V4LFmlUn19s604SgAcRuJRB1vDnWwzZMYCLUcmKxko9wDn6iLgGEIpTNgZbIQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.29.0", + "@smithy/types": "^4.15.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.15.1.tgz", + "integrity": "sha512-x3L0XSACF6UYzKpa9biqiRMgvH5+wnFFew9Tm/grFYqgaupPwx/+ojDPpPJM8dZON3S9tjz5U+PQYsCBd1Mw5Q==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.1.tgz", + "integrity": "sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/bytes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/bytes/-/bytes-3.1.5.tgz", + "integrity": "sha512-VgZkrJckypj85YxEsEavcMmmSOIzkUHqWmM4CCyia5dc54YwsXzJ5uT4fYxBQNEXx+oF1krlhgCbvfubXqZYsQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "18.19.130", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", + "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/pg": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.20.0.tgz", + "integrity": "sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, + "node_modules/@types/tmp": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", + "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aproba": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.1.0.tgz", + "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==", + "license": "ISC" + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sdk": { + "version": "2.1693.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1693.0.tgz", + "integrity": "sha512-cJmb8xEnVLT+R6fBS5sn/EFJiX7tUnDaPtOPZ1vFbOJtd0fnZn/Ky2XGgsvvoeliWeH7mL3TWSX5zXXGSQV6gQ==", + "deprecated": "The AWS SDK for JavaScript (v2) has reached end-of-support, and no longer receives updates. Please migrate your code to use AWS SDK for JavaScript (v3). More info https://a.co/cUPnyil", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aws-sdk/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/aws-sdk/node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "license": "MIT", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bowser": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/duckdb": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/duckdb/-/duckdb-1.4.4.tgz", + "integrity": "sha512-hEJJ5hyVF0VLj3dmOLpsWrQR0b3d4Ykqtygm6iUXjHJDDnSqg/USKxcb5qvNrOhFYPgktayU6dXCtgPqcmmpog==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "node-addon-api": "^7.0.0", + "node-gyp": "^9.4.1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "license": "BSD-3-Clause" + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ip-address": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz", + "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC" + }, + "node_modules/node-gyp/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "license": "ISC", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nopt": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", + "license": "ISC", + "dependencies": { + "abbrev": "^3.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pg": { + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.22.0.tgz", + "integrity": "sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.14.0", + "pg-pool": "^3.14.0", + "pg-protocol": "^1.15.0", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.4.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz", + "integrity": "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.14.0.tgz", + "integrity": "sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz", + "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.15.0.tgz", + "integrity": "sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "license": "ISC" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "license": "MIT" + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT", + "optional": true + }, + "node_modules/sanitize-filename": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.4.tgz", + "integrity": "sha512-9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg==", + "license": "WTFPL OR ISC", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", + "license": "ISC" + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz", + "integrity": "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==", + "license": "MIT", + "dependencies": { + "ip-address": "^10.1.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "7.5.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.19.tgz", + "integrity": "sha512-4LeEWl96twnS2Q7Bz4MGqgazLqO+hJN63GZxXoIqh1T3VweYD997gbU1ItNsQafqqXTXd5WFyFdReLtwvRBNiw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/tar/node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/tmp": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", + "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "license": "WTFPL", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/typescript": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "license": "MIT", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "license": "(WTFPL OR MIT)" + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", + "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + } + } +} diff --git a/packages/data-tables-handler/package.json b/packages/data-tables-handler/package.json new file mode 100644 index 000000000..e1cf8635f --- /dev/null +++ b/packages/data-tables-handler/package.json @@ -0,0 +1,32 @@ +{ + "name": "data-tables-handler", + "version": "1.0.0", + "description": "Processes overlay-related CSV data table uploads to Parquet + column stats on R2", + "license": "BSD-3-Clause", + "main": "dist/handler.js", + "scripts": { + "build": "tsc", + "watch": "tsc -w", + "dev": "npx --yes tsx@4.19.3 watch server.ts", + "build:container": "docker build -f Dockerfile .. -t data-tables-handler:latest" + }, + "dependencies": { + "@aws-sdk/client-s3": "^3.758.0", + "@aws-sdk/lib-storage": "^3.758.0", + "@seasketch/geostats-types": "^1.0.0", + "aws-sdk": "^2.1234.0", + "bytes": "^3.1.2", + "duckdb": "^1.2.0", + "pg": "^8.8.0", + "sanitize-filename": "^1.6.3", + "tmp": "^0.2.1", + "typescript": "5.5.3" + }, + "devDependencies": { + "@types/bytes": "^3.1.1", + "@types/node": "^18.11.4", + "@types/pg": "^8.6.5", + "@types/tmp": "^0.2.3", + "dotenv": "^16.0.3" + } +} diff --git a/packages/data-tables-handler/server.ts b/packages/data-tables-handler/server.ts new file mode 100644 index 000000000..a70f1d5d6 --- /dev/null +++ b/packages/data-tables-handler/server.ts @@ -0,0 +1,34 @@ +#!/usr/bin/env tsx +import { createServer } from "http"; +import * as dotenv from "dotenv"; +dotenv.config(); + +const PORT = process.env.PORT || 3006; + +const server = createServer(function (req, res) { + if (req.method === "POST") { + let body = ""; + req.on("data", (chunk) => { + body += chunk.toString(); + }); + req.on("end", async () => { + const data = JSON.parse(body); + try { + const { processDataTableUpload } = await import("./handler"); + const outputs = await processDataTableUpload(data); + res.setHeader("Content-Type", "application/json"); + res.end(JSON.stringify(outputs)); + } catch (e) { + res.writeHead(500, { "Content-Type": "application/json" }); + res.end(JSON.stringify({ error: (e as Error).message })); + } + }); + } else { + res.writeHead(200); + res.end("POST to simulate data-tables-handler lambda"); + } +}); + +server.listen(PORT); +console.log(`Data tables handler dev server on http://localhost:${PORT}`); +console.log(`Set DATA_TABLES_LAMBDA_DEV_HANDLER=http://localhost:${PORT}`); diff --git a/packages/data-tables-handler/src/handleDataTableUpload.ts b/packages/data-tables-handler/src/handleDataTableUpload.ts new file mode 100644 index 000000000..2fd561c84 --- /dev/null +++ b/packages/data-tables-handler/src/handleDataTableUpload.ts @@ -0,0 +1,200 @@ +import { dirSync } from "tmp"; +import * as path from "path"; +import { writeFileSync } from "fs"; +import sanitize = require("sanitize-filename"); +import { getClient } from "./lambda-db-client"; +import { + buildR2Remote, + getStagingObject, + putObject, +} from "./remotes"; +import { + getGeostatsLayer, + validateJoinColumnChoice, +} from "./validateJoinColumn"; +import { + computeColumnStatsFromParquet, + processCsvWithDuckDb, + readJoinValues, +} from "./processWithDuckDb"; +import type { + DataTableUploadProcessingOptions, + DataTablesHandlerRequest, + DataTablesHandlerResponse, +} from "./types"; + +function defaultTableName(filename: string): string { + return filename.replace(/\.[^.]+$/, ""); +} + +function logDebug(message: string, details?: Record) { + const suffix = details ? ` ${JSON.stringify(details)}` : ""; + console.log(`[data-tables-handler] ${message}${suffix}`); +} + +export default async function handleDataTableUpload( + request: DataTablesHandlerRequest, +): Promise { + const { taskId, uploadId, objectKey, suffix, skipLoggingProgress } = request; + logDebug("starting upload", { + taskId, + uploadId, + objectKey, + suffix, + skipLoggingProgress: Boolean(skipLoggingProgress), + }); + const pgClient = await getClient(); + + const updateProgress = async ( + state: "running" | "complete" | "failed", + progressMessage: string, + progress?: number, + ) => { + if (skipLoggingProgress) return; + logDebug("updateProgress", { taskId, state, progressMessage, progress }); + try { + if (progress !== undefined) { + await pgClient.query( + `update project_background_jobs set state = $1, progress = least($2::numeric, 1.0::numeric), progress_message = $3 where id = $4`, + [state, progress, progressMessage, taskId], + ); + } else { + await pgClient.query( + `update project_background_jobs set state = $1, progress_message = $2 where id = $3`, + [state, progressMessage, taskId], + ); + } + } catch (e) { + logDebug("updateProgress failed", { + taskId, + state, + progressMessage, + progress, + error: (e as Error).message, + }); + throw e; + } + }; + + const tmpobj = dirSync({ unsafeCleanup: true, keep: false, prefix: "dt-" }); + const csvPath = path.join(tmpobj.name, "input.csv"); + const parquetPath = path.join(tmpobj.name, "data.parquet"); + const statsPath = path.join(tmpobj.name, "column-stats.json"); + + try { + await updateProgress("running", "downloading", 0.05); + + const uploadQ = await pgClient.query( + `select filename, processing_options, overlay_geostats, overlay_join_column, replace_overlay_data_table_id + from overlay_data_table_uploads where id = $1`, + [uploadId], + ); + if (!uploadQ.rows[0]) { + throw new Error("Upload record not found"); + } + const upload = uploadQ.rows[0]; + const processingOptions = (upload.processing_options || + {}) as DataTableUploadProcessingOptions; + const joinColumn = processingOptions.joinColumn; + const overlayJoinColumn = + processingOptions.overlayJoinColumn || upload.overlay_join_column; + if (!joinColumn || !overlayJoinColumn) { + throw new Error("Join column and overlay join column are required"); + } + + logDebug("downloading staging object", { objectKey, csvPath }); + await getStagingObject(csvPath, objectKey); + await updateProgress("running", "processing", 0.2); + + logDebug("processing csv with duckdb", { csvPath, parquetPath }); + const { rowCount, headers } = await processCsvWithDuckDb( + csvPath, + parquetPath, + processingOptions, + ); + logDebug("csv processed", { rowCount, columnCount: headers.length }); + + const joinValues = await readJoinValues(parquetPath, joinColumn); + const layer = getGeostatsLayer(upload.overlay_geostats); + const joinValidation = validateJoinColumnChoice( + headers, + joinColumn, + overlayJoinColumn, + layer, + joinValues, + ); + logDebug("join validation complete", { + joinColumn, + overlayJoinColumn, + matchRate: joinValidation.matchRate, + matchedRows: joinValidation.matchedRows, + unmatchedRows: joinValidation.unmatchedRows, + }); + + await updateProgress("running", "computing stats", 0.6); + + const tableName = + processingOptions.name || defaultTableName(upload.filename); + const columnStats = await computeColumnStatsFromParquet( + parquetPath, + tableName, + { + column: joinColumn, + overlayAttribute: overlayJoinColumn, + matchRate: joinValidation.matchRate, + matchedRows: joinValidation.matchedRows, + unmatchedRows: joinValidation.unmatchedRows, + unmatchedOverlayValues: joinValidation.unmatchedOverlayValues, + }, + ); + + writeFileSync(statsPath, JSON.stringify(columnStats)); + + await updateProgress("running", "uploading", 0.8); + + const parquetTarget = buildR2Remote(suffix, uploadId, "data.parquet"); + const statsTarget = buildR2Remote(suffix, uploadId, "column-stats.json"); + await putObject(parquetPath, parquetTarget.remote); + await putObject(statsPath, statsTarget.remote); + + const result = { + uploadId, + name: tableName, + joinColumn, + overlayJoinColumn, + rowCount: Math.trunc(Number(rowCount)), + parquetRemote: parquetTarget.remote, + columnStatsRemote: statsTarget.remote, + }; + logDebug("upload processing complete, enqueueing outputs job", { + taskId, + uploadId, + rowCount: result.rowCount, + parquetRemote: result.parquetRemote, + }); + + await pgClient.query( + `SELECT graphile_worker.add_job('processDataTableUploadOutputs', $1::json)`, + [JSON.stringify({ jobId: taskId, data: result })], + ); + + return { success: result }; + } catch (e) { + const error = e as Error; + logDebug("upload failed", { + taskId, + uploadId, + message: error.message, + stack: error.stack, + }); + const errorDetails = { message: error.message }; + await pgClient.query(`select fail_overlay_data_table_upload($1, $2, $3)`, [ + taskId, + error.message, + JSON.stringify(errorDetails), + ]); + return { error: error.message, errorDetails }; + } finally { + tmpobj.removeCallback(); + } +} diff --git a/packages/data-tables-handler/src/inferCsvColumnPlans.ts b/packages/data-tables-handler/src/inferCsvColumnPlans.ts new file mode 100644 index 000000000..0b6e88b62 --- /dev/null +++ b/packages/data-tables-handler/src/inferCsvColumnPlans.ts @@ -0,0 +1,178 @@ +import duckdb from "duckdb"; + +export const CSV_NULL_STRINGS_BASE = ["", "N/A", "#N/A", "NULL", "null"]; +export const CSV_NULL_STRINGS_WITH_NA = [...CSV_NULL_STRINGS_BASE, "NA"]; + +export type CsvColumnPlan = { + name: string; + duckDbType: string; + nullifyNa: boolean; +}; + +function run(conn: duckdb.Connection, sql: string): Promise { + return new Promise((resolve, reject) => { + conn.run(sql, (err) => (err ? reject(err) : resolve())); + }); +} + +function all(conn: duckdb.Connection, sql: string): Promise { + return new Promise((resolve, reject) => { + conn.all(sql, (err, rows) => (err ? reject(err) : resolve(rows as T[]))); + }); +} + +export function nullstrOption(nullStrings: string[]): string { + return `nullstr=[${nullStrings.map((v) => `'${v.replace(/'/g, "''")}'`).join(", ")}]`; +} + +export function isNumericDuckDbType(type: string): boolean { + return /INT|DOUBLE|FLOAT|DECIMAL|NUMERIC|REAL|HUGEINT/i.test(type); +} + +function quoteColumn(name: string): string { + return `"${name.replace(/"/g, '""')}"`; +} + +/** + * Compare two typed CSV reads (with vs without treating "NA" as null) to decide + * per-column whether bare "NA" is missing data or a valid string code. + */ +export function decideNaNullHandling( + strictType: string, + naNullType: string, + naLiteralCount: number, + naLooksLikeValidCode: boolean, +): Pick { + const strictIsNumeric = isNumericDuckDbType(strictType); + const naNullIsNumeric = isNumericDuckDbType(naNullType); + + if (strictIsNumeric) { + return { duckDbType: strictType, nullifyNa: true }; + } + + if (naNullIsNumeric) { + // "NA" was blocking numeric inference (e.g. count column with R-style NA). + return { duckDbType: naNullType, nullifyNa: true }; + } + + if (naLiteralCount > 0 && naLooksLikeValidCode) { + // Column stays text either way; preserve literal "NA" codes (e.g. species). + return { duckDbType: "VARCHAR", nullifyNa: false }; + } + + return { duckDbType: "VARCHAR", nullifyNa: true }; +} + +async function naLooksLikeValidCode( + conn: duckdb.Connection, + quotedColumn: string, + naLiteralCount: number, +): Promise { + if (naLiteralCount === 0) { + return false; + } + + const freqRows = await all<{ max_c: number; median_c: number }>( + conn, + `SELECT + MAX(c)::INTEGER as max_c, + MEDIAN(c)::DOUBLE as median_c + FROM ( + SELECT COUNT(*)::INTEGER as c + FROM _csv_probe_strict + WHERE CAST(${quotedColumn} AS VARCHAR) != 'NA' + AND ${quotedColumn} IS NOT NULL + GROUP BY CAST(${quotedColumn} AS VARCHAR) + ) freq`, + ); + const maxC = freqRows[0]?.max_c ?? 0; + const medianC = freqRows[0]?.median_c ?? 0; + const peerFrequency = Math.max(medianC, 1); + + // NA appears roughly as often as a typical category value, not a bulk missing marker. + return naLiteralCount <= peerFrequency * 2 && naLiteralCount <= maxC; +} + +export async function inferCsvColumnPlans( + conn: duckdb.Connection, + csvPath: string, + readCsvOptionsSuffix: string, +): Promise { + const escapedPath = csvPath.replace(/'/g, "''"); + const baseNullstr = nullstrOption(CSV_NULL_STRINGS_BASE); + const naNullstr = nullstrOption(CSV_NULL_STRINGS_WITH_NA); + + await run( + conn, + `CREATE OR REPLACE TEMP TABLE _csv_probe_strict AS SELECT * FROM read_csv('${escapedPath}', ${readCsvOptionsSuffix}, ${baseNullstr})`, + ); + await run( + conn, + `CREATE OR REPLACE TEMP TABLE _csv_probe_na_null AS SELECT * FROM read_csv('${escapedPath}', ${readCsvOptionsSuffix}, ${naNullstr})`, + ); + + const strictSchema = await all<{ column_name: string; data_type: string }>( + conn, + `SELECT column_name, data_type FROM information_schema.columns WHERE table_name = '_csv_probe_strict' ORDER BY ordinal_position`, + ); + const naNullSchema = await all<{ column_name: string; data_type: string }>( + conn, + `SELECT column_name, data_type FROM information_schema.columns WHERE table_name = '_csv_probe_na_null' ORDER BY ordinal_position`, + ); + const naNullTypeByColumn = new Map( + naNullSchema.map((col) => [col.column_name, col.data_type]), + ); + + const plans: CsvColumnPlan[] = []; + for (const col of strictSchema) { + const quoted = quoteColumn(col.column_name); + const naLiteralRows = await all<{ count: number }>( + conn, + `SELECT COUNT(*)::INTEGER as count FROM _csv_probe_strict WHERE CAST(${quoted} AS VARCHAR) = 'NA'`, + ); + const naLiteralCount = naLiteralRows[0]?.count ?? 0; + const validNaCode = await naLooksLikeValidCode( + conn, + quoted, + naLiteralCount, + ); + const decision = decideNaNullHandling( + col.data_type, + naNullTypeByColumn.get(col.column_name) || "VARCHAR", + naLiteralCount, + validNaCode, + ); + plans.push({ + name: col.column_name, + ...decision, + }); + if (!decision.nullifyNa && naLiteralCount > 0) { + console.log( + `[data-tables-handler] preserving literal "NA" in column ${col.column_name} (${naLiteralCount} row(s); looks like a category code)`, + ); + } + } + + await run(conn, "DROP TABLE IF EXISTS _csv_probe_strict"); + await run(conn, "DROP TABLE IF EXISTS _csv_probe_na_null"); + + return plans; +} + +export function buildTypedSelectSql(plans: CsvColumnPlan[]): string { + return plans + .map((plan) => { + const quoted = quoteColumn(plan.name); + if (isNumericDuckDbType(plan.duckDbType)) { + const valueExpr = plan.nullifyNa + ? `NULLIF(${quoted}, 'NA')` + : quoted; + return `TRY_CAST(${valueExpr} AS ${plan.duckDbType}) AS ${quoted}`; + } + if (plan.nullifyNa) { + return `NULLIF(${quoted}, 'NA') AS ${quoted}`; + } + return `${quoted}`; + }) + .join(", "); +} diff --git a/packages/data-tables-handler/src/lambda-db-client.ts b/packages/data-tables-handler/src/lambda-db-client.ts new file mode 100644 index 000000000..2b51ff5f3 --- /dev/null +++ b/packages/data-tables-handler/src/lambda-db-client.ts @@ -0,0 +1,85 @@ +import { RDS } from "aws-sdk"; +import { Client } from "pg"; + +export async function getClient() { + if (!dbClient) { + if ( + db.host && + (/localhost/.test(db.host) || + /127.0.0.1/.test(db.host) || + /host.docker.internal/.test(db.host)) + ) { + dbClient = new Promise(async (resolve, reject) => { + const client = new Client({ + database: db.database, + host: db.host, + port: parseInt(db.port.toString()), + user: db.user, + password: process.env.PGPASSWORD, + }); + try { + await client.connect(); + client.on("error", () => { + dbClient = null; + }); + resolve(client); + } catch (e) { + reject(e); + } + }); + } else { + dbClient = new Promise((resolve, reject) => { + signer.getAuthToken( + { + region: db.region, + hostname: db.host, + port: parseInt(db.port.toString()), + username: db.user, + }, + async function (err, token) { + if (err) { + reject(new Error(`could not get auth token: ${err}`)); + } else { + const client = new Client({ + database: db.database, + host: db.host, + port: parseInt(db.port.toString()), + user: db.user, + password: token, + ssl: { rejectUnauthorized: false }, + }); + try { + await client.connect(); + client.on("error", () => { + dbClient = null; + }); + resolve(client); + } catch (e) { + reject(e); + } + } + }, + ); + }); + } + } + return dbClient; +} + +const signer = new RDS.Signer(); + +for (const param of ["PGREGION", "PGHOST", "PGPORT", "PGUSER", "PGDATABASE"]) { + if (!process.env[param]) { + throw new Error(`Environment variable "${param}" not set`); + } +} + +const db = { + region: process.env.PGREGION!, + host: process.env.PGHOST!, + port: parseInt(process.env.PGPORT as string), + user: process.env.PGUSER!, + database: process.env.PGDATABASE!, +}; + +let dbClient: Promise | null = null; diff --git a/packages/data-tables-handler/src/normalizeCsvEncoding.ts b/packages/data-tables-handler/src/normalizeCsvEncoding.ts new file mode 100644 index 000000000..169959c18 --- /dev/null +++ b/packages/data-tables-handler/src/normalizeCsvEncoding.ts @@ -0,0 +1,35 @@ +import { readFileSync, writeFileSync } from "fs"; +import * as path from "path"; + +function isValidUtf8(buffer: Buffer): boolean { + try { + new TextDecoder("utf-8", { fatal: true }).decode(buffer); + return true; + } catch { + return false; + } +} + +/** + * DuckDB's CSV reader requires valid UTF-8. Many legacy exports (Excel, R, etc.) + * are Latin-1 / Windows-1252. Reinterpret single-byte encodings as Latin-1 and + * write UTF-8 so every byte 0x00–0xFF round-trips without parse failures. + */ +export function normalizeCsvEncodingIfNeeded( + csvPath: string, + normalizedPath?: string, +): { path: string; normalized: boolean } { + const buffer = readFileSync(csvPath); + if (isValidUtf8(buffer)) { + return { path: csvPath, normalized: false }; + } + + const out = + normalizedPath || + path.join( + path.dirname(csvPath), + `${path.basename(csvPath, path.extname(csvPath))}.utf8${path.extname(csvPath) || ".csv"}`, + ); + writeFileSync(out, buffer.toString("latin1"), "utf8"); + return { path: out, normalized: true }; +} diff --git a/packages/data-tables-handler/src/processWithDuckDb.ts b/packages/data-tables-handler/src/processWithDuckDb.ts new file mode 100644 index 000000000..a1f0be059 --- /dev/null +++ b/packages/data-tables-handler/src/processWithDuckDb.ts @@ -0,0 +1,210 @@ +import duckdb from "duckdb"; +import * as path from "path"; +import { + DataTablesColumnStats, + GeostatsAttribute, +} from "@seasketch/geostats-types"; +import { inferGeostatsType } from "./validateJoinColumn"; +import type { DataTableUploadProcessingOptions } from "./types"; +import { normalizeCsvEncodingIfNeeded } from "./normalizeCsvEncoding"; +import { + buildTypedSelectSql, + CSV_NULL_STRINGS_BASE, + inferCsvColumnPlans, + nullstrOption, +} from "./inferCsvColumnPlans"; + +function run(conn: duckdb.Connection, sql: string): Promise { + return new Promise((resolve, reject) => { + conn.run(sql, (err) => (err ? reject(err) : resolve())); + }); +} + +function all(conn: duckdb.Connection, sql: string): Promise { + return new Promise((resolve, reject) => { + conn.all(sql, (err, rows) => (err ? reject(err) : resolve(rows as T[]))); + }); +} + +function escapePath(path: string): string { + return path.replace(/'/g, "''"); +} + +function delimiterOption(delimiter: string): string { + switch (delimiter) { + case "\t": + return "delim='\\t'"; + case ";": + return "delim=';'"; + case "|": + return "delim='|'"; + default: + return ""; + } +} + +export async function processCsvWithDuckDb( + csvPath: string, + parquetPath: string, + options: DataTableUploadProcessingOptions, +): Promise<{ rowCount: number; headers: string[]; joinValues: Set }> { + const db = new duckdb.Database(":memory:"); + const conn = db.connect(); + const { path: duckDbCsvPath, normalized } = normalizeCsvEncodingIfNeeded( + csvPath, + path.join(path.dirname(csvPath), "input.utf8.csv"), + ); + if (normalized) { + console.log( + `[data-tables-handler] normalized csv encoding to utf-8: ${duckDbCsvPath}`, + ); + } + const delimiter = options.delimiter || ","; + const hasHeader = options.hasHeaderRow !== false; + const forceNotNull = options.forceNotNull || []; + const forceNotNullSql = + forceNotNull.length > 0 + ? `, force_not_null=[${forceNotNull.map((c) => `'${c.replace(/'/g, "''")}'`).join(", ")}]` + : ""; + + const readCsvOptionsSuffix = [ + "header=" + (hasHeader ? "true" : "false"), + "sample_size=-1", + delimiterOption(delimiter), + ] + .filter(Boolean) + .join(", "); + + const columnPlans = await inferCsvColumnPlans( + conn, + duckDbCsvPath, + readCsvOptionsSuffix, + ); + const baseNullstr = nullstrOption(CSV_NULL_STRINGS_BASE); + + await run( + conn, + `CREATE OR REPLACE TEMP TABLE _csv_raw AS SELECT * FROM read_csv('${escapePath(duckDbCsvPath)}', ${readCsvOptionsSuffix}, ${baseNullstr}, all_varchar=true${forceNotNullSql})`, + ); + await run( + conn, + `CREATE OR REPLACE TABLE observations AS SELECT ${buildTypedSelectSql(columnPlans)} FROM _csv_raw`, + ); + await run(conn, "DROP TABLE IF EXISTS _csv_raw"); + + const countRows = await all<{ count: number }>( + conn, + "SELECT COUNT(*)::INTEGER as count FROM observations", + ); + const rowCount = countRows[0]?.count ?? 0; + + const columns = await all<{ column_name: string }>( + conn, + `SELECT column_name FROM information_schema.columns WHERE table_name = 'observations' ORDER BY ordinal_position`, + ); + const headers = columns.map((c) => c.column_name); + + await run( + conn, + `COPY observations TO '${escapePath(parquetPath)}' (FORMAT PARQUET)`, + ); + + conn.close(); + db.close(); + + return { rowCount, headers, joinValues: new Set() }; +} + +export async function readJoinValues( + parquetPath: string, + joinColumn: string, +): Promise> { + const db = new duckdb.Database(":memory:"); + const conn = db.connect(); + const col = joinColumn.replace(/"/g, '""'); + const rows = await all<{ v: string }>( + conn, + `SELECT DISTINCT CAST("${col}" AS VARCHAR) as v FROM read_parquet('${escapePath(parquetPath)}') WHERE "${col}" IS NOT NULL`, + ); + conn.close(); + db.close(); + return new Set(rows.map((r) => r.v)); +} + +export async function computeColumnStatsFromParquet( + parquetPath: string, + tableName: string, + joinInfo: DataTablesColumnStats["join"], +): Promise { + const db = new duckdb.Database(":memory:"); + const conn = db.connect(); + await run( + conn, + `CREATE OR REPLACE TABLE observations AS SELECT * FROM read_parquet('${escapePath(parquetPath)}')`, + ); + + const countRows = await all<{ count: number }>( + conn, + "SELECT COUNT(*)::INTEGER as count FROM observations", + ); + const rowCount = countRows[0]?.count ?? 0; + + const schema = await all<{ column_name: string; data_type: string }>( + conn, + `SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'observations' ORDER BY ordinal_position`, + ); + + const columns: GeostatsAttribute[] = []; + for (const col of schema) { + const colName = col.column_name.replace(/"/g, '""'); + const type = inferGeostatsType(col.data_type); + const nonNull = await all<{ count: number }>( + conn, + `SELECT COUNT(*)::INTEGER as count FROM observations WHERE "${colName}" IS NOT NULL`, + ); + const count = nonNull[0]?.count ?? 0; + const distinctRows = await all<{ v: string; c: number }>( + conn, + `SELECT CAST("${colName}" AS VARCHAR) as v, COUNT(*)::INTEGER as c FROM observations WHERE "${colName}" IS NOT NULL GROUP BY 1 ORDER BY c DESC LIMIT 500`, + ); + const values: { [key: string]: number } = {}; + for (const row of distinctRows) { + values[row.v] = row.c; + } + const attr: GeostatsAttribute = { + attribute: col.column_name, + count, + countDistinct: distinctRows.length, + type, + values, + }; + if (type === "number") { + const stats = await all<{ + min: number; + max: number; + avg: number; + stdev: number; + }>( + conn, + `SELECT MIN(CAST("${colName}" AS DOUBLE)) as min, MAX(CAST("${colName}" AS DOUBLE)) as max, AVG(CAST("${colName}" AS DOUBLE)) as avg, STDDEV(CAST("${colName}" AS DOUBLE)) as stdev FROM observations WHERE "${colName}" IS NOT NULL`, + ); + if (stats[0]) { + (attr as GeostatsAttribute & { min?: number; max?: number }).min = + stats[0].min; + (attr as GeostatsAttribute & { min?: number; max?: number }).max = + stats[0].max; + } + } + columns.push(attr); + } + + conn.close(); + db.close(); + + return { + table: tableName, + rowCount, + columns, + join: joinInfo, + }; +} diff --git a/packages/data-tables-handler/src/remotes.ts b/packages/data-tables-handler/src/remotes.ts new file mode 100644 index 000000000..1d958babd --- /dev/null +++ b/packages/data-tables-handler/src/remotes.ts @@ -0,0 +1,81 @@ +import { createReadStream, statSync } from "fs"; +import { + S3Client, + PutObjectCommand, + GetObjectCommand, +} from "@aws-sdk/client-s3"; +import { Upload } from "@aws-sdk/lib-storage"; +import bytes from "bytes"; +import { Readable } from "stream"; + +const s3Client = new S3Client({ region: process.env.AWS_REGION! }); +const r2Client = new S3Client({ + region: "auto", + endpoint: process.env.R2_ENDPOINT!, + credentials: { + accessKeyId: process.env.R2_ACCESS_KEY_ID!, + secretAccessKey: process.env.R2_SECRET_ACCESS_KEY!, + }, +}); + +export async function putObject(filepath: string, remote: string) { + if (!/r2:/.test(remote) && !/s3:/.test(remote)) { + throw new Error(`Invalid remote ${remote}`); + } + const parts = remote.replace(/\w+:\/\//, "").split("/"); + const client = /r2:/.test(remote) ? r2Client : s3Client; + const Bucket = parts[0]; + const Key = parts.slice(1).join("/"); + const fileSizeBytes = statSync(filepath).size; + const fileStream = createReadStream(filepath); + if (fileSizeBytes > 500 * 1024 * 1024) { + const upload = new Upload({ + client, + params: { Bucket, Key, Body: fileStream }, + }); + await upload.done(); + } else { + await client.send( + new PutObjectCommand({ Bucket, Key, Body: fileStream }), + ); + } + console.log(`putObject ${filepath} (${bytes(fileSizeBytes)}) to ${remote}`); +} + +export async function getObject(filepath: string, remote: string) { + const isR2 = /r2:/.test(remote); + const parts = remote.replace(/\w+:\/\//, "").split("/"); + const client = isR2 ? r2Client : s3Client; + const Bucket = parts[0]; + const Key = parts.slice(1).join("/"); + const response = await client.send( + new GetObjectCommand({ Bucket, Key }), + ); + const body = response.Body as Readable; + const { createWriteStream } = await import("fs"); + const { pipeline } = await import("stream/promises"); + await pipeline(body, createWriteStream(filepath)); +} + +export async function getStagingObject( + filepath: string, + objectKey: string, +): Promise { + const bucket = process.env.BUCKET!; + const response = await s3Client.send( + new GetObjectCommand({ Bucket: bucket, Key: objectKey }), + ); + const body = response.Body as Readable; + const { createWriteStream } = await import("fs"); + const { pipeline } = await import("stream/promises"); + await pipeline(body, createWriteStream(filepath)); +} + +export function buildR2Remote(slug: string, uploadId: string, filename: string) { + const bucket = process.env.R2_TILES_BUCKET || process.env.TILES_REMOTE?.replace("r2://", "").split("/")[0]; + if (!bucket) { + throw new Error("R2_TILES_BUCKET or TILES_REMOTE must be set"); + } + const key = `projects/${slug}/public/dataTables/${uploadId}/${filename}`; + return { remote: `r2://${bucket}/${key}`, key, bucket }; +} diff --git a/packages/data-tables-handler/src/types.ts b/packages/data-tables-handler/src/types.ts new file mode 100644 index 000000000..655627f2d --- /dev/null +++ b/packages/data-tables-handler/src/types.ts @@ -0,0 +1,32 @@ +export interface DataTableUploadProcessingOptions { + delimiter?: "," | "\t" | ";" | "|"; + hasHeaderRow?: boolean; + joinColumn?: string; + overlayJoinColumn?: string; + forceNotNull?: string[]; + name?: string; +} + +export interface DataTablesHandlerRequest { + taskId: string; + uploadId: string; + objectKey: string; + suffix: string; + skipLoggingProgress?: boolean; +} + +export interface DataTablesHandlerSuccess { + uploadId: string; + name: string; + joinColumn: string; + overlayJoinColumn: string; + rowCount: number; + parquetRemote: string; + columnStatsRemote: string; +} + +export interface DataTablesHandlerResponse { + success?: DataTablesHandlerSuccess; + error?: string; + errorDetails?: Record; +} diff --git a/packages/data-tables-handler/src/validateJoinColumn.ts b/packages/data-tables-handler/src/validateJoinColumn.ts new file mode 100644 index 000000000..1c7958d78 --- /dev/null +++ b/packages/data-tables-handler/src/validateJoinColumn.ts @@ -0,0 +1,88 @@ +import { + GeostatsAttribute, + GeostatsAttributeType, + GeostatsLayer, +} from "@seasketch/geostats-types"; + +export function getGeostatsLayer(overlayGeostats: unknown): GeostatsLayer { + const data = overlayGeostats as { layers?: GeostatsLayer[] }; + const layer = data?.layers?.[0]; + if (!layer?.attributes) { + throw new Error("Overlay geostats missing layer attributes"); + } + return layer; +} + +export function findOverlayAttribute( + layer: GeostatsLayer, + attributeName: string, +) { + const attr = layer.attributes.find((a) => a.attribute === attributeName); + if (!attr) { + throw new Error( + `Overlay attribute "${attributeName}" not found in geostats`, + ); + } + return attr; +} + +export function validateJoinColumnChoice( + headers: string[], + joinColumn: string, + overlayJoinColumn: string, + layer: GeostatsLayer, + joinValues: Set, +): { overlayAttr: GeostatsAttribute; matchRate: number; matchedRows: number; unmatchedRows: number; unmatchedOverlayValues: number } { + if (!headers.includes(joinColumn)) { + throw new Error(`Join column "${joinColumn}" not found in CSV headers`); + } + const overlayAttr = findOverlayAttribute(layer, overlayJoinColumn); + const overlayKeys = new Set(Object.keys(overlayAttr.values || {})); + let matchedRows = 0; + for (const v of joinValues) { + if (overlayKeys.has(v)) { + matchedRows++; + } + } + const unmatchedRows = joinValues.size - matchedRows; + if (matchedRows === 0) { + throw new Error( + "No values in the join column match overlay feature identifiers", + ); + } + if (unmatchedRows > 0) { + throw new Error( + `${unmatchedRows} value(s) in the join column are not present in the overlay layer`, + ); + } + let unmatchedOverlayValues = 0; + for (const k of overlayKeys) { + if (!joinValues.has(k)) { + unmatchedOverlayValues++; + } + } + const matchRate = + joinValues.size > 0 ? matchedRows / joinValues.size : 0; + return { + overlayAttr, + matchRate, + matchedRows, + unmatchedRows, + unmatchedOverlayValues, + }; +} + +export function inferGeostatsType(duckDbType: string): GeostatsAttributeType { + const t = duckDbType.toUpperCase(); + if (/INT|DOUBLE|FLOAT|DECIMAL|NUMERIC|REAL|HUGEINT/.test(t)) { + return "number"; + } + if (/BOOL/.test(t)) { + return "boolean"; + } + return "string"; +} + +export function sqlStringLiteral(value: string): string { + return `'${value.replace(/'/g, "''")}'`; +} diff --git a/packages/data-tables-handler/tsconfig.json b/packages/data-tables-handler/tsconfig.json new file mode 100644 index 000000000..ea087eee5 --- /dev/null +++ b/packages/data-tables-handler/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "lib": ["ES2020"], + "outDir": "dist", + "rootDir": ".", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "declaration": true + }, + "include": ["handler.ts", "server.ts", "src/**/*.ts"], + "exclude": ["dist", "node_modules"] +} diff --git a/packages/geostats-types/dist/lib/index.d.ts b/packages/geostats-types/dist/lib/index.d.ts index f0d25db5b..b2db94f90 100644 --- a/packages/geostats-types/dist/lib/index.d.ts +++ b/packages/geostats-types/dist/lib/index.d.ts @@ -229,4 +229,22 @@ export interface RasterInfo { } export declare function isRasterInfo(info: RasterInfo | GeostatsLayer | any): info is RasterInfo; export declare function isGeostatsLayer(data: RasterInfo | GeostatsLayer | any): data is GeostatsLayer; +/** + * Column statistics for overlay-related tabular data (CSV uploads joined to + * vector layers). Stored as JSON on R2 alongside Parquet artifacts. + */ +export interface DataTablesColumnStats { + /** Display name of the table (typically derived from filename). */ + table: string; + rowCount: number; + columns: GeostatsAttribute[]; + join: { + column: string; + overlayAttribute: string; + matchRate: number; + matchedRows: number; + unmatchedRows: number; + unmatchedOverlayValues: number; + }; +} //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/geostats-types/dist/lib/index.d.ts.map b/packages/geostats-types/dist/lib/index.d.ts.map index 81ac3fbf5..53faceafb 100644 --- a/packages/geostats-types/dist/lib/index.d.ts.map +++ b/packages/geostats-types/dist/lib/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/geostats-types/lib/index.ts b/packages/geostats-types/lib/index.ts index 9b5a82793..3a8e2c65e 100644 --- a/packages/geostats-types/lib/index.ts +++ b/packages/geostats-types/lib/index.ts @@ -306,3 +306,22 @@ export function isGeostatsLayer( } return true; } + +/** + * Column statistics for overlay-related tabular data (CSV uploads joined to + * vector layers). Stored as JSON on R2 alongside Parquet artifacts. + */ +export interface DataTablesColumnStats { + /** Display name of the table (typically derived from filename). */ + table: string; + rowCount: number; + columns: GeostatsAttribute[]; + join: { + column: string; + overlayAttribute: string; + matchRate: number; + matchedRows: number; + unmatchedRows: number; + unmatchedOverlayValues: number; + }; +} diff --git a/packages/infra/bin/infra.ts b/packages/infra/bin/infra.ts index a16c13e10..786a9f8fd 100644 --- a/packages/infra/bin/infra.ts +++ b/packages/infra/bin/infra.ts @@ -15,6 +15,7 @@ import { MailerLambdaStack } from "../lib/MailerLambdaStack"; import { OfflineTilePackageBucketStack } from "../lib/OfflineTilePackageUploadStack"; import { DataUploadsStack } from "../lib/DataUploadsStack"; import { UploadHandlerLambdaStack } from "../lib/UploadHandlerLambdaStack"; +import { DataTablesHandlerLambdaStack } from "../lib/DataTablesHandlerLambdaStack"; import { SQSStack } from "../lib/SQSStack"; import { OverlayWorkerLambdaStack } from "../lib/OverlayWorkerLambdaStack"; import { SubdivideWorkerLambdaStack } from "../lib/SubdivideWorkerLambdaStack"; @@ -171,6 +172,17 @@ const uploadHandler = new UploadHandlerLambdaStack( } ); +const dataTablesHandler = new DataTablesHandlerLambdaStack( + app, + "DataTablesHandler", + { + env, + vpc: db.vpc, + db: db.instance, + bucket: dataUploads.uploadsBucket, + } +); + const sqs = new SQSStack(app, "SeaSketchSQS", { env, }); @@ -217,10 +229,12 @@ new GraphQLStack(app, "SeaSketchGraphQLServer", { overlayWorkerArn: overlayWorker.fn.functionArn, normalizedOutputsBucket: dataUploads.normalizedUploadsBucket, uploadHandler: uploadHandler.fn, + dataTablesHandler: dataTablesHandler.fn, subdivisionWorkerLambdaArn: subdivideWorker.fn.functionArn, fragmentWorkerLambdaArn: fragmentWorker.fn.functionArn, geostatsPiiClassifierLambdaArn: piiClassifier.fn.functionArn, overlayEngineWorkerSqsQueue: sqs.productionOverlayEngineWorkerQueue, + dataTablesHandlerLambdaArn: dataTablesHandler.fn.functionArn, }); uploadHandler.fn.grantInvoke; diff --git a/packages/infra/lib/DataTablesHandlerLambdaStack.ts b/packages/infra/lib/DataTablesHandlerLambdaStack.ts new file mode 100644 index 000000000..300d8fc34 --- /dev/null +++ b/packages/infra/lib/DataTablesHandlerLambdaStack.ts @@ -0,0 +1,80 @@ +/** + * This stack defines the lambda which processes overlay data table uploads. + */ +import * as cdk from "aws-cdk-lib"; +import * as ec2 from "aws-cdk-lib/aws-ec2"; +import * as iam from "aws-cdk-lib/aws-iam"; +import * as lambda from "aws-cdk-lib/aws-lambda"; +import * as logs from "aws-cdk-lib/aws-logs"; +import * as rds from "aws-cdk-lib/aws-rds"; +import * as s3 from "aws-cdk-lib/aws-s3"; +import { Platform } from "aws-cdk-lib/aws-ecr-assets"; +import * as path from "path"; +import { Construct } from "constructs"; + +export class DataTablesHandlerLambdaStack extends cdk.Stack { + fn: lambda.DockerImageFunction; + constructor( + scope: Construct, + id: string, + props: cdk.StackProps & { + vpc: ec2.Vpc; + db: rds.DatabaseInstance; + bucket: s3.Bucket; + }, + ) { + super(scope, id, props); + if (!process.env.UPLOADS_BASE_URL) { + throw new Error("UPLOADS_BASE_URL must be set in environment"); + } + if (!process.env.TILES_REMOTE) { + throw new Error("TILES_REMOTE must be set in environment"); + } + + const fn = new lambda.DockerImageFunction(this, "DataTablesHandler", { + functionName: "DataTablesHandler", + vpc: props.vpc, + architecture: lambda.Architecture.X86_64, + code: lambda.DockerImageCode.fromImageAsset( + path.join(__dirname, "../.."), + { + file: "data-tables-handler/Dockerfile", + platform: Platform.LINUX_AMD64, + }, + ), + timeout: cdk.Duration.minutes(15), + logGroup: new logs.LogGroup(this, "DataTablesHandlerLogs", { + retention: logs.RetentionDays.ONE_MONTH, + }), + memorySize: 2048, + environment: { + NODE_ENV: "production", + BUCKET: props.bucket.bucketName, + UPLOADS_BASE_URL: process.env.UPLOADS_BASE_URL, + TILES_REMOTE: process.env.TILES_REMOTE, + R2_ENDPOINT: process.env.R2_ENDPOINT!, + R2_ACCESS_KEY_ID: process.env.R2_ACCESS_KEY_ID!, + R2_SECRET_ACCESS_KEY: process.env.R2_SECRET_ACCESS_KEY!, + R2_TILES_BUCKET: process.env.R2_TILES_BUCKET!, + AWS_REGION: props.bucket.env.region, + PGHOST: props.db.instanceEndpoint.hostname, + PGUSER: "graphile", + PGREGION: props.db.env.region, + PGPORT: "5432", + PGDATABASE: "seasketch", + }, + }); + + props.bucket.grantRead(fn); + fn.addToRolePolicy( + new iam.PolicyStatement({ + actions: ["rds-db:connect"], + resources: [ + `arn:aws:rds-db:${props.db.env.region}:${props.db.env.account}:dbuser:${props.db.instanceResourceId}/graphile`, + ], + }), + ); + + this.fn = fn; + } +} diff --git a/packages/infra/lib/GraphQLStack.ts b/packages/infra/lib/GraphQLStack.ts index 9f8488611..c1d046652 100644 --- a/packages/infra/lib/GraphQLStack.ts +++ b/packages/infra/lib/GraphQLStack.ts @@ -38,11 +38,13 @@ export class GraphQLStack extends cdk.Stack { spatialUploadsHandlerArn: string; overlayWorkerArn: string; uploadHandler: lambda.DockerImageFunction; + dataTablesHandler: lambda.DockerImageFunction; subdivisionWorkerLambdaArn: string; fragmentWorkerLambdaArn: string; /** Same function the upload handler uses for PII scoring; warmed on createDataUpload. */ geostatsPiiClassifierLambdaArn: string; overlayEngineWorkerSqsQueue: Queue; + dataTablesHandlerLambdaArn: string; } ) { super(scope, id, props); @@ -182,6 +184,7 @@ export class GraphQLStack extends cdk.Stack { GEOSTATS_PII_CLASSIFIER_ARN: props.geostatsPiiClassifierLambdaArn, OVERLAY_ENGINE_WORKER_SQS_QUEUE_URL: props.overlayEngineWorkerSqsQueue.queueUrl, + DATA_TABLES_HANDLER_LAMBDA_ARN: props.dataTablesHandlerLambdaArn, }, containerPort: 3857, }, @@ -290,5 +293,6 @@ export class GraphQLStack extends cdk.Stack { service.taskDefinition.taskRole ); props.uploadHandler.grantInvoke(service.taskDefinition.taskRole); + props.dataTablesHandler.grantInvoke(service.taskDefinition.taskRole); } } diff --git a/packages/spatial-uploads-handler/dist/handler.d.ts.map b/packages/spatial-uploads-handler/dist/handler.d.ts.map index da6dbff13..3f9880933 100644 --- a/packages/spatial-uploads-handler/dist/handler.d.ts.map +++ b/packages/spatial-uploads-handler/dist/handler.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAErF,YAAY,EACV,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,kCAAkC,CAAC;AAE1C,eAAO,MAAM,aAAa,UAAiB,4BAA4B;;;;;;;;EAsBtE,CAAC"} \ No newline at end of file +{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAErF,YAAY,EACV,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,kCAAkC,CAAC;AAE1C,eAAO,MAAM,aAAa,GAAU,OAAO,4BAA4B;;;;;;;;EAsBtE,CAAC"} \ No newline at end of file diff --git a/packages/spatial-uploads-handler/dist/src/handleUpload.js b/packages/spatial-uploads-handler/dist/src/handleUpload.js index 3c7efe06e..1432abb5c 100644 --- a/packages/spatial-uploads-handler/dist/src/handleUpload.js +++ b/packages/spatial-uploads-handler/dist/src/handleUpload.js @@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( }) : function(o, v) { o["default"] = v; }); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); Object.defineProperty(exports, "__esModule", { value: true }); exports.MVT_THRESHOLD = exports.MAX_OUTPUT_SIZE = void 0; exports.default = handleUpload; diff --git a/packages/spatial-uploads-handler/dist/src/handleUpload.js.map b/packages/spatial-uploads-handler/dist/src/handleUpload.js.map index fa4d693d2..5552a91bb 100644 --- a/packages/spatial-uploads-handler/dist/src/handleUpload.js.map +++ b/packages/spatial-uploads-handler/dist/src/handleUpload.js.map @@ -1 +1 @@ -{"version":3,"file":"handleUpload.js","sourceRoot":"","sources":["../../src/handleUpload.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"handleUpload.js","sourceRoot":"","sources":["../../src/handleUpload.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,+BAiSC;AAjVD,yDAA+C;AAC/C,6BAA8B;AAC9B,2BAAmC;AACnC,2CAA6B;AAC7B,8DAImC;AACnC,kDAAgE;AAChE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAClE,+DAA4D;AAC5D,+DAA4D;AAC5D,6DAA0D;AAC1D,uCAAiD;AACjD,qCAAkC;AAGlC,+BAAgC;AAChC,8CAA+C;AAC/C,iEAMgC;AAQhC,+DAGgC;AAF9B,uHAAA,eAAe,OAAA;AACf,qHAAA,aAAa,OAAA;AAUf,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC;AAE5B,KAAK,UAAU,YAAY;AACxC,mCAAmC;AACnC,KAAa;AACb,yBAAyB;AACzB,SAAiB;AACjB,yBAAyB;AACzB,IAAY;AACZ;;GAEG;AACH,cAAsB,EACtB,mBAA6B;AAC7B,6FAA6F;AAC7F,mBAA6B;AAC7B,gEAAgE;AAChE,iBAAoD;IAEpD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAS,GAAE,CAAC;IACnC,MAAM,OAAO,GAA2C,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,YAAY,IAAI,SAAS,CAAC;IAE1C;;;;OAIG;IACH,MAAM,cAAc,GAAoB,KAAK,EAC3C,KAAwC,EACxC,eAAuB,EACvB,QAAiB,EACjB,EAAE;QACF,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,QAAQ,CAAC,KAAK,CAClB,gIAAgI,EAChI,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAC1C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,CAAC,KAAK,CAClB,uGAAuG,EACvG,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAChC,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,qEAAqE;IACrE,+CAA+C;IAC/C,MAAM,MAAM,GAAG,IAAA,aAAO,EAAC;QACrB,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,UAAU;KACnB,CAAC,CAAC;IAEH,6EAA6E;IAC7E,sBAAsB;IACtB,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACnD,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,+FAA+F,EAC/F,CAAC,QAAQ,EAAE,KAAK,CAAC,CAClB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC;IAEtE,MAAM,SAAS,GAAG,QAAQ,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,UAAU,CAAC;IAChE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEhD,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,YAAY,GAAG,IAAI,CAAC;IAC1B,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;IAClB,MAAM,KAAK,GAAG,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,CAAC;IAEhD,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,eAAe,GAAG,GAAG,IAAI,CAAC,IAAI,CAChC,MAAM,CAAC,IAAI,EACX,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAC9B,EAAE,CAAC;IACJ,MAAM,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IACjD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,IAAA,mBAAS,EACb,eAAe,EACf,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAO,EAAE,SAAS,CAAC,EAAE,EACnD,MAAM,EACN,CAAC,GAAG,EAAE,CACP,CAAC;IAEF,IAAI,KAAmC,CAAC;IACxC,IAAI,yBAAkE,CAAC;IAEvE,MAAM,cAAc,GAAG,YAAY,GAAG,GAAG,CAAC;IAE1C,8EAA8E;IAC9E,cAAc;IACd,IAAI,CAAC;QACH,IAAI,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,MAAM,IAAA,yCAAmB,EAAC;gBAC7C,MAAM;gBACN,IAAI,EAAE,eAAe;gBACrB,OAAO;gBACP,cAAc;gBACd,OAAO;gBACP,KAAK;gBACL,YAAY;gBACZ,cAAc;gBACd,gBAAgB,EAAE,IAAI;gBACtB,mBAAmB;aACpB,CAAC,CAAC;YACH,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC;YAChC,yBAAyB,GAAG,YAAY,CAAC,yBAAyB,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,IAAA,yCAAmB,EAAC;gBAC7C,MAAM;gBACN,IAAI,EAAE,eAAe;gBACrB,OAAO;gBACP,cAAc;gBACd,OAAO;gBACP,KAAK;gBACL,YAAY;gBACZ,cAAc;gBACd,gBAAgB,EAAE,IAAI;gBACtB,mBAAmB;gBACnB,iBAAiB;aAClB,CAAC,CAAC;YACH,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;YAC5B,yBAAyB,GAAG,YAAY,CAAC,yBAAyB,CAAC;QACrE,CAAC;QAED,iCAAiC;QACjC,IAAI,MAA4B,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACjC,CAAC;QAED,qDAAqD;QACrD,MAAM,cAAc,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,sCAAe,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,CACjC,sCAAe,CAChB,eAAe,KAAK,CACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,sCAAe,CAAE,CAAC,IAAI,CACpD,EAAE,CACJ,CAAC;QACJ,CAAC;QACD,kCAAkC;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAA,mBAAS,EAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;QAC/C,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,cAAc,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,MAAM,cAAc,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,kBAAkB,GAAG,MAAM,yBAAyB,CAAC;QAE3D,MAAM,cAAc,CAAC,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAEtD,wEAAwE;QACxE,IAAI,SAA6B,CAAC;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,SAAS,GAAG,MAAM,CAAC,GAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,IACL,MAAM,CAAC,IAAI,KAAK,SAAS;gBACzB,CAAC,MAAM,CAAC,UAAU;gBAClB,CAAC,SAAS,EACV,CAAC;gBACD,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,IAAA,kBAAa,EAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,IAAA,mBAAS,EAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAEzD,MAAM,QAAQ,GAAwD;YACpE,MAAM,EAAE;gBACN;oBACE,QAAQ,EAAE,cAAc;oBACxB,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK;oBACzD,QAAQ;oBACR,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC3B,GAAG,CAAC;wBACJ,KAAK,EAAE,SAAS;wBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;qBACrB,CAAC,CAAC;oBACH,MAAM,EAAE,MAAM,IAAI,SAAS;oBAC3B,GAAG,EAAE,SAAS;oBACd,kBAAkB,EAChB,KAAK;wBACJ,KAAoB,CAAC,YAAY;4BAChC,4CAA2B,CAAC,UAAU;oBAC1C,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD;aACF;YACD,OAAO,EAAE,SAAS;SACnB,CAAC;QACF,0CAA0C;QAC1C,MAAM,QAAQ,CAAC,KAAK,CAClB,sEAAsE,EACtE;YACE,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,QAAQ;aACf,CAAC;SACH,CACF,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,CAAU,CAAC;QACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,KAAK,CAC5B,gIAAgI,EAChI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CACrC,CAAC;QACJ,CAAC;QACD,IACE,OAAO,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,GAAG,CAAC,aAAa;YACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EACrC,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,4BAAgB,CAAC;gBACnC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM;gBAC1B,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;YACH,MAAM,oBAAoB,GAAG,MAAM,YAAY,CAC7C,OAAO,CAAC,GAAG,CAAC,2BAA2B;gBACrC,OAAO,CAAC,GAAG,CAAC,+BAA+B;gBAC3C,CAAC,CAAC,IAAI,oBAAQ,CAAC;oBACX,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAW;oBAC/B,WAAW,EAAE;wBACX,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B;wBACpD,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,+BAA+B;qBAC7D;iBACF,CAAC;gBACJ,CAAC,CAAC,QAAQ,EACZ,OAAO,EACP;gBACE,SAAS,EAAE,MAAM;aAClB,CACF,CAAC;YAEF,MAAM,IAAA,uCAAkB,EACtB,YAAY,GAAG,GAAG,EAClB,oBAAoB,EACpB,MAAM,CAAC,MAAM,EACb,OAAO,CAAC,GAAG,CAAC,MAAO,EACnB,SAAS,EACT,cAAc,EACd,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAC5B,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,IAAA,kBAAa,EAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,IAAA,mBAAS,EAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GAAG,IAAI,oBAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAW,EAAE,CAAC,CAAC"} \ No newline at end of file From e4580dfbf0f57ec66b78362147327de1d7e6fd17 Mon Sep 17 00:00:00 2001 From: Chad Burt Date: Mon, 6 Jul 2026 08:08:30 -0700 Subject: [PATCH 03/32] Add cursor plan --- .../data_table_changelogs_ui_cc951009.plan.md | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 .cursor/plans/data_table_changelogs_ui_cc951009.plan.md diff --git a/.cursor/plans/data_table_changelogs_ui_cc951009.plan.md b/.cursor/plans/data_table_changelogs_ui_cc951009.plan.md new file mode 100644 index 000000000..5a4390210 --- /dev/null +++ b/.cursor/plans/data_table_changelogs_ui_cc951009.plan.md @@ -0,0 +1,133 @@ +--- +name: Data Table Changelogs UI +overview: Wire overlay data table changelog entries into the Tables tab history, replace generic publish-modal placeholders with proper field-group renderers, and roll data-table events into the Summarized Changes view under their parent layers. +todos: + - id: api-data-table-changelogs + content: Add table_of_contents_items_data_table_change_logs() to current.sql + GraphQL query + codegen + status: completed + - id: field-group-components + content: Create 5 DataTable* field group list items + shared summary helpers; register in fieldGroups/index.ts + status: completed + - id: tables-tab-history + content: Add DataTablesChangeLogList to DataTablesEditor + refetch after data-table mutations + status: completed + - id: publish-all-changes + content: Extend titleForChangeLog() for overlay_data_table entries in PublishTableOfContentsModal + status: completed + - id: publish-summarized + content: Merge data-table logs into publishChangelogSummary + dataTables badge + PublishBadgeDetailContent popover + status: completed + - id: lint-verify + content: Run client lint and manually verify Tables tab + publish modal flows + status: completed +isProject: false +--- + +# Data Table Changelog UI + +## Problem + +Data table events are recorded correctly in the DB (`entity_type = 'overlay_data_table'`, field groups `data_table:*`, summaries with `{name, version}`, `meta.table_of_contents_item_id`) via [`000429.sql`](packages/api/migrations/committed/000429.sql), but the client never queries or renders them properly: + +```mermaid +flowchart LR + subgraph recorded [Recorded in DB] + DT["overlay_data_table changelogs"] + end + subgraph missing [Currently missing] + TablesTab["Tables tab History"] + Summary["Summarized Changes badges"] + end + subgraph broken [Broken UI] + AllChanges["All Changes → GenericFieldGroupListItem"] + end + DT --> AllChanges + DT -.-> TablesTab + DT -.-> Summary +``` + +- **Tables tab:** no history query at all ([`DataTablesEditor.tsx`](packages/client/src/admin/data/overlayDataTables/DataTablesEditor.tsx)) +- **All Changes:** falls through to [`GenericFieldGroupListItem.tsx`](packages/client/src/admin/changelogs/fieldGroups/GenericFieldGroupListItem.tsx) → `"updated DATA_TABLE_CREATED"` +- **Summarized Changes:** [`publishChangelogSummary.ts`](packages/client/src/admin/data/publishChangelogSummary.ts) filters `entityType === "table_of_contents_items"` only, so data-table logs never attach to layer rows + +## 1. API: expose data-table changelogs for a layer + +Add a PostGraphile computed column on `table_of_contents_items` in [`packages/api/migrations/current.sql`](packages/api/migrations/current.sql): + +```sql +create or replace function table_of_contents_items_data_table_change_logs(item table_of_contents_items) + returns setof change_logs + language sql stable security definer as $$ + select * from change_logs + where entity_type = 'overlay_data_table' + and net_zero_changes = false + and (meta->>'table_of_contents_item_id')::int = item.id + order by last_at desc; + $$; +-- grant + @simpleCollections only comment (match 000414.sql pattern) +``` + +Extend [`LayerSettingsChangeLog`](packages/client/src/queries/DraftTableOfContents.graphql) **or** add a dedicated query `DataTableChangeLog($id, $first)` on `tableOfContentsItem.dataTableChangeLogs(first: $first) { ...ChangeLogDetails }`. Prefer a **separate query** so Settings-tab history stays unchanged per your preference. + +Run `graphql:codegen`. + +## 2. Tables tab: dedicated History section + +Create [`DataTablesChangeLogList.tsx`](packages/client/src/admin/changelogs/DataTablesChangeLogList.tsx) modeled on [`LayerSettingsChangeLogList.tsx`](packages/client/src/admin/changelogs/LayerSettingsChangeLogList.tsx): + +- Query `dataTableChangeLogs` for the TOC item id +- Paginate with same page sizes / “View full history” pattern +- Render via existing [`ChangeLogListItem`](packages/client/src/admin/changelogs/ChangeLogListItem.tsx) (no `itemTitle` needed — user is already on that layer) +- Return `null` when empty (before any tables exist) + +Mount at the bottom of [`DataTablesEditor.tsx`](packages/client/src/admin/data/overlayDataTables/DataTablesEditor.tsx), below `RelatedDataTables`, when `enableDataTables && dataTableJoinColumn`. + +Add refetch helper (e.g. `dataTableChangeLogRefetchQueries(tocItemId)`) and wire into data-table mutations in [`RelatedDataTables.tsx`](packages/client/src/admin/data/overlayDataTables/RelatedDataTables.tsx) and upload completion refetch paths so History updates after upload/rename/delete/replace/rollback. + +## 3. Field-group renderers (All Changes + Tables tab) + +Add shared helpers in [`fieldGroups/dataTableSummary.ts`](packages/client/src/admin/changelogs/fieldGroups/dataTableSummary.ts): + +- `tocItemIdFromMeta(meta)` — parse `table_of_contents_item_id` +- `tableLabel(from/to summary, meta)` — `"name (vN)"` from `{name, version}` + +Add five list-item components following existing patterns: + +| Component | Pattern | Example copy | +| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | +| `DataTableCreatedFieldGroupListItem` | [`FolderCreatedFieldGroupListItem`](packages/client/src/admin/changelogs/fieldGroups/FolderCreatedFieldGroupListItem.tsx) | uploaded data table **swath-short (v1)** | +| `DataTableReplacedFieldGroupListItem` | [`LayerUploadedFieldGroupListItem`](packages/client/src/admin/changelogs/fieldGroups/LayerUploadedFieldGroupListItem.tsx) replacement branch | replaced **swath-short** v1 → v2 | +| `DataTableRenamedFieldGroupListItem` | [`LayerTitleFieldGroupListItem`](packages/client/src/admin/changelogs/fieldGroups/LayerTitleFieldGroupListItem.tsx) | renamed **old** → **new** (v2) | +| `DataTableDeletedFieldGroupListItem` | [`LayerDeletedFieldGroupListItem`](packages/client/src/admin/changelogs/fieldGroups/LayerDeletedFieldGroupListItem.tsx) | deleted **swath-short (v1)** | +| `DataTableRollbackFieldGroupListItem` | new (CounterClockwise/Undo icon) | rolled back **swath-short** to v1 (removed v2) | + +Register all five in [`fieldGroups/index.ts`](packages/client/src/admin/changelogs/fieldGroups/index.ts) for `ChangeLogFieldGroup.DataTable*`. + +**Publish modal context:** extend `titleForChangeLog()` in [`PublishTableOfContentsModal.tsx`](packages/client/src/admin/data/PublishTableOfContentsModal.tsx) to resolve parent layer title when `entityType === "overlay_data_table"` via `meta.table_of_contents_item_id` + existing `itemTitleById` map (shows layer name above the entry in All Changes, matching TOC entries). + +## 4. Summarized Changes: roll up under parent layers + +Update [`publishChangelogSummary.ts`](packages/client/src/admin/data/publishChangelogSummary.ts): + +1. After building `byEntity` from TOC logs, **merge** `overlay_data_table` logs whose `meta.table_of_contents_item_id` matches a draft TOC item +2. Layers with **only** data-table changes since last publish should appear in **Updated** (not dropped) +3. Add badge key `"dataTables"` to `PublishBadgeKey` + `PUBLISH_BADGE_ORDER` (after `"downloads"` or near `"source"`) +4. Map all five `DATA_TABLE_*` field groups → `"dataTables"` in `FIELD_GROUP_TO_BADGE` +5. Include merged logs in `changeCount`, `lastChangeAt`, and `editors` aggregation + +Add badge label in [`PublishSummarizedChangesPanel.tsx`](packages/client/src/admin/data/PublishSummarizedChangesPanel.tsx) (`t("data tables")`). + +Add popover body in [`PublishBadgeDetailContent.tsx`](packages/client/src/admin/data/publishBadgeDetails/PublishBadgeDetailContent.tsx) — list each event with human-readable action + table name/version (reuse `dataTableSummary` helpers). No modal deep-link needed initially. + +## 5. Verification + +- **Tables tab:** upload, rename, replace, delete, rollback → entries appear in Tables History with correct icons/copy +- **Publish → All Changes:** same entries styled properly; parent layer title shown +- **Publish → Summarized Changes:** affected layers show a **data tables** badge; popover lists individual table events; change counts include table operations +- **Settings tab:** unchanged (no data-table entries mixed in) +- Run `npm run lint` in `packages/client` + +## Out of scope (noted) + +- Changelog entries for `enableDataTables` / `dataTableJoinColumn` toggles (not recorded in DB today) +- Fix for replacement upload changelogs missing `editor_id` when completed by background worker (`complete_overlay_data_table_upload` uses `session.user_id` only for replace path in `000429.sql`) — separate bug if you notice missing replace entries From 54d7951daebe2ec272f32ee5b3a42d6f72313e34 Mon Sep 17 00:00:00 2001 From: Chad Burt Date: Mon, 6 Jul 2026 10:00:21 -0700 Subject: [PATCH 04/32] WIP --- packages/api/generated-schema.gql | 1 + packages/api/migrations/current.sql | 149 ++++++++++++++++++ .../tasks/processDataTableUploadOutputs.ts | 8 + packages/api/tests/overlayDataTables.test.ts | 75 +++++++++ .../admin/changelogs/ChangeLogListItem.tsx | 6 + .../changelogs/DataTablesChangeLogList.tsx | 8 + .../changelogs/dataTableChangeLogRefetch.ts | 18 ++- .../DataTableReplacedFieldGroupListItem.tsx | 44 +++++- .../fieldGroups/FieldGroupListItemBase.css | 4 + .../fieldGroups/FieldGroupListItemBase.tsx | 5 + .../fieldGroups/dataTableSummary.ts | 20 +++ .../data/PublishTableOfContentsModal.tsx | 2 +- .../overlayDataTables/DataTablesEditor.tsx | 5 +- .../overlayDataTables/RelatedDataTables.tsx | 66 ++++---- .../uploads/ProjectBackgroundJobContext.tsx | 7 +- .../uploads/ProjectBackgroundJobManager.ts | 4 +- packages/client/src/generated/graphql.ts | 16 +- packages/client/src/generated/queries.ts | 16 +- packages/client/src/index.css | 14 ++ .../src/queries/DraftTableOfContents.graphql | 4 + 20 files changed, 436 insertions(+), 36 deletions(-) diff --git a/packages/api/generated-schema.gql b/packages/api/generated-schema.gql index adfc1de76..1f5f042e2 100644 --- a/packages/api/generated-schema.gql +++ b/packages/api/generated-schema.gql @@ -14699,6 +14699,7 @@ type Query implements Node { nodeId: ID! ): OverlayDataTable overlayDataTableLinkedTocIsDraft(pid: Int, tocItemId: Int): Boolean + overlayDataTableParquetPublicUrl(pRemote: String): String """Reads and enables pagination through a set of `OverlayDataTable`.""" overlayDataTablesConnection( diff --git a/packages/api/migrations/current.sql b/packages/api/migrations/current.sql index 29d9c1b57..37098afd6 100644 --- a/packages/api/migrations/current.sql +++ b/packages/api/migrations/current.sql @@ -232,3 +232,152 @@ create or replace function table_of_contents_items_data_table_change_logs(item t grant execute on function table_of_contents_items_data_table_change_logs(item table_of_contents_items) to seasketch_user; comment on function table_of_contents_items_data_table_change_logs(item table_of_contents_items) is '@simpleCollections only'; + +create or replace function overlay_data_table_parquet_public_url(p_remote text) +returns text +language plpgsql +stable +as $$ +declare + base text; + key text; +begin + if p_remote is null or length(trim(p_remote)) = 0 then + return null; + end if; + + base := nullif(trim(current_setting('seasketch.uploads_base_url', true)), ''); + if base is null then + return null; + end if; + + key := regexp_replace(p_remote, '^r2://[^/]+/', ''); + if key is null or length(trim(key)) = 0 then + return null; + end if; + + return rtrim(base, '/') || '/' || key; +end; +$$; + +grant execute on function overlay_data_table_parquet_public_url(text) to seasketch_user; + +-- Replacement uploads complete in the background worker without a session. +-- Use job.user_id for the changelog editor, same as the initial upload path. +create or replace function complete_overlay_data_table_upload( + job_id uuid, + p_name text, + p_join_column text, + p_overlay_join_column text, + p_row_count integer, + p_parquet_remote text, + p_column_stats_remote text +) returns overlay_data_tables +language plpgsql +security definer +as $$ +declare + upload overlay_data_table_uploads; + job project_background_jobs; + new_row overlay_data_tables; + old_row overlay_data_tables; + editor_id int; + new_version int := 1; +begin + select * into upload + from overlay_data_table_uploads + where project_background_job_id = job_id; + if upload is null then + raise exception 'Upload not found for job'; + end if; + + select * into job from project_background_jobs where id = job_id; + + if upload.replace_overlay_data_table_id is not null then + select * into old_row + from overlay_data_tables + where id = upload.replace_overlay_data_table_id + and deleted_at is null; + if old_row is null then + raise exception 'Replace target no longer active'; + end if; + new_version := old_row.version + 1; + update overlay_data_tables + set deleted_at = now(), updated_at = now() + where id = old_row.id; + end if; + + insert into overlay_data_tables ( + table_of_contents_item_id, + project_id, + name, + join_column, + overlay_join_column, + row_count, + created_by, + version, + parquet_remote, + column_stats_remote + ) values ( + upload.table_of_contents_item_id, + job.project_id, + p_name, + p_join_column, + p_overlay_join_column, + p_row_count, + coalesce(job.user_id, nullif(current_setting('session.user_id', true), '')::integer), + new_version, + p_parquet_remote, + p_column_stats_remote + ) returning * into new_row; + + if upload.replace_overlay_data_table_id is not null then + update overlay_data_tables + set replaced_by_id = new_row.id, updated_at = now() + where id = old_row.id; + + editor_id := coalesce(job.user_id, nullif(current_setting('session.user_id', true), '')::int); + if editor_id is not null then + perform record_changelog( + new_row.project_id, + editor_id, + 'overlay_data_table', + new_row.id, + 'data_table:replaced'::change_log_field_group, + jsonb_build_object( + 'name', old_row.name, + 'version', old_row.version, + 'id', old_row.id, + 'parquet_url', overlay_data_table_parquet_public_url(old_row.parquet_remote) + ), + jsonb_build_object('name', new_row.name, 'version', new_row.version, 'id', new_row.id), + null, null, + jsonb_build_object('table_of_contents_item_id', new_row.table_of_contents_item_id) + ); + end if; + else + editor_id := coalesce(job.user_id, nullif(current_setting('session.user_id', true), '')::int); + if editor_id is not null then + perform record_changelog( + new_row.project_id, + editor_id, + 'overlay_data_table', + new_row.id, + 'data_table:created'::change_log_field_group, + '{}'::jsonb, + jsonb_build_object('name', new_row.name, 'version', new_row.version), + null, null, + jsonb_build_object('table_of_contents_item_id', new_row.table_of_contents_item_id) + ); + end if; + end if; + + update project_background_jobs + set state = 'complete', progress = 1, progress_message = 'complete', error_message = null + where id = job_id; + + return new_row; +end; +$$; + +revoke all on function complete_overlay_data_table_upload(uuid, text, text, text, integer, text, text) from public; diff --git a/packages/api/tasks/processDataTableUploadOutputs.ts b/packages/api/tasks/processDataTableUploadOutputs.ts index a935ba4ce..e0dd1880a 100644 --- a/packages/api/tasks/processDataTableUploadOutputs.ts +++ b/packages/api/tasks/processDataTableUploadOutputs.ts @@ -26,6 +26,14 @@ export default async function processDataTableUploadOutputs( ]); return; } + const uploadsBase = + process.env.UPLOADS_BASE_URL || process.env.TILES_BASE_URL || ""; + if (uploadsBase) { + await client.query( + `select set_config('seasketch.uploads_base_url', $1, true)`, + [uploadsBase], + ); + } await client.query( `select complete_overlay_data_table_upload($1, $2, $3, $4, $5, $6, $7)`, [ diff --git a/packages/api/tests/overlayDataTables.test.ts b/packages/api/tests/overlayDataTables.test.ts index bb5fe7248..75edcb075 100644 --- a/packages/api/tests/overlayDataTables.test.ts +++ b/packages/api/tests/overlayDataTables.test.ts @@ -276,4 +276,79 @@ describe("overlay_data_tables", () => { }, ); }); + + test("replace records changelog when completed without session", async () => { + await projectTransaction( + pool, + "public", + async (conn, projectId, adminId) => { + await createSession(conn, adminId, true, false, projectId); + const { tocId } = await createDraftLayer(conn, projectId, adminId); + + let jobId: string; + let oldId: number; + await asPostgres( + conn, + async () => { + jobId = (await conn.oneFirst(sql` + insert into project_background_jobs (project_id, title, type, user_id) + values (${projectId}, 'test', 'data_table_upload', ${adminId}) returning id`)) as string; + + oldId = Number(await conn.oneFirst(sql` + insert into overlay_data_tables ( + table_of_contents_item_id, project_id, name, join_column, overlay_join_column, + row_count, created_by, version, parquet_remote, column_stats_remote + ) values ( + ${tocId}, ${projectId}, 'fish', 'site_id', 'id', 10, ${adminId}, 1, + 'r2://bucket/old.parquet', 'r2://bucket/old.json' + ) returning id`)); + + await conn.any(sql` + insert into overlay_data_table_uploads ( + project_background_job_id, table_of_contents_item_id, filename, content_type, + overlay_geostats, replace_overlay_data_table_id + ) values ( + ${jobId}, ${tocId}, 'fish.csv', 'text/csv', + '{"layers":[{"attributes":[]}]}'::jsonb, + ${oldId} + )`); + await clearSession(conn); + await conn.any(sql` + select set_config('seasketch.uploads_base_url', 'https://uploads.example.org', true) + `); + await conn.any(sql` + select complete_overlay_data_table_upload( + ${jobId}, 'fish', 'site_id', 'id', 20, + 'r2://bucket/new.parquet', 'r2://bucket/new.json' + )`); + }, + { userId: adminId, projectId }, + ); + + const changelog = await conn.one(sql` + select field_group, editor_id, from_summary, to_summary + from change_logs + where entity_type = 'overlay_data_table' + and field_group = 'data_table:replaced' + and (meta->>'table_of_contents_item_id')::int = ${tocId} + order by last_at desc + limit 1`); + expect(changelog.field_group).toBe("data_table:replaced"); + expect(changelog.editor_id).toBe(adminId); + expect(changelog.from_summary).toEqual( + expect.objectContaining({ name: "fish", version: 1 }), + ); + expect(changelog.to_summary).toEqual( + expect.objectContaining({ name: "fish", version: 2 }), + ); + expect(changelog.from_summary).toEqual( + expect.objectContaining({ + name: "fish", + version: 1, + parquet_url: "https://uploads.example.org/old.parquet", + }), + ); + }, + ); + }); }); diff --git a/packages/client/src/admin/changelogs/ChangeLogListItem.tsx b/packages/client/src/admin/changelogs/ChangeLogListItem.tsx index eaa3e1849..b8bbf2dc1 100644 --- a/packages/client/src/admin/changelogs/ChangeLogListItem.tsx +++ b/packages/client/src/admin/changelogs/ChangeLogListItem.tsx @@ -10,11 +10,16 @@ export default function ChangeLogListItem({ last, itemTitle, missingProfileLabel, + dataTableActions, }: { changeLog: ChangeLogDetailsFragment; last?: boolean; itemTitle?: ReactNode; missingProfileLabel?: string; + dataTableActions?: { + tableOfContentsItemId: number; + activeTables: { id: number; version: number }[]; + }; }) { const FieldGroupListItem = FIELD_GROUP_LIST_ITEM_COMPONENTS[changeLog.fieldGroup] || @@ -25,6 +30,7 @@ export default function ChangeLogListItem({ last={last} itemTitle={itemTitle} missingProfileLabel={missingProfileLabel} + dataTableActions={dataTableActions} /> ); } diff --git a/packages/client/src/admin/changelogs/DataTablesChangeLogList.tsx b/packages/client/src/admin/changelogs/DataTablesChangeLogList.tsx index 571bb6388..2b77e8ae9 100644 --- a/packages/client/src/admin/changelogs/DataTablesChangeLogList.tsx +++ b/packages/client/src/admin/changelogs/DataTablesChangeLogList.tsx @@ -72,6 +72,10 @@ export default function DataTablesChangeLogList({ lastTocRef.current; const changeLogs = toc?.dataTableChangeLogs ? [...toc.dataTableChangeLogs] : []; + const activeTables = (toc?.overlayDataTables || []).map((table) => ({ + id: table.id, + version: table.version, + })); const canShowMore = !showAllHistory && @@ -102,6 +106,10 @@ export default function DataTablesChangeLogList({ key={changeLog.id} changeLog={changeLog} last={index === changeLogs.length - 1} + dataTableActions={{ + tableOfContentsItemId, + activeTables, + }} /> ))} diff --git a/packages/client/src/admin/changelogs/dataTableChangeLogRefetch.ts b/packages/client/src/admin/changelogs/dataTableChangeLogRefetch.ts index 2aefea5c0..706d65a03 100644 --- a/packages/client/src/admin/changelogs/dataTableChangeLogRefetch.ts +++ b/packages/client/src/admin/changelogs/dataTableChangeLogRefetch.ts @@ -1,5 +1,8 @@ import type { RefetchQueriesInclude } from "@apollo/client"; -import { DataTableChangeLogDocument } from "../../generated/graphql"; +import { + DataTableChangeLogDocument, + GetLayerItemDocument, +} from "../../generated/graphql"; import { LAYER_SETTINGS_CHANGE_LOG_EXPANDED_FIRST, LAYER_SETTINGS_CHANGE_LOG_PAGE_SIZE, @@ -31,3 +34,16 @@ export function dataTableChangeLogRefetchQueries( }, ] as unknown as RefetchQueriesInclude; } + +/** Refetch data table history and the layer item table list after a mutation. */ +export function dataTableMutationRefetchQueries( + tableOfContentsItemId: number, +): RefetchQueriesInclude { + return [ + ...dataTableChangeLogRefetchQueries(tableOfContentsItemId), + { + query: GetLayerItemDocument, + variables: { id: tableOfContentsItemId }, + }, + ] as unknown as RefetchQueriesInclude; +} diff --git a/packages/client/src/admin/changelogs/fieldGroups/DataTableReplacedFieldGroupListItem.tsx b/packages/client/src/admin/changelogs/fieldGroups/DataTableReplacedFieldGroupListItem.tsx index 9bb17e47a..66259ee1d 100644 --- a/packages/client/src/admin/changelogs/fieldGroups/DataTableReplacedFieldGroupListItem.tsx +++ b/packages/client/src/admin/changelogs/fieldGroups/DataTableReplacedFieldGroupListItem.tsx @@ -1,11 +1,15 @@ import { RefreshIcon } from "@heroicons/react/outline"; import { Trans, useTranslation } from "react-i18next"; +import { useRollbackOverlayDataTableVersionMutation } from "../../../generated/graphql"; import BaseFieldGroupListItem, { ChangeValue, FieldGroupListItemProps, summary, } from "./FieldGroupListItemBase"; +import { dataTableMutationRefetchQueries } from "../dataTableChangeLogRefetch"; +import DataTableReplacementVersionMenu from "./DataTableReplacementVersionMenu"; import { + parquetUrlFromSummary, tableLabel, tableNameFromSummary, tableVersionFromSummary, @@ -23,6 +27,42 @@ export default function DataTableReplacedFieldGroupListItem( t("Untitled table"); const fromVersion = tableVersionFromSummary(from); const toVersion = tableVersionFromSummary(to); + const downloadUrl = parquetUrlFromSummary(from); + const tableId = props.changeLog.entityId; + const actions = props.dataTableActions; + const activeTable = actions?.activeTables.find((table) => table.id === tableId); + const canRollback = + actions != null && + activeTable != null && + toVersion != null && + activeTable.version === toVersion && + toVersion > 1; + const refetchQueries = actions + ? dataTableMutationRefetchQueries(actions.tableOfContentsItemId) + : undefined; + const [rollbackTable, { loading: rollbackLoading }] = + useRollbackOverlayDataTableVersionMutation({ + refetchQueries, + }); + const versionLabel = + fromVersion != null && toVersion != null + ? t("v{{fromVersion}} → v{{toVersion}}", { fromVersion, toVersion }) + : null; + const hasVersionMenu = + versionLabel != null && fromVersion != null && (downloadUrl || canRollback); + const versionMenu = hasVersionMenu ? ( + { + void rollbackTable({ variables: { id: tableId } }); + }} + /> + ) : null; return ( replaced data table{" "} {name}{" "} - {t("v{{fromVersion}} → v{{toVersion}}", { fromVersion, toVersion })} + {versionMenu ?? ( + {versionLabel} + )} ) : ( diff --git a/packages/client/src/admin/changelogs/fieldGroups/FieldGroupListItemBase.css b/packages/client/src/admin/changelogs/fieldGroups/FieldGroupListItemBase.css index 7e329b6c6..70f0c5bd0 100644 --- a/packages/client/src/admin/changelogs/fieldGroups/FieldGroupListItemBase.css +++ b/packages/client/src/admin/changelogs/fieldGroups/FieldGroupListItemBase.css @@ -25,3 +25,7 @@ 0 20px 25px -5px rgba(17, 24, 39, 0.1), 0 8px 10px -6px rgba(17, 24, 39, 0.1); } + +.change-log-data-table-version-menu { + pointer-events: auto; +} diff --git a/packages/client/src/admin/changelogs/fieldGroups/FieldGroupListItemBase.tsx b/packages/client/src/admin/changelogs/fieldGroups/FieldGroupListItemBase.tsx index 4896aad74..c453508b0 100644 --- a/packages/client/src/admin/changelogs/fieldGroups/FieldGroupListItemBase.tsx +++ b/packages/client/src/admin/changelogs/fieldGroups/FieldGroupListItemBase.tsx @@ -16,6 +16,11 @@ export interface FieldGroupListItemProps { itemTitle?: ReactNode; /** When the change log has no editor profile, show this instead of "Unknown user". */ missingProfileLabel?: string; + /** When set, replacement entries may offer rollback in a details tooltip. */ + dataTableActions?: { + tableOfContentsItemId: number; + activeTables: { id: number; version: number }[]; + }; } export type Summary = Record; diff --git a/packages/client/src/admin/changelogs/fieldGroups/dataTableSummary.ts b/packages/client/src/admin/changelogs/fieldGroups/dataTableSummary.ts index c7083faaf..0e48d3626 100644 --- a/packages/client/src/admin/changelogs/fieldGroups/dataTableSummary.ts +++ b/packages/client/src/admin/changelogs/fieldGroups/dataTableSummary.ts @@ -19,6 +19,26 @@ export function tableNameFromSummary(s: Summary): string { return valueText(s.name); } +export function tableIdFromSummary(s: Summary): number | undefined { + const value = s.id; + if (typeof value === "number" && Number.isFinite(value)) { + return value; + } + if (typeof value === "string") { + const parsed = parseInt(value, 10); + return Number.isFinite(parsed) ? parsed : undefined; + } + return undefined; +} + +export function parquetUrlFromSummary(s: Summary): string | undefined { + const url = s.parquet_url; + if (typeof url === "string" && url.length > 0) { + return url; + } + return undefined; +} + export function tableVersionFromSummary(s: Summary): number | undefined { const version = s.version; if (typeof version === "number" && Number.isFinite(version)) { diff --git a/packages/client/src/admin/data/PublishTableOfContentsModal.tsx b/packages/client/src/admin/data/PublishTableOfContentsModal.tsx index 8c6af2d1f..8326c2805 100644 --- a/packages/client/src/admin/data/PublishTableOfContentsModal.tsx +++ b/packages/client/src/admin/data/PublishTableOfContentsModal.tsx @@ -19,7 +19,7 @@ import { summary, valueText, } from "../changelogs/fieldGroups/FieldGroupListItemBase"; -import { tocItemIdFromMeta } from "../../changelogs/fieldGroups/dataTableSummary"; +import { tocItemIdFromMeta } from "../changelogs/fieldGroups/dataTableSummary"; import useProjectId from "../../useProjectId"; import { CHANGE_LOG_INTRODUCTION_DATE } from "../changelogs/constants"; import PublishSummarizedChangesPanel from "./PublishSummarizedChangesPanel"; diff --git a/packages/client/src/admin/data/overlayDataTables/DataTablesEditor.tsx b/packages/client/src/admin/data/overlayDataTables/DataTablesEditor.tsx index 07650bf58..721b77b11 100644 --- a/packages/client/src/admin/data/overlayDataTables/DataTablesEditor.tsx +++ b/packages/client/src/admin/data/overlayDataTables/DataTablesEditor.tsx @@ -1,5 +1,6 @@ import { useMemo } from "react"; import { Trans, useTranslation } from "react-i18next"; +import { GeostatsLayer } from "@seasketch/geostats-types"; import { FullAdminOverlayFragment } from "../../../generated/graphql"; import EnableDataTables from "../EnableDataTables"; import RelatedDataTables from "./RelatedDataTables"; @@ -14,8 +15,8 @@ export default function DataTablesEditor({ const layer = item.dataLayer; const source = layer?.dataSource; - const geostatsLayer = useMemo(() => { - const layers = source?.geostats?.layers || []; + const geostatsLayer: GeostatsLayer | undefined = useMemo(() => { + const layers = (source?.geostats?.layers || []) as GeostatsLayer[]; if (!layer) { return undefined; } diff --git a/packages/client/src/admin/data/overlayDataTables/RelatedDataTables.tsx b/packages/client/src/admin/data/overlayDataTables/RelatedDataTables.tsx index 1e2c204af..d9d3eb154 100644 --- a/packages/client/src/admin/data/overlayDataTables/RelatedDataTables.tsx +++ b/packages/client/src/admin/data/overlayDataTables/RelatedDataTables.tsx @@ -1,4 +1,4 @@ -import { useCallback, useContext, useEffect, useMemo, useState } from "react"; +import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react"; import { useApolloClient } from "@apollo/client"; import { useTranslation } from "react-i18next"; import { @@ -8,7 +8,6 @@ import { ProjectBackgroundJobType, useGetLayerItemQuery, useRenameOverlayDataTableMutation, - useRollbackOverlayDataTableVersionMutation, useSoftDeleteOverlayDataTableMutation, } from "../../../generated/graphql"; import { GeostatsLayer } from "@seasketch/geostats-types"; @@ -49,7 +48,6 @@ function DataTableRow({ onRename, onDelete, onReplace, - onRollback, }: { table: OverlayDataTableDetailsFragment; job?: DataTableJob; @@ -57,7 +55,6 @@ function DataTableRow({ onRename: (id: number, name: string) => void; onDelete: (id: number) => void; onReplace: (id: number) => void; - onRollback: (id: number) => void; }) { const { t } = useTranslation("admin:data"); const [editing, setEditing] = useState(false); @@ -121,11 +118,8 @@ function DataTableRow({ ) : ( <>

    - {t("{{count}} rows · {{joinColumn}} → {{overlayJoinColumn}}", { - count: table.rowCount.toLocaleString(), - joinColumn: table.joinColumn, - overlayJoinColumn: table.overlayJoinColumn, - })} + {/* eslint-disable-next-line i18next/no-literal-string */} + {`${table.rowCount.toLocaleString()} rows · ${table.joinColumn} → ${table.overlayJoinColumn}`}

    {table.parquetUrl ? ( ) : null} + {table.columnStatsUrl ? ( + + {t("Metadata")} + + ) : null} )} - {!job && table.version > 1 ? ( - - ) : null} ); } @@ -198,7 +194,7 @@ export default function RelatedDataTables({ item }: RelatedDataTablesProps) { const layer = layerItem.dataLayer; const source = layer?.dataSource; const geostatsLayer: GeostatsLayer | undefined = useMemo(() => { - const layers = source?.geostats?.layers || []; + const layers = (source?.geostats?.layers || []) as GeostatsLayer[]; if (!layer) { return undefined; } @@ -230,9 +226,6 @@ export default function RelatedDataTables({ item }: RelatedDataTablesProps) { const [deleteTable] = useSoftDeleteOverlayDataTableMutation({ refetchQueries: changeLogRefetchQueries, }); - const [rollbackTable] = useRollbackOverlayDataTableVersionMutation({ - refetchQueries: changeLogRefetchQueries, - }); const dataTableJobs = useMemo( () => @@ -273,6 +266,30 @@ export default function RelatedDataTables({ item }: RelatedDataTablesProps) { (job) => job.state !== ProjectBackgroundJobState.Failed, ); + const trackedJobStatesRef = useRef>( + new Map(), + ); + + useEffect(() => { + let shouldRefetch = false; + for (const job of dataTableJobs) { + const previousState = trackedJobStatesRef.current.get(job.id); + if ( + previousState && + previousState !== ProjectBackgroundJobState.Complete && + previousState !== ProjectBackgroundJobState.Failed && + (job.state === ProjectBackgroundJobState.Complete || + job.state === ProjectBackgroundJobState.Failed) + ) { + shouldRefetch = true; + } + trackedJobStatesRef.current.set(job.id, job.state); + } + if (shouldRefetch) { + void refetchTablesAndHistory(); + } + }, [dataTableJobs, refetchTablesAndHistory]); + useEffect(() => { if (!hasActiveUploads) { return; @@ -351,11 +368,6 @@ export default function RelatedDataTables({ item }: RelatedDataTablesProps) { setReplaceId(id); setUploadOpen(true); }} - onRollback={(id) => - rollbackTable({ variables: { id } }).then(() => - refetchTablesAndHistory(), - ) - } /> ))} diff --git a/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx b/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx index d900b120c..c7593562a 100644 --- a/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx +++ b/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx @@ -35,6 +35,7 @@ import ProjectBackgroundJobManager, { DataUploadErrorEvent, DataUploadProcessingCompleteEvent, } from "./ProjectBackgroundJobManager"; +import { dataTableChangeLogRefetchQueries } from "../changelogs/dataTableChangeLogRefetch"; import sleep from "../../sleep"; import ConvertFeatureLayerToHostedModal from "../data/arcgis/ConvertFeatureLayerToHostedModal"; import AiDataAnalystUploadPromptModal from "./AiDataAnalystUploadPromptModal"; @@ -323,7 +324,11 @@ export default function DataUploadDropzone({ "data-table-upload-complete", (event: { jobId: string; tableOfContentsItemId: number }) => { client.refetchQueries({ - include: [GetLayerItemDocument, DraftTableOfContentsDocument], + include: [ + GetLayerItemDocument, + DraftTableOfContentsDocument, + ...dataTableChangeLogRefetchQueries(event.tableOfContentsItemId), + ], }); } ); diff --git a/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts b/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts index 446511dbb..47e5b3272 100644 --- a/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts +++ b/packages/client/src/admin/uploads/ProjectBackgroundJobManager.ts @@ -464,7 +464,9 @@ export default class ProjectBackgroundJobManager extends EventEmitter<{ return { ...data, projectBackgroundJobs: [ - ...existing.filter((entry) => entry.id !== job.id), + ...existing.filter( + (entry: { id: number }) => entry.id !== job.id + ), job, ], }; diff --git a/packages/client/src/generated/graphql.ts b/packages/client/src/generated/graphql.ts index 221a8ca21..674f0ab52 100644 --- a/packages/client/src/generated/graphql.ts +++ b/packages/client/src/generated/graphql.ts @@ -12746,6 +12746,7 @@ export type Query = Node & { /** Reads a single `OverlayDataTable` using its globally unique `ID`. */ overlayDataTableByNodeId?: Maybe; overlayDataTableLinkedTocIsDraft?: Maybe; + overlayDataTableParquetPublicUrl?: Maybe; /** Reads and enables pagination through a set of `OverlayDataTable`. */ overlayDataTablesConnection?: Maybe; overlayDataTableUpload?: Maybe; @@ -13670,6 +13671,12 @@ export type QueryOverlayDataTableLinkedTocIsDraftArgs = { }; +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableParquetPublicUrlArgs = { + pRemote?: Maybe; +}; + + /** The root query type which gives access points into the data universe. */ export type QueryOverlayDataTablesConnectionArgs = { after?: Maybe; @@ -21672,7 +21679,10 @@ export type DataTableChangeLogQuery = ( & { tableOfContentsItem?: Maybe<( { __typename?: 'TableOfContentsItem' } & Pick - & { dataTableChangeLogs?: Maybe + )>>, dataTableChangeLogs?: Maybe> } @@ -33388,6 +33398,10 @@ export const DataTableChangeLogDocument = gql` query DataTableChangeLog($id: Int!, $first: Int!) { tableOfContentsItem(id: $id) { id + overlayDataTables { + id + version + } dataTableChangeLogs(first: $first) { ...ChangeLogDetails } diff --git a/packages/client/src/generated/queries.ts b/packages/client/src/generated/queries.ts index bb0ab4248..a670de334 100644 --- a/packages/client/src/generated/queries.ts +++ b/packages/client/src/generated/queries.ts @@ -12744,6 +12744,7 @@ export type Query = Node & { /** Reads a single `OverlayDataTable` using its globally unique `ID`. */ overlayDataTableByNodeId?: Maybe; overlayDataTableLinkedTocIsDraft?: Maybe; + overlayDataTableParquetPublicUrl?: Maybe; /** Reads and enables pagination through a set of `OverlayDataTable`. */ overlayDataTablesConnection?: Maybe; overlayDataTableUpload?: Maybe; @@ -13668,6 +13669,12 @@ export type QueryOverlayDataTableLinkedTocIsDraftArgs = { }; +/** The root query type which gives access points into the data universe. */ +export type QueryOverlayDataTableParquetPublicUrlArgs = { + pRemote?: Maybe; +}; + + /** The root query type which gives access points into the data universe. */ export type QueryOverlayDataTablesConnectionArgs = { after?: Maybe; @@ -21670,7 +21677,10 @@ export type DataTableChangeLogQuery = ( & { tableOfContentsItem?: Maybe<( { __typename?: 'TableOfContentsItem' } & Pick - & { dataTableChangeLogs?: Maybe + )>>, dataTableChangeLogs?: Maybe> } @@ -31073,6 +31083,10 @@ export const DataTableChangeLogDocument = /*#__PURE__*/ gql` query DataTableChangeLog($id: Int!, $first: Int!) { tableOfContentsItem(id: $id) { id + overlayDataTables { + id + version + } dataTableChangeLogs(first: $first) { ...ChangeLogDetails } diff --git a/packages/client/src/index.css b/packages/client/src/index.css index 110de7b55..4c19d1ac3 100644 --- a/packages/client/src/index.css +++ b/packages/client/src/index.css @@ -6663,6 +6663,10 @@ select{ z-index:auto } +.z-\[999999\]{ + z-index:999999 +} + .order-1{ order:1 } @@ -6964,6 +6968,11 @@ select{ margin-bottom:auto } +.my-0\.5{ + margin-top:0.125rem; + margin-bottom:0.125rem +} + .-mb-0{ margin-bottom:-0px } @@ -15700,6 +15709,11 @@ input[type="checkbox"][indeterminate="true"]:checked { background-color:rgb(55 65 81 / 0.8) } +.hover\:bg-indigo-50:hover{ + --tw-bg-opacity:1; + background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1)) +} + .hover\:bg-opacity-10:hover{ --tw-bg-opacity:0.1 } diff --git a/packages/client/src/queries/DraftTableOfContents.graphql b/packages/client/src/queries/DraftTableOfContents.graphql index 588537ead..22d629e3e 100644 --- a/packages/client/src/queries/DraftTableOfContents.graphql +++ b/packages/client/src/queries/DraftTableOfContents.graphql @@ -463,6 +463,10 @@ query LayerSettingsChangeLog($id: Int!, $first: Int!) { query DataTableChangeLog($id: Int!, $first: Int!) { tableOfContentsItem(id: $id) { id + overlayDataTables { + id + version + } dataTableChangeLogs(first: $first) { ...ChangeLogDetails } From 704daaaec84a9bff20462ac3b531b680e21f35f7 Mon Sep 17 00:00:00 2001 From: Chad Burt Date: Mon, 6 Jul 2026 14:17:40 -0700 Subject: [PATCH 05/32] Added query service --- lerna.json | 1 + .../DataTableReplacementVersionMenu.tsx | 138 + .../uploads/ProjectBackgroundJobContext.tsx | 13 +- packages/data-tables-worker/.dev.vars | 1 + ...42f34dd046319deebea43729d00000019f38b6a5de | Bin 0 -> 147394 bytes ...a46d1662c07b9c34bc301f4b4d0000019f38b6a561 | Bin 0 -> 5320 bytes ...88302053dccba5fc3f886838f60000019f38b6a614 | Bin 0 -> 21938 bytes ...991a43e3c6921d79557c54a75b0000019f38b6a5d1 | Bin 0 -> 37673 bytes ...894c9cf64a238dd37dec5094980000019f38b6a5c3 | Bin 0 -> 126917 bytes ...0f7af144cc810fc9e0a04531750000019f38b6a5b7 | Bin 0 -> 4562 bytes ...d1d7acffecfc5f40a8f94a262e0000019f38b6a5e5 | Bin 0 -> 239 bytes ...769285748a92730810ad0f8b0a0000019f38b6d73f | Bin 0 -> 80836 bytes ...c73dbb6da779a49cde1537d2990000019f38b6a51a | Bin 0 -> 524288 bytes ...8173daaa6c521629e631dca2d60000019f38b6a54d | Bin 0 -> 221 bytes ...8723078c52a465b89f8f4884d90000019f38b6d70d | Bin 0 -> 76971 bytes ...1baf92d034efbcaaf4336379640ed744ded.sqlite | Bin 0 -> 24576 bytes ...92d034efbcaaf4336379640ed744ded.sqlite-shm | Bin 0 -> 32768 bytes ...92d034efbcaaf4336379640ed744ded.sqlite-wal | 0 .../miniflare-CacheObject/metadata.sqlite | Bin 0 -> 4096 bytes .../miniflare-CacheObject/metadata.sqlite-shm | Bin 0 -> 32768 bytes .../miniflare-CacheObject/metadata.sqlite-wal | Bin 0 -> 8272 bytes .../miniflare-R2BucketObject/metadata.sqlite | Bin 0 -> 4096 bytes .../metadata.sqlite-shm | Bin 0 -> 32768 bytes .../metadata.sqlite-wal | Bin 0 -> 8272 bytes .../middleware-insertion-facade.js | 11 + .../bundle-sWKaAx/middleware-loader.entry.ts | 134 + .../.wrangler/tmp/dev-xNCQ0m/index.js | 6381 +++++++ .../.wrangler/tmp/dev-xNCQ0m/index.js.map | 8 + packages/data-tables-worker/README.md | 129 + packages/data-tables-worker/package-lock.json | 2597 +++ packages/data-tables-worker/package.json | 22 + .../src/engine/asyncBuffer.ts | 164 + .../src/engine/blockReader.ts | 139 + .../data-tables-worker/src/engine/execute.ts | 372 + .../data-tables-worker/src/engine/plan.ts | 404 + packages/data-tables-worker/src/index.ts | 298 + packages/data-tables-worker/src/params.ts | 263 + packages/data-tables-worker/src/ui/html.ts | 488 + .../test/blockReader.test.ts | 107 + .../test/calculations.test.ts | 486 + .../data-tables-worker/test/engine.test.ts | 255 + .../test/fixtures/data.parquet | Bin 0 -> 1086796 bytes .../data-tables-worker/test/params.test.ts | 129 + packages/data-tables-worker/tsconfig.json | 13 + packages/data-tables-worker/vitest.config.mts | 11 + .../worker-configuration.d.ts | 14656 ++++++++++++++++ packages/data-tables-worker/wrangler.jsonc | 34 + 47 files changed, 27247 insertions(+), 7 deletions(-) create mode 100644 packages/client/src/admin/changelogs/fieldGroups/DataTableReplacementVersionMenu.tsx create mode 100644 packages/data-tables-worker/.dev.vars create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/08f6adde00a6bee62f1bc8be1366e64cd8165d42f34dd046319deebea43729d00000019f38b6a5de create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/3a00c07f61487234a6ac16e39ac8e165e93393a46d1662c07b9c34bc301f4b4d0000019f38b6a561 create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/4008aabbcb9b28305a40ab474bad9da0976fb788302053dccba5fc3f886838f60000019f38b6a614 create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/7c50bf6ba95d4d24d6bc53f7deb65a0c133aab991a43e3c6921d79557c54a75b0000019f38b6a5d1 create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/a959f2a7ca613f283c8d520e5d44c614a2bde7894c9cf64a238dd37dec5094980000019f38b6a5c3 create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/b5f89f6ac641704cb0eb92a11ee7754d30367e0f7af144cc810fc9e0a04531750000019f38b6a5b7 create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/c76b7bb4ee3452ef14040a1a7fc87e3dce69fdd1d7acffecfc5f40a8f94a262e0000019f38b6a5e5 create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/d5a12bd9cac93a5da9f608e84a631a949a1e7f769285748a92730810ad0f8b0a0000019f38b6d73f create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e3305727e1ed951890bdbc6332a55a77e410b3c73dbb6da779a49cde1537d2990000019f38b6a51a create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e9fcaadb80eaea680234943181c0156c3dd8ff8173daaa6c521629e631dca2d60000019f38b6a54d create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/fb71a08753cd3f90789711e4894b8a12dd38878723078c52a465b89f8f4884d90000019f38b6d70d create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/9f458c07675338a7426a7b81ac4fb1baf92d034efbcaaf4336379640ed744ded.sqlite create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/9f458c07675338a7426a7b81ac4fb1baf92d034efbcaaf4336379640ed744ded.sqlite-shm create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/9f458c07675338a7426a7b81ac4fb1baf92d034efbcaaf4336379640ed744ded.sqlite-wal create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm create mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal create mode 100644 packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite create mode 100644 packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-shm create mode 100644 packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-wal create mode 100644 packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js create mode 100644 packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-loader.entry.ts create mode 100644 packages/data-tables-worker/.wrangler/tmp/dev-xNCQ0m/index.js create mode 100644 packages/data-tables-worker/.wrangler/tmp/dev-xNCQ0m/index.js.map create mode 100644 packages/data-tables-worker/README.md create mode 100644 packages/data-tables-worker/package-lock.json create mode 100644 packages/data-tables-worker/package.json create mode 100644 packages/data-tables-worker/src/engine/asyncBuffer.ts create mode 100644 packages/data-tables-worker/src/engine/blockReader.ts create mode 100644 packages/data-tables-worker/src/engine/execute.ts create mode 100644 packages/data-tables-worker/src/engine/plan.ts create mode 100644 packages/data-tables-worker/src/index.ts create mode 100644 packages/data-tables-worker/src/params.ts create mode 100644 packages/data-tables-worker/src/ui/html.ts create mode 100644 packages/data-tables-worker/test/blockReader.test.ts create mode 100644 packages/data-tables-worker/test/calculations.test.ts create mode 100644 packages/data-tables-worker/test/engine.test.ts create mode 100644 packages/data-tables-worker/test/fixtures/data.parquet create mode 100644 packages/data-tables-worker/test/params.test.ts create mode 100644 packages/data-tables-worker/tsconfig.json create mode 100644 packages/data-tables-worker/vitest.config.mts create mode 100644 packages/data-tables-worker/worker-configuration.d.ts create mode 100644 packages/data-tables-worker/wrangler.jsonc diff --git a/lerna.json b/lerna.json index 174feea13..7b64de7f0 100644 --- a/lerna.json +++ b/lerna.json @@ -17,6 +17,7 @@ "packages/fgb-source", "packages/overlay-engine", "packages/sketch-preprocessing-worker", + "packages/data-tables-worker", "packages/overlay-worker", "packages/fragment-worker", "packages/ai-data-analyst", diff --git a/packages/client/src/admin/changelogs/fieldGroups/DataTableReplacementVersionMenu.tsx b/packages/client/src/admin/changelogs/fieldGroups/DataTableReplacementVersionMenu.tsx new file mode 100644 index 000000000..2577bc8f1 --- /dev/null +++ b/packages/client/src/admin/changelogs/fieldGroups/DataTableReplacementVersionMenu.tsx @@ -0,0 +1,138 @@ +import clsx from "clsx"; +import { DownloadIcon, ReplyIcon } from "@heroicons/react/outline"; +import * as Popover from "@radix-ui/react-popover"; +import { useCallback, useRef, useState } from "react"; +import { useTranslation } from "react-i18next"; + +const CLOSE_DELAY_MS = 120; + +function downloadWithFilename(url: string, filename: string) { + const anchor = document.createElement("a"); + anchor.href = url; + anchor.download = filename; + anchor.rel = "noopener noreferrer"; + anchor.target = "_blank"; + document.body.appendChild(anchor); + anchor.click(); + document.body.removeChild(anchor); +} + +export default function DataTableReplacementVersionMenu({ + versionLabel, + fromVersion, + tableName, + downloadUrl, + canRollback, + onRollback, + rollbackLoading, +}: { + versionLabel: string; + fromVersion: number; + tableName: string; + downloadUrl?: string; + canRollback: boolean; + onRollback: () => void; + rollbackLoading: boolean; +}) { + const { t } = useTranslation("admin:data"); + const [open, setOpen] = useState(false); + const closeTimerRef = useRef(); + + const clearCloseTimer = useCallback(() => { + if (closeTimerRef.current != null) { + window.clearTimeout(closeTimerRef.current); + closeTimerRef.current = undefined; + } + }, []); + + const scheduleClose = useCallback(() => { + clearCloseTimer(); + closeTimerRef.current = window.setTimeout(() => { + setOpen(false); + }, CLOSE_DELAY_MS); + }, [clearCloseTimer]); + + const downloadFilename = + // eslint-disable-next-line i18next/no-literal-string -- download filename + `${tableName}_v${fromVersion}.parquet`; + + const triggerClassName = clsx( + "inline-flex max-w-full cursor-pointer items-center gap-1 align-baseline rounded px-1 py-0.5 text-sm font-medium leading-5 text-blue-600 underline decoration-blue-400 decoration-dotted underline-offset-4 transition-colors hover:bg-blue-50 hover:text-blue-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500", + open && "bg-blue-50 text-blue-700", + ); + + return ( + + + + + + event.preventDefault()} + onMouseEnter={clearCloseTimer} + onMouseLeave={scheduleClose} + > +
    + {t("Version {{version}}", { version: fromVersion })} +
    +
    + {downloadUrl ? ( + + ) : null} + {canRollback ? ( + + ) : null} + + + + + ); +} diff --git a/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx b/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx index c7593562a..7488d4b7e 100644 --- a/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx +++ b/packages/client/src/admin/uploads/ProjectBackgroundJobContext.tsx @@ -418,12 +418,10 @@ export default function DataUploadDropzone({ filesToUpload: File[], processingOptionsByFile?: Map ) => { - const droppedFileInfos: DroppedFileInfo[] = filesToUpload.map( - (file) => ({ - name: file.name, - format: detectSupportedFormat(file.name), - }) - ); + const droppedFileInfos: DroppedFileInfo[] = filesToUpload.map((file) => ({ + name: file.name, + format: detectSupportedFormat(file.name), + })); setState((prev) => ({ ...prev, @@ -714,7 +712,8 @@ export default function DataUploadDropzone({ browseForFiles: (multiple?: boolean) => { const fileInput = document.createElement("input"); fileInput.type = "file"; - fileInput.accept = ".zip,.json,.geojson,.fgb,.tif,.tiff,.csv,.tsv,.txt"; + fileInput.accept = + ".zip,.json,.geojson,.fgb,.tif,.tiff,.csv,.tsv,.txt"; fileInput.multiple = multiple || false; fileInput.onchange = async (e) => { const files = (e.target as HTMLInputElement).files; diff --git a/packages/data-tables-worker/.dev.vars b/packages/data-tables-worker/.dev.vars new file mode 100644 index 000000000..66de9bf54 --- /dev/null +++ b/packages/data-tables-worker/.dev.vars @@ -0,0 +1 @@ +DEV=true diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/08f6adde00a6bee62f1bc8be1366e64cd8165d42f34dd046319deebea43729d00000019f38b6a5de b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/08f6adde00a6bee62f1bc8be1366e64cd8165d42f34dd046319deebea43729d00000019f38b6a5de new file mode 100644 index 0000000000000000000000000000000000000000..3e6501a108326da6da4a854c9d26c43dc8fc2463 GIT binary patch literal 147394 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:X`QQlV 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 W&h_kZ{pbFl=Ks4-`2XibpYUJh3j|OA literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/3a00c07f61487234a6ac16e39ac8e165e93393a46d1662c07b9c34bc301f4b4d0000019f38b6a561 b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/3a00c07f61487234a6ac16e39ac8e165e93393a46d1662c07b9c34bc301f4b4d0000019f38b6a561 new file mode 100644 index 0000000000000000000000000000000000000000..fc164407ff8111e9015b7bc464d2150a2bc4af1e GIT binary patch literal 5320 zcmX9=e^8Tmntwk}K#2tf6onQoShUcktftnrEFf=^m!HY|hBqO>z>$!(Aw-si7(zs( zNLflFWie11ZOS1cMaE$~m*Y6bW36L5uE#K5$8$Z$<6OscI*!LUU8dtYu6JL&f8Hcd zzVm#a=kt6%pXW`8NI0!Z=u6Ti+@=JM<33ADU&B5$l4KC%wODswmMm&s-oRqIVv|WH z*ox(1W09>~vz~?Yl4#;Z-li37k}R!bkwRGzM4Lh2OV#gj5n2r@H>t}tMUsehi6%i5 zWIi^}%0+7gQHf2-l39?AEEmivMUtVkSTx$Sk?VW(yoOf`f=#Q5WGM~BqGWuHeUVHi zLADu8EFO)-bit_MwSp|MpQ<-Gr7=;%i|m2}F~+#{TzU2{Ij%hNS5d}dS@k)$ORI@t z8H}c4ozB9eSslkIiz3wJ7>Fv+9flBhXg zkOiYLBZ%Lp=p<3FnHaJKAx?QB%_yna9im{|lxmCS%SA1(NSB2IK^8=fU{ghU;}WCv z2EHVo@axm0V$o#d*%5wg8TX#^4UXHRE@BVs5XbF~OiVTj7G5?PZOS@? zx%aGzT;`sQ3^A>sv*~$xYcHoVZ{ey7xN094q1wD7Cqie632^fJdE9Qt>m2uf&F?m8 zq!P&{B&_2sHU3Q^Z_o+Gnt`Y&j*DAw5?0B@sG{KwyiH&b+lq}k0XuNDAc^AymOH`{ zzqK%(*XoO9hMG-?RQ@5tCdMf_BR)+tlrz>9>v@}~TF*r$r}1)Oxu9bh3P?^^&sp&M z=n`JXWAD~z&d7fqW#o1EhpZc1w7yuYJ^o)<-~>J~?nYJ;7saS|{7$-2Q_NVZD`uR* zMt(Vq^(w@rZ7SleysX{9=cRF+B`z*5jS+{xav z^;byY4x}n$nM}me$Yw4sRUe@#R&C)_e?Znfc0$ZzkKLcVe=4$mck=P>jQ`~kD&6JeH36Tv^aA1TNB=Xw+uy@~T7d)G+ptWguvj7eMTXiC*{A3TyU^>94Xj2y#7Mb4die&*!dF1AduB6zE z{fLd0C8;##--Q3p?&Vk^;^=C>Gnula6^yo3rr9jN?OLtsn`L%XQ<`xM@lhIG`8QcH zwG82lXyc0Tmve^`8A%1%EENB%`3+9_RbB!(OWD6f7nbXEslVog12>a4DwmU4nHot` zB*c7@u`fG;Q+~UPMT{CrHWV{a36X!wiszJKb`#j63<)`#%)Cw~97xqSMaRTvgczQ2 zu@RQUnn;FRbIQdX{}jz@ zB=OyavZtJSYr==UxbS+F@`JZ(L@|l0i%HGl`1Q5QD6K5*Zi`dpC2{XR;{OsMi*Y|M z`>Sd*L#6rcU6P46NepPCsazJ0?cbZo!rvOvxBFf)FEVqJ`N9vIPVW52rB!ml&n6II zdE-B$IbF?fVvD45qmYrk>Uc@+HyN24wsPjb;nTwr!s}bj-(HV@9u=+O^#*uT{~UKd zdmFdoZ`Ne4!NYw!@IR)EKjyH;Oib*WRiGGI57cbi@yC)R?%WY1?R}w$&w4GQ*qo8c z3F}?TxR`U7W3}bX7;4^1Gc(=@A~TA@^V^eIiAKR#B)#j5|6G~9i4*?1htWtnAlb^w z1wFGMWjc#;mTxAL)ogObCTZRFUn`@v<$7Vgur6IAm5ZhWHeInOe6zyoHWx-?oAQH1 zouDZyxAHY9`C>6cLB|_kRmcjpByb5+A0*6vkeSfYu^}NMVNC+tDt}5|F|UtcKEPs# zdIYW)xD0Aj9E3SSj?AX&H7bQ`?R7+)MwBUX9%~$mJ6JnN$}6<4U-8;aM6V#`F|A*u z4L2xuP!TtU_^Y&Wlr{w^;UaAwp)IqN_?VKuqu2WsZ}cmYr-+-Otq*A1D7_h?lxa%s zpzYV`tstfSNIQO@o!9AYJF!b-GOfJ^c-AyTG%D)X?28(NLKhW8q#4$T`pANa2S|5k z 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 literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/4008aabbcb9b28305a40ab474bad9da0976fb788302053dccba5fc3f886838f60000019f38b6a614 b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/4008aabbcb9b28305a40ab474bad9da0976fb788302053dccba5fc3f886838f60000019f38b6a614 new file mode 100644 index 0000000000000000000000000000000000000000..ffde59037c221d0e21fdad2f7f08c8615d67f647 GIT binary patch literal 21938 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 BZh8O! literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/7c50bf6ba95d4d24d6bc53f7deb65a0c133aab991a43e3c6921d79557c54a75b0000019f38b6a5d1 b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/7c50bf6ba95d4d24d6bc53f7deb65a0c133aab991a43e3c6921d79557c54a75b0000019f38b6a5d1 new file mode 100644 index 0000000000000000000000000000000000000000..9a55d2510304f0c60aad7282bb4ccf42889acf38 GIT binary patch literal 37673 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 literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/c76b7bb4ee3452ef14040a1a7fc87e3dce69fdd1d7acffecfc5f40a8f94a262e0000019f38b6a5e5 b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/c76b7bb4ee3452ef14040a1a7fc87e3dce69fdd1d7acffecfc5f40a8f94a262e0000019f38b6a5e5 new file mode 100644 index 0000000000000000000000000000000000000000..41ede8e596be2afb7379ff4bd3bf8fa7902c630c GIT binary patch literal 239 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 z z2VjRaSfSN~*~}5vB7ggQ2S%4KPP8u6`e8_f`8I<}YR=KvttoheKL|=4hA2f$+qp*T zpE1<4HCOQ)d}qXJ>`5-#&clE+@GQm{&b3=p=UW%r!B_lDX0%(8d!qv(-T*x9x=6`TAApZNgO033~8K5!W(AjPC=U9`{xI%uV zF9O4!lW0wnn7>dizzLkA{hNOdMuf8#W7>x#@qrW}UJPf`J`cEO&X8g#setH!(NMhh z*jsKPLPim+&BQ2vdE1t9J7BgP9aNIIcvs*CbdBNE=3MR+{~MCK5LFe-1{?{tNmNIAYDw>K^3iF+JRlla*b4NHN)=_7I46uXfP&QhlkR!n+w|HlV#gee9-nlW@Dg z+8Aw0^sO?-m=;Zn^)2NGKo-kK$_lw8$x^?($qr)ow*)K=ybNyneyQ%ur>tO0g9^Qy zz_$U+{SbTrLQcTc-L8bmxZ$5P0bvD_MPxNbmIx0hn3kw0^RJ+zAYhVl)KuWveL3w1 z21Qo2?(vEhoMUo7gztxl9*8^y)3d`*gJm;#IB8S^ozVr+E4=VnJqm`yfI%aNK%JUTPSS> z= zlF=TBi1MjI+L@ZF%vZI8z5@*DlWO%fh6LP{t1p939ZDVXoPmcZ?Pbt(!OQ~?(+QJS z&g!OIBlzuMEW=FLWte;g{C`G~2BlpP&PIU`--Uqj% zAYD3TMNn<)V4L%A}9j4`Mt#_R{-bD}Rfo}(t)}iANN@2Rd?=UdoGm;_? z!}PNdl^nSRW|q$C07VZql&Z5mAAx?kBzwjQh%ovV_@rtQeXoPhZmKy3lRBvJ5Y@UQ zabe-JEdDE^S5D96R{9-<$u1n8py55#lI<2E&5zmwk$KZQK^^OphdzO)U7|PYke@&i zJ*(@E(@yhU5-R@7$PbV zUy>TX7+C}GD`dyPEne6U9--3`W?lgQ)idK}Ww``bs{>jgFlyQ%h;gWz!6#3X$l&CS z36Az$?9&69N)&X7>%7t@m8n7{o5BAgNFIUT2^@ic0|XwVVdtsa4Un#LkuKtOKSXCm z70tpEO)X6@t(df#8XKv$2w_D~>eLAo58lUV_ycO0a1E>#kGCLO8dD_CQiLN&qNY@` zC?|@`a-8!+xs}ZK+ z+`^=%xsz%_LgTw2qE=tzlVuDFjtq$pj-Ps;COib|I8D4m=foy;gDo(598%UL=caZ* z+EGYfJ~t#aac+&h2Qpg0(FK{kkY#kV!@R4Iou1SV$>$*F3S_R!T|R#gq;H12qO^X< zazZMmZmY4!Ixy$xF<8(Hb7LImVcr4Ab~qAJQqwAuk3z;pNZCU3T43%lX}{cKkg^-nu#Fd4Q* z`iCLy0A#j7sS`?Kaz-I#4AM+^6+w~H4Vhi8_lugrVajQT;>}Rf3S~}MwEEdvdnaU+ zCijAC{LPTME_tcF1M+bESYsQcv_NJ9q?b9Ob7Im%9CbNOfMcDTyfkasqUDa~vQ`v5 zU%GO2a>#S|LM!C;LJH<0JP4UBV6RP&afoTj2q$C8($o=Hm|tF3aSqByVAXlLx*dLZ z8CIQODhJ?&(8@zlbqlJ8p**Q3aE)(`y*B#A-B1^^Hep?MRn5Bex^Y;00bc3_r==!! z%_!6_#gB%#`qHX1u->;uEElWWX=7wnNbLx0*bPmGVdDUlKZ3eE=T)d0hUPA)7^j;a z!sa{h@@=S3ULXJB4cc;m)^yT_Uf58yG1}P;O>MBg@|D}LI%&%|tQ&@{wXI8kSF|m^ zZ4bP9240A6KLD@or)$sA@<8V)ShEG3d!VCeO$T(`f~qX%FjRHZ*E^wp3vDLQgYP zT!7s->Fcd@Z#V5;(Ol^v*AbqWq7uBzB}j;_56RgYjz4C0_;(e}uOdr+NM9#w6x z>4);;P;&>m&cTk&&}rGxOj|16k8DY-zY2|4q3;lEItUHe+dGIK+EG@19vXbNXO*9z zEl6nRp*niaWx!h2#5n`Ex4>H8#wh2CM*NYzy%BK@4PCH3t|q>`vL?U0pRUe_ARg`x23SWY|S009-vh? z&CbxZ*J;OnXqj4#4(x zRrpsAtvO3u@cB0AItX=jYYjU_U~N`cUWea~E!cVILFgEP9R_E1BTkvZ#vvF#4GlO? zmakb|-bGzim32g|i7Q{arn0;lIxj-ix{d~@8wR8>=M`wYjJ4ApH?Wsbb04Zx8)ECr z`eO#$U?6LkW^fqZw(pD?EUmu}2X4W(xI1spr;8M8lZj{){VmYxZM@lo!SZ5Soh*t*xm%4 z9Z@y8T?KAC) zdfUD$YIyP6HSbsU9))aEy&*I$D5o8iUi1`DG0Lu5xy z^stj|?}EoTi`qo-zS91}1l*B_g38c~Z8A{{u?rNF<*`$sp<1?rafI^oq6s#n6dLGcVr4SwT zq977quObO(Ziu?UXsmxT&{EV>(;D1a(@xwp6FcPNDHx(@BE(=Lxg?1$Cy_Lj6jD^r z6{53U0ro8f&H+07S{`>J5~4^D#G^-WJa#RV#L-y%6@wkJ<7X1q6OF$kNjy!5RQ!7> z&4*Dmj|6-_6i!hRi?=7x5s#u`r;=D85%rdU+TK#U9)r~-phU)jcT!y!7t?U!j|1<) z``Dl5IQj%^#t#BXGX6@Zr3i-tT0|D%yGh`{-d=K5yPU?8BDxuehA?prZ6(R2E6B>n zLrXNu28m)Uj`-?bg9ld>>?T4wRTB}1iz@Xp ztT-KEorJyf!!9L45=o^N?1BS|NEO^g15jEEI%>h26$r;5YD9F@x?pL?9%dn2qNxK` zQZ|0>BkiUuu}E`q?< zTn8b9Z#+^(A->ZJw2DO0D6n9?V?fJboT5RhFSftZHKH}VB0P@0dBv0%H22+uMcBhp|r!ZH-W z9!2nt73ey21`q+m6rT%sVcA6iWq3D+`eW1Scn*g=#3)*j6uKaX4VIyz6Ui_c@f$_M z@zEqeRb(ROHH|_dNW{`Bdzg#Fxz;=_d`|(hR zRUoDcTn|>F4IMVI`0t3v#Z zRmHim7lro|5eso-9X=b5PZp98BodTSx+oIKE&*vHhQ_$2R480`b#OHq0DK@GK^x^_ z99XJoGexYdz_#O%da|i6F(IHW_=#vwrGdog>iA+bJdUI5@R@Yi;BgWmF(EaSLO9Z6 z9S)opK|Ip*N^;aSR~BKPEI5utB)AG3?-sN!1_&YlhpKmhZ=<;O$7dw1y({e=uU67p zl4V&dOOC9_j-oimaUA2dEyp&tV;skELI_bBr%6acNJAPz2naAGlu)4MO(_bP_xq6o zrBG1}gg2A|g-|e%miMa!xRjRPcinsc|9klmS=!y1Idk6U%oM=u zcuRNs z<>+7|_!EOZ#6e1H+8V(@|2V9?SV<5k!AHXKhaBCC`RqG%qI{?}$H17jOp0QeQ z0TZlc1GYhcn#MQm75ST`D!_dZ(=%)k_7T8xksYE61&{4JV6G87j2+*Yddil=WR*N!20CNon!&{A(x*f)+C0dP8uRF1kdzsms{I^W55POG*kPXNwgXg-Uc}2(|QcnjL$B7PoY~FI0%Z( znn4>zYy<%tK>ir3nVx5g$DnaL!L8su+=uTmE&myG9m8DLPBT#gIa0*YQ*sFNil|$Rw^>oi>13YA{R-2-<@0O#sE3o+Z{zV4!WV(7|b` z>BR8q=?Qp&peEbeY5cDOgAJoyhU*x=3s5wJLAOCfq4zf815~l30gMT%)pHFn`0Wiq z`4A7NANa%KzN9=ttILj^PY$f{|du^dgNAWK?J&PeQtmR%>&o*J=mMfJ6ylr+b zBU?NCt9l?WWgms!hc^l04?_udgLMZi6IySN;Oh!Vz>VBC1Vd$+uB~9>b+#37b+-c} zXwr@@*1$y_L?-|v1Y&gAR|1?hwk;5vq`ePnd^KR`vtfS_%&u(&j!w(8YUs5b+f~2> zvc!!*SQOK2g)D{aen`P`@DaQkD6lPX0k#9Uw0#|X0BqMu*@tZ@`)bx@-vC#JZL?qp z2*7T;y&Leo084CZ!LVB}_&VE4pgU$CL9;Ht2A&XW#GH4)RBc6f%Wddz)V_ta+WX+r zS(d+zC+wE7YJdr`gsIsg3$|dc1Ib41Fp(S45~?}_Qdrih4f9zC5?cOk7nJKZNJHAb z(o)vFwn1!2!j;Xu(O!>1hrp3Tu%o@u#C@Aa*VA{Q039n=| zo^G($@UUHFeqaQ$fM-`>1l_VMPQc#>YbLi6=0UlfTh*m2(quh-vL0?#5;k+)t1K?wJ!%5h5;bnOxO(+$8dL*g^Gmb zTmX7J(ltFq%D$5&?VZ>nwGvPcLNpND*oQEy?Eqp8@3rr?Er*Ru*$03}7)Y?=2zs*| zydj7ZSOr%H`E{`VwsYXa+bv4;;r&}r?^OHHaxGc_L<5*; zBfuU6a+{$!R@mz8t3bMLd`EZ)Vy^;-R`j(T*Z$+Quf*gApdM>5!Q?bjHrP7tn*n}} ztscNy;uf~UbfKpKD?VyPR}p&k34S0?cMS z+J~Nc*;CN>_BN=8cF?g6LJe|*Y7&Mo#1YZLwmsxy-?yIh`JT&uY_V9#c=S>)&lI+_`1q|x*eo@ z-v(Ch;=4i56=1zVFf;5lG|?I`<`6t|7>`EGxB;`V)O-sbfK~-uU>h{BSYy<-5#vSS zEvyAQw1D4InDa`E?1#9ow4C%#j0*4PZVqk(*8!Qm;HO@D8z$FnZ^W-1U=BFi0NV;G z()J{<(P$gAubb8qEr4h(;B2=KTW;^bbn}!w4V~Bpc74p^Cf(9Dwst$gjxjSrU0*%Xo|85H<_Wc~ahk(~6u(0KOg)nvy(5=J_2XGZ9g4n$9 zA1s#EF%OG{QRv5io7_|fiA_GBcv!wuR1N@W-fVTv#o)24!yxl?t5RnA8)z}kk1BX*+ zxki|OGr(vD8#IE;!8-Vxf_AW`7s8~1n4a}nk5*{_VVU{X=>gMVo)O3fR2jIp4_Y{h zsdQnK5QdL{DJ>7p$`%ps4FIqV0Naddc0!rPfS%TARE2CBu3IY0WU-!$Vm-b1_uv0B z>>vIAfBmn^7vTGK|M|V?js4UAU-F-y|Lgf*{eKPq`-^$tKaX0Ub^jTIV~GF$?|%lh z9{!(eI7ID#ck+K=v7Y(Q-Pix8+j{WHFy?GIWY%Y|J1ht8F2%~|SVNj-tkAN~Q)AZYdMj7Z1sA&kU4VEwiBR+}FKEC*O&5PAT*!Ai-6z^@57J(l$&FiI4xleR_BrVm^V z#(`at@z;x<>Tx%XDQ3XgEnt!iSj&=igd<=G9lUI@SvNFz2Apr1iI6>w>952SexNaB zZv}D?p+YaT@-CpN4|ms0hY8KldI^Yc1XsJjye(j}<(O*QG;9!ZXr+3m_QgRbOi0XVI$ye!?HJ6Rt4>%fE2ue5ko+( zWj`#N=Et+m__Q2@c6i%0=(E+f1!ltX7~4R2#J%{2E0|dfFv7cqM*yqZi>}(?Kv4_5@zj7+C`<~KwtCu6wqmv*2-<~dh0tp=5I2Y!twgIXP`$}Yz}(64Iv|)J1>J}Q z37SI9LN{7ICt?OPUkO)m6&SM%IuG#!%!!qK=mP?hV6zMu)iOb&@Et}0uodt%0aeg# zm<&=j=o7g)n+o#~1InySfev&g@MHo{T47ZKx2A}=2IIDY>MeZGUW4iMK_6hH<5BDN zsXkxWTIJjDV$(^uTXFvsk48 zmbn3v*92M3K)&k1hF)BY;J1}Z$)HUX*ZlZrrOK@=P!0ZBF?u7OkKn!vrqzIkAkY%D zm=)K

    NRirU`w7@w^rOcLMd+^&pU+K>HeKmDF^b1PcMhO}J(yYob81wJ4LuZya&S z+}3~WKmV!!`JvGC7p}-SchQYAyxv9w`| zN8;w`A!7 z;7uS1fVR+qjD(PgfTI8cRIAX}fWzu=4}k^#26^pmY7HO?D={^S{=6m>YzKhkwQ|9GuR)Q#me<{q#QdLdDRbqlAvmb~^ zrwOY>_*3yeq=%4iv9jlln0HE8*Bt}=HJE4=81Z7#ULF&^y1>fuSjoWjG_N!Qs1#s8 z{082N;aV6tjMaV2+l)}!TA+fXf*H19U;Q%)WOLBc$`^GDADi&)gf(gq)MypnKBpb? z@5OzXakQw%C=qZw^c`AT>9aOG^_B55zvcoz0?}sh1~Qj`^=*zx#W;M%K5#@Qo*Tqf zR3B`xT+degLpTFG~h+jGeRLA}#hIlCZI{(tx zta>r6D9%!jvF7n(`1L?;dwi!KX)6q^_xGB+)#(ISc6S;sJc!p0L?H*7g`ZY;vk~

    BE)9XkJXBZ)~l3hS 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

    7><7yjE?aE4})a_D{uWW_o~x>QF2V=mAjHk~khw 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

    X1BTNi&3l$QXt&+ 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

    ^npBvn`lz0q%kyW0XH+;FNS(yJRYoMqA=y zG*S3EJEIO^<#4#`JQ>+H=pl7lvYoYcZHL3nu4V^o;AZe!8o;CHB@Ap{$QYSNS0)`? z)*zP*ca!LsSetT{5ClC6{d|NaDwD<|a;YfNf<|ZLS4et2>QegSmWKj+}!v^~;_F4>tYqyK3 zK?&9n>|^u}eiR}~6I{OYVWay`HjSMd4@&`2VgVMmw`<@Ej40E;{6+ez0nf(agXHud z6kKRIJ z0Mx7be=rxGNZM|Ic=P$GkQ8;sCq>vjZWgow1cHs45U8#)U}*hju0d_Wg*06W;+FNb z+SK#~YV{@!{0_?;p+s9Nx3f8-9kD-1Di^S|lM`v&JkRHs6CmJU`yq}TMha(n$&FC| zgjFrP^D;Jvj)9<%r-J(CGo^^jM}LP{aLXC!qL?b|9Gi#tu01n$vPAY0!0rSRg&%7o zntji#OOQ_BV6*ubCOd#F6|HFc&}2RXVlFA!3%FteliA#!-_rdnUxg3>n^4-{&0Dbg zJ`o%^UTsx68>_4kO{Sv&iDqX6#W{gycsJH#ze0iC&fc|4Zku6&q zJ*2bCn~+dIkk#51yyPJXiBKi#?*1>`tk9R-O2s5SD2!d;mg$9*292ZShGiq+NGo}B zJU<%&r!CexM8D@=V85l08+B@yE{mHJa?pw^SLLWhb71+9wcF5V5M@6<8dTLHPVG zem-JBE9{(3aT9@Hh#t;1n2|!PueYO%3Js#Ej=$34GbBuW*X6PBx?Gkh>NN${#?}yf(`EprYRbz@fLvGT=5iQS?!xD`CFU=QiKetx5sLK=~{eS?cv`(H!X zb%YTQlF|(l*=~hE2TOi_R#aWMs(Hx4BKP(U-Zqi2+~go~4*7R+V_w!ZP-n}fHhNj5 zt1Y3={yl~u0g^`5(dU>pc&!lSGo#=f@>>VFVeynGjh_bSe6J(hPPF|tW$>Ch_vV&| zcYR_6D3WR`f3@Rsb2c1_lac5nr_MZ?5q`Wv{|dDPQo53IIZ}^wd$UG~{zWuLhBKw- z&Du*{Vb6kfE%vGR{(+hFT5d98iCF(4Rq@CGaQ!q*P=_d$P~2pGTsi;5>=tC=Ac_n5 zB$D2j1BjNsYvi9&*JW)Ih^R;*-q;)P*Pcn7O6!txq)?WgfsJ>M<3BcIZi#Pvrhx2Z zCta77Lvp}*m1~kk#j)SA_odr5Lky}qOS_uUkPlgG$R$FwqywvHu*KJPMiU^Q+9Wt= zzd;M)<(mWnOQs=)mzdpYyNBA}VR)p$4=_h17l4(X#CW5Ck|=>apN&{0MK5LB5LuLj zm=FR9Pd6&;I=I9TeWcTy>Qn=$0l7_ti>c&5-djJmhO$aED%yPFY*#=|+F@3}mW2@R zmSOMJI&q&E#v`M0@h}p%pC%GrnUlpkO=Hz#QM%pXEez*F_ zYL%uqN|O+zDs@Qu)>wAb@>Dm#V`lN^dtIfV@&@)GsLUWmy^KpYY71vUv{o3%g~ zb|xH@eur=-9CkVGObBPr{RW}wHxW6Ct)wm)$baHi>6D2b_=eIX_u}%0c$l}*weE%- zTLu3oRc;V%uxNtM`!n8)Z%cPdK@UFKO*eu(g__T_iCkegdnht%HvKL`m$$;K*=Z7@ z?(yC>YKUtEcVM`D6W_1dil#uucCZEwd7lLNBGMINs>8WBlsEa&R%NdKCuy<3mTqFF zN>T>h+7LUDopQWaDpw-r-PR`IT!6Uq>--=Y*A_IU^O0WuBfGz{kUaoi<*7C|?jEV( zcQSNylWy!-!#U6PXEqo#O;zgkw5Ql?Qa!1oA6~wVAZdRWC9#{2Vy#G|q|(aN@+f;= z5cwkwqLXHO(WZoQJavRe%LuiS1poDcymmjfSg=Q)qW$>D<)WR?&xk5U04E{A=D6;N3A%}#^`6K39QyYA8w>K>IXc+ybjAr zgJ!bm=1kY~6E8!8?zeBtRo9W27SqMd+a2zVJ$-ba$y7q7j`)?CmO{C|wQp$c1{Tac z(^wx6!)di;-bBwuH#0$$Qi9PHME_&WuZK-K11s;?c+7#zkG+(>P8^ZWB zE#;JA_BU!Zg;=tme=BFNuN@|2-B&%O6SNl;9?cml-jJThsr(idAQCv|MCDdl=IOyf(cm;+Wp3?xG|qvbL8Ug0PKk{-11;9U)D1`u zj_)HD7;o;FoL+k-s6SA&rGdtd>bj;dhxBA%m<8y*C`O!%r5ODQJsM=!V|yb|h^mcl zlvcqekeziALAtL~bDEwfIa%(LR@G^S(h&RW>M?rN>5RDPa>lO=_vSnN^$@i`U%t*V zQ;i)PB=4_sYh$A1Fx7$ zcSB@*8(dAXaqtYmj~onloyMg;Q1)R2$m!O;lUJNHN9f`X z3J?$jj8^5SDu}P1HsnRIy7{G5=Hthp8GK0R$9AGV+3lhS+le~pzdOP7A_3i>3xNJ)tvL8}bDM@VZR=RrYsQsgXLUW% z=A=vgt-x?~a_8xgeO-#TsI)i9yikNrhCWtg1Yct}O^y~|UFJs$$zof3vwiy%eUxUX zQoEo}T&6q(SEnXU@U&On=&Ce(Y&V-PgHyqn&dYOdzvpiZ+dN$a~# z%q=nO^-bBA5gkPxWt|Y+wN>zJU|RIFucsT(E<05m?x|f|M?RxzBT;Tei|XI^(qA%7 z*okCmFd(DmMYEhze=dHa`=p3yMj-y5p{ry>STSK zHn+Pkr2nN$3jm7Z2LE)j^rrVe@Zn4`5h-!Kui>wT`d0~tR*(5gR~Th0iZe~u$yjnp&E z7n<iAYDHuIc+GrCgm$XU!1Rl)a!e8_(V*QhN6_=w%?=M@%N%>El$$ zVhq*I&y)7CA2Qif6e7(83+!IVOi@R2S}g_OKSTjK9iPt+_Yevx=>H8ZP{0dlP-HOsa2q&%<$eNfg@G{iNCs$P#s8N?B+D}nZNI%xS=!y&no4Gu z%L=IK+uY@X-2Nmkg8jCYz0-XUsgHhk1AX7-ZWLl{>fk*95<+Bia`YM2CD7Iln{PLe z%`2VAX6NHbln!FnYD4vKy+P^{EPI7K>$v zLelK9PX*ICSEtu7;s^1y@&c`&ZEz+T4&CKee*jIIrppwTmR=(Yl}B-`%z}NX!aEWW zYxx3m)>M{>W;werBE7dX!K}rk`S}|~!=!LTGTm&=7R~f)YgwOra&=+-=-fG1dep`^ zcv$>_98V^dS1Ws0zU;m$2$>UdFzx`G#&62e`!hv%Kq}Od;B$C{{$9k8kQDPH?2#pE zOjLgX39&dNB1buUl7jS^nR0230;#F9&UP%Q!$R+YKWi0~s zI(jp^iC&y)M3RuMW?q|&F>7Q_I|v(YL#(D$1KDGnte~mpU{)NqwiALp7}av$iO>x? zNtHjDFp{x>oZw|;DQuU2p{twNiLld@=qap$q5xG1CLKQ0@PpwosMIPX%d5@XkU$`_ zkZeR-ag=c*Lzexn4trCBG-dkcj|BC#SKT{nA@(NyZK_b-oPdVrXm+Ludh|>or}PT} zcW>I9N9uqsEuq`CY9G|=?GIZH4M^NQr}DmwrS6Gd&cbwQi;-ZiC;vV*3LTcn*+P@bm zvq6h?=h3|S9(@SG5O=<7_I67P=}OaV9GsiG-Jt&_rI}hVU@-bXli|=v^~U}p@)G?B z#=(Z~!dgOc$CD*cVq-5!Pij1pE^&(A8~}FdLA(uJf#z*FK~6G<_Np_~-y{k?EjbR0FSX0rD7CfFIJO zG89>wFUXTBm=?|FhqkU|;u)H&=k5z(DTJ}3M4VC4u55*pmJYKA!|8CI8alyyLX;BZ ztwccwgcjyK(5f)KsyH8cQ^rf_8Z zD7*?&Py5($ou-{E$)y1S3G4_PFE63iuzQB2H-zPg=jPOY`bBmfWP3QBl&S}Gh0OUf z%eUdV)kLw*7f0yv){*N#m>vS+)~y~v(UPndLXhREIht;=MvJ=)l%jVuog0GS9-8{< zZLE)8P4ZYH9CVnDm&b1MI=n+gP4kvDm?r0uh~GcBk?xSawVj}$ql7V|wymOdWM?8# zC^!zf80!e?L7$r5i0Jos*L+G`@VO6E_rt)2eKmIJcq3jQ)ip4(3s8)f%XYuxK14IZ zXqb_7zo8G1ho*4_$u@|t;!Ayl)1?_1zn-7W9Cu$wvC5xGNPgPSwbOcY>_Lr}S{TN< zLEc?tayu@5+o#2Vnno%src4l||Fdywfk8t(**VpI7OHm>71d z2K&8*Je3G(^CT1C#;e}VGp+2w%K0c=f%>OGnm713%vGYmF9{(R9H9fd!M_#dG` zo+1vHJ@bE*aeuR6RG>jZWOxq7(-@EU0978-3e28r8}JqHddWX}*p9d@erv zM-f5A0VqT(RL?pHG8;guNV1q2)@Z;^HV!fWKyEHQHKY20dCJZ?AZZo*wwpDP09AKFguu-s=c+6(FX?!>&}ADBpaaola?OEDfOP&)xRWS@OHq?&Xc%y^XlHm=}-&HURS zp2$B3a%9zhGQ=NKN#gF-!OgW+={=ls=d!$aZ0+TVA9EOD91JSTjvCaXnq@%%(8)3u z=DiLu#@eV`rnBT0UB_rPG}OkVi9gU7rkx{9y*P<26zN%1e{gEd8%TT7oF-8=yay;A z8LXiOOWsdN|DkUH>$HD6P|x_% z6H}3s*bFs`y|X0SWwDyBR|=Vs$WCdgwLnf#NVg8vzU%}O$6MnIqkzz@^ixFkH4dlW z&?_4$ZHnbk?JEPvv>2oB91BT>0`v2knM?Mc8mwd7MzHLtxIm`xF%4B0E^K>{9x<&( z#P=*!DP z%6^EXg^GxXV644%FSzR?QSXYmORj6d3A#>OZF!{zX$qoedb_KF$@7zCr>&j7iM#Vf zGetLBz_1P-8=>1hgV6*!Bg#p@aco^POo7GYftZ1R+ z2k**nilJ&3&e9CH@T0@KLCBj*+L@b}HpK$z(b`Ffcq! z+0ax4)Gp_)TPnq3{rw86R(lZazAK~AmQoTT`fws61a;`4zz$>3(iA|(pp7_u-S*W+~v5?PVQJP!A@VgjSz4 z76JC6dnWUbHE4{E2vMxxIWUy{n!XD+_;>+u0O8;*P&n2H9=EQB5JQ(GW%b>ar=U^i z&&q6AxlqIbgI1f4o;q1p@o14^0OEYlpzV$r6DFRl?8zL{wBuenRbgd%aXKi)ZCOZg z=@bP`VIFd@Q=mO8oP-srwO`(#3zUUByiR(!vY}Ax$oz3kG#P(ZP~F4mj&Ph*5HNNy z|G#3~J(XPuA9mbA_w=k82U8t}UJP?vmnnNC0Ot$7IzDoW0}_Pe7?GSgmvA*KWIPdO zhr;}J)REN=Wcv%Q+c$O? zkT;nWdL|lW#NhO>QQ63^ZUGPXb82cN2?`btEjKJd{Y4+iY?~I60zUS>+k>AtC?Tm{ zDC?*8hLL5`I%FW};Ncusfmd+X_rWz%X;;kK?m6xX1jcsaj#UMjS<(sM>K>sFc zD(A5%GK8(}pIcxB)JPGDRfWi@*8o{E`e)S_a@PZ^JCA#US9zp1i*Iqz z(FNtIiVrCrlYT6-ZQd%D28*$I9g@1hOgfD`2n3WXVg;@YAvQs)eKq1^^mlYUCn4zx zf>pj=I+|80aTpIM15?Z#xopcD_P3LO=nsi&5Dk{b->!7g#wD<8ZhI90sLYR#WRKi+ z9iJbn9NdPBi&Pajx|Bob=+ZIDGb8QF0z?EPT~@Ed3LvQe-J;rdw^RBCTBHcSMS&mW z%aTSYs>X7aSF?+N8~+rcbK2=wMc%8~mxrJ+Kf0w>6ja=dRhV$UX41~gj&}ABy0Sj@ z9##`-Ioe`E0EFz|528=7=M)6VdyjiYCc!Ay#WRhD9(;&}=@>$1Fv zVo|^4p2ek55gk^#<<11~;p8@28%{XAjfI!l%w7eOS5M-KS*rsP2K{k3DX9FhM&HyS?3&^P> zj}CHcfM`#g4qpIPBfF-K&-Zsm%I;|+JwUeweuF-Ckr-seI8AIYkYSIoG4NirP{$V? z;Y@rktp|*aW#Foo{HFF6JsKlpZ)v%^grC?q@o#shY@%S}q+UR3F2(6Vy|RW5lSL!d zb5F1yRL>>17ZK}gXjan_aYHuHtrhk0pFFr%dZ({09YSXWn(vHRZW(m5*cnD%9~p>b zV?Brbd5Z`ye;Rs|@-wpNdO(kc46Be1^hSmwj!eAb?wxrark(P zlomm+>{v4DuB45V+26+p>;oKFVZPmxej0flhwA1m&n>c?R_2FI*jdu6V;7hqw$Erm zN20bih3UvGP(X0epUHlAdJC>-IG8e`K7DjCdwW8vXWlL<@ZSQ`6k2l)4c^3?|8hS= zM^{EEa`T34WB1s1GJ*k`VN>^FL9tIuW!KSTsBP88x*PmZWEsc-R8FH^t(6ZpuV=N< z^Jqwk>h2S0+|vQTn^dHa48)qa;v#!&=y6d zkx#gP07nlG#Gf;jYqAGqKY$bD`^DKZcYiGk_0Pyx^s}k?kd&ZDQ(Js-g#XDBl1`t} zUBs`QA{5wKu(Q;f5mX0bwb4rkfb4-x;?~+q>0}&+5zV#0{L9d|(frm1w+M?a7K+Lw zy0>X$33~zLOnArdt2?|ArKKT2DD2RT9N5_W9{P&tr5TWHJHE~=7OT3eGEZ83R?r?BfW}EBv^2H+Jm{v|%xecr9#PG-zT|moRY;G!b+2embUzX^z9_0Rh=3O^@m& zWFAv!zs6po50;7v58Yhcah;DT(yzP|M$c!bWvlj!k;0PvopicGSIXW@y?xF<+THm$ zaqYLvpdVY@zoLKO8Q%Rxxrzrg1qEr5!tmvVr-Bd z3m~Bu3Qz7>miumhy1z&EhuQ8jQgiqV_2^mTkrm!aT+{YRDK-m}F z%F>z{>iJic@60K)viH#&IX#RZ3k^VU^*;~SWj6bp)dN^A_vc>P7S6m8Vs~ynIon-b zE>QZ^9BJ+Be#8^kq0V(VTO?ZM*q;EW8X{zeyzSHo9dSSHNg^#$82cF}0?`odRiu?o zm1*v2?tH#Bj!a*nsMD6Dm@JQcNhd`?N3n^c_2Py5u&tJ2KAHY@patn+9V6VChUCDo(`|xie>+11aZ_Bpd)IPkkxw0qn5VjP<9VJAoFG&YvGgm;HkP1&&m6qxPS%(8Kbl1Jyr9sP2hzhNzfV)PKBiX z`MgFk$tI?usgIAhCS4OM3OLh5T?}qcq9><<7ycKj29>hUzA;sYT`h(C`PpSTgxG4u zV$`IeiZgR?b_x4{|A5iFA!ynhSsi~-s`3Ro3SdpQy>=fG%IjC4#a~0$GB;bkn&qT9 zQRU5qSp=Q?Sqp!AQX-#F!3ytE+)tDkt(nGDN!oK_6Yh8byWA#{c9dLa1h!p35A0um z#XV58VRL#J`U(xR=~(ZpGueM4!QrHAw5YgecQ>*<@PFlAX@=CvPF6CN8SRS}v3rET zVo!NhDptSdBV0y|%}zn+la<4fLf0y!&+W=*0A2;!zmsKq{4)3twEPMwXDR{aj;%D` z)xoSNtAonT*}rv9Mo^*{3EK?QJ&R-A9G|uiOO8A~77%#* zq-6C*8CCFf@iEFhbc#v~yUd>5*Fwx6wrzzvW;8^K{RqmUHl40TTcu^}Ci9KYN`_xj zOEKqcg*8qUeUe*ll)yvu`7I4C7Jw#g=jimvyA4Q~ha=@oGrwzA3y&ll`+Vp{$tcl4 z2P86A;3(0mBsEv^OXz$}x`=){ym|;2$os?pmH4Vqfh^^PNX&~e_8*c7Dt0A`m)c5c0EYW8SgxFzTl!+)`8>A_++ z#h-<&426o75PcQnMxV<&0cauJguXrkdLtdD*~=$}nh>O=oPnN}Gwf3rjeS6qCXKJs z4+CyHW15=+eM0-TvnJ?R3id0C_m%sK26y2&ViFMBzG-D8VV{@s{spaO$a}$Fs!CG` zy6SJDyN{(yiQbO&%$G1XhSRT)9D5O+TOe4psZRJ0@$FI?a zSn)1tEd*%U50+j=Z*|Z|PV~Zer_!D}C;q2! zb&2;ieeKW>hB=KeAjr*!Xj>8)IM@B0U!6^#A9Ls0@Aa@t;DLfku-y@Mv`kK#@5!hB zOt;QwZDxh8k3qUK6A=bqtk5TouyiB32uQPJg*@G&Ex#daX6m)Nk{N^$pE{MTQr@H& zCinax@I_hC8K!;H^kCyOtoqY5OV!U2^zH|=u@5m@FM&3u4}|i0=~yTiU^BZ`(taH? zE~fDe%dKAJuHLoCeq0-0*9}Vd9Jj(|*q7u4Q9o4Zr$iI(>6WPTkk_?PG)k1HC;uRb z`y6Dd-=ohe2tpp}X+f1)5#4eM@Gfl~%6Wy=be4Wito;9Jv!CafE*65br+F=kgi4f- zYNRJ8i%>R|r_kPA75o$iSvRr?nh7y{twMKZ0B>p!WgBEYn&PS{NRWiD(;(x=ZW*ve{e3ze7}ok*+j=MFif9D6_eCJ1{pke} zeDK6(54@4-(cY#NZXGgseD@1eQFDUELZA*%C=KrFOI!3=*`0jWFn0I)qiWwO*Va3B z81}!T5QJ;#c1^0WCL})nJ}M%So6>hzS=RaA9QQEqRCf_#?ESmy{@{%{SiT?DXeiHO z<)W5Kw)&+pZy2ueUz0T-NJ9E|R9b{FA4+{&-kn3w9441yt?;)9#ohaaq%F)tn+oYn zb_G+s7AOx-M!6b)Rkct}WiYm76u0ggayQhwsV-N>rj705|BbQxJ+t1o$Ipgzy(Oji zAeKdE2%BFoOUDWcduKP>v-@0hQv+pjO}W?mZ5w1KWflrYB}84*`62z%P32`$8EL~i zkD~b&Eu0~Ons zj0hc?KQIw?e-Zo{@N6q<+uC0=-D}xp>}Xh#>RDo>fI?L7Y4;{t+2!5jymz36!U2=o za?~rc$3|O_>f6!Ga>^y$@ezB2%HmEZTG>;3{LF8g6sWY32ZrG8C0Ae24Htnt#`}ui zz)r%iz1T*NhJ`+QF~*a*%AJ;|LH62BCzWZ=9AM)W8Y{AQ?5>D&xQ=M}Ui{TF9Jy=!VZo^#58rq0d~m)Ihw=Z5 z)&=x#IzVTkcLf&1C-Q&ygQY0(eIjyD;ry87LQEnX!+Q;3`c)Ip<81z?tuRE-&2nyR%Z(F#GlR}B=$|GU z2kaSKX{Tp16UAw9cPsAK?jVbaxI-^4(gKRn3MXyBVZq_hKU)xT6MZy|Eok$ZrJ$8^ zB<4@BeGnvQlZ4{BO>|fYstr0L!w#+|zZ(PW*G3Sbh~m9oCkvblLg+%u&gYT}muJ{H zZ*a1P0J^UyzqHA3wPw2R7xc8a1efRgaWRsoIbBnABO*ammGgpVi58=$G-W^fcg#hO z3Di#GUQIp(RK6TUYqV(wzpYis)Mjnng}a`vz2-93G-ao{A z3NYfIV|+G}oDjP|pz)_?St5$tL0J5fcHg9pntfU8*d^#|4np_bWIfw#|GJyL^~isM z1`{1Lw<{0OURk<%#pqn=S#P=EI$L^oyo0eB9$&JI_5%Srq|qK{AM}BX+Q>3M7!F-y zV^u<*kQ85^W<_%a-Md;V_qETJhFpywRE$FrSsLh@?>@$-wn!)8kbV}k2KpO&+Gp_@ zOZd48zettcV($M@^(Np=oLAfMJl2doBaM!vu_TW+Yq2Ctwq?ndS8NLpU@!?@FxVKd zjSaC)z{D~nfnW$2FpJp_91fYbgx{|UC2eVPyqo-BVOl*6J@n9z5?#Xfgaic{t|6L8TXs@CEF!-MhA zO;T1(w#{v>v#iaK?ETv3?|&xvlomuWBAb}oQMLd$Om3(1kIBhzE8K#Cd;nTcg-(7} zVR86%7>~J4tFxgtDt~ql4uM=oZyKiO%O*eK3h!V)%Kt_&!UcZ8=?3<(^K{jOI06WY z`r~32zu?`aP?VjEWEpV~3u(maOiJtt5R%IZBf5d5Onda*#e9Y*ven2NZB!9LRDywr zH+|kbniH9sp+j!vXGZ!HQhSh1Kf9$Fh6iY(LT*!xWkGlV(zjklMK)!gLjO$p%zh!; z0_v9GjWWz4tWddP)GFzkpPYVp`fqb_y6Lx+`&IaGXTHm>`oBR<21L*{&TZB41rw|3 zm-*9A^H$@`t0YO&Ra73Eo@13Hi)HRyc>cD>=r^Sh8c$0TZ~34>`<)94pl^MxnC>(Y zUr2Stp0E75^1M=_(*vA`@2xWI-Q@h%U?!Xa<-Pqpwau-8I|H%4tua zoAtvU*eJ$)pFuMzVbfwB6?`b>@^|~c@V`$B9G3;oaO(}KYhp|6F2CsTH2Pgq+01=Q zvxPeH2kk4BiC_86p?qTxHOirz-p}Vzh_Dtp{s+&|vl6Wd&>C?t0)r<hqg8FfHeLU=ItT!|AMbm%eo~{lc05 zD?ObvDKAUxW{4UkW?&xzLH@g4Kx*^weg!zP|0i^dnGG9@j5(njrSJG0a_QfY;!OC& zQBkDxE0YrEAN=_&vN&<#?DK4dt(kd6Iv38lMfvd}`yxpw$iE-<%fNXd7Pz&Zli3c* zO7BLUX}xege_5_D-}wub;|3~(c}@>dxAJX_ez#fF&t-uR<>`Of19GTAb5c(=m+SvI z%}+u?DP&Y=j~s_?APX!rJ8irq?U!lWdq*|8W3GBNo8eo=Smf#0k-RV z9_QvV9xmC2#Tnq-Dg{pJohLMwp^lUqKqfT!ODlI7|3S@p>~lCkXXb?8Tp;|2+8>Qp zQ)^%TXSZ>3h;DFzuRA@q&uOI80c5q$;q&LsBsdSniyh%vD4Z@t%|1$1gb11(D$k{$ ziAUwGpV+vpmJ%s^=%(lw)8_@d@CJIGd${1nsA=2lNJWU}86J;s+Hd-V*9SlR-lwKkUtKsLmH)on>Xw zVUzM{bUL}%l9_yIMMbFCZ=gqDC4)5DG`(LcR8lhHiF3lG8jS`g*Gk_;q}~hS><>`D zz20J<4I;fkBQ=lxHdp1C6^vtk&Ndy5%J)O-MBXR(1Ab>4`;qh@P}+sEef4T~hXBJ( z__zNy=f8XWE0O(#{=Q7PDhacsHL+(VCSdgOHlY*K2R&ZR>{fGSlQ$BKuAo=kI7Pqm zXM^y+NHXz`jA{!!gc&A(=HG=Ni1~#$v&sC4&v~7JKG|q4Yi!CZS56l~+5DB)=Z6cE zfo^A{fQjZsktS6@k=P~)8FliM5B;gHPVwIneNU^LEvHnqy)r7DqOXBK=};Ofg$mf(UwhgAG5utT^STFa+CObV zlt;jyAMK#ND1AZ@ygzEO|0t~NH$|%~LFGcOu`;m6B%RWxL7#O7ke8Nr=z`a2EXI@HXwc(DOoDDuR(0xs9H?^$Eio*Jxz+Q zGXFiNJ=chtNV#oz0g`TkA-^C{-kEWGN-ztb{E7D4&;Ci?dYB)xJsb`6vK`TT!BX?n z)mmo3)M)xsP1Ku-kywyFdJ{c19LYpIdC<3WgO|ZXh0d~Tp*WxAD1D{$Fi~)e zTvXh=jkF*o}V};=Qb{g(Gy_q<9CBfzEA+X)USx2|DYiDyLb@&$8O7 z8UQ6lchJ8L_Mg^vBlSzJ4n%oyo^vQS$K=IKsu<{v`<085-^6~If2c^igme*Ez(bs7 z%daZGCVdQ-wZOj1yn*koWw$^tem{#of&knbO4G(lC{Y`c&Y%&d zUrUJjAAJXb*p9-e{~1<#kpBMTt&8hyB! zuFaPsiu8Rm^TTYtkIBO+B76Ojp5Rb93443U^2JYxMYH@b~Ra4`f=m%9Lq6 z<*9KWau0#xQdr<`b_1b{ttmQ{yNaqyXkHqGAFG~O|-6$M=;JmjqvS&p{>m5RU5qcs9P8n^-!gIq2pCI}uA?=3&s7?IP zuOi`zz57=BxWb*QGl-6+aE%rmNP*r9cSf5TZ-<(iN8NKRpAQ~{+{>?=A7)-{R}gft z1#@p|t=Xhqew24=RPH6?BDu0jT{N*+M6?NQ*(O&;3vTu=fHI>v3var)ot-wD8!MY` zwvXpR!o7+F9Qp;yV;ywHt0;y{NK0^77F_z7lOSANWNK~2w(vy+iH`$Ra z%A~9b6qS`J;o4}DeyUe~6H;EuL^6X*NcT2Diq8(xO(vzJkb2j0>Yz;6{iRe2Vq5r<9-yX~Oyc0zL$7LA2k(c3M1F;@?sH4XI@}1G#D6Q9P(hR$ zTPHgxCsW{)Q*H(7l;3)r(s{t?Dh53XRO^{X{NDgWqg%57pBh?+)P~tcOC`Pb2q0I* zZYNKD=m*rDN3Y5-5h_!<#g#QJw|^NWdc6)=)I?nt;;Vm|*93W^yQl5KaHd#cep1JFx-LTxFD{$RLGSwJg?dhxv9Iz90XaGaW2;|c%eEo+zI!AG>*gkH$@1ovI_$1&T88)=Zdp@T zQ%94Hvptb#J0+Lc-aKx^=dx}1-;WHzqXNhMP6zaaD@V*Jy1UMZN_ia5^?M4CZNrQz zjXdUfX71;9GtT2*g?D|6Z3uG6a45q4u)V4PgiL0g!#M8YszsdRfQNBUE&M(=4{!Xc zST(|-n7z+tFpuCj8g10UIP)n11qy_q0FSn10p~{QnWw9s<60T?(~Bq=v!7)?`<`?g zFqz%_TUm}^Xc>ZtLYH_IUuNEqv(0g!<`Kv32B{=--f;M9Y(IJf8p3;5} zXL3sTvE@(~Ufu6`t`Fb(=MKvWtB5lece9VhEUuBggrY1^&Ko1UeZ(O_?`|%O3qW_! zu5+B~`A!3SDPf%!GghnwQ&&95QjH#noB^m`N{=eT^%e^C3L4`+lIvp63z zon$dNfuC%|Ynq62MW)A~=xc2B;qC%|{B=U(4&sw4vRUfc6@R{YH@CZeci#^lcQb#cAyei(IDfXY3oY&c+rT^AeZ3DG{qTu(;a(}iHB>=DeI1c; zqQGl^D8bhyaJdukxakmh%bDeU8v7=8} zHFHmq8)z8km*o?(7Mgur)`@*=RPZgn&Z87i0XoobBb%T-I73*h?#IG@b7fB6ZEXh9ie zW4EQ9E5T<<@cSjkMy?3^#rWQ0OG=PHbe zr5r9%<&rHv{(~e;mFLhVr8rlvNP3U|pbB4HEk*cbwWRVxX6Zq0N$fSwvGnPs5!@kP z>_Ps6N_^-ooFv2Zax_fM!WjC(7hX0_(cpp~_KzDad>?(Gya?ins z>!{6K@z{qPnv+|CbK~$)5pPc#&^~W*_~}Y1%@4tLK;48iM3pgO5o6u_b4lr7rcLsTGRsyvr^OqD(Bu~td9#ICjME*HgF#lqUgj|yx@2} zA7%R)_m+ry%%AGf=nA zxhckqxaYI5+UWY`4Bnm_xmj%g~adzX6(_!w;%tTq4h2bCz5H9`$ej0=|-U|r}jVUJ^Nly6x=b4R2 zIXq$Y1JFT^MyOt*h%}UXJ<#$0cVXFAB}tY1^wxDu3%oa46OlB-tGcjVaU{^u>1^hFPcT9-?%+1cl&+Dy7HEzkyMm}sD zSh90%Hk;jMLl(e1TV5Wv*a#rTA@dpAvqVGKAI_3g6*!s;i(7TG9MzMb@6GpNRxtbW z^ZofD%Pp9Gkx*P`lWkcxW<&GH_+FhZE07Hxq#YMxuo)!D22&aNadE{0NsP549GQW} z$s`GW1UpJ507TDWe+cPnvT-^(J5EQZ!ztO>x`Q~o0#tqphC(nTf(3=4P%sz{N21Ya zI9wFQIvPcGY!-<`RJFKR^?KD}mQzveEiO?@R4jN&Wx7x5)e^km#a{_ZZ7!f1p(3Qk zN=svom;*~G_DUTw?3dy%=JtEtUUxhmcYEV;zuVoF1^Hw{QYy5C&1Pg0P-8~C(I}nt zFn3Y3s3=@iRK%{EaZW{vwT$b@1lpB3%gPdEp->r?@T32_O+rI%M7&X( zH-Fx|`SY2secrrz3+Cfs-dyAXnJ>$8u`FQnE!Zgxhr@+ICz>GW3_A`Z2E3C{JAkk7`0S4uu`Fl0C7oR>y1Tnpbai#DT+!9t)wODM$7-hY zwXW*GPDf9;6pBkvZ?Lzghw0F{(9^=9aHv;ezF@d7)`v&T#>}oh>`B&=zP>f+G_le( zSTV^Oi>+A`TVr8M`Um>446I!@ux?wZ}@cNGK?)6KTE?e4-o6@?f_10TAw6?CgwYBxu)>}7@ zWR^`EM>gWoJ~D#i_K}UZb$4Ui)!shRj%VB#ANBdtao<=PTc5`l$5CBs^OjVqt`3jQ zb(^tl*<6>}lG;+Y1*=pY{}U8ZzD+Fk95Mtj21 z;KXgO2Yaw!6%6*c94-}?>T)?^eh&tk7p>*?`@MH|-PzrZ2cCCk7A7~ZT0OjVczDCs z4I4IW+kn)S$Xt2(Z9zhKtHok6SuBu!Cfn^dLE&mqEsV zvT*C*&Ovcd+q!jd@b0_u^46_ecMRUW14p}d@7lEuk5#)??Oe4J53F|W+_h`fs#Uvo zZQTWCZnh1n%Z*0t8K(c_hFC|mb@s%jepQcRK@$_%pu9^H&n#q|iiR)ows@Ns3prfL zVg&x*(S{7cq5p&OyrZL|NFnO+`SxVQ?w&nk(v5yZ^$L)g{EHM|av%_3fq=_}Zo1bM zgRG9Z`dqQt-oCxDy?gh%;%>Kl-#)D3?)c^Jar^u)l&A7AG#X~W3u zz$jh1bm_!0Ysb>1ZLQmGgV~6a>2qnlvu9MCm!mJ{V3x>U*ItY!oN8YmSRZ@$3N~@C ztMA6Hgn;TqShBNuJ&!y=DquhXsVvw92kTGQPo~r9vB~sUdaNF|Z(?F1SIgCB3#>Sj zt)CEtiEIJ4mA0Y?Ud{dk2M(B{2hddxC>C>+S#PmmiDGt)wx}&C##sxbL<<(xg)Hh@ z8OfL|TmovR4^5QtL*CglvbSVtx%RrixH#yFPUMZoyiC)};goYr%fS^F^p=BI^oXN0 z>&+&;MQ>)N-3R*;iM{dS;?gy)7DueA)ZtAy)Og&Lz{T&4$M+`Q|6IgSCxjegzA91j zM9vG%!^?8bB?m2*g96`p5Nd(Ng74Gx77%JJRyG>3;Cc>3qgb2S=Q6G=%0811M9l{n z^Hn924m^_%#`_$OB>r&t#eif)^jfUi>8xwcj;$E%l5&n3<%uY^kk>h^X6gBNu)+*ik3qF+!>SD%SWfeX zRl8ev@7{*Tw$|OPc+3~@P9#)UHQ4Rsm#s(tHLSHe^RmAy2s#!oFNgxGLwvLeKi6oLHW@;pghJw8q zn!UkLG}KE)dW!0y^o2qvouQK_ohMJ8L?xV)CqpMs+nDkv2@)}wNYvCgY8+@~+*=$Z zP__F-$-~NPxlbB#|I?F`ljC?!j*T5n9~(P5hAsXeN8|D3L(5etK$%_i;N{DGXg41o zSYh#v`Np)HgV-O64?#M(C;nx|Htr=!{AA%CAO6P1jzD7V@g2z(P*wrG+KLs_S!ktL z>2rkyPCFP3B??c5oC#c50xu*^CW6=mefR<24bZVXz9Z6IXk0*&FG$-walan|Egu?! z*I!T&3Ku{l>cl4?xK|2kHW`_7+aArH#i`Wf01kE(`8O!E?zcGU^=-G$67~dD4`4Q(w(wl5C zcUST zSdi>Tf;$is00MXz*>u8HGZ^Az3;oOg5C7l!V`-?BV@#N+m+zS`&u1*i=0nYcGLE@p zCnsvR57Y}nMV~`;siz?ZPrFW^Zb3G*eWL?QIG?>!!j%fh zA~>q4cGM)QC%PgSjhOxR#$2(z_F>7lw-bw}(~T%j%ph zVTCF5*fFh&CzL0IW7Qv6ya4&A2Nn)gq1X3Vt*kDlJVW(RUSt7)hnaQmOHDdVDFbPldfdKFw?7A#-SeiB z5at?Z1)i18N>YK@(c32EeBuh|H|7!y(_mpiAqIXy0X&@r!8y40S~Mx>Y@kzp(=_mR z^e!)KFt6KsPt0>y-d3MgOV|jL1sBAtT09Go(RGR$M3e~Bxu~ATDm`(wPGR07(YBNJ{;GTig zaF5|D?bDBEW|A{!w8@}nw9^Oi=sDBrkIC_3wV1wRQQojbilGug+gy%~aKXlSn?V^z zu#mz2GYfqz$*>r_{zq^veSIhkX`8rW=5$ct1Y>`uPNanTFGy8Nmatx(#4h*+-Ks=sU z1=Fha-h1zDTYqmGHtXBk?p=>v2qBv;4~s4jHs0b7R2}JXtebul4U3$yuYcq#vl$y_WhgX}J@7Y>&jhGDCr?&7ryo>dM3$9Rlu@=-t$?L} z65~@q>TRo5k*sj$qAThrrcZ;mF#!w+Vd{&_N*dZKEG8s#X^!ZTNK=n+HEijyME4Ol zq&$fg-79e==#(`8R7#3VyxtN_>hX9<>MhP^b!gC;T`ey9g;8v2Ijwxx_?pWFEqVo( zkrgZMXdijtwiWGojI20!Hg)b?YSa0%XH#cW0DlYyJoSX z*m&BW5U0P&rKi7+$nq1ATj{MAF6_Mf!reQuY~8wZXaC(hwryLrVOvK=5!|+F)wYHw zpFm-{*|gY@8YdMHhzw1o*PH(m(L6BVc$N; zT;%8QK$Ym+=h^4=?qlq|&Q4cMgBj3Q?1-Iqd0Y-v^#B6HW(co3U<7Z5Xxt2Y_)BYe z3j}4x22R!8sH07axelWlR+%V)Qur8BFA1>Hl#eXXCotlSirJK z+$@W}ljp_^0l^LyIHPAN2<6BsU?7AFp*4m=g@wU_P(g?a^A?19dqW}gP0Vt=1rVOS zVQs)13Kj&jX(W%XBSuj9Kz81R@ry?tc+#`?NBm_+KZ-n6L!*g;+W z9A;{S@_Zm_vY3#H8@jccSwbYR;W$(zPI46H6Cdwrk8LA33s^v7aDU6HLEiM-^3s(Zu z%v%!uA%E!-3U#!#UAowINucJ|Wv#2RENgA;XvMNxTiwbm=GN7)PU%iXg|z@nwM7yD zri#ao9#j4-P5)~83w~^j{weWC)0wj7z8Uk3sd?MwXBe0V7 zu#;h@LI%>mEN(pvRWnRhdfCFqVt$n1vWG&j|%LZtf;6Phf$@$ayxu{ z9QM}n<9JNfHPqH+aLd|;DIhKlsOrF{H`0Slhx~^2x%E4(v8JKltFH2d5u=aJu=S zhaUQ`haZ0Ep@;wLp|!ZP!^3Usf%A2AtR8L~zSP}4e5tLwt-JeD+oemx-CZkJwgVXK z>S|xfvOigPC*ZJc+jecefYq*D7x1{S>++S$SFT*?zj9^m+I3g1+=49**Y)p(_f7cNDmPmrp|5*i471ae0TkR{2#ga@BW62muUR*-i2b{SC*fW~0Jh5}@ zBabj$4J%%Br)E~rILBw&34RX8~WFhJy+7{r zs(u*4s^9JL`RlsgyYf6(D2LurRWEK7#vE;dPb?4@sJGXID-MQLx znLTW3Q?P$hwP&%^;ZeIkqkBZ7uyYRp-8ygp+6pbohZ_P&7m~>D-w!g|&ymg1D)8)A z>?4G|TiIW5sNssDOF`D~K?+t?!6>OBs|n1H94@K&O+hF^hkzI#8aYHicUAxaIs|Cw z>d4irS65tR3e(G1ua1n+ho;*YSMunikB;N-QNTju^ohvV*9&qG2bk3B$6;LUH3l;- zH0Y-RB*6Hl#SD#>ol^7)xJ#DIcb%FGvy`aNV8xY0_wUzk=Jy})yCP8wKrahg$#Q@m zQ)q>!#tvgwrwcGGpbG#ar%zq}`^A#d7)rU&dkR&0Ti!-A3@IQA`heaIdEG!MX_`1M z$+8b#9XNG{+-~ai(r!IX>UmYAqzC^^xussX7<;X12~=D$0Lciwe5;aif*pdR2l=9G zs$eu2;hAHG%fFlmO-7Up`SdNf3PYz1t`&OSOxN;7*gUDCoGMHO@D~}4s03%!=>d=B z;fW;EFXYx>qet2$BSCitB0@-=60yHE7s;EDn#s%46b->0Ek)%wr!8a#?8%xic5PNpev;g`&1#DSad8l2b%d%(5cKUP1 zocPGw4JRM42xl^h-T}BN5lm*Vo8-jro_6A;lg^+sc@ok^gM87nYG*Z2#`5Y!b)v%I zbX3C-$G@tp%bnDVkmmq@AWF{$#OMLj;97b*prWmT=3A-9fuL?CmLQRU1u&@fAS_?y z#eirzXko65=0U*UWSHN2 zxyLJJj-G*`2f^j` zi~)T=yNe!QN;zSP%_GF%v{X^q~Q3<*$YfjGK3>095KRC?fLXk3If4kaHG% z>r1?l!W>j?7fI^Tf`b+fE>XVr1p*T`S>I%Q${0sQ_~Y z11bS=5P|O@Tog%^Ie&YU-n5F4;_vSg1dy$7E)XH!i(I+dIVk&0^8m+{I>B9sQ(2Ir zVf*4B;ESTFj~G`<@5s}~tiUiFr8P6yf$~^WL(jNnXn~H|&*_B%XTL2Na>A-|0*ORQ z3@5!SiYFaaECFu7YqAW1SVLwbe#ojh8sGt=-`ks^FYcs$e#**kZu4Q z5!V5xnxgn(hLi)sE3LJ3!>4&Xkl+}VPP0+Y{$tbvfC}k)ljs(O@pV3cM8M zJ*YYsTBFd;e1?*W7Srq$Ehx%l5;jBAvS_!-IN6Fr_wW@Jw9U#V%9Q_+(PQ0R@T5QW zRM%7Z?rxS{^OV-r{Zx0?$Zf+T*REY_M;ZcVy)9A{jYb4!h4;577^b(v6+Q4T;$SMB zN<%|H8Skl7eTwo;++pQyy?JUJmjZ7mTug^)i}gkW4>c*@O3n>#$G2E-r7a^o1Oi6?iu{v?~U!WrY z4cWdG(~U{{77^O8XVf<|qz(;y7F5y4eM5d9p80%NJFSk0@PqpgS=+C{P`O595klqc zt}bRZcU`;Ib&#|IAFMe{87LZ$Y)+#2pb1{RgPLKAaRUv|e@o&Os)i_P_Jp=lJ!musM%>m-l0dIG!A#xDo};+CB&ot}tnNLn;*TCzWLUGeQLo*%qWz8) z?JJ-HGNbQm`yE$DR)A7Kpdw7`NhH|?O-fLDZ9KpuyA{s#33z=cn9wiip@cr_OG6=jv_8E#wR!XAT0HAg2r7pi zjO?Uq^D}+_aa(5neWVd3pFa&!mNf@9GMsIeoNPVmEjctXf!jnAFmL{1vjS)-EC|g+ zrt7!@MRjD1o&`k_ApY={S5`s}f)`dvcbQ5~R>A~={0ZSjnsP^=3HUl;#g2BK(FSFp zG47_@-ELg1&(pb_-Y{`0y%;i=V8V^l(inYTmH|O)iqD0+DATr}jg@{=41|p;FimjF zIOS{kOdQxF>bN}nX(x>!#l`Hx-!{&6^YBZr%;g&zkeeg3-W{ZW1%2?&PE8$#tCqM> zaO(2fb(cX-S+|byn3f};I)Qls2RxF_y%&?=GARW_%k@#M!k5N6Ua>-*d>YZ@RuQ-Y zT@O_3fg=y-cVALX;z@t=)Wnjdu4Jhi(@K*r6_#c-uO{hkH`Hi>?;C^)tn?`EZM(Kz z*tKoj1v-|?T~NLiVsB6UjX#{iDg5{606on;QDCj)iu2(f`c}ROHGv*0Qb7_a>WTK! zjXdCEbi7zpiy=!3K^PQ}=)tWf9c$L~Ig-lGJZ=rWTnwdn%p`dEk|d;d>EA#x^Aq%z z9{rdG?F^Qu-;Fg$5HQ^`L zpznLT?_6~+ywJ*UnC>f;p#J;dl}@2@4~QM1h!xB{FrLu2?4@#^EgT}nhzZbH9D^8# z>P8Q!?hugeFeVL}ioqSoR6rre>+6rte$d}=yuM-NeC@gO=g)6Ee}1I){Py$PYc~Qo zo2a6)II^cK0pIJ~xuICYjqQS+CypsT-gT7 zcAm@Ua}3Id5+Wp#_!E`$JrsJSv<*X{g0c@!0ry z=nlLTaV3t814gS(YCyx2)ksHdt*(YaT1x+nb20zZNPf(f&Tf*ymkI;zEGmlHOW-V> zz6%&vb*b`l1ah@{OMM-EDwjUgU@2w@yw1LSU>v={+@ki$Fn=uvU{zA z{r!W_JR{sETvq%0;iyLugla^<{-hAGAQJT$m8ZRME=kJ0p^0zevh4Qg0rq?9%&!OT zu>U~OeoSyhFuub@;9`cU(#l2c1vW%UX=bG|%&g*m%n$8e)KSpGO3%)oRhqN24<4Mz zwt%n(#)@Ep)|*S$FmAjvc?nQG08@G~oV+b1D76jq)Gx?jetG>lzunvl2jvt3M_}AX zBJinUgjs=P!y7(uLI$Sor;psC+i#m*165K$9QSXt(fZ#mpZNnb0abl4LhFpwYlQ!K z2qBA-1TFv8fKTzM2uJz4O|ZJVC|si#5rb zfqU>qy6&gTelBm~Ya&MNZ)<$;WaYujh9tPx1Hj*fN@$=^Qm6aP9v{#QL>;$+l**|?)1TJYR+&Cfsgd~@@2&Cfl* zsJZ!t7vKz9vUu?eUwPpxiwh{O$QidM;W36 zfb*HrYixk`{#HciJ;)&FmfACgH*&xz&Ji*^kCR|aoIF_|7}Nro+aMAuYbzqyf=LIm zuBVgER#~xq^wBgmNMafra~@-#pRl*F0Eci%ms)((#7DNP_ z*z`}#16^(|_WrjP^tmw!A8~{E;XdLSXL%^;^`r>qEs~2#b_onml$QimL8sH`v>9q| z9zAKN&vTV8y!ejEs2SW&0hvUD%8wA1LFSBQEYUFw?s{(}4JUbLLdYGcqvEg#?YQbg z3uO81Ptd}b1GEhJH~G^o(-j!%r&3PynBXzXhtB!21gFj-U z{{wt3p;aebiDbwD=9QM9_e({mc1HPy(|yJ>ItrEJ3>6q79?b{;Cx|a&M-U%5SAyE5 z?3Cs9_G{N@kIb*UCg>7f?Vyad4zFq*#vk?O^Q&4>Vj=>@(m22ZJjRv62>nkX%@$HP zU_Ay-hRi1B(AgR*Y8RL+2ke6}x;17tMJ@0s+H1I?nLkzlrVNG;=*62Z42XWR^yCG;3+mXo)nHlFhrLvPEG&uu(sP=02mrxKi@ zX&r1+XWS%P6IxQ44${NGW|Ht|0(41K2X=^;zo|TA!IY~Mi1ZmCRI?;Xu=jqF2U!5K z4@u!*O*YJ-PgLZDkdy%hsr|Po_G;BVPVJvGXW0+drM zGT-Sbdd^~nmjZeh9g)?EY_zi0LcXB;^l9)?T9TzoAnFDK!I6xWCY53nE|r#5V=aRz zrKf+{1-AYm@FP7On|e_3tOwyl%bh@h@(GAp3&o1Kg9s%%0|tk-LmWLbO4nuBi12#9 zAV@V7q3-6y+`0@l2}+)JbMt<{(9t42rUpGk#erzpWTFdsRAJ`|rUSAV(hBH=o`-f& zk`I9neCPCO6fB~@Fal=wS4^Yh*QP7wXa5$2yBqn|m=W56cI-rWVM0j=ksU>VT5 z3It?M(QBmnr}yynkJ6`3%>UZB{cKQ%&$7@j)6zV12rm5sV9fGkzZhE#D~SMCTkebBiV9YBdW+(7R?{<3ck>z;r6GA(()^P-qXh zg=UnLg*WP>AYHPl2Kc5>djb7r;2SjK8mL#Gq8kI8L3zx^IscZ?kA&zmvaIpt`ICH1Q{sA(=^&S0#*RKy=XRN0G`i>pfU)+I% z!L@52S__2jGI~QbBGkCMY0UT9ww>SzgMN4dE}#?J?mmIt3j=T$t-AsW__~2BV1=*C ztl&ceE&NLV0Da$2{{~3FAzOkw1L~iH2&13N6;J@rpF<;^tIfPH(aipdAqj+xk>)}3 zUNgG$-DCOrWA6M-&G@)T$&&RpBoMS^(p4gOk++3-osETTJcARwfo?YTK*Kzq0{UCu z0Kji-Y7%R$AvI+lh@++yz9UMVmB{*bDye+SR|2Eo(g*#%&y(z%E>RQeY3yphy|Yp4 zD{@7vtJBq`B~efY!|6=Xx^NLw%;9u(I!r4?u{xcmqHqPA!Q0#64Td}T(4kt3&JEEF z5PD-B^s_P$5@a0IDHp>ijie>DLx`d{8G{)NbYau;;4J>jCZ`Xlr#gSB1Q7~Kl~u^I zr92B7jX{RTB9~rr0Yr0riV$1A-Bl^_B}Dc8zJE7?6( z9268((&jpL1gM#%6#m=?>fCS(VS2;g!+F%9ehF_quA&eYy3(J*n6B=GA0DOj;C)S& zCh1$ET#CCwf6AkRIdAU=#O01Vh1@~j3|GHE$cgxG1E5=^%n)?W7ezB*2b75UJfB%8 z--ymFz?U%M14SllItd99n0)|6mgb+L_ZpC0gLamyr%qM5T$;}|T*#kdWqM|8U+Lx-{1pOM@Q@Es;%Fp6Rz z7vSbTE}=toW~~L7RTiRexFBu77zrhnH(V;_iLzu_0=b4o0OEABXg&(om~Z+aUwX_3 zTCUHh0Z0||J3X^!tbR-Z`R;+`&H1*xEL$FaF;7Os(0p4UFrR8%oQ>(tf%#cBq|&G& z!Kwre9!9II^iq`G%TtyXODKGFa`EE`1q61*ofL9Q0Jfg248ao#ccgMtqZzJ)M0wGF zn03WzvU=oTOQi9GjHsX^>4UPv` zE7jHTJyhdu^nA5>Jf#6$dLkfZK&HP&P&ANFZ=qWxK9y2#l`v1$Z2@>UusTC^qmE*} zu8vxZ-9QZLQUG)*PZh`O58MAxV}=XB;T!M~5OySS9{U@=Ugx{dT>iw~*`%sCi!j9Jf}LwtadwiH7ln(>M@ zFF>VwzPMOf7O5#N_NpzhmKJZUMU8cLQ$cab`tJ4XTU(d54ug+HuN6Y$lI>k0<|aY2 z|5*+-<6C}6a2ddbWdqRa_hLr7>JmYiC6r}@RCi<0+lyh_N4neY%*0r9w{>;XFY>H+ zA~a;Vd%FV%w2S$MUJg@?fk*h04Sk{7(6%Sk;dEkKu@XAx& zzyQ13S-af+)KlF8V$}Jhi!K&629q&Yuq>7=b0l5KU@VyorJ#xT;GBW!*@qk;SE{a< zG6zK!%!9XJ!Enot3=YCD8{F}%w&PhkZ>hn-vp5_cUbb}A@aom{hcMSce+%CZSMjRW zRZH92maRg-LC3OH8*^3LT5g2ww5va~ldP(M@0D)>O3r89%~Co-9GvkQl1N&B>N4_{a4qC0v4VsH2$S|3te~p_ z$e`&W6zhg?Nu-a`S4xO);ErMZq>n-M8n<%A;NEjCl$UkHXuKLh`8t%d$+-Fm}o^C1zt@DzA1*YPI-uy&_sY2gbSXuTq(txs>HZYIf4}m$RXngiOqb@tjglqy275?N z!jaSyq=O#eBjsE!-E313lJFD?g49}1_aVNgZ@>-YmYMtd5K%K-ic2v25c~s*u?r3j{uwey^dpC#7qxIeau&R787=B4A9IqhK2b!5gTUFGr)Q3z;N2P1vF! zr5nPMkf9y}VZIaWH9@%bHM)X(EMv?ZphGC9te6haYBzo!VW*}jRh7wRMB6Ca+yZM( zrC`X9gB&+rhwarnZd-AcYTWiq_qb-#1dCquX(Mg!?Bxe6Xu`GdA zLceZSn*2zyP^ug#P;NZFW0KV~F@HOVH00`Z=O0a=}Y}PqLOFA}?X2X_+TU z@xk0|c3!bjRzaggb(_!CpREVgVl#N^P^S;;>!Cu8PfdYVoePqB&O{D1#DM~WW2;wA zqZBPtUD3hdL=XKT3NI*}*>uLB)gvI`z}T6AD!7NwxJTV?0Wn>pXU3Gxu%vMMZt$n$ zbQhdCKx5o-ADIh58|-v57=s{~#QAKVr|xp(ul;@kxVJ@?vvV|_ju_!RLbM`uYBT;2 zw-pJJpOoJ$oDRXm!RUh59&&@!InZN9=rR;*mn{ew2{((O6c+mwKsZ~}ooMB79&jZBVTp(D?et%r^(-LWO#{7WGj%<@f z#49og*LljE2pz7aSF2?>C7oxXdi3_vU*-tE5_{nzbh*quh&=06K3tGN(ia7L&Wv`t z;b|W|c8+4}$)^oY*>mPhr$+MFnXxhCVEVcl;O)MBOuF@H_D9;e(7b#( z;!>dZ;o^O%jb$&S)B4*3f`rk`uVIZ<$VWTkd=#=YV@h6!@Z^EL6R5Q0>?x)^b1PtPG`PEy zHaH?~cPE4?<_WjoexHcjt>wy?r!@Mz-oDO&xCfE`fcSakJ5{jsB)S!_NrssM*0_x} z0>%?ScUSfpXq}zTghB78^b#J%{38xCj3S$es1%)1=}!O=G}1SWHPqJ!+#f3hBduBE zu>W4PA|wwXuXI<98xg+FLeRJbiFbyXof>2__)GAM2=i%~Rn9@k8lhk2E(VeP9tV-ay(wWy)gjyg{)onjyr{61PSB}9ZD4UXI(0`GQ=VcG_;nF4x zmo0Q5hFzfF*~1SOx}D_+NYkp5v%ln$`NK`hm4exBNFE)lbueu$64GQMyNju&9#H>Z zTSToqG2z)UKuvdu0t1P09w0z0-R!E;GClz-(4U(h_G?9gDp7bWFb4ZJKh zNiGKH!dinJ@St9asUQH`K?G;w0&MZ67;e~dc@pI@`X9stv?FlZzW7>ZTBCo~;pZ^W zRxIHYA!X+rv8*y=`74Uu$ncp|C{GlJEp7WPvg8HJZRURv7mlEBoCmtN{v+R;U?v^ZNr{K_sZkdZ=* zfztpQIp!4+x{g@4YEbnPu~?!e)M{Rcw!S@}sr&BxoRHuF4qpyG zlEWc{a0np=3=kl44UmwicmqU0Ks2BtAgJIC5LBRItrx0Nv}>y^c2=oXXIooct*z^- zu3oCWw_CT_+t#h^F3;9&&z^1XC;R(_hnDcgH}~TDOP(AkeXBF7xVlEF}hMVv~dY5o{9rK9{~(#CBlH z8|Xu;2+Ww9RX9Z;2;4SR5B$v00xg(uJ7WZ36xrnnVY!k)yD0eFPb#J5-sSOoT0R>s*Yb;t~s4fLIyh`%P8_bqBjmN|o$($&Q9bs?Clo zauXE+p9@(b_)Sb9BdS64SUQUR!+LG3%=9sI+k`dsQKy{Xf%7OZq|<3CmMYv5q#>p! z%R9=^cyEg24idD957IrR?b(;KLdUZ&;!(Rl9F2#Q^;m)FjT-c7=FVrowM&BJO^srE zbBCAlS`!2tFcfCaWJPgYN?52KZ1rX6P2RR}HkJ(oX&S6Vc>a}DMUT>T5O6;)ITKK! zd7*$ih*@AwhcHPx`)fIUWQpU!#)Za0T#h#myOI(|8|@&n;D?_#(i<__eLbk?b1Eq& zW4MWBFcSS-3Hho}BPl3k!!v}#hYKlbwp4W30489#TOSJ!Q>?*z8OkCM2N4hxFzs9l ztI+ALPOOFLQZbhFe=DA!4V$Ppj{;o;rg>Hn`%$O^^neOj z+cU9m0u-X2iOiP65IC1m!?nR}3QWcd`k9?S#kK;S4C_;R$uEEjmSK$mT6i7fQw6jn zQf5Jgmk(2b*@ET=(L3REHjFC6z$I)MyqZFy0ELY=XV38BeRQP``9Ph3s*7qZvwDHb zUzkq*N*xdTjMbTB%mp-4gRSWgE?PfF2tp8l2LhOu{v?8Uhh14tAxnvZYEs94@KS6hWdV+-CKJ zc>YTlaP!J5&p!L?E6+an9PUj1jT@%2Y60jAqtQfz;b{5%U^?mNa784}2@?7a573-c zz(&xl&nfs`lYx@W9W6>Ay>dSt zX%=vKk<^zUlNiUl)r6#4klMPDK!B6fjRuMpJ;Qgb2pQ9(xFmBORX-K-<}GdyTkB$( z%4E29V8H0l(ml%!u;W=0>Rcsz_+(n1mE=&}?)qc(05Mg<#a(~w7|0OyY_375tZb)u z%24)c(}nsgD^U?x`ve3-9)F^1Yga*M0gE?CcwYqt-Zrj~Ole{vYo^@R|nId+T+ zy+Y-&W3rUPRniQf(z~s92%HNT_IbdJ=-YOnZ(Cy{(o%r7;>~=jCq6wcAG>&-GZ)}D z+>N95nbsPR`ZA&1lc+F9A-$kSfR7O0{Gt`p&=YZ|MoArn%uhDQ8YM<}ua($P8*{u?J@-!?fmxnKSyie?~ZA?h`8~dk97Y^{Eo5A4;P9i`iB%fWX+X~8?5*-WKSs$nTtOOGX*qqlEKnnz4^(JjG20gnt(qW|>2fjsF5Tfci&2G|AgDEGWikr& zXX}WJTon`?>g&$cZQ68h(~^2XhnGN;XGsGbknQz&w(ea0xh?0m%ql|Yr;p`ykd$Ee z?Cy||2Qt8eS(pfh1QbXf(1Dxv0L4eLS7IF~CV6vmy~R**ano1n^n=9^=oqTzdgL!% z*o$}YyfrA((hDxh(LO55)b{P*Lj)-Q&_2IoO45$ z;LgX~gf1tI&8N*0O-&Ep|7Zc(K#-&TGqvEDOjD&4XL^1H4a03KJ_C?WBme+MAjitU zW4d4%T5eB)HWgxYdvr>4>ayfz)-Wj%GnvE-X~a$&GXG z{W6l~=5lV#MSu@VNNB_=7~IIP3QmiNflFu%eUp!X@sn5)0xg8nv50@dC6=D5VHz`i z6-9>`w%g<=#Q@;85d-MrGHg`mYjt5znlSa(j;_Vi0a55)4}Lu&tyu`UB^4-Q6XnmOWntP(Y+D{d!KQq^ z0j2<7?k9N(X@y|iu%B+vrqMVPu&_{)L2mKlOu&7DM4_&^^!r?`-O3J-y$K&L zfI!gXXrhO5kdQ62>N)_y0^ELM7T=5dNw|kgWKt&QP5MdFbuc(kBy6bC=Em_G#U9W+ z*as!rfgVb729LMrX?wb9i>g&sY5*3J>tQd6g1TGMX#ktFmr_zGI+qZ4<>^mR_n}WA z=m)wXE2nL_gK8hZh&t+vKy~p4PVqs&2KW&9Un2b*`uPd;>EfgwMD?h4JQg;Yj%pG= z7lq7Ww27o}Fe!#*LvBzd4mCW|gXtVf-ML!S=6Z9TlBACYn$$4^0&1%#4{DW6c4m&r z;c&!zu>{cPc~n?}h7DCW(ws&tWy>;fc)whD?9?fsYoc=L7jgDe=ou_Q<6y}tR04BF zR0P+_{})aRq7|fSK$qHBYXWCChUo=hX(=)t#YsC<)kLiOLRxCv@C2au-fW|hp@$AU zehS@crq|PhPo`iv---<)b;eED5ZldMqBo7?SPZHqLS)m0+lK%b*8}hXb^twGR)<`9YKo;xdZbrV z18$xaWJ@KTC5OWhmPkcKpf8hi1twp3P=}^iM-sGVI)6lzgO0%CB0tF7@aENoAo6nZgo_p@I0kNohm8Wzn)Fig1Z6)suxu@ zT3=uV%=sKt(axRQM6c#M&NbB417VCLxqb=6V7F}I?^s7c-YNzwMlHq*1$LvPtDuVy zk=8EhDkw-YDS-bLRN5C;D}s8RBF3jL1) z{Tpu{eObcRHPIhR^f}0_`u%xg#b#rn+zqu4DMn4P}l?)Li6SQAJbn1E`|1|(*Hs7V)8FY zIEPmwrDwVvJ;2K0m~#KgM(})SI=h`p^%ase*$X|N=Zx~#B`Q?8pusb?zlRPtNs!_h z>!#}tN!_n@tHZ-wH^7qs`15tBFw80tAmu0@MHMFvp*)QFW`?PdB22}(%Zp=W=t#s} zt;d>)G&({TmPW}kggP#)djE$vF$9nLaAQ|;5AG9wFkQb*j z0G-{pL&%!GEu&Hi8ZG<*`Zg0Az<~r2NSn~GaXMwxhH&(RTYxAg8_WaEnYL9?+-!Qe zL_%FQ(@O)9TrocG4HmAL?nbxvY7qzf;;A-X>rkjHadKubISyg(plpI3IcRak{1e#s zYpSTa03Z&rQUvji=+#02N^10vG!dZieKfxXwb8HgwYdA6d~PGc)}kQq)|ztWU)qf& z@*^tVJnPCOW0<@tR~N+_>_A>d?Y7})+l~J*bT|FgCF~Bh@iFLdY=-m*dugHkPz1W> z%Sg^#NUfxG7vF!@r0?;9?hGxdQ!uy^b6llumJaI&7eEr0zkj0s6mG8bf(dJ61yR^+NYR$^9KD zyfjMQ=?VP(3_AqKL*a4fMJ`AG7APhgn8kf76o?2U2kB(bo2X}{{DgyA;;lHfNQGsd zWO@YF#0Z@if-X$XS}86E5)+f5^ky7LSD(j8S<-{MQrSg8eQ=jOH7(U{izdxHC$!0; zcY$xZYnSbyk&Wdbe*t>uAnNUc@t~7MS-1z-E5*8LLC9wg^-ZUim0Y^9G8)r3E*&P= zaT&nh-!J2!sR%TB+*bPCqDUUf?q5s6u-q0)f3HH5OIhxv`9=Iv0kmjJwIXFx9-xOU zw4w1pNhc_=1&2F}4sSfXapU2sJp=Ah_f)qVYi&=@o^CJ#rp}*_)HnvuuR7m+{(NgQ zMEoc=Uuqr1eM-cgRy@OgCFWNlA*!s}QdtEJ!m6q*5c;gV%=1-^LzgdKZfwN0ZwQw@ zJn9>wN;6sp!y;<)xp~~4`^ofpv|JD^B5oQ@`W-h)m*eXy?B*uc_ueScU-6%&=rNUUDTq-AOCecD$RxsnDjn{E4lwD zEkS)>=89)68GVUnnyGXKq+5w@q;NawwG;(C1?UCrzyFj7EcXEY-avDbP{Tpj2p{tH zG$KV~<9Qh~hKZEHXKu;D!7vlUhhjT(qc~y-=^VL2$FJE%@MNTS@~# z%)PF1QiI}UjGhLPDY;SPjr58jTLBD9F`xJo*W^7aPm|l~1pz7=-RTE|X0r3TV`4 z{Bs&M()15Sz-@qk%4SiKN!yclZ0EU@o%DvAF1aV~0D1C#bFi`#4w--SX9d`kzMYP} z#t@S2i9;yi9SwO%N2{BSPi7#Le>xnkwv2eXLKHySE#<~%CxiJccVq z5)M_-D8o$$+_fBpmC(>(K)rRiLR)0Dk`$)pl9<6n?<|voijP66xQYPY3uTDL#q>~( ze4s{Xtf(MkjtF(RaPNzttaYt>?6GyYQuqw*V_k(IOhB$BZ}L#UN()rz?rSKdi3@4D zMjNd63&0ipbJ*8K>^DNo3$#5R?`oh6Zz;(Ji&cQJIP2ttLQ3i~`B`&mGw zZHnY0XGJ*C>cWVP48sP1?$dcFB`N^ltp+8UJwlQrVReE+=a!?Q#9mlV`$Yk=E>u&= z&(M;A<*f)-01|WPZHE@;cGZlQrK5G)q@D7mWm;v19ML5y21wS*=VMjyvqi`)X=EA< zmY3g1fr%OA==FHgnr#JN8MOGTW-y%djZpH+!`iv#dB-4A zI=St5_`?O(!NI|85SM_W1f|ykvyc1tgCk$wZh|;4{X7-Z;`>xOV&d}YAE{K-j^GL$ z{$Hm}E=2|N{EB>_b4N_wXf=BQ)Eyb&V|1aXy659--u$`q=ix99cjwM~_0?CeymsaF zSFc=o>FTRLdFj8h)+l9akpA&=zd#3hYj|*D_rC8!S3On;gI=Bv{%VMFQY0Wq!-CcC zKGf@=VGx&-2flYY@LZ6JiO-FLU>G#lyzxMh&78oK^KyK}3r zs@PLe@^Mg4j}`v{!J!#YGG$|(v^QP5e7SL5ED-s}jvXPstQ~Be>h|5Ck{)|_DE4v* zqE`A)FyQoFa+{IzyyYQ#I+%EnaJZI?w%=$pdq|;IJK$%6l;&Q?Rj-_x2L$2S6~n3m zS&1O~m=9IfRe}7oc^%tX#;uFyhs|))FwiZSZ({iLrUY^7Nz>WiBTdk}TDA;x!dO^C z3#S84SUihrQlJKHOpznvQ5~L~r}yT0ti&?;G3#cx@ zEGdu>K^av@ z@0BOA=p*aovKfTb_u1MU@eU z3v1~Ww65q{I}QgTSw?`5p?hob;7+@WCY}W^2l{PSAnj<;-65r2p0Pq}5oy6jL}lb@ zPnx3!GX%gdc|K_|0Ne_+-f*JO&o5Mhs8V#;wfb;sOk_Wqqd*Hc*_OP_D7L!*)mjFX zCG_*H%Vs!eU$zizMSm7cZvr;NT*l@^jA{sg;F6h`q$VkuCM78;NUWiSegOiT>`l~Y zVU!#zp?^5~Fjfi(gC3qwKgoku26d7GfNn9cU#vGzg0Oj7Dy75-xJ3ip&c||gHogWh zXNnQf(7LfoG#>O>;FjpZo8>rUI~Fu8AX8BSg#+9)teS-T1@&Z6b1AlHz$hvr>E~Jc zAgCLf+7~cNQ8yk8qg}c9;1;wqcngHkOBSd?8Yn&$DV?$SX=uzUmD3n*S<5?vZ8*!}kHQI*}xX>Y&I`m%)Dt zPBV%#WJZ``W#=k%p(1c<-9QHq<2UNq`&rhVfU@m$&IH(A7b2$4MCHL5;91Mh=}Ehs zIgfsnNHguxJU_*smB8y97^UO&;?yW=HmBPb96kCwKW#d?(ddBj-|Kn>&B0XMv*s`CJ*jhs#&w4en# zefmr*c&x6ZfZ#-D=tU>ZVWKxCI&?Ub{IlW1&OWOIL3}sc4OI?G3w*7)j|_Atz^4D2 zh4Ax38-0OHZ8pv9LNz5aau>=0=-nsng7JeIh5-K$BF(XA$7b2@)tFBvIBmwSLTGdmM<5Udmofg6iG!VfbzFcR!UWrEeg!T z2W`8fqe6FwhNfauj0$Dj%f;QeOa6XuCw&(g6f{8h_?I1=;cF{>B-5t``UOH_gQ!cP zxr^>E65vHiKXO304ycs*i?A46j1UcAJhQc{q@Xh6bozr){?1I1rJNNgFHPHM0$e#$ z*zeciN zlQps|AmE1w{86hDpp!5lVL%^~WijOf@M1|HYeAK|vl&>blwYU(GUZ+nLze2-L$k^D z;DdAtED}4?(4_Yj8yHm4P{9`1-XN{)7X@0tqYNpm&|%V1sxB3psq}wKOpu`smS0j& zjH`GqRUeb8Po+nqC?dv)Dl)}@^vsHvu}@}larYT=RDeIZELax<(rtLNlCt!j@); zP5K-CtO*8r-=+dKM6vV^v1WxngjyzjO4O`)!$ILu0FDS!$LZTS+UYatv5gGqir5B> zw%6OKpFlBxBZd8MD@o;A8|Xt7T=JU+1Pm!f^j$ue^5tjrNg<^b3~!{b3sKShrckV{ zMRmKK)b)_5$y|>GhF#OM(=yy*bts<&>%0)zp{-3?ZysASXa&K@>qRdmFYC*nVu#pU z%xl@~nVj>@1#;>pwm1fB4_)_Pg%ktCbEk~AOz02%T-I*fD4RE9ExAKrOMVFGYY0U8 z=y$V_G9ZRbVXsYgZhnvNu~>EO16-zg`Akb7Z|8a}v<_ zEh3MSv{r;1Y|r;}!v3lJKk$XYC$VRY8VM{)(UwjA~6mwZw|0T_pLL_~GD z2tr9EDmuxyxC`iM5mQ|B4xrNgbq+$t<#EfGvkMjhDFEA+FK?d%y{aEKAXdv=kPoek z)k#o>gVzEo%$>Sv&W!`b8wcv@wp4DZ1F_-B6h|Fyfp*_gkLTEPDfYU`y3Oa#ZSHC~ zSIK@l7u?LQu5*>=>MLJ9v0}xFmtV%^9cNOxz48i_B%wOO)k^^Lx(iw7biC0`DQxw0@(Eng@C0hMXk`gNWU?2t z?(LmNA@B9VHtec&H0Q z&3Kv{(2!8lbV7kEbePV}pr07E!^3nm1K`p=ix!d`7AUBM(u*yKzh_#4VB};$hqlwR z>p&>_oC^izUNVFm=%>+ucYakwAEpu4q6ai73h1OyK?iHZ6#P#SMYX~3NJ7f}K$HoH zN}K3~64Pv-R`kieTe#pLE;X)44vbp9{AWAnI!tOqJQk6C92wN#LSEoQij+_!Z_6O~ z7jGV=_(TP+TM(%RyM` zq&g?XqRYs(C38JJ_e?zlAfp)(RBC5)$yhqE!pqC51;E{?+C;x)2+w&Itn$0?s@v#zQ z#Ei)>9I~>j7RGJF>3qCfD>0ft!~_~8{0ey*j%H6pn}B-n#!PXe00aoUyW}k2@<#~M zV+71y32HjcF}{Wh8!t0eqG-t_V{CvGZa|M~&(tXSvhar@1Q9|m5c%XrhwCDF5mrW9 z>49}pCpg<{BSW=YWuUxhKGUKM?PCVsHPAT#^N7O(u$k%HxRJdOkBaHnaq`A^ZE=ab z&$12)LN^^2kR7__^LvHvJp;0@1w5RCj6KPqYc@bn2i?d<>G>G^4ARGb`gyX5-rQPp zY}Y>&bh}u~daw-!P13YA3!S;ZC9tzdz)CS~q~W^f`TgXPbm0(tf19jgA>;=O!B6BtbK$vXY&OQ_taERb|zZ zhO4n+0~C_jr<@3#Z=Q7^*gw-@|@CALXRu z;FiBOD_E5rLhZZpGNhPkwpqD+c?donmrEWB18L_m7hPBcxu8ds#TC``e@1f5%5Q6{ zfW~cKBb+)K;n{(Vt?$3?9lEOz34EJwVm5&K!zVDZQS~LPniIZLJ3} z3X;c*+Ul^DUlpeAi$JPH(M2!)WhOnnNDKY(+-S;@=zo@Qaq>6QxrO&*=#SH-g{X~B zqs3(koZNu41a=G1EHIVm?{TwY@kY@QUQVw;x0_r2X0ZtXYE_yCxzOL{P#_U>p*N6` zQ^^6CGJ9<%ihIPRX`yx5 zW{rM0m*?iaO6Wz!ERhfwDFJq1sT3DjKGRCBDA!Eu%($5lAF`$3b{~K&h}G8S4I408 zwOLN~evy^<|e0#jEHP!+HH@{rU5VVRW(>sp&z*#{4KTAvY~fe#qugM+m2XPQ^i z8pDY!ZOKNO+(JKyw3j5OI#G@Ui^oX?jpS~`-%W)l@j@`z_P0ook>s zC$_hY;-em&P0!5W7Ph|5Ee!4jA+j+K@~ZUI4lRfTmSie#q$l&_{~h}B1`?yeV(Q8O zwmj@-KcZjigWJqCJ^ech@x(7Wfenrhx6=AWC-%yH60KNld}tAMrwh<2S>}-}>E4`- zS-0`=mB$D9t|K+P%EjqIuMTP9_}ym0k`qNSEAf}Mnz-Gp4Pu4t13h}`r=nT+X89+x zf>6bDUT2Mu%W&q$rN=w-=~$_do}N$N6mibYzeK6@-`lnO_fuJv79!Vs3-oAk!-$6d zOxQF&o0Y`T+X@?!XbaRa@`qog{{_t%8_%3@(#rYJY&>XnSq}z@h%=pb*4fG)leBg_ zGbiYg9;2W}SJR|{z1{(LuxVD)N`E!pchkNowq~`=nJ~EiyjnZpW|EQCu9g?42JtZi z=y&s4`kWE?sRHQ}_*1B}hSCqpXiX~pd1f#IVwr&W>L@lc*w_D031aBs1|~)e*=TX- zqtv`SBUC0KcuEZl`xbf|v?wabqX^Xl?TE8L6T9SL7@z>%^Z7z#7hPTj8YHl~*+*UT z(e64Ul!FzNS*wB#rs7T}(l|AfpA*gh#i}VOp%ST6&)Y)PXsOGr+WO2kn@&wcsee%E zHHmheSuv&CMN^`rI75_7bD}b+^pzN9DMIi~oMqcAe!J*2+O4J{wZNgXC9n$P$_&xsG^PXV&gUjrH<`PPKBH($mm7_J za-!6yB56?)O$p8}2}V1xuU9O68KSXMR`rd>N{N?6B~hQLuVnS63Ugacrc$X?Tdv#0 z3MHe}5n@aV*C?-!zADkiNcuASo4 zj2&ya<4DkGpb=~~4K1&W6UrAY&$PB; zt-Gq<*>8r=E^MkY)n;2DnWUq3Rkex$ptjTYMV z)zyouhjvh3s?@t;;^-@So}0d-_zL=CYBsAY#lhRDbzWQ|5H z1^sbHFTenhif_EU<7DtV_=delPwwsMnL=+^JGGboQHeReGDiRtihi@kg--3}W0glB zDS2#BWg;y|1RA;RVK4})fNnv^%xm+fru;X~+{8KZ-@wsFzgs6lC;Je!OKfF2C6?(? zuobk!^u==YU+J?_6dt#OloLSP>xX6+@8h943nbIH&(HhPH1SFTScVg|JL%mhEM>KF z+lG`qJg-6!ZSeVRE6)$oH>312`TugrJGcZS->MPGbk94m}u-(na9I~eaJvf>Q- zSrvWe?D7I%apv}!+qci0DZP2da`SfC84JEk{kMF#Fiyt(bR>gyWYDY0pmsrApc4pk zaxCUL<@Y+wWy`s(4L9&dFD;|eee~_HwtFhIEeL-6wtdyg;}Bjs{&MTe*5fOW_f}T+ z1zjK4NJxO`L?(RJ1nI#v>UX&xJafZ;=0>T%^o%%u2OlnMHvBj4+`+kSyLyKvvp`(g zvlYcB6y`ciLP6mXcAg~2CmgAy^Q5%F(x%d4VSlm;8jIX=vD{+uYhcIa_i`SM$D{E- z4CBR9b~s+`e;8Mwuc&de2-~}d`PFRNI&LprEL4IR=X0B?beiT(n|#-=`}|_5AE(WS zNyg&;JDM1h+_&Py%s<;GTjD8hug0W&Xz!=CeqMEA#%m8O@QCl1QWqgNxkQF%u zr?0Xy8k`W%loS_{&Osh$P)oCi{aw-y>`mGuy4$>M{Oncu&Bp4s#>z|3QMh!e@)AT9 zF2P@wM^EpzsuexMHCo=o@@%3#+kwYzEe80C}+WBbNv%nA{Ou^uC3GQCfG(Q6HJk<{^pdE2#U|C8U``lO&12?$rU59IjqTfqn}nc<*~=&1 zW*^D=r(b^hnY+!DwvD@sPC}5(69*aA%*=i3N7mD=eXDwUut;pXyW{ST-bFha7u~ye zZ^xoVu>Ksn#}*vqv^2joNH`B;v(oY4hdzNt@1{#bP@9@2?GBMOA@t9cV8uLuLbt4; zZRO~}t}_DDHreFVb??~={Rnrry9A;n|B)Wu*u8Nh^m#_zqkG&Z22bu7Jh2Mb!H&z@ zF0Wa$?Q+Luj8NX* zqdR)<4fYM*d;a;pK^X7E#tM*n)A7^lLGX@^@%g4v3}oSbT#OI5oUeyk#>CNm`+HC{ zyt5xo?B9h65Q-yxbX8*zGu4Oh%PUu`xVZA-+ZR`?yhuHTv|<@G6$(<6MB|4X52i*J zPjpYf2C}%Dsy*7CVpf?40o&Sy9Xn34zi#JF(v3&BqX-lQycl}7pJta)e6%PVyxrc7 zrqNON02~@O(9j%i1N#T#+UWHR0GAe3ENVN3eEh2=&244l{_(Q$+qk~-&b#kjzyAIQ z@4olmd+&chGajW`qs`D;fjhJ*KHgyht~nllH>P+zGhWM zM)5t8fOfd-U8x-#7=9e-qA&`W)>|=ZWg85)D*O7pw2w(cL$}7qVH9fR;1qZWiu{ML zq*yfu&Vp8Vsc50RL9UcuuxTLyQ?>wvcP+dFH>Ws}YEDhsJ!7(zIYd|mK}XW&`w^Bg+lDYbYG zc|7Qm&j%i!DvRp1A3ihr@`tFIz5L;|x30bX*30LgzV?y0S!qhTcvy{l@@`8A@q;y7zP=&;6)g zMWG7kv7)+z4vgdv!QtjeePuO%s}dQdHFe0`@r7(*{XW?DmzqaP5&J1l`4Y`bJXJg#9BU>KNOV z3yjeIgxb{!`#atMa!O0z%$Bs%P`ITZ^;oB&Cpt8A86U>*S;w}^mlrSIhLy-8isoN# z=REY(UI`pYbn_<|UD$|b&V*?vZBQxE2H}aFX7ARTI<%d=ZO5L(ZCia?+wI#oZ{NCk zo612%QqGhm)%Nt%>a-HdX9ykNKZI8Cogyj8gdGKH6XMud_mojC(M@v`7{h>&K;kL{ zjocuFA9W*O(Eemz01GXY9Q(F`UpCa++uGZEpts}dkGTqT7|U*!mfeJr`OTZ-Fo@)Q z@>BtWVRkk{fN0p&KM4p8>AOV0G`pb;Ro4UqqV5;oe(RaH-@f?F+b_KR_S?_=5HV%P z5IZ)}gphQ|cc<)nS=k*-cOPQ0pqaVHK>cYZKB3#(y?%W+9fgwndbJxEdzGzRDw+^~ z(nAqXnZ|;Cm?MBsR#&#Q9l-^AbtPQ4j^JVa5yT*E0#s)O0YwJv`&#yOEzf`1qe2tB z7IuTstN2$$*ZO@U>rLo*p#!%5z|i^L^S!9L!3J%pacB*__mJR2jQm=7P)e+%Sv`a( z;1E(qGi~0WSCw>A4eHlBoS6wqjRK*%ZG+pkZKLEtC!DO|X5Dvk@MPcOYFf}#UjY~K zit6f1)k_z3RA1^?T;0)zN73|`EtI=U4cZ$6L}ifKRVV6OA6ub5_tsp6y1T^@tiU_O zZc}$R3@tHB8&v8EW1jf(^DFUMThFh=4PNv48wmO*2esmjNf&@0e`@Bib8>z-K82L* zrMrs-clTaUMIcK#I=UCmM!Z;oH_88-8=`57GT7R?Vi1zOS{iuVbo}_m6)1$SU|UFg z?IKoK+CD~YjUsk8-YCZk+Gz_>_2wM(OoSC{I{e^qbDj z+O%ZTy3L#Fu77mn`bQsqbRFNfKe~PUkpDK^`flmHNK_C^eV>Gt`wwaN%LTK#pPn^s z0{$Ex#v>=;lT?AB*Vl`Js7Lg}-w)x_AzB}fH@Mg>AR6N%C6B+L^DymN4PmhoSmA+4 z*>eP2saB73+}F`J*=)jjufX*0qjOEruSdrdNA_eyuq)(29ZT;)cPJ!*EOlYLcb*6b z*8TEZmE!)9p2hUU?()SQZEe_MckIAM3yd;OS_mbsM7Rap2B(FpEhe}>hCuK)lGYtx z5E7aRp-TunLQ2PsLjuG+iJ(hk%7j?9nSPx|ALn^4_hBuD!8!h7Bf^2kLCQnFOzX3x zehqxN5sZ$35|$DNb_;|(-L$h2J>eeuWr6FN?Z|$%Z9lnf+cQY!=t5+9#ZXI2%gU84 zD_feOK92ikemWm1VbGTOc%9<+Bg46MD_X0)HPTX~U0=&8VkKm76K3iQHnLwfqU1bu z^ytt~+fpihN*^4cKA*ff1N#0NboSH`4fsq``}Zf%%&lVg!2X^oj2-=8YcqN$ba)dt zNPo?L^e%LsTkqnl`L4#`HQc&$>y}1D5LAYJwNz6k9`fuoLs^Eo^XRi2&I|-6JA2TC z!hUrHVp95Z9t_PJAp)E9wjR-E8B9I+8o!A31;2hMsRsMT!kU@~Y90X9X44~DtS##w zqlJ>G1Cd)tW5;EBCQRLd7-$FwA5*v6&-js*UBAU&zjccoAQemc5jZ8Q6G;mYQ{&Ad zaO*odM3)j3Ao)DOR*Js@MZE8bd)Rzt9`^G(QRx|VzudC2Icd7T~asV zbYJ)RkZ}(GW7V0P$U_bpL@YyxeEvg+#t(HBba%r(yzBno#I6kmTY;8D4=J>~;4Ye5 zt>8E_q8@IYTX3THdN%`KGs)RJuZsl^mB?F=6G3<`pd~pzqlX?Q%9F#?{C$54#!EXWHlYcz>C%cbXZ$|@8GJrB&YS@v2ACMIy%R*-m{{0a_O4Ab zn@gq!sCb?gZR+msJ?;u1f}0Xvhx7UQZQk=RW5cDjdE5A{@iVxL-##PW!gTt0{6^`x zuT&hzVH~GH?IAk}rhO&|ludpp_KXe;(QoI=XUa*W@pB-E7hibsyYhK6*rOx?Wh~c$zHla z$~KgZj`#Mm$bD#|j>KSoa6V*EdKxz-dX@W~QVr}P6xy;tzy@Xhut;d@Xrzy0C^?*+ zZKW$J`$*Ed!Eo%S`V{%R2VA;dst7;O)=`0)QAbDH(Dr*LTL=5@ogBP3xE(k5n(x6< z4Qx8ts?n8VeaQysLG7ohRAd#S`}>f%7+r}<#nQ&b_{8W}QNp4{Bf|yU`m5vm{TN0bqgD@CZ6i(>-(SiBEGyulJO{OfW!!IqX{ z?I_ihVuv|XR(9wN%ZtwUmX-PUAzKN*4#40%CeIm)3 z|1s(vAK&=+`p5XXal^!>!mvZVT_<*<0!$Cg%J1**?1EX-$pgIyw)Y)a%xWI?!vYZl zjt?S&W!VoPl6b$u!Tb3TzmIqgf`{Q^&Udvg2xptkvQzPwT}c=QeM; z|Gt08rcd7a;FC|r$8X=kaK|;AG6&gln*`|_o*zBLU58*9{u9LFA#_#{frJmI&#i(D z1|?TAC~Kc!^OaI^3i6gYDOZ2v_~3)^3iU97Ir}nS})mP zc)}ns$99kVThx|r_c%(Ao>%gZiU$Mj-`<8lTUdOS_58I*-^6E-JIx}&{1JGbNOvsSzsyrNr}fUMibiIaCE zU#Sl(R>}-&-pv$IUyOitpp)!^yLlUy-R8U7?jFaTL2OPhhI7@r>%i~f)!yQ6qv&)S zhQ0J@P`IybB|yXub{A541qg)@sSH(MW)8oi?X8eMZPoUID*z`T#PdH0Q((l0{Y+#N zfB{+Q{q^GLKu@<^{J`Ah3H;j4`o6wC*5~DSdl!kwqVLeQV7t+}w(#&;h)w^f`N4 zPn3ht$h%HcL^%wmk&}eb_XU!{<3qJBe3jNaL1CnwP?LP7Bs1V~2=?ewCf7$P(fB0c ztl7v%usb5XXU+bEM+?gg%s+4?O!1d>kLy5XYzQ z1Z<5T0NN_960eL_5dNIuUEB?u{ud!c)!3YtfYoMKo&C;kTmS5Er!%9(5wH)-0p>Jq zVkK;+TrU?X7hDkw0?rA`l<|U7KL+;e_h*becv_B#Z|C)AsL1U9YyUCf=SY!`avudVX zMQMeDnz}%pW>di3KTlI1nAcG6Z4OxRGyVyq#!}?yFG*x2#48gxhh25WYoejg6>Sfh z9agwIH#9fgb*M1lj;oncw#;j{1svy{8pm74i}|aw*IPoeHXi^4$@xM=}EW#rb>f!>;J|#6rJSV{UR}SXtO?BScZ5`E+$s5iv_$u6_Nn=o83AXOsm*pSdrB>umr~V| z;dg25x3h5`*L4|RH@&0}G4g#`*==f7T10i0vnU&9w<)lozx#Supu2xVz*c1MPs908 z<|zwIb+$^kzdle_RH3Pgc1>B^muqqZ<%xEU8h}w?zym z8ektlpD@m!{Wy4MoV=EyyFAQ0CltSZmp@>hF!@ayXU?jCYidD}s>!(J4tT5?{TZDO zn9H~4{-!C@{IlJfL;?G;tW_)Z0(MsLO$bHX?|Ox+Hc#QfuYArjQv*LMy`OV zUEi1;NXxSLb9qmCM&61d^96N*#jn?;WtkK04X#SlJj;R#zcb*-QtH%7bBk?zxgk5= znP@9=lq`6X{aU);*x%@^S&|cr_2SbFV3dWFQw0I3-c%P+p9FH*EG{! zWbV&6ZM;&gX%Ce2=QmVnRyEi!Se`AzByok<$iGRxAYXMfS)^=DuFn}zrgAZfj78=W zs|K~i#EgFHCX>cwuxHtgX&PHrZlJ2@hrGe<^!NLVlzEnN<8`ZHLBQ5->vBX`{oO{} zrrarSur*7B4>9XrwY)HL3(rlxz$&ND4K8?TC4!ERHqnX<(2c)7gvF4%n!rbUbo{J~ z2EOqbuI@vPw&4Ok+dtNS@x>SVFC6Wb3e#zGxoe5Ne*stLtn1ewl5guZYJ{aJqbPsM zB$|AVfIDwZr{3?#aReL@c%*t zBbqno5MET){%Ag9VF=3#tKhN4<0n$j11|Ir5uu2AaVg$F%9cH_IoR}hP8WuE1*}EZ zy;ULQroyet4f&2M+^)-bv02j`DDTg>ZVwonG9F zggXMOUeWT^*#&7usv$$8Hkq?b<>6P-`mOD0nyNsWW=)pmnx$o3zei&WNSs--3TMRp zzW%B3&$0)s+ZBK%vV9eSjDF{Uqol-A7GT%t3fAI4hSAz@`!rW$^;=HQ3oK|bU9ku3 z{k9glUv84J(#kWi;7LW&l!DJJS7T|?2V7XuZT*hQ!W{d6rNjZRCrgo9GEY;LwKd?n z;0eg5%la*+tr}CmE0C?&uVt4z`!{I7ZV5O|rhuxL{diX)&X(NmHT|{==6-8~>soog zJ&1%NYD`#C82 z_atEHnkR-7#!drV?s^KwY1SKuw9+DaXSj008_9F)cW$Mb8pFO3fvPw8V^n z{(^Cy@`CZ2(yNx6<~Vt$n4gys*SN%Lu^Vcv*22}rhz#DcTr<99eolEdBSaO`l(fw9 zdh==1Y)gZ6lO1m!vglJDoKNKi<)_({rnBT_J580g3jH;uT*1$nc{~1p@=?5?$bEXl z|D)+m;M=IKKG1t-H1Uiyx{}7ycr;eVBSlgqMVd&mBRjSc9!X4K)BIo)kBi>0H7yBc+24u{$~w zR3p?CILALuUQ#VlMl6UA`KVwZ+8w+g^hggCamgPE&nLl%P(k+lT_HNvi0aaQ|DGTf zVN#7$9Q5%yk$mW(6xG8=8@^a{CZdW{;(CP&Vo$;!_sm4L$BOaC?_ftV0@~*~(8S^H;JJ_vm@~4wjysfJdX_sL-#+QZKgIj#Jsr>n_%*ch4CFp#!*r|r&Q|ifas)q)nuNzF6ZSn!%V1&|`cq8SGK-=X#p(#Hd zcje@C(tl3mj3DpN$Q}NM{eb6PFt_`J=froTAOO`kh?OntSE`WJpJn;D87f;wF0eO3 zJ-&nLyEx`N-Au;_4_Ep*SiF@I4*dO_AmBF-ciFKTBocE2T$?=6#Nitc!&h_+WYQ;~efLT( zoPmlTU~_GRHp&a*pI3Zal8o$u7`(%tpZgsli*~agqUDtHWJ<=M5?QFetA%E?KB%~B zajF2)Rh8AwMZ5*7ecv2hDL>-xlOJJev&hF-O_~UuLk2dpkYyuz8>}Muc3GeyB_Xy& z+k?QSV?GHy4p|R`692_xffS=a+tLhPgAsUdXhtzu_=smgkdV1i7oJ$t@XsiBN$Z6@ zuua>g#1$#HDYRJ^oNJmzR+*2*pRlWMwVu8q0hH`*on8gWS92i{J_HPiNa5-b z@{uRbwc<5T<1)1CMY!pX+o8$6ASA14<^U{@BU7V6et9;GTl!2`-if{C#*di$G^*=( z@a~pLl#1krZ=VX`B}&6{b7UrH5g4W6YybbODbh$@il&cW2Y%xegSBxEP3{hEKE(k>wK8UI8; z#?&Kd@EBus5}#&eE+zw^al z-nSpT)7_y1>Z+y>8vCP_DiMzPy@?P-{TE<{LdTp2ME}K}=N> z0%dL^4SR=gMjQ)KLPO~A%s9tA4QWz1$8Ir;o~GHcNwBC5?G|yycN?LaYhc7(#F%+k zc&RTnP2I8vwh&s@q$nUx>P>3+2QJ|_7q^kD8iX1a#ON@sUCRlGx@bLfD^Lbshojc8 z=Es}%?DX;$^aI^00-{T0eUo)FAD!DLF35p#}th>=U=f_pk4Z zu?VnB*Jk4cC6sosVPrn7RuQwUK}tTx1W zbVk_{dQN>vp`@(b@T8;z&IkQ7sXk9uX~2%oG|Yd{Z%P_sVH1E`ACxFN!#DhrFcaLg zmg?z_#K3Dx+j$QiYVb4u&AvVA&=?bm`(p8Qv`;;%eQ4h;_=4TRl7Bp!cJks)8Sp`( z+nmpd2YJfQ3k@)RW`sWZfb(FFMeg*(<S z@x@sCHH;Y2zKuYvXd56e@^vE!1{xiP?{D2<((~4F;M?Ic97#R|!>0|Q4N&TN%P|*@ zG%JcRX*W(@gx#aFACak3VZfF*ccL-g;H_qit#`X{`S?W`t890qFSJs(SbFCWUb`M6 z<#tuLn7FZP%h@pU4<|=)YBK{BnKCDXj3pfj5LsuRj&{Fof^;DIbp5}grfA}46 zer8-a^)|B3%a_69VNVmq{F0oi9|XJfW|TS`=u?eAK<(Fc34e5AMg@mv-Sx_hZwojIF1aCsJW)V&`7B@ubg(m? zN2EUKYI5kBF4j%fspG*JGo!;+2eD>@vG9FyJPar7J{10zL7n13;=m~n3I82P_TI)S z2uWOvph(W?AC_d*)=18qa@78kA(6vSX22x?>?5& zVMn54dvnvxjvb|knktPyBaJ3m)HV#mew{$RF_rL{L8imu~pIH77!m)0r7v`KdK|JEL_Y_L*m% zv4S-}c_Fi%taCVU0#;Lmi%;S(w-Q`#rU3l?$Rhbc3;N8BnG+xh@K2hcK>B3F)Pdne z6>KD^NdW;abB-gcWJ!cT2XS9F_JIzXqCxv8KWK&6fdkNS*xx@l1)(tHcv*Pu1O(ZQ z7NI$iz`ud}1wMsY<~znZaQXM>0x&DQp8fmx>+pIG1j9uLQDjjWSpR~pO{XJlcK=g| zw>t2%Uk#37?LX+opTUqaQ}DRO6OdEFRtGZN!;x>kO@6iG)K^1eCj-KahGAHTKWl}j zB~QT)oPL&q!FE7e84~w^%PrEXupn0D?Lj%6rKbGD0<>Yd~;`N&DxdxUjl#(7Tg zZgzdo8s(rgpWLF+IXvO^7y8?Um3&`{?r{N=)QN-mofPa$OE@LLVsy?vJ7GV@`dhG+obJ7kB9G>+_&62zI5=S<`EGBE)r(g8E?bhg3=$voUP&#+sbf^?6Vn**`6rYYa-Uky5GaC3GI+WOWyrAW z9@EN|_*cL}rz6L)>;J>3gFi@OgFWJW+V#roX%xH*_yzlL2? zx56+8Z`eVH?|S6R8q}8oPJp}tS>Y7{jGr#tzsT32xa}iyMItrSRZsn%%ScGVA`I|(MA2{wVnM{C}u$`o=9_3j2rT~ znw4$fIQPk$6s+AOxb0zaz30Lp@n?N~epPzVzen2SObZ=Qb96>b^BqFBd0rjn{pNt$ z@9C2d%jdrFf_>O%J&8?OoaQO@5fnQP%)1 z$WC|H%1Cbbrh$``KBb?fq(vf3W~q;)c}g?Xy1t_XU=q9(@q0KzOS(^$mj`jlrIqBFIWDAq0nDHP2eI;@&U?rF43eOm8Ri z@NPJ_bo`e$VA@H8Inpi7sOKc}utY^gz+8!101EtLk0luNo#Wf;bV!Wa4r|$IfNc2w zpeRQIQ8gZiNPxva@~!+sWEgf=W&Pd0IN9tO=l9qTduWB1;=T?b!^#m?Tv|s*+9h7V z9v8pd-Y#!esuPYL`-C*Hyl2bSl_D*~dz>s@wtSGbt&J=_zB%aJWw zpJ&MTpzQM4VcE?c?dwWMnJ(;)#oL3M)qdxD%5$DQGPF-x1hG!Bq+4C--y|@SF9gD{ zcij1Bao7oa(VTuIuALJfms~0X&xnNAt84>nA)l`K38wtzu9?xgh|sA?vTSy z%Pu+4>yjYRIB0`@ux=7|$__5AyeLU~7K?8CIeeOhB3a7fF1NT@*yd*xSE##ZB@{k# z2o3vU0Gh|y2H!40tO#srjrFHtU)gB`G~dk!{ad7!!N((z`pC%$?M>?{w6gAUnOu)q zUH9@u*Xb^V&~F#@Sm14yVGQYIHDeTujP3Ii^m@TibNX1JM&MvJUoF(se5Gtmmh>`2 z%OicPYD}sldbL(5*J6VOqnNY7&zWkWUf0W$YCT^m>gDE7!}=;iH3~I-XtYqR8W2Te ztw?nPzJf$4Md5xqU9A?z^lA=Y9LgG5LoMmmdZCPMptWuu0dJB#{g)hOeO z*i}ZAxhq;JmyN1AtQX)YQ;o0E>qfCqR%?a<*%Q0sMyXJoRP%Z*s~3y-^3V`;rVQW9 zHG?@Nl&Opx(A#Pyy9$4c&FWPq&ge=&&(3*vJ^wa8Lb+C9#sl9)jc^`Wym_@)EWjy^ z;wYm>hbu*+Y&489=nC!#jThjcUTReJNqiC<%$LiP4d_?i!1j<12{;>NV-%r(N|zsZ!5RHcHuSakLuvw%@20vN|-*7>V81Rm&U2 z%w(gM*GCG~3QqM@jf|0n&+h#Z`s2=Dl)-dcIMs6f4z2B?iM& zEdal*;k`e)9N4ju8LgIK6lpkftU3fG8c;1l{>!;USVYWaD zVuU_YKEDe#B_sF=FM5SWH)H%fC?{$H0>~f3_;O5XSVI}yh0eiik%aS97p+l66r}Hj z=n6WHgOmr$R2&1`iO;6a#y)y0x{wZGh0NmyF;Fo2;l@s=RvZ&^#ptcQ*;BJE)mIzq)cz*9LwrMVR2~Hw!kW+*~6(V3gw~GtU}4iXI8kP zS!R_MmGYw=N@5kWk5)LDl{ke`TYTmaTE)363Y>%v?)9-NPkYQruWe540r6Y4A&$ z^R)QrIJdqf1h1gi{Nuc#}{H%xab5Ur(>2O)IAt9h^%PFu6MW+0Wr$wf!^aV^8 zoq~f=kpB|r2aVCs#5pG&WY;kvE(AA9!uKk>hFaHh5(T$`-bNTd)depPP+w#uN?~9X zgDKPJFg_-Oy7X1J1OQWObs*rRGon}YUWx@-+`$J zcP+3d=cBH|+!{*d?tr8fG{Efi2vw%K{D;5BrZk2iJ1(SqH;8_ zb{?3f*<`T#=|?bJbT$PAF@r#IneqS|e2D4CXzFUrLAFv@y6XbW3cOrkMcC_2sla^- zv{#`I(?F0OD#yGJs35(LI*5T8dYAzYu9qnZUh02eX(|LwSq~ieBn8YEqI}G$(Eb## z?HUI9a~?b)$D9u51UaB4&^JZbsT54cC_T(wfP8cc=5icfunq)EoiYM!0JucvRG1n* zpqQTy{dYddlnC!4BLlte#`Jm=r6NdWLUfRUcRERhkP57+QUfT%q>zvCA;4{zDBO4$ zXaWqtC`jdeNaQ306A1aZ9F=C$)C4ogC7B{jpg43&w*;(~CVh!kLWAPomB%uPV$ z!n-lo1(P^}Cg>2#(HR7-qu>H0Lp@*-TJER%IS+LS<}SsQ1eYpEpais$J_(J`Cs7gT zQv`Z@Go~-6s63scw$o`?Mx(cLepKbU=rNRp=M+I^g=iL7M}gsi5^&Udx(xq2xj||I z`2f?-P*rq3okvl+7d?&X^HDF?oUOpSbc8z(2CfSx%Nn5H*+9RI)OK_p^(jVM;mSDN z?{qqdH0VGI_yF3cAXxB4X=)A1S)K!UioOj~gTUXYOy7*DH1rd~ae%xTOPP+s<1;|| zoMnJcTGkoQnu`Ypad9XphJ|_&?Uh9=vEAqmhK1f5=A}0 zyU;Vb*W#m{77wpjVD*$92CqQ1oI&}lX?mS?5Li>Rj!?4IWARvF@>o=B7o}Jg-VX*U z;NK8p)npU+23N%^+GnlPX={)USqESYH0TPfv(uVYr4_3PX8>cU`mGvFqBOL+NTv7`y&D6gW8J8ZDq~AgcVgR}6r4XnU572_!#!b^@V!*j2IWp{5>ah_qVX`{_+C26C!s7x4}C8M zJqOGVipB+j0*`@EA|Xm9G7sq(ct{Y#r{K|B?L9=X1I=lVB?F>HwkY-<=%HxowR>!` z#ZS)R{Y0iAk2W18{q%a`r&W6ruE`V4p5(hI*#@f22IATVYR3+=x5p_byi0Ibg%_zP z^k0QQk6!9Raz2$LgHSFA#?I!W{k8$xZWH-WF)&Svfc_wUU>2cy*y6VhT5iC$0aAr$ zN9jS*3-5kfw593IwzYKgshTZHC2cT@wl2DEQ|KNWa17|)E|`LK%F`sGB}biZ2~iPC zKLGk51o;eoIVNjqDC)?6HL$L0b?$0b9@^7_ff64ipDHXc28bOAz`3 z_&ul`)dF+}&P|hEOFxk<7ub?O>S4aiX69429+*ZM;Q5?o&=CiMMJ#29Vgbbk{eyKx zpponlY-@m9{3Plq+md{gXs{hi;NuSIztg8VjWkEu(hu>JJ+_QR<0aewJMJ2caq|_o zr1+v`fb_yH`d&UmdiY+bS?Y8Sy6mFT28I2kCvlrcx*EHp(syv%y4Ij1!K*;HZN2*u zx@~*wMyW?QU+Qv?wXIv67LMY@P^HxwY^yGQ4!7pr7q&&^9`{=L2JFhU4!Q@FxVzjs z(3WrY%hyq^-{6kxDEWOXjJ2I2-+^6qnW#?hR^R)0Ny?jA@*L&84*Pygc_aRBXzz7Y z+wZV&HTL@3{ttUU#Xe6!^Z7ecfpmxD3kE|SKf=D`(zI7t8Vy8(p+LWPP2j>{$g9C` zp{19?b;8X!_%vR+HJA=Phy#+(7wGjyeW^gd?-$s6H5#UD&-es>M{EKRPpxKeg9k}f_EIfeQd_uY{B&=;4gJ0Y1%RGXz>@XJ2 zUUos-*Lc|;+;%M%uENWH(K9$VM6@xF#wg5?^20!Qh`T7mNmHVR%qk3IC)NDbLV|R*v*_uWQwV}e0ttZ zQ|lEVY9+9U1*j?P#aWZ4GN*9o_NeJZGFxiG4vBcSq~cl6Xa*hxNLSbxFyKN!wCbZ} z0BY($KJTmwlvDGgLxz|68Cxh%LM~DOo4ngXwUH)D)AW4Gyyy*i<(j=&GtOkv0> zIpHSNi6s7(-O$xy!7F(0=WC-QhW7=j0z(H_jQ3wFfA3M3sY5XIf;a0N%>Z&!XS$?Z z0e~i5@?Nf%>wvbXhFXWsCuBlM71>xQRdqZ_1s{R)oEE+%!zyZrqwFbRz zVujg}Y5|VcGB^^?8MP)nW`*nW5Zx0UGMX6TXf>NJl&u568R>K@GDX$I!zO50s|RR4 zQZ#DOK<|KBD&%VU0^Cv^P*-T3YV3C*O&v7G0j8{%3RBDMwYrhx@u#7D)qqyOP4%LF zIVzS~dVv2*g}R!p>KWh>;w>_p`DAQ`s(12Ec)oFS0oX04_9wL!+0xY6izP-Jh^l%P z;Ha8f9;vAS_2u+#9!5bq@!Nq2a7x>I*F1NFwuRx3S+Y5N=Y{Sdz)qEv^ccWd!Ircb);(4fUev-j<0yY zF01$@CW~LPUa{prSg0q|5kLWlDkJ&H>}V|l?S=1#!_KOSXkmK_2C=4JZmLh{l(RGn zAYO6yCGG{JO|IJ+gG9Htz2MWC7v(+#Fx6M@T3!rY#{i5=0ia~uwvM)LZlNQE++MlO7k{_Y%9IO6-e zvn74cStkbEE^QWDHAf6)%G4^PIsR{_bLz|($2q+E{CX2$gpT0j`wUNv?tVF6B^PnlN4=5Fz*Fu`H7f&Sak z@W*pU`KqC&r;pgxI*1|eE0lD->k0*0yMTw)48V@7)Y?d;&OHU4h^jI8aU7sab?RbN zfB4y{+T0%!QSaAG2J2IwomJ}@9vw5v1(-ukK)ss5Jt%qZL*WZN08`hDY+ajP;{-7U z@??Jh!q=tC_^P_SCn+Jk9_TcGgFU7KupR!k1VS5F{aZW8mT|`L1M>nGH=*e%l*}Uu zdIVC&2rrr+0$+cX6Q=W+p5@y3KDAtt&twBJNi`<2#z@_L@{Y~Aec{={Rh*NH&)%g! zXCDW}V7OB(2>j3NvmY%ilU2^6*VQf%i7fNVzF%Np;Pd2V?81Y+w^OF#PWr<*#3<1W#StyGMm5pH^=?MZu?w1t75ycD z6(qGjqHa&bKZuf1%k)80H{b}Uwqfc$(ReEHEmV80;RMYE;+|Y=NnFbVHw1)>Ey%Dg z?t({-02Dr&t;1Z18oy3-LAJIW$5yICuA@;1avSV(Nq1|4$14h72|wjn z(3JBQ0Mc8?A1zZ2l!$%2!87+qq@~=nNexZKP?G;~fHOVSayTrT2xo zADC*jc|V&SGi2E^m9}@QLxrMs1-5f@&YDrJtscdrNV9&28}|;L$j_QVNLNNi$n(5f zSG!A~^he8rlXKSUg%MZ;xf$vZW;lU|;G-(*0zt(k>Yk??|)>;!2KYb)(! z$a3hhhkKmBvejx~->JKc{OiIK=5X8zcZEOsRQ>~@X^NEe?8syl zR>+FEL6B*}zj!-H+u|g7&?3P)Q?4>zCXey_8epkdoYgdyyI@DZXqM-bWp#7ric9<}C zSiCn%*-9n@azz+|zzi0q+N}oF9&L6hV>6|+*%{8ls<8w<4{3)E@@gWX5g)(sJ7-T*EGN7_W7^r8 z+LN>+cwXGvH}^75N;S0$E{QWqdlIaUl)j7|PzyCcKe6^ zyHGni2+77ciwAT~8Pu94K0+3*U-=hPwp2Qmd0Sj-5w?-p-@+J)jzAoQSfM+dn7#K# z^2HvMPy{oS%{18x`Gq~u&5}_Q4B=7h2PX=DHA9)x`syEyzV7`cIV!jXld6+Voc9sy zGs+FtW{1c$3-zyXCP0I60=7xr`vCInZD7~Vcev}oT+D(*2jgqH4e9giroJS9VTJQ} z@iNQKzlCRZT;WtEx z6;^olQ;~niS<1C!?s0y5V#U(glF2A@o4HWoWt8aswsjh?>*P_B<4H2$;2ujpWkpf) zlx61%RvoMm#i}3Ag_XO_;z|qBW*>H}4evnF*-m-X>|HbUxsQQj3)A)4*y7gNZ-LOd zbc#o{w{F89&R>i)Z8<_4g;y*SAbVGVBp88J+@)X~jutYYowIocvN}z_q~9UF# z7M7{W4ea~{PH<|B;w1B0)6V%6rz9}zz>=*^O{(A_Rl%&BTwy@jQf(75l3GjNr8nFq1o(%Sft~yO(UU^ctq&hbeC&buQMv zrbyoY!BP@-3TFx2UA)>E>zZRX+{U=Wk8#IMe~B+Kl`G_93(As>7E~=oST)@_mknf^ zV>$KF0cOV^P{Q?!wdUOnPx_qQunc;eD~uI#qdJ&8l`<^3cdFS^@LZmpU>-d|yt?&` zf0N&n6!=L?11?ne4oy9|VbHN8HH+r!+IyxQKIW78e=D61lo4)l#@urjxwqAmp9D>q zs~sQyVbih!2TrdF54SSg=f7s+)^i=}=D%K8>bRMEbM8lsws(xJ6^c_G-Xfnb4CTdN z*$HKFlVcx8VbNLbR}-bEnpHIqT5ys-TKPd(E*H-b0>6Tt8YoZNY^*V;d4EnKHc-N6 z1kwDx_y^WQD68#Y^i6Xgzj4}zzpsATyAI6KD!^_57nHU#6$@nENj7qG<=1wi+L6-) z2eFlH zKV0zKR$bY5si~}b8SxFXzQ$B5kcnny0K-K-Fk>hAsgSH9vd88(RdR@7hi$Tp1Ke04ZR36U%VK~T8T~9 zp{Da2`avc_g?W9{TNACVVHRmScu<9)Q3|CDb2NE3hMn+VI@w7`M*qCU3HCZfcPRI` zo%MPJsM`A{J9FdQFT;N&U)xMoU1^xnAhFv7C<^0Z6KZWP|M1Z4OW}8>CY5y(_gAD% z-_K_%AkyApLq#pCmO=X@mM8b!E3Xy{m$62r<~tKAS*V?Hh$`~AlhmTrQRrAG*%daf zb{)gFDu?B{tGtK8d-r|niU5;W7S;xb+UEx%{}f}7@pV|#pL-wt4{)urb$#yd>|muz zx*ftn_Snek&-8zRGLTQ_?cfb&^W;lj`BeI1qke<1mOVC!s9wcexmqYD^#;y#;vYP*{U&C$Qt+&@uPO&8M)29>qAr{m$dD;b@8cV z?Ua7gzn?Ox!{k*fBvwCL1fEx&YArjuX41Pna1l-v|rZ{=l0VBia3Wl)PjsF0=ljw>i6AKDi-;S1xR}#oV z>uq-yE7_r{?p1|X-P|Pp(axAOG&%`G+V$CqSmME#%FWy*zRB(TGW~nRd7?3}u?L~6 zMzuOQ|6P6%t|j-#^Zx|Dl2lxAFhmmSU>%rmq@KU=a>&^eK^M zQ!6yH!@HFHQxYu-cb)t@2d=@G-P%5Nz7TUveSs?CGZy(}rSO}kZv?HZkpmXx0!|#` zK<95K@7a?Og0Xh*PslOzYR^=^KIX9FopP=npWAfD^9yg1Ym_a)FZxMnF)9%Uzt`gy zy<1Epb>Tq{e2tI_{WjD|ux5wCBOpRIi%;2D@WIHL9nL{;1wf>n!0U|Tb?dlwHP}!6 zKrPUg1@N7}RNk|L+4plB-1tJ#G`@Vp3#4!HmKTmGEC@#3Ne*(PW|2R%!lB76P22ci zU>gq>AXw*Ch?d5}XLo{}nU+j-WB$+HxI-5|^sJP(3)Pt}6GjO8`j47S$ zGc#kzAU_m5st%}PU0p%Wm)Yv*ps>bj+MXm!y!c&g3tq;OcQ|2_eX8HO)ueXf{}Got z=5GT7pkP-ME1TL5N+DP~QBas8{@gU3k7rQwt?9d}@F=RVUSHhXlrB zEEz8aJIunfKC;Kbs>wK1^z%|kyRpDds>?(d6cs^P;h#?D_C&H2OOo%)`W7IeRbcBz z`OsR3gewi|)qQ`1CpH|jSCdYU(@?i}CYS2B!}yb%dAZ-kt{N;&uM(fxWlq7qmrdG4$a64x{a{i6ab0L%3PhRxE>?q{w`5KH-l3ZtzPqZBRK6uuD zWhW+7@iv?Ftl2xs)vP~TDS_KDQK(M>xdIvS-!8o?d_hxwoXRri`hmQam^z*>)b&mSj5cmC07*PNHSqxH@sVxl5<)?(fo3WDO3^xH{ zz?8rf7QbQHnm#T+V{AvnD{Y%dAYHvHjJ!{&L zGVasg&`(mVD){ikY(wFNJ##05F9!D3M13yl+wCO(u?ePDuvthyL5BVt$(R5YVdPf- z8dS*>(^rF&o2x~Sy~0C4l3%xx zZxI&2wy9Ab{Q9VGk6HX8gu;#l6A!WyxD2hzx-Q6Xz8LgeHS1fuRHj*>)r@~d+9l?r z!XHo#3e#u7MuN4GV&Vkv>yT@jTtiTmJP{!8^T6i+V%a)iR8!?vL=4gE^Ju}YF>Cn5;i!l_&K!(p}*jPT?}Pp+)(_COog4`XKq8tbuwG5mq?Zq z5)NgR*9l7|U>T94ZR8`O9U|dXAc-7v2h+%UJUN*sy@KPXB)}c2Y?vth;o-zB7omj1 zJ^jRvzmTs8J`N>bYu$lo+mFl(DK}OFyT}n|;Pli96uFe!@Rl%dW_)tYqTi@rs2#GA zORZq0Ij+&KPR5Wvom!5_OBV5Km%QA{R?4b;zm?qT5MF49Y4WOd%ERmD8hV1H8<<`3K(;%^BTnZ3Sgy6?PC zU@WH2l6+;r>J`rs=U$$_CvwQ=1jMW~nhVh4$;+lHdtYAsOv;BA-e!FGBUF^{G$TX) ztu(h6X`lV$>;M9xJeO3C%6p%jeN;%RXo(PYX@4=HF4AE}BV^q&2tqE;y+m5NbjL7!IC@O~+quS0N8&3Q=bI`>6)-4AF zvz2^kb(XTQ*3k>=mZH6NDj^=_B*0Lsm5ffNK!)iha$1KlwM480kS?DY0bU&wrfkkG zZ3P&8^5sjICHj`+W3;e$acM$GS;$-)+ZkWB;>o@D%aob9YR9`Qtcy(FpjKC@p{~LD z@nJC*z=h!tXjJT79Wo4M1!uj!*N?mlh7$W7K&PMiZ+x7rv=FaD9AAvo4R@2IWqOx< zg>C+3a!e*OR#e-ErZn%jnSHZK@AhLija~-maA_h@(!cZ8_h+v|MemubyLR1j*5muu zvY=X~_OIR%e)QQ{@u=N<8A>|-Ccfh!TI9fOV#-{2B=w{TCiNNCW^o5iO_IwOljR+z z(PCu24NXif3qIVwLB@&ICy5t%gp=C6>892?*)lsP<}8^GG$%lAFY#!|8*{w>@bkys zA*!Y7M%-(Ti({YYuXD!>ziG1!*apt-`+@CN*{FL^l`C!BBPi;+2E0LsEIa{8fGmzn$g{272}lzzYjr#qUhM4+A3`;EnY&AdXq?N1 z`|WZyftHA85#?>3L?p*jGR=kO#ruNZ^C8nQAaEz9daQ+h6Bx-M!G<#c45@cY!hy46VV&(tGQ8`<87GtAg$1I=eXJ6gIXBOU(|6yAaIbcOmAyPM)>Sf7~3Z4dxwx zfpI;4?rWjf={=S>ZMtUzxc=k?JGsLpp5_+59Vb6;M-}~SW`QhKnO}O(PV|Of-}&$4 zRwi{n&7A@kgmp&zhjRhXb_qTX!n6+YqFVr2pfM{^e_pKy%Et&-nsg~7;zVN0%e zll>wW*S}@FD_<050Tma{HP1e&---<1JN^iyuRfuvGzvvB7;+B6Vz5yq=~m&=Ah|rk z{KKS{gm-=R0a$FU2}xi0W~6OY5V_3e1j}u(UMJliUqRM?O|De*9~2a{os?UfW@XK& z%Z3@&j-$y?3cU4t{?HT)D5-lGEl)pzUR#aSM~_oR*|{a+uzCJ1QfdQ0c_=Af#KKyR zbtM?2C$=I(Ik8o&I?1z^aNmX-iPAO&%gCy)29U6Cs{k?TW$$;t_z3U>K#yufS%Ip! zZOT9Y4PUQ~X5?G~MFVJIC3#OKKTRSn@*_gFwUR^a^2!bmEH}oNM%6lb(SNK9zq0zO zojv&Oz%9XFuQ=A}a-)=RvM6qm`O)&K8UvZ!R~S&Amn#f9qiQ8vuUM_}%XZ};E55lb z{2!NV;W%wK?Q*-dLw|M{S{&(*Px12U?A{M?gZ!48eVIHXieI#vR`d{d3CQRx*h3r9 zDdc0Q1HI&|ACWIos5Z9*r2L4s>rKVUvaoh7{$d$4ew(9%hdm+Vb9=!3F;zy%mLw|R zNK-1yR#WZN503u^5)p1hg3C+}S?8a`x1yZzn7ZLb@#O%J23D4h$ioiEi+RtQ z#Rzz>PJ(gL>oe6W;6cH}@x`a#GO=?UibODFX61EH&^vS~aZ1Vrw z$eZnGP>fjszOUcXM%H=A6CJ2%9puKzM@#)Mmau{k7-yNR<5{q%7G8u>$J(E~rJeXh zQ_1i#PNXWAnZa{4_mI^Jxt2r8vljEA715OMyFp=>uL_vpAbH2`dpjgvZQJ=DWl-~M z2b~-RSXk&We_$gQ+4QsYFXWAFY;#fm4C$L;gog=KM|nyvt@b`W{ne528w*F?SR9Hy zO^zxLE=NcHvp#{yCN?-`DR{(?2Grdyq|aMMOn&j1mEv6h*OKFTa=&nC78)fQU}SO`vGMYVs{v6oL zOM>5*Ui$~Ty(>oE^&LZG*c$xM0$p*G=O5mXYNFjWVbmb1jCbHe$=|-(^h6ouoe$>6=HMTwx6^AV0fVje@95RdVIsbMd(k74~EhA>%H$O&> zACqsfXo%dmR9MkR-V@2)92CTPuU-71+Y^N;28+B=SWSQkqMD3?;LUxCmT&mdu8uOl_Q{C6!ml|QrH0U4c6S)*yKlQ4k)@V3b%>K7CtG3S zfLZhxBHpxg;mxUrDW`q#e{X!fa0xk42)=4I)kftL0*IeJYU*6^s6KbfMf;7DNk6yx zeooN;{?yf+Q~bcGKt55TY*Gs<_s7AphCroph(lVX4+$-1 z;kyKuM2k7Ex}s|kzc=^De42wghpcdGN?Gfdw@E^em-tp1^SW(%jFmC0MgvofBzr zsyX~p@@G9nb_%!jk$#?BVHQ=hd`sK(3p;Y$X1h8B&IEZIwh{^3Y;rawg;vBM#v`m( zlxf04SXfcGu+LPxT=-jC&=*5d&2v22X~s7L5LyKRyS%xK@aNZiAi#m}F>&6FLSo(p zj;yYqHF;g+-s8`{3X#j%w|mjp)rc%e?~fqVHN7)%d-yUIf*#1_hWA30*zzK5FZ<$8 z`h@V4_AkEKaCGhsR2ME>Osa%jKNR?5>~;Oe;ce__CQ9rs(?~)5m$u<4{U317|3lrs z$2D<$@x%DclE?;lcu zEqFz%)?2MwtDvZ8)lzG%+SY>iT5Z+Z)>Yx;TY-Q@fo(hG1%8U`HeDc}t+*3T2njYn1%a(fU+1rQk#6 zaoM$S@ku+R_ufl?rl7tH7XRX0*#k~C)kvAUoH`jseW%cWNq++Nmoef!j$*#v>9UZs z!z@9GR7$w)te)B?5_B|ul6Q{}{+2PR^eH7urKa-96jK^i!{ery^l8)*8zhTA)3g^2 z*NSjkt>zM@;094n-$MR(>Xt7WL#+|)98VJh_Pd@U$F@kn?c!twHCJBlkJOGZ|HDEu zCC*53h9j>pf-4iLbO)GFe=i>BD>v*=g3N}`g&DCIuBfE+?9PKi1DGnK6SYS z->m@Gb65n9F+(%|68s*Nm9sD70oLYZm`cD)8l3~XBgd#~70+bOw4Y@Sm^(G}8e74A zLC}>1WLC)*P}FVpfGr0%@d6c{Fp7F2qSZneM77%Z_`DCnb{ii*To%biUhz+n7h5I{9xMcwo*x)?_Xn{> zPEAfIIS-6-tWi5gdBIks4ylQ}Q)TO0u4wNr{(wD}FTpO7VP% zI8rqE-KKXsaE)V(OiVGAZP)jP>v&4#B%UA&af8su9Lko165D2sjYWtX(#@h4b1EI^ zC(hKBFsFMWeN5&4wkFv^7}TlbArLM^ED%$^d{4+&IAYNh1GuM#OR4*TC~~$5^|>X# zh1Tei;zx?Fq_>a@exib1jddK6_|ssgJv@4>l#&`*#$^h6JS7^4j= z#<#H-UC+?_oy0=Hl;4JJ0y;-B&}$eEgZN53447XJM(Q?Csv<$NjiGYA2S#`Y1zOZc z{V1l;h)QcAaOvWVsq_aTDuB-i>r6t5?0whGl)#%xu}j!9f;wlTxPW3HKv5@2kKxj6 z5m?dVs2d!oDFO5<$Zq9C75lK55IWgI{1#uVwQVdCw%HlO3R@@zNz15{8Kf~SirV4AQL^STbPkuQ5Ksk< zDA{Rvk_5kUyw)Zls^9tYaLAI*1x)Tj=BZAHY-6TwI8T4Wr^eYq{z)=AIZ<8R zxf~5w9&)_r=afoOQ$*q<2il6KJg*vX##L5s=!VJE$)BhnB-D5cDX3DB;^a9nC?xt| zm@9LrT012c(IQ8UKR>dCbuY+VL=6(stL!TGKxY)g!a$sDrw^hwaTVn1J>mqe{un*Y zS^T?e=SIO#c{9XwRMcbvw&PV|J4N{buST}hhApS66%T@WD(Y=Vg)%Rc#e~y8h9fPl z5NlW3QoB5YW?|$_jq)I2-?me=Gb<)lu~vLcv@J?pYv=Sa$=eO7lD>UHPa1$^74OXfi!sJuo&TS6VF(2`W zRQgAO5-hYkI5HQSPU7l!%E2i(b`1ChsGw+i3QzI1Tau09>X^sgHkC&2T$X=;^7A2z z!>|~=nc9bhFzy5Knzr)?OHmZvEu|2LHhZ&7aTHerBos(gJIqVV7)>#zXu8flZIglx zF1n1A@G-JmV(dV7&@kq^Qch)p0r#)BU$Af_IH^s>8v^9EvkRO#bfsh4REgdIv}$k* zuZ^Ls;;0M{1*80cruV0kY2ndMXKe6iX4qRt9rt0GyyzOrTSq(DdRvJDD3mnfS$tck zT0BP#rrDWdL6|I2LwfkD1@=jMkjI95P9Hhwe>t`h*r#d9ogNz!sjfKX#ze}^#ykip ze+E5m6;1+soXWFxOXAZ%D^aAmK`K<7pmg>@VpQqNYv-jQwcev<5k1>Z;7EGR^`ke$ z2>3DGib6I_4FnDBbBaQztu_WN3ok%geT+64104qD?cmc6(1N=(o~l+-`TQwE{giHI z(Y>jP8nqm+jMXB%QgGA|fZCQ*%be)UP-T`7G7hxRq!H%zUk9<$Az}c_V5Euz+CCSr zi2@ZEItJWEpAVJ8I5YOno>r_Vs7uO<-B((fr(z!pzfGt)Uiyn~|s zB+wh_S}|p-q^hH-13r2&B*t~I2WeA%cKBPxr}BhEpr0DUW9UJ8>;=}GHrM^76y~yg zBB&3P)Hxw5c?{*24t_bk>n@<{#sk3ytk#r*Y8y%$^+=;$dMX^z_hH?^9!IGq)Y9Qx z*x8@JUPJHllLe&H3p}|gMw6a)7)t_`jf%7t>{q3LO`1`Hbx(P$H!y}Ou;)U^h;V9a z0x+4QV$!KK4wOGvqzobmg_5$d1ycMd%09}wpB0(rcMAE$4=jb|N5dLFJdPs6D3&lO zn|f-`N-=T{@MB;BTS9*-f%%C(fhHx=PCl^Xq8WOH#Az!-GWtkrt?R(zJVLff2(GK= zQ5~pjj=-*qcC~^^bqCX2w5u;y3v??wDitO)U+TDtV0)uJ@#-8D!vP<8L?SFh;wh~s zUF=Tvk>UyQV#W*kcf#sYyf+eQe$JEqArQvGI0PQ_KG=jpa01QCsiVVcZm~SHkj)RN z6%mCWJb36d#I@-WRS-*EuqXY!wC4Lp>c#TYVn6Dk+oEjhC?sJ>1m9Kh zP?8CZ*IwgMLLr^cp?=iTi~W%1%+KPhJ}@$hC@|DvcWRo9_K%@<%BiUo(mX3cRV9dW z;n7cA;pyuApOvB7GNgV+`UU#}^%(_5QJug?36dejB6Zh>$0RK5#cdic)OZ4wnW5aM zCxH`6KjcH>)u~ak>xX6&SR;Z21=3mKa}4D>VDB6n>5M!#@i;1asvVu8P18E6Vp6p# zSZBsMDj}6-vkUbo88K5UcTq0jEYlTz1q5Qra~(9$#-jd>i)lzjFe0)mquLz4>`;K=>EV+arM_k+V1jLP1_ zXzy$}@UkH8NveKxd7EQ;D4VwD9IF>Mc?G}@6j+6&GBFV&fiaqQSz5yf(gqY-MsBkP z`p7A9gVStRwD}2@D6gH5mX1PH7^%0W_nA?I%p+if1stJnWMoYE&TquG#{vPJ=Si>T zaKoX8Q_Z6n)c`pUg6X^_WKtnOMS@tXBhz3KnkvN6#%T*yQ?u<8qEI|P1ZGvRfdfq$ z#^^@_&m~cxViK?N6h_2EB)F$?D)D0FDN1bPWYZ8exwP3W}7WHthf#>`@rdAX$1~ zY4BuX4)}3xN29bh0*_?HCsI03=pmlTXr#goh84p|F^ANy;DC`z`3}b{MBY<`GeWEc zZqy}N-dgiC5|*;mhFIAe=K=fVH#TB79?TJ_MFBvK82h7@VkgHf=6ra9?eR%ji?%_V)A7%@K&C7N$4a^wG?-i`)uD+FAj zzRh&=2?B=K{yY{FO{ETjVbm*0+I2-Yh*m`3$VuOX3NikJ-NQ;u7I>f)&pHtN=XAub zL})49rhOKJ;eS{Rju8vq&zi?ZSx*ikeYpC3Rt|dRgfBSZxsMSgcT3)dHms^~|L!g& zADpa4)C_KA0>_>DilQbC&6y}e1qp|VS&1i?;JvJv6#8-Yl(w_qk-*B)#(@Rht&XIY z31naM#J5S#8$Ul~=~J+T4)k-H>yP!yZnE=Jq;a#ey>W;lX;y%j(t{&zgG8ibq&GC; zL1zRwPCFhs@>o0@N1k{`Xn7psxMa;A#G5MqffFL)z|2q*N~sc1g0_LfIo_F-J`;6b z7G!J(`Pw>WZ9-ST01`tL+JgbYNh}DlSPM4hy}xr-!kadnpQvFP>PLzTG=2^J{%8?T z{khVe1B2BH5g(@4?kQrW8+DYTqIoew@53bY3A_erX8DNU<8%Fe8J)P^Su)z_4rI6l zYB-cwC$^mc2GRs-;s{Vf*^!`c8S1-KmN!Fn<$}$~DZ@^d2aauVxR6>$KHvsTvH5^6 z=uf_f3%jW=ihv6lZ;Flq-Rtz&h7YVaKVLd36KT?6M_P(gl^vy{#KnB^Pqx}bM9)w- zeJW(9#JVE(YH_$NFO73JG8P5>YzO&^ouuS? z!?q%d$D^;t8P8C^*|6KS&)8JCI}EI+S&W;XE8Rhc6{1;I@S$&lz8S;$h+RbOCp~crvZEFYsq|p|XX;K)_4qo)>y%pM_E1d1-Za|ROS8&X zoNmj>^RA`7%R|f=Z(0+AlC>F_4ZhsOaC*D6a1Pro1RUFCBA6gcCR4@s60l@|UpYnW zoeD%S*kqEJFe{(hOb`02W?|-q8zyJ{!BdM-8MrGq;6p1r^Lf@ z4*5y*lCqyoK!OQkEm`Hx8a{fKi*PRfk&M>IP(&gLJH4oP1t^00V=4?JwA8*b7A6|;RJ=DV z2EI+AekOMD3MR!%YJ=l`TI~}QKatKqdv9=d4u!B+nw-SFzjZYlLhMgSxxKY%NkzDv#IF&{5 zE(u4&2F_7&?8{u(coRvDDHlR~rYNwJ9Z)%aZwK11GK#LUq23-UJ~>$20COH{nUD=) zaGNP(=@YOoxW*UB#NP?15hOCkxbdM2q>eTRviydMTau^~L$uz5Si!!Wd@A3G3?33M z-tDDT4ViMf?^2BSg1aa`j#Kz> z!uYaR^1;i*vysY3zks1^2Owln6$1{bVxga(Kcn+yi>NnLeE*@0e=yq$1yafKjDSEU zz@G^S8rX&m^iplW^Z$Mj;OqW!EV7io65;D{Y(OGx+HJ>3k4ePmLpV#s!fY*|5Meo~ z$5mJiQDWH17ztOxReBC~Aa#hu);!E&*c?uQ4!%bPABR^KB3Q^mLiR{xA&>=h1wt)& zF(d~=d>p{TQd>wqT@Kf}u=5e@;exLr`8qw@5kmA6JPyl(*f;om2BCwT0w_j|=n-Dv zn1p;e1&)|kEAnHZFh>`*BSf)H!U~oSai$1SG29Mww(;ySCA1(!BFy$AEvUpX5<M0B1JUu%mOyzL@M0E$^o{xt zxTHmg)DVmmWgCj1=sYLH2M@9v+XWkP;L4@AD8vboERs~bFA7E-ITJDOX9zNgcEm;x z1OVrPqrHx;;;m*emZ?+t1j$H{pciS_yOFhaIE*-m%O_Yz*h|oQjToef$FNAG*vKGs zg@yDAq+%as=~#mCT%^ z&O=(taJ~Y{F$kZBD#FHYya|ef__acU#TO>LKhV7T6dL?TO$nx@xbPsZ$LxWEKb^V~ zVPjUHOn`ATDiRbSmO{(kjYs420+R|+-=AYwDR z?0tfFRg;D}n9Cp}4;&HXj3n?R(Fk$On~^~T1q6v#vl!yoOpr>0&;~gTwD}=Ha93In znvLxtL?{^P)v%#PXW8%os=s3(sl>6-hzJ31`y-_2gy)8I4w^lPMey^)#|}dzTRF>@ zC0NDDltZ3gJr6}7{VZhTw_fo+YBj$Gfv?u9hojbEZK##=7=J+`hHR@tOF1g3L5lHI z_C2l#(pO3c5A-C+s*KKWn9D+}FGhiC=w^qpK%Bc#f@73Ei{muV1Zp`^(42Mnym_~I z7aMy@Iq|Ec7#b8Cr_U-uy==MK4)^ddFg@8gaH4UxGzB$!%d()yc%oE&I{lObRUgZP z+G3$ShR+f7Zt3R=$pEE9U<<7QcD6`x(OCGZL z>+o&94c5=`!M5;(UX~rdY!ml0)ls^f1Az}&PDJb6PQjW7nW}mpD|L`vpe*fxMj({AH*GUO{Q1AF_ zzhVv70?&f`pf5a&FY!QMvmjWbes2Goeu%Pxk)&L793CnHyP_^Z0G{Bu8a-v_sQTYb zM=GoZ#S^lDkYe9{JM^r-KNid3!(-|5lK1 ze(%aqYyY?XZ|;0d3!+g6{)Bf{avXH;9~~Hv)_#l3n?W)i{nk{qExGf}vzP+4ZqZj` z=%e>1jKjc&MY%}7`csWFX5+YtKd@2R8HAQVU+ne5`mi5AeAwv$A9;p%3(>bzry=Bu zRK5KW_Y!fj{)$w^!Q{X*PmAt-X7#N9?1UdlnCCGNOVbOl2+FtO&iut^3r8D`dizHQ ze*1grvu7hCksD@U6s7i(hSv$Xj%a*35~2He0%)#1>_qZO|480IoY`o0Wjz=A0;#xf z{t*m9Kp%C0w^>Z(CK6=9d4IuO{2t#8`U*{@KG%fz6`&hQXM_~(iWWKCv;Z;J#QH}< z7?TmWl6O*gIIDj`=XMy~jqjmeMN=pj6~QiiJ+>fHr$R^wTvmi3jx0{pZ&8t;Owuei ztt=Z&D8XN^v#JwfAJAb}#fcm|+O-r~HVEdxjWCetj|p%R!4~lw1|dBgUt<4?`r%SL zY^@IG;5row!V)Bg5kZFQFh~GKZ;0>cgbHvrip96tNS~Dlty$Fy4IP((aF1h7s0X5P z9EyXcpv5Yrf8cEmVfb%ZF)+&5X^|72jdKy>`Vc)EzYx+<@K=D}Dsi$r7e!>#_3DQ$Yt?lH1xjNM6y~ zY0XqKM@ZGO>?0hH^{q#2y!P}SvGwg@j&cLeXCLJSUvE81g+A&%Y8Q$G)%VypQsbm2vbZ+HKNhkO*P_iWuMgyo?sEwN+vcY)k;%aDkEh@TRR6iOxgEf zkbG))=W%((dBuFk*Ls`gJH3AYv-!?%BD#*5$4{&G9@o? zeLH*U0=HFV=N7oHnM1^StZgvFsyDV&#d>bpdL(wp_Ja>eubtgmTkj7pmfLFf-`-{G z^YP<{wmuy!m(#vo!ilH-x>f5=YflGUJMG^S;c_P6eCotAffq8SEegDtyY5WT*N=M^ z*}E7fG+8B>!Y9Ys16tysP+d6eH5%Tf~c zqUEWu)nR$s=0_rHOBzMNoTyIst#7Uf?w*ST)In9~q=^Wwxtz4)Enx02G|$$Q(p;+_0e zQ!l(TspXA9V++bQ%@+~ZYlr7?}U8X>AyjL+HbH9;emFDS-p_}J(<(a1b+Dn z4Et4H@mb8!Zz?{IAL=;$Pe>a$O&UFZ`WIa6`y#1i`4`7`R29WHwLend95kRY1Z|B!sx77HkHnX?V+UXS_ z-I}wjI4?naYn6@X{{UO<#nyRthKs%P_#wBMd4iDJt<`j_M_VYCjSMZ^bB*2 zXza|k8u8eIzaVR-qE?bqr>K?Y)V0;hirQa>fybWGImwOz4N* z*>`Pm$Pex77Kc1+cUcm0r~TUE;m_Z@(>-xX*pu7q{)THyMm~G|H;}4E9l?14xsAGi zR<&Y%qrpb~7f{2lH-`TQR80|d%)h`W9+TVjG8C?FijvJ*-xR4_pjsOJ61$&*_Twhw^ds6jQ{DDr@TX6^a2EA3{dntDS*1u9C|7o&sC5C*r{;h<+!4&dc z?y{svY2II;zOhW7k`S|DSz7wAyyYng!)`1~NguOeS#oS)-hVXC3*GatBi9ufISXEe zck)(@$$u4!Hg8xl_Fr&g#ki9Fu5V|SpL_xTP?FD2H@uxS`@2^GR8IC>>CFMXsJ+ZBa3-ziu#>*hO?{ss9f3pc*=KVZxLjVmW_Ik|CV@s|BJ0XDRq1~qzh&xi>7-XceXC{K*zg zIqqy)J>zoWUvTBm5#aeS@B-Z7p%!dfGyBfwNdw>x@Xi1%_=-KKZvz6`hiJhcpx6|`2q1piGtgC?Fwg?Rj>YhP&Hv9GAvzqPKuRyO-~ z+kB@N@TYzpP?9SP)-G`S3;w6R`=5UR^*W$gpTj>C=s!>YR(&s&;Hj7O)nZUFpln{i z%PQuDviaB1OPb_`PI>j{MJ@k*)D-z-?SHy|Bq)NHI`fNe{pV4vdV_o!;Z=h4%m3Zo z{_KMP?n?t*tNyS4HP8iCKJN!be;#dyZUHTRRnf}L8(YdxsW-iVmz(6@g`IJE^Yb=1 z0N-tDt@VWQ^kqqb%wDLo6-9SmT>a-!`#{^>v}R?|mMt3(c)quF*X1qmZ9j151>AY> z{X;wn^0p5yynv$bx9xjAUHT79-u~fBcmMNyzTYnXh|nMW z<=$ohOv97w+ZAvfG~LPzx|=dVC%i- zvq*<2FTuJ0oZj2>dBX6Q;e7hIDIa_>02k603m&%c^US8U-Hq9dlwdebWizJ$w&A10^Hl{@czMv zr-r|O@X@JpJ|FiOCcppjFPERg>!4NO=mKDRcQVp_lvbJ&~t=u?PDjO@k zt^aA?qujrNH}vbWqkq9)&1~e;`$z3wKseX0i~k>(+9imR{|Ejlxx~;1UG^_QoZm5F z$_vPxdQ3F>CD?gPJg)c!JUI5(oN_8;(tFXA5B|BHd%mbU{_+Cu>!~LkUwZ|d-sF~d zD;Ik0dKDgayDSO)3*L&;!i4ArWbQiYzOLo(%KB3!JUlgIpmtw?*Y4BWPo4wmW#t6? zNR5@!2U1X3DgCTGwN_$(U`$$3fmZw=EB;U`2yjmgv(ktBc<`sQ!(WBaU+@0(sm|K5 zqDOD-UC|S6KfdBKGX<%JoB^)CMC~YTv%E{V+W2u zGUCC)r0M4J@>%S1wjWntKCyr^5$t@PD1mL1RG2H^N{0O#&t7gW$z@W?3M;?}Z(=X? zN-vz4S5lG3jLw@@5w;z%=Yx^&D8DdwQrqftJ&`5!0vS z;d*{#vAKd#V2&5I=f;(mOya!9{=|16ua|M!#L|-7!rW4JEpFl6#mgc4$Xz^N0znkb z#Z#uSgE3z?x}dNkZyF~aA~v2AM&^}IDJ)UQg>i)y6~%e%MeI>nB{WPgnVeV72~aEu zPAHsMP+DvTL6}Qsm6nJyz2fpp;iSC0u(-H1!2{t{IG48tHdhz%qw~zUVueM$MHN#H zk8CKNUXttjt>Z;u43x=S!uE9(3k~KH_~+__w+NH-rh(8oTNG|gL|$GQ6I}`gST6xX zB{CFFVrvwm)qQe(UU_M8;iLlgR~&nJcxm~R(sFZ&x(?amca8r1l<5_P#nKSckT;1F z&u%j6vm>TgOe|oc&E+|z_=l~-KmI>BS0C8m|+ z=9Rx@#`*f|?A7Wlet1D)iCOLBDE1z!pQc}|ikn_y&NVXz^DIY|hoN|S9>{G*UU`Y4 zKp1D91b^fl!+c42`K)R1t?Whkj-ZTXuJGpKW(ICmoLin(;;w&_Ra%UTRq^JEVspWC z^Q>ZpZC)tD#F?4c(&Az>o*T2qH?DMwnF)usRBkSoxu&5UV{QbK@Vw!fi<$V+5@SGajvVM*zq3IQkuOBJFP#Vd@0ll=SRv{3PueimxC!rML3X=1<}e!vRf zwnD#H;e%Z8U*jqg9U%tn`H)krMU7gPSYzvUaIz413nn0s&=$-B*KjQ!v~}Q=)sC&U z5`d7R$Kla!Yn)*{hdhU^w_whB!e$w^{Tg$+t+?wk&x?ByQ+KdkJGPGCLn;q`935o8 z9Seg+I&m^J6EYU=!=ej#a4VK*_|bx`SXuxe3zg$O&sZ~r3nIad6DnwE=doRo;A;$b5rj(IAftkakq1bM<#3SfR}FQIWh=2?C_l`)f}df%mJrkv z8eb|^6AIxg!>kWrRe{|cYAi@h6sF3wyMiUBu{A;fc$O0b~sg##!7vq>MILJ%85Bn~~!gE-42wSfp6g`-K9Q!TCf>c$eb-v&SY`31E zpqrf~MAr$;FIe7zwJk*85iD7Zr5)J!Dwah{mtsvj7Hq-R!5{|fMl5K>cIU7klxi>b zn@hpj8iLHaP1h&`7enDC2e4)f4wOlf<N{R9M$x-;0=a6~&!h#MX}B1ifQHr>JMB3UzG3^47&oW(eJFOClznm;mgXtFMP*hL(0 z87t1=n21O(@;VNx#y%Dtdm8)S#1VV3xWb_k+s~xeVrO`~3)oJ}-$Gbt2|6%;7opmL zwdtw@&<5;4Kq~%9thr23jaai5`)g+#`osq)N#^w?G$vlj=|Vp$cIwqx;D><}7R2F0N}u=5=I9t;USd{afA+ZeQ-C9_Z?b3GHYn8 zZWngw#`Z0Q$V)KOE<(Hv)7!Cgv0&^lkANLm5ep$(yKsUjq$IQsk64QXcH!8BNT@$g zvYIg7#_F5c)PXr?am?ibp=zNKord%vlFN|QP`HaQS_pL&Vd}=fYJobODQP9Bv5`H5 zPd5&zBVv~kK^ig#YKs9S+>2u>Qu3kKp2DiRe8>PMcMB8iQkP@`pMM)z-oV5H0InGL0SEl^SKU7@ z@1O3MUG5NbYTc*n9IJgwj(m9QqG^cl9huTG;O?UMidp~9E|(HIvL5N!IKm>)5h#_w ztQ=%H!ZHjZSrT82M4*6QepW{mu6!!w>3KUW&E>RJ#;>?KM|z}VnN2dMHgA|hUvMg; zF26e>Yl*R5S!T8Itgh*^Uq&BU+OB6CwmwmJnnV`XEB6a{)WB{hy-U&x-g2M#yLDw% z&7=!m@li#@2ZQ@eJDeYIqZ&Qf9Q+vj_0e0jhPXJqhUDsg=qNxtD~YMqv3Gh7EKo+i zR#Nq-dspb!>zmc_-9tC0#|vNM+-EP3IHB%s*z=L?uO3aGO$sR26mLHp$!MQBM6Vk0 zYt`X`ur@pE5_!_)?B#vt;qn_F8-M%n|87bIiw##X(9m=POxJ-IUw8xfZqTB1A`9_~w1>?~_dZg=NP3IRI<)R!SuY72Yc6^t5XT!qBQT%H`4Ze<=6N|r74S#qpT0Ljc@um0P zUB{NrUnVQLx#e8*j^9(7t-o28u;b*oBGbABXD%P8T6JM=<@B`ohwYf!(>4) zjbGJud|PaMFJbGjnAgL)L>A_i@+_WBXlsO>?9;}zO`CKfy*44P)evN@?v16C8{2j5 zsqfecE-j_x%)OI|uPS0=-#)$fD*I7!fw!ur-U%IY=#!iJnpXE=oVmwXe4m~#6#voc zp;~O15_@YR%97Z}#HbAKn(uVD>24mqzNubUWD5Vd?(+sOqxX&wO57FDv~p`gr(K^s zBO>q@Rb5+W?N ztVDs>Plh!HH|iJcV{90ky{hn5vV95`uv2Y0Iz{#}ZsWz+rS8i@n3R1@E~Y2+N`3m^ zvJ>+5?D}8mn!4ue9rF!V%ZU@!I@IdYkg*G;=QdZ<$qSc~tqVGZT{(;;(qtv`nh9*I zuH_v>xTTCQBRZF|2-VV0F$>W!;wmWpK= zH<3pqyW?2KWAZdVgmz7T|QG;1q|s8a1eOhuNV7bWJ$qZFzY?M_tLq=0A0 zqxUgdyr}X!;mzKklP{KeH-EixQ-bF%-}Pw|Ykk|J^dgsffu)9>&1VsoE$VK$5b0dR zy6Ei;R$Jz=1cDuPJ0ow)eH|8#={<>Va6O(VE{notzE*-F;W(RgKL=e<#Qnr;k(}P2 zu16(Hlg4!~OrPFP(NQTV_91%@*WtI@wU<2yJN-ak?VM}blXG;FS)}V*P5c6hWjnsHKoct(McWJeD3Lewe&YhT}I4Th4UZG{bXNI z_)v4ege;r6R&K4|-abJd&2+40*Sd??&8M$RB+X1%#CAe8BB$e0kKv@E=VVpzpukXj zi+t_+Bz{qyBWu2bINeB6aTkSkksc>IGUv%enyTn-YZQ9&cy!3pab0oQEa9`>Db1}N zS3M@P(0S69&*>m@6m^*~CUP$hO1@RsXfN?OqR1}j_k8PY zQteg4!Sko+scmxC+a7@j+HQ7yMeQ!<2w>P%Oo4oE1n}sGY;T?^-FoA#`z z#=IjVP(&k7-_ma5; z0<4DH7A^O!ix7v3e6Iw!Pbr*rVC}(#0$BVnWv4+?(1q|>*xiL&32DV^;*lugzTQY+pVLI zb*fX1R%qB>gJ(pULU7eU5AB5{uwN4e#M|~BoG9enA}8A%>jG5upY7Pg^-9j4`rS24 zvfx9T_#HhqlB+hYB4HyUO+l!ZB*$7TWsOy6Mz+2Q2Ggp-N=~$!pw)1(W2;`}^vReV zLRZOy=Z*^MGo`s*K76$D%T(TROencCE{}RM&G;|%_u71 zj>E)i8=K^Jd#!%8$@bGNdT_O`c4_FSPw_8ptw}-N8C3<>lkNrdXtu|FTW+<5wS1Gg zNbYd>)DB;1-A9|IeXKN1%ZV8Mc@Fz}{Rf@$BaNm;J@aLya+yc>x*k`q*P9CI+J#c1>G^Bj49C$F zCSEzyIa+C(Y)gm*+;bhKLansOzDl9Hsxpo`Hx|{j)cQpvnCyr7*YK09$s|%4yg@y^ z67wHQ!t409BbJzVRGGH$o7j=3vRyfy>2IZB} zRL8=)43UL=Wj^rPl4y&lO)}Q9ytl4C_{gF}<|O}P8CkuYXVDuOll9Icl?Eck-hBvh zyr`_>YvE(QE`nNQ@n$tGgER!6uVwQ())Lj{%pTok5P~pU-J7jXh>{ZlTNbL=*_Boi zu|{v3s;Hw8P45x7q)e<|ruu^KA};o5D5I-|7IHq-&89H3b?&@9lgG%nylI7R>Z<(^4EC|{aGhDN_3sE~S+nyx&P6V34^efr zk+T^86m<)6yQ?ZCqD_Bl=aPoEVt4QwOVbKHmv%SQF1lp7k$)`Oa5{A19_uRK>8)~? z16H-mN`!-}K2j8R4qwlX*l%i8;~LE{GCwDEreqMT4hKnC-*|+X>i7~bTY5yAq}3sy zgB4*BY{!K)772M-lKl=*D_HMQR^@SmTUT2|UY$f@w~F};-q8?bIToejcF2y?N>Rea zsy0q8Q`}c^mp8uayG_;aCC2S`n>*#igrtk>zIo&HwjW{~wxsRu-1Lvx@E|@`xCoH2 zz6wb?`3!3ZQAKc2JgV-=MtXu!|Fij2>MnLIKd0-dRQ8=?if(X>xU20kev1#3^2hg?8S zYYk=FSuB0rwaBLE4xHPU9J#@95Rwl1BTC0|9Mrze6lJfAnJLU_9#+lTuz5k4j=%c! z_`G?;En_~fv)syI?J!(V%)MwIG2hoXcBi7UY1cfGFDi;1r2Q;F7r&``0WH%kY!zEd zE2my{)*Y0u-DF?=)%=>pEv?H!k4ZmXNsV@~JN3yIX#up~vVdXFzOY23`S!l8INLDv zg2`Jtcl~85a{20{v7xh|S5_ag&qP*DVnP%{WJHG{U33xz8n472eZAFPOfXKinrB7z z?Ov$!!XX#9dum-wZ{&PFsN-6R{I-WEFg=er`H4#oyC+=4OYOMAihZv>Cw|b-H!`jp z%G$G*=r(t5IcJj|r@AVrY2$yfLFg@OTb~{0Y!!KYP^Vt(m7yOprf&O~PU`(5gZ_B> zZpV(tm9i1{s-ns#Pw*O-GW^K!B|SsNmEA12!S7D%IcD157`D8Dd>CNQ9Qjm|U1ZnW z9z3ffbGs{FGNYc!(`}K>Uo4ms;T0`U4~}B*%GyapCyfxF&t1Pza{IfTHNj`I=egx| zbtDicZ7d@qPld)L5hB0X$bT*_djww{qY6*Cum*oSGVxmdf<)=?_caA4KFyuE@x%T* ziOX85G*-b($H_&t?TxdK=q#}|J9%-F&~;AWaQ^Z0WRLV@>Nx3!Yu4umW$jZq*Phu~ zes*1*c;!Lf9|y{|`y|aAJm`l_h3nq+z149cTs-%0G-?8ahN%F>)HzxeEf6TjBnHW1#!Z5z0YPqKx#`YA?BgV#5 zRHD5?Be&y}bmYdgV<+EuR{iGSaehah#)qHoeCO$$S#e(!zxm05fCxSp+ zZI26z9|%Hw=Bc8V(Z9}XS(mNLxM$nl>ghVO+;28I?4DnL?oM>yM(eGi-|bpcS}#~z z{lV_E!|l^;iLjBEPyD#q^7todwmxlh@FkL!yc-qiu)UV$fm$dIcv*f5c>f(|sSM&N@zS5gqBR%LkA!iHAHIf!o z$HjOsq`>uJWF1OnSq(F?lOG0YPm7MONPlWFKc078{n4T$PCGoei0Zz)`jN3%SsBKg zka(f9`4hv5+8fF~p1ZT~cBD%v)33`gU!rc1$&x z?ksV6x_|zytD|nGmquFO7@u647=Nxf(6HOizxrnA52{ZcO1hmltf`Tm@OIrCphBO# zp1fF_5wqwdzA0a|XfYjs+vCy)#Pqo6w*|E>R}PtfLq!c^6lKY$E_|-s@>}d%;q2J73@u5GytoD1&jrJ z#K0y+r2Eru<%?i<);}))Kek)>=j41f>g>8tcRSWTw_9~*3=aUim2=?f)$tX>{&DyI z>HkNUOAR{m6w+B&Mp$Gzf;dl9vhoQF zYU$cdLIMfR&|*N)5FjGW(2J-^2oRctrhq6NQR!8&gV?ETCRh*f$zfEwX&pO8anZCySg1R~xUg(n=EI(uFEs^?R~K ztdACCmG9jbC>1wFJ1!}I0#$h?$ve~?mC%h}if-mG?y@N(U(d9kpMkk=nK7@&>+o$G zU8pSD;FaH~9~7+p)R1<5<4_;$nM%wanL!h3&M?2rWe2{1j3eS%gtrod&RTU+H(_}h zAl(bFjjl!4nq9{P*gLI~Vz93cV@qHAIb{4l>Q-=VFNBDzs8+6 z%6<5jpiyaEw|ks&a5&~*17{)Zc3%Bqk8%t<8SP1V+K?MQv*5#6_lULuv^so7V4_b+J9PlH3cbsFW5Ej0TPj)p= zADFxrH{5g5XlMDZ&07pVC)AaBwp^<)-><#Az-f1}#W!nb>bsueFZ>rX&WsrAy*s7U zem3BMhGbG?f^9-mSKKJKCt7z&EV}LFG-8jS+5#Y*I|S6JfGss6ZkX)Kep;gme=#L>U)Zq-dOV5NvquQh>sYNW`>(T;dWkYVAi3% z;L_G_W?B7plg+c)U&U9jCjt}ts~_Cj9?0u5hT*AQUN)rbT(fl6HZ0{GDw{FMZTFUa zIUAS!{>7IV^o3@dy0>1Vd8#^P>T-wZTW+HvE1h1abI}$-XV5!F$X7D#Il);UmCSNL z`{EYpy<#HZ>Hl;8(Kn0mXtTi8B%)-HX&7QKH8pX6PddC%Gi37 z)weI__I@tnHZ$Hw*t6hVxnaxKuei*hw2V20uXjD7KKiufi7fel$T+P%bM)Z%_VxuX z#rnLLsK72&Kg}AW7aK?SIvHf@PTs3%@o=s?yL8}j_f;bqv*n_au@dP{?;3f3*=Tgu zsN@H?2bon}2pt<6hfm+Y&XqY+^2KeOSr0`uw?uX-pw)(=wveyKnQmgEhyl8lkoWv! z%cHw5ZppfECbDVIv%vFiDLa&st34aN9XCtweA+j&1n5>7(Z@Q5^=^LJ-KDy6yNcFS!bbsQ<-MN zvI+Wh=|zXg4ZLyXN9HaKp^EpqUh}dH;ZWYtNMVQ})hFUjr4nt!;xHio6;}^>Ik{2D zF`3ZMZk%GofICV==_{}&)}J+Nq{$Gy89tR#ImZIEAy%`N&{kpfIdGczPK|xUmyIEx z$ka1-t=3u_`$mT(%6p3pDlv886=~4d8CSc?sq$Ozm?p+-PBP)V7tdQb*q0=5+u=TG7t^p}$7HhS0EC{NWZH_QY)9Y%}j*&Sw2rR1nt_01_Gud+|-vEeCgArVhR@dCRDfjoI- z7XjT0S8`OK6n&QxZjz5TO}s(!_)Zg#zB3gZozYYN)j8&1zmmwn%cBZUQ{J<6$A0KG zGtAIGDI4WgR2TrUKyQz5h$?Wme#p6B)+mj3y%=rz^r_=V-?^Gxm!MDE-3*_cm_3_7 zvbmjJ{o4B_+ZBcLH&P=u8a34-TFY(k_LRoTx{zjBzor#E$g(#Za5$MyN(`>f@@?DuL2xY7N;%~Whg%B$7J2V20j0?;c788jvmFO?E0^@^qnRCbs_$jr zP2MSbV*64F^Ex=RzKk_vM22;X8jCzQK5%TrE7pV2kMGa6Dd2({(hhXDWas7YP>2I` zE39O`SVUn|J~yM+y(Gu1tx5eL8w*7}AVyT{FI`EL~F6{pI8{cj$ zw9M$db>9Ez`|YD|i;`Y=c%7-aG$hHoy?&Z=yP}4x!ZrKdJ74qxy4B*Pn|4RTA9o+j zEd7)rv2xp?yXii4`=^~AUy@%{I!$cfZ>T<(`5~D-zAtl>dPo1FN{TcrEZ z3stu%_a=e3s z-weg^631+4slCXtBa?2LIK{1k(c`zlC%Nwcy45QSZ`5W+NxIGYjpnyNDhT;yK% zsSRgf`3t(*1qaewCHpmZP8{exv#ZBAs9kZlLrs}+!Orf70sY@K@_MhmIVml@fAJ}4 zYN_be+0R3mg+m(-d|bRto9=pg2m9T9()L~E^~Wdf&AyqgFa30V;?ugdJQNAW zhyl;DLuep01B8KQgP6Jv7YN#m0dyOX==yzWFm#Y0K%vmVp!pDp>nNOnY{h&bf{~^O zWFiRGNla)XPz>}N2TyYG(fERDVBpk{E#SxQK%O-8*hnc2gA4P zfRb`a*>X@Q7&@v$2Q`D7?(*ssz@Q*Oof~XasECea0hNW1q9@O9O&4qig=Yuv0)dR; zpkxRi4WShc(iQ{Wi656DAbH5)7?5d24mcqv6wS*oMPbF-s}P{M&}ao-Tu9EwC<74R zh%iA0&~13bG9$y{lL6fZEO;Sn)o z#O;=HK|4rzKe>kry~A+|5|g5!&))^II_5!vwwpA;jf1y}AIi?1!K$&C`h>8c4vTRR zWME9)CSQ!c)1eQ-cqu15A}QdvR~r%?E9L;D0lG~;?K!kFF9t(oRrRNgki3cyZU99C zx($3UT(}h(nU8F-7rw$PmJj9LvQI}V*q*rA$$}V5FS@9Am%Xf0$E{&_1pg%gE<4+3 z?{i|axIv&|0NuviY1~$*efeF4+KgLhq4Qkh9u~cB+V19(oqB?p zWW~cS>zDf~aklpiIJj=B)fAstJpW%q|$tvRTFo39{lz}SsNxYsNRR)0bUVQ zESI!@laD+{be~P0&_+<7@Z6!6DpJG#{sVgo*!-gf@*StX+W23f#y4;6UQwvE{(jV$oMsh|hC>zDfsBt(VZ6k!6a)!>+-eMq5R zD%28)eG3lf%+&&6?RCVt#6Uz_Whc`Z2Yu?$K|O1^kZqj!1pgy=LYyo22x!xLQzIf} zqj-pfH$*F64osRCve(}Sye+&rA8Hd56MWeZZo+_{7x%*All53RL-3d>2&^z%zyK7A zq&+agTr6?8hlP`JdkOf)DH%!9ldF<&CGW$zjWq1oT~=_g5GW-vTs#2=;&9uCC4tCM z+gPBergjPOulPLlV{)Rz^W-e$Ug#C519%V&xZOWRzaY}Q$|EWwB$6=D-Nf3 zFcg`Ylb#9_=`;oRrpW9>7_#SB2Gww8v*cRwJBNU{At3oz4-9E6xo{_(lj%G%io%Mv z>wt<+!6k#Gxgx>@^qY|(pqD=VccB4Cv=T@#9YUR=f(#XFs9}fSCZup4!UavnWbwDM zN~4L~mKp538(CxIAci@c9G&jr=ACx2@r5JK(r>|=eA#5V@+%y;6!LPobL234y&bIP`EOrcpQ+CeIx3OayfE(pOl?r)?_MU|h+LlJK9 zqeE>tO)#z-Xpks0XB<+ELzGL1fQQGRgP|mZ9u$Z%g@KGm^zlOswD*$fcIIC5a984C zo;?Zt1fDckNQHHWyqP|`b~9_XDj1&MfkA{Ag0P{Mjbw39?vZf1VmlIzrt>&sYDBX? zwS#z8B$3wQ1sJs35m8q$Od1ZO-+}<6A8~=J95npeK5(;ng&Y1B99~^h#=VlNpsgc!gCOd99$_}K#n$cG$)rv zhSOE~WqA0;i|_(vhJx&|h3z^yYU3QjpbdmzxVR)44VP4qLVz*4oXBtlofAZ%rxTIX zY!e4wnq&emzbq081&Po_a}fv<41OCdYRMVK9zxsC(lWIpfj>h*>&9q$;Z~}{5GSnO z!YPJTs^joDK~3cp8w-E*J3N$qsxcQCW-3QxSMxRrmGGf$&*sIt@n9KnJ2;E{!8 z(DI=j;z&*qoj?p@h2m+A1S4b!WSEouNvQgjc4p)8!R9B39#__n?%m-Ujw)^{sgKQ~ zwOH#E5PHSZtqkK$74rfFpO|4KNkLaHJDE>{G|g0bh1co)Anq7ENHkb&ih#+a1S6#| ze9$O{8ynJ#6$9A-X)^J%!c*aKBWV6CNMwF$bPoAAR@9KPAsHKIBn>8ijNC@nYOKH@ z250SbN=7K=_xh7{U%_xUwYpigMSP*XvDqbd3ie6*3=E{yuDn@^&e#DWBVri%DsTvA z9Rx~B9HE9_hLGmqa4@nH$xzNVV+Ttjg|U)4yyb97GCYM{0u)KJWU-^^jq?fgKtYJ} z79d_WZsG_lM2v3XgU9SZL=kdg&iM&N@jF41T?y&I?b|_`*}QuMVu&x2;J!RrDb9Id z)5OwLe#Arn=wzX-=7bdO8%3>ABiYoKaT(f0~<~V2` z(mPM3f%rJW89d@Sq+rgH0$%7=VhU6yT8F|43KK1J0>kw|+1n!cK`shpLo6DB0r`x< zV<-|rz1gC`3-V?H1-G}J^|GBwPg4+DF8lnMOKbo1{>}qZNw=2n7hw))S)pse&1#7! zKq)Yd^R&a5(g)#JA0%+R10gC@sLk#cZpz48$MOBiP2}s{)pS=Lxq5VbNlAL&UVlz?j9J^^$EeGeUB>|pBPS&Evlye)>rBL2L z;J3qMF+w;BKEbQ&Mo#d{kvBO9W+ zK#b#@2O7ZU$(LAyuzSGU%a373p*+XHT2WY(U=DPL)+W-%J2Do*`)z9E@{iNi9>X&s z54jTy$tAHgmyj!_+Dnq#ATr=`RY~OoCM0;DlYO)R{w_k(0mS>Z#3)deJwX|AF^#fe z;I97o<;BC8OjEU1?t5zXm@s5;jGa*u5PFC!gk}^*3}Jyc^YYh#$o%3R6jqp-GL;wA zEYHI32TkW>75B%-#Ir)IETd?yl~9$a5Ghe&H@mRj)a#-wa~|~zdZdlUcB8bWY&zA? zp*%)Xr?qOJtAv-u-DqG(B<6_K7On))BCs3;1${;R$ODd4X1;(SyVAj9@6cJeDmQ$wg(MrQt!r ziSQA2A-Xe0RZ>SVIr$kjWNW_9VEFEwc?p>sopS1FGfS%x#wG_3Bnsutugpr9LkdMv zEWZK|1c{~seq8^q_DNKgUqkO8Av!dmzEEM@vy)Zq1h0;wk`-F)C=*#PleKX z(aDg3Azmc=M=&*nVi%zx`hbvagd7EYmS|+8fe-OtY;p>|Nfe}Fj3{VLoMDYSvz%*t{7_giMVF7WTw5~HNUJ4|yF8!XI zo=RBA_C1Z|F9#_*#IuF4o8@P+xct1Dag1XBynEJ-mNnc1h-qqT8LGs)gmDMXO~&;ca6tQf^xB zT*9W5RXnzp4wCoisdVeG**dn9rWjO1oeWI#|6v&T?elWR1WNZGR}SN`xc$yYaf@5FEw9so_uthKkm&{ zBDWLm-T6sDx9cVuW_-Ed$aP~L1B2m<&p3GkDkAP5!|1_uek zK_M6_@F0h_uKD2*4Ni$?iBttfiYdX$OR1fAzcxvYMG;~?(-vpW=em9yTY8SuCqw8# z-ML&26!J;Ca}WoEg&i`T~RbhZ_)^N=w2zW92a&&O!RZAZvk53 zGO@O;@uYVDlL1tnr&kQmZI~`!+mj<+iY>5=l%~AqL$Fsy+qY4V9fw}k=$lB8Of-?C zF3xZob;L_*o!%nf=UcGj1c$&>al+=CN$1YhzY2SD@#(?lmfWpXBG&tz#@Da=<5#fw zIHgh6;w!lco)n>6eGOSMWnh1lZ3w3rOgJyY-QQjMyl2#z>X$5Cenu;go-VwB&75|X zICQUb3u}Y*qDb>-&V{>Y&mWl3HaxyDvTEOQ6kg`edoKOSAPHN`w2lrX(u+fH?ut_e znkFVY0r%9VYgxl_ZtgqFHMZ|EtWJoz<$l+=m};}<#sU=jyhU}3VCsXI_Ae;>#Zx0j zdiH_h?PpDw72u(fCL6$wl(!w{TyOmE@0jMv6&$G{yIGpc(<8!y-Z0nteRz>4;+63B5q;e#-r7G zg%Fh^gi|M_o7cT;z6UaeR%7=o(-|trGASVU#YZ+C`MESoxs&veGZfUt`?c&1H9OfK z(d3;To@hH?O25!^5IgGi`u)~D@#=DuUpC!9v#;oTdtlK5LAUYhBV?|0J5EG;l@j2d zI^%{xhucWAfiPZx%%84TCsDN-WP%T_=l#YbM05%8UKGwI^bhdD+UbUkX(X@(??l)L zDBrP2|2=K5_W5LFV{EEqZuA36{}J)9Ruqen+$nPFzUF-oeD;m_nC~{7$em2R|ABJ$ zT{0^F`@@Z8+h_C>wDXk&8$K@p8y(d?{x(6qd`nBZv3vJ6IYsew@3wa~peQtJhRJ6zMMt1lMBj_{1TBIU z^$k8Nh>-;oIY4Ua3K(;OS;&|+4ai#;u0^qi*k^|%jz@JE^3seM;iI8By$VifFyDe9 zpAtBrys0s@K$I!-U%eSQtz-hYr#gSz`230Y7h~CvsWq1_`XAccfYDgYvdp+L*n)bM zJz?6FT{qaD?5SVUho2xihRNrX?Aa801X?QDJm_zE%S*RC-~Ey2(3=(Qp{qH)h`dWK z4@mFQ-$l5_;W@ah^6$Zyg}F-PDK`wP<#l0iA~N&`BsU>v;SD_tb`WuJ4@) zm#Q)lK}W*Eu@gq0!orM(h{b(67hf zbgYPCSI|$~bk@6><~nLZI8rV(h7KgNSjrN>jhwJP&_1Yu+#_(vSV%#beHNja8_f1# z3Y|mmE!Vn<$+%G-4qdEn;HaWjs_eE-EYa*u;OzE5722fA3+>KOe}8i2$hQ@f_&LH# z>KvbU{e_(~rQ7Rn1w0$380pz{=*R2jsF|Hqak-h!aJ|p!-6DCPxoxjALQa^#q~@Z< zbU*Cs5G&r^G_WAAv-5=$ac_OGr@7=K^>cUYn?fQ4#jpZ$q(GkBvM_`$TuwtHs}$Wr z2}c&<9R`#kr_a!!(J!Xx(KS6aQ%)JA{#^$KUg{}yr})CgyWV&A8NwMh;37r|PA6Lj zQJ9!ZOWtOhpoh>iN&sbG;fy7w%>U{O#N*hZguGW%K>lU&h~L4(Z06;buW>ZR(ab1y)%W7>4%JIqS>@S@c0`AscjfMD zcY^MQYw=VFbAW~RT18)q(dWq1X9_%gW#I?)>mPzVc6g~>d=QBXe8;skpux<%l{mYD5oe9zs; zX60$|YLE@3({Yz2za9}Qwcjc8B2^Lh^>yG)JJ0-wJ#tsqCez<5j z(glt@SI(~G0}6E3h2tYACG6H5LeK<5q_>y4Z^lX@!@>1Kn66RZjyQ`{LuK;72l+Z* z2|hCwXrQ`-M$0w-5=7EhL*0_(*i+a16?45xOiZ9UZ^u6*8_ed!9y$BOk|Y-pB4#Xb z&hB=|65GW=BLTAi5rtii+taPruaDl{r!^wq2^klsj7xpZ9uoMj*3N%bII7@LN;2_~ zTGD0CJ>n%KSO^&`1za>v3X<7|k5G;R6w$a?UWQu;sP)Jf&KiF9W##gHqV!nf#&bhq z7D|nB;il@iD&BHxFFCH>i6Ul343>$7R!;Wie2(9 zFnW+)_&5+T)7^fe#J@6py?Z8e%Yy~BKY+{+Y-li0z^xj1?F|Nk0&7tM1cdolnI8kl z{6~Ju{K3e*f64qHxE7u#pN$5{{C7LR?MMm~lEM>S4Wjb1qtm6MA z{5Yn}pF>)e`3rb;oMHTQLDm8`SHL|}CcKXiMbN`53DI|kfx-)OfatzPabaXuz9@tv zAoDvy#YyA9i+w!g77WR{BF8?dAQYX%uR*~n*sI(%yb6t0OvHs0Z;UhGG@BA8h>H|n zHf75ESJz~Ikqn`I5?oC8OuUjjzY-wx2NPQGc9Ej-@dCY6*-e1V&q@YleruckWPK{M zfx`x(pW?&Ll=&$hhER%06G9h|`R%hKy0L(JrfCQt;KapYCj;Iwz*Q9{mI%oFLX4MJ zZAQujlm@gRvFBE0ei5$z?7w9GPn3D4%)kAo%&*x>2W0*UK;{?vOXfekD)X1pi{h0W~F$WGn=Kli7{56}I?wOiY@zypqyGCwC z$+0Dd{yLc-`j^a~@KfgBf^J`Y7pB(j3b<$XFlGMsHJKmq;gx5~{C|I!Fm}2qE2Gf3 z)zbd@nc1g{X(zLMMdXK0nb&r2)O)MYK<4IH9^RN9-|k&dVrx<+yR1@wPJG|x$K4k> z?$k{f9k?z)L;lTsTsN(5(w66C#gUUWLzEz;Gdr^Kj@e$a-`Vr^o!j=S*N3}omTy~} zl6@9;D4^JCRv|#}t@R7#S5;?D#GYBGO>?pJ;DWsxFmUc-d#j!EIIN;#EFihJR&k6Jngw=BbSch|}+&KF;k7O+{?D$%x@(Q-84 zU3vDj%2~dCOOcY`i=(@?u7vM0yXpUVNv{3l<;}Gh(tIy}-)6j6pK$4p%-D&st7nc3 z?fW`OJZGBWIo_1|*?5;%*Zqc%BVQK>dpCqGM!b}ieKR~EyY=+YwnXlCZw}p9%2n;0 z-ZB%ASwTG4*&x%<%Ah2Vs&45W*ujPSXfP4H1<#-_)l8_m|6B2sFFT_|lK4Z9wk z*lkgjvOJ3tb6lACYMqhPXu90yp4~r`ICO)2)8Iy%;;?(gSHIsoFFj&hn;ZGs zvsu;ldP*$s(UTQ(fsSXFUL0Myw7=_Sqlm@Hh2ae^4oWKoRbT2}eEz6EG`v4kR(t}H zmf~`nM!yM@*)*4Cc_aQ*t%p*E^0C>fT$M&kFQ?@WY48$foa60X{*;Xw;;o8#;c_)B z)q}?e-l$o+enWTq&re(!)JvJn6iRsGd&zE~@txZ_#N3vL>2-$Zo!H(Me6vZ(xxF+? zz4CnQyl9YPi{7!!M&&@WD_owv^Lrg8$~$ML>_ z{Td@#%6t#Xbq8~HXq(9KS>1ezO6?ne8^}{7b;>TjXZAE^#Zl~w`tVGP+@8shB<}Pl z8S1(P7NfX*S|Oi1tCk2<1$m1L7H#c)HFoX?a!TE;owWpZvQ6M_EG0TSPj8LNLakUn zTpSkmYB;g$`|JHTX1{M;o?A>gRBwLgbJFsu&o{q*yY|_0?!$@sTjvvi$p05-e969? ze%l|X2Q|H8`S^Mh{xaX>SZzxAQ9nMuaADoa`Ae;OkEu0U0hsBcP6@rEsi7~clu@+3 z@mIW0Ic>{a_}30fd*|c&d@f%9=5g-$y!&vymcf_rDOa#P zXC7_616i24&sU(<;CaCDVQWI`Re|7H=Lp_|{L=##uHKsU0>(Ns`SVh;Jg28Wlnxo6 z^t6>;bXoBq3bCy+E3kSl?mio|bkjJq;)Jco`p1YTwDz@Y?+*ENf3hS|7@7H*-m`+_ zsNfv#b_v8JR6yH5L^^6tsru4!j^qHkL|dNUd41K z_mfF=wn^L<{kJtm8e^&T>JFLMn@TCv4=BdmN3Wfcshc7tp1g0(xibyg|220>CQ!+j zd%E$J>2?8#;1aJg2+idLM7wcvu=RCxb#}KGz=8xgB_L>4M|*cKe_si}&vx~vyE72Y z$cgzA3ekM?)=O-@A!xM;9_45}OvqQEX_U_KMo^H$|M0K8%7St46;=zH0 z1vmu-pn^Zoh5!UbqisMPLHXcRaByKX)I!TlYwa%z$fx@IZyq39Zh2G)Sl}QC^c&9F zY5ai$qzQ@v;}~FEkT4o)Mlv_FHDl%=wWaErX&L{sWYxs~q8-z8eDp8V(A7iueaL>; z?}Vc2Sa35exG;z?8a~d93I=@8@cTc$0S0CMRL(Ro^A7{7c2a5Ag<;+eO#jb~D&deXcF<4X`1~-Mo zRdEBrKyHWC51RR^`sxP&-u0()CU8U?0Gti9{5908^ZW;NhBYc*7uQL`&B+O)x%N@? z%(ZPzfsAXm7FuW|kVe^5d!Mb5v7xpp(Uz$X^%jBq`V4}rc?irsRtq4C9+iq_ zB?6g)iOlX5f!7x@u|txW2Mj!QU>@+=v|hU-`~aqn@}XkxY{2!baN-z^oWL-q3a$;_ zYV^0C!#KzNrwXQl+!Uq(%$foA)$0Zr$Dp5QG@})cs%vD$714!pox#EY{wkzb5aB2O z$ZpiwQ#h)fi3yn9J7J&czHD*8WT|W*YF%yi+^1)TMU~ys1SYb4am9`n0jYKpg z>+R7+CD(GIxc^?pgdMy6>#VQ!d+iSR12gLi1eJaff}^#I;j*j6fQ~D!epLVJIGlj0 z^hd=&|5U>?z-ahKzyG?g{xA~N#DVJThT`a-C2%$U62fS9Yh!JUnHI&^&>GE2G}N}l z7y-!$wT;QBLIUa**Y4XttX)inpd!+Nx%g2E7n36;jFzx6w%DU9 zi@^ZtcY(BrhE^D&xj9j9k2V=dooQicjxl5AC`E6;Y8e|FVu)sD7$EPUDHhc{%#E6d z{@?yPv#YeOzn>eBAo}m5@}tWtC=DFFR$5a9AQ52VpzW<;gZ=~ItPw?2 zoiwhqR{D3^A+26}zi5cW>`wN>UvuFHef@!UGU}yq{dEA^|AJ8fE0F(9JErxO->m;D z^F+W<&slKKZ%gBz*8^REPyLB|6#i7sH1V|m*8#4X_?>&!uy5U!#@)K}-(%N3T95rV z_Ib~W>Sx8pH%sF(nwa3glhf7D-)I8)r*dY;(+Adr|HeO2;;0%dF1K46H`l?0{_hxQ zfeHQZ43y}GqMPCR!)0)VGXOYZpSGE~@g64s@DukCwTM)rEs<=b2PBL)vjwgmV890; z|6?oWA*Bv7?f&gDU0u}unDXy!P@Q{m5eykz^&Of26$@2A{dJE1%tEhP!KjZBVBD8f zSsX1@7GNQ@H5TGu`^M~6^0W0Q|6rlITrSi=B?9-RSPu6w3n1oyvQY0IS?E0z`#-Qy zSp*6d_MHdUU#N!bysrujWtiw6W=W^OpDLK0PaI(y!2BBv6=lIu^aU7h;He(2r$-OK zUqe6s*Ufx>H!5`njw<}gLZIKPm=-E&q3cI&9Sdc7qKb5IgDu9m=gr3JN$CAGE)@Ge zNvJOjK>e}a{R0VwoMlA;iB@oB8B|nuW2}q~jID|Lh-fY%nP`NeYMWb_ z8E9Lf(p6Cx!T-4p({S%urr{qekF{y}H#X|-g`!q&LU4(lR=Aj#`+&)GT0zT54ui&F zfn=mu43Nc|sHJ6LN;KC7Qp}rbn;9GK1&B$Df>BVEmse0nmGyI@=D7abe`9uS{v5Mw zKW58X*Z#;p^AOZmUY1AxYTJ@6jI`10+J?49Kr(x>u_B~;D0+`my+=Q%D^Di}D=z@S*;LM{TG=z zYh}4^!^AW_21UJL!4>6N;|8+<)4$PH|F10*?oZ`R6D5`FP5h)SCiWL7>I(}lqtF`H znE$WXlK+Msb$vbdU$n&ppW#GZ<;3+ATjT1AnBae;E%cwtnH_)i5AYwf#e}YrMNLWL zvTj=ArmC3G{~c{LR{{P0Gi@=!+x<~j_v5~Px5o930N|XfTc;oKw$aQO%BxYifjP7S z`L{~u0gMBWZT^L%R;@Uq`Wh}XyR<}wRBRw+NP#X=Tc=B%HIfUwVOp;sQzL$T-?0_ zI7aP(-w8{LXb9x;29ygxxcO@@wOYu;X4L<7`0KV!OyKxZJ{0}Y2HaqUGcNh16EKJ| zO8+1%9IBe{PZdl9BX^hv{zzC%{ILjD6s;JF%f9P}%dhbR@K@2P!M_vM^C>tg3i78a zrUlx_Z-=mUmVYBGrja5vDv=BKb@Ui6fArW-!lGys4b3T5sG(>s=51zmC-tL@iJCqB zYv|Sy785eAo(&aK55vVTAH!A80iZvKb|=v9RenV`l^*>ZI&0U;jngjp7 zx%`Wzn6_q?pr}`45M1*F4UCI<5150VR@5>=Z(K_)4(yur0JgHiFtdx30Xjgv>gGhz zx&DV%Ov?>(Ov}I%w_kVde~=Kf2W6Tlh9d6Gt6(s0zCRdH5IEPu#;*m(UcIDOqpG8F z=U}Kx@V`|vO+H^?ngl2rMITZFG&?RPv!JfN*$R@BBmY{T!p>_@>Q~Cb`;6AbN literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e9fcaadb80eaea680234943181c0156c3dd8ff8173daaa6c521629e631dca2d60000019f38b6a54d b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e9fcaadb80eaea680234943181c0156c3dd8ff8173daaa6c521629e631dca2d60000019f38b6a54d new file mode 100644 index 0000000000000000000000000000000000000000..c50ba3ee900a6df25e333436abc0c9745bd76286 GIT binary patch literal 221 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 bf)C53xc1z{C?;6bXBq&2oF~Oa>qq|qUf~zk literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/9f458c07675338a7426a7b81ac4fb1baf92d034efbcaaf4336379640ed744ded.sqlite-shm b/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/9f458c07675338a7426a7b81ac4fb1baf92d034efbcaaf4336379640ed744ded.sqlite-shm new file mode 100644 index 0000000000000000000000000000000000000000..fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10 GIT binary patch literal 32768 zcmeIuAr62r37U}9o$P*7lCU|@t|AVoG{WYDXN;00+HAlr;ljiVtj n8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O6ovo**AfQj literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm b/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm new file mode 100644 index 0000000000000000000000000000000000000000..fb1c06663e916e1d3fbfcaeb7b7b0390e62a966a GIT binary patch literal 32768 zcmeI)p$)=76b9gf36Pa6fU2&h7z9JG1A-0OR3k~cLM1USoep^YquYo;>Y*7cl3NuGOfpXoc*1f z>vjSJ2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+0D(CO#IF-VV4ec;CyNjuK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72>h482b4r6 AzW@LL literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal b/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal new file mode 100644 index 0000000000000000000000000000000000000000..ba40aeacf8d383b95c6b5f6c06e9560cd085a7f1 GIT binary patch literal 8272 zcmXr7XKP~6eI&uaAiw|um1$f1J@#EzNSTw_V;laz5-7xoEI!?`+I9V!iQ&P4KA9z{ z3TgR8xrrqT#z5UnObiYR3P80?Pz=%r0wDb?U>1Y`n}@{5#$;m9tBc?T$}sYmFaXgg z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fe{k|jhu|^;_~v0jfo|RNja(U z$!YP9K8``Ya0ZiekgH>et3rsQlaH$cTv$PaO92cLlS}f8;xkheLR=$46as=geI0`$ z6}(*|b)X80lQU9NN^??E;!84fQx!b@LR{TlgTRuS3gMn19{!;r3PJwio-V*Z2lw+~ z;{^-djeGlTYfo~4VgoXiFk<3m)T5&zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O KqaiTTLI42Ben|lU literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite b/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..0b58f0dca7d6ce95907cb0b322dc4802f04688c0 GIT binary patch literal 4096 zcmWFz^vNtqRY=P(%1ta$FlG>7U}9o$P*7lCU|@t|AVoG{WYDXN;00+HAlr;ljiVtj n8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O6ovo**AfQj literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-shm b/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-shm new file mode 100644 index 0000000000000000000000000000000000000000..af885c62b85b469667bf1e0b4798647ea866258a GIT binary patch literal 32768 zcmeI)u?fOJ6b9ha44`&dA%!!fu@QSWun@6u0$ZD4XJh9I*(gg0Hkv0Kq_q?B{czmf z<9H9g0j}(pDQA+>eA-`P%}({BdfqpOX0hKE?d5e`ov*vwy8Q8d?j1efgAD6&?q`4J z=DM8#0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV6RY0`cpF5E!RG{K+B&2oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RsOe@Bv0a BBTE1P literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-wal b/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-wal new file mode 100644 index 0000000000000000000000000000000000000000..3b730af34a7d805e7f34336afe23e3ca71bbe816 GIT binary patch literal 8272 zcmXr7XKP~6eI&uaAiw|u*}a09Va%I5Y=2CstDBr%2^3;P7Eh5aTmLfZT6=JyPi9G~ zLRx-NZeodoF;F)X6N7_-0#Gdz6oa&Z07yRzm<1ug<{|O1F_{?j>LPf7GK~Bs3_vsr zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONV8nz#BPS!fxV$`LV`52SQch}o za$3Bjk7JN8oWbNA#=rR0U7J5Lb8CAh4vSLbzv$hks~@LXdyBrwcI9!To&L zc)=q3LVoYr-!-{Fu>l!M7%}lO>e0~<7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C K(GVDEApii8%SILe literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js b/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js new file mode 100644 index 000000000..b1088b2f2 --- /dev/null +++ b/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js @@ -0,0 +1,11 @@ + import worker, * as OTHER_EXPORTS from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/src/index.ts"; + import * as __MIDDLEWARE_0__ from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts"; +import * as __MIDDLEWARE_1__ from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts"; + + export * from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/src/index.ts"; + const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; + export const __INTERNAL_WRANGLER_MIDDLEWARE__ = [ + + __MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default + ] + export default worker; \ No newline at end of file diff --git a/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-loader.entry.ts b/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-loader.entry.ts new file mode 100644 index 000000000..c48da4eae --- /dev/null +++ b/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-loader.entry.ts @@ -0,0 +1,134 @@ +// This loads all middlewares exposed on the middleware object and then starts +// the invocation chain. The big idea is that we can add these to the middleware +// export dynamically through wrangler, or we can potentially let users directly +// add them as a sort of "plugin" system. + +import ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js"; +import { __facade_invoke__, __facade_register__, Dispatcher } from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/common.ts"; +import type { WorkerEntrypointConstructor } from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js"; + +// Preserve all the exports from the worker +export * from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js"; + +class __Facade_ScheduledController__ implements ScheduledController { + readonly #noRetry: ScheduledController["noRetry"]; + + constructor( + readonly scheduledTime: number, + readonly cron: string, + noRetry: ScheduledController["noRetry"] + ) { + this.#noRetry = noRetry; + } + + noRetry() { + if (!(this instanceof __Facade_ScheduledController__)) { + throw new TypeError("Illegal invocation"); + } + // Need to call native method immediately in case uncaught error thrown + this.#noRetry(); + } +} + +function wrapExportedHandler(worker: ExportedHandler): ExportedHandler { + // If we don't have any middleware defined, just return the handler as is + if ( + __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || + __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 + ) { + return worker; + } + // Otherwise, register all middleware once + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + + const fetchDispatcher: ExportedHandlerFetchHandler = function ( + request, + env, + ctx + ) { + if (worker.fetch === undefined) { + throw new Error("Handler does not export a fetch() function."); + } + return worker.fetch(request, env, ctx); + }; + + return { + ...worker, + fetch(request, env, ctx) { + const dispatcher: Dispatcher = function (type, init) { + if (type === "scheduled" && worker.scheduled !== undefined) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => {} + ); + return worker.scheduled(controller, env, ctx); + } + }; + return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); + }, + }; +} + +function wrapWorkerEntrypoint( + klass: WorkerEntrypointConstructor +): WorkerEntrypointConstructor { + // If we don't have any middleware defined, just return the handler as is + if ( + __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || + __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 + ) { + return klass; + } + // Otherwise, register all middleware once + for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { + __facade_register__(middleware); + } + + // `extend`ing `klass` here so other RPC methods remain callable + return class extends klass { + #fetchDispatcher: ExportedHandlerFetchHandler> = ( + request, + env, + ctx + ) => { + this.env = env; + this.ctx = ctx; + if (super.fetch === undefined) { + throw new Error("Entrypoint class does not define a fetch() function."); + } + return super.fetch(request); + }; + + #dispatcher: Dispatcher = (type, init) => { + if (type === "scheduled" && super.scheduled !== undefined) { + const controller = new __Facade_ScheduledController__( + Date.now(), + init.cron ?? "", + () => {} + ); + return super.scheduled(controller); + } + }; + + fetch(request: Request) { + return __facade_invoke__( + request, + this.env, + this.ctx, + this.#dispatcher, + this.#fetchDispatcher + ); + } + }; +} + +let WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined; +if (typeof ENTRY === "object") { + WRAPPED_ENTRY = wrapExportedHandler(ENTRY); +} else if (typeof ENTRY === "function") { + WRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY); +} +export default WRAPPED_ENTRY; diff --git a/packages/data-tables-worker/.wrangler/tmp/dev-xNCQ0m/index.js b/packages/data-tables-worker/.wrangler/tmp/dev-xNCQ0m/index.js new file mode 100644 index 000000000..695658f7e --- /dev/null +++ b/packages/data-tables-worker/.wrangler/tmp/dev-xNCQ0m/index.js @@ -0,0 +1,6381 @@ +var __defProp = Object.defineProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); + +// node_modules/hono/dist/compose.js +var compose = /* @__PURE__ */ __name((middleware, onError, onNotFound) => { + return (context, next) => { + let index = -1; + return dispatch(0); + async function dispatch(i) { + if (i <= index) { + throw new Error("next() called multiple times"); + } + index = i; + let res; + let isError = false; + let handler; + if (middleware[i]) { + handler = middleware[i][0][0]; + context.req.routeIndex = i; + } else { + handler = i === middleware.length && next || void 0; + } + if (handler) { + try { + res = await handler(context, () => dispatch(i + 1)); + } catch (err) { + if (err instanceof Error && onError) { + context.error = err; + res = await onError(err, context); + isError = true; + } else { + throw err; + } + } + } else { + if (context.finalized === false && onNotFound) { + res = await onNotFound(context); + } + } + if (res && (context.finalized === false || isError)) { + context.res = res; + } + return context; + } + __name(dispatch, "dispatch"); + }; +}, "compose"); + +// node_modules/hono/dist/request/constants.js +var GET_MATCH_RESULT = /* @__PURE__ */ Symbol(); + +// node_modules/hono/dist/utils/buffer.js +var bufferToFormData = /* @__PURE__ */ __name((arrayBuffer, contentType) => { + const response = new Response(arrayBuffer, { + headers: { + // Normalize the media type (case-insensitive) while keeping parameters like the boundary + "Content-Type": contentType.replace(/^[^;]+/, (mediaType) => mediaType.toLowerCase()) + } + }); + return response.formData(); +}, "bufferToFormData"); + +// node_modules/hono/dist/utils/body.js +var isRawRequest = /* @__PURE__ */ __name((request) => "headers" in request, "isRawRequest"); +var parseBody = /* @__PURE__ */ __name(async (request, options = /* @__PURE__ */ Object.create(null)) => { + const { all = false, dot = false } = options; + const headers = isRawRequest(request) ? request.headers : request.raw.headers; + const contentType = headers.get("Content-Type"); + const mediaType = contentType?.split(";")[0].trim().toLowerCase(); + if (mediaType === "multipart/form-data" || mediaType === "application/x-www-form-urlencoded") { + return parseFormData(request, { all, dot }); + } + return {}; +}, "parseBody"); +async function parseFormData(request, options) { + const headers = isRawRequest(request) ? request.headers : request.raw.headers; + const arrayBuffer = await request.arrayBuffer(); + const formDataPromise = bufferToFormData(arrayBuffer, headers.get("Content-Type") || ""); + if (!isRawRequest(request)) { + request.bodyCache.formData = formDataPromise; + } + const formData = await formDataPromise; + if (formData) { + return convertFormDataToBodyData(formData, options); + } + return {}; +} +__name(parseFormData, "parseFormData"); +function convertFormDataToBodyData(formData, options) { + const form = /* @__PURE__ */ Object.create(null); + formData.forEach((value, key) => { + const shouldParseAllValues = options.all || key.endsWith("[]"); + if (!shouldParseAllValues) { + form[key] = value; + } else { + handleParsingAllValues(form, key, value); + } + }); + if (options.dot) { + Object.entries(form).forEach(([key, value]) => { + const shouldParseDotValues = key.includes("."); + if (shouldParseDotValues) { + handleParsingNestedValues(form, key, value); + delete form[key]; + } + }); + } + return form; +} +__name(convertFormDataToBodyData, "convertFormDataToBodyData"); +var handleParsingAllValues = /* @__PURE__ */ __name((form, key, value) => { + if (form[key] !== void 0) { + if (Array.isArray(form[key])) { + ; + form[key].push(value); + } else { + form[key] = [form[key], value]; + } + } else { + if (!key.endsWith("[]")) { + form[key] = value; + } else { + form[key] = [value]; + } + } +}, "handleParsingAllValues"); +var handleParsingNestedValues = /* @__PURE__ */ __name((form, key, value) => { + if (/(?:^|\.)__proto__\./.test(key)) { + return; + } + let nestedForm = form; + const keys = key.split("."); + keys.forEach((key2, index) => { + if (index === keys.length - 1) { + nestedForm[key2] = value; + } else { + if (!nestedForm[key2] || typeof nestedForm[key2] !== "object" || Array.isArray(nestedForm[key2]) || nestedForm[key2] instanceof File) { + nestedForm[key2] = /* @__PURE__ */ Object.create(null); + } + nestedForm = nestedForm[key2]; + } + }); +}, "handleParsingNestedValues"); + +// node_modules/hono/dist/utils/url.js +var splitPath = /* @__PURE__ */ __name((path) => { + const paths = path.split("/"); + if (paths[0] === "") { + paths.shift(); + } + return paths; +}, "splitPath"); +var splitRoutingPath = /* @__PURE__ */ __name((routePath) => { + const { groups, path } = extractGroupsFromPath(routePath); + const paths = splitPath(path); + return replaceGroupMarks(paths, groups); +}, "splitRoutingPath"); +var extractGroupsFromPath = /* @__PURE__ */ __name((path) => { + const groups = []; + path = path.replace(/\{[^}]+\}/g, (match2, index) => { + const mark = `@${index}`; + groups.push([mark, match2]); + return mark; + }); + return { groups, path }; +}, "extractGroupsFromPath"); +var replaceGroupMarks = /* @__PURE__ */ __name((paths, groups) => { + for (let i = groups.length - 1; i >= 0; i--) { + const [mark] = groups[i]; + for (let j = paths.length - 1; j >= 0; j--) { + if (paths[j].includes(mark)) { + paths[j] = paths[j].replace(mark, groups[i][1]); + break; + } + } + } + return paths; +}, "replaceGroupMarks"); +var patternCache = {}; +var getPattern = /* @__PURE__ */ __name((label, next) => { + if (label === "*") { + return "*"; + } + const match2 = label.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/); + if (match2) { + const cacheKey2 = `${label}#${next}`; + if (!patternCache[cacheKey2]) { + if (match2[2]) { + patternCache[cacheKey2] = next && next[0] !== ":" && next[0] !== "*" ? [cacheKey2, match2[1], new RegExp(`^${match2[2]}(?=/${next})`)] : [label, match2[1], new RegExp(`^${match2[2]}$`)]; + } else { + patternCache[cacheKey2] = [label, match2[1], true]; + } + } + return patternCache[cacheKey2]; + } + return null; +}, "getPattern"); +var tryDecode = /* @__PURE__ */ __name((str, decoder4) => { + try { + return decoder4(str); + } catch { + return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match2) => { + try { + return decoder4(match2); + } catch { + return match2; + } + }); + } +}, "tryDecode"); +var tryDecodeURI = /* @__PURE__ */ __name((str) => tryDecode(str, decodeURI), "tryDecodeURI"); +var getPath = /* @__PURE__ */ __name((request) => { + const url = request.url; + const start = url.indexOf("/", url.indexOf(":") + 4); + let i = start; + for (; i < url.length; i++) { + const charCode = url.charCodeAt(i); + if (charCode === 37) { + const queryIndex = url.indexOf("?", i); + const hashIndex = url.indexOf("#", i); + const end = queryIndex === -1 ? hashIndex === -1 ? void 0 : hashIndex : hashIndex === -1 ? queryIndex : Math.min(queryIndex, hashIndex); + const path = url.slice(start, end); + return tryDecodeURI(path.includes("%25") ? path.replace(/%25/g, "%2525") : path); + } else if (charCode === 63 || charCode === 35) { + break; + } + } + return url.slice(start, i); +}, "getPath"); +var getPathNoStrict = /* @__PURE__ */ __name((request) => { + const result = getPath(request); + return result.length > 1 && result.at(-1) === "/" ? result.slice(0, -1) : result; +}, "getPathNoStrict"); +var mergePath = /* @__PURE__ */ __name((base, sub, ...rest) => { + if (rest.length) { + sub = mergePath(sub, ...rest); + } + return `${base?.[0] === "/" ? "" : "/"}${base}${sub === "/" ? "" : `${base?.at(-1) === "/" ? "" : "/"}${sub?.[0] === "/" ? sub.slice(1) : sub}`}`; +}, "mergePath"); +var checkOptionalParameter = /* @__PURE__ */ __name((path) => { + if (path.charCodeAt(path.length - 1) !== 63 || !path.includes(":")) { + return null; + } + const segments = path.split("/"); + const results = []; + let basePath = ""; + segments.forEach((segment) => { + if (segment !== "" && !/\:/.test(segment)) { + basePath += "/" + segment; + } else if (/\:/.test(segment)) { + if (/\?/.test(segment)) { + if (results.length === 0 && basePath === "") { + results.push("/"); + } else { + results.push(basePath); + } + const optionalSegment = segment.replace("?", ""); + basePath += "/" + optionalSegment; + results.push(basePath); + } else { + basePath += "/" + segment; + } + } + }); + return results.filter((v, i, a) => a.indexOf(v) === i); +}, "checkOptionalParameter"); +var _decodeURI = /* @__PURE__ */ __name((value) => { + if (!/[%+]/.test(value)) { + return value; + } + if (value.indexOf("+") !== -1) { + value = value.replace(/\+/g, " "); + } + return value.indexOf("%") !== -1 ? tryDecode(value, decodeURIComponent_) : value; +}, "_decodeURI"); +var _getQueryParam = /* @__PURE__ */ __name((url, key, multiple) => { + let encoded; + if (!multiple && key && !/[%+]/.test(key)) { + let keyIndex2 = url.indexOf("?", 8); + if (keyIndex2 === -1) { + return void 0; + } + if (!url.startsWith(key, keyIndex2 + 1)) { + keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1); + } + while (keyIndex2 !== -1) { + const trailingKeyCode = url.charCodeAt(keyIndex2 + key.length + 1); + if (trailingKeyCode === 61) { + const valueIndex = keyIndex2 + key.length + 2; + const endIndex = url.indexOf("&", valueIndex); + return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex)); + } else if (trailingKeyCode == 38 || isNaN(trailingKeyCode)) { + return ""; + } + keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1); + } + encoded = /[%+]/.test(url); + if (!encoded) { + return void 0; + } + } + const results = {}; + encoded ??= /[%+]/.test(url); + let keyIndex = url.indexOf("?", 8); + while (keyIndex !== -1) { + const nextKeyIndex = url.indexOf("&", keyIndex + 1); + let valueIndex = url.indexOf("=", keyIndex); + if (valueIndex > nextKeyIndex && nextKeyIndex !== -1) { + valueIndex = -1; + } + let name = url.slice( + keyIndex + 1, + valueIndex === -1 ? nextKeyIndex === -1 ? void 0 : nextKeyIndex : valueIndex + ); + if (encoded) { + name = _decodeURI(name); + } + keyIndex = nextKeyIndex; + if (name === "") { + continue; + } + let value; + if (valueIndex === -1) { + value = ""; + } else { + value = url.slice(valueIndex + 1, nextKeyIndex === -1 ? void 0 : nextKeyIndex); + if (encoded) { + value = _decodeURI(value); + } + } + if (multiple) { + if (!(results[name] && Array.isArray(results[name]))) { + results[name] = []; + } + ; + results[name].push(value); + } else { + results[name] ??= value; + } + } + return key ? results[key] : results; +}, "_getQueryParam"); +var getQueryParam = _getQueryParam; +var getQueryParams = /* @__PURE__ */ __name((url, key) => { + return _getQueryParam(url, key, true); +}, "getQueryParams"); +var decodeURIComponent_ = decodeURIComponent; + +// node_modules/hono/dist/request.js +var tryDecodeURIComponent = /* @__PURE__ */ __name((str) => tryDecode(str, decodeURIComponent_), "tryDecodeURIComponent"); +var HonoRequest = class { + static { + __name(this, "HonoRequest"); + } + /** + * `.raw` can get the raw Request object. + * + * @see {@link https://hono.dev/docs/api/request#raw} + * + * @example + * ```ts + * // For Cloudflare Workers + * app.post('/', async (c) => { + * const metadata = c.req.raw.cf?.hostMetadata? + * ... + * }) + * ``` + */ + raw; + #validatedData; + // Short name of validatedData + #matchResult; + routeIndex = 0; + /** + * `.path` can get the pathname of the request. + * + * @see {@link https://hono.dev/docs/api/request#path} + * + * @example + * ```ts + * app.get('/about/me', (c) => { + * const pathname = c.req.path // `/about/me` + * }) + * ``` + */ + path; + bodyCache = {}; + constructor(request, path = "/", matchResult = [[]]) { + this.raw = request; + this.path = path; + this.#matchResult = matchResult; + this.#validatedData = {}; + } + param(key) { + return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams(); + } + #getDecodedParam(key) { + const paramKey = this.#matchResult[0][this.routeIndex][1][key]; + const param = this.#getParamValue(paramKey); + return param && /\%/.test(param) ? tryDecodeURIComponent(param) : param; + } + #getAllDecodedParams() { + const decoded = {}; + const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]); + for (const key of keys) { + const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]); + if (value !== void 0) { + decoded[key] = /\%/.test(value) ? tryDecodeURIComponent(value) : value; + } + } + return decoded; + } + #getParamValue(paramKey) { + return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey; + } + query(key) { + return getQueryParam(this.url, key); + } + queries(key) { + return getQueryParams(this.url, key); + } + header(name) { + if (name) { + return this.raw.headers.get(name) ?? void 0; + } + const headerData = {}; + this.raw.headers.forEach((value, key) => { + headerData[key] = value; + }); + return headerData; + } + async parseBody(options) { + return parseBody(this, options); + } + #cachedBody = /* @__PURE__ */ __name((key) => { + const { bodyCache, raw: raw2 } = this; + const cachedBody = bodyCache[key]; + if (cachedBody) { + return cachedBody; + } + const anyCachedKey = Object.keys(bodyCache)[0]; + if (anyCachedKey) { + return bodyCache[anyCachedKey].then((body) => { + if (anyCachedKey === "json") { + body = JSON.stringify(body); + } + return new Response(body)[key](); + }); + } + return bodyCache[key] = raw2[key](); + }, "#cachedBody"); + /** + * `.json()` can parse Request body of type `application/json` + * + * @see {@link https://hono.dev/docs/api/request#json} + * + * @example + * ```ts + * app.post('/entry', async (c) => { + * const body = await c.req.json() + * }) + * ``` + */ + json() { + return this.#cachedBody("text").then((text) => JSON.parse(text)); + } + /** + * `.text()` can parse Request body of type `text/plain` + * + * @see {@link https://hono.dev/docs/api/request#text} + * + * @example + * ```ts + * app.post('/entry', async (c) => { + * const body = await c.req.text() + * }) + * ``` + */ + text() { + return this.#cachedBody("text"); + } + /** + * `.arrayBuffer()` parse Request body as an `ArrayBuffer` + * + * @see {@link https://hono.dev/docs/api/request#arraybuffer} + * + * @example + * ```ts + * app.post('/entry', async (c) => { + * const body = await c.req.arrayBuffer() + * }) + * ``` + */ + arrayBuffer() { + return this.#cachedBody("arrayBuffer"); + } + /** + * `.bytes()` parses the request body as a `Uint8Array`. + * + * @see {@link https://hono.dev/docs/api/request#bytes} + * + * @example + * ```ts + * app.post('/entry', async (c) => { + * const body = await c.req.bytes() + * }) + * ``` + */ + bytes() { + return this.#cachedBody("arrayBuffer").then((buffer) => new Uint8Array(buffer)); + } + /** + * Parses the request body as a `Blob`. + * @example + * ```ts + * app.post('/entry', async (c) => { + * const body = await c.req.blob(); + * }); + * ``` + * @see https://hono.dev/docs/api/request#blob + */ + blob() { + return this.#cachedBody("blob"); + } + /** + * Parses the request body as `FormData`. + * @example + * ```ts + * app.post('/entry', async (c) => { + * const body = await c.req.formData(); + * }); + * ``` + * @see https://hono.dev/docs/api/request#formdata + */ + formData() { + return this.#cachedBody("formData"); + } + /** + * Adds validated data to the request. + * + * @param target - The target of the validation. + * @param data - The validated data to add. + */ + addValidatedData(target, data) { + this.#validatedData[target] = data; + } + valid(target) { + return this.#validatedData[target]; + } + /** + * `.url()` can get the request url strings. + * + * @see {@link https://hono.dev/docs/api/request#url} + * + * @example + * ```ts + * app.get('/about/me', (c) => { + * const url = c.req.url // `http://localhost:8787/about/me` + * ... + * }) + * ``` + */ + get url() { + return this.raw.url; + } + /** + * `.method()` can get the method name of the request. + * + * @see {@link https://hono.dev/docs/api/request#method} + * + * @example + * ```ts + * app.get('/about/me', (c) => { + * const method = c.req.method // `GET` + * }) + * ``` + */ + get method() { + return this.raw.method; + } + get [GET_MATCH_RESULT]() { + return this.#matchResult; + } + /** + * `.matchedRoutes()` can return a matched route in the handler + * + * @deprecated + * + * Use matchedRoutes helper defined in "hono/route" instead. + * + * @see {@link https://hono.dev/docs/api/request#matchedroutes} + * + * @example + * ```ts + * app.use('*', async function logger(c, next) { + * await next() + * c.req.matchedRoutes.forEach(({ handler, method, path }, i) => { + * const name = handler.name || (handler.length < 2 ? '[handler]' : '[middleware]') + * console.log( + * method, + * ' ', + * path, + * ' '.repeat(Math.max(10 - path.length, 0)), + * name, + * i === c.req.routeIndex ? '<- respond from here' : '' + * ) + * }) + * }) + * ``` + */ + get matchedRoutes() { + return this.#matchResult[0].map(([[, route]]) => route); + } + /** + * `routePath()` can retrieve the path registered within the handler + * + * @deprecated + * + * Use routePath helper defined in "hono/route" instead. + * + * @see {@link https://hono.dev/docs/api/request#routepath} + * + * @example + * ```ts + * app.get('/posts/:id', (c) => { + * return c.json({ path: c.req.routePath }) + * }) + * ``` + */ + get routePath() { + return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path; + } +}; + +// node_modules/hono/dist/utils/html.js +var HtmlEscapedCallbackPhase = { + Stringify: 1, + BeforeStream: 2, + Stream: 3 +}; +var raw = /* @__PURE__ */ __name((value, callbacks) => { + const escapedString = new String(value); + escapedString.isEscaped = true; + escapedString.callbacks = callbacks; + return escapedString; +}, "raw"); +var resolveCallback = /* @__PURE__ */ __name(async (str, phase, preserveCallbacks, context, buffer) => { + if (typeof str === "object" && !(str instanceof String)) { + if (!(str instanceof Promise)) { + str = str.toString(); + } + if (str instanceof Promise) { + str = await str; + } + } + const callbacks = str.callbacks; + if (!callbacks?.length) { + return Promise.resolve(str); + } + if (buffer) { + buffer[0] += str; + } else { + buffer = [str]; + } + const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context }))).then( + (res) => Promise.all( + res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context, buffer)) + ).then(() => buffer[0]) + ); + if (preserveCallbacks) { + return raw(await resStr, callbacks); + } else { + return resStr; + } +}, "resolveCallback"); + +// node_modules/hono/dist/context.js +var TEXT_PLAIN = "text/plain; charset=UTF-8"; +var setDefaultContentType = /* @__PURE__ */ __name((contentType, headers) => { + return { + "Content-Type": contentType, + ...headers + }; +}, "setDefaultContentType"); +var createResponseInstance = /* @__PURE__ */ __name((body, init) => new Response(body, init), "createResponseInstance"); +var Context = class { + static { + __name(this, "Context"); + } + #rawRequest; + #req; + /** + * `.env` can get bindings (environment variables, secrets, KV namespaces, D1 database, R2 bucket etc.) in Cloudflare Workers. + * + * @see {@link https://hono.dev/docs/api/context#env} + * + * @example + * ```ts + * // Environment object for Cloudflare Workers + * app.get('*', async c => { + * const counter = c.env.COUNTER + * }) + * ``` + */ + env = {}; + #var; + finalized = false; + /** + * `.error` can get the error object from the middleware if the Handler throws an error. + * + * @see {@link https://hono.dev/docs/api/context#error} + * + * @example + * ```ts + * app.use('*', async (c, next) => { + * await next() + * if (c.error) { + * // do something... + * } + * }) + * ``` + */ + error; + #status; + #executionCtx; + #res; + #layout; + #renderer; + #notFoundHandler; + #preparedHeaders; + #matchResult; + #path; + /** + * Creates an instance of the Context class. + * + * @param req - The Request object. + * @param options - Optional configuration options for the context. + */ + constructor(req, options) { + this.#rawRequest = req; + if (options) { + this.#executionCtx = options.executionCtx; + this.env = options.env; + this.#notFoundHandler = options.notFoundHandler; + this.#path = options.path; + this.#matchResult = options.matchResult; + } + } + /** + * `.req` is the instance of {@link HonoRequest}. + */ + get req() { + this.#req ??= new HonoRequest(this.#rawRequest, this.#path, this.#matchResult); + return this.#req; + } + /** + * @see {@link https://hono.dev/docs/api/context#event} + * The FetchEvent associated with the current request. + * + * @throws Will throw an error if the context does not have a FetchEvent. + */ + get event() { + if (this.#executionCtx && "respondWith" in this.#executionCtx) { + return this.#executionCtx; + } else { + throw Error("This context has no FetchEvent"); + } + } + /** + * @see {@link https://hono.dev/docs/api/context#executionctx} + * The ExecutionContext associated with the current request. + * + * @throws Will throw an error if the context does not have an ExecutionContext. + */ + get executionCtx() { + if (this.#executionCtx) { + return this.#executionCtx; + } else { + throw Error("This context has no ExecutionContext"); + } + } + /** + * @see {@link https://hono.dev/docs/api/context#res} + * The Response object for the current request. + */ + get res() { + return this.#res ||= createResponseInstance(null, { + headers: this.#preparedHeaders ??= new Headers() + }); + } + /** + * Sets the Response object for the current request. + * + * @param _res - The Response object to set. + */ + set res(_res) { + if (this.#res && _res) { + _res = createResponseInstance(_res.body, _res); + for (const [k, v] of this.#res.headers.entries()) { + if (k === "content-type") { + continue; + } + if (k === "set-cookie") { + const cookies = this.#res.headers.getSetCookie(); + _res.headers.delete("set-cookie"); + for (const cookie of cookies) { + _res.headers.append("set-cookie", cookie); + } + } else { + _res.headers.set(k, v); + } + } + } + this.#res = _res; + this.finalized = true; + } + /** + * `.render()` can create a response within a layout. + * + * @see {@link https://hono.dev/docs/api/context#render-setrenderer} + * + * @example + * ```ts + * app.get('/', (c) => { + * return c.render('Hello!') + * }) + * ``` + */ + render = /* @__PURE__ */ __name((...args) => { + this.#renderer ??= (content) => this.html(content); + return this.#renderer(...args); + }, "render"); + /** + * Sets the layout for the response. + * + * @param layout - The layout to set. + * @returns The layout function. + */ + setLayout = /* @__PURE__ */ __name((layout) => this.#layout = layout, "setLayout"); + /** + * Gets the current layout for the response. + * + * @returns The current layout function. + */ + getLayout = /* @__PURE__ */ __name(() => this.#layout, "getLayout"); + /** + * `.setRenderer()` can set the layout in the custom middleware. + * + * @see {@link https://hono.dev/docs/api/context#render-setrenderer} + * + * @example + * ```tsx + * app.use('*', async (c, next) => { + * c.setRenderer((content) => { + * return c.html( + * + * + *

    {content}

    + * + * + * ) + * }) + * await next() + * }) + * ``` + */ + setRenderer = /* @__PURE__ */ __name((renderer) => { + this.#renderer = renderer; + }, "setRenderer"); + /** + * `.header()` can set headers. + * + * @see {@link https://hono.dev/docs/api/context#header} + * + * @example + * ```ts + * app.get('/welcome', (c) => { + * // Set headers + * c.header('X-Message', 'Hello!') + * c.header('Content-Type', 'text/plain') + * + * return c.body('Thank you for coming') + * }) + * ``` + */ + header = /* @__PURE__ */ __name((name, value, options) => { + if (this.finalized) { + this.#res = createResponseInstance(this.#res.body, this.#res); + } + const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers(); + if (value === void 0) { + headers.delete(name); + } else if (options?.append) { + headers.append(name, value); + } else { + headers.set(name, value); + } + }, "header"); + status = /* @__PURE__ */ __name((status) => { + this.#status = status; + }, "status"); + /** + * `.set()` can set the value specified by the key. + * + * @see {@link https://hono.dev/docs/api/context#set-get} + * + * @example + * ```ts + * app.use('*', async (c, next) => { + * c.set('message', 'Hono is hot!!') + * await next() + * }) + * ``` + */ + set = /* @__PURE__ */ __name((key, value) => { + this.#var ??= /* @__PURE__ */ new Map(); + this.#var.set(key, value); + }, "set"); + /** + * `.get()` can use the value specified by the key. + * + * @see {@link https://hono.dev/docs/api/context#set-get} + * + * @example + * ```ts + * app.get('/', (c) => { + * const message = c.get('message') + * return c.text(`The message is "${message}"`) + * }) + * ``` + */ + get = /* @__PURE__ */ __name((key) => { + return this.#var ? this.#var.get(key) : void 0; + }, "get"); + /** + * `.var` can access the value of a variable. + * + * @see {@link https://hono.dev/docs/api/context#var} + * + * @example + * ```ts + * const result = c.var.client.oneMethod() + * ``` + */ + // c.var.propName is a read-only + get var() { + if (!this.#var) { + return {}; + } + return Object.fromEntries(this.#var); + } + #newResponse(data, arg, headers) { + const responseHeaders = this.#res ? new Headers(this.#res.headers) : this.#preparedHeaders ?? new Headers(); + if (typeof arg === "object" && "headers" in arg) { + const argHeaders = arg.headers instanceof Headers ? arg.headers : new Headers(arg.headers); + for (const [key, value] of argHeaders) { + if (key.toLowerCase() === "set-cookie") { + responseHeaders.append(key, value); + } else { + responseHeaders.set(key, value); + } + } + } + if (headers) { + for (const [k, v] of Object.entries(headers)) { + if (typeof v === "string") { + responseHeaders.set(k, v); + } else { + responseHeaders.delete(k); + for (const v2 of v) { + responseHeaders.append(k, v2); + } + } + } + } + const status = typeof arg === "number" ? arg : arg?.status ?? this.#status; + return createResponseInstance(data, { status, headers: responseHeaders }); + } + newResponse = /* @__PURE__ */ __name((...args) => this.#newResponse(...args), "newResponse"); + /** + * `.body()` can return the HTTP response. + * You can set headers with `.header()` and set HTTP status code with `.status`. + * This can also be set in `.text()`, `.json()` and so on. + * + * @see {@link https://hono.dev/docs/api/context#body} + * + * @example + * ```ts + * app.get('/welcome', (c) => { + * // Set headers + * c.header('X-Message', 'Hello!') + * c.header('Content-Type', 'text/plain') + * // Set HTTP status code + * c.status(201) + * + * // Return the response body + * return c.body('Thank you for coming') + * }) + * ``` + */ + body = /* @__PURE__ */ __name((data, arg, headers) => this.#newResponse(data, arg, headers), "body"); + /** + * `.text()` can render text as `Content-Type:text/plain`. + * + * @see {@link https://hono.dev/docs/api/context#text} + * + * @example + * ```ts + * app.get('/say', (c) => { + * return c.text('Hello!') + * }) + * ``` + */ + text = /* @__PURE__ */ __name((text, arg, headers) => { + return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse( + text, + arg, + setDefaultContentType(TEXT_PLAIN, headers) + ); + }, "text"); + /** + * `.json()` can render JSON as `Content-Type:application/json`. + * + * @see {@link https://hono.dev/docs/api/context#json} + * + * @example + * ```ts + * app.get('/api', (c) => { + * return c.json({ message: 'Hello!' }) + * }) + * ``` + */ + json = /* @__PURE__ */ __name((object, arg, headers) => { + return this.#newResponse( + JSON.stringify(object), + arg, + setDefaultContentType("application/json", headers) + ); + }, "json"); + html = /* @__PURE__ */ __name((html, arg, headers) => { + const res = /* @__PURE__ */ __name((html2) => this.#newResponse(html2, arg, setDefaultContentType("text/html; charset=UTF-8", headers)), "res"); + return typeof html === "object" ? resolveCallback(html, HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html); + }, "html"); + /** + * `.redirect()` can Redirect, default status code is 302. + * + * @see {@link https://hono.dev/docs/api/context#redirect} + * + * @example + * ```ts + * app.get('/redirect', (c) => { + * return c.redirect('/') + * }) + * app.get('/redirect-permanently', (c) => { + * return c.redirect('/', 301) + * }) + * ``` + */ + redirect = /* @__PURE__ */ __name((location, status) => { + const locationString = String(location); + this.header( + "Location", + // Multibyes should be encoded + // eslint-disable-next-line no-control-regex + !/[^\x00-\xFF]/.test(locationString) ? locationString : encodeURI(locationString) + ); + return this.newResponse(null, status ?? 302); + }, "redirect"); + /** + * `.notFound()` can return the Not Found Response. + * + * @see {@link https://hono.dev/docs/api/context#notfound} + * + * @example + * ```ts + * app.get('/notfound', (c) => { + * return c.notFound() + * }) + * ``` + */ + notFound = /* @__PURE__ */ __name(() => { + this.#notFoundHandler ??= () => createResponseInstance(); + return this.#notFoundHandler(this); + }, "notFound"); +}; + +// node_modules/hono/dist/router.js +var METHOD_NAME_ALL = "ALL"; +var METHOD_NAME_ALL_LOWERCASE = "all"; +var METHODS = ["get", "post", "put", "delete", "options", "patch"]; +var MESSAGE_MATCHER_IS_ALREADY_BUILT = "Can not add a route since the matcher is already built."; +var UnsupportedPathError = class extends Error { + static { + __name(this, "UnsupportedPathError"); + } +}; + +// node_modules/hono/dist/utils/constants.js +var COMPOSED_HANDLER = "__COMPOSED_HANDLER"; + +// node_modules/hono/dist/hono-base.js +var notFoundHandler = /* @__PURE__ */ __name((c) => { + return c.text("404 Not Found", 404); +}, "notFoundHandler"); +var errorHandler = /* @__PURE__ */ __name((err, c) => { + if ("getResponse" in err) { + const res = err.getResponse(); + return c.newResponse(res.body, res); + } + console.error(err); + return c.text("Internal Server Error", 500); +}, "errorHandler"); +var Hono = class _Hono { + static { + __name(this, "_Hono"); + } + get; + post; + put; + delete; + options; + patch; + all; + on; + use; + /* + This class is like an abstract class and does not have a router. + To use it, inherit the class and implement router in the constructor. + */ + router; + getPath; + // Cannot use `#` because it requires visibility at JavaScript runtime. + _basePath = "/"; + #path = "/"; + routes = []; + constructor(options = {}) { + const allMethods = [...METHODS, METHOD_NAME_ALL_LOWERCASE]; + allMethods.forEach((method) => { + this[method] = (args1, ...args) => { + if (typeof args1 === "string") { + this.#path = args1; + } else { + this.#addRoute(method, this.#path, args1); + } + args.forEach((handler) => { + this.#addRoute(method, this.#path, handler); + }); + return this; + }; + }); + this.on = (method, path, ...handlers) => { + for (const p of [path].flat()) { + this.#path = p; + for (const m of [method].flat()) { + handlers.map((handler) => { + this.#addRoute(m.toUpperCase(), this.#path, handler); + }); + } + } + return this; + }; + this.use = (arg1, ...handlers) => { + if (typeof arg1 === "string") { + this.#path = arg1; + } else { + this.#path = "*"; + handlers.unshift(arg1); + } + handlers.forEach((handler) => { + this.#addRoute(METHOD_NAME_ALL, this.#path, handler); + }); + return this; + }; + const { strict, ...optionsWithoutStrict } = options; + Object.assign(this, optionsWithoutStrict); + this.getPath = strict ?? true ? options.getPath ?? getPath : getPathNoStrict; + } + #clone() { + const clone = new _Hono({ + router: this.router, + getPath: this.getPath + }); + clone.errorHandler = this.errorHandler; + clone.#notFoundHandler = this.#notFoundHandler; + clone.routes = this.routes; + return clone; + } + #notFoundHandler = notFoundHandler; + // Cannot use `#` because it requires visibility at JavaScript runtime. + errorHandler = errorHandler; + /** + * `.route()` allows grouping other Hono instance in routes. + * + * @see {@link https://hono.dev/docs/api/routing#grouping} + * + * @param {string} path - base Path + * @param {Hono} app - other Hono instance + * @returns {Hono} routed Hono instance + * + * @example + * ```ts + * const app = new Hono() + * const app2 = new Hono() + * + * app2.get("/user", (c) => c.text("user")) + * app.route("/api", app2) // GET /api/user + * ``` + */ + route(path, app2) { + const subApp = this.basePath(path); + app2.routes.map((r) => { + let handler; + if (app2.errorHandler === errorHandler) { + handler = r.handler; + } else { + handler = /* @__PURE__ */ __name(async (c, next) => (await compose([], app2.errorHandler)(c, () => r.handler(c, next))).res, "handler"); + handler[COMPOSED_HANDLER] = r.handler; + } + subApp.#addRoute(r.method, r.path, handler, r.basePath); + }); + return this; + } + /** + * `.basePath()` allows base paths to be specified. + * + * @see {@link https://hono.dev/docs/api/routing#base-path} + * + * @param {string} path - base Path + * @returns {Hono} changed Hono instance + * + * @example + * ```ts + * const api = new Hono().basePath('/api') + * ``` + */ + basePath(path) { + const subApp = this.#clone(); + subApp._basePath = mergePath(this._basePath, path); + return subApp; + } + /** + * `.onError()` handles an error and returns a customized Response. + * + * @see {@link https://hono.dev/docs/api/hono#error-handling} + * + * @param {ErrorHandler} handler - request Handler for error + * @returns {Hono} changed Hono instance + * + * @example + * ```ts + * app.onError((err, c) => { + * console.error(`${err}`) + * return c.text('Custom Error Message', 500) + * }) + * ``` + */ + onError = /* @__PURE__ */ __name((handler) => { + this.errorHandler = handler; + return this; + }, "onError"); + /** + * `.notFound()` allows you to customize a Not Found Response. + * + * @see {@link https://hono.dev/docs/api/hono#not-found} + * + * @param {NotFoundHandler} handler - request handler for not-found + * @returns {Hono} changed Hono instance + * + * @example + * ```ts + * app.notFound((c) => { + * return c.text('Custom 404 Message', 404) + * }) + * ``` + */ + notFound = /* @__PURE__ */ __name((handler) => { + this.#notFoundHandler = handler; + return this; + }, "notFound"); + /** + * `.mount()` allows you to mount applications built with other frameworks into your Hono application. + * + * @see {@link https://hono.dev/docs/api/hono#mount} + * + * @param {string} path - base Path + * @param {Function} applicationHandler - other Request Handler + * @param {MountOptions} [options] - options of `.mount()` + * @returns {Hono} mounted Hono instance + * + * @example + * ```ts + * import { Router as IttyRouter } from 'itty-router' + * import { Hono } from 'hono' + * // Create itty-router application + * const ittyRouter = IttyRouter() + * // GET /itty-router/hello + * ittyRouter.get('/hello', () => new Response('Hello from itty-router')) + * + * const app = new Hono() + * app.mount('/itty-router', ittyRouter.handle) + * ``` + * + * @example + * ```ts + * const app = new Hono() + * // Send the request to another application without modification. + * app.mount('/app', anotherApp, { + * replaceRequest: (req) => req, + * }) + * ``` + */ + mount(path, applicationHandler, options) { + let replaceRequest; + let optionHandler; + if (options) { + if (typeof options === "function") { + optionHandler = options; + } else { + optionHandler = options.optionHandler; + if (options.replaceRequest === false) { + replaceRequest = /* @__PURE__ */ __name((request) => request, "replaceRequest"); + } else { + replaceRequest = options.replaceRequest; + } + } + } + const getOptions = optionHandler ? (c) => { + const options2 = optionHandler(c); + return Array.isArray(options2) ? options2 : [options2]; + } : (c) => { + let executionContext = void 0; + try { + executionContext = c.executionCtx; + } catch { + } + return [c.env, executionContext]; + }; + replaceRequest ||= (() => { + const mergedPath = mergePath(this._basePath, path); + const pathPrefixLength = mergedPath === "/" ? 0 : mergedPath.length; + return (request) => { + const url = new URL(request.url); + url.pathname = this.getPath(request).slice(pathPrefixLength) || "/"; + return new Request(url, request); + }; + })(); + const handler = /* @__PURE__ */ __name(async (c, next) => { + const res = await applicationHandler(replaceRequest(c.req.raw), ...getOptions(c)); + if (res) { + return res; + } + await next(); + }, "handler"); + this.#addRoute(METHOD_NAME_ALL, mergePath(path, "*"), handler); + return this; + } + #addRoute(method, path, handler, baseRoutePath) { + method = method.toUpperCase(); + path = mergePath(this._basePath, path); + const r = { + basePath: baseRoutePath !== void 0 ? mergePath(this._basePath, baseRoutePath) : this._basePath, + path, + method, + handler + }; + this.router.add(method, path, [handler, r]); + this.routes.push(r); + } + #handleError(err, c) { + if (err instanceof Error) { + return this.errorHandler(err, c); + } + throw err; + } + #dispatch(request, executionCtx, env, method) { + if (method === "HEAD") { + return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, "GET")))(); + } + const path = this.getPath(request, { env }); + const matchResult = this.router.match(method, path); + const c = new Context(request, { + path, + matchResult, + env, + executionCtx, + notFoundHandler: this.#notFoundHandler + }); + if (matchResult[0].length === 1) { + let res; + try { + res = matchResult[0][0][0][0](c, async () => { + c.res = await this.#notFoundHandler(c); + }); + } catch (err) { + return this.#handleError(err, c); + } + return res instanceof Promise ? res.then( + (resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c)) + ).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c); + } + const composed = compose(matchResult[0], this.errorHandler, this.#notFoundHandler); + return (async () => { + try { + const context = await composed(c); + if (!context.finalized) { + throw new Error( + "Context is not finalized. Did you forget to return a Response object or `await next()`?" + ); + } + return context.res; + } catch (err) { + return this.#handleError(err, c); + } + })(); + } + /** + * `.fetch()` will be entry point of your app. + * + * @see {@link https://hono.dev/docs/api/hono#fetch} + * + * @param {Request} request - request Object of request + * @param {Env} Env - env Object + * @param {ExecutionContext} - context of execution + * @returns {Response | Promise} response of request + * + */ + fetch = /* @__PURE__ */ __name((request, ...rest) => { + return this.#dispatch(request, rest[1], rest[0], request.method); + }, "fetch"); + /** + * `.request()` is a useful method for testing. + * You can pass a URL or pathname to send a GET request. + * app will return a Response object. + * ```ts + * test('GET /hello is ok', async () => { + * const res = await app.request('/hello') + * expect(res.status).toBe(200) + * }) + * ``` + * @see https://hono.dev/docs/api/hono#request + */ + request = /* @__PURE__ */ __name((input, requestInit, Env, executionCtx) => { + if (input instanceof Request) { + return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx); + } + input = input.toString(); + return this.fetch( + new Request( + /^https?:\/\//.test(input) ? input : `http://localhost${mergePath("/", input)}`, + requestInit + ), + Env, + executionCtx + ); + }, "request"); + /** + * `.fire()` automatically adds a global fetch event listener. + * This can be useful for environments that adhere to the Service Worker API, such as non-ES module Cloudflare Workers. + * @deprecated + * Use `fire` from `hono/service-worker` instead. + * ```ts + * import { Hono } from 'hono' + * import { fire } from 'hono/service-worker' + * + * const app = new Hono() + * // ... + * fire(app) + * ``` + * @see https://hono.dev/docs/api/hono#fire + * @see https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API + * @see https://developers.cloudflare.com/workers/reference/migrate-to-module-workers/ + */ + fire = /* @__PURE__ */ __name(() => { + addEventListener("fetch", (event) => { + event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method)); + }); + }, "fire"); +}; + +// node_modules/hono/dist/router/reg-exp-router/matcher.js +var emptyParam = []; +function match(method, path) { + const matchers = this.buildAllMatchers(); + const match2 = /* @__PURE__ */ __name(((method2, path2) => { + const matcher = matchers[method2] || matchers[METHOD_NAME_ALL]; + const staticMatch = matcher[2][path2]; + if (staticMatch) { + return staticMatch; + } + const match3 = path2.match(matcher[0]); + if (!match3) { + return [[], emptyParam]; + } + const index = match3.indexOf("", 1); + return [matcher[1][index], match3]; + }), "match2"); + this.match = match2; + return match2(method, path); +} +__name(match, "match"); + +// node_modules/hono/dist/router/reg-exp-router/node.js +var LABEL_REG_EXP_STR = "[^/]+"; +var ONLY_WILDCARD_REG_EXP_STR = ".*"; +var TAIL_WILDCARD_REG_EXP_STR = "(?:|/.*)"; +var PATH_ERROR = /* @__PURE__ */ Symbol(); +var regExpMetaChars = new Set(".\\+*[^]$()"); +function compareKey(a, b) { + if (a.length === 1) { + return b.length === 1 ? a < b ? -1 : 1 : -1; + } + if (b.length === 1) { + return 1; + } + if (a === ONLY_WILDCARD_REG_EXP_STR || a === TAIL_WILDCARD_REG_EXP_STR) { + return 1; + } else if (b === ONLY_WILDCARD_REG_EXP_STR || b === TAIL_WILDCARD_REG_EXP_STR) { + return -1; + } + if (a === LABEL_REG_EXP_STR) { + return 1; + } else if (b === LABEL_REG_EXP_STR) { + return -1; + } + return a.length === b.length ? a < b ? -1 : 1 : b.length - a.length; +} +__name(compareKey, "compareKey"); +var Node = class _Node { + static { + __name(this, "_Node"); + } + #index; + #varIndex; + #children = /* @__PURE__ */ Object.create(null); + insert(tokens, index, paramMap, context, pathErrorCheckOnly) { + if (tokens.length === 0) { + if (this.#index !== void 0) { + throw PATH_ERROR; + } + if (pathErrorCheckOnly) { + return; + } + this.#index = index; + return; + } + const [token, ...restTokens] = tokens; + const pattern = token === "*" ? restTokens.length === 0 ? ["", "", ONLY_WILDCARD_REG_EXP_STR] : ["", "", LABEL_REG_EXP_STR] : token === "/*" ? ["", "", TAIL_WILDCARD_REG_EXP_STR] : token.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/); + let node; + if (pattern) { + const name = pattern[1]; + let regexpStr = pattern[2] || LABEL_REG_EXP_STR; + if (name && pattern[2]) { + if (regexpStr === ".*") { + throw PATH_ERROR; + } + regexpStr = regexpStr.replace(/^\((?!\?:)(?=[^)]+\)$)/, "(?:"); + if (/\((?!\?:)/.test(regexpStr)) { + throw PATH_ERROR; + } + } + node = this.#children[regexpStr]; + if (!node) { + if (Object.keys(this.#children).some( + (k) => k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR + )) { + throw PATH_ERROR; + } + if (pathErrorCheckOnly) { + return; + } + node = this.#children[regexpStr] = new _Node(); + if (name !== "") { + node.#varIndex = context.varIndex++; + } + } + if (!pathErrorCheckOnly && name !== "") { + paramMap.push([name, node.#varIndex]); + } + } else { + node = this.#children[token]; + if (!node) { + if (Object.keys(this.#children).some( + (k) => k.length > 1 && k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR + )) { + throw PATH_ERROR; + } + if (pathErrorCheckOnly) { + return; + } + node = this.#children[token] = new _Node(); + } + } + node.insert(restTokens, index, paramMap, context, pathErrorCheckOnly); + } + buildRegExpStr() { + const childKeys = Object.keys(this.#children).sort(compareKey); + const strList = childKeys.map((k) => { + const c = this.#children[k]; + return (typeof c.#varIndex === "number" ? `(${k})@${c.#varIndex}` : regExpMetaChars.has(k) ? `\\${k}` : k) + c.buildRegExpStr(); + }); + if (typeof this.#index === "number") { + strList.unshift(`#${this.#index}`); + } + if (strList.length === 0) { + return ""; + } + if (strList.length === 1) { + return strList[0]; + } + return "(?:" + strList.join("|") + ")"; + } +}; + +// node_modules/hono/dist/router/reg-exp-router/trie.js +var Trie = class { + static { + __name(this, "Trie"); + } + #context = { varIndex: 0 }; + #root = new Node(); + insert(path, index, pathErrorCheckOnly) { + const paramAssoc = []; + const groups = []; + for (let i = 0; ; ) { + let replaced = false; + path = path.replace(/\{[^}]+\}/g, (m) => { + const mark = `@\\${i}`; + groups[i] = [mark, m]; + i++; + replaced = true; + return mark; + }); + if (!replaced) { + break; + } + } + const tokens = path.match(/(?::[^\/]+)|(?:\/\*$)|./g) || []; + for (let i = groups.length - 1; i >= 0; i--) { + const [mark] = groups[i]; + for (let j = tokens.length - 1; j >= 0; j--) { + if (tokens[j].indexOf(mark) !== -1) { + tokens[j] = tokens[j].replace(mark, groups[i][1]); + break; + } + } + } + this.#root.insert(tokens, index, paramAssoc, this.#context, pathErrorCheckOnly); + return paramAssoc; + } + buildRegExp() { + let regexp = this.#root.buildRegExpStr(); + if (regexp === "") { + return [/^$/, [], []]; + } + let captureIndex = 0; + const indexReplacementMap = []; + const paramReplacementMap = []; + regexp = regexp.replace(/#(\d+)|@(\d+)|\.\*\$/g, (_, handlerIndex, paramIndex) => { + if (handlerIndex !== void 0) { + indexReplacementMap[++captureIndex] = Number(handlerIndex); + return "$()"; + } + if (paramIndex !== void 0) { + paramReplacementMap[Number(paramIndex)] = ++captureIndex; + return ""; + } + return ""; + }); + return [new RegExp(`^${regexp}`), indexReplacementMap, paramReplacementMap]; + } +}; + +// node_modules/hono/dist/router/reg-exp-router/router.js +var nullMatcher = [/^$/, [], /* @__PURE__ */ Object.create(null)]; +var wildcardRegExpCache = /* @__PURE__ */ Object.create(null); +function buildWildcardRegExp(path) { + return wildcardRegExpCache[path] ??= new RegExp( + path === "*" ? "" : `^${path.replace( + /\/\*$|([.\\+*[^\]$()])/g, + (_, metaChar) => metaChar ? `\\${metaChar}` : "(?:|/.*)" + )}$` + ); +} +__name(buildWildcardRegExp, "buildWildcardRegExp"); +function clearWildcardRegExpCache() { + wildcardRegExpCache = /* @__PURE__ */ Object.create(null); +} +__name(clearWildcardRegExpCache, "clearWildcardRegExpCache"); +function buildMatcherFromPreprocessedRoutes(routes) { + const trie = new Trie(); + const handlerData = []; + if (routes.length === 0) { + return nullMatcher; + } + const routesWithStaticPathFlag = routes.map( + (route) => [!/\*|\/:/.test(route[0]), ...route] + ).sort( + ([isStaticA, pathA], [isStaticB, pathB]) => isStaticA ? 1 : isStaticB ? -1 : pathA.length - pathB.length + ); + const staticMap = /* @__PURE__ */ Object.create(null); + for (let i = 0, j = -1, len = routesWithStaticPathFlag.length; i < len; i++) { + const [pathErrorCheckOnly, path, handlers] = routesWithStaticPathFlag[i]; + if (pathErrorCheckOnly) { + staticMap[path] = [handlers.map(([h]) => [h, /* @__PURE__ */ Object.create(null)]), emptyParam]; + } else { + j++; + } + let paramAssoc; + try { + paramAssoc = trie.insert(path, j, pathErrorCheckOnly); + } catch (e) { + throw e === PATH_ERROR ? new UnsupportedPathError(path) : e; + } + if (pathErrorCheckOnly) { + continue; + } + handlerData[j] = handlers.map(([h, paramCount]) => { + const paramIndexMap = /* @__PURE__ */ Object.create(null); + paramCount -= 1; + for (; paramCount >= 0; paramCount--) { + const [key, value] = paramAssoc[paramCount]; + paramIndexMap[key] = value; + } + return [h, paramIndexMap]; + }); + } + const [regexp, indexReplacementMap, paramReplacementMap] = trie.buildRegExp(); + for (let i = 0, len = handlerData.length; i < len; i++) { + for (let j = 0, len2 = handlerData[i].length; j < len2; j++) { + const map = handlerData[i][j]?.[1]; + if (!map) { + continue; + } + const keys = Object.keys(map); + for (let k = 0, len3 = keys.length; k < len3; k++) { + map[keys[k]] = paramReplacementMap[map[keys[k]]]; + } + } + } + const handlerMap = []; + for (const i in indexReplacementMap) { + handlerMap[i] = handlerData[indexReplacementMap[i]]; + } + return [regexp, handlerMap, staticMap]; +} +__name(buildMatcherFromPreprocessedRoutes, "buildMatcherFromPreprocessedRoutes"); +function findMiddleware(middleware, path) { + if (!middleware) { + return void 0; + } + for (const k of Object.keys(middleware).sort((a, b) => b.length - a.length)) { + if (buildWildcardRegExp(k).test(path)) { + return [...middleware[k]]; + } + } + return void 0; +} +__name(findMiddleware, "findMiddleware"); +var RegExpRouter = class { + static { + __name(this, "RegExpRouter"); + } + name = "RegExpRouter"; + #middleware; + #routes; + constructor() { + this.#middleware = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) }; + this.#routes = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) }; + } + add(method, path, handler) { + const middleware = this.#middleware; + const routes = this.#routes; + if (!middleware || !routes) { + throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT); + } + if (!middleware[method]) { + ; + [middleware, routes].forEach((handlerMap) => { + handlerMap[method] = /* @__PURE__ */ Object.create(null); + Object.keys(handlerMap[METHOD_NAME_ALL]).forEach((p) => { + handlerMap[method][p] = [...handlerMap[METHOD_NAME_ALL][p]]; + }); + }); + } + if (path === "/*") { + path = "*"; + } + const paramCount = (path.match(/\/:/g) || []).length; + if (/\*$/.test(path)) { + const re = buildWildcardRegExp(path); + if (method === METHOD_NAME_ALL) { + Object.keys(middleware).forEach((m) => { + middleware[m][path] ||= findMiddleware(middleware[m], path) || findMiddleware(middleware[METHOD_NAME_ALL], path) || []; + }); + } else { + middleware[method][path] ||= findMiddleware(middleware[method], path) || findMiddleware(middleware[METHOD_NAME_ALL], path) || []; + } + Object.keys(middleware).forEach((m) => { + if (method === METHOD_NAME_ALL || method === m) { + Object.keys(middleware[m]).forEach((p) => { + re.test(p) && middleware[m][p].push([handler, paramCount]); + }); + } + }); + Object.keys(routes).forEach((m) => { + if (method === METHOD_NAME_ALL || method === m) { + Object.keys(routes[m]).forEach( + (p) => re.test(p) && routes[m][p].push([handler, paramCount]) + ); + } + }); + return; + } + const paths = checkOptionalParameter(path) || [path]; + for (let i = 0, len = paths.length; i < len; i++) { + const path2 = paths[i]; + Object.keys(routes).forEach((m) => { + if (method === METHOD_NAME_ALL || method === m) { + routes[m][path2] ||= [ + ...findMiddleware(middleware[m], path2) || findMiddleware(middleware[METHOD_NAME_ALL], path2) || [] + ]; + routes[m][path2].push([handler, paramCount - len + i + 1]); + } + }); + } + } + match = match; + buildAllMatchers() { + const matchers = /* @__PURE__ */ Object.create(null); + Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach((method) => { + matchers[method] ||= this.#buildMatcher(method); + }); + this.#middleware = this.#routes = void 0; + clearWildcardRegExpCache(); + return matchers; + } + #buildMatcher(method) { + const routes = []; + let hasOwnRoute = method === METHOD_NAME_ALL; + [this.#middleware, this.#routes].forEach((r) => { + const ownRoute = r[method] ? Object.keys(r[method]).map((path) => [path, r[method][path]]) : []; + if (ownRoute.length !== 0) { + hasOwnRoute ||= true; + routes.push(...ownRoute); + } else if (method !== METHOD_NAME_ALL) { + routes.push( + ...Object.keys(r[METHOD_NAME_ALL]).map((path) => [path, r[METHOD_NAME_ALL][path]]) + ); + } + }); + if (!hasOwnRoute) { + return null; + } else { + return buildMatcherFromPreprocessedRoutes(routes); + } + } +}; + +// node_modules/hono/dist/router/smart-router/router.js +var SmartRouter = class { + static { + __name(this, "SmartRouter"); + } + name = "SmartRouter"; + #routers = []; + #routes = []; + constructor(init) { + this.#routers = init.routers; + } + add(method, path, handler) { + if (!this.#routes) { + throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT); + } + this.#routes.push([method, path, handler]); + } + match(method, path) { + if (!this.#routes) { + throw new Error("Fatal error"); + } + const routers = this.#routers; + const routes = this.#routes; + const len = routers.length; + let i = 0; + let res; + for (; i < len; i++) { + const router = routers[i]; + try { + for (let i2 = 0, len2 = routes.length; i2 < len2; i2++) { + router.add(...routes[i2]); + } + res = router.match(method, path); + } catch (e) { + if (e instanceof UnsupportedPathError) { + continue; + } + throw e; + } + this.match = router.match.bind(router); + this.#routers = [router]; + this.#routes = void 0; + break; + } + if (i === len) { + throw new Error("Fatal error"); + } + this.name = `SmartRouter + ${this.activeRouter.name}`; + return res; + } + get activeRouter() { + if (this.#routes || this.#routers.length !== 1) { + throw new Error("No active router has been determined yet."); + } + return this.#routers[0]; + } +}; + +// node_modules/hono/dist/router/trie-router/node.js +var emptyParams = /* @__PURE__ */ Object.create(null); +var hasChildren = /* @__PURE__ */ __name((children) => { + for (const _ in children) { + return true; + } + return false; +}, "hasChildren"); +var Node2 = class _Node2 { + static { + __name(this, "_Node"); + } + #methods; + #children; + #patterns; + #order = 0; + #params = emptyParams; + constructor(method, handler, children) { + this.#children = children || /* @__PURE__ */ Object.create(null); + this.#methods = []; + if (method && handler) { + const m = /* @__PURE__ */ Object.create(null); + m[method] = { handler, possibleKeys: [], score: 0 }; + this.#methods = [m]; + } + this.#patterns = []; + } + insert(method, path, handler) { + this.#order = ++this.#order; + let curNode = this; + const parts = splitRoutingPath(path); + const possibleKeys = []; + for (let i = 0, len = parts.length; i < len; i++) { + const p = parts[i]; + const nextP = parts[i + 1]; + const pattern = getPattern(p, nextP); + const key = Array.isArray(pattern) ? pattern[0] : p; + if (key in curNode.#children) { + curNode = curNode.#children[key]; + if (pattern) { + possibleKeys.push(pattern[1]); + } + continue; + } + curNode.#children[key] = new _Node2(); + if (pattern) { + curNode.#patterns.push(pattern); + possibleKeys.push(pattern[1]); + } + curNode = curNode.#children[key]; + } + curNode.#methods.push({ + [method]: { + handler, + possibleKeys: possibleKeys.filter((v, i, a) => a.indexOf(v) === i), + score: this.#order + } + }); + return curNode; + } + #pushHandlerSets(handlerSets, node, method, nodeParams, params) { + for (let i = 0, len = node.#methods.length; i < len; i++) { + const m = node.#methods[i]; + const handlerSet = m[method] || m[METHOD_NAME_ALL]; + const processedSet = {}; + if (handlerSet !== void 0) { + handlerSet.params = /* @__PURE__ */ Object.create(null); + handlerSets.push(handlerSet); + if (nodeParams !== emptyParams || params && params !== emptyParams) { + for (let i2 = 0, len2 = handlerSet.possibleKeys.length; i2 < len2; i2++) { + const key = handlerSet.possibleKeys[i2]; + const processed = processedSet[handlerSet.score]; + handlerSet.params[key] = params?.[key] && !processed ? params[key] : nodeParams[key] ?? params?.[key]; + processedSet[handlerSet.score] = true; + } + } + } + } + } + search(method, path) { + const handlerSets = []; + this.#params = emptyParams; + const curNode = this; + let curNodes = [curNode]; + const parts = splitPath(path); + const curNodesQueue = []; + const len = parts.length; + let partOffsets = null; + for (let i = 0; i < len; i++) { + const part = parts[i]; + const isLast = i === len - 1; + const tempNodes = []; + for (let j = 0, len2 = curNodes.length; j < len2; j++) { + const node = curNodes[j]; + const nextNode = node.#children[part]; + if (nextNode) { + nextNode.#params = node.#params; + if (isLast) { + if (nextNode.#children["*"]) { + this.#pushHandlerSets(handlerSets, nextNode.#children["*"], method, node.#params); + } + this.#pushHandlerSets(handlerSets, nextNode, method, node.#params); + } else { + tempNodes.push(nextNode); + } + } + for (let k = 0, len3 = node.#patterns.length; k < len3; k++) { + const pattern = node.#patterns[k]; + const params = node.#params === emptyParams ? {} : { ...node.#params }; + if (pattern === "*") { + const astNode = node.#children["*"]; + if (astNode) { + this.#pushHandlerSets(handlerSets, astNode, method, node.#params); + astNode.#params = params; + tempNodes.push(astNode); + } + continue; + } + const [key, name, matcher] = pattern; + if (!part && !(matcher instanceof RegExp)) { + continue; + } + const child = node.#children[key]; + if (matcher instanceof RegExp) { + if (partOffsets === null) { + partOffsets = new Array(len); + let offset = path[0] === "/" ? 1 : 0; + for (let p = 0; p < len; p++) { + partOffsets[p] = offset; + offset += parts[p].length + 1; + } + } + const restPathString = path.substring(partOffsets[i]); + const m = matcher.exec(restPathString); + if (m) { + params[name] = m[0]; + this.#pushHandlerSets(handlerSets, child, method, node.#params, params); + if (hasChildren(child.#children)) { + child.#params = params; + const componentCount = m[0].match(/\//)?.length ?? 0; + const targetCurNodes = curNodesQueue[componentCount] ||= []; + targetCurNodes.push(child); + } + continue; + } + } + if (matcher === true || matcher.test(part)) { + params[name] = part; + if (isLast) { + this.#pushHandlerSets(handlerSets, child, method, params, node.#params); + if (child.#children["*"]) { + this.#pushHandlerSets( + handlerSets, + child.#children["*"], + method, + params, + node.#params + ); + } + } else { + child.#params = params; + tempNodes.push(child); + } + } + } + } + const shifted = curNodesQueue.shift(); + curNodes = shifted ? tempNodes.concat(shifted) : tempNodes; + } + if (handlerSets.length > 1) { + handlerSets.sort((a, b) => { + return a.score - b.score; + }); + } + return [handlerSets.map(({ handler, params }) => [handler, params])]; + } +}; + +// node_modules/hono/dist/router/trie-router/router.js +var TrieRouter = class { + static { + __name(this, "TrieRouter"); + } + name = "TrieRouter"; + #node; + constructor() { + this.#node = new Node2(); + } + add(method, path, handler) { + const results = checkOptionalParameter(path); + if (results) { + for (let i = 0, len = results.length; i < len; i++) { + this.#node.insert(method, results[i], handler); + } + return; + } + this.#node.insert(method, path, handler); + } + match(method, path) { + return this.#node.search(method, path); + } +}; + +// node_modules/hono/dist/hono.js +var Hono2 = class extends Hono { + static { + __name(this, "Hono"); + } + /** + * Creates an instance of the Hono class. + * + * @param options - Optional configuration options for the Hono instance. + */ + constructor(options = {}) { + super(options); + this.router = options.router ?? new SmartRouter({ + routers: [new RegExpRouter(), new TrieRouter()] + }); + } +}; + +// node_modules/hono/dist/middleware/cors/index.js +var cors = /* @__PURE__ */ __name((options) => { + const opts = { + origin: "*", + allowMethods: ["GET", "HEAD", "PUT", "POST", "DELETE", "PATCH"], + allowHeaders: [], + exposeHeaders: [], + ...options + }; + const findAllowOrigin = ((optsOrigin) => { + if (typeof optsOrigin === "string") { + if (optsOrigin === "*") { + return () => optsOrigin; + } else { + return (origin) => optsOrigin === origin ? origin : null; + } + } else if (typeof optsOrigin === "function") { + return optsOrigin; + } else { + return (origin) => optsOrigin.includes(origin) ? origin : null; + } + })(opts.origin); + const findAllowMethods = ((optsAllowMethods) => { + if (typeof optsAllowMethods === "function") { + return optsAllowMethods; + } else if (Array.isArray(optsAllowMethods)) { + return () => optsAllowMethods; + } else { + return () => []; + } + })(opts.allowMethods); + return /* @__PURE__ */ __name(async function cors2(c, next) { + function set(key, value) { + c.res.headers.set(key, value); + } + __name(set, "set"); + const allowOrigin = await findAllowOrigin(c.req.header("origin") || "", c); + if (allowOrigin) { + set("Access-Control-Allow-Origin", allowOrigin); + } + if (opts.credentials) { + set("Access-Control-Allow-Credentials", "true"); + } + if (opts.exposeHeaders?.length) { + set("Access-Control-Expose-Headers", opts.exposeHeaders.join(",")); + } + if (c.req.method === "OPTIONS") { + if (opts.origin !== "*") { + set("Vary", "Origin"); + } + if (opts.maxAge != null) { + set("Access-Control-Max-Age", opts.maxAge.toString()); + } + const allowMethods = await findAllowMethods(c.req.header("origin") || "", c); + if (allowMethods.length) { + set("Access-Control-Allow-Methods", allowMethods.join(",")); + } + let headers = opts.allowHeaders; + if (!headers?.length) { + const requestHeaders = c.req.header("Access-Control-Request-Headers"); + if (requestHeaders) { + headers = requestHeaders.split(/\s*,\s*/); + } + } + if (headers?.length) { + set("Access-Control-Allow-Headers", headers.join(",")); + c.res.headers.append("Vary", "Access-Control-Request-Headers"); + } + c.res.headers.delete("Content-Length"); + c.res.headers.delete("Content-Type"); + return new Response(null, { + headers: c.res.headers, + status: 204, + statusText: "No Content" + }); + } + await next(); + if (opts.origin !== "*") { + c.header("Vary", "Origin", { append: true }); + } + }, "cors2"); +}, "cors"); + +// node_modules/hyparquet/src/constants.js +var ParquetTypes = [ + "BOOLEAN", + "INT32", + "INT64", + "INT96", + // deprecated + "FLOAT", + "DOUBLE", + "BYTE_ARRAY", + "FIXED_LEN_BYTE_ARRAY" +]; +var Encodings = [ + "PLAIN", + "GROUP_VAR_INT", + // deprecated + "PLAIN_DICTIONARY", + "RLE", + "BIT_PACKED", + // deprecated + "DELTA_BINARY_PACKED", + "DELTA_LENGTH_BYTE_ARRAY", + "DELTA_BYTE_ARRAY", + "RLE_DICTIONARY", + "BYTE_STREAM_SPLIT" +]; +var FieldRepetitionTypes = [ + "REQUIRED", + "OPTIONAL", + "REPEATED" +]; +var ConvertedTypes = [ + "UTF8", + "MAP", + "MAP_KEY_VALUE", + "LIST", + "ENUM", + "DECIMAL", + "DATE", + "TIME_MILLIS", + "TIME_MICROS", + "TIMESTAMP_MILLIS", + "TIMESTAMP_MICROS", + "UINT_8", + "UINT_16", + "UINT_32", + "UINT_64", + "INT_8", + "INT_16", + "INT_32", + "INT_64", + "JSON", + "BSON", + "INTERVAL" +]; +var CompressionCodecs = [ + "UNCOMPRESSED", + "SNAPPY", + "GZIP", + "LZO", + "BROTLI", + "LZ4", + "ZSTD", + "LZ4_RAW" +]; +var PageTypes = [ + "DATA_PAGE", + "INDEX_PAGE", + "DICTIONARY_PAGE", + "DATA_PAGE_V2" +]; +var EdgeInterpolationAlgorithms = [ + "SPHERICAL", + "VINCENTY", + "THOMAS", + "ANDOYER", + "KARNEY" +]; + +// node_modules/hyparquet/src/wkb.js +function wkbToGeojson(reader) { + const flags = getFlags(reader); + if (flags.type === 1) { + return { type: "Point", coordinates: readPosition(reader, flags) }; + } else if (flags.type === 2) { + return { type: "LineString", coordinates: readLine(reader, flags) }; + } else if (flags.type === 3) { + return { type: "Polygon", coordinates: readPolygon(reader, flags) }; + } else if (flags.type === 4) { + const points = []; + for (let i = 0; i < flags.count; i++) { + points.push(readPosition(reader, getFlags(reader))); + } + return { type: "MultiPoint", coordinates: points }; + } else if (flags.type === 5) { + const lines = []; + for (let i = 0; i < flags.count; i++) { + lines.push(readLine(reader, getFlags(reader))); + } + return { type: "MultiLineString", coordinates: lines }; + } else if (flags.type === 6) { + const polygons = []; + for (let i = 0; i < flags.count; i++) { + polygons.push(readPolygon(reader, getFlags(reader))); + } + return { type: "MultiPolygon", coordinates: polygons }; + } else if (flags.type === 7) { + const geometries = []; + for (let i = 0; i < flags.count; i++) { + geometries.push(wkbToGeojson(reader)); + } + return { type: "GeometryCollection", geometries }; + } else { + throw new Error(`Unsupported geometry type: ${flags.type}`); + } +} +__name(wkbToGeojson, "wkbToGeojson"); +function getFlags(reader) { + const { view } = reader; + const littleEndian = view.getUint8(reader.offset++) === 1; + const rawType = view.getUint32(reader.offset, littleEndian); + reader.offset += 4; + const type = rawType % 1e3; + const flags = Math.floor(rawType / 1e3); + let count = 0; + if (type > 1 && type <= 7) { + count = view.getUint32(reader.offset, littleEndian); + reader.offset += 4; + } + let dim = 2; + if (flags) dim++; + if (flags === 3) dim++; + return { littleEndian, type, dim, count }; +} +__name(getFlags, "getFlags"); +function readPosition(reader, flags) { + const points = []; + for (let i = 0; i < flags.dim; i++) { + const coord = reader.view.getFloat64(reader.offset, flags.littleEndian); + reader.offset += 8; + points.push(coord); + } + return points; +} +__name(readPosition, "readPosition"); +function readLine(reader, flags) { + const points = []; + for (let i = 0; i < flags.count; i++) { + points.push(readPosition(reader, flags)); + } + return points; +} +__name(readLine, "readLine"); +function readPolygon(reader, flags) { + const { view } = reader; + const rings = []; + for (let r = 0; r < flags.count; r++) { + const count = view.getUint32(reader.offset, flags.littleEndian); + reader.offset += 4; + rings.push(readLine(reader, { ...flags, count })); + } + return rings; +} +__name(readPolygon, "readPolygon"); + +// node_modules/hyparquet/src/convert.js +var decoder = new TextDecoder(); +var DEFAULT_PARSERS = { + timestampFromMilliseconds(millis) { + return new Date(Number(millis)); + }, + timestampFromMicroseconds(micros) { + return new Date(Number(micros / 1000n)); + }, + timestampFromNanoseconds(nanos) { + return new Date(Number(nanos / 1000000n)); + }, + dateFromDays(days) { + return new Date(days * 864e5); + }, + stringFromBytes(bytes) { + return bytes && decoder.decode(bytes); + }, + jsonFromBytes(bytes) { + return bytes && JSON.parse(decoder.decode(bytes)); + }, + geometryFromBytes(bytes) { + return bytes && wkbToGeojson({ view: new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength), offset: 0 }); + }, + geographyFromBytes(bytes) { + return bytes && wkbToGeojson({ view: new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength), offset: 0 }); + }, + uuidFromBytes(bytes) { + if (!bytes) return void 0; + const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join(""); + return hex.slice(0, 8) + "-" + hex.slice(8, 12) + "-" + hex.slice(12, 16) + "-" + hex.slice(16, 20) + "-" + hex.slice(20, 32); + } +}; +function convertWithDictionary(data, dictionary, encoding, columnDecoder) { + if (dictionary && encoding.endsWith("_DICTIONARY")) { + let output = data; + if (data instanceof Uint8Array && !(dictionary instanceof Uint8Array)) { + output = new dictionary.constructor(data.length); + } + for (let i = 0; i < data.length; i++) { + output[i] = dictionary[data[i]]; + } + return output; + } else { + return convert(data, columnDecoder); + } +} +__name(convertWithDictionary, "convertWithDictionary"); +function convert(data, columnDecoder) { + const { element, parsers, utf8 = true, schemaPath } = columnDecoder; + const { type, converted_type: ctype, logical_type: ltype } = element; + const nullable = element.repetition_type !== "REQUIRED"; + const isVariant = schemaPath?.some((s) => s.element.logical_type?.type === "VARIANT"); + if (isVariant && type === "BYTE_ARRAY" && ctype !== "UTF8" && ltype?.type !== "STRING") { + return data; + } + if (ctype === "DECIMAL") { + const scale = element.scale || 0; + const factor = 10 ** -scale; + const arr = new Array(data.length); + for (let i = 0; i < arr.length; i++) { + if (data[i] instanceof Uint8Array) { + arr[i] = parseDecimal(data[i]) * factor; + } else { + arr[i] = Number(data[i]) * factor; + } + } + return arr; + } + if (!ctype && type === "INT96") { + return Array.from(data).map((v) => parsers.timestampFromNanoseconds(parseInt96Nanos(v))); + } + if (ctype === "DATE") { + return Array.from(data).map((v) => parsers.dateFromDays(v)); + } + if (ctype === "TIMESTAMP_MILLIS") { + return Array.from(data).map((v) => parsers.timestampFromMilliseconds(v)); + } + if (ctype === "TIMESTAMP_MICROS") { + return Array.from(data).map((v) => parsers.timestampFromMicroseconds(v)); + } + if (ctype === "JSON") { + return data.map((v) => parsers.jsonFromBytes(v)); + } + if (ctype === "BSON") { + throw new Error("parquet bson not supported"); + } + if (ctype === "INTERVAL") { + throw new Error("parquet interval not supported"); + } + if (ltype?.type === "GEOMETRY") { + return data.map((v) => parsers.geometryFromBytes(v)); + } + if (ltype?.type === "GEOGRAPHY") { + return data.map((v) => parsers.geographyFromBytes(v)); + } + if (ltype?.type === "UUID") { + return data.map((v) => parsers.uuidFromBytes(v)); + } + if (ctype === "UTF8" || ltype?.type === "STRING" || utf8 && type === "BYTE_ARRAY") { + return data.map((v) => parsers.stringFromBytes(v)); + } + if (ctype === "UINT_64" || ltype?.type === "INTEGER" && ltype.bitWidth === 64 && !ltype.isSigned) { + if (data instanceof BigInt64Array) return new BigUint64Array(data.buffer, data.byteOffset, data.length); + const arr = nullable ? new Array(data.length) : new BigUint64Array(data.length); + for (let i = 0; i < arr.length; i++) arr[i] = data[i]; + return arr; + } + if (ctype === "UINT_32" || ltype?.type === "INTEGER" && ltype.bitWidth === 32 && !ltype.isSigned) { + if (data instanceof Int32Array) return new Uint32Array(data.buffer, data.byteOffset, data.length); + const arr = nullable ? new Array(data.length) : new Uint32Array(data.length); + for (let i = 0; i < arr.length; i++) { + arr[i] = data[i] < 0 ? 4294967296 + data[i] : data[i]; + } + return arr; + } + if (ltype?.type === "FLOAT16") { + return Array.from(data).map(parseFloat16); + } + if (ltype?.type === "TIMESTAMP") { + const { unit } = ltype; + let parser = parsers.timestampFromMilliseconds; + if (unit === "MICROS") parser = parsers.timestampFromMicroseconds; + if (unit === "NANOS") parser = parsers.timestampFromNanoseconds; + const arr = new Array(data.length); + for (let i = 0; i < arr.length; i++) { + arr[i] = parser(data[i]); + } + return arr; + } + return data; +} +__name(convert, "convert"); +function parseDecimal(bytes) { + if (!bytes.length) return 0; + let value = 0n; + for (const byte of bytes) { + value = value * 256n + BigInt(byte); + } + const bits = bytes.length * 8; + if (value >= 2n ** BigInt(bits - 1)) { + value -= 2n ** BigInt(bits); + } + return Number(value); +} +__name(parseDecimal, "parseDecimal"); +function parseInt96Nanos(value) { + const days = (value >> 64n) - 2440588n; + const nano = value & 0xffffffffffffffffn; + return days * 86400000000000n + nano; +} +__name(parseInt96Nanos, "parseInt96Nanos"); +function parseFloat16(bytes) { + if (!bytes) return void 0; + const int16 = bytes[1] << 8 | bytes[0]; + const sign = int16 >> 15 ? -1 : 1; + const exp = int16 >> 10 & 31; + const frac = int16 & 1023; + if (exp === 0) return sign * 2 ** -14 * (frac / 1024); + if (exp === 31) return frac ? NaN : sign * Infinity; + return sign * 2 ** (exp - 15) * (1 + frac / 1024); +} +__name(parseFloat16, "parseFloat16"); + +// node_modules/hyparquet/src/schema.js +function schemaTree(schema, rootIndex, path) { + const element = schema[rootIndex]; + const children = []; + let count = 1; + if (element.num_children) { + while (children.length < element.num_children) { + const childElement = schema[rootIndex + count]; + const child = schemaTree(schema, rootIndex + count, [...path, childElement.name]); + count += child.count; + children.push(child); + } + } + return { count, element, children, path }; +} +__name(schemaTree, "schemaTree"); +function getSchemaPath(schema, name) { + let tree = schemaTree(schema, 0, []); + const path = [tree]; + for (const part of name) { + const child = tree.children.find((child2) => child2.element.name === part); + if (!child) throw new Error(`parquet schema element not found: ${name}`); + path.push(child); + tree = child; + } + return path; +} +__name(getSchemaPath, "getSchemaPath"); +function getPhysicalColumns(schemaTree2) { + const columns = []; + function traverse(node) { + if (node.children.length) { + for (const child of node.children) { + traverse(child); + } + } else { + columns.push(node.path.join(".")); + } + } + __name(traverse, "traverse"); + traverse(schemaTree2); + return columns; +} +__name(getPhysicalColumns, "getPhysicalColumns"); +function getMaxRepetitionLevel(schemaPath) { + let maxLevel = 0; + for (const { element } of schemaPath) { + if (element.repetition_type === "REPEATED") { + maxLevel++; + } + } + return maxLevel; +} +__name(getMaxRepetitionLevel, "getMaxRepetitionLevel"); +function getMaxDefinitionLevel(schemaPath) { + let maxLevel = 0; + for (const { element } of schemaPath.slice(1)) { + if (element.repetition_type !== "REQUIRED") { + maxLevel++; + } + } + return maxLevel; +} +__name(getMaxDefinitionLevel, "getMaxDefinitionLevel"); +function isListLike(schema) { + if (!schema) return false; + if (schema.element.converted_type !== "LIST") return false; + if (schema.children.length > 1) return false; + const firstChild = schema.children[0]; + if (firstChild.children.length > 1) return false; + if (firstChild.element.repetition_type !== "REPEATED") return false; + return true; +} +__name(isListLike, "isListLike"); +function isMapLike(schema) { + if (!schema) return false; + if (schema.element.converted_type !== "MAP") return false; + if (schema.children.length > 1) return false; + const firstChild = schema.children[0]; + if (firstChild.children.length !== 2) return false; + if (firstChild.element.repetition_type !== "REPEATED") return false; + const keyChild = firstChild.children.find((child) => child.element.name === "key"); + if (keyChild?.element.repetition_type === "REPEATED") return false; + const valueChild = firstChild.children.find((child) => child.element.name === "value"); + if (valueChild?.element.repetition_type === "REPEATED") return false; + return true; +} +__name(isMapLike, "isMapLike"); +function isFlatColumn(schemaPath) { + if (schemaPath.length !== 2) return false; + const [, column] = schemaPath; + if (column.element.repetition_type === "REPEATED") return false; + if (column.children.length) return false; + return true; +} +__name(isFlatColumn, "isFlatColumn"); + +// node_modules/hyparquet/src/thrift.js +var STOP = 0; +var TRUE = 1; +var FALSE = 2; +var BYTE = 3; +var I16 = 4; +var I32 = 5; +var I64 = 6; +var DOUBLE = 7; +var BINARY = 8; +var LIST = 9; +var STRUCT = 12; +function deserializeTCompactProtocol(reader) { + const value = {}; + let fid = 0; + while (reader.offset < reader.view.byteLength) { + const byte = reader.view.getUint8(reader.offset++); + const type = byte & 15; + if (type === STOP) break; + const delta = byte >> 4; + fid = delta ? fid + delta : readZigZag(reader); + value[`field_${fid}`] = readElement(reader, type); + } + return value; +} +__name(deserializeTCompactProtocol, "deserializeTCompactProtocol"); +function readElement(reader, type) { + switch (type) { + case TRUE: + return true; + case FALSE: + return false; + case BYTE: + return reader.view.getInt8(reader.offset++); + case I16: + case I32: + return readZigZag(reader); + case I64: + return readZigZagBigInt(reader); + case DOUBLE: { + const value = reader.view.getFloat64(reader.offset, true); + reader.offset += 8; + return value; + } + case BINARY: { + const stringLength = readVarInt(reader); + const strBytes = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, stringLength); + reader.offset += stringLength; + return strBytes; + } + case LIST: { + const byte = reader.view.getUint8(reader.offset++); + const elemType = byte & 15; + let listSize = byte >> 4; + if (listSize === 15) { + listSize = readVarInt(reader); + } + const boolType = elemType === TRUE || elemType === FALSE; + const values = new Array(listSize); + for (let i = 0; i < listSize; i++) { + values[i] = boolType ? readElement(reader, BYTE) === 1 : readElement(reader, elemType); + } + return values; + } + case STRUCT: + return deserializeTCompactProtocol(reader); + default: + throw new Error(`thrift unhandled type: ${type}`); + } +} +__name(readElement, "readElement"); +function readVarInt(reader) { + let result = 0; + let shift = 0; + while (true) { + const byte = reader.view.getUint8(reader.offset++); + result |= (byte & 127) << shift; + if (!(byte & 128)) { + return result; + } + shift += 7; + } +} +__name(readVarInt, "readVarInt"); +function readVarBigInt(reader) { + let result = 0n; + let shift = 0n; + while (true) { + const byte = reader.view.getUint8(reader.offset++); + result |= BigInt(byte & 127) << shift; + if (!(byte & 128)) { + return result; + } + shift += 7n; + } +} +__name(readVarBigInt, "readVarBigInt"); +function readZigZag(reader) { + const zigzag = readVarInt(reader); + return zigzag >>> 1 ^ -(zigzag & 1); +} +__name(readZigZag, "readZigZag"); +function readZigZagBigInt(reader) { + const zigzag = readVarBigInt(reader); + return zigzag >> 1n ^ -(zigzag & 1n); +} +__name(readZigZagBigInt, "readZigZagBigInt"); + +// node_modules/hyparquet/src/geoparquet.js +function markGeoColumns(schema, key_value_metadata) { + const columns = /* @__PURE__ */ new Map(); + const geo = key_value_metadata?.find(({ key }) => key === "geo")?.value; + const decodedColumns = (geo && JSON.parse(geo)?.columns) ?? {}; + for (const [name, column] of Object.entries(decodedColumns)) { + if (column.encoding !== "WKB") continue; + const type = column.edges === "spherical" ? "GEOGRAPHY" : "GEOMETRY"; + const id = column.crs?.id ?? column.crs?.ids?.[0]; + const crs = id ? `${id.authority}:${id.code.toString()}` : void 0; + columns.set(name, { type, crs }); + } + for (let i = 1; i < schema.length; i++) { + const { logical_type, name, num_children, type } = schema[i]; + if (num_children) { + i += num_children; + continue; + } + if (type === "BYTE_ARRAY" && !logical_type) { + schema[i].logical_type = columns.get(name); + } + } +} +__name(markGeoColumns, "markGeoColumns"); + +// node_modules/hyparquet/src/metadata.js +var defaultInitialFetchSize = 1 << 19; +var decoder2 = new TextDecoder(); +function decode(value) { + return value && decoder2.decode(value); +} +__name(decode, "decode"); +async function parquetMetadataAsync(asyncBuffer, { parsers, initialFetchSize = defaultInitialFetchSize, geoparquet = true } = {}) { + if (!asyncBuffer || !(asyncBuffer.byteLength >= 0)) throw new Error("parquet expected AsyncBuffer"); + const footerOffset = Math.max(0, asyncBuffer.byteLength - initialFetchSize); + const footerBuffer = await asyncBuffer.slice(footerOffset, asyncBuffer.byteLength); + const footerView = new DataView(footerBuffer); + if (footerView.getUint32(footerBuffer.byteLength - 4, true) !== 827474256) { + throw new Error("parquet file invalid (footer != PAR1)"); + } + const metadataLength = footerView.getUint32(footerBuffer.byteLength - 8, true); + if (metadataLength > asyncBuffer.byteLength - 8) { + throw new Error(`parquet metadata length ${metadataLength} exceeds available buffer ${asyncBuffer.byteLength - 8}`); + } + if (metadataLength + 8 > initialFetchSize) { + const metadataOffset = asyncBuffer.byteLength - metadataLength - 8; + const metadataBuffer = await asyncBuffer.slice(metadataOffset, footerOffset); + const combinedBuffer = new ArrayBuffer(metadataLength + 8); + const combinedView = new Uint8Array(combinedBuffer); + combinedView.set(new Uint8Array(metadataBuffer)); + combinedView.set(new Uint8Array(footerBuffer), footerOffset - metadataOffset); + return parquetMetadata(combinedBuffer, { parsers, geoparquet }); + } else { + return parquetMetadata(footerBuffer, { parsers, geoparquet }); + } +} +__name(parquetMetadataAsync, "parquetMetadataAsync"); +function parquetMetadata(arrayBuffer, { parsers, geoparquet = true } = {}) { + if (!(arrayBuffer instanceof ArrayBuffer)) throw new Error("parquet expected ArrayBuffer"); + const view = new DataView(arrayBuffer); + parsers = { ...DEFAULT_PARSERS, ...parsers }; + if (view.byteLength < 8) { + throw new Error("parquet file is too short"); + } + if (view.getUint32(view.byteLength - 4, true) !== 827474256) { + throw new Error("parquet file invalid (footer != PAR1)"); + } + const metadataLengthOffset = view.byteLength - 8; + const metadataLength = view.getUint32(metadataLengthOffset, true); + if (metadataLength > view.byteLength - 8) { + throw new Error(`parquet metadata length ${metadataLength} exceeds available buffer ${view.byteLength - 8}`); + } + const metadataOffset = metadataLengthOffset - metadataLength; + const reader = { view, offset: metadataOffset }; + const metadata = deserializeTCompactProtocol(reader); + const version = metadata.field_1; + const schema = metadata.field_2.map((field) => ({ + type: ParquetTypes[field.field_1], + type_length: field.field_2, + repetition_type: FieldRepetitionTypes[field.field_3], + name: decode(field.field_4), + num_children: field.field_5, + converted_type: ConvertedTypes[field.field_6], + scale: field.field_7, + precision: field.field_8, + field_id: field.field_9, + logical_type: logicalType(field.field_10) + })); + const columnSchema = schema.filter((e) => e.type); + const num_rows = metadata.field_3; + const row_groups = metadata.field_4.map((rowGroup) => ({ + columns: rowGroup.field_1.map((column, columnIndex) => ({ + file_path: decode(column.field_1), + file_offset: column.field_2, + meta_data: column.field_3 && { + type: ParquetTypes[column.field_3.field_1], + encodings: column.field_3.field_2?.map((e) => Encodings[e]), + path_in_schema: column.field_3.field_3.map(decode), + codec: CompressionCodecs[column.field_3.field_4], + num_values: column.field_3.field_5, + total_uncompressed_size: column.field_3.field_6, + total_compressed_size: column.field_3.field_7, + key_value_metadata: column.field_3.field_8?.map((kv) => ({ + key: decode(kv.field_1), + value: decode(kv.field_2) + })), + data_page_offset: column.field_3.field_9, + index_page_offset: column.field_3.field_10, + dictionary_page_offset: column.field_3.field_11, + statistics: convertStats(column.field_3.field_12, columnSchema[columnIndex], parsers), + encoding_stats: column.field_3.field_13?.map((encodingStat) => ({ + page_type: PageTypes[encodingStat.field_1], + encoding: Encodings[encodingStat.field_2], + count: encodingStat.field_3 + })), + bloom_filter_offset: column.field_3.field_14, + bloom_filter_length: column.field_3.field_15, + size_statistics: column.field_3.field_16 && { + unencoded_byte_array_data_bytes: column.field_3.field_16.field_1, + repetition_level_histogram: column.field_3.field_16.field_2, + definition_level_histogram: column.field_3.field_16.field_3 + }, + geospatial_statistics: column.field_3.field_17 && { + bbox: column.field_3.field_17.field_1 && { + xmin: column.field_3.field_17.field_1.field_1, + xmax: column.field_3.field_17.field_1.field_2, + ymin: column.field_3.field_17.field_1.field_3, + ymax: column.field_3.field_17.field_1.field_4, + zmin: column.field_3.field_17.field_1.field_5, + zmax: column.field_3.field_17.field_1.field_6, + mmin: column.field_3.field_17.field_1.field_7, + mmax: column.field_3.field_17.field_1.field_8 + }, + geospatial_types: column.field_3.field_17.field_2 + } + }, + offset_index_offset: column.field_4, + offset_index_length: column.field_5, + column_index_offset: column.field_6, + column_index_length: column.field_7, + crypto_metadata: column.field_8, + encrypted_column_metadata: column.field_9 + })), + total_byte_size: rowGroup.field_2, + num_rows: rowGroup.field_3, + sorting_columns: rowGroup.field_4?.map((sortingColumn) => ({ + column_idx: sortingColumn.field_1, + descending: sortingColumn.field_2, + nulls_first: sortingColumn.field_3 + })), + file_offset: rowGroup.field_5, + total_compressed_size: rowGroup.field_6, + ordinal: rowGroup.field_7 + })); + const key_value_metadata = metadata.field_5?.map((kv) => ({ + key: decode(kv.field_1), + value: decode(kv.field_2) + })); + const created_by = decode(metadata.field_6); + if (geoparquet) { + markGeoColumns(schema, key_value_metadata); + } + return { + version, + schema, + num_rows, + row_groups, + key_value_metadata, + created_by, + metadata_length: metadataLength + }; +} +__name(parquetMetadata, "parquetMetadata"); +function parquetSchema({ schema }) { + return getSchemaPath(schema, [])[0]; +} +__name(parquetSchema, "parquetSchema"); +function logicalType(logicalType2) { + if (logicalType2?.field_1) return { type: "STRING" }; + if (logicalType2?.field_2) return { type: "MAP" }; + if (logicalType2?.field_3) return { type: "LIST" }; + if (logicalType2?.field_4) return { type: "ENUM" }; + if (logicalType2?.field_5) return { + type: "DECIMAL", + scale: logicalType2.field_5.field_1, + precision: logicalType2.field_5.field_2 + }; + if (logicalType2?.field_6) return { type: "DATE" }; + if (logicalType2?.field_7) return { + type: "TIME", + isAdjustedToUTC: logicalType2.field_7.field_1, + unit: timeUnit(logicalType2.field_7.field_2) + }; + if (logicalType2?.field_8) return { + type: "TIMESTAMP", + isAdjustedToUTC: logicalType2.field_8.field_1, + unit: timeUnit(logicalType2.field_8.field_2) + }; + if (logicalType2?.field_10) return { + type: "INTEGER", + bitWidth: logicalType2.field_10.field_1, + isSigned: logicalType2.field_10.field_2 + }; + if (logicalType2?.field_11) return { type: "NULL" }; + if (logicalType2?.field_12) return { type: "JSON" }; + if (logicalType2?.field_13) return { type: "BSON" }; + if (logicalType2?.field_14) return { type: "UUID" }; + if (logicalType2?.field_15) return { type: "FLOAT16" }; + if (logicalType2?.field_16) return { + type: "VARIANT", + specification_version: logicalType2.field_16.field_1 + }; + if (logicalType2?.field_17) return { + type: "GEOMETRY", + crs: decode(logicalType2.field_17.field_1) + }; + if (logicalType2?.field_18) return { + type: "GEOGRAPHY", + crs: decode(logicalType2.field_18.field_1), + algorithm: EdgeInterpolationAlgorithms[logicalType2.field_18.field_2] + }; + return logicalType2; +} +__name(logicalType, "logicalType"); +function timeUnit(unit) { + if (unit.field_1) return "MILLIS"; + if (unit.field_2) return "MICROS"; + if (unit.field_3) return "NANOS"; + throw new Error("parquet time unit required"); +} +__name(timeUnit, "timeUnit"); +function convertStats(stats, schema, parsers) { + return stats && { + max: convertMetadata(stats.field_1, schema, parsers), + min: convertMetadata(stats.field_2, schema, parsers), + null_count: stats.field_3, + distinct_count: stats.field_4, + max_value: convertMetadata(stats.field_5, schema, parsers), + min_value: convertMetadata(stats.field_6, schema, parsers), + is_max_value_exact: stats.field_7, + is_min_value_exact: stats.field_8 + }; +} +__name(convertStats, "convertStats"); +function convertMetadata(value, schema, parsers) { + const { type, converted_type, logical_type } = schema; + if (value === void 0) return value; + if (type === "BOOLEAN") return value[0] === 1; + if (type === "BYTE_ARRAY") return parsers.stringFromBytes(value); + const view = new DataView(value.buffer, value.byteOffset, value.byteLength); + if (type === "FLOAT" && view.byteLength === 4) return view.getFloat32(0, true); + if (type === "DOUBLE" && view.byteLength === 8) return view.getFloat64(0, true); + if (type === "INT32" && converted_type === "DATE") return parsers.dateFromDays(view.getInt32(0, true)); + if (type === "INT64" && converted_type === "TIMESTAMP_MILLIS") return parsers.timestampFromMilliseconds(view.getBigInt64(0, true)); + if (type === "INT64" && converted_type === "TIMESTAMP_MICROS") return parsers.timestampFromMicroseconds(view.getBigInt64(0, true)); + if (type === "INT64" && logical_type?.type === "TIMESTAMP" && logical_type?.unit === "NANOS") return parsers.timestampFromNanoseconds(view.getBigInt64(0, true)); + if (type === "INT64" && logical_type?.type === "TIMESTAMP" && logical_type?.unit === "MICROS") return parsers.timestampFromMicroseconds(view.getBigInt64(0, true)); + if (type === "INT64" && logical_type?.type === "TIMESTAMP") return parsers.timestampFromMilliseconds(view.getBigInt64(0, true)); + if (type === "INT32" && view.byteLength === 4) return view.getInt32(0, true); + if (type === "INT64" && view.byteLength === 8) return view.getBigInt64(0, true); + if (converted_type === "DECIMAL") return parseDecimal(value) * 10 ** -(schema.scale || 0); + if (logical_type?.type === "FLOAT16") return parseFloat16(value); + if (logical_type?.type === "UUID") return parsers.uuidFromBytes(value); + if (type === "FIXED_LEN_BYTE_ARRAY") return value; + return value; +} +__name(convertMetadata, "convertMetadata"); + +// node_modules/hyparquet/src/indexes.js +function readOffsetIndex(reader) { + const thrift = deserializeTCompactProtocol(reader); + return { + // @ts-ignore + page_locations: thrift.field_1.map((loc) => ({ + offset: loc.field_1, + compressed_page_size: loc.field_2, + first_row_index: loc.field_3 + })), + unencoded_byte_array_data_bytes: thrift.field_2 + }; +} +__name(readOffsetIndex, "readOffsetIndex"); + +// node_modules/hyparquet/src/xxhash.js +var MASK = 0xffffffffffffffffn; +var PRIME1 = 0x9e3779b185ebca87n; +var PRIME2 = 0xc2b2ae3d27d4eb4fn; +var PRIME3 = 0x165667b19e3779f9n; +var PRIME4 = 0x85ebca77c2b2ae63n; +var PRIME5 = 0x27d4eb2f165667c5n; +function rotl64(x, r) { + return (x << r | x >> 64n - r) & MASK; +} +__name(rotl64, "rotl64"); +function round(acc, val) { + acc = acc + val * PRIME2 & MASK; + acc = rotl64(acc, 31n); + return acc * PRIME1 & MASK; +} +__name(round, "round"); +function mergeRound(acc, val) { + acc ^= round(0n, val); + return acc * PRIME1 + PRIME4 & MASK; +} +__name(mergeRound, "mergeRound"); +function xxhash64(input, seed = 0n) { + const view = new DataView(input.buffer, input.byteOffset, input.byteLength); + const len = input.byteLength; + let offset = 0; + let h64; + if (len >= 32) { + let v1 = seed + PRIME1 + PRIME2 & MASK; + let v2 = seed + PRIME2 & MASK; + let v3 = seed; + let v4 = seed - PRIME1 & MASK; + while (offset + 32 <= len) { + v1 = round(v1, view.getBigUint64(offset, true)); + offset += 8; + v2 = round(v2, view.getBigUint64(offset, true)); + offset += 8; + v3 = round(v3, view.getBigUint64(offset, true)); + offset += 8; + v4 = round(v4, view.getBigUint64(offset, true)); + offset += 8; + } + h64 = rotl64(v1, 1n) + rotl64(v2, 7n) + rotl64(v3, 12n) + rotl64(v4, 18n) & MASK; + h64 = mergeRound(h64, v1); + h64 = mergeRound(h64, v2); + h64 = mergeRound(h64, v3); + h64 = mergeRound(h64, v4); + } else { + h64 = seed + PRIME5 & MASK; + } + h64 = h64 + BigInt(len) & MASK; + while (offset + 8 <= len) { + h64 ^= round(0n, view.getBigUint64(offset, true)); + h64 = rotl64(h64, 27n) * PRIME1 + PRIME4 & MASK; + offset += 8; + } + if (offset + 4 <= len) { + h64 ^= BigInt(view.getUint32(offset, true)) * PRIME1 & MASK; + h64 = rotl64(h64, 23n) * PRIME2 + PRIME3 & MASK; + offset += 4; + } + while (offset < len) { + h64 ^= BigInt(view.getUint8(offset)) * PRIME5 & MASK; + h64 = rotl64(h64, 11n) * PRIME1 & MASK; + offset += 1; + } + h64 ^= h64 >> 33n; + h64 = h64 * PRIME2 & MASK; + h64 ^= h64 >> 29n; + h64 = h64 * PRIME3 & MASK; + h64 ^= h64 >> 32n; + return h64; +} +__name(xxhash64, "xxhash64"); + +// node_modules/hyparquet/src/bloom.js +var textEncoder = new TextEncoder(); +var SALT = new Uint32Array([ + 1203114875, + 1150766481, + 2284105051, + 2729912477, + 1884591559, + 770785867, + 2667333959, + 1550580529 +]); +function blockIndex(hash, numBlocks) { + return Number((hash >> 32n) * BigInt(numBlocks) >> 32n); +} +__name(blockIndex, "blockIndex"); +function blockMask(hash) { + const m = new Uint32Array(8); + const low = Number(hash & 0xffffffffn) | 0; + for (let i = 0; i < 8; i++) { + m[i] = 1 << (Math.imul(low, SALT[i]) >>> 27); + } + return m; +} +__name(blockMask, "blockMask"); +function sbbfContains(blocks, hash) { + const offset = blockIndex(hash, blocks.length >> 3) << 3; + const m = blockMask(hash); + for (let i = 0; i < 8; i++) { + if ((blocks[offset + i] & m[i]) === 0) return false; + } + return true; +} +__name(sbbfContains, "sbbfContains"); +function readBloomFilter(reader) { + const header = deserializeTCompactProtocol(reader); + const numBytes = header.field_1; + if (typeof numBytes !== "number" || numBytes <= 0 || numBytes % 32 !== 0) return void 0; + if (!header.field_2?.field_1) return void 0; + if (!header.field_3?.field_1) return void 0; + if (!header.field_4?.field_1) return void 0; + const { view, offset } = reader; + if (offset + numBytes > view.byteLength) { + throw new Error(`parquet bloom filter truncated: need ${numBytes} bytes, have ${view.byteLength - offset}`); + } + const blocks = new Uint32Array(numBytes >> 2); + for (let i = 0; i < blocks.length; i++) { + blocks[i] = view.getUint32(offset + i * 4, true); + } + reader.offset = offset + numBytes; + return { numBytes, blocks }; +} +__name(readBloomFilter, "readBloomFilter"); +function hashParquetValue(value, element) { + if (value === null || value === void 0) return void 0; + const { type, converted_type, logical_type } = element; + if (type === "BOOLEAN") { + if (typeof value !== "boolean") return void 0; + return xxhash64(new Uint8Array([value ? 1 : 0])); + } + if (type === "FLOAT") { + if (typeof value !== "number") return void 0; + const buf = new ArrayBuffer(4); + new DataView(buf).setFloat32(0, value, true); + return xxhash64(new Uint8Array(buf)); + } + if (type === "DOUBLE") { + if (typeof value !== "number") return void 0; + const buf = new ArrayBuffer(8); + new DataView(buf).setFloat64(0, value, true); + return xxhash64(new Uint8Array(buf)); + } + if (type === "INT32") { + if (converted_type === "DATE" || converted_type === "DECIMAL" || converted_type === "TIME_MILLIS") return void 0; + if (logical_type?.type === "DATE" || logical_type?.type === "TIME" || logical_type?.type === "DECIMAL") return void 0; + if (typeof value !== "number" || !Number.isInteger(value)) return void 0; + const buf = new ArrayBuffer(4); + new DataView(buf).setInt32(0, value | 0, true); + return xxhash64(new Uint8Array(buf)); + } + if (type === "INT64") { + if (converted_type === "TIMESTAMP_MILLIS" || converted_type === "TIMESTAMP_MICROS") return void 0; + if (converted_type === "TIME_MICROS" || converted_type === "DECIMAL") return void 0; + if (logical_type?.type === "TIMESTAMP" || logical_type?.type === "TIME" || logical_type?.type === "DECIMAL") return void 0; + let bigValue; + if (typeof value === "bigint") bigValue = value; + else if (typeof value === "number" && Number.isSafeInteger(value)) bigValue = BigInt(value); + else return void 0; + const buf = new ArrayBuffer(8); + new DataView(buf).setBigUint64(0, BigInt.asUintN(64, bigValue), true); + return xxhash64(new Uint8Array(buf)); + } + if (type === "BYTE_ARRAY") { + if (converted_type === "JSON" || converted_type === "BSON" || converted_type === "DECIMAL") return void 0; + if (logical_type?.type === "JSON" || logical_type?.type === "BSON" || logical_type?.type === "VARIANT") return void 0; + if (logical_type?.type === "GEOMETRY" || logical_type?.type === "GEOGRAPHY") return void 0; + if (typeof value === "string") return xxhash64(textEncoder.encode(value)); + if (value instanceof Uint8Array) return xxhash64(value); + return void 0; + } + if (type === "FIXED_LEN_BYTE_ARRAY") { + if (converted_type === "DECIMAL" || converted_type === "INTERVAL") return void 0; + if (logical_type?.type === "DECIMAL" || logical_type?.type === "UUID" || logical_type?.type === "FLOAT16") return void 0; + if (logical_type?.type === "GEOMETRY" || logical_type?.type === "GEOGRAPHY") return void 0; + if (value instanceof Uint8Array) return xxhash64(value); + return void 0; + } + return void 0; +} +__name(hashParquetValue, "hashParquetValue"); +function bloomEligibleColumns(filter) { + const out = /* @__PURE__ */ new Set(); + walkBloomEligible(filter, out); + return out; +} +__name(bloomEligibleColumns, "bloomEligibleColumns"); +function walkBloomEligible(filter, out) { + if (!filter) return; + if ("$and" in filter && Array.isArray(filter.$and)) { + for (const sub of filter.$and) walkBloomEligible(sub, out); + return; + } + if ("$or" in filter && Array.isArray(filter.$or)) { + for (const sub of filter.$or) walkBloomEligible(sub, out); + return; + } + if ("$nor" in filter) return; + for (const [field, condition] of Object.entries(filter)) { + if (field.startsWith("$")) continue; + if (typeof condition === "object" && condition !== null && !Array.isArray(condition)) { + if ("$eq" in condition || "$in" in condition) out.add(field); + } else { + out.add(field); + } + } +} +__name(walkBloomEligible, "walkBloomEligible"); + +// node_modules/hyparquet/src/utils.js +function concat(aaa, bbb) { + const chunk = 1e4; + for (let i = 0; i < bbb.length; i += chunk) { + aaa.push(...bbb.slice(i, i + chunk)); + } +} +__name(concat, "concat"); +function equals(a, b, strict = true) { + if (strict ? a === b : a == b) return true; + if (!a || !b || typeof a !== "object" || typeof b !== "object") return false; + if (a instanceof Uint8Array && b instanceof Uint8Array) { + if (a.length !== b.length) return false; + for (let i = 0; i < a.length; i++) { + if (a[i] !== b[i]) return false; + } + return true; + } + if (Array.isArray(a) && Array.isArray(b)) { + if (a.length !== b.length) return false; + for (let i = 0; i < a.length; i++) { + if (!equals(a[i], b[i], strict)) return false; + } + return true; + } + const aKeys = Object.keys(a); + if (aKeys.length !== Object.keys(b).length) return false; + for (const k of aKeys) { + if (!equals(a[k], b[k], strict)) return false; + } + return true; +} +__name(equals, "equals"); +function cachedAsyncBuffer({ byteLength, slice }, { minSize = defaultInitialFetchSize } = {}) { + if (byteLength < minSize) { + const buffer = slice(0, byteLength); + return { + byteLength, + async slice(start, end) { + return (await buffer).slice(start, end); + } + }; + } + const cache = /* @__PURE__ */ new Map(); + return { + byteLength, + /** + * @param {number} start + * @param {number} [end] + * @returns {Awaitable} + */ + slice(start, end) { + const key = cacheKey(start, end, byteLength); + const cached = cache.get(key); + if (cached) return cached; + const promise = slice(start, end); + cache.set(key, promise); + return promise; + } + }; +} +__name(cachedAsyncBuffer, "cachedAsyncBuffer"); +function cacheKey(start, end, size) { + if (start < 0) { + if (end !== void 0) throw new Error(`invalid suffix range [${start}, ${end}]`); + if (size === void 0) return `${start},`; + return `${size + start},${size}`; + } else if (end !== void 0) { + if (start > end) throw new Error(`invalid empty range [${start}, ${end}]`); + return `${start},${end}`; + } else if (size === void 0) { + return `${start},`; + } else { + return `${start},${size}`; + } +} +__name(cacheKey, "cacheKey"); +function flatten(chunks) { + if (!chunks) return []; + if (chunks.length === 1) return chunks[0]; + const output = []; + for (const chunk of chunks) { + concat(output, chunk); + } + return output; +} +__name(flatten, "flatten"); + +// node_modules/hyparquet/src/filter.js +function columnsNeededForFilter(filter) { + if (!filter) return []; + const columns = []; + if ("$and" in filter && Array.isArray(filter.$and)) { + columns.push(...filter.$and.flatMap(columnsNeededForFilter)); + } else if ("$or" in filter && Array.isArray(filter.$or)) { + columns.push(...filter.$or.flatMap(columnsNeededForFilter)); + } else if ("$nor" in filter && Array.isArray(filter.$nor)) { + columns.push(...filter.$nor.flatMap(columnsNeededForFilter)); + } else { + columns.push(...Object.keys(filter).map((key) => key.split(".")[0])); + } + return [...new Set(columns)]; +} +__name(columnsNeededForFilter, "columnsNeededForFilter"); +function matchFilter(record, filter, strict = true) { + if ("$and" in filter && Array.isArray(filter.$and)) { + return filter.$and.every((subQuery) => matchFilter(record, subQuery, strict)); + } + if ("$or" in filter && Array.isArray(filter.$or)) { + return filter.$or.some((subQuery) => matchFilter(record, subQuery, strict)); + } + if ("$nor" in filter && Array.isArray(filter.$nor)) { + return !filter.$nor.some((subQuery) => matchFilter(record, subQuery, strict)); + } + return Object.entries(filter).every(([field, condition]) => { + const value = resolve(record, field); + if (typeof condition !== "object" || condition === null || Array.isArray(condition)) { + return equals(value, condition, strict); + } + return Object.entries(condition || {}).every(([operator, target]) => { + if (operator === "$gt") return value > target; + if (operator === "$gte") return value >= target; + if (operator === "$lt") return value < target; + if (operator === "$lte") return value <= target; + if (operator === "$eq") return equals(value, target, strict); + if (operator === "$ne") return !equals(value, target, strict); + if (operator === "$in") return Array.isArray(target) && target.includes(value); + if (operator === "$nin") return Array.isArray(target) && !target.includes(value); + if (operator === "$not") return !matchFilter({ [field]: value }, { [field]: target }, strict); + return true; + }); + }); +} +__name(matchFilter, "matchFilter"); +function canSkipRowGroup({ rowGroup, physicalColumns, filter, strict = true, bloomFilters, schemaElements }) { + if (!filter) return false; + if ("$and" in filter && Array.isArray(filter.$and)) { + return filter.$and.some((subFilter) => canSkipRowGroup({ rowGroup, physicalColumns, filter: subFilter, strict, bloomFilters, schemaElements })); + } + if ("$or" in filter && Array.isArray(filter.$or)) { + return filter.$or.every((subFilter) => canSkipRowGroup({ rowGroup, physicalColumns, filter: subFilter, strict, bloomFilters, schemaElements })); + } + if ("$nor" in filter && Array.isArray(filter.$nor)) { + return false; + } + for (const [field, condition] of Object.entries(filter)) { + const columnIndex = physicalColumns.indexOf(field); + if (columnIndex === -1) continue; + const stats = rowGroup.columns[columnIndex].meta_data?.statistics; + const { min, max, min_value, max_value } = stats || {}; + const minVal = min_value !== void 0 ? min_value : min; + const maxVal = max_value !== void 0 ? max_value : max; + const haveStats = minVal !== void 0 && maxVal !== void 0; + const bloom = bloomFilters?.[field]; + const element = schemaElements?.[field]; + for (const [operator, target] of Object.entries(condition || {})) { + if (haveStats) { + if (operator === "$gt" && maxVal <= target) return true; + if (operator === "$gte" && maxVal < target) return true; + if (operator === "$lt" && minVal >= target) return true; + if (operator === "$lte" && minVal > target) return true; + if (operator === "$eq" && (target < minVal || target > maxVal)) return true; + if (operator === "$ne" && equals(minVal, maxVal, strict) && equals(minVal, target, strict)) return true; + if (operator === "$in" && Array.isArray(target) && target.every((v) => v < minVal || v > maxVal)) return true; + if (operator === "$nin" && Array.isArray(target) && equals(minVal, maxVal, strict) && target.includes(minVal)) return true; + } + if (bloom && element) { + if (operator === "$eq") { + const hash = hashParquetValue(target, element); + if (hash !== void 0 && !sbbfContains(bloom.blocks, hash)) return true; + } + if (operator === "$in" && Array.isArray(target) && target.length > 0) { + let allAbsent = true; + for (const v of target) { + const h = hashParquetValue(v, element); + if (h === void 0 || sbbfContains(bloom.blocks, h)) { + allAbsent = false; + break; + } + } + if (allAbsent) return true; + } + } + } + } + return false; +} +__name(canSkipRowGroup, "canSkipRowGroup"); +function resolve(record, path) { + let value = record; + for (const part of path.split(".")) { + value = value?.[part]; + } + return value; +} +__name(resolve, "resolve"); + +// node_modules/hyparquet/src/plan.js +var runLimit = 1 << 21; +function parquetPlan({ metadata, rowStart = 0, rowEnd = Infinity, columns, filter, filterStrict = true, useOffsetIndex = false, bloomFiltersByGroup, schemaElements }) { + if (!metadata) throw new Error("parquetPlan requires metadata"); + const groups = []; + const fetches = []; + const indexes = []; + const physicalColumns = getPhysicalColumns(parquetSchema(metadata)); + let groupStart = 0; + let rgIdx = 0; + for (const rowGroup of metadata.row_groups) { + const groupRows = Number(rowGroup.num_rows); + const groupEnd = groupStart + groupRows; + const bloomFilters = bloomFiltersByGroup?.[rgIdx]; + if (groupRows > 0 && groupEnd > rowStart && groupStart < rowEnd && !canSkipRowGroup({ rowGroup, physicalColumns, filter, strict: filterStrict, bloomFilters, schemaElements })) { + const chunks = []; + let groupStartByte = Infinity; + let groupEndByte = -Infinity; + for (const chunk of rowGroup.columns) { + const meta = chunk.meta_data; + if (chunk.file_path) throw new Error("parquet file_path not supported"); + if (!meta) throw new Error("parquet column metadata is undefined"); + if (!columns || columns.includes(meta.path_in_schema[0])) { + const columnOffset = meta.dictionary_page_offset || meta.data_page_offset; + const startByte = Number(columnOffset); + const endByte = Number(columnOffset + meta.total_compressed_size); + if (startByte < groupStartByte) groupStartByte = startByte; + if (endByte > groupEndByte) groupEndByte = endByte; + if (useOffsetIndex && chunk.offset_index_offset && chunk.offset_index_length && (rowStart > groupStart || rowEnd < groupEnd)) { + const offsetIndexStart = Number(chunk.offset_index_offset); + chunks.push({ + columnMetadata: meta, + offsetIndex: { + startByte: offsetIndexStart, + endByte: offsetIndexStart + chunk.offset_index_length + }, + range: { startByte, endByte } + }); + } else { + chunks.push({ + columnMetadata: meta, + range: { startByte, endByte } + }); + } + } + } + const selectStart = Math.max(rowStart - groupStart, 0); + const selectEnd = Math.min(rowEnd - groupStart, groupRows); + groups.push({ chunks, rowGroup, groupStart, groupRows, selectStart, selectEnd }); + let run; + for (const chunk of chunks) { + if ("offsetIndex" in chunk) { + indexes.push(chunk.offsetIndex); + } else { + const { range } = chunk; + if (columns) { + fetches.push(range); + } else if (run && range.endByte - run.startByte <= runLimit) { + run.endByte = range.endByte; + } else { + if (run) fetches.push(run); + run = { ...range }; + } + } + } + if (run) fetches.push(run); + } + groupStart = groupEnd; + rgIdx++; + } + if (!isFinite(rowEnd)) rowEnd = groupStart; + fetches.push(...indexes); + return { metadata, rowStart, rowEnd, columns, fetches, groups }; +} +__name(parquetPlan, "parquetPlan"); +async function prefetchBloomFilters({ file, metadata, filter, filterStrict = true }) { + const result = metadata.row_groups.map(() => ( + /** @type {Record} */ + {} + )); + const eligibleCols = bloomEligibleColumns(filter); + if (eligibleCols.size === 0) return result; + const physicalColumns = getPhysicalColumns(parquetSchema(metadata)); + const tasks = []; + metadata.row_groups.forEach((rowGroup, rgIdx) => { + if (canSkipRowGroup({ rowGroup, physicalColumns, filter, strict: filterStrict })) return; + for (const colName of eligibleCols) { + const columnIdx = physicalColumns.indexOf(colName); + if (columnIdx === -1) continue; + const meta = rowGroup.columns[columnIdx]?.meta_data; + if (!meta?.bloom_filter_offset || !meta.bloom_filter_length) continue; + const start = Number(meta.bloom_filter_offset); + const end = start + meta.bloom_filter_length; + tasks.push((async () => { + const buffer = await file.slice(start, end); + const bloom = readBloomFilter({ view: new DataView(buffer), offset: 0 }); + if (bloom) result[rgIdx][colName] = bloom; + })()); + } + }); + if (tasks.length) await Promise.all(tasks); + return result; +} +__name(prefetchBloomFilters, "prefetchBloomFilters"); +function prefetchAsyncBuffer(file, { fetches }) { + const promises = fetches.map(({ startByte, endByte }) => file.slice(startByte, endByte)); + return { + byteLength: file.byteLength, + slice(start, end = file.byteLength) { + const index = fetches.findIndex(({ startByte, endByte }) => startByte <= start && end <= endByte); + if (index < 0) { + return file.slice(start, end); + } + if (fetches[index].startByte !== start || fetches[index].endByte !== end) { + const startOffset = start - fetches[index].startByte; + const endOffset = end - fetches[index].startByte; + if (promises[index] instanceof Promise) { + return promises[index].then((buffer) => buffer.slice(startOffset, endOffset)); + } else { + return promises[index].slice(startOffset, endOffset); + } + } else { + return promises[index]; + } + } + }; +} +__name(prefetchAsyncBuffer, "prefetchAsyncBuffer"); + +// node_modules/hyparquet/src/variant.js +var decoder3 = new TextDecoder(); +var metadataCache = /* @__PURE__ */ new WeakMap(); +function decodeVariantColumn(value, parsers = DEFAULT_PARSERS) { + if (Array.isArray(value)) { + return value.map((entry) => decodeVariantColumn(entry, parsers)); + } + if (typeof value !== "object") return value; + if ("metadata" in value) { + const metadata = parseVariantMetadata(value.metadata); + const shreddedFields = value.typed_value && decodeTypedValue(value.typed_value, metadata, parsers); + const binaryValue = value.value && readVariant(makeReader(value.value), metadata, parsers); + if (shreddedFields && binaryValue) { + return { ...binaryValue, ...shreddedFields }; + } + return shreddedFields ?? binaryValue; + } + return value; +} +__name(decodeVariantColumn, "decodeVariantColumn"); +function decodeTypedValue(typedValue, metadata, parsers) { + if (typedValue instanceof Date) return typedValue; + if (typedValue && typeof typedValue === "object" && !Array.isArray(typedValue) && !(typedValue instanceof Uint8Array)) { + if ("typed_value" in typedValue && typedValue.typed_value !== null && typedValue.typed_value !== void 0) { + return decodeTypedValue(typedValue.typed_value, metadata, parsers); + } + if ("value" in typedValue && typedValue.value instanceof Uint8Array) { + return readVariant(makeReader(typedValue.value), metadata, parsers); + } + if ("typed_value" in typedValue || "value" in typedValue) { + return null; + } + const result = {}; + for (const [key, field] of Object.entries(typedValue)) { + if (!metadata.dictionary.includes(key)) continue; + result[key] = decodeTypedValue(field, metadata, parsers); + } + return result; + } + if (typedValue instanceof Uint8Array) { + return readVariant(makeReader(typedValue), metadata, parsers); + } + if (Array.isArray(typedValue)) { + return typedValue.map((element) => decodeTypedValue(element, metadata, parsers)); + } + return typedValue; +} +__name(decodeTypedValue, "decodeTypedValue"); +function makeReader(bytes) { + return { view: new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength), offset: 0 }; +} +__name(makeReader, "makeReader"); +function parseVariantMetadata(bytes) { + let bufferCache = metadataCache.get(bytes.buffer); + if (!bufferCache) { + bufferCache = /* @__PURE__ */ new Map(); + metadataCache.set(bytes.buffer, bufferCache); + } + const key = `${bytes.byteOffset}:${bytes.byteLength}`; + const cached = bufferCache.get(key); + if (cached) return cached; + const reader = makeReader(bytes); + const header = reader.view.getUint8(reader.offset++); + const version = header & 15; + if (version !== 1) throw new Error(`parquet unsupported variant metadata version: ${version}`); + const sorted = (header >> 4 & 1) === 1; + const offsetSize = (header >> 6 & 3) + 1; + const dictionarySize = readUnsigned(reader, offsetSize); + const offsets = new Array(dictionarySize + 1); + for (let i = 0; i < offsets.length; i++) { + offsets[i] = readUnsigned(reader, offsetSize); + } + const base = reader.offset; + const dictionary = new Array(dictionarySize); + for (let i = 0; i < dictionarySize; i++) { + const start = offsets[i]; + const end = offsets[i + 1]; + const strBytes = new Uint8Array(bytes.buffer, bytes.byteOffset + base + start, end - start); + dictionary[i] = decoder3.decode(strBytes); + } + const metadata = { dictionary, sorted }; + bufferCache.set(key, metadata); + return metadata; +} +__name(parseVariantMetadata, "parseVariantMetadata"); +function readUnsigned(reader, byteWidth2) { + let value = 0; + for (let i = 0; i < byteWidth2; i++) { + value |= reader.view.getUint8(reader.offset + i) << i * 8; + } + reader.offset += byteWidth2; + return value; +} +__name(readUnsigned, "readUnsigned"); +function readVariant(reader, metadata, parsers) { + const typeByte = reader.view.getUint8(reader.offset++); + const basicType = typeByte & 3; + const header = typeByte >> 2; + if (basicType === 0) return readVariantPrimitive(reader, header, parsers); + if (basicType === 2) return readVariantObject(reader, header, metadata, parsers); + if (basicType === 3) return readVariantArray(reader, header, metadata, parsers); + const bytes = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, header); + reader.offset += header; + return decoder3.decode(bytes); +} +__name(readVariant, "readVariant"); +function readVariantPrimitive(reader, typeId, parsers) { + switch (typeId) { + case 0: + return null; + case 1: + return true; + case 2: + return false; + case 3: { + const value = reader.view.getInt8(reader.offset); + reader.offset += 1; + return value; + } + case 4: { + const value = reader.view.getInt16(reader.offset, true); + reader.offset += 2; + return value; + } + case 5: { + const value = reader.view.getInt32(reader.offset, true); + reader.offset += 4; + return value; + } + case 6: { + const value = reader.view.getBigInt64(reader.offset, true); + reader.offset += 8; + return value; + } + case 7: { + const value = reader.view.getFloat64(reader.offset, true); + reader.offset += 8; + return value; + } + case 8: + return readVariantDecimal(reader, 4); + case 9: + return readVariantDecimal(reader, 8); + case 10: + return readVariantDecimal(reader, 16); + case 11: { + const value = reader.view.getInt32(reader.offset, true); + reader.offset += 4; + return parsers.dateFromDays(value); + } + case 12: + // timestamp_micros (utc) + case 13: { + const value = reader.view.getBigInt64(reader.offset, true); + reader.offset += 8; + return parsers.timestampFromMicroseconds(value); + } + case 14: { + const value = reader.view.getFloat32(reader.offset, true); + reader.offset += 4; + return value; + } + case 15: + return readVariantBinary(reader); + case 16: { + const bytes = readVariantBinary(reader); + return decoder3.decode(bytes); + } + case 17: { + const value = reader.view.getBigInt64(reader.offset, true); + reader.offset += 8; + return value; + } + case 18: + // timestamp_nanos (utc) + case 19: { + const value = reader.view.getBigInt64(reader.offset, true); + reader.offset += 8; + return parsers.timestampFromNanoseconds(value); + } + case 20: { + const bytes = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, 16); + reader.offset += 16; + const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join(""); + return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`; + } + default: + throw new Error(`parquet unsupported variant primitive type: ${typeId}`); + } +} +__name(readVariantPrimitive, "readVariantPrimitive"); +function readVariantObject(reader, header, metadata, parsers) { + const offsetWidth = (header & 3) + 1; + const idWidth = (header >> 2 & 3) + 1; + const isLarge = header >> 4 & 1; + const numElements = isLarge ? readUnsigned(reader, 4) : reader.view.getUint8(reader.offset++); + const fieldIds = new Array(numElements); + for (let i = 0; i < numElements; i++) { + fieldIds[i] = readUnsigned(reader, idWidth); + } + const offsets = new Array(numElements + 1); + for (let i = 0; i < offsets.length; i++) { + offsets[i] = readUnsigned(reader, offsetWidth); + } + const out = {}; + for (let i = 0; i < numElements; i++) { + const key = metadata.dictionary[fieldIds[i]]; + const valueReader = { + view: reader.view, + offset: reader.offset + offsets[i] + }; + out[key] = readVariant(valueReader, metadata, parsers); + } + reader.offset += offsets[offsets.length - 1]; + return out; +} +__name(readVariantObject, "readVariantObject"); +function readVariantArray(reader, header, metadata, parsers) { + const fieldOffsetSize = header & 3; + const isLarge = header >> 2 & 1; + const offsetWidth = fieldOffsetSize + 1; + const numElements = readUnsigned(reader, isLarge ? 4 : 1); + const offsets = new Array(numElements + 1); + for (let i = 0; i < offsets.length; i++) { + offsets[i] = readUnsigned(reader, offsetWidth); + } + const valuesStart = reader.offset; + const result = new Array(numElements); + for (let i = 0; i < numElements; i++) { + const valueReader = { + view: reader.view, + offset: valuesStart + offsets[i] + }; + result[i] = readVariant(valueReader, metadata, parsers); + } + reader.offset = valuesStart + offsets[offsets.length - 1]; + return result; +} +__name(readVariantArray, "readVariantArray"); +function readVariantDecimal(reader, width) { + const scale = reader.view.getUint8(reader.offset); + reader.offset += 1; + let unscaled; + if (width === 4) { + unscaled = BigInt(reader.view.getInt32(reader.offset, true)); + reader.offset += 4; + } else if (width === 8) { + unscaled = reader.view.getBigInt64(reader.offset, true); + reader.offset += 8; + } else { + const low = reader.view.getBigUint64(reader.offset, true); + const high = reader.view.getBigInt64(reader.offset + 8, true); + unscaled = high << 64n | low; + reader.offset += 16; + } + return Number(unscaled) * 10 ** -scale; +} +__name(readVariantDecimal, "readVariantDecimal"); +function readVariantBinary(reader) { + const length = reader.view.getUint32(reader.offset, true); + reader.offset += 4; + const bytes = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, length); + reader.offset += length; + return bytes; +} +__name(readVariantBinary, "readVariantBinary"); + +// node_modules/hyparquet/src/assemble.js +function assembleLists(output, definitionLevels, repetitionLevels, values, schemaPath) { + const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath); + if (!definitionLevels?.length && !repetitionLevels.length) { + if (!maxDefinitionLevel || !values.length) return values; + definitionLevels = new Array(values.length).fill(maxDefinitionLevel); + } + const n = definitionLevels?.length || repetitionLevels.length; + const repetitionPath = schemaPath.map(({ element }) => element.repetition_type); + let valueIndex = 0; + const containerStack = [output]; + let currentContainer = output; + let currentDepth = 0; + let currentDefLevel = 0; + let currentRepLevel = 0; + if (repetitionLevels[0]) { + while (currentDepth < repetitionPath.length - 2 && currentRepLevel < repetitionLevels[0]) { + currentDepth++; + if (repetitionPath[currentDepth] !== "REQUIRED") { + currentContainer = currentContainer.at(-1); + containerStack.push(currentContainer); + currentDefLevel++; + } + if (repetitionPath[currentDepth] === "REPEATED") currentRepLevel++; + } + } + for (let i = 0; i < n; i++) { + const def = definitionLevels?.length ? definitionLevels[i] : maxDefinitionLevel; + const rep = repetitionLevels[i]; + while (currentDepth && (rep < currentRepLevel || repetitionPath[currentDepth] !== "REPEATED")) { + if (repetitionPath[currentDepth] !== "REQUIRED") { + containerStack.pop(); + currentDefLevel--; + } + if (repetitionPath[currentDepth] === "REPEATED") currentRepLevel--; + currentDepth--; + } + currentContainer = containerStack.at(-1); + while ((currentDepth < repetitionPath.length - 2 || repetitionPath[currentDepth + 1] === "REPEATED") && (currentDefLevel < def || repetitionPath[currentDepth + 1] === "REQUIRED")) { + currentDepth++; + if (repetitionPath[currentDepth] !== "REQUIRED") { + const newList = []; + currentContainer.push(newList); + currentContainer = newList; + containerStack.push(newList); + currentDefLevel++; + } + if (repetitionPath[currentDepth] === "REPEATED") currentRepLevel++; + } + if (def === maxDefinitionLevel) { + currentContainer.push(values[valueIndex++]); + } else if (currentDepth === repetitionPath.length - 2) { + currentContainer.push(null); + } else { + currentContainer.push([]); + } + } + if (!output.length) { + for (let i = 0; i < maxDefinitionLevel; i++) { + const newList = []; + currentContainer.push(newList); + currentContainer = newList; + } + } + return output; +} +__name(assembleLists, "assembleLists"); +function assembleNested(subcolumnData, schema, parsers, depth = 0) { + const path = schema.path.join("."); + const optional = schema.element.repetition_type === "OPTIONAL"; + const nextDepth = optional ? depth + 1 : depth; + if (isListLike(schema)) { + let sublist = schema.children[0]; + let subDepth = nextDepth; + if (sublist.children.length === 1) { + sublist = sublist.children[0]; + subDepth++; + } + assembleNested(subcolumnData, sublist, parsers, subDepth); + const subcolumn = sublist.path.join("."); + const values = subcolumnData.get(subcolumn); + if (!values) throw new Error("parquet list column missing values"); + if (optional) flattenAtDepth(values, depth); + subcolumnData.set(path, values); + subcolumnData.delete(subcolumn); + return; + } + if (isMapLike(schema)) { + const mapName = schema.children[0].element.name; + assembleNested(subcolumnData, schema.children[0].children[0], parsers, nextDepth + 1); + assembleNested(subcolumnData, schema.children[0].children[1], parsers, nextDepth + 1); + const keys = subcolumnData.get(`${path}.${mapName}.key`); + const values = subcolumnData.get(`${path}.${mapName}.value`); + if (!keys) throw new Error("parquet map column missing keys"); + if (!values) throw new Error("parquet map column missing values"); + if (keys.length !== values.length) { + throw new Error("parquet map column key/value length mismatch"); + } + const out = assembleMaps(keys, values, nextDepth); + if (optional) flattenAtDepth(out, depth); + subcolumnData.delete(`${path}.${mapName}.key`); + subcolumnData.delete(`${path}.${mapName}.value`); + subcolumnData.set(path, out); + return; + } + if (schema.children.length) { + const invertDepth = schema.element.repetition_type === "REQUIRED" ? depth : depth + 1; + const struct = {}; + for (const child of schema.children) { + assembleNested(subcolumnData, child, parsers, invertDepth); + const childData = subcolumnData.get(child.path.join(".")); + if (!childData) throw new Error("parquet struct missing child data"); + struct[child.element.name] = childData; + } + for (const child of schema.children) { + subcolumnData.delete(child.path.join(".")); + } + let inverted = invertStruct(struct, invertDepth); + if (schema.element.logical_type?.type === "VARIANT") { + inverted = decodeVariantColumn(inverted, parsers); + } + if (optional) flattenAtDepth(inverted, depth); + subcolumnData.set(path, inverted); + } +} +__name(assembleNested, "assembleNested"); +function flattenAtDepth(arr, depth) { + for (let i = 0; i < arr.length; i++) { + if (depth) { + flattenAtDepth(arr[i], depth - 1); + } else { + arr[i] = arr[i][0]; + } + } +} +__name(flattenAtDepth, "flattenAtDepth"); +function assembleMaps(keys, values, depth) { + const out = []; + for (let i = 0; i < keys.length; i++) { + if (depth) { + out.push(assembleMaps(keys[i], values[i], depth - 1)); + } else { + if (keys[i]) { + const obj = {}; + for (let j = 0; j < keys[i].length; j++) { + const value = values[i][j]; + obj[keys[i][j]] = value === void 0 ? null : value; + } + out.push(obj); + } else { + out.push(void 0); + } + } + } + return out; +} +__name(assembleMaps, "assembleMaps"); +function invertStruct(struct, depth) { + const keys = Object.keys(struct); + const length = struct[keys[0]]?.length; + const out = []; + for (let i = 0; i < length; i++) { + const obj = {}; + for (const key of keys) { + if (struct[key].length !== length) throw new Error("parquet struct parsing error"); + obj[key] = struct[key][i]; + } + if (depth) { + out.push(invertStruct(obj, depth - 1)); + } else { + out.push(obj); + } + } + return out; +} +__name(invertStruct, "invertStruct"); + +// node_modules/hyparquet/src/delta.js +function deltaBinaryUnpack(reader, count, output) { + const int32 = output instanceof Int32Array; + const blockSize = readVarInt(reader); + const miniblockPerBlock = readVarInt(reader); + readVarInt(reader); + let value = readZigZagBigInt(reader); + let outputIndex = 0; + output[outputIndex++] = int32 ? Number(value) : value; + const valuesPerMiniblock = blockSize / miniblockPerBlock; + while (outputIndex < count) { + const minDelta = readZigZagBigInt(reader); + const bitWidths = new Uint8Array(miniblockPerBlock); + for (let i = 0; i < miniblockPerBlock; i++) { + bitWidths[i] = reader.view.getUint8(reader.offset++); + } + for (let i = 0; i < miniblockPerBlock && outputIndex < count; i++) { + const bitWidth2 = BigInt(bitWidths[i]); + if (bitWidth2) { + let bitpackPos = 0n; + let miniblockCount = valuesPerMiniblock; + const mask = (1n << bitWidth2) - 1n; + while (miniblockCount && outputIndex < count) { + let bits = BigInt(reader.view.getUint8(reader.offset)) >> bitpackPos & mask; + bitpackPos += bitWidth2; + while (bitpackPos >= 8) { + bitpackPos -= 8n; + reader.offset++; + if (bitpackPos) { + bits |= BigInt(reader.view.getUint8(reader.offset)) << bitWidth2 - bitpackPos & mask; + } + } + const delta = minDelta + bits; + value += delta; + output[outputIndex++] = int32 ? Number(value) : value; + miniblockCount--; + } + if (miniblockCount) { + reader.offset += Math.ceil((miniblockCount * Number(bitWidth2) + Number(bitpackPos)) / 8); + } + } else { + for (let j = 0; j < valuesPerMiniblock && outputIndex < count; j++) { + value += minDelta; + output[outputIndex++] = int32 ? Number(value) : value; + } + } + } + } +} +__name(deltaBinaryUnpack, "deltaBinaryUnpack"); +function deltaLengthByteArray(reader, count, output) { + const lengths = new Int32Array(count); + deltaBinaryUnpack(reader, count, lengths); + for (let i = 0; i < count; i++) { + output[i] = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, lengths[i]); + reader.offset += lengths[i]; + } +} +__name(deltaLengthByteArray, "deltaLengthByteArray"); +function deltaByteArray(reader, count, output) { + const prefixData = new Int32Array(count); + deltaBinaryUnpack(reader, count, prefixData); + const suffixData = new Int32Array(count); + deltaBinaryUnpack(reader, count, suffixData); + for (let i = 0; i < count; i++) { + const suffix = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, suffixData[i]); + if (prefixData[i]) { + output[i] = new Uint8Array(prefixData[i] + suffixData[i]); + output[i].set(output[i - 1].subarray(0, prefixData[i])); + output[i].set(suffix, prefixData[i]); + } else { + output[i] = suffix; + } + reader.offset += suffixData[i]; + } +} +__name(deltaByteArray, "deltaByteArray"); + +// node_modules/hyparquet/src/encoding.js +function readRleBitPackedHybrid(reader, width, output, length) { + if (length === void 0) { + length = reader.view.getUint32(reader.offset, true); + reader.offset += 4; + } + const startOffset = reader.offset; + let seen = 0; + while (seen < output.length) { + const header = readVarInt(reader); + if (header & 1) { + seen = readBitPacked(reader, header, width, output, seen); + } else { + const count = header >>> 1; + readRle(reader, count, width, output, seen); + seen += count; + } + } + reader.offset = startOffset + length; +} +__name(readRleBitPackedHybrid, "readRleBitPackedHybrid"); +function readRle(reader, count, bitWidth2, output, seen) { + const width = bitWidth2 + 7 >> 3; + let value = 0; + for (let i = 0; i < width; i++) { + value |= reader.view.getUint8(reader.offset++) << (i << 3); + } + for (let i = 0; i < count; i++) { + output[seen + i] = value; + } +} +__name(readRle, "readRle"); +function readBitPacked(reader, header, bitWidth2, output, seen) { + let count = header >> 1 << 3; + const mask = (1 << bitWidth2) - 1; + let data = 0; + if (reader.offset < reader.view.byteLength) { + data = reader.view.getUint8(reader.offset++); + } else if (mask) { + throw new Error(`parquet bitpack offset ${reader.offset} out of range`); + } + let left = 8; + let right = 0; + while (count) { + if (right > 8) { + right -= 8; + left -= 8; + data >>>= 8; + } else if (left - right < bitWidth2) { + data |= reader.view.getUint8(reader.offset) << left; + reader.offset++; + left += 8; + } else { + if (seen < output.length) { + output[seen++] = data >> right & mask; + } + count--; + right += bitWidth2; + } + } + return seen; +} +__name(readBitPacked, "readBitPacked"); +function byteStreamSplit(reader, count, type, typeLength) { + const width = byteWidth(type, typeLength); + const bytes = new Uint8Array(count * width); + for (let b = 0; b < width; b++) { + for (let i = 0; i < count; i++) { + bytes[i * width + b] = reader.view.getUint8(reader.offset++); + } + } + if (type === "FLOAT") return new Float32Array(bytes.buffer); + else if (type === "DOUBLE") return new Float64Array(bytes.buffer); + else if (type === "INT32") return new Int32Array(bytes.buffer); + else if (type === "INT64") return new BigInt64Array(bytes.buffer); + else if (type === "FIXED_LEN_BYTE_ARRAY") { + const split = new Array(count); + for (let i = 0; i < count; i++) { + split[i] = bytes.subarray(i * width, (i + 1) * width); + } + return split; + } + throw new Error(`parquet byte_stream_split unsupported type: ${type}`); +} +__name(byteStreamSplit, "byteStreamSplit"); +function byteWidth(type, typeLength) { + switch (type) { + case "INT32": + case "FLOAT": + return 4; + case "INT64": + case "DOUBLE": + return 8; + case "FIXED_LEN_BYTE_ARRAY": + if (!typeLength) throw new Error("parquet byteWidth missing type_length"); + return typeLength; + default: + throw new Error(`parquet unsupported type: ${type}`); + } +} +__name(byteWidth, "byteWidth"); + +// node_modules/hyparquet/src/plain.js +function readPlain(reader, type, count, fixedLength) { + if (count === 0) return []; + if (type === "BOOLEAN") { + return readPlainBoolean(reader, count); + } else if (type === "INT32") { + return readPlainInt32(reader, count); + } else if (type === "INT64") { + return readPlainInt64(reader, count); + } else if (type === "INT96") { + return readPlainInt96(reader, count); + } else if (type === "FLOAT") { + return readPlainFloat(reader, count); + } else if (type === "DOUBLE") { + return readPlainDouble(reader, count); + } else if (type === "BYTE_ARRAY") { + return readPlainByteArray(reader, count); + } else if (type === "FIXED_LEN_BYTE_ARRAY") { + if (!fixedLength) throw new Error("parquet missing fixed length"); + return readPlainByteArrayFixed(reader, count, fixedLength); + } else { + throw new Error(`parquet unhandled type: ${type}`); + } +} +__name(readPlain, "readPlain"); +function readPlainBoolean(reader, count) { + const values = new Array(count); + for (let i = 0; i < count; i++) { + const byteOffset = reader.offset + (i / 8 | 0); + const bitOffset = i % 8; + const byte = reader.view.getUint8(byteOffset); + values[i] = (byte & 1 << bitOffset) !== 0; + } + reader.offset += Math.ceil(count / 8); + return values; +} +__name(readPlainBoolean, "readPlainBoolean"); +function readPlainInt32(reader, count) { + const values = (reader.view.byteOffset + reader.offset) % 4 ? new Int32Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 4)) : new Int32Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count); + reader.offset += count * 4; + return values; +} +__name(readPlainInt32, "readPlainInt32"); +function readPlainInt64(reader, count) { + const values = (reader.view.byteOffset + reader.offset) % 8 ? new BigInt64Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 8)) : new BigInt64Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count); + reader.offset += count * 8; + return values; +} +__name(readPlainInt64, "readPlainInt64"); +function readPlainInt96(reader, count) { + const values = new Array(count); + for (let i = 0; i < count; i++) { + const low = reader.view.getBigInt64(reader.offset + i * 12, true); + const high = reader.view.getInt32(reader.offset + i * 12 + 8, true); + values[i] = BigInt(high) << 64n | low; + } + reader.offset += count * 12; + return values; +} +__name(readPlainInt96, "readPlainInt96"); +function readPlainFloat(reader, count) { + const values = (reader.view.byteOffset + reader.offset) % 4 ? new Float32Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 4)) : new Float32Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count); + reader.offset += count * 4; + return values; +} +__name(readPlainFloat, "readPlainFloat"); +function readPlainDouble(reader, count) { + const values = (reader.view.byteOffset + reader.offset) % 8 ? new Float64Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 8)) : new Float64Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count); + reader.offset += count * 8; + return values; +} +__name(readPlainDouble, "readPlainDouble"); +function readPlainByteArray(reader, count) { + const values = new Array(count); + for (let i = 0; i < count; i++) { + const length = reader.view.getUint32(reader.offset, true); + reader.offset += 4; + values[i] = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, length); + reader.offset += length; + } + return values; +} +__name(readPlainByteArray, "readPlainByteArray"); +function readPlainByteArrayFixed(reader, count, fixedLength) { + const values = new Array(count); + for (let i = 0; i < count; i++) { + values[i] = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, fixedLength); + reader.offset += fixedLength; + } + return values; +} +__name(readPlainByteArrayFixed, "readPlainByteArrayFixed"); +function align(buffer, offset, size) { + const aligned = new ArrayBuffer(size); + new Uint8Array(aligned).set(new Uint8Array(buffer, offset, size)); + return aligned; +} +__name(align, "align"); + +// node_modules/hyparquet/src/snappy.js +var WORD_MASK = [0, 255, 65535, 16777215, 4294967295]; +function copyBytes(fromArray, fromPos, toArray, toPos, length) { + for (let i = 0; i < length; i++) { + toArray[toPos + i] = fromArray[fromPos + i]; + } +} +__name(copyBytes, "copyBytes"); +function snappyUncompress(input, output) { + const inputLength = input.byteLength; + const outputLength = output.byteLength; + let pos = 0; + let outPos = 0; + while (pos < inputLength) { + const c = input[pos]; + pos++; + if (c < 128) { + break; + } + } + if (outputLength && pos >= inputLength) { + throw new Error("invalid snappy length header"); + } + while (pos < inputLength) { + const c = input[pos]; + let len = 0; + pos++; + if (pos >= inputLength) { + throw new Error("missing eof marker"); + } + if ((c & 3) === 0) { + let len2 = (c >>> 2) + 1; + if (len2 > 60) { + if (pos + 3 >= inputLength) { + throw new Error("snappy error literal pos + 3 >= inputLength"); + } + const lengthSize = len2 - 60; + len2 = input[pos] + (input[pos + 1] << 8) + (input[pos + 2] << 16) + (input[pos + 3] << 24); + len2 = (len2 & WORD_MASK[lengthSize]) + 1; + pos += lengthSize; + } + if (pos + len2 > inputLength) { + throw new Error("snappy error literal exceeds input length"); + } + copyBytes(input, pos, output, outPos, len2); + pos += len2; + outPos += len2; + } else { + let offset = 0; + switch (c & 3) { + case 1: + len = (c >>> 2 & 7) + 4; + offset = input[pos] + (c >>> 5 << 8); + pos++; + break; + case 2: + if (inputLength <= pos + 1) { + throw new Error("snappy error end of input"); + } + len = (c >>> 2) + 1; + offset = input[pos] + (input[pos + 1] << 8); + pos += 2; + break; + case 3: + if (inputLength <= pos + 3) { + throw new Error("snappy error end of input"); + } + len = (c >>> 2) + 1; + offset = input[pos] + (input[pos + 1] << 8) + (input[pos + 2] << 16) + (input[pos + 3] << 24); + pos += 4; + break; + default: + break; + } + if (offset === 0 || isNaN(offset)) { + throw new Error(`invalid offset ${offset} pos ${pos} inputLength ${inputLength}`); + } + if (offset > outPos) { + throw new Error("cannot copy from before start of buffer"); + } + copyBytes(output, outPos - offset, output, outPos, len); + outPos += len; + } + } + if (outPos !== outputLength) throw new Error("premature end of input"); +} +__name(snappyUncompress, "snappyUncompress"); + +// node_modules/hyparquet/src/datapage.js +function readDataPage(bytes, daph, { type, element, schemaPath }) { + const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); + const reader = { view, offset: 0 }; + let dataPage; + const repetitionLevels = readRepetitionLevels(reader, daph, schemaPath); + const { definitionLevels, numNulls } = readDefinitionLevels(reader, daph, schemaPath); + const nValues = daph.num_values - numNulls; + if (daph.encoding === "PLAIN") { + dataPage = readPlain(reader, type, nValues, element.type_length); + } else if (daph.encoding === "PLAIN_DICTIONARY" || daph.encoding === "RLE_DICTIONARY" || daph.encoding === "RLE") { + const bitWidth2 = type === "BOOLEAN" ? 1 : view.getUint8(reader.offset++); + if (bitWidth2) { + dataPage = new Array(nValues); + if (type === "BOOLEAN") { + readRleBitPackedHybrid(reader, bitWidth2, dataPage); + dataPage = dataPage.map((x) => !!x); + } else { + readRleBitPackedHybrid(reader, bitWidth2, dataPage, view.byteLength - reader.offset); + } + } else { + dataPage = new Uint8Array(nValues); + } + } else if (daph.encoding === "BYTE_STREAM_SPLIT") { + dataPage = byteStreamSplit(reader, nValues, type, element.type_length); + } else if (daph.encoding === "DELTA_BINARY_PACKED") { + const int32 = type === "INT32"; + dataPage = int32 ? new Int32Array(nValues) : new BigInt64Array(nValues); + deltaBinaryUnpack(reader, nValues, dataPage); + } else if (daph.encoding === "DELTA_LENGTH_BYTE_ARRAY") { + dataPage = new Array(nValues); + deltaLengthByteArray(reader, nValues, dataPage); + } else { + throw new Error(`parquet unsupported encoding: ${daph.encoding}`); + } + return { definitionLevels, repetitionLevels, dataPage }; +} +__name(readDataPage, "readDataPage"); +function readRepetitionLevels(reader, daph, schemaPath) { + if (schemaPath.length > 1) { + const maxRepetitionLevel = getMaxRepetitionLevel(schemaPath); + if (maxRepetitionLevel) { + const values = new Array(daph.num_values); + readRleBitPackedHybrid(reader, bitWidth(maxRepetitionLevel), values); + return values; + } + } + return []; +} +__name(readRepetitionLevels, "readRepetitionLevels"); +function readDefinitionLevels(reader, daph, schemaPath) { + const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath); + if (!maxDefinitionLevel) return { definitionLevels: [], numNulls: 0 }; + const definitionLevels = new Array(daph.num_values); + readRleBitPackedHybrid(reader, bitWidth(maxDefinitionLevel), definitionLevels); + let numNulls = daph.num_values; + for (const def of definitionLevels) { + if (def === maxDefinitionLevel) numNulls--; + } + if (numNulls === 0) definitionLevels.length = 0; + return { definitionLevels, numNulls }; +} +__name(readDefinitionLevels, "readDefinitionLevels"); +function decompressPage(compressedBytes, uncompressed_page_size, codec, compressors) { + let page; + const customDecompressor = compressors?.[codec]; + if (codec === "UNCOMPRESSED") { + page = compressedBytes; + } else if (customDecompressor) { + page = customDecompressor(compressedBytes, uncompressed_page_size); + } else if (codec === "SNAPPY") { + page = new Uint8Array(uncompressed_page_size); + snappyUncompress(compressedBytes, page); + } else { + throw new Error(`parquet unsupported compression codec: ${codec}`); + } + if (page?.length !== uncompressed_page_size) { + throw new Error(`parquet decompressed page length ${page?.length} does not match header ${uncompressed_page_size}`); + } + return page; +} +__name(decompressPage, "decompressPage"); +function readDataPageV2(compressedBytes, ph, columnDecoder) { + const view = new DataView(compressedBytes.buffer, compressedBytes.byteOffset, compressedBytes.byteLength); + const reader = { view, offset: 0 }; + const { type, element, schemaPath, codec, compressors } = columnDecoder; + const daph2 = ph.data_page_header_v2; + if (!daph2) throw new Error("parquet data page header v2 is undefined"); + const repetitionLevels = readRepetitionLevelsV2(reader, daph2, schemaPath); + reader.offset = daph2.repetition_levels_byte_length; + const definitionLevels = readDefinitionLevelsV2(reader, daph2, schemaPath); + const uncompressedPageSize = ph.uncompressed_page_size - daph2.definition_levels_byte_length - daph2.repetition_levels_byte_length; + let page = compressedBytes.subarray(reader.offset); + if (daph2.is_compressed !== false) { + page = decompressPage(page, uncompressedPageSize, codec, compressors); + } + const pageView = new DataView(page.buffer, page.byteOffset, page.byteLength); + const pageReader = { view: pageView, offset: 0 }; + let dataPage; + const nValues = daph2.num_values - daph2.num_nulls; + if (daph2.encoding === "PLAIN") { + dataPage = readPlain(pageReader, type, nValues, element.type_length); + } else if (daph2.encoding === "RLE") { + dataPage = new Array(nValues); + readRleBitPackedHybrid(pageReader, 1, dataPage); + dataPage = dataPage.map((x) => !!x); + } else if (daph2.encoding === "PLAIN_DICTIONARY" || daph2.encoding === "RLE_DICTIONARY") { + const bitWidth2 = pageView.getUint8(pageReader.offset++); + dataPage = new Array(nValues); + readRleBitPackedHybrid(pageReader, bitWidth2, dataPage, uncompressedPageSize - 1); + } else if (daph2.encoding === "DELTA_BINARY_PACKED") { + const int32 = type === "INT32"; + dataPage = int32 ? new Int32Array(nValues) : new BigInt64Array(nValues); + deltaBinaryUnpack(pageReader, nValues, dataPage); + } else if (daph2.encoding === "DELTA_LENGTH_BYTE_ARRAY") { + dataPage = new Array(nValues); + deltaLengthByteArray(pageReader, nValues, dataPage); + } else if (daph2.encoding === "DELTA_BYTE_ARRAY") { + dataPage = new Array(nValues); + deltaByteArray(pageReader, nValues, dataPage); + } else if (daph2.encoding === "BYTE_STREAM_SPLIT") { + dataPage = byteStreamSplit(pageReader, nValues, type, element.type_length); + } else { + throw new Error(`parquet unsupported encoding: ${daph2.encoding}`); + } + return { definitionLevels, repetitionLevels, dataPage }; +} +__name(readDataPageV2, "readDataPageV2"); +function readRepetitionLevelsV2(reader, daph2, schemaPath) { + const maxRepetitionLevel = getMaxRepetitionLevel(schemaPath); + if (!maxRepetitionLevel) return []; + const values = new Array(daph2.num_values); + readRleBitPackedHybrid(reader, bitWidth(maxRepetitionLevel), values, daph2.repetition_levels_byte_length); + return values; +} +__name(readRepetitionLevelsV2, "readRepetitionLevelsV2"); +function readDefinitionLevelsV2(reader, daph2, schemaPath) { + const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath); + if (maxDefinitionLevel) { + const values = new Array(daph2.num_values); + readRleBitPackedHybrid(reader, bitWidth(maxDefinitionLevel), values, daph2.definition_levels_byte_length); + return values; + } +} +__name(readDefinitionLevelsV2, "readDefinitionLevelsV2"); +function bitWidth(value) { + return 32 - Math.clz32(value); +} +__name(bitWidth, "bitWidth"); + +// node_modules/hyparquet/src/column.js +function readColumn(reader, { groupStart, selectStart, selectEnd }, columnDecoder, onPage) { + const { pathInSchema, schemaPath } = columnDecoder; + const isFlat = isFlatColumn(schemaPath); + const chunks = []; + let dictionary = void 0; + let lastChunk = void 0; + let rowCount = 0; + let skipped = 0; + const emitLastChunk = onPage && (() => { + lastChunk && onPage({ + pathInSchema, + columnData: lastChunk, + rowStart: groupStart + rowCount - lastChunk.length, + rowEnd: groupStart + rowCount + }); + }); + while (isFlat ? rowCount < selectEnd : reader.offset < reader.view.byteLength - 1) { + if (reader.offset >= reader.view.byteLength - 1) break; + const header = parquetHeader(reader); + if (header.type === "DICTIONARY_PAGE") { + const { data } = readPage(reader, header, columnDecoder, dictionary, void 0, 0); + if (data) dictionary = convert(data, columnDecoder); + } else { + const lastChunkLength = lastChunk?.length || 0; + const result = readPage(reader, header, columnDecoder, dictionary, lastChunk, selectStart - rowCount); + if (result.skipped) { + if (!chunks.length) { + skipped += result.skipped; + } + rowCount += result.skipped; + } else if (result.data && lastChunk === result.data) { + rowCount += result.data.length - lastChunkLength; + } else if (result.data && result.data.length) { + emitLastChunk?.(); + chunks.push(result.data); + rowCount += result.data.length; + lastChunk = result.data; + } + } + } + emitLastChunk?.(); + return { data: chunks, skipped }; +} +__name(readColumn, "readColumn"); +function readPage(reader, header, columnDecoder, dictionary, previousChunk, pageStart) { + const { type, element, schemaPath, codec, compressors } = columnDecoder; + const compressedBytes = new Uint8Array( + reader.view.buffer, + reader.view.byteOffset + reader.offset, + header.compressed_page_size + ); + reader.offset += header.compressed_page_size; + if (header.type === "DATA_PAGE") { + const daph = header.data_page_header; + if (!daph) throw new Error("parquet data page header is undefined"); + if (pageStart > daph.num_values && isFlatColumn(schemaPath)) { + return { skipped: daph.num_values }; + } + const page = decompressPage(compressedBytes, Number(header.uncompressed_page_size), codec, compressors); + const { definitionLevels, repetitionLevels, dataPage } = readDataPage(page, daph, columnDecoder); + const values = convertWithDictionary(dataPage, dictionary, daph.encoding, columnDecoder); + const output = Array.isArray(previousChunk) ? previousChunk : []; + const assembled = assembleLists(output, definitionLevels, repetitionLevels, values, schemaPath); + return { skipped: 0, data: assembled }; + } else if (header.type === "DATA_PAGE_V2") { + const daph2 = header.data_page_header_v2; + if (!daph2) throw new Error("parquet data page header v2 is undefined"); + if (pageStart > daph2.num_rows) { + return { skipped: daph2.num_values }; + } + const { definitionLevels, repetitionLevels, dataPage } = readDataPageV2(compressedBytes, header, columnDecoder); + const values = convertWithDictionary(dataPage, dictionary, daph2.encoding, columnDecoder); + const output = Array.isArray(previousChunk) ? previousChunk : []; + const assembled = assembleLists(output, definitionLevels, repetitionLevels, values, schemaPath); + return { skipped: 0, data: assembled }; + } else if (header.type === "DICTIONARY_PAGE") { + const diph = header.dictionary_page_header; + if (!diph) throw new Error("parquet dictionary page header is undefined"); + const page = decompressPage( + compressedBytes, + Number(header.uncompressed_page_size), + codec, + compressors + ); + const reader2 = { view: new DataView(page.buffer, page.byteOffset, page.byteLength), offset: 0 }; + const dictArray = readPlain(reader2, type, diph.num_values, element.type_length); + return { skipped: 0, data: dictArray }; + } else { + throw new Error(`parquet unsupported page type: ${header.type}`); + } +} +__name(readPage, "readPage"); +function parquetHeader(reader) { + const header = deserializeTCompactProtocol(reader); + const type = PageTypes[header.field_1]; + const uncompressed_page_size = header.field_2; + const compressed_page_size = header.field_3; + const crc = header.field_4; + const data_page_header = header.field_5 && { + num_values: header.field_5.field_1, + encoding: Encodings[header.field_5.field_2], + definition_level_encoding: Encodings[header.field_5.field_3], + repetition_level_encoding: Encodings[header.field_5.field_4], + statistics: header.field_5.field_5 && { + max: header.field_5.field_5.field_1, + min: header.field_5.field_5.field_2, + null_count: header.field_5.field_5.field_3, + distinct_count: header.field_5.field_5.field_4, + max_value: header.field_5.field_5.field_5, + min_value: header.field_5.field_5.field_6 + } + }; + const index_page_header = header.field_6; + const dictionary_page_header = header.field_7 && { + num_values: header.field_7.field_1, + encoding: Encodings[header.field_7.field_2], + is_sorted: header.field_7.field_3 + }; + const data_page_header_v2 = header.field_8 && { + num_values: header.field_8.field_1, + num_nulls: header.field_8.field_2, + num_rows: header.field_8.field_3, + encoding: Encodings[header.field_8.field_4], + definition_levels_byte_length: header.field_8.field_5, + repetition_levels_byte_length: header.field_8.field_6, + is_compressed: header.field_8.field_7 === void 0 ? true : header.field_8.field_7, + // default true + statistics: header.field_8.field_8 + }; + return { + type, + uncompressed_page_size, + compressed_page_size, + crc, + data_page_header, + index_page_header, + dictionary_page_header, + data_page_header_v2 + }; +} +__name(parquetHeader, "parquetHeader"); + +// node_modules/hyparquet/src/rowgroup.js +function readRowGroup(options, { metadata }, groupPlan) { + const asyncColumns = []; + for (const chunk of groupPlan.chunks) { + const { data_page_offset, dictionary_page_offset, path_in_schema: pathInSchema } = chunk.columnMetadata; + const schemaPath = getSchemaPath(metadata.schema, pathInSchema); + const columnDecoder = { + pathInSchema, + element: schemaPath[schemaPath.length - 1].element, + schemaPath, + parsers: { ...DEFAULT_PARSERS, ...options.parsers }, + ...options, + ...chunk.columnMetadata + }; + let { startByte, endByte } = chunk.range; + if (!("offsetIndex" in chunk)) { + asyncColumns.push({ + pathInSchema, + data: Promise.resolve(options.file.slice(startByte, endByte)).then((buffer) => { + const reader = { view: new DataView(buffer), offset: 0 }; + return readColumn(reader, groupPlan, columnDecoder, options.onPage); + }) + }); + continue; + } + asyncColumns.push({ + pathInSchema, + // fetch offset index + data: Promise.resolve(options.file.slice(chunk.offsetIndex.startByte, chunk.offsetIndex.endByte)).then(async (arrayBuffer) => { + const { selectStart, selectEnd } = groupPlan; + const pages = readOffsetIndex({ view: new DataView(arrayBuffer), offset: 0 }).page_locations; + let skipped = -1; + const hasDict = dictionary_page_offset || data_page_offset < pages[0].offset; + for (let i = 0; i < pages.length; i++) { + const page = pages[i]; + const pageStart = Number(page.first_row_index); + const pageEnd = i + 1 < pages.length ? Number(pages[i + 1].first_row_index) : groupPlan.groupRows; + if (skipped < 0 && !hasDict && pageEnd > selectStart) { + startByte = Number(page.offset); + skipped = pageStart; + } + if (pageStart < selectEnd) { + endByte = Number(page.offset) + page.compressed_page_size; + } + } + if (skipped < 0) skipped = 0; + const buffer = await options.file.slice(startByte, endByte); + const reader = { view: new DataView(buffer), offset: 0 }; + const adjustedGroupPlan = skipped ? { + ...groupPlan, + groupStart: groupPlan.groupStart + skipped, + selectStart: groupPlan.selectStart - skipped, + selectEnd: groupPlan.selectEnd - skipped + } : groupPlan; + const { data, skipped: columnSkipped } = readColumn(reader, adjustedGroupPlan, columnDecoder, options.onPage); + return { + data, + skipped: skipped + columnSkipped + }; + }) + }); + } + return { groupStart: groupPlan.groupStart, groupRows: groupPlan.groupRows, asyncColumns }; +} +__name(readRowGroup, "readRowGroup"); +async function asyncGroupToRows({ asyncColumns }, selectStart, selectEnd, columns, rowFormat) { + const asyncPages = await Promise.all(asyncColumns.map( + (column) => column.data.then(({ skipped, data }) => ({ skipped, data: flatten(data) })) + )); + const selectCount = selectEnd - selectStart; + if (rowFormat === "object") { + const groupData2 = Array(selectCount); + for (let selectRow = 0; selectRow < selectCount; selectRow++) { + const rowData = {}; + for (let i = 0; i < asyncColumns.length; i++) { + const { data, skipped } = asyncPages[i]; + rowData[asyncColumns[i].pathInSchema[0]] = data[selectStart + selectRow - skipped]; + } + groupData2[selectRow] = rowData; + } + return groupData2; + } + const includedColumnNames = asyncColumns.map((child) => child.pathInSchema[0]).filter((name) => !columns || columns.includes(name)); + const columnOrder = columns ?? includedColumnNames; + const columnIndexes = columnOrder.map((name) => asyncColumns.findIndex((column) => column.pathInSchema[0] === name)); + const groupData = Array(selectCount); + for (let selectRow = 0; selectRow < selectCount; selectRow++) { + const rowData = Array(asyncColumns.length); + for (let i = 0; i < columnOrder.length; i++) { + const colIdx = columnIndexes[i]; + if (colIdx < 0) throw new Error(`parquet column not found: ${columnOrder[i]}`); + const { data, skipped } = asyncPages[colIdx]; + rowData[i] = data[selectStart + selectRow - skipped]; + } + groupData[selectRow] = rowData; + } + return groupData; +} +__name(asyncGroupToRows, "asyncGroupToRows"); +function assembleAsync(asyncRowGroup, schemaTree2, parsers) { + const { asyncColumns } = asyncRowGroup; + parsers = { ...DEFAULT_PARSERS, ...parsers }; + const assembled = []; + for (const child of schemaTree2.children) { + if (child.children.length) { + const childColumns = asyncColumns.filter((column) => column.pathInSchema[0] === child.element.name); + if (!childColumns.length) continue; + assembled.push({ + pathInSchema: child.path, + data: (async () => { + const resolved = await Promise.all(childColumns.map((c) => c.data)); + const subcolumnData = /* @__PURE__ */ new Map(); + let minLength = Infinity; + for (let i = 0; i < childColumns.length; i++) { + const flat = flatten(resolved[i].data); + subcolumnData.set(childColumns[i].pathInSchema.join("."), flat); + minLength = Math.min(minLength, flat.length); + } + for (const [key, value] of subcolumnData) { + if (value.length > minLength) { + subcolumnData.set(key, value.slice(0, minLength)); + } + } + assembleNested(subcolumnData, child, parsers); + const assembled2 = subcolumnData.get(child.element.name); + if (!assembled2) throw new Error("parquet column data not assembled"); + return { data: [assembled2], skipped: 0 }; + })() + }); + } else { + const asyncColumn = asyncColumns.find((column) => column.pathInSchema[0] === child.element.name); + if (asyncColumn) assembled.push(asyncColumn); + } + } + return { ...asyncRowGroup, asyncColumns: assembled }; +} +__name(assembleAsync, "assembleAsync"); + +// node_modules/hyparquet/src/read.js +async function parquetRead(options) { + options.metadata ??= await parquetMetadataAsync(options.file, options); + const { rowStart = 0, rowEnd, columns, onChunk, onComplete, rowFormat, filter, filterStrict = true } = options; + if (filter && rowFormat !== "object") { + throw new Error('parquet filter requires rowFormat: "object"'); + } + const filterColumns = columnsNeededForFilter(filter); + if (filterColumns.length) { + const schemaColumns = parquetSchema(options.metadata).children.map((c) => c.element.name); + const missingColumns = filterColumns.filter((c) => !schemaColumns.includes(c)); + if (missingColumns.length) { + throw new Error(`parquet filter columns not found: ${missingColumns.join(", ")}`); + } + } + let readColumns = columns; + let requiresProjection = false; + if (columns && filter) { + const missingFilterColumns = filterColumns.filter((c) => !columns.includes(c)); + if (missingFilterColumns.length) { + readColumns = [...columns, ...missingFilterColumns]; + requiresProjection = true; + } + } + let readOptions = readColumns !== columns ? { ...options, columns: readColumns } : options; + readOptions = await withBloomFilters(readOptions); + const asyncGroups = parquetReadAsync(readOptions); + if (!onComplete && !onChunk) { + await awaitAllColumns(asyncGroups); + return; + } + const schemaTree2 = parquetSchema(options.metadata); + const assembled = asyncGroups.map((arg) => assembleAsync(arg, schemaTree2, options.parsers)); + if (onChunk) { + for (const asyncGroup of assembled) { + for (const asyncColumn of asyncGroup.asyncColumns) { + asyncColumn.data.then(({ data, skipped }) => { + let rowStart2 = asyncGroup.groupStart + skipped; + for (const columnData of data) { + onChunk({ + columnName: asyncColumn.pathInSchema[0], + columnData, + rowStart: rowStart2, + rowEnd: rowStart2 + columnData.length + }); + rowStart2 += columnData.length; + } + }, () => { + }); + } + } + } + if (onComplete) { + await awaitAllColumns(assembled); + const rows = []; + for (const asyncGroup of assembled) { + const selectStart = Math.max(rowStart - asyncGroup.groupStart, 0); + const selectEnd = Math.min((rowEnd ?? Infinity) - asyncGroup.groupStart, asyncGroup.groupRows); + const groupData = rowFormat === "object" ? await asyncGroupToRows(asyncGroup, selectStart, selectEnd, readColumns, "object") : await asyncGroupToRows(asyncGroup, selectStart, selectEnd, columns, "array"); + if (filter) { + for ( + const row of + /** @type {Record[]} */ + groupData + ) { + if (matchFilter(row, filter, filterStrict)) { + if (requiresProjection && columns) { + for (const col of filterColumns) { + if (!columns.includes(col)) delete row[col]; + } + } + rows.push(row); + } + } + } else { + concat(rows, groupData); + } + } + onComplete(rows); + } else { + await awaitAllColumns(assembled); + } +} +__name(parquetRead, "parquetRead"); +async function awaitAllColumns(asyncGroups) { + const all = asyncGroups.flatMap((g) => g.asyncColumns.map((c) => c.data)); + const results = await Promise.allSettled(all); + const failed = results.find((r) => r.status === "rejected"); + if (failed) throw failed.reason; +} +__name(awaitAllColumns, "awaitAllColumns"); +function parquetReadAsync(options) { + if (!options.metadata) throw new Error("parquet requires metadata"); + const plan = parquetPlan(options); + options.file = prefetchAsyncBuffer(options.file, plan); + return plan.groups.map((groupPlan) => readRowGroup(options, plan, groupPlan)); +} +__name(parquetReadAsync, "parquetReadAsync"); +async function withBloomFilters(options) { + if (!options.useBloomFilters) return options; + if (!options.filter || !options.metadata) return options; + const schemaTree2 = parquetSchema(options.metadata); + const schemaElements = {}; + for (const child of schemaTree2.children) schemaElements[child.element.name] = child.element; + const bloomFiltersByGroup = await prefetchBloomFilters({ + file: options.file, + metadata: options.metadata, + filter: options.filter, + filterStrict: options.filterStrict + }); + return ( + /** @type {BaseParquetReadOptions} */ + { ...options, bloomFiltersByGroup, schemaElements } + ); +} +__name(withBloomFilters, "withBloomFilters"); +function parquetReadObjects(options) { + return new Promise((onComplete, reject) => { + parquetRead({ + ...options, + rowFormat: "object", + // force object output + onComplete + }).catch(reject); + }); +} +__name(parquetReadObjects, "parquetReadObjects"); + +// src/params.ts +var AGGREGATIONS = [ + "count", + "sum", + "mean", + "min", + "max", + "median" +]; +var QueryError = class extends Error { + static { + __name(this, "QueryError"); + } + status; + details; + constructor(message, status = 400, details) { + super(message); + this.status = status; + this.details = details; + } +}; +var DEFAULT_LIMIT = 1e3; +var MAX_LIMIT = 1e4; +var COMPARISON_PREFIX = /^(eq|neq|gt|gte|lt|lte)\.([\s\S]*)$/; +function parseInList(inner) { + const values = []; + let i = 0; + while (i < inner.length) { + while (i < inner.length && inner[i] === " ") i++; + if (inner[i] === '"') { + let value = ""; + i++; + while (i < inner.length) { + if (inner[i] === '"' && inner[i + 1] === '"') { + value += '"'; + i += 2; + } else if (inner[i] === '"') { + i++; + break; + } else { + value += inner[i]; + i++; + } + } + values.push(value); + while (i < inner.length && inner[i] !== ",") i++; + i++; + } else { + let end = inner.indexOf(",", i); + if (end === -1) end = inner.length; + values.push(inner.slice(i, end).trim()); + i = end + 1; + } + } + return values.filter((v) => v.length > 0); +} +__name(parseInList, "parseInList"); +function parseFilterParam(column, raw2) { + if (raw2 === "is.null") { + return { column, op: "isNull" }; + } + if (raw2 === "not.null") { + return { column, op: "notNull" }; + } + if (raw2.startsWith("in.(") && raw2.endsWith(")")) { + const values = parseInList(raw2.slice(4, -1)); + if (values.length === 0) { + throw new QueryError( + `Empty in.() list for column "${column}". Provide at least one value.` + ); + } + return { column, op: "in", values }; + } + const match2 = COMPARISON_PREFIX.exec(raw2); + if (match2) { + return { + column, + op: match2[1], + value: match2[2] + }; + } + return { column, op: "eq", value: raw2 }; +} +__name(parseFilterParam, "parseFilterParam"); +function parseQueryParams(searchParams) { + const filters = []; + for (const [key, value] of searchParams.entries()) { + if (key.startsWith("q.")) { + const column2 = key.slice(2); + if (!column2) { + throw new QueryError(`Invalid filter parameter "${key}".`); + } + filters.push(parseFilterParam(column2, value)); + } + } + let format = null; + const f = searchParams.get("f"); + if (f !== null) { + if (f !== "json" && f !== "html") { + throw new QueryError(`Invalid format "${f}". Use f=json or f=html.`); + } + format = f; + } + const groupBy = (searchParams.get("groupBy") || "").split(",").map((s) => s.trim()).filter((s) => s.length > 0); + const ops = []; + const opParam = searchParams.get("op"); + if (opParam !== null) { + for (const op of opParam.split(",").map((s) => s.trim())) { + if (!op) continue; + if (!AGGREGATIONS.includes(op)) { + throw new QueryError( + `Unknown aggregation "${op}". Supported: ${AGGREGATIONS.join(", ")}.` + ); + } + if (!ops.includes(op)) { + ops.push(op); + } + } + } + const column = searchParams.get("column"); + const needsColumn = ops.filter((op) => op !== "count"); + if (needsColumn.length > 0 && !column) { + throw new QueryError( + `The "column" parameter is required for op=${needsColumn.join(",")}.` + ); + } + if (groupBy.length > 0 && ops.length === 0) { + throw new QueryError( + `groupBy requires at least one aggregation via the "op" parameter.` + ); + } + let limit = DEFAULT_LIMIT; + const limitParam = searchParams.get("limit"); + if (limitParam !== null) { + limit = Number(limitParam); + if (!Number.isInteger(limit) || limit < 1 || limit > MAX_LIMIT) { + throw new QueryError( + `Invalid limit "${limitParam}". Must be an integer between 1 and ${MAX_LIMIT}.` + ); + } + } + let offset = 0; + const offsetParam = searchParams.get("offset"); + if (offsetParam !== null) { + offset = Number(offsetParam); + if (!Number.isInteger(offset) || offset < 0) { + throw new QueryError( + `Invalid offset "${offsetParam}". Must be a non-negative integer.` + ); + } + } + let orderBy = null; + const orderByParam = searchParams.get("orderBy"); + if (orderByParam !== null && orderByParam.trim().length > 0) { + const [key, direction = "asc"] = orderByParam.split(":"); + if (direction !== "asc" && direction !== "desc") { + throw new QueryError( + `Invalid orderBy direction "${direction}". Use :asc or :desc.` + ); + } + orderBy = { key: key.trim(), direction }; + } + return { format, groupBy, ops, column, limit, offset, orderBy, filters }; +} +__name(parseQueryParams, "parseQueryParams"); +function canonicalQueryString(searchParams) { + const entries = []; + for (const [key, value] of searchParams.entries()) { + if (key === "f") continue; + entries.push([key, value]); + } + entries.sort( + (a, b) => a[0] === b[0] ? a[1].localeCompare(b[1]) : a[0].localeCompare(b[0]) + ); + const params = new URLSearchParams(); + for (const [key, value] of entries) { + params.append(key, value); + } + return params.toString(); +} +__name(canonicalQueryString, "canonicalQueryString"); + +// src/engine/asyncBuffer.ts +var PUBLIC_UPLOADS_BASE = "https://uploads.seasketch.org"; +async function openR2File(options) { + const { bucket, key, dev, cacheEnabled, waitUntil } = options; + let byteLength; + let etag; + if (dev) { + const probe = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`, { + headers: { Range: "bytes=0-0" } + }); + if (!probe.ok) { + return null; + } + const contentRange = probe.headers.get("content-range") || ""; + byteLength = Number(contentRange.split("/")[1] || 0); + etag = probe.headers.get("etag") || ""; + if (!byteLength) { + return null; + } + } else { + const head = await bucket.head(key); + if (!head) { + return null; + } + byteLength = head.size; + etag = head.httpEtag; + } + const slice = /* @__PURE__ */ __name(async (start, end) => { + const rangeEnd = end === void 0 ? byteLength : end; + if (rangeEnd <= start) { + return new ArrayBuffer(0); + } + const cacheKey2 = new Request( + `${PUBLIC_UPLOADS_BASE}/${key}?etag=${encodeURIComponent( + etag + )}&bytes=${start}-${rangeEnd - 1}` + ); + if (cacheEnabled) { + const cached = await caches.default.match(cacheKey2); + if (cached) { + return await cached.arrayBuffer(); + } + } + let data; + if (dev) { + const res = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`, { + headers: { Range: `bytes=${start}-${rangeEnd - 1}` } + }); + if (!res.ok) { + throw new Error( + `Range request for ${key} failed with status ${res.status}` + ); + } + data = await res.arrayBuffer(); + } else { + const body = await bucket.get(key, { + range: { offset: start, length: rangeEnd - start } + }); + if (!body) { + throw new Error(`Range request to R2 for ${key} returned no body`); + } + data = await body.arrayBuffer(); + } + if (cacheEnabled) { + waitUntil( + caches.default.put( + cacheKey2, + new Response(data.slice(0), { + status: 200, + headers: { + "Content-Type": "application/octet-stream", + "Cache-Control": "public, max-age=86400" + } + }) + ) + ); + } + return data; + }, "slice"); + const buffer = cachedAsyncBuffer({ byteLength, slice }); + return { buffer, byteLength, etag }; +} +__name(openR2File, "openR2File"); +async function getR2Object(options) { + const { bucket, key, dev } = options; + if (dev) { + const res = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`); + if (!res.ok) { + return null; + } + return await res.arrayBuffer(); + } + const body = await bucket.get(key); + if (!body) { + return null; + } + return await body.arrayBuffer(); +} +__name(getR2Object, "getR2Object"); + +// src/engine/plan.ts +function kindForSchemaElement(element) { + const logical = element.logical_type?.type; + if (logical === "STRING" || element.converted_type === "UTF8") { + return "string"; + } + if (logical === "DATE" || logical === "TIMESTAMP" || element.converted_type === "DATE" || element.converted_type === "TIMESTAMP_MILLIS" || element.converted_type === "TIMESTAMP_MICROS" || element.type === "INT96") { + return "timestamp"; + } + if (element.type === "BOOLEAN") { + return "boolean"; + } + if (element.type === "INT32" || element.type === "INT64" || element.type === "FLOAT" || element.type === "DOUBLE" || element.converted_type === "DECIMAL") { + return "number"; + } + return "string"; +} +__name(kindForSchemaElement, "kindForSchemaElement"); +function columnsFromMetadata(metadata) { + const columns = /* @__PURE__ */ new Map(); + const schema = parquetSchema(metadata); + for (const child of schema.children) { + const name = child.element.name; + columns.set(name, { name, kind: kindForSchemaElement(child.element) }); + } + return columns; +} +__name(columnsFromMetadata, "columnsFromMetadata"); +function unknownColumnError(name, columns) { + return new QueryError(`Unknown column "${name}".`, 400, { + validColumns: [...columns.values()].map((c) => ({ + name: c.name, + type: c.kind + })) + }); +} +__name(unknownColumnError, "unknownColumnError"); +function coerceValue(raw2, column) { + switch (column.kind) { + case "number": { + const n = Number(raw2); + if (raw2.trim() === "" || Number.isNaN(n)) { + throw new QueryError( + `Invalid numeric value "${raw2}" for column "${column.name}".` + ); + } + return n; + } + case "boolean": { + if (raw2 === "true" || raw2 === "1") return true; + if (raw2 === "false" || raw2 === "0") return false; + throw new QueryError( + `Invalid boolean value "${raw2}" for column "${column.name}". Use true or false.` + ); + } + case "timestamp": { + const t = Date.parse(raw2); + if (Number.isNaN(t)) { + throw new QueryError( + `Invalid date value "${raw2}" for column "${column.name}". Use an ISO 8601 date.` + ); + } + return t; + } + default: + return raw2; + } +} +__name(coerceValue, "coerceValue"); +var COMPARISON_OPS = /* @__PURE__ */ new Set(["gt", "gte", "lt", "lte"]); +function compileFilters(filters, columns) { + return filters.map((filter) => { + const column = columns.get(filter.column); + if (!column) { + throw unknownColumnError(filter.column, columns); + } + if (COMPARISON_OPS.has(filter.op) && column.kind !== "number" && column.kind !== "timestamp") { + throw new QueryError( + `Operator "${filter.op}" is only supported for numeric or date columns; "${column.name}" is a ${column.kind} column.` + ); + } + const compiled = { + column: filter.column, + op: filter.op, + kind: column.kind + }; + if (filter.value !== void 0) { + compiled.value = coerceValue(filter.value, column); + } + if (filter.values !== void 0) { + compiled.values = filter.values.map((v) => coerceValue(v, column)); + } + return compiled; + }); +} +__name(compileFilters, "compileFilters"); +function normalizeValue(value, kind) { + if (value === null || value === void 0) { + return null; + } + if (typeof value === "bigint") { + return Number(value); + } + if (value instanceof Date) { + return value.getTime(); + } + if (kind === "number" && typeof value !== "number") { + const n = Number(value); + return Number.isNaN(n) ? null : n; + } + if (kind === "timestamp" && typeof value === "number") { + return value; + } + if (value instanceof Uint8Array) { + return new TextDecoder().decode(value); + } + return value; +} +__name(normalizeValue, "normalizeValue"); +function rowGroupMayMatch(filter, stats, rowCount) { + if (!stats) return true; + const nullCount = stats.null_count === void 0 ? void 0 : Number(stats.null_count); + if (filter.op === "isNull") { + return nullCount === void 0 || nullCount > 0; + } + if (filter.op === "notNull") { + return nullCount === void 0 || nullCount < rowCount; + } + const min = normalizeValue(stats.min_value, filter.kind); + const max = normalizeValue(stats.max_value, filter.kind); + if (min === null || max === null) return true; + switch (filter.op) { + case "eq": + return filter.value >= min && filter.value <= max; + case "in": + return filter.values.some((v) => v >= min && v <= max); + case "gt": + return max > filter.value; + case "gte": + return max >= filter.value; + case "lt": + return min < filter.value; + case "lte": + return min <= filter.value; + default: + return !(filter.op === "neq" && min === max && min === filter.value); + } +} +__name(rowGroupMayMatch, "rowGroupMayMatch"); +function planQuery(metadata, query) { + const columns = columnsFromMetadata(metadata); + for (const name of query.groupBy) { + if (!columns.has(name)) { + throw unknownColumnError(name, columns); + } + } + if (query.column !== null) { + if (!columns.has(query.column)) { + throw unknownColumnError(query.column, columns); + } + const kind = columns.get(query.column).kind; + const numericOps = query.ops.filter( + (op) => op !== "count" && op !== "min" && op !== "max" + ); + if (numericOps.length > 0 && kind !== "number" && kind !== "timestamp") { + throw new QueryError( + `Aggregations ${numericOps.join(", ")} require a numeric column; "${query.column}" is a ${kind} column.` + ); + } + } + const filters = compileFilters(query.filters, columns); + let neededColumns; + if (query.ops.length > 0) { + const needed = new Set(query.groupBy); + if (query.column) needed.add(query.column); + for (const f of filters) needed.add(f.column); + neededColumns = [...needed]; + } else { + neededColumns = void 0; + } + const spans = []; + let rowStart = 0; + let scanned = 0; + for (const rowGroup of metadata.row_groups) { + const numRows = Number(rowGroup.num_rows); + let mayMatch = true; + for (const filter of filters) { + const chunk = rowGroup.columns.find( + (c) => c.meta_data?.path_in_schema.join(".") === filter.column + ); + if (!chunk?.meta_data) continue; + if (!rowGroupMayMatch(filter, chunk.meta_data.statistics, numRows)) { + mayMatch = false; + break; + } + } + if (mayMatch && numRows > 0) { + scanned++; + const last = spans[spans.length - 1]; + if (last && last.rowEnd === rowStart) { + last.rowEnd = rowStart + numRows; + } else { + spans.push({ rowStart, rowEnd: rowStart + numRows }); + } + } + rowStart += numRows; + } + return { + columns, + filters, + neededColumns, + spans, + rowGroupsTotal: metadata.row_groups.length, + rowGroupsScanned: scanned, + totalRows: Number(metadata.num_rows) + }; +} +__name(planQuery, "planQuery"); + +// src/engine/execute.ts +function makePredicate(filters) { + if (filters.length === 0) { + return () => true; + } + return (row) => { + for (const filter of filters) { + const value = normalizeValue(row[filter.column], filter.kind); + switch (filter.op) { + case "isNull": + if (value !== null) return false; + break; + case "notNull": + if (value === null) return false; + break; + case "eq": + if (value === null || value !== filter.value) return false; + break; + case "neq": + if (value === null || value === filter.value) return false; + break; + case "in": + if (value === null || !filter.values.includes(value)) return false; + break; + case "gt": + if (value === null || !(value > filter.value)) return false; + break; + case "gte": + if (value === null || !(value >= filter.value)) return false; + break; + case "lt": + if (value === null || !(value < filter.value)) return false; + break; + case "lte": + if (value === null || !(value <= filter.value)) return false; + break; + } + } + return true; + }; +} +__name(makePredicate, "makePredicate"); +function jsonValue(value) { + if (typeof value === "bigint") { + return Number(value); + } + if (value instanceof Date) { + return value.toISOString(); + } + if (value instanceof Uint8Array) { + return new TextDecoder().decode(value); + } + if (value === void 0) { + return null; + } + return value; +} +__name(jsonValue, "jsonValue"); +function jsonRow(row) { + const out = {}; + for (const key of Object.keys(row)) { + out[key] = jsonValue(row[key]); + } + return out; +} +__name(jsonRow, "jsonRow"); +function compareValues(a, b) { + if (a === null || a === void 0) return b === null || b === void 0 ? 0 : 1; + if (b === null || b === void 0) return -1; + if (typeof a === "number" && typeof b === "number") return a - b; + return String(a) < String(b) ? -1 : String(a) > String(b) ? 1 : 0; +} +__name(compareValues, "compareValues"); +function median(values) { + if (values.length === 0) return null; + const sorted = [...values].sort((a, b) => a - b); + const mid = Math.floor(sorted.length / 2); + return sorted.length % 2 === 1 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2; +} +__name(median, "median"); +function sortAndPage(items, orderBy, offset, limit, validKeys) { + if (orderBy) { + if (!validKeys(orderBy.key)) { + throw new QueryError( + `orderBy key "${orderBy.key}" is not present in the output.` + ); + } + const dir = orderBy.direction === "desc" ? -1 : 1; + items.sort((a, b) => dir * compareValues(a[orderBy.key], b[orderBy.key])); + } + return items.slice(offset, offset + limit); +} +__name(sortAndPage, "sortAndPage"); +async function executeQuery(options) { + const { file, metadata, query, plan } = options; + const predicate = makePredicate(plan.filters); + if (query.ops.length === 0) { + return await executeRawQuery(options, predicate); + } + const aggColumn = query.column; + const aggKind = aggColumn ? plan.columns.get(aggColumn)?.kind : void 0; + const needsMedian = query.ops.includes("median"); + const groups = /* @__PURE__ */ new Map(); + let rowsScanned = 0; + let rowsMatched = 0; + for (const span of plan.spans) { + const rows = await parquetReadObjects({ + file, + metadata, + columns: plan.neededColumns, + rowStart: span.rowStart, + rowEnd: span.rowEnd + }); + rowsScanned += rows.length; + for (const row of rows) { + if (!predicate(row)) continue; + rowsMatched++; + const keyValues = query.groupBy.map((col) => jsonValue(row[col])); + const key = JSON.stringify(keyValues); + let group = groups.get(key); + if (!group) { + group = { + keyValues, + rowCount: 0, + valueCount: 0, + sum: 0, + min: null, + max: null, + values: needsMedian ? [] : void 0 + }; + groups.set(key, group); + } + group.rowCount++; + if (aggColumn) { + const value = normalizeValue(row[aggColumn], aggKind || "string"); + if (value !== null) { + group.valueCount++; + if (typeof value === "number") { + group.sum += value; + group.values?.push(value); + } + if (group.min === null || compareValues(value, group.min) < 0) { + group.min = value; + } + if (group.max === null || compareValues(value, group.max) > 0) { + group.max = value; + } + } + } + } + } + const output = []; + for (const group of groups.values()) { + const entry = {}; + query.groupBy.forEach((col, i) => { + entry[col] = group.keyValues[i]; + }); + for (const op of query.ops) { + entry[op] = aggregateValue(op, group, aggColumn !== null); + } + output.push(entry); + } + const validKeys = /* @__PURE__ */ __name((key) => query.groupBy.includes(key) || query.ops.includes(key), "validKeys"); + const paged = sortAndPage( + output, + query.orderBy, + query.offset, + query.limit, + validKeys + ); + return { groups: paged, rowsScanned, rowsMatched }; +} +__name(executeQuery, "executeQuery"); +function aggregateValue(op, group, hasColumn) { + switch (op) { + case "count": + return hasColumn ? group.valueCount : group.rowCount; + case "sum": + return group.valueCount > 0 ? group.sum : null; + case "mean": + return group.valueCount > 0 ? group.sum / group.valueCount : null; + case "min": + return group.min; + case "max": + return group.max; + case "median": + return median(group.values || []); + } +} +__name(aggregateValue, "aggregateValue"); +async function executeRawQuery(options, predicate) { + const { file, metadata, query, plan } = options; + const matched = []; + let rowsScanned = 0; + let rowsMatched = 0; + const target = query.orderBy ? Infinity : query.offset + query.limit; + for (const span of plan.spans) { + const rows = await parquetReadObjects({ + file, + metadata, + columns: plan.neededColumns, + rowStart: span.rowStart, + rowEnd: span.rowEnd + }); + rowsScanned += rows.length; + for (const row of rows) { + if (!predicate(row)) continue; + rowsMatched++; + if (matched.length < target) { + matched.push(jsonRow(row)); + } + } + if (matched.length >= target) break; + } + const columnNames = new Set(plan.columns.keys()); + const paged = sortAndPage( + matched, + query.orderBy, + query.offset, + query.limit, + (key) => columnNames.has(key) + ); + return { rows: paged, rowsScanned, rowsMatched }; +} +__name(executeRawQuery, "executeRawQuery"); + +// src/ui/html.ts +function escapeHtml(text) { + return text.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """); +} +__name(escapeHtml, "escapeHtml"); +function queryUiHtml(tablePath) { + const safePath = escapeHtml(tablePath); + return ` + + + + +Data Table Query — ${safePath} + + + +
    +

    Data Table Query

    +
    ${safePath}
    + +
    +

    Filters

    +
    + +
    + +
    +

    Aggregation

    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    Leave operations unchecked to fetch raw filtered rows.
    +
    + +
    +

    Output

    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +\n\n`;\n}\n", "import { Context, Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\nimport { parquetMetadataAsync } from \"hyparquet\";\nimport {\n canonicalQueryString,\n parseQueryParams,\n QueryError,\n} from \"./params\";\nimport { getR2Object, openR2File } from \"./engine/asyncBuffer\";\nimport { planQuery } from \"./engine/plan\";\nimport { executeQuery } from \"./engine/execute\";\nimport { queryUiHtml } from \"./ui/html\";\n\n/**\n * data-tables-worker\n *\n * Serves cacheable GET queries over parquet data tables stored in R2, e.g.\n *\n * GET /projects/{slug}/public/dataTables/{uuid}/query\n * ?groupBy=site&op=mean&column=count&q.year=2018&q.classcode=PYCHEL\n *\n * Content negotiation: text/html requests receive an interactive query UI;\n * application/json (or f=json) receives query results.\n */\n\nconst app = new Hono<{ Bindings: Env }>();\n\nconst CACHE_ORIGIN = \"https://data-tables.seasketch.org\";\n/** Browser cache lifetime for query responses */\nconst BROWSER_MAX_AGE = 3600;\n/** CDN/edge cache lifetime. Table paths are versioned (a replacement gets a\n * new uploadId directory) so long edge lifetimes are safe. */\nconst EDGE_MAX_AGE = 86400;\n\napp.use(\n \"*\",\n cors({\n origin: \"*\",\n allowMethods: [\"GET\", \"OPTIONS\"],\n maxAge: 86400,\n })\n);\n\nfunction isDev(env: Env): boolean {\n return !!env.DEV;\n}\n\nasync function makeETag(objectEtag: string, canonicalQuery: string) {\n const data = new TextEncoder().encode(`${objectEtag}|${canonicalQuery}`);\n const digest = await crypto.subtle.digest(\"SHA-1\", data);\n const hex = [...new Uint8Array(digest)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return `\"${hex}\"`;\n}\n\nfunction errorResponse(error: unknown): Response {\n if (error instanceof QueryError) {\n return Response.json(\n { error: error.message, ...error.details },\n { status: error.status }\n );\n }\n console.error(\n JSON.stringify({\n message: \"query execution failed\",\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n })\n );\n return Response.json({ error: \"Internal server error\" }, { status: 500 });\n}\n\napp.get(\"*\", async (c) => {\n const url = new URL(c.req.url);\n const pathname = url.pathname;\n\n if (pathname.endsWith(\"/query\")) {\n const tablePath = pathname.slice(1, -\"/query\".length);\n if (!tablePath) {\n return Response.json({ error: \"Missing table path\" }, { status: 404 });\n }\n return handleQuery(c, tablePath, url);\n }\n\n if (pathname.endsWith(\"/column-stats.json\")) {\n return handleColumnStats(c, pathname.slice(1));\n }\n\n return Response.json(\n {\n error: \"Not found. Query endpoint is {tablePath}/query\",\n },\n { status: 404 }\n );\n});\n\ntype AppContext = Context<{ Bindings: Env }>;\n\nasync function handleColumnStats(\n c: AppContext,\n key: string\n): Promise {\n const dev = isDev(c.env);\n const data = await getR2Object({ bucket: c.env.SSN_TILES, key, dev });\n if (!data) {\n return Response.json({ error: \"Not found\" }, { status: 404 });\n }\n return new Response(data, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": dev\n ? \"no-store\"\n : `public, max-age=${BROWSER_MAX_AGE}, s-maxage=${EDGE_MAX_AGE}`,\n },\n });\n}\n\nasync function handleQuery(\n c: AppContext,\n tablePath: string,\n url: URL\n): Promise {\n const dev = isDev(c.env);\n const cacheEnabled = !dev;\n\n let query;\n try {\n query = parseQueryParams(url.searchParams);\n } catch (error) {\n return errorResponse(error);\n }\n\n // Content negotiation: explicit f param wins, otherwise Accept header.\n const accept = c.req.header(\"accept\") || \"\";\n const wantsHtml =\n query.format === \"html\" ||\n (query.format === null && accept.includes(\"text/html\"));\n if (wantsHtml) {\n return new Response(queryUiHtml(tablePath), {\n headers: {\n \"Content-Type\": \"text/html; charset=utf-8\",\n \"Cache-Control\": dev ? \"no-store\" : \"public, max-age=300\",\n },\n });\n }\n\n const canonicalQuery = canonicalQueryString(url.searchParams);\n const cacheKey = new Request(\n `${CACHE_ORIGIN}/${tablePath}/query?${canonicalQuery}`\n );\n const ifNoneMatch = c.req.header(\"if-none-match\");\n\n if (cacheEnabled) {\n const cached = await caches.default.match(cacheKey);\n if (cached) {\n const etag = cached.headers.get(\"etag\");\n if (etag && ifNoneMatch === etag) {\n return new Response(null, {\n status: 304,\n headers: { ETag: etag, \"Cache-Control\": cached.headers.get(\"cache-control\") || \"\" },\n });\n }\n return cached;\n }\n }\n\n const started = Date.now();\n try {\n const source = await openR2File({\n bucket: c.env.SSN_TILES,\n key: `${tablePath}/data.parquet`,\n dev,\n cacheEnabled,\n waitUntil: (p) => c.executionCtx.waitUntil(p),\n });\n if (!source) {\n throw new QueryError(\n `No data table found at \"${tablePath}/data.parquet\".`,\n 404\n );\n }\n\n const metadata = await parquetMetadataAsync(source.buffer);\n const planned = Date.now();\n const plan = planQuery(metadata, query);\n const result = await executeQuery({\n file: source.buffer,\n metadata,\n query,\n plan,\n });\n const finished = Date.now();\n\n const body = {\n table: tablePath,\n totalRows: plan.totalRows,\n rowsScanned: result.rowsScanned,\n rowsMatched: result.rowsMatched,\n rowGroups: {\n total: plan.rowGroupsTotal,\n scanned: plan.rowGroupsScanned,\n },\n timing: {\n metadataMs: planned - started,\n executeMs: finished - planned,\n totalMs: finished - started,\n },\n ...(result.groups !== undefined\n ? { groups: result.groups }\n : { rows: result.rows }),\n };\n\n const etag = await makeETag(source.etag, canonicalQuery);\n if (ifNoneMatch === etag) {\n return new Response(null, { status: 304, headers: { ETag: etag } });\n }\n\n const response = new Response(JSON.stringify(body), {\n headers: {\n \"Content-Type\": \"application/json\",\n ETag: etag,\n \"Cache-Control\": dev\n ? \"no-store\"\n : `public, max-age=${BROWSER_MAX_AGE}, s-maxage=${EDGE_MAX_AGE}`,\n },\n });\n\n if (cacheEnabled) {\n c.executionCtx.waitUntil(caches.default.put(cacheKey, response.clone()));\n }\n return response;\n } catch (error) {\n return errorResponse(error);\n }\n}\n\nexport default app;\n", "import type { Middleware } from \"./common\";\n\nconst drainBody: Middleware = async (request, env, _ctx, middlewareCtx) => {\n\ttry {\n\t\treturn await middlewareCtx.next(request, env);\n\t} finally {\n\t\ttry {\n\t\t\tif (request.body !== null && !request.bodyUsed) {\n\t\t\t\tconst reader = request.body.getReader();\n\t\t\t\twhile (!(await reader.read()).done) {}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(\"Failed to drain the unused request body.\", e);\n\t\t}\n\t}\n};\n\nexport default drainBody;\n", "import type { Middleware } from \"./common\";\n\ninterface JsonError {\n\tmessage?: string;\n\tname?: string;\n\tstack?: string;\n\tcause?: JsonError;\n}\n\nfunction reduceError(e: any): JsonError {\n\treturn {\n\t\tname: e?.name,\n\t\tmessage: e?.message ?? String(e),\n\t\tstack: e?.stack,\n\t\tcause: e?.cause === undefined ? undefined : reduceError(e.cause),\n\t};\n}\n\n// See comment in `bundle.ts` for details on why this is needed\nconst jsonError: Middleware = async (request, env, _ctx, middlewareCtx) => {\n\ttry {\n\t\treturn await middlewareCtx.next(request, env);\n\t} catch (e: any) {\n\t\tconst error = reduceError(e);\n\t\treturn Response.json(error, {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"MF-Experimental-Error-Stack\": \"true\" },\n\t\t});\n\t}\n};\n\nexport default jsonError;\n", "\t\t\t\timport worker, * as OTHER_EXPORTS from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/src/index.ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/src/index.ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\n\t\t\t\texport const __INTERNAL_WRANGLER_MIDDLEWARE__ = [\n\t\t\t\t\t\n\t\t\t\t\t__MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default\n\t\t\t\t]\n\t\t\t\texport default worker;", "export type Awaitable = T | Promise;\n// TODO: allow dispatching more events?\nexport type Dispatcher = (\n\ttype: \"scheduled\",\n\tinit: { cron?: string }\n) => Awaitable;\n\nexport type IncomingRequest = Request<\n\tunknown,\n\tIncomingRequestCfProperties\n>;\n\nexport interface MiddlewareContext {\n\tdispatch: Dispatcher;\n\tnext(request: IncomingRequest, env: any): Awaitable;\n}\n\nexport type Middleware = (\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tmiddlewareCtx: MiddlewareContext\n) => Awaitable;\n\nconst __facade_middleware__: Middleware[] = [];\n\n// The register functions allow for the insertion of one or many middleware,\n// We register internal middleware first in the stack, but have no way of controlling\n// the order that addMiddleware is run in service workers so need an internal function.\nexport function __facade_register__(...args: (Middleware | Middleware[])[]) {\n\t__facade_middleware__.push(...args.flat());\n}\nexport function __facade_registerInternal__(\n\t...args: (Middleware | Middleware[])[]\n) {\n\t__facade_middleware__.unshift(...args.flat());\n}\n\nfunction __facade_invokeChain__(\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tdispatch: Dispatcher,\n\tmiddlewareChain: Middleware[]\n): Awaitable {\n\tconst [head, ...tail] = middlewareChain;\n\tconst middlewareCtx: MiddlewareContext = {\n\t\tdispatch,\n\t\tnext(newRequest, newEnv) {\n\t\t\treturn __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail);\n\t\t},\n\t};\n\treturn head(request, env, ctx, middlewareCtx);\n}\n\nexport function __facade_invoke__(\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tdispatch: Dispatcher,\n\tfinalMiddleware: Middleware\n): Awaitable {\n\treturn __facade_invokeChain__(request, env, ctx, dispatch, [\n\t\t...__facade_middleware__,\n\t\tfinalMiddleware,\n\t]);\n}\n", "// This loads all middlewares exposed on the middleware object and then starts\n// the invocation chain. The big idea is that we can add these to the middleware\n// export dynamically through wrangler, or we can potentially let users directly\n// add them as a sort of \"plugin\" system.\n\nimport ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/common.ts\";\nimport type { WorkerEntrypointConstructor } from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js\";\n\nclass __Facade_ScheduledController__ implements ScheduledController {\n\treadonly #noRetry: ScheduledController[\"noRetry\"];\n\n\tconstructor(\n\t\treadonly scheduledTime: number,\n\t\treadonly cron: string,\n\t\tnoRetry: ScheduledController[\"noRetry\"]\n\t) {\n\t\tthis.#noRetry = noRetry;\n\t}\n\n\tnoRetry() {\n\t\tif (!(this instanceof __Facade_ScheduledController__)) {\n\t\t\tthrow new TypeError(\"Illegal invocation\");\n\t\t}\n\t\t// Need to call native method immediately in case uncaught error thrown\n\t\tthis.#noRetry();\n\t}\n}\n\nfunction wrapExportedHandler(worker: ExportedHandler): ExportedHandler {\n\t// If we don't have any middleware defined, just return the handler as is\n\tif (\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__ === undefined ||\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__.length === 0\n\t) {\n\t\treturn worker;\n\t}\n\t// Otherwise, register all middleware once\n\tfor (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) {\n\t\t__facade_register__(middleware);\n\t}\n\n\tconst fetchDispatcher: ExportedHandlerFetchHandler = function (\n\t\trequest,\n\t\tenv,\n\t\tctx\n\t) {\n\t\tif (worker.fetch === undefined) {\n\t\t\tthrow new Error(\"Handler does not export a fetch() function.\");\n\t\t}\n\t\treturn worker.fetch(request, env, ctx);\n\t};\n\n\treturn {\n\t\t...worker,\n\t\tfetch(request, env, ctx) {\n\t\t\tconst dispatcher: Dispatcher = function (type, init) {\n\t\t\t\tif (type === \"scheduled\" && worker.scheduled !== undefined) {\n\t\t\t\t\tconst controller = new __Facade_ScheduledController__(\n\t\t\t\t\t\tDate.now(),\n\t\t\t\t\t\tinit.cron ?? \"\",\n\t\t\t\t\t\t() => {}\n\t\t\t\t\t);\n\t\t\t\t\treturn worker.scheduled(controller, env, ctx);\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher);\n\t\t},\n\t};\n}\n\nfunction wrapWorkerEntrypoint(\n\tklass: WorkerEntrypointConstructor\n): WorkerEntrypointConstructor {\n\t// If we don't have any middleware defined, just return the handler as is\n\tif (\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__ === undefined ||\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__.length === 0\n\t) {\n\t\treturn klass;\n\t}\n\t// Otherwise, register all middleware once\n\tfor (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) {\n\t\t__facade_register__(middleware);\n\t}\n\n\t// `extend`ing `klass` here so other RPC methods remain callable\n\treturn class extends klass {\n\t\t#fetchDispatcher: ExportedHandlerFetchHandler> = (\n\t\t\trequest,\n\t\t\tenv,\n\t\t\tctx\n\t\t) => {\n\t\t\tthis.env = env;\n\t\t\tthis.ctx = ctx;\n\t\t\tif (super.fetch === undefined) {\n\t\t\t\tthrow new Error(\"Entrypoint class does not define a fetch() function.\");\n\t\t\t}\n\t\t\treturn super.fetch(request);\n\t\t};\n\n\t\t#dispatcher: Dispatcher = (type, init) => {\n\t\t\tif (type === \"scheduled\" && super.scheduled !== undefined) {\n\t\t\t\tconst controller = new __Facade_ScheduledController__(\n\t\t\t\t\tDate.now(),\n\t\t\t\t\tinit.cron ?? \"\",\n\t\t\t\t\t() => {}\n\t\t\t\t);\n\t\t\t\treturn super.scheduled(controller);\n\t\t\t}\n\t\t};\n\n\t\tfetch(request: Request) {\n\t\t\treturn __facade_invoke__(\n\t\t\t\trequest,\n\t\t\t\tthis.env,\n\t\t\t\tthis.ctx,\n\t\t\t\tthis.#dispatcher,\n\t\t\t\tthis.#fetchDispatcher\n\t\t\t);\n\t\t}\n\t};\n}\n\nlet WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined;\nif (typeof ENTRY === \"object\") {\n\tWRAPPED_ENTRY = wrapExportedHandler(ENTRY);\n} else if (typeof ENTRY === \"function\") {\n\tWRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY);\n}\nexport default WRAPPED_ENTRY;\n"], + "mappings": "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", + "names": ["match", "cacheKey", "decoder", "raw", "app", "Node", "_Node", "Node", "Hono", "child", "schemaTree", "decoder", "logicalType", "decoder", "byteWidth", "bitWidth", "bitWidth", "len", "bitWidth", "reader", "groupData", "schemaTree", "assembled", "schemaTree", "rowStart", "schemaTree", "raw", "match", "column", "cacheKey", "raw", "Hono", "cacheKey"] +} diff --git a/packages/data-tables-worker/README.md b/packages/data-tables-worker/README.md new file mode 100644 index 000000000..27aa9e38c --- /dev/null +++ b/packages/data-tables-worker/README.md @@ -0,0 +1,129 @@ +# data-tables-worker + +Cloudflare Worker that serves highly cacheable GET queries over SeaSketch +overlay data tables stored as parquet in R2. It powers map visualizations by +answering questions like "average PYCHEL count per site in 2018" which can +then be joined against survey-site vector tiles in mapbox-gl-js. + +The engine is built on [hyparquet](https://github.com/hyparam/hyparquet) and +only reads the byte ranges it needs from R2: the parquet footer, plus the +column chunks for columns referenced by the query. Row groups are pruned two +ways: min/max column statistics, and bloom filters for `eq`/`in` predicates +(essential for high-cardinality string columns like species codes, where +min/max spans the whole alphabet in every row group). Execution is columnar: +filters are evaluated against just the filter columns to produce matched row +indices, and the remaining columns are only decoded for row groups with +matches -- no per-row objects are materialized during scans. + +## Endpoint + +``` +GET https://data-tables.seasketch.org/{tablePath}/query +``` + +`{tablePath}` is the R2 prefix containing `data.parquet` and +`column-stats.json`, e.g. `projects/california/public/dataTables/{uploadId}`. + +Content negotiation: requests with `Accept: text/html` receive an interactive +query UI for exploring the table; `application/json` (or `f=json`) receives +query results. The demo UI loads `{tablePath}/column-stats.json` via this worker +(same origin, with CDN fallback when R2 misses). + +### Built-in parameters + +| Param | Description | +| --------- | ---------------------------------------------------------------------------- | +| `f` | `json` (default) or `html`; overrides Accept-based negotiation | +| `groupBy` | Comma-separated column list. Requires `op`. | +| `op` | Comma-separated aggregations: `count`, `sum`, `mean`, `min`, `max`, `median` | +| `column` | Column to aggregate. Required for every op except `count`. | +| `orderBy` | Output key with optional direction, e.g. `orderBy=mean:desc` | +| `limit` | Max rows/groups returned (omit for no limit) | +| `offset` | Pagination offset | + +Without `op`, the endpoint returns raw filtered rows. + +### Column filters (`q.` prefix) + +PostgREST-style operators embedded in the value: + +``` +q.year=2018 equality (bare value) +q.count=gte.5 gt / gte / lt / lte / neq (numeric or date columns) +q.observer=in.(CHAD BURT,BRAD BURT) IN list ("quoted" items may contain commas) +q.size=is.null q.size=not.null null tests +q.year=gte.2010&q.year=lte.2018 repeated params AND together +``` + +Unknown columns or type-invalid operators return a 400 with the list of valid +columns. + +### Example + +``` +/projects/california/public/dataTables/{uploadId}/query + ?groupBy=site&op=mean,count&column=count&q.year=2018&q.classcode=PYCHEL +``` + +```json +{ + "table": "projects/california/public/dataTables/…", + "totalRows": 353253, + "rowsScanned": 353253, + "rowsMatched": 3, + "rowGroups": { "total": 3, "scanned": 3 }, + "timing": { "metadataMs": 209, "executeMs": 230, "totalMs": 439 }, + "groups": [ + { "site": "PINOS", "mean": 1, "count": 1 }, + { "site": "PESCADERO_DC", "mean": 1, "count": 1 }, + { "site": "LITTLE_IRISH_CEN", "mean": 1, "count": 1 } + ] +} +``` + +## Caching + +Table paths are versioned (each replacement upload gets a new uploadId +directory), so content at a given URL is immutable. Caching is intentionally +simple — three layers, each with a clear job: + +1. **HTTP response cache (primary).** Query JSON and `column-stats.json` are + served with `Cache-Control: public, max-age=86400, s-maxage=604800, + immutable` and a strong `ETag` (R2 object etag + canonicalized query). + Workers Cache (`cache.enabled` in wrangler.jsonc) stores identical GET + requests at the edge, so repeat queries never invoke the Worker at all. + This is the main win for static data. + +2. **In-memory parquet blocks (warm isolate).** Raw byte-range reads are + rounded to 512 KiB blocks and kept in an isolate-global LRU (32 MiB). + A warm isolate reuses fetched R2 bytes across queries that touch the same + table, even when filter values differ. + +3. **In-memory decoded columns (warm isolate, filter sweeps).** After blocks + are fetched, parquet still has to decompress and expand columns — the + CPU-heavy step. Decoded column arrays are cached in a second LRU (48 MiB), + keyed by file version + column + row span. Changing species or year while + scanning the same columns skips decode on subsequent queries within a + session. + +Parsed parquet footers and file stat (size/etag) are also memoized in isolate +memory per etag — cheap bookkeeping that avoids redundant R2 head() calls and +footer reads. + +In dev (`DEV` var set, see `.dev.vars`), HTTP responses use `Cache-Control: +no-store` so you always see fresh results. In-memory caches still apply. +Files are fetched from `https://uploads.seasketch.org` instead of the R2 +binding so `wrangler dev` works without credentials. + +## Development + +```sh +npm run dev # wrangler dev on :8787 (public-URL fallback, no caching) +npm test # vitest; engine tests run in Node against a real fixture parquet +npm run deploy # wrangler deploy (custom domain is attached in the CF dashboard) +``` + +Engine logic (parsing, planning/pruning, filtering, aggregation) is plain +TypeScript with no Workers dependencies and is tested directly in Node +against `test/fixtures/data.parquet`, a real 353k-row PISCO kelp forest +monitoring table. diff --git a/packages/data-tables-worker/package-lock.json b/packages/data-tables-worker/package-lock.json new file mode 100644 index 000000000..fa7a8ad7e --- /dev/null +++ b/packages/data-tables-worker/package-lock.json @@ -0,0 +1,2597 @@ +{ + "name": "data-tables-worker", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "data-tables-worker", + "version": "0.0.0", + "dependencies": { + "hono": "^4.7.11", + "hyparquet": "^1.26.2" + }, + "devDependencies": { + "typescript": "^5.5.2", + "vitest": "^3.2.4", + "wrangler": "^4.19.1" + } + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.5.0.tgz", + "integrity": "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==", + "dev": true, + "license": "MIT OR Apache-2.0", + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.2.tgz", + "integrity": "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@poppinss/colors": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz", + "integrity": "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^4.1.5" + } + }, + "node_modules/@poppinss/dumper": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.5.tgz", + "integrity": "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@sindresorhus/is": "^7.0.2", + "supports-color": "^10.0.0" + } + }, + "node_modules/@poppinss/exception": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.3.tgz", + "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", + "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", + "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", + "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", + "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", + "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", + "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", + "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", + "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", + "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", + "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", + "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", + "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", + "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", + "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", + "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", + "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", + "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", + "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", + "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", + "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", + "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", + "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", + "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", + "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", + "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sindresorhus/is": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@speed-highlight/core": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.17.tgz", + "integrity": "sha512-Z92FwKpCtfaW1V0jTU/fh3QzYEZN8wDwrzRIBoADCJfn4mJCNcJN/XegifX7BDrQ8/h9Xh/JnbyMchL0FqXrkg==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/expect": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.7.tgz", + "integrity": "sha512-E8eBXaKibuvH2pSZErOjdVb5vF4PbKYcrnluBTYxEk1l/VhhwZg1kZQsdtjq+CsF5CFydf2Rdkz7jDHKSisi3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.7", + "@vitest/utils": "3.2.7", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.7.tgz", + "integrity": "sha512-Trr0hYO9CM3Wj6ksWHRhK9IZpIY6wTMO5u/MqXurMxT57sWBaOPEtP3Oq60ihZuh5JsiagKfz95OcxdEP6dBrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.7", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.7.tgz", + "integrity": "sha512-KUHlwqVu0sRlhCdyPdQ/wBoTfRahjUky1MubOmYw9fWfIZy1gNoHpuaaQBPAaMaVYdQYHJLurzj8ECCj5OwTqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.7.tgz", + "integrity": "sha512-sB9y4ovltoQP+WaUPwmSxO9WIg9Ig694Di5PalVPsYHklAdE027mehpWF2SQSVq+k6sFgaivbTjTJwZLSHbedA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.7", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.7.tgz", + "integrity": "sha512-7C+MwShwtBSI5Buwoyg3s/iY1eHL9PKAf+O1wVh/TdnjXUtkoL/9YQtre90i4MtNXM6edP1wJ2zOBpfCyhIS7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.7", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.7.tgz", + "integrity": "sha512-Q2eQGI6d2L/hBtZ0qNuKcAGid68XK6cv1xsoaIma6PaJhHPoqcEJhYpXZ/5myCMqkNgtP6UKuBhbc0nHKnrkuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.7.tgz", + "integrity": "sha512-x6BDOd7dyo3PFLY3I9/HJ25X/6OurhGXk2/B9gOZNPF7XDVjeBK4k01lQE5uvDpbuheErh91qYuE1E2OEjK3Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.7", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/blake3-wasm": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", + "dev": true, + "license": "MIT" + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/check-error": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/error-stack-parser-es": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", + "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", + "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/hono": { + "version": "4.12.28", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.28.tgz", + "integrity": "sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA==", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/hyparquet": { + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/hyparquet/-/hyparquet-1.26.2.tgz", + "integrity": "sha512-6qjyK7R2tZ4vnYP1J8NpcCeDPK1UIYk3xh5XgtQUnUM1iwkYbvI6Mz3xtmpMd6AfCCeoUoJVbEq29k5GReZRWA==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", + "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", + "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz", + "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.62.2", + "@rollup/rollup-android-arm64": "4.62.2", + "@rollup/rollup-darwin-arm64": "4.62.2", + "@rollup/rollup-darwin-x64": "4.62.2", + "@rollup/rollup-freebsd-arm64": "4.62.2", + "@rollup/rollup-freebsd-x64": "4.62.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", + "@rollup/rollup-linux-arm-musleabihf": "4.62.2", + "@rollup/rollup-linux-arm64-gnu": "4.62.2", + "@rollup/rollup-linux-arm64-musl": "4.62.2", + "@rollup/rollup-linux-loong64-gnu": "4.62.2", + "@rollup/rollup-linux-loong64-musl": "4.62.2", + "@rollup/rollup-linux-ppc64-gnu": "4.62.2", + "@rollup/rollup-linux-ppc64-musl": "4.62.2", + "@rollup/rollup-linux-riscv64-gnu": "4.62.2", + "@rollup/rollup-linux-riscv64-musl": "4.62.2", + "@rollup/rollup-linux-s390x-gnu": "4.62.2", + "@rollup/rollup-linux-x64-gnu": "4.62.2", + "@rollup/rollup-linux-x64-musl": "4.62.2", + "@rollup/rollup-openbsd-x64": "4.62.2", + "@rollup/rollup-openharmony-arm64": "4.62.2", + "@rollup/rollup-win32-arm64-msvc": "4.62.2", + "@rollup/rollup-win32-ia32-msvc": "4.62.2", + "@rollup/rollup-win32-x64-gnu": "4.62.2", + "@rollup/rollup-win32-x64-msvc": "4.62.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unenv": { + "version": "2.0.0-rc.24", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", + "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3" + } + }, + "node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0 || ^0.28.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.7.tgz", + "integrity": "sha512-KrxIJ62Fd89gfysR4WotlgZABiz2dqFPgqGzX7s+CwsqLFomRH7777ZcrOD6+WVAh7khPQP41A+BKbpcJFrdEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.7", + "@vitest/mocker": "3.2.7", + "@vitest/pretty-format": "^3.2.7", + "@vitest/runner": "3.2.7", + "@vitest/snapshot": "3.2.7", + "@vitest/spy": "3.2.7", + "@vitest/utils": "3.2.7", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.7", + "@vitest/ui": "3.2.7", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrangler": { + "version": "4.107.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.107.0.tgz", + "integrity": "sha512-fw69ThymNitZ0oIEBU2yNeq3kK59UKz/jyA3udwRrQIAIsxX57q5qLOpPTN7qc5t8n9pnUeofe0uxtMuhQZW8w==", + "dev": true, + "license": "MIT OR Apache-2.0", + "dependencies": { + "@cloudflare/kv-asset-handler": "0.5.0", + "@cloudflare/unenv-preset": "2.16.1", + "blake3-wasm": "2.1.5", + "esbuild": "0.28.1", + "miniflare": "4.20260701.0", + "path-to-regexp": "6.3.0", + "unenv": "2.0.0-rc.24", + "workerd": "1.20260701.1" + }, + "bin": { + "cf-wrangler": "bin/cf-wrangler.js", + "wrangler": "bin/wrangler.js", + "wrangler2": "bin/wrangler.js" + }, + "engines": { + "node": ">=22.0.0" + }, + "optionalDependencies": { + "fsevents": "2.3.3" + }, + "peerDependencies": { + "@cloudflare/workers-types": "^4.20260701.1" + }, + "peerDependenciesMeta": { + "@cloudflare/workers-types": { + "optional": true + } + } + }, + "node_modules/wrangler/node_modules/@cloudflare/unenv-preset": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.16.1.tgz", + "integrity": "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw==", + "dev": true, + "license": "MIT OR Apache-2.0", + "peerDependencies": { + "unenv": "2.0.0-rc.24", + "workerd": ">1.20260305.0 <2.0.0-0" + }, + "peerDependenciesMeta": { + "workerd": { + "optional": true + } + } + }, + "node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-64": { + "version": "1.20260701.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260701.1.tgz", + "integrity": "sha512-Zd9Y1bah6DwwBN2RW8vJohffQrIUazb8UXnqSNecOxM+jJLhUuvv5IOG8dbHcV83TyZAubea6gsQXo2yH1lDdw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-arm64": { + "version": "1.20260701.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260701.1.tgz", + "integrity": "sha512-yBLsjS1qCWqFyCY37qRUrYfzHHvMGvjh8zRKJ6MvUivYDhkZTzqduppK38FoqYvayLJ5KbcxH7zo5rkxGqbsaA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/wrangler/node_modules/@cloudflare/workerd-linux-64": { + "version": "1.20260701.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260701.1.tgz", + "integrity": "sha512-vMfqSIMfoo4xmZXEuUVqLpSFS921YKjiR9q7kDXPi6Vld1PK74UHg9LZuBavT2KSyemHUCTpj9y/4JSYOEyQbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/wrangler/node_modules/@cloudflare/workerd-linux-arm64": { + "version": "1.20260701.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260701.1.tgz", + "integrity": "sha512-HRfwbKU2pK44V2NhoM0+iH0JJSj7nQ9Wv13ifIiGYCmTtDL8/zKtEhX7kQ3D4Vy/Cpjhttl0FkfqXj1aqLDPPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/wrangler/node_modules/@cloudflare/workerd-windows-64": { + "version": "1.20260701.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260701.1.tgz", + "integrity": "sha512-ngxCiIN9s/fM2o1IBMD0o1/mcXrv2NJVdyznh51UH8sQuvrTrXvV2nM0Uj/qU2wMwF6prgNBcdcd7AZeZGiBQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/wrangler/node_modules/miniflare": { + "version": "4.20260701.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260701.0.tgz", + "integrity": "sha512-L6eAAi6IKtyb/7J6L+YsH2vb1yBrJWKRXI293JYDiMl70+6nncdAgigex58w6WBd+CwvdMsqOyNyGs95Op5gWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "0.8.1", + "sharp": "0.34.5", + "undici": "7.28.0", + "workerd": "1.20260701.1", + "ws": "8.21.0", + "youch": "4.1.0-beta.10" + }, + "bin": { + "miniflare": "bootstrap.js" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/wrangler/node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/wrangler/node_modules/undici": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz", + "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/wrangler/node_modules/workerd": { + "version": "1.20260701.1", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260701.1.tgz", + "integrity": "sha512-uF813NG09JwNRRUfJ0zBomyTslSPM810dMj9LVvkQ7RAkLrQLzAlPU8Xh/3dIqZDo2bfd7tChbf2PtqLRARRJQ==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "bin": { + "workerd": "bin/workerd" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "@cloudflare/workerd-darwin-64": "1.20260701.1", + "@cloudflare/workerd-darwin-arm64": "1.20260701.1", + "@cloudflare/workerd-linux-64": "1.20260701.1", + "@cloudflare/workerd-linux-arm64": "1.20260701.1", + "@cloudflare/workerd-windows-64": "1.20260701.1" + } + }, + "node_modules/wrangler/node_modules/ws": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/youch": { + "version": "4.1.0-beta.10", + "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz", + "integrity": "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@poppinss/dumper": "^0.6.4", + "@speed-highlight/core": "^1.2.7", + "cookie": "^1.0.2", + "youch-core": "^0.3.3" + } + }, + "node_modules/youch-core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", + "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/exception": "^1.2.2", + "error-stack-parser-es": "^1.0.5" + } + } + } +} diff --git a/packages/data-tables-worker/package.json b/packages/data-tables-worker/package.json new file mode 100644 index 000000000..b13e458ac --- /dev/null +++ b/packages/data-tables-worker/package.json @@ -0,0 +1,22 @@ +{ + "name": "data-tables-worker", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "wrangler dev", + "start": "wrangler dev", + "deploy": "wrangler deploy --minify", + "test": "vitest run", + "test:watch": "vitest", + "cf-typegen": "wrangler types" + }, + "dependencies": { + "hono": "^4.7.11", + "hyparquet": "^1.26.2" + }, + "devDependencies": { + "typescript": "^5.5.2", + "vitest": "^3.2.4", + "wrangler": "^4.19.1" + } +} diff --git a/packages/data-tables-worker/src/engine/asyncBuffer.ts b/packages/data-tables-worker/src/engine/asyncBuffer.ts new file mode 100644 index 000000000..7f0e2d7ed --- /dev/null +++ b/packages/data-tables-worker/src/engine/asyncBuffer.ts @@ -0,0 +1,164 @@ +import { AsyncBuffer, cachedAsyncBuffer } from "hyparquet"; +import { ByteBudgetCache, createBlockReader } from "./blockReader"; + +export const PUBLIC_UPLOADS_BASE = "https://uploads.seasketch.org"; + +/** Raw parquet bytes, keyed by file version. Persists for the isolate lifetime. */ +const BLOCK_MEMORY_BUDGET = 32 * 1024 * 1024; +const blockMemory = new ByteBudgetCache(BLOCK_MEMORY_BUDGET); + +interface FileStat { + byteLength: number; + etag: string; + usePublicUploads: boolean; +} + +/** Avoid a repeated R2 head() within a warm isolate. Table paths are + * versioned, so etag/byteLength never change for a given key. */ +const statCache = new Map(); + +async function getFileStat( + bucket: R2Bucket, + key: string, + dev: boolean +): Promise { + const cached = statCache.get(key); + if (cached) { + return cached; + } + + let stat: FileStat | null = null; + if (!dev) { + const head = await bucket.head(key); + if (head) { + stat = { + byteLength: head.size, + etag: head.httpEtag, + usePublicUploads: false, + }; + } + } + if (!stat) { + const probe = await probePublicUploads(key); + if (probe) { + stat = { ...probe, usePublicUploads: true }; + } + } + if (stat) { + if (statCache.size >= 500) { + statCache.clear(); + } + statCache.set(key, stat); + } + return stat; +} + +async function probePublicUploads( + key: string +): Promise<{ byteLength: number; etag: string } | null> { + const probe = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`, { + headers: { Range: "bytes=0-0" }, + }); + if (!probe.ok) { + return null; + } + const contentRange = probe.headers.get("content-range") || ""; + const byteLength = Number(contentRange.split("/")[1] || 0); + const etag = probe.headers.get("etag") || ""; + if (!byteLength) { + return null; + } + return { byteLength, etag }; +} + +async function fetchPublicUploadsRange( + key: string, + start: number, + rangeEnd: number +): Promise { + const res = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`, { + headers: { Range: `bytes=${start}-${rangeEnd - 1}` }, + }); + if (!res.ok) { + throw new Error( + `Range request for ${key} failed with status ${res.status}` + ); + } + return await res.arrayBuffer(); +} + +async function fetchPublicUploadsObject( + key: string +): Promise { + const res = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`); + if (!res.ok) { + return null; + } + return await res.arrayBuffer(); +} + +export interface R2FileSource { + buffer: AsyncBuffer; + byteLength: number; + etag: string; +} + +export interface OpenFileOptions { + bucket: R2Bucket; + key: string; + /** When true, fetch from uploads.seasketch.org instead of the R2 binding. */ + dev: boolean; +} + +/** + * Opens a parquet file as a hyparquet AsyncBuffer. Byte-range reads are + * block-aligned and cached in isolate memory (keyed by etag), so warm + * isolates serve repeat queries without contacting R2. + */ +export async function openR2File( + options: OpenFileOptions +): Promise { + const { bucket, key, dev } = options; + + const stat = await getFileStat(bucket, key, dev); + if (!stat) { + return null; + } + const { byteLength, etag, usePublicUploads } = stat; + + const slice = createBlockReader({ + byteLength, + cacheId: `${key}@${etag}`, + memory: blockMemory, + fetchRange: async (start, end) => { + if (usePublicUploads) { + return fetchPublicUploadsRange(key, start, end); + } + const body = await bucket.get(key, { + range: { offset: start, length: end - start }, + }); + if (!body) { + throw new Error(`Range request to R2 for ${key} returned no body`); + } + return await body.arrayBuffer(); + }, + }); + + const buffer = cachedAsyncBuffer({ byteLength, slice }); + return { buffer, byteLength, etag }; +} + +/** Fetches a whole small object from R2, e.g. column-stats.json. */ +export async function getR2Object( + options: Pick +): Promise { + const { bucket, key, dev } = options; + if (dev) { + return fetchPublicUploadsObject(key); + } + const body = await bucket.get(key); + if (body) { + return await body.arrayBuffer(); + } + return fetchPublicUploadsObject(key); +} diff --git a/packages/data-tables-worker/src/engine/blockReader.ts b/packages/data-tables-worker/src/engine/blockReader.ts new file mode 100644 index 000000000..065ffdadd --- /dev/null +++ b/packages/data-tables-worker/src/engine/blockReader.ts @@ -0,0 +1,139 @@ +/** + * Block-aligned range reader with an isolate-global in-memory cache. + * + * Parquet reads many small, overlapping byte ranges. Rounding reads up to + * fixed-size blocks and caching those blocks in isolate memory means a second + * query against the same table (even with different filters) reuses raw bytes + * without another R2 round trip, as long as the Worker isolate is still warm. + */ + +export const DEFAULT_BLOCK_SIZE = 512 * 1024; + +/** Simple LRU keyed by string with a total-bytes budget. */ +export class ByteBudgetCache { + private map = new Map(); + private bytes = 0; + + constructor(private maxBytes: number) {} + + get(key: string): T | undefined { + const entry = this.map.get(key); + if (entry !== undefined) { + this.map.delete(key); + this.map.set(key, entry); + } + return entry?.value; + } + + set(key: string, value: T, bytes?: number): void { + const size = bytes ?? (value as unknown as ArrayBuffer).byteLength; + const existing = this.map.get(key); + if (existing) { + this.bytes -= existing.bytes; + this.map.delete(key); + } + this.map.set(key, { value, bytes: size }); + this.bytes += size; + for (const [oldKey, oldEntry] of this.map) { + if (this.bytes <= this.maxBytes) { + break; + } + this.map.delete(oldKey); + this.bytes -= oldEntry.bytes; + } + } + + get totalBytes(): number { + return this.bytes; + } +} + +/** Groups sorted block indices into contiguous [first, last] runs. */ +export function coalesceRuns(indices: number[]): Array<[number, number]> { + const runs: Array<[number, number]> = []; + for (const index of indices) { + const last = runs[runs.length - 1]; + if (last && index === last[1] + 1) { + last[1] = index; + } else { + runs.push([index, index]); + } + } + return runs; +} + +export interface BlockReaderOptions { + byteLength: number; + blockSize?: number; + /** Unique per file version (e.g. `${key}@${etag}`). */ + cacheId: string; + memory: ByteBudgetCache; + fetchRange(start: number, end: number): Promise; +} + +export function createBlockReader(options: BlockReaderOptions) { + const { + byteLength, + blockSize = DEFAULT_BLOCK_SIZE, + cacheId, + memory, + fetchRange, + } = options; + + const memoryKey = (index: number) => `${cacheId}#${blockSize}#${index}`; + + return async (start: number, end?: number): Promise => { + const rangeEnd = Math.min(end === undefined ? byteLength : end, byteLength); + if (rangeEnd <= start) { + return new ArrayBuffer(0); + } + + const firstBlock = Math.floor(start / blockSize); + const lastBlock = Math.floor((rangeEnd - 1) / blockSize); + const blocks = new Map(); + let missing: number[] = []; + + for (let i = firstBlock; i <= lastBlock; i++) { + const cached = memory.get(memoryKey(i)); + if (cached) { + blocks.set(i, cached); + } else { + missing.push(i); + } + } + + if (missing.length > 0) { + await Promise.all( + coalesceRuns(missing).map(async ([runFirst, runLast]) => { + const runStart = runFirst * blockSize; + const runEnd = Math.min((runLast + 1) * blockSize, byteLength); + const data = await fetchRange(runStart, runEnd); + for (let i = runFirst; i <= runLast; i++) { + const offset = (i - runFirst) * blockSize; + const block = data.slice( + offset, + Math.min(offset + blockSize, data.byteLength) + ); + blocks.set(i, block); + memory.set(memoryKey(i), block); + } + }) + ); + } + + const out = new Uint8Array(rangeEnd - start); + for (let i = firstBlock; i <= lastBlock; i++) { + const block = blocks.get(i)!; + const blockStart = i * blockSize; + const from = Math.max(start, blockStart); + const to = Math.min(rangeEnd, blockStart + block.byteLength); + if (to > from) { + out.set( + new Uint8Array(block, from - blockStart, to - from), + from - start + ); + } + } + return out.buffer; + }; +} diff --git a/packages/data-tables-worker/src/engine/execute.ts b/packages/data-tables-worker/src/engine/execute.ts new file mode 100644 index 000000000..aadeb6bfe --- /dev/null +++ b/packages/data-tables-worker/src/engine/execute.ts @@ -0,0 +1,372 @@ +import { AsyncBuffer, FileMetaData, parquetReadObjects } from "hyparquet"; +import { parquetReadColumn } from "hyparquet/src/read.js"; +import { Aggregation, ParsedQuery, QueryError } from "../params"; +import { ByteBudgetCache } from "./blockReader"; +import { + ColumnKind, + CompiledFilter, + QueryPlan, + normalizeValue, +} from "./plan"; + +/** + * Decoded column arrays for a warm isolate. Parquet decode is CPU-heavy; + * caching by file version + column + row span lets filter sweeps (changing + * species/year against the same columns) skip decode on repeat queries. + * Identical queries should hit HTTP/Workers Cache instead and never reach here. + */ +const DECODED_COLUMN_BUDGET = 48 * 1024 * 1024; +const decodedColumns = new ByteBudgetCache(DECODED_COLUMN_BUDGET); + +function estimateDecodedBytes(data: unknown[]): number { + let bytes = 0; + for (const value of data) { + bytes += typeof value === "string" ? 16 + value.length * 2 : 16; + } + return bytes; +} + +export interface QueryResult { + /** Present for raw (non-aggregated) queries */ + rows?: Record[]; + /** Present for aggregated queries */ + groups?: Record[]; + rowsScanned: number; + rowsMatched: number; +} + +type Row = Record; +type Primitive = string | number | boolean | null; + +function matchesFilter(raw: unknown, filter: CompiledFilter): boolean { + const value = normalizeValue(raw, filter.kind); + switch (filter.op) { + case "isNull": + return value === null; + case "notNull": + return value !== null; + case "eq": + return value !== null && value === filter.value; + case "neq": + return value !== null && value !== filter.value; + case "in": + return value !== null && filter.values!.includes(value); + case "gt": + return value !== null && value > filter.value!; + case "gte": + return value !== null && value >= filter.value!; + case "lt": + return value !== null && value < filter.value!; + case "lte": + return value !== null && value <= filter.value!; + } +} + +function makePredicate(filters: CompiledFilter[]): (row: Row) => boolean { + if (filters.length === 0) { + return () => true; + } + return (row: Row) => { + for (const filter of filters) { + if (!matchesFilter(row[filter.column], filter)) return false; + } + return true; + }; +} + +/** Converts values to JSON-serializable output (BigInt, Date handling). */ +function jsonValue(value: unknown): unknown { + if (typeof value === "bigint") { + return Number(value); + } + if (value instanceof Date) { + return value.toISOString(); + } + if (value instanceof Uint8Array) { + return new TextDecoder().decode(value); + } + if (value === undefined) { + return null; + } + return value; +} + +function jsonRow(row: Row): Record { + const out: Record = {}; + for (const key of Object.keys(row)) { + out[key] = jsonValue(row[key]); + } + return out; +} + +interface GroupAccumulator { + keyValues: unknown[]; + rowCount: number; + valueCount: number; + sum: number; + min: Primitive; + max: Primitive; + /** buffered values for median */ + values?: number[]; +} + +function compareValues(a: unknown, b: unknown): number { + if (a === null || a === undefined) return b === null || b === undefined ? 0 : 1; + if (b === null || b === undefined) return -1; + if (typeof a === "number" && typeof b === "number") return a - b; + return String(a) < String(b) ? -1 : String(a) > String(b) ? 1 : 0; +} + +function median(values: number[]): number | null { + if (values.length === 0) return null; + const sorted = [...values].sort((a, b) => a - b); + const mid = Math.floor(sorted.length / 2); + return sorted.length % 2 === 1 + ? sorted[mid] + : (sorted[mid - 1] + sorted[mid]) / 2; +} + +function sortAndPage>( + items: T[], + orderBy: ParsedQuery["orderBy"], + offset: number, + limit: number | null, + validKeys: (key: string) => boolean +): T[] { + if (orderBy) { + if (!validKeys(orderBy.key)) { + throw new QueryError( + `orderBy key "${orderBy.key}" is not present in the output.` + ); + } + const dir = orderBy.direction === "desc" ? -1 : 1; + items.sort((a, b) => dir * compareValues(a[orderBy.key], b[orderBy.key])); + } + return limit === null + ? items.slice(offset) + : items.slice(offset, offset + limit); +} + +export async function executeQuery(options: { + file: AsyncBuffer; + metadata: FileMetaData; + query: ParsedQuery; + plan: QueryPlan; + /** Unique per file version (e.g. the object etag). Enables the decoded + * column cache; omit for one-shot reads. */ + cacheKey?: string; +}): Promise { + const { file, metadata, query, plan, cacheKey } = options; + const predicate = makePredicate(plan.filters); + + if (query.ops.length === 0) { + return await executeRawQuery(options, predicate); + } + + const aggColumn = query.column; + const aggKind: ColumnKind | undefined = aggColumn + ? plan.columns.get(aggColumn)?.kind + : undefined; + const needsMedian = query.ops.includes("median"); + const groups = new Map(); + let rowsScanned = 0; + let rowsMatched = 0; + + // Columnar execution: evaluate filters against just the filter columns to + // produce matched row indices, then read the remaining columns only for + // spans with matches. Avoids materializing an object per scanned row. + const readColumn = async ( + name: string, + span: { rowStart: number; rowEnd: number } + ): Promise => { + const key = cacheKey + ? `${cacheKey}#${name}#${span.rowStart}-${span.rowEnd}` + : null; + if (key) { + const cached = decodedColumns.get(key); + if (cached) return cached; + } + const data = (await parquetReadColumn({ + file, + metadata, + columns: [name], + rowStart: span.rowStart, + rowEnd: span.rowEnd, + })) as unknown[]; + if (key) { + decodedColumns.set(key, data, estimateDecodedBytes(data)); + } + return data; + }; + + for (const span of plan.spans) { + const spanRows = span.rowEnd - span.rowStart; + rowsScanned += spanRows; + + const filterColumns = new Map(); + await Promise.all( + [...new Set(plan.filters.map((f) => f.column))].map(async (name) => { + filterColumns.set(name, await readColumn(name, span)); + }) + ); + + const matched: number[] = []; + for (let i = 0; i < spanRows; i++) { + let ok = true; + for (const filter of plan.filters) { + if (!matchesFilter(filterColumns.get(filter.column)![i], filter)) { + ok = false; + break; + } + } + if (ok) matched.push(i); + } + rowsMatched += matched.length; + if (matched.length === 0) continue; + + const otherColumns = new Set(query.groupBy); + if (aggColumn) otherColumns.add(aggColumn); + const columnData = new Map(filterColumns); + await Promise.all( + [...otherColumns] + .filter((name) => !columnData.has(name)) + .map(async (name) => { + columnData.set(name, await readColumn(name, span)); + }) + ); + + const groupByData = query.groupBy.map((col) => columnData.get(col)!); + const aggData = aggColumn ? columnData.get(aggColumn)! : null; + + for (const i of matched) { + const keyValues = groupByData.map((data) => jsonValue(data[i])); + const key = JSON.stringify(keyValues); + let group = groups.get(key); + if (!group) { + group = { + keyValues, + rowCount: 0, + valueCount: 0, + sum: 0, + min: null, + max: null, + values: needsMedian ? [] : undefined, + }; + groups.set(key, group); + } + group.rowCount++; + + if (aggData) { + const value = normalizeValue(aggData[i], aggKind || "string"); + if (value !== null) { + group.valueCount++; + if (typeof value === "number") { + group.sum += value; + group.values?.push(value); + } + if (group.min === null || compareValues(value, group.min) < 0) { + group.min = value; + } + if (group.max === null || compareValues(value, group.max) > 0) { + group.max = value; + } + } + } + } + } + + const output: Record[] = []; + for (const group of groups.values()) { + const entry: Record = {}; + query.groupBy.forEach((col, i) => { + entry[col] = group.keyValues[i]; + }); + for (const op of query.ops) { + entry[op] = aggregateValue(op, group, aggColumn !== null); + } + output.push(entry); + } + + const validKeys = (key: string) => + query.groupBy.includes(key) || (query.ops as string[]).includes(key); + const paged = sortAndPage( + output, + query.orderBy, + query.offset, + query.limit, + validKeys + ); + + return { groups: paged, rowsScanned, rowsMatched }; +} + +function aggregateValue( + op: Aggregation, + group: GroupAccumulator, + hasColumn: boolean +): unknown { + switch (op) { + case "count": + // With an aggregation column, count non-null values (like SQL + // COUNT(col)); otherwise count matching rows (COUNT(*)). + return hasColumn ? group.valueCount : group.rowCount; + case "sum": + return group.valueCount > 0 ? group.sum : null; + case "mean": + return group.valueCount > 0 ? group.sum / group.valueCount : null; + case "min": + return group.min; + case "max": + return group.max; + case "median": + return median(group.values || []); + } +} + +async function executeRawQuery( + options: { + file: AsyncBuffer; + metadata: FileMetaData; + query: ParsedQuery; + plan: QueryPlan; + }, + predicate: (row: Row) => boolean +): Promise { + const { file, metadata, query, plan } = options; + const matched: Record[] = []; + let rowsScanned = 0; + let rowsMatched = 0; + // Without an orderBy we can stop reading as soon as the page is filled. + const target = query.orderBy + ? Infinity + : query.offset + (query.limit ?? Infinity); + + for (const span of plan.spans) { + const rows = (await parquetReadObjects({ + file, + metadata, + columns: plan.neededColumns, + rowStart: span.rowStart, + rowEnd: span.rowEnd, + })) as Row[]; + rowsScanned += rows.length; + for (const row of rows) { + if (!predicate(row)) continue; + rowsMatched++; + if (matched.length < target) { + matched.push(jsonRow(row)); + } + } + if (matched.length >= target) break; + } + + const columnNames = new Set(plan.columns.keys()); + const paged = sortAndPage( + matched, + query.orderBy, + query.offset, + query.limit, + (key) => columnNames.has(key) + ); + return { rows: paged, rowsScanned, rowsMatched }; +} diff --git a/packages/data-tables-worker/src/engine/plan.ts b/packages/data-tables-worker/src/engine/plan.ts new file mode 100644 index 000000000..7f1ce3989 --- /dev/null +++ b/packages/data-tables-worker/src/engine/plan.ts @@ -0,0 +1,404 @@ +import { AsyncBuffer, FileMetaData, SchemaElement, parquetSchema } from "hyparquet"; +import { + hashParquetValue, + readBloomFilter, + sbbfContains, +} from "hyparquet/src/bloom.js"; +import { ParsedQuery, QueryError, RawFilter } from "../params"; + +export type ColumnKind = "string" | "number" | "boolean" | "timestamp"; + +export interface ColumnInfo { + name: string; + kind: ColumnKind; +} + +/** A filter with its value(s) coerced to the column's type. */ +export interface CompiledFilter extends Omit { + kind: ColumnKind; + value?: string | number | boolean; + values?: (string | number | boolean)[]; +} + +export interface ReadSpan { + /** Global row index (inclusive) */ + rowStart: number; + /** Global row index (exclusive) */ + rowEnd: number; +} + +export interface QueryPlan { + columns: Map; + filters: CompiledFilter[]; + /** Columns that must be read from the parquet file. undefined = all. */ + neededColumns: string[] | undefined; + spans: ReadSpan[]; + rowGroupsTotal: number; + rowGroupsScanned: number; + totalRows: number; +} + +function kindForSchemaElement(element: { + type?: string; + converted_type?: string; + logical_type?: { type?: string }; +}): ColumnKind { + const logical = element.logical_type?.type; + if (logical === "STRING" || element.converted_type === "UTF8") { + return "string"; + } + if ( + logical === "DATE" || + logical === "TIMESTAMP" || + element.converted_type === "DATE" || + element.converted_type === "TIMESTAMP_MILLIS" || + element.converted_type === "TIMESTAMP_MICROS" || + element.type === "INT96" + ) { + return "timestamp"; + } + if (element.type === "BOOLEAN") { + return "boolean"; + } + if ( + element.type === "INT32" || + element.type === "INT64" || + element.type === "FLOAT" || + element.type === "DOUBLE" || + element.converted_type === "DECIMAL" + ) { + return "number"; + } + // Unrecognized physical types (nested, byte arrays without UTF8, etc.) + // are treated as strings for equality purposes. + return "string"; +} + +export function columnsFromMetadata( + metadata: FileMetaData +): Map { + const columns = new Map(); + const schema = parquetSchema(metadata); + for (const child of schema.children) { + const name = child.element.name; + columns.set(name, { name, kind: kindForSchemaElement(child.element) }); + } + return columns; +} + +function unknownColumnError( + name: string, + columns: Map +): QueryError { + return new QueryError(`Unknown column "${name}".`, 400, { + validColumns: [...columns.values()].map((c) => ({ + name: c.name, + type: c.kind, + })), + }); +} + +function coerceValue( + raw: string, + column: ColumnInfo +): string | number | boolean { + switch (column.kind) { + case "number": { + const n = Number(raw); + if (raw.trim() === "" || Number.isNaN(n)) { + throw new QueryError( + `Invalid numeric value "${raw}" for column "${column.name}".` + ); + } + return n; + } + case "boolean": { + if (raw === "true" || raw === "1") return true; + if (raw === "false" || raw === "0") return false; + throw new QueryError( + `Invalid boolean value "${raw}" for column "${column.name}". Use true or false.` + ); + } + case "timestamp": { + const t = Date.parse(raw); + if (Number.isNaN(t)) { + throw new QueryError( + `Invalid date value "${raw}" for column "${column.name}". Use an ISO 8601 date.` + ); + } + // timestamps are compared as epoch millis + return t; + } + default: + return raw; + } +} + +const COMPARISON_OPS = new Set(["gt", "gte", "lt", "lte"]); + +export function compileFilters( + filters: RawFilter[], + columns: Map +): CompiledFilter[] { + return filters.map((filter) => { + const column = columns.get(filter.column); + if (!column) { + throw unknownColumnError(filter.column, columns); + } + if ( + COMPARISON_OPS.has(filter.op) && + column.kind !== "number" && + column.kind !== "timestamp" + ) { + throw new QueryError( + `Operator "${filter.op}" is only supported for numeric or date columns; "${column.name}" is a ${column.kind} column.` + ); + } + const compiled: CompiledFilter = { + column: filter.column, + op: filter.op, + kind: column.kind, + }; + if (filter.value !== undefined) { + compiled.value = coerceValue(filter.value, column); + } + if (filter.values !== undefined) { + compiled.values = filter.values.map((v) => coerceValue(v, column)); + } + return compiled; + }); +} + +/** + * Normalizes a runtime or statistics value into something directly comparable + * with compiled filter values (number | string | boolean), or null. + */ +export function normalizeValue( + value: unknown, + kind: ColumnKind +): string | number | boolean | null { + if (value === null || value === undefined) { + return null; + } + if (typeof value === "bigint") { + return Number(value); + } + if (value instanceof Date) { + return value.getTime(); + } + if (kind === "number" && typeof value !== "number") { + const n = Number(value); + return Number.isNaN(n) ? null : n; + } + if (kind === "timestamp" && typeof value === "number") { + return value; + } + if (value instanceof Uint8Array) { + return new TextDecoder().decode(value); + } + return value as string | number | boolean; +} + +/** + * Bloom-filter pruning for eq/in filters. Statistics min/max rarely help for + * high-cardinality string columns (e.g. species codes span the alphabet in + * every row group), but split-block bloom filters written by DuckDB prove a + * value's *absence*, letting us skip whole row groups. Filters are tiny + * (tens to hundreds of bytes) and live next to the footer, so reads are + * served from the cached tail blocks. + * + * Returns false if a bloom filter proves the row group cannot match. + */ +async function rowGroupPassesBloomFilters( + file: AsyncBuffer, + rowGroup: FileMetaData["row_groups"][number], + filters: CompiledFilter[], + schemaElements: Map +): Promise { + for (const filter of filters) { + if (filter.op !== "eq" && filter.op !== "in") continue; + const element = schemaElements.get(filter.column); + if (!element) continue; + const meta = rowGroup.columns.find( + (c) => c.meta_data?.path_in_schema.join(".") === filter.column + )?.meta_data; + if (!meta?.bloom_filter_offset || !meta.bloom_filter_length) continue; + + const values = filter.op === "eq" ? [filter.value!] : filter.values!; + const hashes = values.map((v) => hashParquetValue(v, element)); + // undefined = ambiguous type mapping; the bloom filter can't help. + if (hashes.some((h) => h === undefined)) continue; + + const start = Number(meta.bloom_filter_offset); + const buffer = await file.slice(start, start + meta.bloom_filter_length); + const bloom = readBloomFilter({ view: new DataView(buffer), offset: 0 }); + if (!bloom) continue; + if (hashes.every((h) => !sbbfContains(bloom.blocks, h!))) { + return false; + } + } + return true; +} + +/** + * Tests whether a row group could possibly contain rows matching the filter, + * based on column chunk statistics. Conservative: returns true when unsure. + */ +function rowGroupMayMatch( + filter: CompiledFilter, + stats: + | { + min_value?: unknown; + max_value?: unknown; + null_count?: bigint | number; + } + | undefined, + rowCount: number +): boolean { + if (!stats) return true; + const nullCount = + stats.null_count === undefined ? undefined : Number(stats.null_count); + + if (filter.op === "isNull") { + return nullCount === undefined || nullCount > 0; + } + if (filter.op === "notNull") { + return nullCount === undefined || nullCount < rowCount; + } + + const min = normalizeValue(stats.min_value, filter.kind); + const max = normalizeValue(stats.max_value, filter.kind); + if (min === null || max === null) return true; + + switch (filter.op) { + case "eq": + return filter.value! >= min && filter.value! <= max; + case "in": + return filter.values!.some((v) => v >= min && v <= max); + case "gt": + return max > filter.value!; + case "gte": + return max >= filter.value!; + case "lt": + return min < filter.value!; + case "lte": + return min <= filter.value!; + default: + // neq can only be pruned when min === max === value; rarely useful + return !( + filter.op === "neq" && + min === max && + min === filter.value + ); + } +} + +export async function planQuery( + metadata: FileMetaData, + query: ParsedQuery, + /** When provided, bloom filters are consulted to prune row groups that + * pass the min/max statistics check. */ + file?: AsyncBuffer +): Promise { + const columns = columnsFromMetadata(metadata); + + // Validate built-in column references + for (const name of query.groupBy) { + if (!columns.has(name)) { + throw unknownColumnError(name, columns); + } + } + if (query.column !== null) { + if (!columns.has(query.column)) { + throw unknownColumnError(query.column, columns); + } + const kind = columns.get(query.column)!.kind; + const numericOps = query.ops.filter( + (op) => op !== "count" && op !== "min" && op !== "max" + ); + if (numericOps.length > 0 && kind !== "number" && kind !== "timestamp") { + throw new QueryError( + `Aggregations ${numericOps.join(", ")} require a numeric column; "${ + query.column + }" is a ${kind} column.` + ); + } + } + + const filters = compileFilters(query.filters, columns); + + // Determine which columns need to be read + let neededColumns: string[] | undefined; + if (query.ops.length > 0) { + const needed = new Set(query.groupBy); + if (query.column) needed.add(query.column); + for (const f of filters) needed.add(f.column); + neededColumns = [...needed]; + } else { + // raw row output returns all columns + neededColumns = undefined; + } + + // Row group pruning, first via column chunk statistics (free -- already in + // the footer), then via bloom filters for surviving row groups. + const statsPass = metadata.row_groups.map((rowGroup) => { + const numRows = Number(rowGroup.num_rows); + if (numRows === 0) return false; + for (const filter of filters) { + const chunk = rowGroup.columns.find( + (c) => c.meta_data?.path_in_schema.join(".") === filter.column + ); + if (!chunk?.meta_data) continue; + if (!rowGroupMayMatch(filter, chunk.meta_data.statistics, numRows)) { + return false; + } + } + return true; + }); + + let mayMatch = statsPass; + const hasBloomEligibleFilter = filters.some( + (f) => f.op === "eq" || f.op === "in" + ); + if (file && hasBloomEligibleFilter && statsPass.some((p) => p)) { + const schemaElements = new Map(); + for (const child of parquetSchema(metadata).children) { + schemaElements.set(child.element.name, child.element); + } + mayMatch = await Promise.all( + metadata.row_groups.map((rowGroup, i) => + statsPass[i] + ? rowGroupPassesBloomFilters(file, rowGroup, filters, schemaElements) + : Promise.resolve(false) + ) + ); + } + + const spans: ReadSpan[] = []; + let rowStart = 0; + let scanned = 0; + metadata.row_groups.forEach((rowGroup, i) => { + const numRows = Number(rowGroup.num_rows); + if (mayMatch[i]) { + scanned++; + const last = spans[spans.length - 1]; + if (last && last.rowEnd === rowStart) { + // merge contiguous row groups into a single read + last.rowEnd = rowStart + numRows; + } else { + spans.push({ rowStart, rowEnd: rowStart + numRows }); + } + } + rowStart += numRows; + }); + + return { + columns, + filters, + neededColumns, + spans, + rowGroupsTotal: metadata.row_groups.length, + rowGroupsScanned: scanned, + totalRows: Number(metadata.num_rows), + }; +} diff --git a/packages/data-tables-worker/src/index.ts b/packages/data-tables-worker/src/index.ts new file mode 100644 index 000000000..eeb193b1f --- /dev/null +++ b/packages/data-tables-worker/src/index.ts @@ -0,0 +1,298 @@ +import { Context, Hono } from "hono"; +import { cors } from "hono/cors"; +import { FileMetaData, parquetMetadataAsync } from "hyparquet"; +import { + canonicalQueryString, + parseQueryParams, + QueryError, +} from "./params"; +import { getR2Object, openR2File } from "./engine/asyncBuffer"; +import { planQuery } from "./engine/plan"; +import { executeQuery } from "./engine/execute"; +import { queryUiHtml } from "./ui/html"; + +/** + * data-tables-worker + * + * Serves cacheable GET queries over parquet data tables stored in R2, e.g. + * + * GET /projects/{slug}/public/dataTables/{uuid}/query + * ?groupBy=site&op=mean&column=count&q.year=2018&q.classcode=PYCHEL + * + * Content negotiation: text/html requests receive an interactive query UI; + * application/json (or f=json) receives query results. + */ + +type Bindings = { Bindings: Env; Variables: { requestStart: number } }; + +const app = new Hono(); + +/** Browser cache lifetime for query responses */ +const BROWSER_MAX_AGE = 86400; +/** CDN/edge cache lifetime. Table paths are versioned (a replacement gets a + * new uploadId directory) so long edge lifetimes are safe. Workers Cache + * (`cache.enabled` in wrangler.jsonc) serves identical GET requests from the + * edge without invoking this Worker. */ +const EDGE_MAX_AGE = 604800; + +// Registered before CORS so it captures time spent in Hono's own routing and +// middleware, not just our handler logic. +app.use("*", async (c, next) => { + c.set("requestStart", Date.now()); + await next(); +}); + +app.use( + "*", + cors({ + origin: "*", + allowMethods: ["GET", "OPTIONS"], + maxAge: 86400, + }) +); + +function isDev(env: Env): boolean { + return !!env.DEV; +} + +/** Parsed parquet footers are small (KBs) and immutable per etag, so keep + * them in isolate memory across requests. */ +const MAX_METADATA_ENTRIES = 100; +const metadataCache = new Map(); + +async function getParquetMetadata(source: { + buffer: Parameters[0]; + etag: string; +}): Promise { + const cached = metadataCache.get(source.etag); + if (cached) { + return cached; + } + const metadata = await parquetMetadataAsync(source.buffer); + if (metadataCache.size >= MAX_METADATA_ENTRIES) { + const oldest = metadataCache.keys().next().value; + if (oldest !== undefined) { + metadataCache.delete(oldest); + } + } + metadataCache.set(source.etag, metadata); + return metadata; +} + +async function makeETag(objectEtag: string, canonicalQuery: string) { + const data = new TextEncoder().encode(`${objectEtag}|${canonicalQuery}`); + const digest = await crypto.subtle.digest("SHA-1", data); + const hex = [...new Uint8Array(digest)] + .map((b) => b.toString(16).padStart(2, "0")) + .join(""); + return `"${hex}"`; +} + +/** + * Collects named phase durations and renders them as a `Server-Timing` + * header so the browser's network panel can show where server time actually + * goes -- including phases before/outside the JSON body's own `timing` + * block (cache lookups, Hono/CORS overhead, isolate cold-start work). + */ +class Timer { + private marks: Array<[string, number]> = []; + private last: number; + + constructor(start: number) { + this.last = start; + } + + mark(name: string): void { + const now = Date.now(); + this.marks.push([name, now - this.last]); + this.last = now; + } + + header(): string { + return this.marks.map(([name, dur]) => `${name};dur=${dur}`).join(", "); + } +} + +function errorResponse(error: unknown): Response { + if (error instanceof QueryError) { + return Response.json( + { error: error.message, ...error.details }, + { status: error.status } + ); + } + console.error( + JSON.stringify({ + message: "query execution failed", + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + }) + ); + return Response.json({ error: "Internal server error" }, { status: 500 }); +} + +app.get("*", async (c) => { + const url = new URL(c.req.url); + const pathname = url.pathname; + + if (pathname.endsWith("/query")) { + const tablePath = pathname.slice(1, -"/query".length); + if (!tablePath) { + return Response.json({ error: "Missing table path" }, { status: 404 }); + } + return handleQuery(c, tablePath, url); + } + + if (pathname.endsWith("/column-stats.json")) { + return handleColumnStats(c, pathname.slice(1)); + } + + return Response.json( + { + error: "Not found. Query endpoint is {tablePath}/query", + }, + { status: 404 } + ); +}); + +type AppContext = Context; + +async function handleColumnStats( + c: AppContext, + key: string +): Promise { + const dev = isDev(c.env); + const data = await getR2Object({ bucket: c.env.SSN_TILES, key, dev }); + if (!data) { + return Response.json({ error: "Not found" }, { status: 404 }); + } + return new Response(data, { + headers: { + "Content-Type": "application/json", + "Cache-Control": dev + ? "no-store" + : `public, max-age=${BROWSER_MAX_AGE}, s-maxage=${EDGE_MAX_AGE}, immutable`, + }, + }); +} + +async function handleQuery( + c: AppContext, + tablePath: string, + url: URL +): Promise { + const dev = isDev(c.env); + const timer = new Timer(c.get("requestStart")); + + let query; + try { + query = parseQueryParams(url.searchParams); + } catch (error) { + return errorResponse(error); + } + timer.mark("parse"); + + // Content negotiation: explicit f param wins, otherwise Accept header. + const accept = c.req.header("accept") || ""; + const wantsHtml = + query.format === "html" || + (query.format === null && accept.includes("text/html")); + if (wantsHtml) { + return new Response(queryUiHtml(tablePath), { + headers: { + "Content-Type": "text/html; charset=utf-8", + "Cache-Control": dev ? "no-store" : "public, max-age=300", + }, + }); + } + + const canonicalQuery = canonicalQueryString(url.searchParams); + const started = Date.now(); + try { + const source = await openR2File({ + bucket: c.env.SSN_TILES, + key: `${tablePath}/data.parquet`, + dev, + }); + timer.mark("open"); + if (!source) { + throw new QueryError( + `No data table found at "${tablePath}/data.parquet".`, + 404 + ); + } + + const metadata = await getParquetMetadata(source); + timer.mark("metadata"); + const planned = Date.now(); + const plan = await planQuery(metadata, query, source.buffer); + timer.mark("plan"); + const result = await executeQuery({ + file: source.buffer, + metadata, + query, + plan, + cacheKey: `${tablePath}@${source.etag}`, + }); + timer.mark("execute"); + const finished = Date.now(); + + const body = { + table: tablePath, + totalRows: plan.totalRows, + rowsScanned: result.rowsScanned, + rowsMatched: result.rowsMatched, + rowGroups: { + total: plan.rowGroupsTotal, + scanned: plan.rowGroupsScanned, + }, + timing: { + metadataMs: planned - started, + executeMs: finished - planned, + totalMs: finished - started, + }, + ...(result.groups !== undefined + ? { groups: result.groups } + : { rows: result.rows }), + }; + timer.mark("serialize"); + + const etag = await makeETag(source.etag, canonicalQuery); + return new Response(JSON.stringify(body), { + headers: { + "Content-Type": "application/json", + ETag: etag, + "Server-Timing": timer.header(), + Vary: "Accept", + "Cache-Control": dev + ? "no-store" + : `public, max-age=${BROWSER_MAX_AGE}, s-maxage=${EDGE_MAX_AGE}, immutable`, + }, + }); + } catch (error) { + return errorResponse(error); + } +} + +/** + * Wraps Hono's own fetch entirely, timing it from *outside* any of our + * routing/middleware. Compare `X-Worker-Wall-Ms` against the browser's TTFB: + * if they're close, the missing time is inside our JS (a hidden await); + * if this is small while TTFB is large, the gap is in Cloudflare's edge + * dispatch/network layer, outside anything our code controls. + */ +export default { + async fetch( + request: Request, + env: Env, + ctx: ExecutionContext + ): Promise { + const t0 = Date.now(); + const response = await app.fetch(request, env, ctx); + const headers = new Headers(response.headers); + headers.set("X-Worker-Wall-Ms", String(Date.now() - t0)); + return new Response(response.body, { + status: response.status, + headers, + }); + }, +}; diff --git a/packages/data-tables-worker/src/params.ts b/packages/data-tables-worker/src/params.ts new file mode 100644 index 000000000..615e44c34 --- /dev/null +++ b/packages/data-tables-worker/src/params.ts @@ -0,0 +1,263 @@ +/** + * Parses query string parameters for the /query endpoint. + * + * Built-in parameters use bare names (f, groupBy, op, column, limit, offset, + * orderBy). Column filters use a `q.` prefix with PostgREST-style operators + * embedded in the value: + * + * q.year=2018 equality (bare value) + * q.year=eq.2018 equality (explicit) + * q.count=gte.5 gt / gte / lt / lte / neq + * q.observer=in.(Chad Burt,Lyal B) IN list ("quoted" items may contain commas) + * q.size=is.null / q.size=not.null null tests + * + * Repeating the same q. param ANDs the conditions together. + */ + +export type OutputFormat = "json" | "html"; + +export const AGGREGATIONS = [ + "count", + "sum", + "mean", + "min", + "max", + "median", +] as const; +export type Aggregation = (typeof AGGREGATIONS)[number]; + +export type FilterOperator = + | "eq" + | "neq" + | "gt" + | "gte" + | "lt" + | "lte" + | "in" + | "isNull" + | "notNull"; + +/** A filter as parsed from the query string, before schema-aware coercion. */ +export interface RawFilter { + column: string; + op: FilterOperator; + /** Raw string value for eq/neq/gt/gte/lt/lte. */ + value?: string; + /** Raw string values for `in`. */ + values?: string[]; +} + +export interface ParsedQuery { + /** null means "negotiate via the Accept header" */ + format: OutputFormat | null; + groupBy: string[]; + ops: Aggregation[]; + /** Column to aggregate. Required for every op except count. */ + column: string | null; + limit: number | null; + offset: number; + orderBy: { key: string; direction: "asc" | "desc" } | null; + filters: RawFilter[]; +} + +export class QueryError extends Error { + status: number; + details?: Record; + constructor( + message: string, + status = 400, + details?: Record + ) { + super(message); + this.status = status; + this.details = details; + } +} + + +const COMPARISON_PREFIX = /^(eq|neq|gt|gte|lt|lte)\.([\s\S]*)$/; + +/** + * Parses the inner portion of an `in.(...)` list. Items may be double-quoted + * to include commas or leading/trailing whitespace, e.g. + * `in.("Smith, John",UCSB)`. + */ +export function parseInList(inner: string): string[] { + const values: string[] = []; + let i = 0; + while (i < inner.length) { + // skip whitespace between items + while (i < inner.length && inner[i] === " ") i++; + if (inner[i] === '"') { + // quoted item; "" escapes a literal quote + let value = ""; + i++; + while (i < inner.length) { + if (inner[i] === '"' && inner[i + 1] === '"') { + value += '"'; + i += 2; + } else if (inner[i] === '"') { + i++; + break; + } else { + value += inner[i]; + i++; + } + } + values.push(value); + // skip to next comma + while (i < inner.length && inner[i] !== ",") i++; + i++; + } else { + let end = inner.indexOf(",", i); + if (end === -1) end = inner.length; + values.push(inner.slice(i, end).trim()); + i = end + 1; + } + } + return values.filter((v) => v.length > 0); +} + +function parseFilterParam(column: string, raw: string): RawFilter { + if (raw === "is.null") { + return { column, op: "isNull" }; + } + if (raw === "not.null") { + return { column, op: "notNull" }; + } + if (raw.startsWith("in.(") && raw.endsWith(")")) { + const values = parseInList(raw.slice(4, -1)); + if (values.length === 0) { + throw new QueryError( + `Empty in.() list for column "${column}". Provide at least one value.` + ); + } + return { column, op: "in", values }; + } + const match = COMPARISON_PREFIX.exec(raw); + if (match) { + return { + column, + op: match[1] as FilterOperator, + value: match[2], + }; + } + // bare value = equality + return { column, op: "eq", value: raw }; +} + +export function parseQueryParams(searchParams: URLSearchParams): ParsedQuery { + const filters: RawFilter[] = []; + for (const [key, value] of searchParams.entries()) { + if (key.startsWith("q.")) { + const column = key.slice(2); + if (!column) { + throw new QueryError(`Invalid filter parameter "${key}".`); + } + filters.push(parseFilterParam(column, value)); + } + } + + let format: OutputFormat | null = null; + const f = searchParams.get("f"); + if (f !== null) { + if (f !== "json" && f !== "html") { + throw new QueryError(`Invalid format "${f}". Use f=json or f=html.`); + } + format = f; + } + + const groupBy = (searchParams.get("groupBy") || "") + .split(",") + .map((s) => s.trim()) + .filter((s) => s.length > 0); + + const ops: Aggregation[] = []; + const opParam = searchParams.get("op"); + if (opParam !== null) { + for (const op of opParam.split(",").map((s) => s.trim())) { + if (!op) continue; + if (!(AGGREGATIONS as readonly string[]).includes(op)) { + throw new QueryError( + `Unknown aggregation "${op}". Supported: ${AGGREGATIONS.join(", ")}.` + ); + } + if (!ops.includes(op as Aggregation)) { + ops.push(op as Aggregation); + } + } + } + + const column = searchParams.get("column"); + const needsColumn = ops.filter((op) => op !== "count"); + if (needsColumn.length > 0 && !column) { + throw new QueryError( + `The "column" parameter is required for op=${needsColumn.join(",")}.` + ); + } + if (groupBy.length > 0 && ops.length === 0) { + throw new QueryError( + `groupBy requires at least one aggregation via the "op" parameter.` + ); + } + + let limit: number | null = null; + const limitParam = searchParams.get("limit"); + if (limitParam !== null) { + if (limitParam.trim() === "") { + limit = null; + } else { + limit = Number(limitParam); + if (!Number.isInteger(limit) || limit < 1) { + throw new QueryError( + `Invalid limit "${limitParam}". Must be a positive integer, or omit for no limit.` + ); + } + } + } + + let offset = 0; + const offsetParam = searchParams.get("offset"); + if (offsetParam !== null) { + offset = Number(offsetParam); + if (!Number.isInteger(offset) || offset < 0) { + throw new QueryError( + `Invalid offset "${offsetParam}". Must be a non-negative integer.` + ); + } + } + + let orderBy: ParsedQuery["orderBy"] = null; + const orderByParam = searchParams.get("orderBy"); + if (orderByParam !== null && orderByParam.trim().length > 0) { + const [key, direction = "asc"] = orderByParam.split(":"); + if (direction !== "asc" && direction !== "desc") { + throw new QueryError( + `Invalid orderBy direction "${direction}". Use :asc or :desc.` + ); + } + orderBy = { key: key.trim(), direction }; + } + + return { format, groupBy, ops, column, limit, offset, orderBy, filters }; +} + +/** + * Produces a canonical query string so that logically identical requests + * (parameter order, whitespace) share a single cache entry. + */ +export function canonicalQueryString(searchParams: URLSearchParams): string { + const entries: [string, string][] = []; + for (const [key, value] of searchParams.entries()) { + if (key === "f") continue; // format normalized separately + entries.push([key, value]); + } + entries.sort((a, b) => + a[0] === b[0] ? a[1].localeCompare(b[1]) : a[0].localeCompare(b[0]) + ); + const params = new URLSearchParams(); + for (const [key, value] of entries) { + params.append(key, value); + } + return params.toString(); +} diff --git a/packages/data-tables-worker/src/ui/html.ts b/packages/data-tables-worker/src/ui/html.ts new file mode 100644 index 000000000..d3c8c5503 --- /dev/null +++ b/packages/data-tables-worker/src/ui/html.ts @@ -0,0 +1,488 @@ +/** + * A self-contained demo UI for exercising the query engine. Served when the + * query endpoint is requested with Accept: text/html (or f=html). The page + * loads ../column-stats.json (proxied by this worker, with CDN fallback) to + * populate column pickers, then runs queries against the same endpoint with + * f=json. + */ + +function escapeHtml(text: string): string { + return text + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); +} + +export function queryUiHtml(tablePath: string): string { + const safePath = escapeHtml(tablePath); + const tablePathJs = JSON.stringify(tablePath); + return ` + + + + +Data Table Query — ${safePath} + + + +
    +

    Data Table Query

    +
    ${safePath}
    + +
    +
    +

    Filters

    + +
    +
    + +
    This form is saved in your browser and restored automatically next time you open this table.
    +
    + +
    +

    Aggregation

    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    Leave operations unchecked to fetch raw filtered rows.
    +
    + +
    +

    Output

    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + +`; +} diff --git a/packages/data-tables-worker/test/blockReader.test.ts b/packages/data-tables-worker/test/blockReader.test.ts new file mode 100644 index 000000000..95c5f80da --- /dev/null +++ b/packages/data-tables-worker/test/blockReader.test.ts @@ -0,0 +1,107 @@ +import { describe, expect, it } from "vitest"; +import { + ByteBudgetCache, + coalesceRuns, + createBlockReader, +} from "../src/engine/blockReader"; + +function makeFile(byteLength: number): Uint8Array { + const data = new Uint8Array(byteLength); + for (let i = 0; i < byteLength; i++) { + data[i] = i % 251; + } + return data; +} + +interface Harness { + read: (start: number, end?: number) => Promise; + fetches: Array<[number, number]>; + memory: ByteBudgetCache; +} + +function makeReader( + file: Uint8Array, + { blockSize = 16, memoryBudget = 1024 * 1024 } = {} +): Harness { + const fetches: Array<[number, number]> = []; + const memory = new ByteBudgetCache(memoryBudget); + const read = createBlockReader({ + byteLength: file.byteLength, + blockSize, + cacheId: "test@etag", + memory, + fetchRange: async (start, end) => { + fetches.push([start, end]); + return file.slice(start, end).buffer; + }, + }); + return { read, fetches, memory }; +} + +describe("coalesceRuns", () => { + it("groups contiguous indices into runs", () => { + expect(coalesceRuns([0, 1, 2, 5, 6, 9])).toEqual([ + [0, 2], + [5, 6], + [9, 9], + ]); + expect(coalesceRuns([])).toEqual([]); + expect(coalesceRuns([3])).toEqual([[3, 3]]); + }); +}); + +describe("ByteBudgetCache", () => { + it("evicts least recently used entries when over budget", () => { + const cache = new ByteBudgetCache(30); + cache.set("a", new ArrayBuffer(10)); + cache.set("b", new ArrayBuffer(10)); + cache.set("c", new ArrayBuffer(10)); + // Touch "a" so "b" becomes the eviction candidate. + cache.get("a"); + cache.set("d", new ArrayBuffer(10)); + expect(cache.get("a")).toBeDefined(); + expect(cache.get("b")).toBeUndefined(); + expect(cache.get("c")).toBeDefined(); + expect(cache.get("d")).toBeDefined(); + expect(cache.totalBytes).toBe(30); + }); +}); + +describe("createBlockReader", () => { + it("returns exact bytes for unaligned ranges", async () => { + const file = makeFile(100); + const { read } = makeReader(file); + const result = new Uint8Array(await read(5, 37)); + expect(result).toEqual(file.slice(5, 37)); + }); + + it("clamps to end of file and handles empty ranges", async () => { + const file = makeFile(50); + const { read } = makeReader(file); + expect(new Uint8Array(await read(40))).toEqual(file.slice(40)); + expect((await read(10, 10)).byteLength).toBe(0); + expect((await read(60, 70)).byteLength).toBe(0); + }); + + it("fetches contiguous missing blocks in a single ranged request", async () => { + const file = makeFile(100); + const { read, fetches } = makeReader(file); + await read(0, 60); // blocks 0-3 + expect(fetches).toEqual([[0, 64]]); + }); + + it("serves overlapping reads from memory without refetching", async () => { + const file = makeFile(100); + const { read, fetches } = makeReader(file); + await read(0, 40); // blocks 0-2 + await read(10, 30); // fully covered + expect(fetches).toHaveLength(1); + await read(20, 90); // needs blocks 1-5; 3-5 missing + expect(fetches).toEqual([ + [0, 48], + [48, 96], + ]); + const result = new Uint8Array(await read(20, 90)); + expect(result).toEqual(file.slice(20, 90)); + }); +}); diff --git a/packages/data-tables-worker/test/calculations.test.ts b/packages/data-tables-worker/test/calculations.test.ts new file mode 100644 index 000000000..7cf677056 --- /dev/null +++ b/packages/data-tables-worker/test/calculations.test.ts @@ -0,0 +1,486 @@ +import { beforeAll, describe, expect, it } from "vitest"; +import { + AsyncBuffer, + FileMetaData, + asyncBufferFromFile, + parquetMetadataAsync, +} from "hyparquet"; +import { parseQueryParams } from "../src/params"; +import { planQuery } from "../src/engine/plan"; +import { executeQuery, QueryResult } from "../src/engine/execute"; + +/** + * Aggregation-correctness tests for the fixture PISCO kelp-forest swath survey + * (353,253 rows, 3 row groups). These calculations drive thematic maps and + * time-series charts used in a contentious public policy process, so every + * expected value here was computed *independently* with DuckDB against the same + * data.parquet fixture (see the queries in the comment above each test), not by + * trusting the engine's own output. + * + * The two primary product use cases are exercised heavily: + * 1. Thematic map -> groupBy=site, aggregating `count` across surveys. + * 2. Site time series -> fixed site, groupBy=year, one or more classcodes. + * + * Semantics being pinned (verified to match DuckDB / SQL): + * - sum/mean/min/max/median ignore NULL `count` values. + * - `count` WITH an aggregation column = COUNT(col) (non-null values); + * WITHOUT a column = COUNT(*) (matching rows). + * - A group whose values are all NULL yields sum/mean/min/max = null and + * count(col) = 0, while still reporting rowsMatched > 0. + * - count = 0 is a real value (sum stays 0, not null). + */ + +const FIXTURE = "test/fixtures/data.parquet"; + +let file: AsyncBuffer; +let metadata: FileMetaData; + +beforeAll(async () => { + file = await asyncBufferFromFile(FIXTURE); + metadata = await parquetMetadataAsync(file); +}); + +async function run(qs: string): Promise { + const query = parseQueryParams(new URLSearchParams(qs)); + const plan = await planQuery(metadata, query, file); + return executeQuery({ file, metadata, query, plan }); +} + +/** Index aggregated groups by the value of a single groupBy column. */ +function byKey(result: QueryResult, key: string): Record { + return Object.fromEntries(result.groups!.map((g: any) => [g[key], g])); +} + +const MEAN_PRECISION = 6; // digits after the decimal point for toBeCloseTo + +// --------------------------------------------------------------------------- +// Whole-table aggregates (no filters, no groupBy) +// --------------------------------------------------------------------------- +describe("whole-table aggregates", () => { + // DuckDB: sum=11283244, min=0, max=13450, count(count)=353234, avg=31.9426895… + it("sum/min/max/mean/count over the entire count column", async () => { + const r = await run("op=sum,min,max,mean,count&column=count"); + const g = r.groups![0] as any; + expect(g.sum).toBe(11283244); + expect(g.min).toBe(0); + expect(g.max).toBe(13450); + expect(g.count).toBe(353234); // non-null values (19 rows have null count) + expect(g.mean).toBeCloseTo(31.942689548571202, MEAN_PRECISION); + expect(r.rowsScanned).toBe(353253); + expect(r.rowsMatched).toBe(353253); + }); + + // COUNT(*) counts matching rows; the 19 null-count rows are included. + it("count without a column is COUNT(*), including null-count rows", async () => { + const r = await run("op=count"); + expect(r.groups).toEqual([{ count: 353253 }]); + }); +}); + +// --------------------------------------------------------------------------- +// NULL handling edge cases +// --------------------------------------------------------------------------- +describe("null handling", () => { + // STRPURAD has 21,014 rows but 10 have a NULL count. + // DuckDB: count(count)=21004, sum=5403907, min=1, max=13450, + // avg=257.2798990668444, median=41. + it("excludes null values from sum/mean/min/max/median/count(col)", async () => { + const r = await run( + "op=sum,min,max,mean,median,count&column=count&q.classcode=STRPURAD" + ); + const g = r.groups![0] as any; + expect(r.rowsMatched).toBe(21014); // rows matched includes the 10 nulls + expect(g.count).toBe(21004); // but count(col) excludes them + expect(g.sum).toBe(5403907); + expect(g.min).toBe(1); + expect(g.max).toBe(13450); + expect(g.median).toBe(41); + expect(g.mean).toBeCloseTo(257.2798990668444, MEAN_PRECISION); + }); + + // NO_ORG is a single row with count = 0 (a real zero, not null). + // DuckDB: count=1, sum=0, min=0, max=0, avg=0. + it("treats count=0 as a real value, not null", async () => { + const r = await run( + "op=sum,min,max,mean,count&column=count&q.classcode=NO_ORG" + ); + expect(r.rowsMatched).toBe(1); + expect(r.groups).toEqual([{ sum: 0, min: 0, max: 0, mean: 0, count: 1 }]); + }); + + // STRPURAD at CASPAR_3 in 2015: 6 rows, every count NULL. + // Aggregates collapse to null; count(col)=0 while rowsMatched=6. + it("all-null group yields null aggregates but non-zero rowsMatched", async () => { + const r = await run( + "op=sum,min,max,mean,count&column=count" + + "&q.classcode=STRPURAD&q.year=2015&q.site=CASPAR_3" + ); + expect(r.rowsMatched).toBe(6); + expect(r.groups).toEqual([ + { sum: null, min: null, max: null, mean: null, count: 0 }, + ]); + }); + + // Same group, COUNT(*) still sees all 6 rows. + it("COUNT(*) counts rows even when every value is null", async () => { + const r = await run( + "op=count&q.classcode=STRPURAD&q.year=2015&q.site=CASPAR_3" + ); + expect(r.groups).toEqual([{ count: 6 }]); + }); +}); + +// --------------------------------------------------------------------------- +// Thematic map: groupBy=site (PRIMARY use case) +// --------------------------------------------------------------------------- +describe("thematic map (groupBy=site)", () => { + // MEGUND in 2004, per site. DuckDB reports 33 sites; spot-checked below. + it("aggregates count per site for one species/year", async () => { + const r = await run( + "groupBy=site&op=sum,mean,min,max,count&column=count" + + "&q.classcode=MEGUND&q.year=2004" + ); + expect(r.groups).toHaveLength(33); + expect(r.rowsMatched).toBe(126); + const s = byKey(r, "site"); + + expect(s["ROCKY_POINT_N"]).toMatchObject({ + sum: 490, + min: 3, + max: 105, + count: 11, + }); + expect(s["ROCKY_POINT_N"].mean).toBeCloseTo(44.54545454545455, MEAN_PRECISION); + + expect(s["SCI_VALLEY_CEN"]).toMatchObject({ sum: 332, count: 3 }); + expect(s["SCI_VALLEY_CEN"].mean).toBeCloseTo(110.66666666666667, MEAN_PRECISION); + + expect(s["ANACAPA_EAST_ISLE_CEN"]).toMatchObject({ + sum: 51, + min: 3, + max: 37, + mean: 17, + count: 3, + }); + + // Grand total across all site sums must equal the ungrouped sum (2031). + const total = r.groups!.reduce((acc: number, g: any) => acc + g.sum, 0); + expect(total).toBe(2031); + }); + + // STRPURAD in 2015, per site: 115 sites, mixing fully-null, partially-null, + // and single-row groups. DuckDB: rows=1139, count(count)=1129. + it("per-site aggregation with null and single-row groups", async () => { + const r = await run( + "groupBy=site&op=sum,mean,min,max,count&column=count" + + "&q.classcode=STRPURAD&q.year=2015" + ); + expect(r.groups).toHaveLength(115); + expect(r.rowsMatched).toBe(1139); + const s = byKey(r, "site"); + + // Fully-null site: aggregates null, count(col)=0. + expect(s["CASPAR_3"]).toEqual({ + site: "CASPAR_3", + sum: null, + mean: null, + min: null, + max: null, + count: 0, + }); + + // Partially-null site: 6 rows, 2 non-null counts (510, 643). + expect(s["TEN_MILE_2"]).toMatchObject({ + sum: 1153, + min: 510, + max: 643, + mean: 576.5, + count: 2, + }); + + // Single-row site. + expect(s["PYRAMID_POINT_1"]).toEqual({ + site: "PYRAMID_POINT_1", + sum: 1, + mean: 1, + min: 1, + max: 1, + count: 1, + }); + + expect(s["ANACAPA_LIGHTHOUSE_REEF_CEN"]).toMatchObject({ + sum: 6490, + min: 820, + max: 3100, + mean: 1622.5, + count: 4, + }); + + // count(col) totals across sites should equal DuckDB's 1129 non-null values. + const nonNull = r.groups!.reduce((acc: number, g: any) => acc + g.count, 0); + expect(nonNull).toBe(1129); + }); + + // Thematic maps often show the top-N sites. PISGIG across all years, + // ordered by total count desc. DuckDB top 5 verified below. + it("orders sites by summed count and paginates (top-N)", async () => { + const r = await run( + "groupBy=site&op=sum,count&column=count&q.classcode=PISGIG" + + "&orderBy=sum:desc&limit=5" + ); + expect(r.groups!.map((g: any) => [g.site, g.sum])).toEqual([ + ["SMI_HARRIS_PT_RESERVE_E", 1884], + ["HOPKINS_DC", 1882], + ["SCI_HAZARDS_CEN", 1454], + ["SCI_PAINTED_CAVE_E", 1438], + ["SCI_HAZARDS_W", 1245], + ]); + }); + + // Top-N by mean (density) rather than total, for the same MEGUND 2004 slice. + it("orders sites by mean count and paginates", async () => { + const r = await run( + "groupBy=site&op=mean,sum,count&column=count" + + "&q.classcode=MEGUND&q.year=2004&orderBy=mean:desc&limit=3" + ); + const sites = r.groups!.map((g: any) => g.site); + expect(sites).toEqual([ + "SCI_VALLEY_CEN", + "ANACAPA_EAST_ISLE_W", + "ROCKY_POINT_N", + ]); + expect((r.groups![0] as any).mean).toBeCloseTo( + 110.66666666666667, + MEAN_PRECISION + ); + expect((r.groups![1] as any).mean).toBeCloseTo(52.5, MEAN_PRECISION); + }); +}); + +// --------------------------------------------------------------------------- +// Site time series: groupBy=year at a fixed site (SECONDARY use case) +// --------------------------------------------------------------------------- +describe("site time series (groupBy=year)", () => { + // MACPYRAD (giant kelp) at HOPKINS_UC, every survey year. DuckDB: 26 years. + it("single-species yearly series at one site", async () => { + const r = await run( + "groupBy=year&op=sum,mean,min,max,count&column=count" + + "&q.classcode=MACPYRAD&q.site=HOPKINS_UC" + ); + expect(r.groups).toHaveLength(26); + const y = byKey(r, "year"); + + expect(y[1999]).toMatchObject({ sum: 74, min: 1, max: 2, count: 63 }); + expect(y[1999].mean).toBeCloseTo(1.1746031746031746, MEAN_PRECISION); + + // 2004: every observation is 1. + expect(y[2004]).toMatchObject({ sum: 27, min: 1, max: 1, mean: 1, count: 27 }); + + expect(y[2024]).toMatchObject({ sum: 84, min: 1, max: 11, count: 32 }); + expect(y[2024].mean).toBeCloseTo(2.625, MEAN_PRECISION); + }); + + // Multi-species series (in-list): purple urchin adults + recruits at + // HOPKINS_UC, 2018-2020..2022. Both classcodes fold into each year's totals. + it("multi-species yearly series at one site", async () => { + const r = await run( + "groupBy=year&op=sum,mean,min,max,count&column=count" + + "&q.classcode=in.(STRPURAD,STRPURREC)&q.site=HOPKINS_UC" + + "&q.year=gte.2018&q.year=lte.2022" + ); + expect(r.groups).toHaveLength(5); + const y = byKey(r, "year"); + + expect(y[2018]).toMatchObject({ sum: 2642, min: 1, max: 471, count: 33 }); + expect(y[2018].mean).toBeCloseTo(80.06060606060606, MEAN_PRECISION); + + // 2020 urchin bloom: STRPURAD 6260 + STRPURREC 819 = 7079. + expect(y[2020]).toMatchObject({ sum: 7079, min: 1, max: 733, count: 52 }); + expect(y[2020].mean).toBeCloseTo(136.1346153846154, MEAN_PRECISION); + + expect(y[2022]).toMatchObject({ sum: 5150, min: 3, max: 617, count: 39 }); + expect(y[2022].mean).toBeCloseTo(132.05128205128204, MEAN_PRECISION); + }); + + // Time series constrained to a temporal window via ANDed range filters. + it("yearly series within an inclusive temporal range", async () => { + const r = await run( + "groupBy=year&op=sum,mean,count&column=count" + + "&q.classcode=KELKEL&q.year=gte.2010&q.year=lte.2015" + ); + expect(r.groups).toHaveLength(6); + const y = byKey(r, "year"); + expect(y[2010]).toMatchObject({ sum: 1709, count: 248 }); + expect(y[2010].mean).toBeCloseTo(6.891129032258065, MEAN_PRECISION); + expect(y[2011]).toMatchObject({ sum: 1595, count: 290, mean: 5.5 }); + expect(y[2015]).toMatchObject({ sum: 889, count: 172 }); + expect(y[2015].mean).toBeCloseTo(5.1686046511627906, MEAN_PRECISION); + }); +}); + +// --------------------------------------------------------------------------- +// Filter operators +// --------------------------------------------------------------------------- +describe("filter operators", () => { + // in-list on the grouped column itself, aggregating per classcode. + it("in-list species, aggregated per classcode", async () => { + const r = await run( + "groupBy=classcode&op=sum,mean,count&column=count" + + "&q.classcode=in.(PYCHEL,PISGIG,PISBRE)" + ); + const c = byKey(r, "classcode"); + expect(c["PISBRE"]).toMatchObject({ sum: 13504, count: 2328 }); + expect(c["PISBRE"].mean).toBeCloseTo(5.8006872852233675, MEAN_PRECISION); + expect(c["PISGIG"]).toMatchObject({ sum: 73413, count: 10623 }); + expect(c["PISGIG"].mean).toBeCloseTo(6.910759672408924, MEAN_PRECISION); + expect(c["PYCHEL"]).toMatchObject({ sum: 9664, count: 3674 }); + expect(c["PYCHEL"].mean).toBeCloseTo(2.6303756124115405, MEAN_PRECISION); + }); + + // neq excludes both the value and nulls; campus has no nulls here. + it("neq filter", async () => { + const r = await run( + "op=sum,count&column=count&q.classcode=HALRUF&q.campus=neq.UCSC" + ); + expect(r.groups).toEqual([{ sum: 5284, count: 1317 }]); + expect(r.rowsMatched).toBe(1317); + }); + + // Exclusive gt/lt bounds: year>2010 & year<2013 selects 2011-2012 only. + it("exclusive numeric bounds (gt/lt)", async () => { + const r = await run( + "op=sum,mean,count&column=count&q.classcode=CRAGIG&q.year=gt.2010&q.year=lt.2013" + ); + const g = r.groups![0] as any; + expect(g.sum).toBe(1294); + expect(g.count).toBe(496); + expect(g.mean).toBeCloseTo(2.6088709677419355, MEAN_PRECISION); + expect(r.rowsMatched).toBe(496); + }); + + // Inclusive range rollup (no groupBy) over a temporal window. + it("inclusive range rollup (gte/lte)", async () => { + const r = await run( + "op=sum,mean,min,max,count&column=count" + + "&q.classcode=KELKEL&q.year=gte.2010&q.year=lte.2015" + ); + const g = r.groups![0] as any; + expect(g).toMatchObject({ sum: 7357, min: 1, max: 113, count: 1299 }); + expect(g.mean).toBeCloseTo(5.663587374903772, MEAN_PRECISION); + expect(r.rowsMatched).toBe(1299); + }); + + // Filter on a floating-point column (depth). Null depths are excluded by + // the comparison, so rowsMatched already reflects non-null depths. + it("filters on a double column (depth)", async () => { + const r = await run( + "op=sum,mean,count&column=count&q.classcode=PANINT&q.depth=gte.10" + ); + const g = r.groups![0] as any; + expect(g.sum).toBe(2688); + expect(g.count).toBe(1211); + expect(g.mean).toBeCloseTo(2.2196531791907512, MEAN_PRECISION); + expect(r.rowsMatched).toBe(1211); + }); +}); + +// --------------------------------------------------------------------------- +// Median +// --------------------------------------------------------------------------- +describe("median", () => { + // Even value count -> average of the two middle values. SARMUT n=80 -> 4.5. + it("interpolates the median for even value counts", async () => { + const r = await run( + "op=median,count,sum,mean,min,max&column=count&q.classcode=SARMUT" + ); + expect(r.groups![0]).toMatchObject({ + median: 4.5, + count: 80, + sum: 3466, + min: 1, + max: 643, + }); + expect((r.groups![0] as any).mean).toBeCloseTo(43.325, MEAN_PRECISION); + }); + + // ACTBRA n=16 -> median 22.5. + it("median for a small even-count group", async () => { + const r = await run( + "op=median,count,sum,max&column=count&q.classcode=ACTBRA" + ); + expect(r.groups![0]).toMatchObject({ + median: 22.5, + count: 16, + sum: 686, + max: 150, + }); + }); + + // Odd value count -> the middle value. PTETES = [1,1,1] -> 1. + it("median for an odd-count group", async () => { + const r = await run("op=median,count&column=count&q.classcode=PTETES"); + expect(r.groups![0]).toEqual({ median: 1, count: 3 }); + }); + + // Median must ignore null values just like the other aggregates. + // STRPURAD has 10 nulls; DuckDB median over the 21004 non-null values = 41. + it("median ignores null values", async () => { + const r = await run("op=median,count&column=count&q.classcode=STRPURAD"); + expect(r.groups![0]).toEqual({ median: 41, count: 21004 }); + }); +}); + +// --------------------------------------------------------------------------- +// Multi-key grouping and empty results +// --------------------------------------------------------------------------- +describe("multi-key grouping and empty results", () => { + // Group by two dimensions at once. DuckDB: 14 distinct campus/zone pairs; + // top 6 by row count verified below. + it("groups by two columns and orders by count", async () => { + const r = await run( + "groupBy=campus,zone&op=count&orderBy=count:desc&limit=6" + ); + expect( + r.groups!.map((g: any) => [g.campus, g.zone, g.count]) + ).toEqual([ + ["UCSC", "MID", 55133], + ["UCSB", "INNER", 52143], + ["UCSC", "OUTER", 51828], + ["UCSB", "OUTER", 51353], + ["UCSC", "INNER", 42793], + ["UCSB", "MID", 30255], + ]); + }); + + it("counts all distinct campus/zone pairs", async () => { + const r = await run("groupBy=campus,zone&op=count"); + expect(r.groups).toHaveLength(14); + }); + + // A species that does not exist matches nothing: no groups, even for a + // grouped thematic-map query. + it("returns no groups for a non-existent species (groupBy=site)", async () => { + const r = await run( + "groupBy=site&op=sum,mean,count&column=count&q.classcode=NOTREAL" + ); + expect(r.groups).toEqual([]); + expect(r.rowsMatched).toBe(0); + }); + + // Same, without groupBy: a global aggregate over zero matches produces no + // group at all (rather than a row of nulls). + it("returns no groups for a global aggregate with zero matches", async () => { + const r = await run("op=sum,mean,count&column=count&q.classcode=NOTREAL"); + expect(r.groups).toEqual([]); + expect(r.rowsMatched).toBe(0); + }); + + // Impossible temporal window. + it("returns no groups when a range filter excludes everything", async () => { + const r = await run( + "groupBy=year&op=sum,count&column=count&q.classcode=KELKEL&q.year=gt.3000" + ); + expect(r.groups).toEqual([]); + expect(r.rowsMatched).toBe(0); + }); +}); diff --git a/packages/data-tables-worker/test/engine.test.ts b/packages/data-tables-worker/test/engine.test.ts new file mode 100644 index 000000000..bd3ed41d6 --- /dev/null +++ b/packages/data-tables-worker/test/engine.test.ts @@ -0,0 +1,255 @@ +import { beforeAll, describe, expect, it } from "vitest"; +import { + AsyncBuffer, + FileMetaData, + asyncBufferFromFile, + parquetMetadataAsync, +} from "hyparquet"; +import { parseQueryParams, QueryError } from "../src/params"; +import { planQuery } from "../src/engine/plan"; +import { executeQuery } from "../src/engine/execute"; + +/** + * Engine tests run directly in Node against a real data table produced by + * the ingestion pipeline (PISCO kelp forest swath surveys, 353,253 rows, + * 3 row groups). Expected values were computed independently with DuckDB / + * a full scan of the file. + */ + +// vitest runs with cwd at the package root +const FIXTURE = "test/fixtures/data.parquet"; + +let file: AsyncBuffer; +let metadata: FileMetaData; + +beforeAll(async () => { + file = await asyncBufferFromFile(FIXTURE); + metadata = await parquetMetadataAsync(file); +}); + +async function run(qs: string, useBloomFilters = true) { + const query = parseQueryParams(new URLSearchParams(qs)); + const plan = await planQuery( + metadata, + query, + useBloomFilters ? file : undefined + ); + const result = await executeQuery({ file, metadata, query, plan }); + return { query, plan, result }; +} + +describe("example query", () => { + it("groupBy=site&op=mean,count&column=count&q.year=2018&q.classcode=PYCHEL", async () => { + const { result } = await run( + "groupBy=site&op=mean,count&column=count&q.year=2018&q.classcode=PYCHEL" + ); + expect(result.groups).toHaveLength(3); + const bySite = Object.fromEntries( + result.groups!.map((g: any) => [g.site, g]) + ); + expect(Object.keys(bySite).sort()).toEqual([ + "LITTLE_IRISH_CEN", + "PESCADERO_DC", + "PINOS", + ]); + for (const g of result.groups!) { + expect(g).toMatchObject({ mean: 1, count: 1 }); + } + expect(result.rowsMatched).toBe(3); + }); +}); + +describe("aggregations", () => { + it("computes global sum/min/max/median/mean without groupBy", async () => { + const { result } = await run( + "op=sum,min,max,median,mean,count&column=count&q.year=2018&q.classcode=PYCHEL" + ); + expect(result.groups).toEqual([ + { sum: 3, min: 1, max: 1, median: 1, mean: 1, count: 3 }, + ]); + }); + + it("count without a column counts matching rows", async () => { + const { result } = await run("op=count&q.campus=HSU"); + expect(result.groups).toEqual([{ count: 11515 }]); + }); + + it("orders groups by aggregate value and paginates", async () => { + const { result } = await run( + "groupBy=campus&op=count&orderBy=count:desc&limit=2" + ); + expect(result.groups!.map((g: any) => g.campus)).toEqual(["UCSC", "UCSB"]); + expect(result.groups![0].count).toBe(149754); + }); +}); + +describe("row group pruning", () => { + // Fixture row group stats: + // rg0: 122,880 rows, year [1999,2020], campus [UCSC,UCSC], site_name_old all null + // rg1: 122,880 rows, year [1999,2024], campus [UCSB,UCSC] + // rg2: 107,493 rows, year [2004,2024], campus [HSU,VRG] + it("prunes row groups via string equality statistics", async () => { + const { plan, result } = await run("op=count&q.campus=HSU"); + expect(plan.rowGroupsTotal).toBe(3); + expect(plan.rowGroupsScanned).toBe(1); + expect(result.rowsScanned).toBe(107493); + expect(result.rowsMatched).toBe(11515); + }); + + it("prunes row groups via numeric comparison statistics", async () => { + const { plan } = await run("op=count&q.year=lte.2003"); + expect(plan.rowGroupsScanned).toBe(2); // rg2 min year is 2004 + }); + + it("prunes all-null row groups for not.null filters", async () => { + const { plan } = await run("op=count&q.site_name_old=not.null"); + expect(plan.rowGroupsScanned).toBe(2); // rg0 is 100% null + }); + + it("scans everything when statistics cannot exclude (blooms disabled)", async () => { + const { plan } = await run("op=count&q.classcode=PYCHEL", false); + expect(plan.rowGroupsScanned).toBe(3); + }); + + // 72 of the fixture's 182 species codes occur in only one row group; + // min/max statistics can't prune them (codes span the alphabet in every + // row group) but bloom filters prove absence. + it("prunes row groups via bloom filters for eq on high-cardinality strings", async () => { + // SOLSPP only occurs in rg0 + const { plan, result } = await run("op=count&q.classcode=SOLSPP"); + expect(plan.rowGroupsScanned).toBe(1); + expect(result.rowsScanned).toBe(122880); + expect(result.groups![0].count).toBeGreaterThan(0); + }); + + it("prunes row groups via bloom filters for in lists", async () => { + // SOLSPP is rg0-only, MACPYRJUV is rg1-only; rg2 can be skipped + const { plan } = await run( + "op=count&q.classcode=in.(SOLSPP,MACPYRJUV)" + ); + expect(plan.rowGroupsScanned).toBe(2); + }); + + it("merges contiguous surviving row groups into one read span", async () => { + const { plan } = await run("op=count&q.year=lte.2003"); + expect(plan.spans).toEqual([{ rowStart: 0, rowEnd: 245760 }]); + }); +}); + +describe("filters", () => { + it("equality against strings", async () => { + const { result } = await run("op=count&q.observer=CHAD BURT"); + expect(result.groups).toEqual([{ count: 100 }]); + }); + + it("in lists", async () => { + const { result } = await run( + "op=count&q.observer=in.(CHAD BURT,LYALL BELLQUIST)" + ); + expect(result.groups).toEqual([{ count: 650 }]); // 100 + 550 + }); + + it("numeric comparisons", async () => { + const { result } = await run("q.count=gte.4000"); + expect(result.rowsMatched).toBe(134); + }); + + it("null tests", async () => { + const { result } = await run("op=count&q.size=is.null"); + expect(result.groups).toEqual([{ count: 217323 }]); + }); + + it("ANDed range filters on the same column", async () => { + const { result } = await run( + "op=count&q.year=gte.2010&q.year=lte.2012" + ); + expect(result.groups).toEqual([{ count: 57005 }]); + }); + + it("only reads the columns a query needs", async () => { + const { plan } = await run( + "groupBy=site&op=mean&column=count&q.year=2018" + ); + expect(plan.neededColumns!.sort()).toEqual(["count", "site", "year"]); + }); +}); + +describe("decoded column cache", () => { + it("returns identical results when served from the cache", async () => { + const query = parseQueryParams( + new URLSearchParams( + "groupBy=site&op=count,mean&column=count&q.classcode=PISBRE&q.year=2017" + ) + ); + const plan = await planQuery(metadata, query, file); + const cold = await executeQuery({ + file, + metadata, + query, + plan, + cacheKey: "test-etag", + }); + const warm = await executeQuery({ + file, + metadata, + query, + plan, + cacheKey: "test-etag", + }); + expect(warm).toEqual(cold); + expect(warm.rowsMatched).toBe(62); + }); +}); + +describe("raw row output", () => { + it("returns filtered rows with limit/offset/orderBy", async () => { + const { result } = await run( + "q.count=gte.4000&orderBy=count:desc&limit=3" + ); + expect(result.rows).toHaveLength(3); + expect(result.rows![0].count).toBe(13450); // max count in the table + const counts = result.rows!.map((r: any) => r.count); + expect([...counts].sort((a, b) => b - a)).toEqual(counts); + }); + + it("serializes values as JSON-safe types (no BigInt)", async () => { + const { result } = await run("limit=1"); + const row = result.rows![0]; + expect(typeof row.year).toBe("number"); + expect(typeof row.site).toBe("string"); + expect(() => JSON.stringify(row)).not.toThrow(); + }); +}); + +describe("validation", () => { + it("rejects unknown columns, listing valid ones", async () => { + await expect(run("q.bogus=1")).rejects.toThrow(QueryError); + try { + await run("q.bogus=1"); + } catch (e: any) { + expect(e.details.validColumns.map((c: any) => c.name)).toContain("site"); + } + }); + + it("rejects comparison operators on string columns", async () => { + await expect(run("q.site=gte.A")).rejects.toThrow( + /only supported for numeric/ + ); + }); + + it("rejects non-numeric values for numeric columns", async () => { + await expect(run("q.year=abc")).rejects.toThrow(/Invalid numeric value/); + }); + + it("rejects numeric aggregations of string columns", async () => { + await expect( + run("groupBy=site&op=mean&column=observer") + ).rejects.toThrow(/require a numeric column/); + }); + + it("rejects orderBy keys missing from the output", async () => { + await expect( + run("groupBy=site&op=count&orderBy=depth") + ).rejects.toThrow(/orderBy/); + }); +}); diff --git a/packages/data-tables-worker/test/fixtures/data.parquet b/packages/data-tables-worker/test/fixtures/data.parquet new file mode 100644 index 0000000000000000000000000000000000000000..32353861d9301f6c64dedb9fa2bdba9814364c6b GIT binary patch literal 1086796 zcmdqJeOOf2xi`G-wP(Yguf?#L83q_|hA_arEHTDVLya{aBSx&X)>vz;$5887HO5+Ftu@wAD^{&dt?{Hbwbmzne&c)2dtLqS z{rmO0)-de7*1hiUueC6!g{IkbHjB+#YvVS?nBvsov$1k^rH$EAZ5esC{{95ah_l5p zW-f@m!~-IHFg(t&<^9h>Ypn(EW>+-Sw$GlUH3Zs&)w3(>|33k_#BC?2)|MCBe>W)~ z#50-LX|uw9g>eSs*BECpeuHri<3o(|7{A51fbkK=1jg?$E@J#1;}XUs#$~fo`iFQx z#=k57^AlKYA=`HPH{zbS75rc77NWh<%jstqiky;oh9AH1nF`j-x|lx=JAtpY=Y>vO}Z}lH6y!epi89N&E8ykA zklEIF8j$6i4r#TWud}hUIyytTn_NDdBYplTKW$?JI@&p1I$gj&&0s@D`W&yONGCn~ zR02C7XhWtnAo%SE*h(`&b#6(vb-dPA7US<7(#6LZtdB9+00t*uBw|=G>=-E+0>gr# zVkBcEVVE$?7&fz_OOHXA5`*BtlT-}C;21HHrD5nWWDE%-4kH6%bpDU{{#Tq3_*&d0!{JKt>kaX82c|aHUImLg*m3~QoRx)5+1IUQa|IgM&hSQzfRI^k_>w#(@8Gh2REUQA)TQ+baGfPg)-kF^@i-|iS02WrBCp* z9TK~w%Qzorz7Qw&ad{P|WSwk~Nqx7XtRd4) zvK%1iI-Yt+N?EC+gPiY|GFHW#_r~cj$huXEVO%ktk>%r(x=M~8ic7jFC-0LI4@%bk z+%~~e?~t-el2&s)H2pT0_sa`yy2LxObv;ix&(pSY zwn?(@;)cyS({Q}JEiNHDeWR3mLUOForQ9L=4x$aj_wkH=$$VX>yH2LVWZWXD2PkQi z&Usm~9^pbqXY%EsyQ2cI6TgFzCeHrz~8&=09jOgMnNyZJbWmryw4A;cj zcPMn1#Al>*NKm@P=?BQNgPa%1ae`8Ypv#is5Seyx^*qI&=GIl*wvAHvaK{R6Kgj7M z=VvM73^#vD${C$BEbA{wx?_@|({xTJe@by{xph6+4sfs_+l zq?FHj+AhwnaQhxkw@Dn+DcecfBI)mu{JE5HP>Q=CrEilg-F$m5qVVmEd6yWF&r%Nu#}HlFe+@ylGjp>y5>&m{X1 zf`8CmBFAp-Jf^eV;Ov}ExhTb5=f=-;>V7%>EVt~8!{pTCieqHk z30WSN;@3(^r=;Xny7arU?Lb`Wxa=60Q;u-^j{8ao#oHt6c1ea4I@5YexX9IGJbp8` ztl){4xi!;qn5T^Jw3}pxkvAE(QNqa>6X9>tn;g5OlvBFYO>vIxa>`jw`+3GKGN0tS zL)@^2!@%Sv>S2mM#FMY<(s$`Bd%!`SxQ*L4a~kK$=6Gp0=~qkgF)41dVmubFZk6KC zz+rLcIw|p#E@h*f_9?M7JYzsMcPCuq@rQZLz1-pH!&2%7$#D?Af}1|)>Fc@ev@Z3K z&T*R4G2*~ug3LkP1UKyE#0p%UT)v1Gw$W;MqT_0fRxfUb8&<#hq<(u z>kn~xm6WiL$8C{}+j;Vkln$Yv;;9Gjo8D5WmSGnH8IMW%CbysBbeQwII%PlCZ|1sl zJmIVyH(!Otz?t+o_w%%C#C&iT`Ze58W?BL06idj*vu)!^wYHu2v-V9%UISuppg#C` zb=~ZCUuC{P5-$tKEUi+j@cYfqMB!_!G-J-}hU(f{BpPEZRq z06w-(@SHZ)g3RfjiX=8Q-~@*rZx7bj(P!@K!0?V~R^=ScecRoyH|f`~Sz7M22(1B( z5=U)gWwqAslS}lb>Re~AR-65}zoB7Pt}OvDVs#Ms8S>9*pH*M$4^bJjR#=&4sUC0z z{j)1IpFdPzVPSQ(G42bu-C5s=dTCC`?-?yq*;K2uqOk$otg59uZYvPER}j={>)R{q zYwJUruUsnHTOyPQ+kuG zv63`LRbwr1nN3Ub8tOwKe|x1?_asPt!lBKsuC1S?g=-2ESoLjFMRmyMe=(9~sSH%t zX|kX#mfHFz?6xS~40Pk3eN(Ba_j~k8P^$|c)>UZq4X5(AeZpE-9|D0-j>%6vc|@tuo}_Y9u)4CoFu>Cjr>@BhR@c>Om9_ra?bUVq z!bFP#e#jpyT3y}C-+>}eO>#kIT3vm$Z#KPY0SmMcWo6BVVu#vm{0+0+OP$c9%Euv6 z_fp5~UUGrl+Z*sJz2}9*8?-uz&);4js;8$c*uQ?ZyB-=` z2Rg|BT?G5y1s5|g@-4qkF00Y>b^=0dH17zDl_7O@xaX%4s$tyS?;?ik~RgZn5B;h8-4eoP~5t-v}r0lD}+R4J6QjnWR2b04Lj zqKpeA1;I0ki9;eJz{DCu+wTIYcq6=iZ zPSy#ETNV%OcTmDs;%7+um~>l7K24qrls!&gI7vBYXzDr2y+~iYNO|)gyiED)=}RZc zzLk=XQR-@*xQWLw-%kZQXxf6pWe*h@dY` zh$Yryf)dV??KW9&lJ^u%U(I#HByS~WU)rMd9hBj6j*xo`Wp3mT^z*E1H03b47N(w~ z#1XEp<4I@9ewvW|7;cbp6ITv!{WdBbp`z22w~ZdWMmgg&^)wY+r)g!W`-mSR=?t-3 zMBBM;7s-dodx@rRBj-j+TSMtXl!49GQsx2vz-7uhMg^y7nkzjg;~-5LC)daKIkkZd zd&qc#?8hnjCMoMVnUv&xtC_Hrx;5v z(3CCY+Cc@^XxbIZJ4X+WVBZ+)V>m5J?M*yE51*jobyT>Pit2R5YB0&08c4iBkL;(C zL-goPDm_RuwouuEnT2JoGojZ9NUAZMBx9@LH0ef=LQ~lgpShR3t7tlwoural!$GcG zYwx1pxBKLaAJV>ecVj?MD!?m4MFwUptmu%w|8~MYldGR5tJQdp% zJq+st-#Ga6d>>Nro~J2c}E&0R%LAED0e)U}@q zPf^hUnskmb^EC43eDNV`8Y{X(Fv~KL9JWp%i!xdDmgG zsW+dYdZf;~Nv@ccUl;W5rj8Zdu#+46o-JWZdIosgZmP+Aq_kuO^{z$df?IdcGxML@ zPVKuXyqe~%r>D=+l;h-DL+;HnZ7#n?+QfZvO;EvRJ`EMb2=ZsD$Zoqp-G?dbCOtYq zv+q)9h?nl9uhh$`I82Raso@ko zd4T4Q@P}9N;#=szQ1SqwhE81Axt=PoQQ;kEU{}wKp02etqa-ye@e;9JoURkULec>e z8z^BT#ciVae(v4EVT!5!Jn?fSSh1VhPAJVS8{;}4NoM+qm$u$`P6C~bh|E`EA1rLU)qVJbX9MJLGk zG0hm^3R)s7xVO1sH#Od+>7P+a2U|xyi=RC}?K^1RMSA1}wVkI&cT*|M@(9JuVF&;E zd0KRue`6J2yp5jU!~0h77Y_0zC;5wKY3UjMAD_~)-O}AE z>zVg#u&rtODVn>Po?c6jpQKvUVmt4Lx-~p-o2qY76Lmp8M2?H z9xL|U*y|jXV^BDCX zp|4-3$VpmsonE|6woBAdJ8PKhR`E4U`}?J#4SaAPe{?Oc3(YF53eGwVr@`y{dD&V% z^EmNsgdSJ*IzFeLnvg6kXgVDWa)D4&4eO>R=^S}CaO?e6#ti7lFh^(O(K}SOc;;PV z2qN34EKMIk znHY1{kF2DUOu4(XpW8N&^%l)&K|n7BUI?`NxqOqVS4iHSeEJpXk(0dab6#?X=48<@ zHLc`yo}^aWCT?BHXKv(yZM+`-5S8ghZamHPx442?8@cWX**a(J;H4H&He)yEt2sNs zt8c{UZ#u%Ii&Fh{PQ&QcaO(oPQQWwf+jPMo;Gir_V`ug-a_q+s@kx zd5;e4JV+gPY2H?P?i#fpp=U40-1sx_%&!qYQ*FlTms>U13P)! zc5ZB%wM%;B3@^J!9XI&QJyQJ{9yrIV&vI!$_)D`+a@!$}4vF`UL`(Q#nzNPWZKUve z{>*9KewaUZgL-P_U8mlQ^lW!{8@F!eGsgMAN_u_n^XK`}OMGSLtF_OsmYUA+!9`!c z#+P+}{kk;N)3=Y0EdKgw>N~+-KE%J>*>?uX0ynIa9@!%;-$<|D;H!4?R~Nm$43wd> zHRmGNb$49j(+_jw4qg)S&YiW6w+&1B4U%$@KfIYg`Z=fdoNeWSoxFO0&m8CVr@;Z5 zzMq%vIxMWckShm_VZ=?>FbMz zF4JIWXwl$WTDFe9-cLiZQyHq>%;h6765951?;+l?N}7evC3=gH0yO6!FFVDp2e|DP z1(wdd%-Jrfes172&1|LPRDF~4Q(QXCAK4od?2P>}*_NK;kM8E(TO}NN%xUdy>*;xB zKksTTTth{^&Xc@&4S%?-Yn%#CQjx9`9i2j3Q7z6{QAMV7#A-=Y#r}|lFSDwBvENbE z`a`iZv<}b>Zk!L+Nhh8dcBi}SOeAZ5F4X6#$V%V{3Z2U&%zP=2v>J}u_8EP!o7tO`%_SSm1SV)Tbw z<*gvKh5M+6*H8&BV7U|oW4u(zi-2Ako-|=a9qR=eRctPGfTjx2TZ+#%uCf;S58X}J zF$koau%?Dec{cb^3~p4A@4=MYG8F>x2CNPNt1@b00nBspmBd;pAIJo-SqWZN+y`CC zmr^!}0Wws;3aJ^31H1ufgm_F6xtQ|4f!OE$JJD~?b5D=m~FuDbMR6zc* z&kn$$d0WIVebrldVx(7nArq8YOuB#5PVRAATRSwb>*{sFtCUf$#LiF zfJ*?hRN=D)Ov{DrJ0Qv;D#6+|;E)Lly;$1{`RCzX0R$Y9k6h}7HqOJ-4(LXZcVlE@ zRUO2ZM|OPoQWjqZo-Bj7=f+aWA|RFvQ1sUYSy&T*GIWD4<)EevFB@ns*3P9uzb>a3 z`1_y;Ay(me`nHQ&z@-{UAOy@p)QPvX*e?W(JAiQ^=*YuU{naHbV7oQq2NW(los9% zX@x+02Pn(JenH4T3(6T&|2Ccjh^3HF9i*5K8fx&o7TCw&_X2VgFbhEHg@75rsv1bN zi7x_XAw16mmQ{dLfmH#}mIwF&z$^o86)_%wmRy#D_c@SZDenXa=YtQ;o^m3uGyr}E^uUMjW!OC%v;=@*IVfs?9KE2Z6+605SW04uhaYxQ zCd|aei@Ki331LPD_DrQLzq+UbT2TS5D~62AA-_6MnTZ)8zKcNMOdV^JA9v-0t}_6!sKE+ZpP%8 z@zerxE)c7LzX^h+F=O| z<17K0O<-dM)>pyIA#$koIf87;;7e*^ezFjxm+)4q0@M;b%!fe+v9=X(ny~A9tn7ew z6a%jsJgWr(y9rLQ7cyRjE)+)tEGEffAkhZPDF>6Xn7eU-3l9ollzCvV7wgJ^O$#9U z*ivfnywJA@CQt?Fy#O{$n9_&5qXaMK0dgm4n^;cQZ!U$vg<`mO;15AIBltjxF|ieV z%LdF+;9t(#fO7*lQH+Icd>>&__)iMljXXd6SEZAxwExWN1m>l{qm#QctwqqyAZg13 z&ERS-F!e%AW#Gz(ADzK54Ij=sI zRSHU5vGrmWP94f(*?>9^oX!HR0v64G>8zu*L#a z2P~igv^KMfv69keSZGXvV)|Z!MWaocaP~q-^JyLT>%B3%hMhJ*0q3(tYFMEh7Vx~y zGG!AK!b=rnA6aq%y>{%~;yTzADX&c&QktoK5xvY>jkyoL3;Us75r*!8ZX z2EMJB=lOpabi!j5@VN+OO|auWS{G|HTz%V@3nmtV&H4BJ&rYH;PmZGwVEd?9UgroR z*Q=lsHEN(fR&w-pQDbnw#Hv)Ml7n0mzM&9WQ=;Z7EI4)>O)y}V1p~`MAg)qXgQ*N^ zHJPcjQI#iIsp46K-*RN!4|EywkOkZ#U)PTcN}zE?SmA?Cl&Eor4j%+i4(4<~?#-~M zHV82Y&@E%@Shi|5hQCwV0zcUTjT#^P+2 zqiOpafYVyS6Cai~^9{td5G~?!Va2iZp%8AP4~TDx`J=gfzIw-4+YD$S-b>qv_ko55 z5YRl&e)zgpjsuI!#ODtNi&qnLupH7V1PRR~hV-n(vr#K{V&}yGekS^BXE%bxF=9Rb zM%Hq4xp=@}K^4G5{ztvBe9H@kD1(S=m{?+nzQ)SBHkwKhJv>ha^WcIipeyqMss=XR z3Ct}XuO$^W=~HtJI=GmgynMutLds*8i07#xvp8cE%T1OX04^N6p%g&D=P2M}4mj(D zvIMUZd`UL|Hgr9O*WI4aM&BE*0~rXdP)Z+^vIK<3%8yvkD}g60!}n%h=*d(%SxY$H z5{u?}a*|TQYt{G7mc^J-7da+gSKMpFKMciHu!tt;S2oqbN=E31mON|8VQvQ;LO}hCnT>>Jic5NDDSQBKwA9J(`C1)WfhD)71% z9-(v0Ti}BSC;-4_IOLF=;SJCo0+1HUhcb0WrkS9hi`8qw)C+5*pOx0JC187q4iU%? z@OhKpa`gh2HrPRr`X^<#3qojyPWqtm3*lE5K%;PY){7Es0WAX!<#04Ld}Az08PQJX z1Te1^VQvv?k`L&rNMxIe7eVPl0NDXMYoqz#BItPqAhSw0ahlC8a&^0%!Mz>q;5IYi?R#0;X^pxOuWVYFP)ExhxNJ&CZ04# zvXv&dpwR?aYPV$>44}>Zwim?hCR$H0;APaQ<*|j@T&01vs%FvQrTO4XHWJwupw>zY zAmDH-z36>^cw1k%BAbHLLl1+Rwxu0^Z0R6_*3k(aNhsZWe9D(HY# zc7t1O@X3oQ8N8pOY$6K3pA&0ZEP%1JvZd}k3;gyDa{mI?3BiCSx?x&Ld{xxo=;m<5 z@b6Dsp*%~uPu*t`e>Gctu$bDb@3RK=0Z~35P;wxRR#37KHr%U@nssYQJgBhs?tBMy zstkRANCr3_WCM|G%VKDtPy1!w2tiFcphffe$XLAij=|9jW$?0Po~PXVSzTCVJz7F( ztV*pytkU{-;9pZ?1u-^84jbt>Gb7nZnaaK`XXwh&n>FAN0ohJtqyeH~KW*)?EU3M=akyOdtmEI)XrIJ_6|$@MoNj48CWDbM0oU!w1+VZLSr_ zETba-2M%C^eolzet#Yr7e;X6UiEN%6C%lTTg-6bn!U`8d8+$Nq9zsp0$T7R{4Z*#SkXs^o zD;fMgYa9KKNTIHXi5k=3qS4>xKt8pQXRKi`wwhh&>SujpGnILKp}X9&034ksC$VMW zIAt#DcCRy08Jml2Eei^c+~2{q@+aS5js7>%iRI3EH~j(DIP0fG@)TC?u~-(t$2Y5O zLP6!C_UYMtcf8WZ3)KHI6y)MnEu3~6kX`KlF$CVhM#T3F;ze`q4We;exX`f`obQrQ z-=buNl!DJ%Sx0169vHO{crAt7?4zf~9udyl;3PWB7@4;db z8BRbKyUK61Ico8PF$VVGb6V`95Y5~JQL?QW{P({^`CZ5DGWvh}xpwBDOlGGH;%B5J>#=r!X;(G}~a;)bU>$SzI`XWT~66DGSm{W!XIaVJ!FtYFt)f%M& zrjwyzg0+S4m$|5b%2D|gA&rQ2^s=y~2tV_&Cwd{+zX1EG7?Tg7>L- zkHijeGJ#JfQ|_~^U4(My#B=VML13hWXqB<|Nt*u{%^#ek8I?|B$bFi|USY>cS| zV-1asHl|lhjg5_RqSalr-HAgU1wMxUUK4#3tE*2 zpqb!g3+2dPwl2i(xfK41lFD-Bqpl3>SAh9BoBgo4-IVjKOC8um`Prb&5{k% zvB=M&V$FoaGCXGbLHH%+@;qoMBNMZ986C0aqm{YjUn$TD*+rw_$LOal%lwa=T);2F zhS_+#mlb%XL*xEWfgR?S0R~&Ju2lYuC1!A<>-R1PG|GhMS)M^l1_Yw|zYo}G5rHxe(*!>8#yI_lLNsx$Rb^QmJ@sx%(2n->d!`D;#^w9dO@6A1Qn6F(rqI zqhC})ZGYqqEhhBhv5ypZQ(4CxUB4}jc|9L!7T}Kxd?%+c``CMml}ufKbD^n(oK|JR zGr=;(-Wq*75OZbdR%1~Sm>KIW=XB|mY%02%z`UMu<~;iNjoygHa$|Anyn1my}Ehx|5EKmMRwJ7z^mK*yM98v+Jx<1ohnL9*Dq+dRC7v5NXQf zV^9?I6+Kq>{%WfN@8wrWp+$g}Kh~(-gNO%W!eHh8Al*RMY$)rD+rFxa$m=r7oNT6KF(bJA@_~ZQReiFu!5_PPIWQY)o((5nn!;a z&U(26oH!fV?Y3(Bp|&F|$iwJCO~QaA|pwJWDFLo!zy6)M8N~;LM{bkdMw!g zazCx6atoSbXqfJ2%HTb#6@t@fvNQV6s}3CtM(@eSKfMQCWp=&78m`K+^J?;+Rxx$V zXv!jZoDzf94(H`iFDPP#B3caa!w=90^j-Ix+9x_YiG_x6a^%hEA@_5vbWoan7aHtT zLx%A0bqM)e^okcs`3@lDjy?bEFW|efVd*bvzlfejZ?KH4YK!vnJIvruVoq~VELOsA zM}EdK{YI93wUyK37^8OgRf94Ev0VlBOUDM1I1zoCk(PvbSfPw@~i6R5(AdcLw*C&%rc7)IWULJiMIgP999kEa!{t!z2N%+0+i>zqyt74}jRx9D} zQcg79%|xxjGSys@l1WzoQ?T9j(F7fw+$N(NLD;-L`d#Mmzo)$=N)_>v9^UA-_9M+2 zp2_mmLkcaRR&=T-e=?aiDMdaCze6`fzH#)m@D#TNc2Wj3bNsE7uTeMjb$d9CW%(P# z8Y7T?1x#8V`69f+d!wJY8=%6-e+Hi$eQorMu3UH*v~19+*sqViqZCrc-`<8NZ$+%g zvy>ors8Fw&T!mDFIE^Exu78T#deN+>akR3Hdiypb%U6vG%k|udydqvyCX>Y*2AyD$ z<&#gludr0Vi)9WzFS-rxpu00VMI6zOeh{r^RsQvEOY~hBda?hWcv0^zhr=y}RhMA2 zdd}nEU@I#ddl&{0L=FrmbQ9=iHPg%zlO z&|6$k_?*Gz7AJyKh5Bo~c3ddN=)aU~nAU1BMGv=F*i|atQzjqBM|dwYb?wz|D|uAz z*&O-4cqqp8&D!wj-`zV$+gbKl5;)~ja1JQ@+_$5zk&_xUMc!nEsBcm&WbccWJGK>YKJ1bp*ET7 za|Wvy=oXMDN)YcFB8s?YgsnPC;rxnVkc!-CjR z!ivT|5U(4wQjsgrSswwvX3?G&#WM2nbw zHiZ2iaC1sdUvP0UpqOv)9sDw z#3BUs!L9JkB}n)3)m;g29#x(I^LCwQmRUK}FDjMMK6utQ5Sx$ANu8h`>9vXE)L5tLR7OhX~cY8&< zUKsV-fJin4N};K-`y49FCllN)f-(1r=S^hIi5(*3!f-<9DPMs}u$;jK(B}Zly*ePK zm?m??b4qcnWGRIUE<|RCn-_z5kzw~%rI@T&b0Wp!Bm4pL)jQgRqa4{o6)PLO?Org7 zaG-voXLUz!xE*23WU2VGS-fR(-xB96qTQtAgU+py4)^BKD`G`rI4e40>I9PF0~3v# z^3nPjGrJqbMi{RdH%#1<)5MPwMbHcb{BiWl?kABN2ogu#aLW#lC;9`VM`POi;su3* zqSFxhG8JgwqaTjWi2ROn#DIwYn5C-EBKh%uB}1UOD&@5Na8pNMf+HFyg zpc&LofrM8Xvk9kJ1QM9yak!n#5Suh4^t$L(@i#^Li~GkSC`8mE28`sO^P*bs?iBw} zCbh}I@OLOrl$u%QRZYx5Ot=~my#gF^P|eZbie59k^ii?hs7)2ql*p6#@f@;R^^O5b z&^`GGEfU4%@H7OX0(I1Y)6&0)aTCi`znuu46_~Zj@SyN3hyi8lUkoolY08HFL=wfY z3GqB{%*IOmzk<7I5VtG{Z2w238zXY`$1yCuAO;SukPre{QP&HYbwdO!V!efOsQBgI z2s2Dm-X4}g>oi5=C4yN)X3>`z{jpY#NLM`gC-G&FNooUXfzg_zNctDR)*dNEAaQm5*})ZomYCU!?pR)n0&(uz0H;{ z!Rpb}n~X-ktQ5e+`z_)|f+bdNdp+A>lJ6Vnkhp4?oI$6ds})zjK?9TjSS&5?0621f%9-RELdvEmHbTTp~zGuRzhxnC# zG$nje{6_CS8NQ@#%t%ote<;E+RK%6U>hmH`6%QmM6uVG!6sh+TM!zPWPKJ6`T>V}& z>~0WFi)c*XT@^6JzWov<%;y7Ywr$(3r4Hm9oWF4zM!9+Dgr{7R0@b*i+-ng&nBWKlxo|< zTSrZ!wScox+bgE&M}I)O!&k)Z1mxeTash3e{94%Lj`bf3)F%v@1*T8Nh%WjU@moct zC_--#V~W^s0isbucsJ#^1CuroGn6=bM`R_qv)rhI{rzG*Nz^8y_VD7QK_uE(p?O$* z&xkCtPkc>Jw`jB0AKC7{7csdzM;)WLwVh;{ylVeHW-(@TTZLc5&LMth5PepWWt+5# zndnKV6IL85-m~CaYohzg=nx|GKO)`Yr?$x%qT7agtN}{#>tsY}hQdg`j@h@ZBEbRA z;=B4X{u>7b+dTDKdddnnSW4kJ%hazJEU^oB6-PUD8Kkx++m9!!#}m|wWX8m&cJcQF z@uvit)PLEDWI?3H!_I?^^tSkkO;{CIKDEJ_;&e}bYxH&P6>&!(V3$7ld)ORw@}HKR z*bNyA+Bs#&-19`h>~0s=jqn=ye_qNxe-wuu;wOo$;OOroKLOTD^`a;R{^gHi#6X{j zYmVrjS&paD{YK;ik)ucbTzWN0dq4@G>X2w-_yh5aB=@h~Kd*k}PmWwhWlms!T%gx88bAAKYI zn)WujzuIGwzcN*wos9D5F);CxQCu;C>sCYfY1%Drn6)>7M1|Um2qwz)_Gc9Iidoj+ zJIFnX;XU2Big)yz(O1MoviQA?nNk}JqSz=bX0cI-hZS+!Ad*y;+x4EPHHJT6R`pR; z{9KJL7w_8K1@`_#aaZp@ zA;g=i*ys>%>%-rLVuJOX6Gjt8zt2ilO9IR2dMWZ2($}*lW>*6#2;W~4tJ2(8gk*J3 zxEDlT6E35>IQ&&|M4pFy#7T4XZ3Ldu1aaOBe%D*dp(nNKmz2?m-3nzzk|+?FO(T(~ z#dc&C$++wBkzPUXN}ZB2if3l=p`JRaR53A=`U^cPSC6Z(jy?e?JdH@9h+8R814gvQtJh#O=`tZc$V<-o2h_@9{Dv)dBnZ#Rm@uHp1A}hyL8})`+9Ck+E z)q?Qr;!PtwB(oO5Q~C&^`}@u4CfPlkAUEefth9{s9Nl34!H$FzoGA1+43?iAL5>?|n8JNn2{ob!q~$s#8~ zup~IQauh^MEl3F6cW6l5K^mmy2w`=Kr;M=qEV0}{mm*t{^_Kd}#gsHHOZ?RqLCXs1 z+Aj>6Q@ozyh;?JLsAO!BXmDDrpsjf9&qyYVUBwUzE{U+xqiIm1=VPWbB{ebvd-E~Z zET4Ew5nnY#wu*-g;;mGuq!@N8UaFCCVRUf8Xt8+5NH-$oldp&YE6V&L)ul$iE}lt` z@#6c*A`8;K`lh=9MAUe2X<_V$*p?x(lEh2qQ7eMAb@JEZA*A1?a3>B$gksSqgu^Pf zCZTXHSL>$y>1Q+&-Yy7cxYh2?cu|sh;@A+mRoEd#lVix6pqGXCews$b#~ibL^Yi zAH!b|YcoX15J@J*{dD*_QDQ_6HTjq@7{mc1V$55}7vwDWC!^0Wliw&>Qbm(7JbN-; z*i+#0^8NpEKRo&q!HtpUBR`6MaWV}eDN_Gn7xPk(|GS@ef9U=qESIvxS_Q2>gL=(? zm7+33%opM1VwFKl0OTTdlS4#Y;%63-U_&nJ9DNF>z*+wHCO-k{stMTjiGwC_&MD>@ zMI;k9EpU-oUFH-oTD33fDoET_EN#%LCjaYVpUM9BBqY{8^_?V3>{4l=|J}&j;a4mL zIA`{%aS6=j{v!+8#~f1++kd4@{iWx(dSm_r%zny|s?+OiS?WR+MMR1EgS5y#@rXs# zD5A&)2k9{jvk0GJj-!XgBQf4Lu+mrexs$aiO6<1TVex|mWGZ!PS?sdIF)Lz3Vb>0k zt%@FpwgbQAbS)G=HjdVao7Pc-vlhLo)L2fu`T-?~Bz28gsE9^W^{4RG0r1>6x&&*Q z)t?%Rvq41c?qWV_&t?|%yvOEx=CI(=xzU?Z+|?5miEzj>%;9saXzVlG2C}80Yl?D( zT0E~nPtIn77rUTp4M1dv8BJy74;H}D%*5$to2NEB1$aJ^Ar_~)>^OG!VKjKG zTD|z(?rwz-ikOio#wCew7(r2$r@($P%Tf%`#p+KJ#Z7(q6|pRd)f`O~*J5ezcM_5Q zHTZv|;C{L~m=@E-X9cp$QuS3AnQ)R?qyEV(dJGy9dKHtZ)Vl_O|4zy)CN1KeUR*T5 zsf5%m$zs%q?p8Tk3JVR*yKk6-9bc zr;mOdeos7MaUp93`*Ana6UfO1`>LQR_@e+6oux;G{X1q+XA6HQn)F}-?)D8nlT(U7 zQG-Re4}Y{!n_$`SaQVsMQnX8o2LC{~)-Qf*dbSiI$fuBcQ&EECQh$|U-{goM5OD?p zkPiy+sl$C%Toqxff=kHiWd-+nnyE<5&^vMvS$tH5^t!Zbk@!zbb16TO z#$*;v(FHTrzp3JyBF;I)BU8iy2b>ThQ>RExbKp)kuHtlbd2tSNT%;tp5uO2tW^UJzL#iL*?{it2mG*4x2YwBP0TikOnJ)frwtrw2OH@-1*lOMpwZf2z!POVih(%j(v&mYh}7E+dYHw%^-VzIkx;;g}1 zigclXMHeEww3$g(o{Hu|F8C?-RAu6q5gHpwONAGG) zIKP8!l^tzD!_0o#EPj@WQmW+YAY3CZ(8-;SI@maF(WoN^_f%X3nvxw^A--?1Z+D7> zB+-Q99~Ir1EdOCx=578Sj zvRrut)#f$im*ok%A`)LnW+h`4N-0&T<0kQdRl#+7_4TAk)8s)gyLIr`=sM=}H(JWz zh?XLy!_11KpA&k9aDff-75L1cI_}agm}2+r#L{$JxDoHg%zdtKWeA-`Jnumy84=%2 zj4l)(C5L;Wsp5C~(I!_8EVBb=;e}Uo9ThN)D)O0o=?bfrgD4kjS!i&dJ5Tf`il-bR zlCb83uhd0vg9cgIK z>_DtKtcY=o`>Zx1zGa9ko7^N?&68WmC9WWYo$`OFdiQ`P?yP-$Cd}X@nH(k`Cc`9# zm_ULF1`G%mtYZC5}NbO@m{ui9F1M*+{V#zR_R`imW-JyQ@3|C&P9NMud$Cz-p1%N+K_DxSJYu zfe9a*sg~L_@GUoymOZM5cTloROi0I$XR2=@#zK4fj}~pj=V%GlBR;W{r%lK@Yy#+) z#$UrAIo$xST0qCcKX|Ywg;Qxd_)y#KwhfpTf1t_^XaMSe=01nW7p0J$xg;8e9SyZt9d-uqYm` z^Kd2EW}NyaoZkN2B<>TIj0bn|5PhYZ>CWIQAO3XF}4qITTq3j zPCdjq!yiWX!2?t2w;^If?x6wpXFn!#*|r1!M_q^5bj?@Tv$V^gqKxLK4z3a|^8D73knR20903tCga_ zdAbH(Qio9~M@AEoGZ}>cGgFAvVWk=##U#Om2@R^r`yNBGaXTWFmFS(S!r0_Md~xtO zmh;>41M9(Wg}1chpNCGsAwFvkm4Y=9D;h)&lE$dFcvWXOpee;kpA*W9k7Mnz_)lKN zVjQ4CYx47p^D2El^!*f0N%AeOQ1WR>^eI(k#S2-DP+U2`cs^|v@w4|=mZ_~`QNhB} zf@*xFtRP=0D914|itm0r0F9#A;`^0KRwMfEFPmSSON*j!ab8hDDZW!xP?e{!8XV?Q zrOOmc@2{!MTTENTg?LOKPMQ&LFwTPe*@L`q(fmsFL7}p$!na6wP{5Hb#bxTHd~s!N z1)Iv{RVca_@OLWBFZ!wq@|04w#FZ6P8UMu0uVB}SMM`PKqC)yl zT%NK}XA!W4uyhf-j9*Ytx1-_sf^%aLiTy$I&*23dGEMU*0?(2TnTmd&vaTQ*8X@Re(poYdvD6Xt5 zUS`YUsuq>8Eo_!!yWmsu3X9pR9$dr1`zt1dJXHmiY~h@R_v65!`4f8(m%dt=n6UfN zE}fz0hWh{4&3WfiZ0W?8Cg$u;Qi4IRRp6MI+$cTCstS#HtfCOy#2U7?(#mnC$D|73 z`{vk9xiMq-vDQf|yuN(R&RBmP{>7TvNzRra@7z=nE~o8`&LHdw9iUq9^(E$L(C4>O z^cFR&2ze=^kgmCWAktt};Q_aYcv+Xvdek}kc^*|X;H~kPOk2EGSuo^Sqd^4Js@SeP zw#pfzGOf;}j#egPjj?fc$m_A@Yq*GgFr&fDsg#)3q?hmvIq)N;yUe{VmMK_K?$1IO z7N(1xtx@a=W@g4ddBKML{|5UWTG1~S?YuXVXmF}727TMD)UL>z`;8Ad<1PmGZ*^-( zVN8ZTBCm_xRHU4x()UmTu8d{7qf(%D1!=pj)J%u1fvgmIBW*VPL|-%elUQ|c=rA=K z6$-dqA(zJ#pP4~r;kj)=U8~cRir>3ojOdGL#2m(DW?V|%$*?Qw|5CeLzos4cs6u|P z&!5zB*6yd&MuYlUy!_x|Q4Y2%w#kMJtJfOjIZbJ3#P|rco$VA&TZmRRHRG*2f@Yn;2`WWA+h0eXO}3q z%s#)Qu!S*!$EVY`oIKaV_J*iZ-VzG<&0J4GXao!PsJvNX_Io34oQPROAD~)oj|f>p z@cf%J7?K5CKyR$;pE!l~43A5Ej(&nR(}nD2ruCd-OwdKnQ^a6U^mH9p=w*xs=d&~} zNT;mxdROSia|CWSE*IVxQ?S_keFiJPN)W}K+!&AEkmFX-EAYJWo%|Jd z)yei--dG0j9925UM$EVHHuAlppSohz$*w;$)9`ea$z!q8%AMx`~mf#j0cemm+w^DMQaZ4>1=nbYX6DHPn}DzV(fUO z?INR!vX#HN!iBuvMla=ks*xTx3pKG~E8`hq&j@%>yS=PP40(gD?xM_3RYH1CZlfwK zUDs(Ayv|M9L%w&}d9)#5qFm~ebh7YvFn4Q_@;A=2pHa84sW~2N7NfK(p_m?qShp0j z(>UC~Z9h_~ryiDLH!TRG#nnGQaj`p8F&_0I6>h9R`F4-#;d9X#W+4ewieCKKL96;} z{Sw~hm)PQGxR_iz5Mcj9anY>|+mm)yuCd0PJz#BY>`))EUFEcDD~{bW2x$8htu7PM zWCop7^dX&@KFqLQ7A9Q59{d?f{WC8MQrl@O$8&mhih8Slk{pwJkmBT0ltS9wF}W-7 zT!he*>FKPzowil@ttp1B^-pt~S~o4ySn+lhD5{>VyyLvH25+5mwxNoO-!Ys<*V$#k zqrJ3s#9Nl%bsy6jqkJo9IxpC58=9=R3**sXb>!hjKicYEwl|}AE6=NxN$6A}ZrohC z-)G$Sj2XQ{k*urGY{IwKqwg4gn0irepf6_=ziCaRLX^ua)` z6_1TRh1)To#uc!}GVGy91Ercm|Kyr$$3^aGMcwq)x%zi<0C%29fV@k8SE<*pe|cRduhMbJM#q<&3eB4M8VUO4E;s=w5=ZBF9u=|HOv7@`UX7+Ln4)H4T_8Q*5%XlNsa# zFEQ4}9{@%rv77(hphD4ZCB|7150wb-8n7bY-P@qfk&Ds`uLba7Nvp zz(g|HtsL&T?9=pZ3?!ZoRWEMF4_5~kiypRcIq@vY3crEB?_n=wX2rVE2m1V)&dnH^ zd}J~=;EDdsqp@P?PWD)xcxo|pn2F(2N;Km+9*hR1JW(mwSW)RuTn*2lA_b3GH}JP0 zx+9TIsqkmjrg!7*6HEBW0&7r--PCsQ{MNGkm-gCp^gC9xJKXB+`uAAK!joIsk=s6U zAY2pN9ewyQHwNFc^(UP}zGK(U8x6SghF6zw@0L{`1bxm749x8#xyPygq04k63vW%! ztTfHeifPq!=`!0~*B=q}o4v8hrh@iyRo5kf=eAX_x>;tt zsMRkQ9C4`Us}1zHV0V}_`xpHI!^heB>h0YqjCd;azTowVa&~wj4Z0jG2B0aC-cQpF z6d6+UCy75989tklsd(G?9}&aO0Uu$@tax0Fqn7n#=w38)jEY|E^*v*&5zBk&>d70^ zXKCqi5v@Ym_MYQDU-tF$cL`#McY-ZZx7|_Lk*zl_v&|HvMJ3sip9ZEiZ~SAwW+&Om z)|BOM-kWF5iOh~st+cr^YL8vZw|KZ$gF3wT;q!i)+1OE6UN>6n4&HJIoHa&u$m%*y z#g8nwiW|8n_tK(3JOA8X7vqf5=&dD3VVC1u_A-VKluw*xF$6SaNdD{(*RzB4d#-HI zs705jDgF9esS%A8Q=m%!Xw9y@wmDW0-nQ~U*)nBZ#YEinE31e0ZRLT!oM~N(SI~xk z&D{KcFu0>zHe7#8y_6aA1SHPXoSkvjZjQwmcp=cfV!C?06Hm}rH%P^QxWEcOt9jCU zHd8+cRa&tUZ}qX=a9Yb?1T5lfg4fQ&4xR250kIghG2oTk%X^Pk$8Q8it2fi{*%x=q zLz32$@rD&HYs@bE-N^a7YYoZp6i!$VO%=lDsbeXUS(9T`Ft&#2!R2cF7bjVAJWZ5dw83iLag&TIK(v6i7%gpEw+K5{^#17>L34+bg-?Ywwl z<`PkMez@GR&Ewx6`9MP8b3s))^F?gw@N~;**B2nd6MM+=mmGO!1Z_(_9b{v6`S8=u z^ZwJgzu8LXamqFTwVWMeOx@wy;QQej3dh8b1r{T8LSWHdqnJu`womxF!IW5fk>VBx zhWD-JZ9NDkJTDi7&o?N)p+2W)*__fT5Pe6{T-yKsDQ#AM6FOzB8(o@p9i#3WEK=j} zx|YL_@783WXiMRFvH1Y|9z9QQw&Q6mUxKTBX@SX)3-3HqgD`6%Qloe59Prhh@EzNI z+iexr;dWYCUU#BqI>g4IGf+AzI?nBrpV}MJ+dXKy<8^dO(m8smdLibcuTU@BR%N_z z>{1e#_K`BTyx*_stFBLS9AcBBqr&mxlC%g2oa|&e502(8ay^F7*pFyzXN8s}2^`sE$%T$WExW!kF$b#S5E-njc4pL?#j%_8 z0XEgT@Fe=ThA=gKZVgR&#vc{mJ7#q)qV(@M%FT!x3o4q*mch>gBXBqGU?s-hz0`2M zDJc`<4jff;-EuaHSIt6iExywL+ijTg`v5o$1O!Q$hkI0RlLyyQ>H zEPjrc{TdP&XWEywIeD>$+EIUi2GNz#ly<#2bW?Q1HrK6Jhc8$W+Q{xm|BOhWo4OG& zaL>|*>XVCoa7HIC#w9iR>5Ms;giJV!gv$rem!xcdKg!a7vevEFp$)d{>%v70(lAZj zvG#F#Vc;)Z-5?Kg9916Z61vzPc^UZxiZW_~mzuq=Iz4S<;}3Y_RLZK*?>I-SHX3lv zg9CbOmdRman~VFH{V{<-p|rhx`DxdSAjHXs&il*w>08>bilq0t>J0`P_XKyXEBFt# zO;jCSq86zE&I}2x<;(`@Y_8#yGSR2Pc*#s$f6pHP2c{Dm5=OKc{oN4gpQq7#!jVxwRE4Aw0!hR}c^2RQ|I7YpUK_R?>8L1iC zpuB8HS6*iejQaZ9)4yTijz%0b*gH-0@7xePJ%$pV$a?xuBKpl(&ELNHJ7ntmMwvCK zN!PS=GM&m(lZBP684s1TE}q9^WikDTTz<5z;qY$ULQaiJkq`w9cF9A;tTtn0JAhV3 zIZ~|=M1e|X>WFXnFGaX^H7mU}xG6+$vcP3-rvu}k^BE@XpzYl(3@C$XxD^KsdFZ#) zTkW2U!ItA!r0ji#<0e6~Bs{8m{9|!^#kB4Qr*uR|wGubamGJx6h8}O z@8*_e0W8ppOIM<)WQUpqcg&a3Nc>4Cn4Hbwva|`p_U_tXdvPU?`O#D0(g+Y|OeXdynC|=Ak_8XiRsVQ*PFroq53LW!_OKhXGv0v2fLnH>EBfl1k*=Z*P6Wfp zVvLB63%lrK>$8~kV&qIZr=BN}aQ7A zrX_e}Dsy-Q+IVJcL$n{Ys8+YeQK%c}5bk>gYcIC5!sqT#h$8AIt@iej@HC@Qti^;Bxnxu{N8jjOmvdweX9ov1;`o~0s zuDO|xHYS=3*}SFxrc4S4ERE|bBKWq z!yJrdLz4IVwTSrNVwX>&*+F6dQqReX^m)jgP_to|mUm(}3uIZ5gL=EJ>gX^fO;Mw| z*^CL9y_fXHnvM#f6X2>O<5t=?t#Em03_ej?Iox;U4~?X{$9L1?fhvyb@2bzp8ALYY zIJ$7t+txp-vD)(o6M0H4I1wnVPdb1yvM%f>deBEvCR9CLP&MfK5u5XnrQ=t3l((S( zBYcmHmVL4y6ivOLh3RS@L$L^d)zQh6Rr-sTe<(GhM*R)NkQ?!W*c89Ri>>2kskrz3rm;5J|W{Gc)?Kq9Thi_|~gHcp-s=;~v zy!DTb%yzmBUQmn4gzP3Se5Emv;lxqBHsfx@KPBI@bvKdvxOBL^M9?A#@Py{@{<8e( z6S|CUSvjszwh)6B(S4UzP|hAcUX6mb{&)eCg}WEoGl9E2CNHY;W|FGKydM6o7ow`t z{8-C}{CEx{vEj2!*-Unv;%;7+Yl`IT1nru+h)v=VP_exRq9QyLRAtV+{l?qJo zj_oc=`z_yci+8rI5)Tjg@XA<;QC6YO(TX`nbzp#hX)p2UMQv=eW9Mo5R*qGu!LV14 zH?X09@BSI^oQ@;CLyiT?6=8OahJIObOD(`5#8*~O({!(7DXY8@1Ru3+Lz(NBnaDzo zC}&-N>#hmTa_Mtu9`mrP>3|tl%_Z}f{Zz2G4Plt4ynI}=QSd-47>Ig20oy390S6b zXTM(#7nyUAg(oqC`>-D)XPuSICOo?F(VO*Vqh>oXx5XSt#GHiW1MYvD z6Suc!a9?pZCBQ6Q#tE^v;Il!hpXl`T6Bwuw6cx0eEUu=kfGrXIgu{cjXED-6_*9*5 zPcGEmy^ZO%>a%NTwjHV%n-;#*2{u0hgpf~v%ZiM~-P_17VT}nn1ZTgX-U#2ab4tllH<%7D$NWMa<_yZ*j1V zRg8fz5eqDc3oK&X5whBl7FOTRS&eAu#{$Tt|DlD|Q=+lyn`mUtoSWW0aK2##$9IG=#MWk*j()oqAK7#kbD|7% zOic&YaBy7hMt_{K1if7CwAc@>d@1tW^NYh-(y$rs)iXPH!fg;@wQ7GKXybXB&$MDA z6BU8Uaqv)*c@Rk-@?ia4-8^_PK}0-6Rhx=S)!%R!CxF-R4TrB?U~{be3NLPxY||?E zL2FiptTU{lJsErgwH0HF(_>wVkuEf0$K((P_ZcuvCelI+Sz!`amiq@&k^)bXzer%x zh!|@&A03pQR)b%I?;(Uxq+bN&2RIB+@Jl?ky}fFJfqePw;q%niWr0T_PDds54X}fA z%zniD!Aie`$GCv>g7m8nQDPn%nY*yBrVS=1Oqi4({tq17S{2O ze`jG%{R3HNO~6e1(>G>YOt22OQr;=2XJZ%OTDS)i@t3@SgCQxze<&0l5 zdvCm%zS;Ve0qtVuOA@-+C$+M8b~wc~lwuO%UOIBlbf;DE?{Ccyo1OZ!GurDl~z zNtz(5cOoSfiB*_lwSUoX?6I5Bdwy0$C2hR4!j6TvK_q37f1;NQTD-F!(;7YFj)87H z7p5$(RrxVzSC>178juwnbatn@BP)7Su825)DS-K0Lw}ObiuBxNX{YI^s-}Lu-Gexn z6n3G<%y{39_o$`T;|pH80AD0v6^LH`bQo(p5u22Ezy(6*=gJOC_QsO`EwEz+he*zs*n+FtwR)9Lv74MdT=Gu z$K$F}_=s2jEAVK7J!C~ZfZg*#RU3Pki)Hw82)#+4Ec#DWxFa{h#vBboxWhwr?nu+O z=w1>)1JI~uyg#xKxX1DcA|M_k0lJ9=!(Fg8PCQ(TIo^=^R$n&tA-LlZ{p3$ku$=lW;7>b`j&qdIoek7iH<37mjLmt)khWFlq43?%neC$>W{ zo9lj9Wr`KVY*9P7?+s}-hgfGocSa}(=Pw^<7tHvb*km3vL^^mE}iWUm%?${S44d)Mez7 z0h744iVkQrg`dQ(O##WZY1haU?eLdv)9G%xZWK3UiB$?{F#pQc!s9aC#rv91&xT4_ zz?9|1cftuA^0IUlGjp@_IzBw|A_+-iXKnvk)iHPus21o?widT5nD_U$|6}-ZvPo00 zlBv7u*hO^lWUX32cKZ6GBsKvv%s`VxOh7FebZZFy;YkKcs@ir!l7_kAaJeExg@P{IDnewi^x^ZUX z9<>>EYC?;dj5kd4;+WcWX^sx6QQm@A?yobAnK0;{jx*Dhb+4u>?uhiFhCaZUEwDb0 z-pug+5XM_GATRizXPB^SV?w7nK)ALP38lJy?e$4bF$K}kKO%8I5rzvEE zA5GF?fqC&A(il(XYN&O^l5hf1(+ZNNbq(;2!v3>h6j80eQv(q#Ra1P$HV4W@0V5z< z<{S|&Bq1_u{x;AB0X1`crm{I;qUUkk?Cm7eEH)`9DIfOV9g^hn{ z>4;D`aJKfr`v0`s;AT9jienE_Ghi?o1CD<^(jG)hPa+>Ba>w|Wls{5bVh+(yPVYAk z{FZ6Tba^NR{)gnCKN+~xKLc~Qj*5XFW*6tl&TG`J_j_ZobpX@MZ*KF^-}tKj_^=ZT z-q#T+9p2l!(bZiOf3ClNy_nk`)3cgyT#v!v-4)-dGdN!p4LOn>SweW0W-)yaJT0`8 zBc?L_7p0o3#uvzr!fCh|GvSUEjq_&%lUqT45u=~N2dQ!e($;v@p&i_$1(V=RoNyAW zDLv9&i-W*&1N8D-a$r=S>RQP#3h1nmt-)GEbpY^5%6a-sdKTzyW~}&OSU(&F+)@Z? zLtG%vgT%}+q$#lW(EKeKACgxhwN`@_o*#4qmegk~fkj$Q>-n&_CX}zl2}LD`H7NDR zqUYjHIa`WIK5*`z;qx!-(DxSR(aMelxr;qXFY>5)IDiN>TWpr@8UlrZAHy^F z?5b@;ptdEc0lwE!3K0qBYP{&r{`n2tC&=ArAjK%rT8Ys>NTeFZarBbeg4rP+s04mb zAV9d?;|{pZ@#qPALXUO*OUlGNXBCpekS$O*Hr%40u%5z2t&PdnZ>V2rE3slFJNisX z_GpRa%PI9Hstqoisl$y2!fxSJKVCN(Q!_gW8qQTGH-rIez21q;0hR-lyt28mWXOPt zaJ)fw+m%k!wwv&vhCO3tw$Pz+eA@!QXs{~B{4MwF;bHQd$rClPj$F06i(RVAkhg~h zBA6{mc~kL`U@K86v#sqQX;f!UGjkKFl6dMc+#8P<#kY=lABPq!4Jv)AIQ%dH?&H<{duSS z8fQehYljjwBbG=D?HPIMd1Mmm@AcfJ1)ssvsX3bQBt&1+uV7Gp21{75+T@wt-Ek1H z6aON#wJe6c276=#c~V7t>2MpIFchDHrzh7pP=4uA9n}$iBnx-L+MV6C@uA?_s939B zV>)N$O44@Bx(Xp1(=nqw&W!7`K+Ad>Y}v?}aeBPv_%PxWc-|^3E~<4#>I3>R?Dpr1 zN(SJPfk&P?3S*PM%%U6VI!t|=LMpS@d&-ZXbXAHw1x3o#yRPpX&k36Gvwj*C^iBlG z3IcAd(JwQdlbHig0x_6wCX2`=V>uwHE(s2$;#`L@p=)U0V?4R7BZmx^tmspYn6O2N z{3n4K+y~Faabwh1aCi!Hp&EW`fG;I8%CXv3RMqWIVUnq_w$C`#xwaIP6q{|NSK?BK z_nDT(6R(j&DmHoyzO~{L4<%AqcCF;nnzy2QtRR|>j`nX{+}&{HX92YnlWL$R1r$AX z!S=Q-!--|fg7y$b=-3a7=P;qMRD*-O5udh%{fw_d@}4YFE5C3Z*%|N?Cyc*@I7pfy zqzEF1Zl>>kk|x0mR&vs8dxTd-y&>q;OH{&h;59q@ULePgu`9M~DDw?-itUeNJ>=| ztiwPddUSZf$=v8079Ia<#q8vvT3jA5P12INm^#?a`|0ZGc$GD<+)j{66LEQohT}R- zTf*5SEkVh{7iN}dELV+`GxcenGMnbd@wMj24QW!+g!sgbvUF6C3RVW4((iBrJxV<%7|J=+7~F9)owZOQC04;b(>N>w!FzF3D|CS% zHkc!C!4*B0VUN5f7qpk>4a`;Gxp)qd0Zb-l)cJ_2-ohoMJ>E9Y+*#W@jEV7dIG!$! zA!O)a5nAUj2fK;EegOm1HB|76h@`pD(gSh8l=ASxWFC11x2+J$HF#w=KcK(HOZ+&2 zxq+RQA{DLwNN{X!`Zhy<1}dj9=lv%CWVNA$NDr#Ny_oja*!p=Az5$$H| zQf*WhswctX$x{Cmrh3=SZFY!J6`nnOv*K7W`5OrArNg5|a3Qt+>G2b03}`yUkUu9? zB=D0iqWij(F6(0!1?cJnl1IZTenT zFkL6gs{)ED=xURmnBsJd(nj1m!x?(BZ1!Vux7-g866W@D@MprKu8G0{Ql0zYx0&n_ zIK|1Rd%>*xJ5$m$1oZ^0jH?JzlcC4JmcfZk7*C_BbwAQM0wOuQ1(OrmWZP9~|FrR9 zxEw!sdIBR0mqd!T6zPmPR4m-pA)qb)?2Xx^B%MDok>%Z$Yp8PzkV?eXTCTl(20X!0 zY&160Wg7m0I)^<9Z_4}@v=effLm`HUBH?`(m$jnCo>DKOj^kX5tMz}t&ix4zI--Lk z@hDw`YcdvBOw#?j;R2?Fr&BS1?&O`vQ(ipsF2#e@z&y4rY$mTt{Dkr)TWi`OG6n6* znzFlOemoz*dM6YU4%t4SZR1(Y%TAyru$ZZJBMg&fk{&a_8i60h{J8O5_%$9@Y6w0T zr#0o3R9F+w7lf;tO*7NsK)gUFyM`K)b{NP;J9Ke#o)) zpe0PJLXXRpC?4AUz$8dakvp*6N(ND9<6M~4NQZvB; zF$YqyiT&v*N>P}CrxIj5z+SJ%3XiG#J|cP!{TkRzWu=;VUGv2E~o6H=zdalF>E<22ltKo~V8*^XfbVf&uKX;;_@c4-EetG+9J z&!c)yEE#w!zwH5bzUapie7RHUWf$QSZe^5A*2X|q9Qjm>!R}a>0>6zD5D7);w*LR8 zPiw1S2U9k4&Zm$kordKhQR`1yX`+`v`7|c}N%$m56kpCA=*t-Y)a>>6isYf~^P|rp z{_MTJ?KoxGtr74k*2p58%-nU=V`S-Mv$MPQIOfYA(vOfw%ocPUQU@@^ zV@D!hm&}tpsZ>1ukr_n^xOe+06NAGE;gcNRHB3#$856(JK|-R8HHwZ(dNp}>Hj0c^ zNS4HG?Sy}1)!r|XV&bF?vy}gXwbLBw@P^rmI)~mc(iYJ`COa-QSs-5fgI)IsJxPit zn9)z|zP6%whIDHRe8$5gQ#dqrxM88z!%uc>f#=a8g9Q6fS4(Xs;ZOtxDyAC(wH@NL zl$f;1M1_cx=do}Wu}q%_zi|i$d=JqnXap|MYN+$DLdUcb+ZYeqLn^r9;Nv%5u=V|y zehGWlVvXfDu%G)!Y`zE6zh@x0`bZpZfKV2cV%zptF{@e`69nj>2Xv8NI6EU-g%ysh5x^=OKGXUP+>ABoV~XrN<_czLjd3 z?L`)epH7~$S<&5fAc$j>;V)z?u9`4kA@7=?(j!h3{cDY6Q)=47T-~V8w8u_d9{NY2 zc?g9LmK!Pbpi;v`RB&n<)ec!%O!btBZnB4_irx?!Sx~};^%c{onCMB{C5GxZz0M1< zT|eCBAla@T&#-h-f}^{_t>(>3=coX`(Ms{H1?7<>2n|Ya!k zEGR<5S;f2=xfU#D($zTkG2=d7i@wicRnH47hod$D)or`4nI7e71LX2t@OYZ-cXVOW zlQMP_ueDPJurSFocLtm^Q`^aldg&B)`@(;5$mnEdKNY>h$Ubm6$b0cuKB1Etjv+o? zoRx+ySQGx3+5(^10>7ej_~s4xL$dg?e~_B4NJ|`i;b*by;hIJ`;;YMQsMkRrJ{p6x zyQEPK!Px`ohGS7D3D3$1t^PKdNif4{J+;*IyJY10R!zHd5`M2mL)|ESOUOVn4!B_a z0}sv|f0?hWE9L37sEd+xOUQo&W)p$$)Dkt7yf>K|geT&e>&>{yn9*iBLsUBVj9)W? zJ)QU0uYVX0aLoAz_@7i}{|vH954+>ZO9mcwc0;ClM#y(k-Jyp}|J1@i!S*|9Nx`Sk znj|p8t>rNgZ$@#p&FMiQ)%6m3g`)zn$X-w6IF}!DVXT|K6MV_py)34r9bM_>_k%C_ zM;pcu!krvw5d=TxuMax1-Pq`2a~Gll#G`)@_UUi{CDm!Vm5Oa_j9UXAO-{Mw#oVtv zf%lJ6N$NF$fO+wLBvG4^-qj6;9_8ACl~Pl@fV5Wp2#j;4h@EOMHB1vxZif~cy3QqK zzCm^vDH&`|9>sR+$zt=Gw}dKGIbNh+A#ns=pTTGc$)Bf%PGJq6xljvxW)=Sh*3K1N zC~F*m542p;xv!)>yjeSlQoYug)#RfL20_R(iFUL{3_;aN=N3rM@@6Fy`LupK>?1h} za~bt3NPtzfW$Pd0$!GU~N6R-S?L3|O9M2%@^lu!UF^j5$U$fvL9)<<-+AQi*$;`>v z3xll_Wzdnzu#o}_)dj^?_7x6Mm8sJ~+7py!sxW1zHfm+UGsrD2^s#f9DmtEF9YdXI zFML0Z*}Ruj>Es-C<@v+(GPuVAXN^=W@ue^cEZohaQk1{It0pQoB~LAVc@NVPmIl<) zVt{0wfb~Gzj=-j3BH<7&=e9)Ng`{jK)RAr+JO!F*;J+7{ffkD}a&(ZI zmg2ux$ie1>T)5*@;;6c$S2)}2@}M)L4(r8Wvs+P6D=i;LiQNJY1NLk-Xt~wsgN|lN zuiwl07q*cSX#W_V<->o%d;x0%znC;hHmg18nT9I0>rF3>ghlWRP_8zk48ezl@NLV8 zo?M(I9*P_u@fo1vUh0tfN z_#(cs7IiB*SO?*cSHDPyKZ56`G2asP0n{^6(ocz|103o^sSy~qO5IjWWEOKgW?9`y z&u9YAQ|D|(swRcp%e2V2Ak4rI@FU02H{tyPp|6@-6fjvKaL0$7|A`!B_g>WD7v&h< z#0SzwVa3uTs8S2(tN!I6TxvSl|fKyo6tKgLM@DMiaUG#%+P z4d{8CfioeoFgdTopcN&n3+zG-R!jFmuPZtSi%&dxb{3O+9DZ`#{2OLd*AMii9^VIx z(xG@NkFwUs9Iuz*BLHR&31%}kKLpC__J3n4D5x<`Ao?`;NP%W7Q>^2bEbjLEBMlTuAhg4$c06kK2>O@cz`q~iCPrvZm5O- zs+phyuX@A#%qse3MH8L!99;-c%@@X#8rM*!uEg<04ARgUiQ@N}$ROv!(ggY=jxzdT zeI_+1HO0Xs9lXO+pDA|p*j3}0$AP~UHV8Q=5{-fARCr(-rW14=)hw+^Aba#U{spIM z{8PZ9QwkVRgpV_q$c#d6(nSjTc#cnKhRK=E)^k|rcVUF=+6*rU;Ix_6>zKh5n4ZSi zmcqImRF8j6wDIUO8a0*&%-E6Kh@-ue{$*pzdoAUFic==&f@lu8t(P5<{ydDZNxy}@ zC5}TVN*mJ&SFzys1$=Etx@R6WKxW`{FRh~;IYCMZ{9fuaLr{dVWJ(2>a+GVf6U@~x zeClLyMaK>1{du;fqFj8WU^f=+|1e!Z#!Txc2i5Eo(RF0`ENVfxjOrkr^T?kq?HXk^ zmtEBcP8t5i!8{H8elm3m2C~@XOX(9uio$**jgVJ()D!)Mk6`X1{rMgk!3m!lixHnO z-~p9`E4)%b9#6*Sp%h}XvQ|R=bTp1Mi=^5_K2A~uvLEZP3HbN{UU-BjLxObVKyO~Wkrl4sK4UotauwsavKzAHs_ zZWA?-YBP!}uzDM2T#W3W)?I5r1zkI!F8hOEODgs^)Ut!$z}GrQ37fMNyMzjqv&aBg zlvotzNF)|35XLz`JSIXXLBIOWe|h9$hb(obXudV1aCtUX<0wR&vD}`<^TFt6>M9;9Kbqr=d>(iU!yD>iktkTgvyh@?a*vqaQ9BMXJuJ={5=r5J zK94rtnJzG@o_cTFv(DZ&EH?sv$A6ya?NBz$i~@-Bhu2V3T&o;5KH}a^!{=_XDJ^o| zCcwikw9=Z#aX<~docFvP9HbXA`?OL<0vAE817i`cw5isc;eadxLAsCH36&31|4Br)C!&7O_{7a-Di?-y$_1z_)%{4O%G}QD3&`|BvGw36QW~bd zS;BOb0lVlr!~yocJ8P2QXl*&WwY&rRXNuzvA!3ag@8t(k zEr3r}LJsVIwbWgDSf(?vvxyf?zr=%aGKw=zTL0bp$v7z0n!|oxBQ9OXJjg@V;<`>64n?#pBN$GG{D<&)+@+~ zAonqT6FP+AyE2OCP!~T3r%hq2F#R8#yhc{evRrbd&R5LAhhvqVT=g(y8VjD8P@A7U zi5e2KNUx{o)30zS9)%VH11W45PRp=%_W{%Mm}P?<$KMHvve9qXCG@=_?3Pc6Uy&8F zI8wo$vKh?ay3i?PLv~|99QAf+81*(0wI1#Ie%O`^Kc?lhpyJGfLR$lN9?kZ~ zl1_~ktLK+4++Ewlz(^uoOa`|^{asq+@S@J3G*E?+ao3Xy3X~T*;46Vy&5wTx|DDao zN$ZnvutJ80^VRK#wgk|tVPiU{+PVyK)ry)AUc5_SRXRV>nM6Lwvixc^XW>cZpTI=l^06J(m6j5CW9rgYwCc9q~BxSHuQ_UY&*^+Nti5OYYy(fgjM=N zgVals0*f=Kw@FPV>VRRbmuwdhQ@GE;+Y=AiI*FCl5zf{s<9%tx7BS03fk7pjlS7;z z17{O4lms~HjV$Rcjz@l%f^Y)=!tU{GG(>X+lHyojeHV5q@OmcW*>8J{>av{CV+FL* zY{l#eMP#RP!y|#;!DTzc0c@Ir z!J|PTsZ%i9h2&z(t~lf^=OxHk6lpsA)>~wOj=D%>OUlkH`i$@_-REmEy{;XXq`xOJ zCOH5#v zT?F)^(nB_GR#~hisA9-%r#+5;(ROw@b(NIJq#cKCL#4=|ly#vI|NC?jbq;>bp|*_& zVVbe{Q-tQFFw2NE?iM$7PCUZr5NoQ+`)13r-T5j#&{i@9TKqBH&D_EGn3F! z8zkFri38|IK=$ym0ZS5Io_ZEgZfZe+ar9+u;YR(Xmwo-t*S$8}D3Oe@wGM@>k^kl9xFT>=d2F~Q&PaG;h$OM?qM zm2KMw1}tUW2PZYKI)fWoJ3^uYvwjxbTaH7ck|jIVIGbNhJ+?c#2C6LF<=nGrbpZ}erkHRt?%;cOiRuZ>X8c~9jds#PeMz_2 zp2J)|QJV7_-m>?{DxBFU)hbza_YKmNpM&k#n>s!{fsGdTT))vfgFLAwZvv9yugj(^ zOruAP(!(ZrB}G7C#+Q7`l6yd}h~zD|I%c;x2vRAal*Iiepk<3`|GooR$FB z6R+fPIE?{poO+ym=!SE1i6+V1;*H%jeE9tSP)xW`25if!s{5GSwIDm4Yl0WJ3Hy7^ zVa5j85kHN2?l2>xkbp?b-`}M_&cY_?(8${18fuFd8`5CgH0nChPJU@i z`~&RZM>1nlDF}S`=fKD;=3D{viEbT&XS9)PH-+a*z@T8IZ2A`k)%0VgWv{^k%9wU+ZWT zB5o|M!Noi-J<=o%m5^$?z(-0}+|91ydsG{Tpj;xaPJyj1>SWSY-|*eGU3}L@)v+VT z{+}dZmq9#UJsl-2@O3_vrPU`Stx6=HJDA9Rvd5_0A!UO7*u+SUain$up7#hi%_VZ1 zyyoL;J7Pa*zlWbt(vmOJ_^jHD2uNut$a(Qz8JDrJU*$19lfy+~8TeuzhhWIEKo1`! zVeew$XBP|y@PpLOJDLrg-#z61osov0w7D4-%BQWilL zQQTVXVnGBKpmo=}w4z0&O2viNPPGFnc3dlpw%Sc=2UktN(b z&v!ZJb7t%M^M?6WwY6;eKb51W&R*Ffdvww~GyQ7R2D>*Wd+-KZBq!3ZNqW?jN{7Ci z&0*&4e7de71O9*DwIgkD)uE!#c-||44;5-Pa$O?6*pP-{7`o1$#6I=sI*k4d^ttJ? zxwAbzibGMCnpeQZ@l$|M`IJpG!9Gs4K?cqMgztq~0&3T8{I?6y#*F$g`IC%E}HB0Jd zE#ATdS>%%?-kehsI7p8rw`1W(*6eR8y_SFheMw@5>Ik=2btE>iW|>su-V6~1pN%Ap z*L{@oSTQay+>#K-Fb)Ek5&`AGFCpDsMBrq+IJ?;a?(zpSPhVX zV?p`+B%@7>#bAY`+|Y{=p9cl(6ZdrAP^3<6C|K9a0k+*=OI z1bwX)23=xF;jOj8?T5n;mM(T~?dJ^bTVSrBB42nx9CSk`UPzvsniq0T^?Iz%<-v4R zY#M@Ecixf^yDA}RBUc1OPaJQsyx_@Cr$Vb19@&sM=Bgfkx^=SQxDz$BHgghv6=H6p z#+61O~^4qS=@;!102*PnpdgOQ;P~^ z{84rUfe@_5Q`h4%ui&+->{$w@VH3=()}I~|%TPOdgmZiNS;pT)+Deiz8K-qrxVScD zZp(K7D=Q1a*oIiT<4K1kC1?oC_R>KMlHBy0JTFc>SAN3y8*`-T;3#i%TSv)(45siU ze2I`*MfwCPu(4y#b<<1ggr=IF&)_puU=9e_l`~$9&wOTO$we0;- z7$WQ(Pp-kLI@MO-+u@keu)HYH?v7FCD53IKsv9nyQ9&{JlMgggITo)3OQ?tWIu|-( zn@at<3GdOpC@@=O_H__ueLPLg`d~e(UJ)K>=54Jm0oD&|j?6J~U%C!hg}6K)`Kr4r znL50=~xxC}M28pK2#o`cf=B+H#yjsOfaPA??RHfwrY5{Uwb)qvh(QRZ9(?;tLjqGYKc+{IBE%*9fLNjMhmwWjAYQw9cv zk?^9&SVALcoI8t&;i`;JEVM^6X2achpz-2sIXs&gb!(Gh+nUsn?qkr6=BVy_Iw&))#;;ixW4nWM9Z!g zI%_ce`Ern;Qp;tLT#M``CjE`dMSWcn2EaEz=Etgi=yDVtDWsCoU{2l|$FE?WK`2Y$ z%BAZzgX=Drvj=AY=5gMVdY|?tIGaxy%d$k4V530^c%9D}*bOTc*fFVO4D4xYiX{3e|l-r`PeG~m{xUL-A zmCC(8?xaGIMKL^7N#tn}ayaH<6@*TvD$?S8zFH-Jm&}J&EHnW?f+8188hSZ69B*jf zDxhl&`#~E|(bJto@ouNoo61GA^_e2(r?fwVi=pmVI*}pdd6Pb;=$WwJPWpJ;35XfK zFAy8DB-S}a1R;;soAFyvAt#gej-Y*du`d*+Qy)HB?IW$qY~pEl3Y{nI{E?q!lv$-qg{aEn);HxZ= zgw%HG$e@bRvIYCkZu)Sz(9y?gMswrae}#pr_yW)BMXr&)64|zRN)2QyMsq5;6yn}& z3ET{W;yX$IkJ`epuHx9x;%sN7ccy~Btn1K2V^i(5gQoavaY;Ei8tp0eVKH)p+XZ&E z7Pd}<3)w;h==xf9hQ)mLYdsa_qPoRGRTtf}YMt8$EojXdH zmpRBhsmPAgP8+RlJmiuy+_J@AO!nw>ETU_klxUH{-n;XVy{hT$;x5_*7?OsDMdur6 zdJuc)MTWuj`&bEMpaS2K1b+;DvmUFw? zYScTit(aEVSImzwt}evT-`c$OaRBUQ$5C4tKeV%Ms|Z4YlfwT!I>W3IlKeOqd3FfK z%mY!}7sfw*>78f_^ucZ_%1>2HV?u@Tb17X5h?s^gkJt3Fk7wzE^~oJe_fc_cW?qpxaVWtWY(^>}8XW3kVoaBcZVvdzh zrv|lrUeCo@ew5N-u^66Tr$?W^^%^5?yjTwPTW&|y>NImxQgKVrt=Z3GU`pmLI zyK^?{fzp>quJaD^#_zXCn8oCrx;8f-MLI zZ>I-xJGVlr4?wsK_VIZqShs@?S;f8=)kR~Z{^HZIe2tu%pzX!fe>Yo_E9zsnGP_Q% zho%IxQS%a30j2%#i{!i*q5L%4BvW&WeBLU*6#y@nn`BO-QV({6uq>j7Q|QeIdd^@1 z56^+Sd8zAf;kK9S{z3oC(7LxJH@O+xyfi-CWjd}1eJ@u021io2l>&wfPnc~!<;(Q` zU~w-WINXm9RSFbsTi)YjS9*I0K5ShICX^Z8^hhtqPr~eV4!GrBg1(EAoPeU0|pS0E$ei^3|mOn*<%EbOXN2xtsn+T_6Gu;ivMp&;5>Lm}eo*#(W zw7J}ecFoYKon}!Jtr@}xU_1Gf3EO;VGmi$+U6YN~73gcwufh;X5n(+i*njoH^c>~^ zGI7sw-SnakK$x(YG8DpDA5&ZtDxaDYjFr=X#VVv*p_{>b>EKg;)d}$7<)B z!|}=%eaN4j>B<;PNp*8p_7;^1*j=eaX z?%Bx##*?&sxZrS%fD`zPS?Wl-w}&pxk$%0NAkaIJbTU%RYieZ3p!<%BLX}x24mFCj zp@836_azGoq|F(YZzbWOq-@Th4^oBVCl*E2I!)5WP}= zSBwVB9X{RP+jxJv6{bfAovrGOq1044nY3pQxncwUu~z;qTf|@jA{(xQ-pryn4{Jst zAQcekR2b-jfitsWFYT?G4#`Lf@K5RVYHCP>N`!fk4s^@PFADgl*SC14PyV2(( z`MtJCtqHKAS{(Xlw~*2uByug|NvY6oyw&ma`?`Axjw~ENwKG>Q$}9wZuf6Wj`c)pu zS(OVzIe3O3GXU!cs`rFVPThBx;BetpL&LfR7kP~pKjt}`d3*W@decs0GPoT|oa}F4 zAD3X1RqL|7T%gq@()QH6DA@Q+2ItrZ8p+?2G-&w{zB<8vc}>ZJ=mASl|J#=P2po^x0x%%DMQ^zWk(m# zkQ*K>d;uwYUuf9bOJ)+RqWi#f_O)HshDRI`FShkJtkZ1e2T8%OPb+g5(1&&rD|`9h zWn5uT9@i#c^wW&hySnessGMOiTj=sw)mWX=2a!=}T;QP!4Tf+Z)BDy{5JginbL!O% zO2K6IQHG?Cn4*dw8HD%RRfiDL^+znfv*)08TsM3*mS5vS(lvwlz0d^Q(%9*WyBgD4 zN37755I9caTaqHwJLRz=H%;D(;2ByTE*SR956swn`}jKTfAHTPkhMXY>A0L01@VTE zzmV79pok!$GTjSZJN$E%^pVIlC_<6oswFPTtT1`1&u~6k^|KZ>k#gR6&cmycu8*ku zkSkGU`0^hK8?UpUpi9@+!nmIL=)Ceps(L!p7@)Sp0>n5=6u~^Am+f$avFvb5QZ9?M zL#`r^(J#bqF?nu{su|sm=zh6^8UjSD9&uxe>vA1rNrMG>xGtgF&3!T`fw9~ndNPXE z7KspxqZW3)WIpuSOyvw?e&zgT`5_2=R;+Xlg1dt@#F5$8IC%tynO)hTQC@V$2Ts8@ zXmK?+^eAGsWnFqgGbJ-93se}U?fYhW&fulqc+Fgk4885=%0I|B+`=At(nYu}!Pd?5 z*dp6UAYzScmir-~)6>r)a-q~SvGag^&(WM6xSR>%2*_h40H`|H?09*-q>oP6vSnat zC!Nfaccf86E_aG1n`4JM!2)k!V{k3w@P+SMkEwnKDyG>@){k%9h3{80g|3Z`zRzu? zL{DxPn>LM$F6x3%_P_1|$d$1=JC*KTz)n_`HsQCJ=dH)!_woIQ5}P6G zmJbIB>M+g8e8a{nG}z&ciIJda#@?_J9~(DbOgzf5#X0iD!BkhM&%2a#4+2p7G%^+y zTrzM~Q0Glp*}i>9`2! z$#8)}GI)RBb$|B*HB#5mUY{2XkHAnKl zil&+0LNys6BG8iylTB9oWwtVNs8lrrO-OkR=E@&|HLur#R?>HpiejQoypOm&w^e@K(r}X{hLTUPJ{Q0_ z=U4=$(e!xR=nzGEBNbJ4uG+YJia@Uy4Hk;Z(p|8v{NETVlqK}xT`@}(xlW?%69p&^ zBjuRYE=A9?P`%(%MjOI{TP`?hqdL8O*T()x5Ds_KTu2(bpRAQiO|Fze-THMq0BM97xmG-cU^u~d`B z9cvj!Q*^XyqAnH^pL4&meKtLRwwwk8;T~>-s65bi zVnZqYT8u`2UN|#Eh{7N}i=3tF%5Fe?Ap;aYb2c;h4POxYR7X`G--su-J*V@yepJt5hmZY^kljre+mG)D*LIrd9-=BxDkql zss4H=(x~c0##%4(O4I@XU)e$*mJ5)YoPJ68fMc6j#D_p$3%wQZ_2h`jO|Ek0EIJn> zuDfv0MvITKHL^EG34`lZ?;9uhaB5m)RX|BZMcrTrL$Enp1*i?+afU>*fdi}SAuORTN5qyzk?tr;->&5IRz{`@_kVU>z%!-H6)1E zXXxJU=Rj|uxpr$8H~8$OKEL2JVqa_FkWPAZ(;(YMfSPUR(4}(6y=1 zM~K+U-mt+o?&xW?VullPfeeNuy-fwUE%C5+sMcmB?MaN{ZabhGT2e470JPR)~@Bg zr9M4nOv9kb6mEi!&50Sqrd?-8`oW7YB#k!(?wqk_r7Dsh{!m1|r&;fPKbUPoag^3wrs;z!XHxfB} z?&4M3>7beA=+z;5pr*N8F2x~QiJnYlCxY;|D`hRTjT79E9!lSi<(*zamAIhYnN8MnzR zMi1-Kt}-CQr)W0A)^?`dG{9x^V*#@5rm=C-#+%>XleYm(hks&lAHX{Znn~pcFH>n^ zf{*oG++nH!p)`@AgW?}*xHD8;AmnqQC%mlKao;$cu?Vt{ zybkcxU1d$Q+fUmX3O5f;jtfTWMDcrgL&CyCEkWj`6c)p6=U=6tvv^YZfVchLN1{FeXzdUiMDp2B%FEPo<^K=mCB>s!>KJtPbz01D7b$vM__*CApge{>vg4L~b%Toszvu%%-n$pE5EQg*MC38qu0dx2K zpkC(=SXNhP;0JaZTjQi93AMQtpQt-izL1M*VYO4ZZB($JcXiRL;x<;VT%N;!1eC9X zMaI(aCd*baX$Yp`b~}UxKJW;6K|ZFX zI7NuK3V$K+Vc7|^AwsC+Zy#deTH$z>Y#OFcCw{bu@hZiPHs9rvdOyZPqA%0oGxTQE z%JKe1XHg{FO=bR`6cQ*5))w_q&|+?rI)J}QZw^NN)IAcKhP=m(F8rFhDhWqkp&Y-Q zjVlvZU23Nnp63Sd9s!}ls%fnlu_ahKLu}s^od6?yk0NUBE=0N}yF4wXK$buB$D+!o z;#bv8$lPGe>0;d`b+WdHzvZW8KNJSG49B~4U9HF+=x+Txcacn95_Y}M2PO;!32R^_ zMJ{Hq+GWTL#!JFLmg1Go-OgNyPW(M9m&p=+AlS}{<*`KatxFRs4=*)~pgm*K%1T}` zelD_S&q>gx#yawKc^*%$FL9%-%f!7M@y4I5>~JtU5p8=!MH3|WjWn#vQ{Z`LqQz%c%%hsLgu@*=yF`H6Hnf^!L!eYB8a=jq5WSHz`gY|x_E zc|QUh|7a>a*7jc(Gem+5OU3HLL;y7?cd7(rmS5=v)lO&{Im|j1R7O|k-7*#sc|KeVMDcuJ5eqX^k)to zn?Ih*qclxjhdh6g_&(O}Y%x2|ppzaZr!SX}GePeI@oU`$K3^!@?Fe#wi}*=pIQpt1 z^8mFcAyPUAJqde0DWpNUwS?Y_=0i0;m;ub!=~u&}HbF^DIxJyqCTUj04-1% zKe}18zRaW(%fI9(!{L<5(I3H7k}70*P?=|I2<%K1@R?G|zM*^W+K;odPoUgPfTndQ z7!r>iq>7NYX!%~cwwnG7#n95?8H|wyZf$qkxsZ!9?u+8&x(fPsVQvLe3Ok=e3a4PIhj! z>GLEK=JLH7NU-sq8yYYFX+>dawK+ASM->-bhwLi_&773Z+LutzSP=p;W~dSZ5|lqd zc$Z(bc}3Gv4{3F7ieBD>Xir^@9{DG3wALCrOQx)75uqiaf1l_q#%QGtQofP0@Hmc6 zOw=Ync3U=_)r6`u4T|R8f|mN*CwQ@59go zZ7QRn(GUe53BBLXrmRG);SYnwGcGUFmUP-QRv%Y8&|5Ew^tA@SG;k4Xhq2^1mhLOB z$)hVF!mr=6IFry_PLR9}tn{OQ&lDcm=u^TUtbPT^lsH#&6w13%FMMk2(%K0nVxf*A6U2{Fl%>IjdM- zKndeSbMO?Zoy6Xskn{%Fw9aj4;M?}1SR4l9!ZFI#$lVS9i~MF1CE>BUdx{Qw(5PTt zvr;&B*>Ii=<1$h}5xdk!=i|s0QMZWO&thf~oQqkLVKcqu;RK9>1`T>XE6kN&3Wjj& z8n$Png-h3MZaRcMoG6E4f>tvfPPgn+#)}we|d1b`wI9wDBJXdg|bWvN#HIN zMH}BR;mo|%qUd$V!-c$(wDD}O1qbuA2!yEe1GL5ulB!#jUQ7P&SPJ!z)z!TN8~?W6 zwJ0-G)$mIBL?em8!1f!Z_uV}@6$b%~6bx`yYvq?2;YIIDOVBk@3Z-Dplsp%&iOVFw zLU&=p_0E~-B^0GM96ncm5|hRG#*XOdwPIyK7q~j{rUX~Q4@lipSrbx&ab0{h0+?(<;A50kTQm>`q05`dJ4!=;CTrVe$ zOrIm}hmByWijW5FKNfS+Jwz5Q7J-fuD#=h)V!bgR_H)jP>KKqh`GI?SHd-lmUSq!v z6Y&zdIYaEjk#s)|=Kn*Zgr0G9{5dha`@ChezfY(EsQT%}u?apcH-S-`VNg;=u||VF z!|4Rr=jQO$wD4AaupL%z`*NC@F8>*U9*ND#sVgM~?A$B|#j#=Dc zatJJ?0weWh%5eb(WE)NKNUnZ*Ay3FCmP4m-dgV|woCzwM@~<2x!xoHRc+MlZhvqZR zOyZni?p9>$6dD#!+ed1fA-4D9FNch`Jx8x-ID}ki^nf)&?9d{A93$vc>5CXm*ua-U zUpajmAa6B7)vvmt&1z}PtG0a_Jpl|a2%m|;Uk^N>VeY~7Wwp?n7ntk?l)@)tXxb8ElSYT!67atv#MUE?4Hw8@ zRx*jgjoitkF#4{9bC+jXM35aHEzsPf>Sz;)e3+g9R%x6X6rJF7AwzJJZ~0#0Kj0JO z&&aUy7bOFn9Ti1+Nbse78yVxO3RT@4AqlNoC(k`Cw*F%m+P_+2^<_^eNu6;wE*PcA z*!rboov~@-qw5sT+D~KA}@AIX=2Wa{9P9@t$^4VFif5X4NvF>4>;{j z6z`btzxnB1xMMoDP~Kpm`s*=I!vO!*rJ~OzTjM|}{ZckzBmNt7)b$^OO9Y_Jp{I*5 zNR{^Yzqqt#0oXfzIm}IazYYRHHPvO&oy?TAqmJ-SD@Lg0tVcY4q^{2=(KeYKn!%lN z4AIqwM9)9GjjkDWFyH(LEBenBcrpTe-1HC~O_}Vcd9ZoY_oK0=zl=@# zQA%@nj8Z~0oK$@tArX|Irml3*A65;<6}Q-|I|_#N_tv;hE^sJ`{%~&5=>=l&cGmjK(iyZh zl5SRU^)zZ2=N0lx+TxPpn7+`knTN zv8+YNvQ%o_ox--MQ=l}%O+!=Nt%aD}nd&_n`|eU(hBon`)0H*r_zvo9MxFY2kzaL2yH+zm|Qkw zX$9mpD8ENbHMO}TaQAA>`1c0NNDX-zLU@8k03Nf@P+VCH#_M*u4BgaU&h`|k0|abY z6bZpl$#rMxQ=t>sC#L_1s{YG`$ zpca&X%MYY4yi|KJ;CwcWylwnM$(e}M^C7d9qj5S&X_Hu~MBiAs{qny9={Hlz52`^- zFVTh+?n?>?HEtGZL?F9Ms!$ZO61BxeZ)etM0B#P)DIrVDY1j~t8Hv4Gzm;l|(q|-1 z6jm0|wq#wR6OVs5W{uD`1_EbC^Z6E~%AG7wi|r(1xY6VZQ?}4;$EJ0JD|_QbS~7~x z+StFWMdesZ?3gG2tdk=H>SofX2}K)e+H?VJPjr&{1|PsY#$txiD9@Xa`geX1dHX@` zmewfc!D2?9v$ar~+P&DlHDK8Zn_6r^d?=r6uGan^nU>871oJ~(JTOs8S{n^3DfyD(Li!Rum4r14${VbyZ;e0y^x+)icfX;HLv0| ze$4ETm&YqZzmhKkxip^64E9SkAx_E;yME-3$Pp^JXFNBL<{E*3lvi80MAaIh;-um^ zMDMoFNsl~Cw!sF@4}SgReZ5LrvQGb5Spys7U#xdMb0L1#<^*MzMRM)E5YHc!6!*?M z5vMT?Ubm^5H3d+cAKY92jMMKy(y`;jMdPw6YAVtlfM=(Qr(+tr|D3LYtp;k5e>Jj_ zV_ccQc}Kn*r$<+toaOQ|pP&kb;h2jJ5$O0dwCuaW8@7}0N};`vDn)t}jvdu5HkoLy zq?=Y*gFOtORZ`@}tP=T$Bt9Kf6t`CuAW@c3Lawg=#Y_aBfubO9ALDc!PHJySQ>~zI zO};Lzb}bz1mu1IB`M{aH;o!H<>nT4S3>vHu+(rAQ)9^%Ht#1Poijn8us;-_w;eO0x z3cwlP>_JA^mRNlr^bY*s4Eon};hc+7?}eAZw;8!VPBO%Z*Vs(6@zX&1)kpBy&xdku zs$MegbapxUY+?8Yv#Ms`51hQ306b$SUsCzt_5)%Xo|yOv@Jh2VHpj@0%;#d2;9&MN z460PCL#{2vzqmwbtk;Z`kG<3|iN8TD7J6+KUlR8NU-BpoUC5O>Iz1|6w5k)fWOfCn*6-44E#qprRL#%6G{k!vr@e5pC$K7f|3r6dV(0#+Ox{ zrwwNFbmKIW2}v^u_$Y)!Y*3>FW>bJ%kB9wbh{4^eEQ6m@--FbPct0^*9~QGPm`xS6 z8KPcYPu_$1t$^m(ffIybR&lhbeFTG>JjUz((jVWVDlsI9UiB9NI;Ue}xZ8myiSqrS zyIvZ?6&lsm+7ZYvb8;Ow&76unKKVYf9l1;#C-l}uV)bTW`ir}{nPTMQ^e6JQgv6JMp%vqx(zx+#lh9WT-_g?f*EqzR_>&6BuK3mVS}Bg858*mYWL6~ zn{ic7F7weSiOFyU%Pz}Okw;)>t``5e)EYFO>GL=$%FqogSr!xY5LsK?y z9OuCmvVYs)7RGui?icb*Ghy6&4U49$cjJ=knz@o5e{shl3mqP%Zg$jBM>Tz&%|b`h zZy^G6qpoaP8jV%W^c)A*_ki49*Sg~uh>3fk{H2F26!I?gR)>Hs>a)0~IFp7G=(j-O zgB%iqe113A(2!9=*DT`(4R83r>~bVNNOS}oV839_%@0wL7$)vmGoU!UxB%Ls=Bi68 zRq0CnQW0qlYq3XSSNzeDPMH%4!xo#KA*0xbh6yb+0p0dZ4dfK6n#8{-PG#< zVLX4gjy&_=&Z&|cb|L2mBpEPxDZz`hLj;p6-5U}PGTM%TxIKkskg3ss{n-*9YI)gf zlQPdkxV0Ccch!!HbUHtSTTIDu&M+icL=qZwxj&AIS`E?(lkoIu8v683Ja|`u3&qSq z($nFaRf!pe^K8i>5{y%F&?N0Lf45a0Z9jm!Q%K9lnxg)};U~?Gx>VGU5sB;}f3LT# z16#MFf!3EOHze=?{{u;9U40Lai${5WVp2c5kt3%RVTkg&2aOQb#?*UD2 z=61(7t0|1MW%v)-?9d3>uAzyOg}vSE$1#M3|8+H*qmD+wZwtF0s6&8lRLebDVl?4_ z0m!R7ywCDaPXo&L<{hEu+l#y{^~2>A0o-wV{spBz#P%l*$`B!KpcxYc+f(I;ntb(G zwA+ffFg_qI&TGKw70EX^Qw%XE?=bfH+El!c7J-hMT4o&#hIs@1In21?4Ke|e;V)J{ z1!~G50);NGD5mqn^eexy0?iynf4uV!^WJ3@ewJn4MeoX& z1GMN6h7o&yvT|pfFzB;^2+|Fe5dFJ^e$B-Dyf~8EORK`^ofPgiTNg0kPQQp^(@{=| zG|>%)%+}<+ft{x57_;EyldW+#$Lw4ki0Y@|+~Z{|&XIK}5(g zyR<77mPBO9^qn?9^trx{uFjT_m~b^P#S3Hjo3o`|)|RdG4ctI>wrGin&>!aK58BI| zb0-(lT}H!R*TR{-u!J6k(Nu_b0&va7&1Ww=xM~Y|%D?VmZNt!vRG5r6d}$Bs`L7LIq+mr4kZ=P%O)V7yoOOiv=wH$%V>AP;N;sHhea>86Mf;5 z{&b#1IsOs9MZ8D9XNXn38LaYE0dx4FqHwT_?zGa4B=TO$xm9eTm3F8W3IjVORU%!< z(vO3b1BoP&K^pof(6NMzh}lML-E{4qP;h1B65@)OHCvfn(sLR!(rs-93`78d+9Rl5 zK-X@Ikg_f{xI}i_t!E z$g8%LX;n3%>`)n(jujG3#6=2j-AV6gVIoT8Y2=*Nd92FDj9X!Scdyg!d~a&^{7$KPvMJASVt}nMHcODc2I|wqTLBpmtWF2&)^4#1t`+1DlnfsdY*Iq z_*jUPLp~&*4O*axYOl&$g5?-d2eSL(8Js*I!ZkAYHDOHw8*Ce8=k@|=k+I8tqr6U~ zJw1X?7Yo6sJDy7K25P6R2i}No$J0#{-HOsp7;*M7+-;<9%&daiXoLLnOzFZwB!K9$ z5HR2>?=8eUWWIxZy_q%$Qi(yh4qp&63a#=OKm7eJ)*T@s^ErUBB(!UbR!EhHuNjaIxJhzV?eC__wBEb?`z9PHIfq&XmM&vI4KZHI3Wor0>qN|_k$Klm zBcC(ikb8*iGCO;7EbN~bhw#(c`WhM}a&~%uKYOM#XNt&8t-C7L=BBVmtGMs!7c2X0 zIGxL_^F?|JeG-2Eb!WR>bqti?ARjHz9?EKpHn6|Ulm)piLsolo^>6fDrLfC|W~GZe zw-r)MvCe^j*SKif6H9&yoHB-ys$K~_Uh##~60%xd$ufjSJD|-;9E|sEB|DpsYUYDR zasS_rDqniD%Q_w6q~4jej&9CYA}1jEpg2tSm*r1}VasMO5nFnGC5wmSDBRY1^!z5! z%6ob?fU5$a9e9q{KL( zt&bax;ocBIu=4@VALqwLiuNikB9B^WdexU%#+9j96`nWJS5t*s8t`is&daXpc8}S! zSzqe|gnlqW55%P}Eu|mdIT!;W)sd^ zjI=#jsSKj~A*4hL8@*`snBEJJ)u3QQs6?`Ki~b#hPy_M!`eycP2zST$b16L?Cf)+N zb9$j3(6Wf`$Jgkb&U76EU}s!gJ8f&?4+==m`qM|s96uvRi3;LeQ@1$BP3{VndeR#i zFj5S)=?XF4xb^*g5qO~8QCQXJX(WIHG;SQSn&{6wy#{_sut-Q;Xn=RLsCYus27i1 z<*2L%DGQ&x5*r5t?=t@p&T!ZqEVV8!$;s`{9$BAQ^AKS&c@QALR$$oQ?{bReT7}{h zG)GS^uhAEhX;aR6hlIsBW!84fnW$-7tI<6MKn%^=F3)$=_EC zmr3GLQc1!!KlZwYd%)tCV)k&wLyH|m=@a9YKnZEWkFhCc|B-}FNgf_3Vj`?G`f__3 zCJ1hq*tQYDC^T!919qi4&`oP2z~G0mS(0arG%ra1oA|KMo&Hn9CGf4d&@35h10LyT zL3m9zS>;fWr6Qe*_O0x$!GLAt>Rfw{gKgD{OWYD#KMO9-juDI*SYvHwVvT}k3j!EcmYucuZLI)5#lVXXn(Mg<<2%VFl}!FNIq z+`3ZKx9E&d-NBpUABqR#vS^2u7Gm27SELdG`rH!6HMRQc^J8z#**EkQ^U&)-UfAe$ zwwL__|>4e-Cv&t1JmTv!i_uJ^vQxvS9*!CBbv*Sc#)``$LB0VQ1*>N}<<3K)&IPoYRLT zFzZcpZtCm1EQxPm8LJDzN%X>72zIGx0cxP6oX+kF{lyPvCN?jCyynXN9u&!Jh0?w= zJLVaWvz|*>JA4~ph0RPo>7SN-jOq6o>6KAjjQpQ47|W@uFmVn-8ezx;rSw{;_lAL_ zlYE2h{uW)XgNLSTm;7ioGrc5k%)CIM<&KHut#I!5=SkGl^OU-x4XCWJ18^Loe_>gN z1;wjos8H^fN$K%XJ@nEBG(&GL6I~`hFK^V9{$1K&e=$y3n?p@H`9m+RggwqTzr|n1 zWb{@JH`no6+g1K|xP(HmcPkt?OlOszpXkAw=uatKq=gAO%@m~2rAPbG1}_kb%CPA) zc6!qoC|#q3quKJdj=K=u6}ZSlnJPX zs2ps4?$T)sm@GpALHcc5BI3`_+RmST9^bFD@t3LPXuuw}}I%po}S9;uI;k zM9B>mLhTj$ZU+L)u!B|+|35NYUJ`&59j*kXk_W-`EKi&dy4-2BOk>5~m{an3 zZ`w0~Ti5204B%@RT?4to)-BXq!`&oBg36z~a)fXz8>M%QWd9}ox;IuKx;l^@eoitN z*Yh;-1qtHeD|M5UH6FI% zYUM|w-JDWu>KrXG@FpEtt+f;KN_g@6ZZ_=6ZzFtb7bE^ z5$PDz>W_hutipFO^wC zR67QCvsOFaIs3|;zO6PHqK=ia=ghU4Gz~+J5$K956!(C}9t1TzOG0#442 zmBoG)oGaptW7*mXmJKP^P%3=7Xo-nVrs*=eGHQ`nkS;i6-l|KnZX7cHCiVJ>O{y4b z94dT1M}0>sJAV5VfD+nim2Y#KG^BMY>q|-ZdSBYvaYX9=V7qRstgg|!I_#F*^$pUeNL^`-C@~4*&41eB8}f6 zMm4puBL-3BVGnr@q7-1Ia&%bnd8Agr{NmWzqFyH9b@&3H+w-bMsi~^CGi06pC|8G1 z6AY28PyJc7!PHyKyMzd>Z=a**Q@NWF9bz8xQ}At}S!JeYQR$Hm#w%-4kLesnWYy0_J3vX6oOa}e%;ypdx3 z;Ik2`t1RiAgxvC4d3LjKj#SGN8c1`7P7VD-TNXJZ!y6P2L8j z9qr`pc?AoD;qBj-Mc%1gy$asUf&0-Xgq(2RU+fNVY`YvWmmg$MiLF{|Tz93aF@1J0 z479nDt@#e_ZU1GC&wV<%CffUvBsb&*FdZU4)S=w+(k||Lb-4(ZR;kK~1=q}iK4i3{ zGq-;Lu14H=;b;!4R%`Kj;y#VrCi-cuULg2U+?!%$l$6vj=mr}@VuaxC5FbNJt7|I) z6RBmcaK6xZZm0ER;D=w%fB$p8m85#n5UzuTKQ~>{kV$T87#EzT54ojIuB+DpbDz8} zPJK1{E_YN;iAJEb(vkV4pMlF!Dz`Y(-$3J^pSewJ+;*0~$^XJVVw;yi!r8iD^no3E{HR! z+ChP*`BI2q>e|vu9KQ$)q+5%sfA`v?ex`@bBwuFTUIujn-ujN^m16PHC3L8U-Vf&v zwU=_TdRegCq)IVE#Dn2#jIDTAulG-m{IV4>$s`(QSA zT;0xHr}Q1jTf4=<>sPkBP=0?l{61s#OAt(WuIqCrcT(H@_JbXIurG0n*Cy6o6H_YR zP0ueXqJLBaS(JW-i*EQ7pJx40DG3sGRxGxjq^~oD*xMhxZO7@h3i_W^6hS{cA5yQw z?pwr))A9?HI(z`nRic&jz+Om^){v+-Yjl+Jk zL5>zxy?BOlNJ`MJ+>o-O?aso~Y&{+zd*#G>-oPgWy9ilgO7azaDTzcl2wZ}Py4u(SSh3{%mxPII?JZ&HD z?#rXm@BBZO&O9KhdVl}tz!^LPXWkqRGlyXq$C+UUht&arFfAE21;x-@5X~4A16%@^ zTq-XEf+CXQN~q<4xRauymRgL8N@|5$YS*r0ns)1I*>bzpy}xJr{{BltV9xUSyg%>v z^SmA&E_BijXQD&5@XPaLIYVh#HXQi!ef#khv67|R=Ta)J)$*~vreV34DR8Sgu1V4H z*>T#b1QG(xUzw?Y6n{2PGHZ!S%OrrJ`PFdKcrC32=jU#;ykTG0-T~C z7rB(U)V`;S<2Ts<^r)YHi|BU0wke7~kw3qW24WX!e<+SxQRQUV@R+BE7C_MAYrpmV zYhjwle444ym4{6$LBoh+@owEwT^f7Yx>Ju=%ao(7>_PW(fnPn8<+V_-_%*T1SPe+& zipQC(5So)?Yafo)wAk@T3-3Kj<)Q2^w)_}}9I!Ucn4?|qxt|$gyy6z^89iskBcM^v z6}Xn=u7xTwCe`1O5SOcHD`M6sz00;}H^6PYw~a}X6d%%OB-oPX#>Ba}z8iC%p_qcG zKE8OgWSK9X!|OUvv6`LIcR`xvudeHB>4+Gblx})QyWG9w0se4ZYf&`eopq#Ve}AqR z;urxX$J3xO-So9FJ==()qUviEjq)FX3LpU<3L5r%z$7MD`-rpV{?SYTlPvLq!H z3JC1eMK(d|fA3+Tthzm;W~CUgyb{Qa&y>1g-ZayQ5Xk>Peqs@3;i4aE*A!H*obz?T!}+fk$K+q6Th=!OU(!Rv>{3>U?le*eML8r1*n$( z!SjQV?rI;c8BTo@DTt!_mi*t170E^vg^o@Wct@@Xq6PSS)Ve4JTKEbg0yUd^n$+; z-<{YMjT@%M4$Iu@djEc^_AG4ocgN@V*Sq^DEPy_kcYm+x4I~9aRdy!nR_0dv?@(r4 z{4jpz;dlrW1W?0Rw0@kd^>-p>N%w@;$Siq%cC-Lj{9g^SUi=VlFjaw;EZGR?r z+fw&qUVS=`-Ze4j<|w$$-O_!c!c`2T0$)uDMm4h{^y;4R=2QOMI8{Qlj~qwdq%&Ce zrK6(^-voP&WRuYwW+Jv2l1HG*EvV$$WL@bf=}j12f&`38chT8kt}{!MZlA(CI!^venJNF7~S z!MR-YlG*Tf7Tr^06fNW4v}txSd{Z^vRTu8A79F~_BMbc{p?WX^L1xHqn6C0!2Z%-aa4F&9?L-u}S)P1|o}_uThk|5J7h-a3H{>sM;;okP!1=U>)17nT zy83ekOXLcz_9NKLg}lAyk;^fnV%5Hd5I3;wk)F)e1Tz zbBBHIC(`9OE+v)iQ|~l3V!SKY<;tx_bc83Jkp^dzvl&Ok2XpS~bpT*LM3mM^}F4I1-)Y2LeVV0<&m`KL6+SeylYBX#KL`*avKQxf5& zSyO>pDz7kW^=;|&VQIbtOx3oq2Kvgte!?ABQ}P7eDPj)m`VXgwm#FbAqEOmafo{Ny zRPl)%qT$ZO(6nOV##eB+zp#u+q_jp_F@$cs&S5O`tcE^_hD;kbfxfBdDywKxK40+9 zg)}}CS@mOmPm=E{dRd3y@Gf={+!bHF%K7Yfq|vD)c}@Wh)=Eo;$UAJ(6r@PX<$CGl zeDCk=piM`$d-n?m&QxxvMKT>~;W0!?c=%k5e77=h?Z{=;tV5Z;8?KLGjg%cldc!QNoODvoMfmU<2lzfv93_3_<`e6IqkV=Wsc z^&gJjI`j^`7In9iP5xlB^xrU3^IyTwRbM|76~8W4_tSjDO<=0;4-o9gqj}yF$#nGG z;bxR)ujU}S%JYW^@{DvZyA7Z+A# z{D?fDc6I7cI@rUyzD~mI_h_aPk+tWR(v$-BkQ$-du>46E3{0>T;-ZA@w4lUR88RF4 zA#kNzuF26;d1IxD#x9|PsLY$_!dIH4h%jc8^z#I!pZxuNW*srx3^gfQ^q1L#w@=c# zEkKwu&g&wW2l>(7NUo{UEG;ujYJP{aid46m=_6q^k1;trh9+C}p52|^s5J#$_*ky1 z7Tc$+Qmn1fP*joFt`2yjqnksuVCHuKZEyM+16*ALpjCRf1m;yttPOF5iUo0W@d^7& zB7$?hao0dk&10ukQ&<6iggHPikv2>f?k3@g(0`wRTb(ZX2YUzW3VLZCTcrDaD7~|c zn$=!*#mz$gb2gb2A>388BTf9ip1IQTvGSg!7*Lf)fCNRe3%QhhIpJCLkthfJQdB;l zjtt?tB56h>{~#??{{3}#5AUpekycECJ!|L!ycD52>GyoxKqj@tY3Pfx$1A^DsMVL9xyx=cU9!kY5np;{|f7C4yDd4dd(ae%Dg2Vc_{_}(pCTm z{2czH>xl`Kj_B})MTRie(nn%%QM*t@n@2Ee-TYx>*$n~Izh}|ovGiQNSX&f2%!egz zs+v9?0BvcBZ4>#2)1fY}B%m;#o;!}n;s5Boq3+OkfxNcS!-itB=uEd4JR>729I=Mk zdlvc9@w4>iK)xVRZD>44qXHo&x*A4Cp7t#$EpuKSmSCJZv%V_B{M$zDDOuI+L%P}b z`xrYLk4qFA!fIkTNRFI8;Bnr2<9q5Itlbc>^V(NH0DroS>(CgYPO%eApNTFe3uKR^ z=~y4L$IS3l&hu=Yy>46p#O-=;2;dRUdkd2F#v|s{q4bPD*Qux9KH`9*cqUJ}JV~KZ zjHfeZ?YR2E6&T;>dLbh)W89;mMK93r1L;bgu(VxUDE;^%*#d6E0f>oSjHI3OwZDS1>qve+lQ$43ZwbPKms*yE84( zb%w{NN1AnsD~VCo^74i4lIy71*TxuW(=*IPdBn|AI6Y~hBb&k&@XaZO^3YDL zw&6yDVlkjKRwMWYd6k<}3m?&deA;!{Qt(XI^0ecSpp2u*qbOfRKWO+^WEai@B`;AZ zW2bE*$;w^Ip()$ELUk>B78hr7p!VC|{PmX~+?S8&DQ6Ssc!%6o#Xw_bk$-R0CSIf87rKUGpwG0+6I$ehPELDDckwy;NiTvjZCGWF zX^3wm=Kva(M2qG!&6I_d$^LX~4DT8eD@(B)+>I|PfrFQRTqE@k!2WwI#@M|wJ}7kB z@_+`Kb4-hCY;IhgL!M*W#SUQXMkmm}lK4iLABIZ8)){BF)7UbM2}L8g^P{Oi&4<_4 zQ`llmr;i00LHO93k$|_{^De!r7f$a!TSE0C`MVeqzhUL771Dv(y4*CTn(fv_Wil$= zg=+a|6^(m`B6GM)rEa~j{xVE&ONVje4n&N#s-X!y(Cs5FGI;|FPs!3Ai*9iL%ZIrX zg|xnoZ~xrs{zg{6%!3(3LC;fJG}CLi^eon`zU9&y;28p#c=`D>@S6J=1?^kMCEn02 zOri~fG~X`8+DyOG9xt9?3v63{^2QxPUeQk}GIJE?)6Wa#^^v9ku4V^~EtKODh!2NK za)UNbN7wV@PhzF8F>0?^6V9oF!HOxg%ml$HfS1yz>1=svr}SnTy>H{s7vvhE2TPBG z^&6II;=LAs%_ zDx@}X{p!7`UZpa9S)g0Jl#FH$3BrcW}M>GjM~UCA@TTc3b3Lt&8G zzkbXch?geiNAa@`4VHof#HurDts``g^G!;5nXyGSN_7MHnPW@n$}_a{h^bxhG{g27 zV&+OdldQ>%q!__hq9W>SQxW|vOOM{r{q02>#8XhU)T@Tt@1E+pxk8oir3AW}I(uwg z-?Q)Gn9rt79%;eQVd2zJqq-{N^uy}~@$#v7(=hDe>ci-ItYme0L+M_u8XJ63VprVX zhheF7Xds2f)&tb8lrAxg+bf`hbafZegkb(wOV|D5j#fEw9uU>^{A}qt3zD8lKM517 zdK?8y$Ch=c7!;EM<|vP(w*#=}u9!tr?T~y`1dByu*N(J6fhWv!kK0dzIuQm8q!!q) zYTfzdZi>7tC(xv6b1YN1_0t)C;~^n~J=8bM^;MUQAEn5~Uw~a4*S|xonoH=U<2%z@s+&l`A7(oxBz=*9?$20wjTK+h&a3JrCwEPf6p;@hQszMsE)z4{vTT4l$2 zAfJatCUc|BW|siV9C`@g6Ph+Ch1Pm9vG{2nom$nx{Rip7Qts(I>5B}m>!C?-zQ|5c z{mB(|(11zW79$*BDjh{714NucW2f>66m_tC>^UC_Il#t~t&vhQ7*#^=i}1A1l#DDp zeTq5-D1L+qV zGu!bi)9PtM+B|ocp|=i@@RvS?0_&ywtsKNA5BpPaCY=~4yjVC>qIWLvs9u)b!ePHF zUs_nicbDu=FcnG9cH!?CIa>)K;&6Wf|Gi#njMwj~+L5sjIwwO60&tXi|2Q2u4s(V{ zZxl^WyApLp%)J^h-r(|jbA zEPbmXg9f@WKUvJc*EP{w8b!Q7GB~^m;c7{Vj>Y#8uMbcR(8>YjXiC>ok6DC5W@BB% z)lk(W(K~JFqbObwuI7V6|Wdx^@1_n{7iK0aAyVT-->a`GUUO&r@S1r@a0V3Mn z79d_naPfMLtj4*98)rfG4hSMo(JWMqph{Vbj_|lOil*nsv$jp2pw@EA>2*7I-k%%YRb*MQ`(345;oWPAbMTO~H zl94XHLOpL-GW^b0mXEyzHLL>zM>>%w9&(T)bXDPqmJ3vx4;~#vo4G`kta!-DtvO%`H%tX+GnbG|=6XkwsL}C*nM7&s5@r~kTqb=x2DuJW)k1knXmRAiy}Ab`ZnYsU zJVKghro$ydU9a!xZ8jYrhUKJ-7MdW-PZ}utG-(%|kbgo?8^bZhO(cbKt23Nuc&O6N z_pD65^Z67WU1ts-qH(ph^WKbCUSjo_Eo{IeNHi=Lg~rhcF6b1dee;{?*HxBQM{p?l zg5NS7c?&|$jK%%we;Pd`dY^eSf<3z>SGMk}DKtqF`8{{}9NiqLZc>aroyY3*p`m+V zx#wP^=^2@C(dzS#z=ic9CNo_`gU1Tx+H57#dJSQQ>_F=9NlJ~SGSyg1NG>HF45W+ zmu}HkVo+8wqutCJIitfpMf$hDZmtP!Q*3r=$ECfU7$E98a*@sr*V=)yjdoSGlOgNjx1=P4xxYasWwxhppjfF<|lTVPbKp5o>HTe4+y!#!CIQBKV zlg^#lO^1RqQ;}Tx8Jnv`-@6=BZY$L9e0}j@d25)0n2Wkv8%xNxJB+~?2{BmWFQ0O3 z1Us{&owJwB`6hb>!~ktEc%Y+_4g31j!LjPi<1S}n@=#;oYtoL>?OjRjOa} z`$uC+mAh5%9VJ7f)j6b&ZbhIgI{xoWso@2)Lf`(gxB~MIox-ih_+56WPgl8>+$kL$ z9TbDx+Z6_@ z)$}S8AT>u|e(`IxR*UW&25Y1W75`ZU96HSp#26)LVd7SFkHHs!3+aq#6~LIv{Es@# zG_owND}oQ#=f|jhFjVWXUQ`~$XhVo=3X}RmYnrtApkMBU;reNU^_$3n_GhsyS2?H- zV#Estebe}JPp&A6m@BSVC~E?WCc`A7&1lCUIZmou?w236(ZDPC<#elz&oDa;7DL}8 z4uwbYK&mI@GV^d=xd@Ua?I3j#6CsB=B7cCTM6vU%&%z578-^0YUcygYz z=|E=9Z7fl@2BM*^lD0-hy4hSQ4XBk>0P-P_h}Dc2wroC=Anniy=qMkQe=`WPlWRZE z-cCI#oOjNQYmZBhWj3=24I9Z%dhw3@NjNy^b7E1G08n*llxk6ocd-2k`P$=!c%Q-^TWFbJFIoSDu)WzeTd}|UE9eG9DuF~WxPP_ljL@nb=g(+?ZEr@2$ zPN?&;PVRAsZR8)O(ja0IjSs;Z($E>P-Q1_69pgDgE1en0_^}&2(eBqpS^^go(c<%+ z7#C2NVIJbskV1bdQ2;H8)4DUvk!-}!+)uHLrkTW1`|3<3>=wvc#562Z+^KiO1Ec`J zVZ6S$R#~fm)_3$hK0o)hpsPH@AygEj&bo{WKxn~KI>41M!Ar1zHS zbr<|$Dm^J(k2by!{YNe4;4|pkaDMFkP;&3%owhv`@q#WWTxd)8Y|M6;{mj}fx?go> z!%}*^B-1L)1OzqnJBGcl;9uO^5kJVRQes_|K)^1_|MvRS^Zt|&Y?u&DDkXb~uUkG= zK4~_+%*jR0#O=W1p)R=~07QV)ANhou?x6wn#B83c?=z~=$y_j5f>Fp^?UgMBT`4TkF@{JIoz!7&te#gc%{QQh#mc=Nh z9WSg6&pPmc+;Z+)RHU?E#k`mXD*Mt-LutHJIxi+<^nvc%vy%@%+&PZ|qw8?Oj?u@Na}o)&=4IFxctR?+Hf60NjV#cgljc%2{Rmj=lI3cT?=K+1G=0l+9L zCd<=zGi&=^kva_Wr(Tfyd7~V(7zT&gDe@lTVWFVkhDmK}MYx)@!=y7q8D2g%KtzVt z)!F23VdAM~BJ+kE-b9l&Gh?La0k*myk`NVeAYf<4KI%7vIb#iT)D{w0&>pth5 zA7<8Zn*`T$c6+@OV54h!=dYhFDOc!;Ln60+=6DJZ)J4T8;?ehbDhk@`Q)4R1zHfx` zp$j8JL`~d|{TB@vm~Mq8;&2>oAdanZekeH5z|^c1dL_wNJ^+v zb}!t(WzBg6Z9E+w%v#h&58fYb>0p$I>+EdSR%se&LyQ=QcDI=wA{v-iD%M2;=83{6cJA|0^bgqk;ty>pj^8-ep zcJINAXSa=!sgOGE3!pVu0kZEtF7>RU|4xv9-_E$DT#I-J3F7tA9F=9=KXzwqf%mFk zAHA-UR;@xLs^kvMLsixD>Ua#J9p*C^9mny7#$K-a9($Gd^&#Tm2g(9ceKK74 z2^pd{nQgpkIso8Q^Q_j1e~w5$n$WAiXYW#5)&=>}kR9mn76+4gI&HE8O|r9Vw>v^w zWMz1%DqT3F(b`D2Sn&%zL0$~d3PWy5*%kDrhgl*0xsX=H^2krs9aw5ga-jz`j49J- zB=tjDl1$%+*f1W~<>led7N3kYqsMm{6 z{FgjNQFQ%i<8#?RazY$^5o)ePEDjDc&#S0?mO8O(#<4Hv+}A13vi&YcLn@UK?W`4h zpo99})9Spoq=GMclqxex{PB|Wq}CNzu&KN}%8$MQWkzm}jatJ?!;&3wv^l&kS(y3M z|22Z|ATI)EY2Pr4AoNeix8}a4DQB!wc@ooOh*YtqrgW_-CnxT9#UWkzAZ54n7j*{E zVtYrw-3~1d=VMZz&OE(4*MNcClTG>!T1Sszl(LET1ZKwpTSKW6@e#u(!;^_&v^>S? zweh4p$APEUHH1d&muG|$KU{xWaoC3Wj)nZ=n2d;*{^r##{}?W?D~4p#har4lON9=O zt=HzG)3ll<7^LrN$t($QrPonIxPBd`Nr)7mmYDzqd*Yb5cb?B|<9V|8J)rj_+7Ql1 zv|Ogx2n=RR)kfG>*1ZfbrCZmAk8Q7~PpxnmNz$UtVg`8Rc95$%-Kx^XI6Q306|9J< zr}z)at>jDfG97uI+d7l>7Zf6)=`FTz-l5ADEG6kY+9t!*8`rNS0?6i)h}d4$9RZ)4N&>Uygjkhl1Pm@kD8V0X$_&X^cUg z4>&0@Yp;cJ{hH{64Tq1n;>ENH`O#;+=Y)Woiw;!CA}!pQ3G+TB^Cm(R=i z!cXp?msNPA$TVEcpOYN6Mw)a-6)XLBfGrjp-*!!_d*YVMaUDA8^++vP$8tmUUfur| zQruFhMaRJoxH6DiV35c0_{A#)3Ng{>o!BPSqU@)2zsz`O@+1!EgaY&1i=<0B`sYL4 zz@=;yh5?n-yaZ`&(WD8KZa739?RzH$Ptpszy|9_<*U~yOW0$6da%+dsrfYP2j_642 znt9m#X%v*2cDe8^b^=?5^CsM2)dCqzLNC|}h7Ur8rs7nayGlf8L2sU6Sv8V}uum?p zf-js#yiSTZin+rSnk^A5^1)Pp+C1CaDumgwx?Miyu=gL;3d_^#&h=jp?IgcJn@InR zP=%9XZOV+)l*>pOJ%d&v6TRjPEsoG0RTs%WQ0B4w^=R$gtX=ikdZ< zAay-1nFcC0PtUy8hAXC^2d51%B9$IpNONSb?vy$9gcjK^?$26SUHN2sfw&_!x~>;g z6WINR58I)S=$|9t%ay3N0L%O!+!*8EiaS2eCn9RhVo154vxz&dwYWD(zX(xp_Gh}> z20QX)y=|A($kAO=YIwUpV>jgpYAnz62RNngX)*AUHnn(x+;Q~S;zdk7qw@!1>c44> z3kPQVE)198`;DdZ$C>ZwSE4KZxx%&5^u-)>wJ%JNgAyl*(m@Z5cW=9RRT~#NhQqT{ zuoha?`ZM%{h5KI&Ud*$+e$R=-xXR ze?nSq;lW5{b4~B+0bV%l<9l$aRAiy5cQ8GTKAO;pfVru3aejn;o$@gnvE{jvsvZu` zaWj}P)MtUm<;hI$V-tN|psTfTI)B{-gBtuqaL?(RSSBjs@Ing`ab~tnTS;=&p<0}iqV2wix#!o@UE3TXbGvAa}F@`43i zDn=216CLKrnv#kK%BT#yxk$4>?%j%V&&Zr?nw3O*X3^as2*nlIk=geSPSn*I;cK{f zp6;8368()bGA%(?GlL8U>M%?D=Yk6q9vUA-?P^nvSDU{RCY1f-XnP}n(WI4U7Bi`a zQKL;M0^m9Rv^NQ!lJC3ag>TUFaZ-OXJ$YRU52WY4(beX7(~C6o9q!J*bTZD62p+k=P`*tMX_Ksxl)Z78p6JDc6SAUhY(hs#8L_QKhB$I&Ne}gd>)Kjyr=RC z{K>1kKOCQe6dZ(#9k)SHUN`pM_P_q&U!r`Rl~Xt$7FivUhy?QOPAJj)U$?x_Q>p!D0zhCa3m>NN2h*;p!=9S?NXfJ0x_c z*}x09)+MLBA2ap1I;Y3`qJmxT0?`50IfAU9g{iDdHF_`d#TJZ{O7!Xg>v+v{`ym_d zKE50w62U7Ji`Cf1$|sLx7b7vQH!sGj(4-*k=%AO0m=z6oTErm5@CDD}^1q1R5Iw3N zB|Ty%94-KaSKq+gV1I<4GB>fR8rq^5e<1{tvRr{pnGNzN2SIqz!HL1uBfMjawJZy8 zc@eI4ID5t7eQYpq>kM1vIPzq4*qKrHMEC|r|J5S*cCYaC9on33OzHB*e6@J*qjnXJ zA4XjIv&fwE5}ENOe&_KR#CWgKQ9LQ2{fzY=!l{0-dH>7Sn^)Q3F|ieqal)=l_t&O4 zt|8s}iV>f-S(Bp*QL)Duo#Jr`haZpt?nmPI;-uab{KUAxzc2(QEWMnrU(8d;6k6F(#~N5Erzko~(5Ur@O@@+e&5 zcB4(ks(9;zUZ@8Zxs@yM>#fC=M;2I7D5%Gk2SGh%9IvF}+k!CRd()AY(S>A4OzZ3Y z>?a{ysob8g#vWDcgI9kAGt=cbZ2xNt)C1Y)QcsMmIXWH>r5?OK)M=4@11ku|18iTN>s2rb4cgum{*U7BDj zUEsP~h|j$luzj!QNj*vlqbLH`@H=`7yvbjW{3|%n01W&})})4=<%mrRlcFFk}_Q8AV2>~Na{e3lztw!kKdt+3!$ z9>S}YI9>qMj+Kvc@AN%$ZTezo=`xQ&Gmb7_@i} z4~FX%eb2P|T9g@Ea{sA#%*E|;?KJ*`K-pDo-2Q3GU-&|YtZ2~Zti~4=u?v*4mxWd8 zIBkQ9?Zzs+tk-AWGmWb;F&0yDiSKMZ9*m>7(}J$>E3KH5*oCn=XhPkkDvdtr7XJ6? z77Lpqy0)jLPk1hLbYTZpvx}vs#*uRqE7OgLM_+!`bwZe%NHC1CzbH~nr=dtm+q1CM z&8%-YAAg#wbhzi)PJ0zYT{FB6EM+_wv(~xTh}fFH90bV?@22ob-1a6?kMyp|6P=xJ zu!%8R01<0&Nl`8}CzW%eTA^3E0F3R2>^c=G`#k|R2aAGt@xO)1nuo=LWDmeJr0BE! z=*B*4EGU!eX2b?3;7q`*gx;e?)?WSFSMP= zw{P|;QeDXYvf!=DvYuuYA=nH68~h9rG1jd82!70P^xf77?x)%rtI-a?0PFEcEVy2+&s2LobRfGsnCNYNrTvuS1#ES*9Er@=KW8N3 zwjheB=qGG4Gh1J;>oJ{Oi%rJ{{Q_u+USt+9-58ld*3V+$Zd$+N?8py*Q2(Uwh~44i zx{Fr=%DuXvR(5JP%Y~ik>vWyGTZxO0WP{Gzh$r%1uELoC%IY%(bA$x%uBzfwMmv$9 zQ?k46!V^G5K_uO9vI95dK@!`|ja$bq?)!LZ3Vt$*gc6_?s_)_Ofet;G%E$Aa8ZG!i z;13+`8ztygCB?fPTxvNvc>Q1M+%o-!?EZR?R&4S3hjD=lEHI{YG0R#TQ0N#_!!gu1 z8AyPV;5CXA@6)q_t=W#4FTA9k&DZC+o3!9Rt;XZU{+%6aME!!&XmTk9T2BSDz`2x1gZ<|};i&gF;s&Jy?Q!{> z>A*v8c>^;bkm_S+q4a^(Cw{Tsv7#SH6*wz42TXwQdp#%#Ua?7i5lk^y>Cn@|?(?>l zP_sxM`rE)?LBQ%n=$))m2CqiFg{PIRReY#6c45b7t)*O36%2_!?9RJ5;_X9W)*H%Y zC#uWg&VA65+2&X~vZ@+B6I^?*@dm%TTxh*QQ?y7DA>zwvFG<0%jtC{BW_m0N6R0fDcA zLd2ZF4#~jN1&55{!4bS$db!Yid$wc05k)ghx(%I@r1EFV*$v3Ua{kxZpvGh2f2qoO zaCGhF=_mjZtyt$ke+#g$zGvY^PSxD_xb90P)l-4j4v5IQ1k0l0!K`h!h9a<+ll-#Y^rN@Av&f_t8kMws}>QNma zmM!^N=T&GP5=;S1UEerfyL)3~y3ti=H=;1s`AcspIZtYLi`vhtA`qN{Q7ic2sdf2i z-5=@kMLDW#9~Xk<#HJXr;=wqPj>-U;u7amqaP4KLsZxwwRSOi1h?#Qw*}D9EtGx1i zW_?}eV2ojlQ;$or0b1|DdwtJ2tBt=|nTLM){bVj8%ss0djROy6odBaiIg5W4yrR&q z6?uhUVZtq~`A&cyYM%}P-_tcpi&H5!9%jyHA!d`O(D^+M(hv^f`!;wKrO2Df@kJWV2efrZnl74(jukzoExv? zC*&iy+Ai|TNBwmk_BN;-^HOdWrsASux;FN8)B$XF=H<6duk6OISb0xfvATz2|wP3c9}|x#dcp^$>F3NuCUrPhbc6r zJ3i9y_7AYXJzH>m|FdO9bvHh>AE(H2d@CmDzP;chy%QkbP0^!X>x+HEjwrLP8BYty zFXhsHqchU-7k_RVVP!LY$rV&P-(0I!c`-$vhpvwGweO#51WLJupkwMHfD%CFh24cDOGt=u_Yagu_#OpI)*L!pbty!bs zu&`73OPI1x;l(2m?Mkkd0(`ulw&^TF5O@wVwm*187wi5T2+H@#F9NV$?V(YEeyIkHs#`Iel^UhqBKWQHY3;^= z!7uVZYAoyai-n#@(=Ymwzd+Ki*gkk+s@7g#j3>xnp%;&q>~HWm(lZD0BEJgwH$9?E zyiSwQ(nt84lQj3u;sD=R@gjTl$3sk}_GzhD$7qt-Q6@>~sdsTdRy`-`(B2>lj&dXvU zvU(HcX}kq*$aWj5YEe~O;j}2iT?;u$nXF+fcgL?CS+e`%vO^W@RU0!CFXr;~GtO>z z7e7=3){a)adEifTxP3v?bMR@OZ2$>IMcvHQ_VUjB1Wb~RJ&`wp{j6#b$ zm3#yqrKD-S(1t#j<6|8lF6?Z3lUG-~*T;2|7B!{_vNyHRpTPNf#l0#X787U%Iegc>GDj6FBWl_km`<$@v_WC|BP zDYSPrlrz^9@tJdMcbPDtj9?af_`V~DGtX0en2H)l+o{I;yi$PMCP7>1uH&<&vyxq@ ze>NY_D6?WR2I0pfCNFtWpc?n8Jj!ke6^+%duf_xEm#F^!IT|YhE>mS6qJie}zzu&K zp{!kWolN<>R`93SMWKilWJMp(JN&aTm+bmD-c`z{In3-9o7~`g^Q7MAW><1FTk9H+ zByafB{&Hufi+>?sa~BBtc<@+F-#-N0(1`3LjOznt*xB*S7eRW<_I=1*A98kE7@F5oLR(DDJ2-f5-e8x&=yy>)h zmU~=IM^IOlec^Fhm@7%S^cF9abp9^WXS z@L;~@Z*^aC8D{#;UlbcU6ZDRaj!M3ob-Qe6d4KO&Jknf^YF_ZeaL*ih2d=A(8HezBqp@|3-}QB?%glI32Pp>dmD@bo zYx(Rthi9|8(Q{ACkFl=ri9k-)(+Oi-%rVB4>8-bJ!)iomLcLND1e)Gu(ZFe zZ3Yz7`_ai7Rp=SuS;KEwcS`ys08958devWu0pW|iZj_X*lfdbV?xj?vh>bJVB`pf% z>yzH5^8ws}!SopqdEx3n9%l^C4t2)RY7aE&6O{Curmr91;L`6Z?(hVX$EuO1JT_YcCk>B_~H~H4_I&dcL3+N!nuWsaV{3I2uO9-nK5zL zif_&qv_6>nG_3T-dq2Qr#jpAsVAvx&z{8U^@}hS>xw5a(T_T|G;_EU9Sh!Yr-sJtz z2)D`%!|IC%Wm=eO$5n5;4K>(yc35eXQ^(A7hpA6zpDy_K!J%dHHhfo4V)4=oxfK0m7-ig=TdMjVgF;Xp2H#?Di~Iz zItFpRqv>KoO^WMU!r> z(p@03;V68`FNALzEzlSdt2&vkA>x;JXz}^WrFS$;g0x+ULECFe3@h&VGa?%3w-0AW&BC8iRv93HyQ|i6)+T3J^pXoV=L(w0b zS!yAzBiB9Q4{fJN`jFzGns7N($%z(I^=SN<-Ir&jV)vA?|0%EPV76@TQY>b&rOkrZ zb{+0`!e6XREgrxv54!&tYRgbur1={4Z}C&(bpe?9G$}M3cN&4L(w|7@O@^=EEHXZs zztVvKs^Z1r=m`0`e{#RZ@TF^bUAsR;D3K88dnHESa@xe18PS#(R0DhfS+N zji_s!UBQs@kmq+Tbdo&?oTA$V^2asrFPmp-R(m-R1@WHKjJ793p|>^*JqON~xPRwA zW)9c96xqx;saVPCncbOdXsK3lQJo(n$c`@MA%XL8#Jf%;LYJGS8iS=d!}noKwR@|2 zLxBm$WNDng1?N9+iCpj36!BFEyA3S^?(`nTdGTe`5fjW`%Iv>ko(<{FrbZQPIb}cZ z+%X8ZsC*qw;DxWxBOE18#^cNvR#)v%``}95+>WCP4Gv}6q8dZ3udx3UePBLL z&RobWGyRv}%S@CSLrv=(jd)GZ@jiXy9mn-`U!UJyQ(~)DXnBmOq+gY4-Kx$j$n820 zDXgz#^0z^d(5h*z0M2r*bW+5EHD9fq?=(4kvUP&xBg86y5W;V17@gUm*rbf2Njz7% zJ@Z5D*OSW7zN<7(Q7N}^M$st=2%@z~F+s-0KX8EG>vMC7a=0o>(aa?19twCybg?@B z_+9-gy*~8de_CswGD*T)N5}QKJ8ZD$@%0j3jYXfn+kg<8&*?xamq658NuOQ7k z_PF}U^b2(O@_Q;vqx~-<^ppG;)ev!Yb9B~ps#h^1+!#667jN%!CJH;w?!H6w0xZ_s zbB6W9sW-1sxmbNCpFszW1SQmNKD0}`zf`1}O{hYcdAooUxeO#MYfcWEqc5IAWeI^DV`(Iti2e?**>$5Be<_Srd`px!1Ao zJdq6(hJxUwSEozT{Kaj173d1PLX$lF5E+(v1h{kUv+R8hIk|$KT`AY;XbN z1@d1#$JNI}A|bt@;e2P)dP#~hS+v7^eH>$pfRGDO;Q&>&q{i?){i@Ru z0(DbLp6g~?JC`UsLPQu^+6Fs*i-A_E$T9^c6LZ4JK8^hf7RSv2!Pr%@+AOqMvShrw zrcZGg2fk0F_yDn03V*c9{W(*X`I2=YRC1Tx^I&h9V^E_Vg_vN|ml@k!=+^!L;&U|G zmJ`j@yObWDxhP#FHQv`7EvICiKXXbdmzYQQ`)N;?beDuxpMzgz6YD@mvM6C2j|Z)t zD+;AWL5M67p#hvZ-Bj&e!P(m)4i8{x)x)U5(Oxy03?JzN>?lcm+tz4v06ggI4VA1i zRU3pWGoK!EY{j$MvA~YZ4b*mnY9?7Z#)HYs*-WQX=s9Pck1i|jrfE)Q%({Q996P@k z{Wv6|tMm}TH%r{$^$0}FIDOn?6f=&Xu~+;ytZ#aFnO^3dzcWeBxB1Q`O16~onNuiY zRK5SYA|9DS4!$RnMu$l?5?69ok;sGlBz>r9_#KSUeDo}w?cO*lNQ3Cc0M-BCn@UsJ zCgktCgBIN*!BDS&bW4&>8PpS4%sjU32`TM|IEwY)gjj|nN$b?$ipP9vVJMpIUyn#{ zGyGF@Uvo_3?p7KCc(K)u>`>jmc-0iPAHeunHm51|J%heRi)UY5_nT^+kBB`=`i>W{ zWQ0>j5Es3k9mGy{G%Maf7(m}9e%*k*auMu)u#`DQaBpj*k-Qq1+RDr4S%>6SxAZxng%(;EZu%7YJ%v$r>TeR! zX6zK(;7;w=SE}~oyz@~L&n%bb==eH!WX)a?p~z_5+){ywvU*zdPYCn1q^7z7Q2~1O zXJw$a5^=%qNiQmIGnJq>3g{zTlO~5__^~;FqGeteyH5VyU#aQePqbav#a>DHvtR#k z^#-623X2Sx0(6-(b(GGdI62-u&4{udN2b2(YSYVZ)SR48o0+rf=(br=y645dK8B+W z2K65p=(eAhkI8ayNahxIr_>Or^}6%R9C3&{u)kH`#+$qw+DEi!BlL z3*yR;=dHi&xd3om?)Tx?f6Cs|&Z29QqDW*+zWOZsJO~9ty?SX9Js*%#83_k&-r+MF z5({>SyB9U`s-D2BJyi{g$XSrgzf{|w6)=-g^u9!7j=#(Jo$#q`qeI38Pu6EvWH+yF~8RO`I zUhK_!rKC(*#tG#$<(z#g{UHlzxAt?tD!|?0k_M;*tlh5_zlnVCjf}5pvU+OV=8K9I z^rMn&6w39mlYAR?F2#3;JrflqZfruX*hieP)Gr-2f14 zMlZHL#Q`z(0>kF&9a7KZ^CNGhNWpsk;k03FEic%2(F=n2L9qnbi~kT^uXG4;Qec>f zQa|@<<_{eEX-^%U4>Cz9z56;-aDY36mE_r%u2y6|;fqs^#ZLW?(|;<GSc)PzO|;v{H+myOcXvn`_#Y{01g90S#F@`?_5ART~?;7`^SN^ z0Jx&bcr5#t+mx*54Vk>neP!fA~ATMQ6^@(bvGE-{~}KZ~Y&o zCw8(}as*L`Qm!CwY4}&ML@$We=ky;*;dO{u8e06eb+Ul1p{dTF7sl66)quY6njg91 zO5$W2t}C!Rl|6G?2h&=eX_ZhJ$j_)5;H^q`XMV*^eLuz4)tjA(1rA$Rj_$F*nVmE% zf}fQX|%NH|!rE_B6YXTa$lX2+Q4rslxvX_abWNcjMSL>A%m_|Z| zXmkbzo4B5tx|u4vK+Z6!PPJ#X5nsK^t2A)XjzDgcgO-T&O)%HZDsqwIld41^j|QfX zG&)K;72MZbqm^5gYHv>v9C||xdsH_@&7ELE~9H{>7PxNl)0BcsI*g`Mp1dMQpdFI^TtC`OI_9q1oWbRs% zl+C7LJbFyd2U@!>3?<_R%<5LwqFG{?WrkUq$)7Wt*Tz;_Ip=Hirh(E`Tv7pjDKj@g zkiqjo{PM}zYO#g1YG`nOU0_7pBF@hdxsz@MF}>1&0RH2(fuZ5vtI$Lzs=y zGQr(|I=n83cT_~Vrdb}JM^r1`vd$k&8O5Wy)C+XQpu3_(g`v5}xFWdlU^YAvhm(B2 z&ETO-Ka$71EhX~?O)%H9hOH6N6K;K~iVEt79{+vYZ+~iICt>`Gc8{u?gB;+ywgUj@ zoDks{d@+P;ICEzhP?Hu8go~{~v^gOASrJRt-0+~Oe3u`WE7Av&updz%vW57bSI=Uy z(e-g_g;gRaPl3e!7N0qhlp@#g4TXg}wxVEuupd0A#Fv3M>BgYE3`@nZLD>`Os>By2 z1eo5{PKWAGU3e_^DUI*%Nw?!f{W5q=Eaav$r>mMlf{&pQMDOeQ0j;c}JlCS?#}vB` z2@ceanb%aZ{HsR2Za~?g_{EM8ceioffHU2azE4 zetdU`)SuXRh{OXBb#MKSQv8LlC#A8vxxwE0qK$p1{s=PL+q30|!HN`i&;7rtG^P{9 z^~@zlrSL~d<@Gmv6+ase4-lAs+ykmpG0V)pVX8iA6*=A!xv0V}^do7Bm8x2Ahn(qmxC(s*ca&BFKspXpiAq-nc|hqul+AGAity7KFVV?B>r+N& zS{u3yb)CZbo<3gZh#R0vidXa(3$ayK%hSX@hk(l8PktD2e~E|>(LI{N{nfYyPY(%m zoMKLU-s)Od6ZwnVjr4<(LwjQjYTa+bwI3CaKTWmWIO_>Tpc-5@W-SiV?-%W_lj;Kn z_yV^}&Hlogv90aqr&6XN1`?0em_vJY;{zXk!ENud&UG&npHUYcULp^Q6b|NBc4hvm zUWP68bTj)4?U&?@W_Wem3hteg`mWKts{2E~S+UY*W_9n}*8fM+w+A#;_y3>C8J&%@H)kKV!*({t zHa6rgAP6ZcQ$ay3@Pde@4kZz^)XeNglA@tfsd>+I8YSWdFQjG#)3ETCcT*orQc5eo znq}sr)$g_E_g`L89OryK@AvC^)||x#hALh35?~z^?39NHiEGQ)S6V?{R7MNQQN>P$ zOBc&e7Y8@2^nY%`G?WNMp6V@C6kbD45U>n5VmlI-4we8o&UsONQUnaVoo#pcDn$eg z2GeP?0QoGT3VnFAJEJTGl?^gW)kk)Hb=nqjb@P-X?GaC6=siF*#R@1z%OyU zBnAr3$Q3HASLGr%`HlcNm2xW3hv9x-7UJ#5Wf&7&SS2LcYfoa~eg$9{dOh2bDRjBfZl^Bgx}rt? z*0Gwc>L%XZq@;xYQ<1s<9NH@&)5z$0n8dL4!?} zLQPdmiquUhpE<*^`?lWQJ*)8Pti<;^5O(P5n_CHQW-`)mhhaNi;%GM%bMt;GgY{c$ zzZwXL0ifA4XQq%|zKtcpml3r|N$&AY;Qeu<8 zE)1wgkjSUZp?+apsk%v;4+*NMeu{k@PDAWmQtdpzBRS#1fnpm1_kB{rDD=WE|6d$z zLMt1p6RP?ip)8~zGHeLYEc;{mrfB8ckm}p^SkQ&vzk^h6x+3$i%)*VH3(`a!RYRRd zK6tT%N518?YzGQR3u{j|9`L=56oS{nCD@#-5{TNMLgbq+qn?> zL$5M%t4U+PwO^q#RC+oE%e?Em3Vriln(4WNVCEdD~OcXFca1%TY}c z+~mzu?F0c~ z#LBCo207&JSLLVaokYhqDl&7ICVNCz9LovfUSq|xG7*44_IBd|NYGuAuQQM!C`2wOwX4B($s6zfJ&7s5Z9ShQNm3Be%dQ?rHH&9 z{Nv0*)mhDDdmf|$BO%N=tonp|*S(GAn&CB>6GE3#@CSH;-%-_(#MlTDzkjE&KP^du z?4Jt<^p}b?2WyXe=?eAGBJL5aemsnbp23}guJT5-6xmIDTfbYq?4w>d zoe6Ge_m$W}L~aYKa-I>Y(ut*M`E@61m?#ha=}r1Y200D2lXsv0C|ed5lZNt_38i;G z<0HOiy(}P2D7sgo|Td`I;SFr8sbIKhjdry)=nu5$R%0<11)8;xwTEwu^&u&(XQioPG z(9w>urs6+T34qe+calDo@6zEoXjpZu^U$QyoEB4j`q(r%doN8%3G^sz)zu5UJD8X( zMQ=ib58c-kj%DZU-lNGDG%*|S>0}b17Td3kzKjre;WJl8TaZQO!^W15Fw? z*fW`>h@uAfIStbA&rXzQWH>B}L1S3PAU^(;p`uD3FXx*n&n8Sz6)9m_Ze{xwE4EU7 z|6N5E-E@jJa|YFVlk?$uXgWM{?@+ExdD1S<#t_d&J8h>!7%9kcuWv5ZZ9bwnQu-2CSMF%70US_^( z3H@T{w)xYfiGYkfs;4+RdsQ*rd$b~;ucrZ0fabYQQ{ph%CEJtPyOjJWWm)se5HPi~ zftJe8*wr_=R{3kiiZ^iSw&wD=`Z}={>zp@@`-)mz@?*23M#gn?#Paf#`ZL_(BP!#d}a}9jW9j=G%9& z=b@m23nC$cbr0o}*U)mw8rwV;QsQefn}!t(?f7$Eupb zuG_hLo;~E!+Tas!i41tYXmJm@j!o0++63TTRFCq~EG{c&ysED{D&20vVWcYR^-f`A zY(96wuN7s80Xm-$bDT>zk|{}?I43cJ?Ir4^p{j5=_;$O9>&462C*CpaxpZ@!XRv0I zXIs59Z<{#oaGSTYjdFA_xn(8}5V>k-|L0hdcD)-2bhLjKfBKe9?lZJMUAC~o6lRdD zJ51XTmE0C>Ol#3hsU9KRcwnJQbM;zb_Q5*kmVL&blJg;ipR~zcbB5L?s%o&ZIb->R zm27uBmUt8%sk}4HQDyH@9MryWfZtE-xFe0iW^R;`CP9!M1--eQ`s=wJ>TGqJ_q~SY z+toI0=d!kmZ3yGa9RJ0@QgNUZd^f;!2MrEUZADWly{kt+ zW~`Av&&w}|vX>F=CL3pHTgM&(0P zbzb=^RJJH2YfMlRw?8{^x?=!5Zh}_sBBHXU8zg$s!E&*{1u5fQu1K_m`-+#>oxG;1 zV#AG^eg3b-3F(*SC{4^G^Qra*LD=l$*c^?3E7(~SP5op8FhzJH+>D>uCQo4!bW-b2 zdOuUXcRQA|@fvAt3buHq-5h%dWPtt^RE-S?5r=>k_qq_o(4}LhH!hi#xGC7gZKiKh zQHHJTAR2+Ptsx(^2~t4Ow}?EU%FsynVb83N6i1cw%ScD8fZN)ApL~KcOz(S@mJ%L$ z`~e3t_>sl7by`5_Y=(|D3Z8ocdaa^!wS34VZ(J5ZMxwu76Z@GKP$}v`pz;zAm5=0n zm-wHveLJOL6(eyWYmpl*flMpk*lDx_drDqhA7q|@nTszqgS zf#hi_f}W$ZiFApSr!yhExD3W4l-alzE`1Ei?X@!1Y_?Bt#Xe+gt(>w;{>Q{WTtV>? z*Gv{C65}RH2_CF<7XY@cTUFnkhG^JN=FH*+tIFmMp8$T~w%c?qnSPM0jZ??TgP&Nq zRMljC9_o*k_yKK*LmUvwhvD%ckHk%9{|)8O^`qHlRg`#)TeypkCRuB%!3iz6c!vJO zV=NlHxQti)O7Ba_LGaTBxPS}K{$A3PjSppGC22FznQ`<%9C#X2U0XxjFWekjY9m(| zJr?S};SC{lSntvD<_WuQNJ-~_0|8^kKh4veR}2BjZAST;gauno<8UyIP)!wgqPtjv z>~F#x@;hRATBi5Rk}B}kCn&LcEG{+bWH~8RQ1$6450WS(N*Tn6Xk3r)B~;17u+vHc%5w$mE*5q~ux*7)kK_(zd(KZvpYH(?AOT5My@VDi_;cJ;`Ht){GQi_2(RV4FUn`J0Unr+5?k zw5EyF)Q2_bgmy88M(V7};Y= z2-4QjhQ4K2#QPOVB{WHjsIWpMnu?#E>3N^E=(q~`Tk^Z0@NQEz(7&O=fMJ!&QeuA) za`5S3GTkOB7P*=FC~iN!DzfJgSj4&!^*3;vJ=xq*`Za{k>hNpxHOxWW@>pgKs{Jr` z%usQ#dZ#Pcvuf?41-O_G%8=|F5_wd1yb>DQL#T;eN?%0*guQfYw(WW-Tb*KTDl-UJ zE=Zls?Y23{!A$Da_&4*1PE3TZq7hO^_iMJ<`m#Q#bC?g7fF={L;~()o$AGK*B6foT z5IvX!h*d@wEl0eo`U%$>aGniU5m`8i#)a^52=&rC?BbzGsczp2;4z9PgQ%~@Hb&xF zV+Y`P8bE6$q4`K16-1{W;?u6Xh)U8`gf7lQ-e9~NpJ@_aU>IE#css*ppG zmq6C_VjO)KZ3h>Kpq#a)mGT&9Dgi$_R$HA7>6y@*?#p?KEBkG=yIqTfAF5$tR~&@JMGc)_1&3UaQ`Z`4BLIN!0Sz%hp(RHJ5(buR!@3|eUlUW8s_Fe z#E7;gPf$g9Gq|7pSxUS~6DI~~J5%X;C}@FEFVGCePnw();XV{tdy-KV4JPJ=)2OJ{ z83P3vlOO_fjXrol)gdpDa;{G)k*-2)cGS^LkdIv}TP(HTxtKkY212)l=fvQamTiFi zOKuQ#Gw^A!?FON8e_W4EoPFM6JZS$JyXB}nUaxv15H9luGgQ=B@aZ`p>d6?w`y|h# z*n=1WCVG2od_YsUCp;${hxm};C_?I+yUa6j+UwqBoSn3KRbM`7NKF^)p2I}Gd2Q`C z>ITu>eWT?5Q8kcG=}nIzWktLFnmq0p9WjddCT&MWbi&|gryszkKE4j~v41bd7t^@G z3*|or8AhO%!q`ijY1SYKYR1F}O&ymc&+ZODaUK+mMH6yeejLny zme8?Kh)o|$SNrmJKa*V{Jm*k8ar-}l`Cdr}267X~myFQ9Jxbd={y;fpnR#Hs6T~TN zxH5TWZ}y9x*M&PbG5%Jzt^x9=V0KT-)B-mPZ~}$NR+hK>D_H+_qRWHp)tSvduA-0P zAZNWCi&FzEAf1Q^PEKa&osMsK%gA-9a7YpqEBD%`O_=rTW>C8P?Fgegqq zEkSZxG#?`Qg5~XDbd;=L-h}=G?3$+I#7Ex$6RTQ+>zHmRU+Y&Mh4HDy9g`g0^cAeu z;Y*R~7C;of6y1iM*}zG*clhpb>pQn9ON{mVhXqYaZalyY#!1s9Q*(Im*_o%~!Vb@cFri>Yt@p^519-z(tSPp?h%>snrqMgh z8zaPy?(Y@Z?@<4xNZOiyz5*I3I8sz^@$u!|b*^eS?0UVfN_9p`AX&?*E9t(; zGl%<47lR2s=xEJ5s>#AbccJ{VO#PVdzkYv%4zjKBGii4;XQ|PYA$gJ8O^u2C@)Nc} zGO#arhsYKxxGlX@hg4Hk^SIgSQ+l#i1*GvQ35oDm_H_TkNr`We&&hil*^k+dY;$fGH~|6n zm{#_CAZ-v)Q;9}y?8{wq28-=?Ms2388Uw!A&k$k#VuTQgVoB`jc$I~FB+q0R*DzBi zJn`+#grFrK4#0-*u{CFM)npy$%3osH-UWDYlV9m?5^m-8uWogmV&E8K+o=E3v?>Ox z+>)-i@*uyIX}SnsZ@9XCjr_Yob2gyNq7P+S9mZALrg~z49Pfa+`SMK>Ii_F)q*PWF zYP~V)g|>h(o$U@~^%nXqlqH&MjSlY~y7#mxxstQ4^bZLr+3JI*{m@=U!y?$oQ14Px zd@kZxJagGWy}ZI0_%!p{SaxmYU)Z^F**enb&1|%WhF{pG_e@zBG%$y_OIo{H~g~CX$7+JJ-hfW^V@F( zlo*N1G4GB7NK_kOQSBSEId{`YE?^l&20`a^>(X+l<(g;Bauy4oTX;(N&NqEJlPeHW zJHVnGl*AC}TeIhuqa6p&vJBZZgiE=#6J%yDnlcdA&iBvLmVv4$KGmvPj>;;o8twBb z0AO>Mpi%slRNGb)kF9Z{LxNBV!tV73?jBS=i$Mj@e}|yb=8}3WyrD5u*_5t8$?7iX z0{!J@jNEie(z&3NS#&xRhNWvmdk&4@*XFTDviw#!r&5n#)#1YYvqL)KM7Z>e*nWe? zN-7uke#cn}f(0brgoLpbdMx@sMhH-y`lljw{fdDv%T{*ea5vds;j|-%@?>by0F0TW zamW;SS$&Un)rf(>X<91?$tiO*(NZ>Sc+~)7KhNMxx6=cwY!Q4K))vM-i{Q%GXEFBn zcM8{;g7+SsOA`uny2j0y>7fe%=1O|l8@6qiWCOu3kNl_>}4SipAumw1}Yp#PWuUcZ-o|-aeWwdV=mwo#nRD^B4xQ7%M zCX|)lWnc75JVJZJsgHr*YN9i^#N3<>2F*&M8gm2F#KDlfiOHXzNlP z`-uyG{4Q-}I*P`obZf9^jC@L_W;&l8oO75zUmCbK_C#`BAnc;w(yXv{AZOPznMxs} zh%g1L+{aY&sAoiWH5%X%9ibb!1|av&&NB|!C=IIP&^ad6{Or09MaZ$cC2RRN*(tPE zwNqCEr=ksTKCs~;`!0_DlSrR;#{j15Dzp@8s<$#0%H6bmI;f*mHAW#b>uSmKiy-6H zvZy>1SfG&Q?;J-J6~@t<`E(|o(sYhlx?JyidZ<(X$<;A^F9RZ@KCKU;AQKPf{bN3!-E! za-HbuXS51C7nI7i78;>QG%4F2Lr0?h3U$VaxP5xHo#N)&JZAb%3!yI-#sS0GF-0~; zAYphyB2Cnq8an%pS~ZncnF55J##Ko}hP~fIBI}!1A5`YPyk5p<$j?Je-qfwE?aCo26)g_pgUo z|7H~TrF`BTy+<>Jp!a5l77@~vQhGX@Pn{#536&>VJNxBGR?LWig?kLvyytLm`-iUJ zR;cEPU5XREl&!@squlR9oulb~AH<-S;%u_A*>T(*deJ2qTfg+oYl*qPP9o?)|g@_ozwxOA!-X#BDw*bFbNZp^L!SvK78~#wY8;)%#RmY^>!0CnvxRVYLG-f^s7ib{PVMDbvAoC zi(Ba^42a;uJC+KM^F@~09e>RidRigMU+AF@1os11TCo-Y8wC-qv*N4t+}bxfY!O&H%`q=O+sYsDeWWuc4pTiqUSsk|~LNkK9M(-!d_Y^6|0=XRpjbStMox`4%7@VDkvU6ioXv829nA~vSJu1#gVP;|OSKc14N2hn?gM(~( zI}$f0El=W8 zG-S5&!z$S@2}xf(Rafuk=dNe2cs5oLV5+3vPf~#*BI>D$Uh2W+`o1Uzz;_A}eTW79 zvCEub6OM~62qn3wh&IHqZ{_qg06^_-+T!`IIT~zZ>y1Kl!3z3R%g-5y zdhAt&{m< z9Qz@{E8Aucmz&bYw?C$q^&WakwRyOl5CCvM$R%EiuG{ty!ml@fGH(wrE!FU(ZBx4^iv zqgl>3$m1fp0gi55VMjc5c9YW*^mCZ2x0HDJ*rZ#wL0#p4GDY-&e8dK%Wwi{0=7%eS zaK(#HWJolt?Ju>k>*_rofeUkdM6cN}PNwvhj!jaMXW)hC;gpUXMf(iRaA0@##3zHo zY(_#*M|0Zfx$7x0gSK_!D(Q=4!4n=$7Y6!YM7(bAaH(_VCBK*Dy6lTm@lnn^@T;ht zi{MLQ=o7n?xN7j=$*PfdctWaEKU?|sN%q^*qKJSCDu~4EvvKsTh5YFP8kY@PVdb%U z&9~-jP%7VhM8iUb3HNvFMu<6PIMXh4QSWB};j3{#?0xn$!vz3`hTlamz^83;aM|S#A~Ki)uBn=R>GcD_t!GHLnR& z$PbQHCGzEaeQxCn>h!uXK3)8KlV~7EA=B6q5RKZ|r#iNIL#fikU7#!ds&D&>XoHA0 zPa2plzzoSYcxJ8#yV`I~;dZ2UEnkg-PT-9u0?P221dZ3Lc zpS?3`QR;IsEYBq3r#7mMo(m#M;?6U>W?GZfQhvhNsO&NbH$@LCatRRWvHy#4Rkg&x za*BK5D)YsF`K=IWSeW#}u4qfOccT8Ln67A>;!t#Zj9n?9f8x2Vijt-D)B-1+H;Cq1 z_~y%x-f)AKW{(3ZN9wJ~lcD@wG&8N)@RG@;{raDzP6u>KbMg~>*ZSh=O7 zft^F8Z8v(sY}*heRkaN3f1X?!o!!t4CBjjYiA-K!k{#lYpT#5?9;%lIT;A*4)qkt4 z!jEOXoE?C*SJ23i9{<`5nHz!PFJgMF*s?aHEpE4&3m8kDlUWa$zR??C)*QL!*Axr2 zbft$DVMN&vY?kE65$xf$%&F)*WPLI_5H2izT)FNug;q%w)#6ad1}S+?{)N}OvO0DuA)r{{#dwm2xcS4 zv+Su56F$&0uLM>=?Wf#d&#C71QI&7xTXvGGTu;9_pN(Tg85RCAN(YJFMKqnyee zwcb{gn~v*c@GKku-Vu+S)Wex3+%NBF7xB<7cl1ckKP_$VG97_t)jv#%rx;nPMXpw~ z94_cnSgA%16ZwK~*@}Go!xftl3kI{Wb7{11kNkS7h_!MbTju7{Bv=7~N@(YMss^_aWIHrB+?HlefP*)@%=PL%Y$=zR65&WkeCSXU%{8J_ zN5YV`_b29MD9`-eBDlNT)!EX_1IJyAwK!;+o!cjm*K(;ktF&|wsrK(*a6;$vF8jw4ME~=L^q4Dnt&Uwtp&42M;d$&0rkgHwIW9W(S7*Q;VM-aB z27OR>b*VR;o2TlVxDFTf&0dDXIlXolEl+(Rh+891a;hu1v2EWQrk@72@@3MG-MPg{ z6`VJSdjUAfq{(bbtg1qHR+Fo~BaXUqdv^6pwswW(ghM;__lTs=qR^-;KNA5EDCX9W z&`6^cU?rQG1{2-*>%QC0yH32C``r)lyYCm#g} zsw8%EY@qXc;o{iwP`l230mIQ4xWW)1z!pVG#5^e(v^@Y=trLNAzeOONa8)Tg^?DgTidbL)lWv z)U5<~LgQ6uVg&UHV^8aaipJVq>2gB^f8!^L=`J^fdi!zvV=syaclB7uLIf^BcL##x zho`|Xl^u{DILi*u6+QP|>f2758SXyB4|{=Cx%ECMiSr-;>Tjs>;J~d(?ddf20|o|# zjdzXh-AIpye#sDAB`-w36{qaA0g9kcqM|>yI)+gW6DOYQmqOn%(S%pi{|{ec@vVvp z*r&6dvCZYiRynd#XUsdtoJRUNk*;cJKnTK$H}{tNSZRitdh`LAu}_OQCw}F6lpa5+ zF8wLwsrcdnTF|BB4~t^HEKZfT&1ihXebOwmS`$gv%)B%NQsB;b1!yap#wV zj?fVeUwT(rq35&hkR4MRu{V+dTP`=+tf2vWQr=kmwi7?9_sj}5t?N9he39%z;*1hj49!*|y)#hRE6)wiJ8i)#~7hnmnLKe+#$+1 zhm>PZrwMV<4o8>>G{``k?PbaQ#f{V!$4#=GbqA`FtSapmYv#Kii#XXo0=VZdr zmsz=1aJ974R~BxZ{5Xb7u$61Y@z)oW(B|RwM<-8L%yG zEO^WJ3HONAOyE*`C*ez!7e1K{UhaQk(52Ih6PWDDwtKSZC5guz^~UpDS!|Ufid)}4 zf)9V+yGw#Sw(cz=@- zJ-g5kiCoPi>-`Ex_!H{YbIKMV{flo4g^)18FC_jR0jJv|PR>x%eVkpd%eu_y5Zk&9VG85%OD_zy&1j|b8cvXb5|C(*f2=$ou628ks8Xe|XYB*3Zx7NQ| z**gI4zYR$w_Tmo-6z&%B|CihTX4Ey6ePCrjR#+ic)6*_tVD%dIPcrujO+!a)PcBip5tD!tSBySy zVUXV3pQ;53PwBK%9brPc-t04Tsl<2Vj0JB9Kn_vxLLLnE?ZOq_7E;ixhY}RS@q1c2W>9f z6D5-CDAwa!!)y%-trV1bk%py%HbJ;bN%~qv`L~2VmxOy0(;QtTOzN{qxn*?r=p|kJ zbVl(ecDYhM6ma}a;Sm0sTjRb=SH(4#_5EJAyh_PgNGBRA&*kh|vRSQ5;_G ztuw^9ZMDAW`w`Pz0t8m{z##xcavrs{4=EeSe$NqIr%Sd`7oFiC1QnM|wmpO-0zOrq zpFuYWhKz3=cph(O&?lOjAK5CcJXy9sh|e)2b4?u5maoz$_0!8NbhfmcEGwE8WPb%Z+ZP_J|lqhQKho8|Z8 z#jvF(PkG|i9hgDpO6oX%wU+HS3Kb~^b}a%3*B#C=*! z>s(y6g5eeeH0=tfseL)yrI(N?WJ|YMmyO>NXh>8LCOwQ=LX=-7Q+Xe52^n0RP2V6h zt?zti5E)E{3_P!Mb@a2K+!hU^Dozy`=dx91m?Aa~moeKzR4KQOs@=_{_=nq`j>CKO zZ7$_T$;L?AI;EjfQv)Asmb;K9D)I)46d8ovp~Mi_%ak{5h8Coqb(y1=t5>PA#oQ$e zN^B-K4!=WrD1hSo=F--F%8PaZ9trk&(*LyiZ=wHSc?5fj*ykF4;yHMsHBEeHO6R+< zOda$&R~JJUuAI!|F0u_4KvNA*kgVqyt%1Wp$WI#)_o78UFp$nh(sLI5Wvrza09 zw_^)yUJ#vA0Fnni zgQwSL5aSI&rrL2_v2r%jCOZu9rT(NZ?#Saa3uv{4k~H)w%EyXdW{+3^URCXM@TT1O zT*z`gqbGSb)2c9}bksdb711=wAv9l^qkfX~17K9R9bjtYUh-(<$ynvRuIfhqNFv2{ z$MKM}3#0~Hf{L4P?iACfDZTabx@ai1k(YOF7cI1MA1Kq4JU_VqOWDcXKzdHEoYL^c zw%^9eKaFe~PqjsYCuKPum$*bc&Kl#;7KL@?qdmwkPC%l%{2-b;O#Py`ZSpUPCzdL| z>1^+Yf*19_Mz2ny!EvxA*YmbfQIwjjp22-jH4{WcB0#)L%J34kQ9z=MG9w-8aqD1U zPTekP!6;ui%FgQoHU}z;ih(-(*Yg3FFdWJIGuYzXTMuZ7LGW&$ZA(m)FWR}jj_rm( zsFdF&e~l^smdKJL;H9nd)L)?fedQPp&sDSWQS^V&!kvqiBuLy*#U!%FedQbknji!_ zb@hqE|rd$Zk%=@ z+=s6ys;BC#A*lHk-SpMojoi!l%>byc`9Gk4A~Mz%vuTq$k5~bFZU+xl3~+FkU0oN0 zUdh}>w4r2mTTZj0p^LaD@{e<=EKY*meccJxoq;@Ug@|xGKXqLFaosw!>F6MUe0j9H zYd}%D_b5GWm7lYSD@_Vzont)Be=ydoCkk{ zSEsP^7Nzv0FS?3H@8W~G5K8j6*cihKgxGYZyTw2(%U*6L%eOh^**#d&x*>g~6}c`t zIzEySH)udC5F>y6q)x+W6fsZJq&q@$0*9j_x@R)lOy0 zc7hg1Ww=dAZp#k_3q|>4O;6PKP_T@gPcVH$7?So=YM9hAHf=ygehejE}_Ba zn=WOPo{A1uO10iFDZM=GnX`UBPWcB_ZnJm;_ybfIj=i$K$iWQflpQ9x*k^>&l~6cb zjMBjar5>Z^76nVHo2n)WMd6G5^qQV!gn@K6USLZVenGg531l#iLeMX5{}qmGKcu|e zml`7T&hblf>4PX9GsS);M~Iy>Oz9;lhDwn47c7J#VR zRsYSB2vHH$=lRY}c?+Zm@mI?|wwnbs zKb}=$VNsg-y%48y*-JZ5@iw)mz8Bw`+tYd%(^gWv0ilz)F_pyAi(1jz*)Vv_1`PI>N zQz1#9hkalkvwTyjd{^j8;p*h~ZIlqfrTSU=Jk=(e87&~DT6w)IEL;MFp%6h;o{E#F zr3ug(GHpCTG&0gs-6~?NT~J*{Z}w{YhDOACjsR8dNY`b`Cv5W0P&PAJsBx#}c=*(U z*bP9|-yJ~e9`bGt_n1}p;nvEz4C%|NXlBx|*%CLv)?)6<=(vfj z3Kgo+G*Z0vK1rG>4pT)2;=Wd!Xn#1jiEZ%)UeQwpE0n12)HjbR!u`L?$HyWKcez&n zBL25f0Xk{=>vdiP6yv7vLiBHN`}2O|Zc}<3_c29uqxC&Fx;2*$gPoiUibY(mI3knKLj@SB&*7w?#k6Mg_iY zYXtuMBzcMA`@H&q2|bnY*xQEL3s^8;wEB&(#Dav-!*4?yB(3~YCiZ6ZKv5RY#7ba0& z6s;t(kzs@y4aRAXk67q*?gl9)Q_{JL>*zRh5lQz>8Boj;@AG zT{eF4f}ToNkb3ilnZCD!zwvIIaIQ!2H@}=h<~M!mGT~@V4-|M#dQ)5uQ@D$b_i;7x$uafQw5#RxwOwk$A+mXb5;9%+_gI?*ZH#d z!!%jm9B)f;(T{=zn`%h1Tw>x*(IdeGb#VCsK=EG;0fYYmO&U!35(ZR^$j(q2#`sYp z^>^dkW=f!gt2MUffD2AoWT4-Jod?c(e6&TCc=wZToWB1?p*W|Jbxw)ext^sz>{V}IKo_EfyL z-1;1(`fzznQ1UHGZ-JgkL<4MMi16jzH=)5L56MR$Zqdo3B9%Vjf+wgAhg-lqC);fc z4HU*aFJpn;YPG2o4C|`{y_xjebOU7MSzwzm10tVGnU^Nrg@1Yvb)mqWu>k*=X>>eR zjzaLmgT{2#S?&ktx_s|&39wAbE;5HW>%^Ke?mYdLE4L=HZZ4=^55y&e-dd1X5%3ew zreUvhOPMD|Sn1D^SG$Be8Ktb9!G9@h5E6}a`4l7krl;X$%$2kI!E3{c6bcQcZ#9ao zFRvEZaUJ=F@x}4-hD27LN~bj33ESGia6JJZ>Xf0-zKyoiFqYk$sYZD_#3P9?hkhOA z(bxZ{><$XRHE-euzky#jIPTL2jgXbQcjXewbL8;F$~|8`?zKsVes41X>)zhCGR3f6YAUa});WdPf@44mWmhHPA9i zK8N-_chmNnEVnEDqYa3-&WxlgomiSy@D*jGf+Uqr3sSwB{w8X z*)$6JnFjS*Un-h30u`Shcb~)RbkTi6P#NVlR-dNrVQNI4B6z4}6f+7Pg&0B}%p{8i z@oDtr%z#P0;{qSI4Qee5TPZqoLiqMOw4)5S5sg~xTPT~0k|9DwY5`)_hIFasPbM;@`)jQu2_8#++^)MWJ$=g?NrqdXVw1=Q>G2)WciGfEweijIN3rQ z`Y7MK)MIFn-o6H9f=kaSD3u+~-0A;+@9SrP!F~4?GeukZdB+gQj6}J(7o7B&gPZA@ zh9K7;;QUx_JJ-8DL~35pn0m=MB}-iC+3sOY-PmlarcAyX<%s3p@l4~E>&^!xnz&|? z!>IHruG03A9=0kT)|d|lu*DYs{Me*7x>8&pCMyy+#3K#14KYXuK7MT`v1HcPHTp(x zIw%U=gWhEN-kecBIZ6V871V`#j1Xa~DXVR@wv{@@Cb7KRR3Bm+2f#(yH$*j6sA|cj zuHh{ENp6=Cam5cXxM0T-u$HNF7G(L^EM>S>X^o&y?OA{UbgLFG=r=NsYprPheU36kj(DQ(Px`wY%1k~57siii4<4nM znoV{1P2Ak`74j7g{I|MvAgCP;j_Enii(OtrVZez@b>@)x6{aO6jp=o#%VS2Ux#I0T zYzzCVQu<_aI9pY+SX0^~9?mG=H1M(G8%C@rR@jzg~-b+%Y$yqZx z4%q!$noH7@isrS-46W)NP}`;$`RQcUsN@?D9_3h46vWaF%~I%vuBs@SMeHM^I!gVD zP?)=&4n;tC)hmof+xfaP-cG)>3E@2wXg@?9Tul{H=B(BHrQCjwZ7w$94CpoQ<0XbGW;@o$^=sk70GA zO|Z~AL%H2POW_`6@KpX>HmQ4-Jz{a8bd+)PoJ|Hc|4IHH2r#xZO?kZpX%rM^2EIV0 zp#p*!?pJYFX>6R3e#xYaNn-U8T%jCp;`6^_C%f8ywX3#pIqcpnu^lF8+=7Ad@ z;%q~?$9k@!R6ZcGH^c1U3Ci}4-4a#F2Io_1_X9d9{OA2^P0lxmi|UW;57BW*&*&-k zRsNJYPOu>hfFiWczn)^&Q0{_$3T^Dl&6nSE`Mi9|Q27(Hd||lZVI6SqttzAYlsv#H zV(Hz1nVZJ}5H|usnP=1F$swjk5K&&JTR>w*(@-F*_bAwT!P_>Ouq|4ZxpQP2vCwmAMbujuZ%h z*1uKu1>^ez^?vs0POhVrD|SM}Uo+C#i>y!q4cL3dJWl>81@8C>PtX`0*B#+hb(Cv! zApv?e;K9jvKSN|Tj8V4rs;Bbar&z{k&UK36%9Kn)2gu2=g`QmqA^g$50Op@{v{g^~ zLB5yizEkdPrJksS2#2yxd29ygn_>^7fX#&YtnLYNgex}+Fdy?HIopGDIGni{d9G;B zF*nDCAR)!dUW=!9qF7?@wmC7dOV*)?4Pi2kvZX5vPRaQVTMNcP*)@V&C!ZPOSR`*` zNE5*SeIyN2DZhL@`b^Z}8u5VU0`pqZPK3 z20Fo5u#-+`sYeDr&gqVkNv3W`5j|!-htHqxgmV%VW!k|+Z>lSLE4Y|##eUZhrOO`F z4dcq*>pjjluE)|1GK;;GPfv7(0bPN!Q6--@5Ww2@%GjndCf#rga7mA<)r^B5{FLYRRvfMB7f&wEKC z9Mj{eB@#k0rTrz_rz2<`QJMAD^U+^~-TILR^%rPSvoa;D`cE1c&OPq?6>C7G%RmkE2@AH;RS|Xs`3oa6 zM#304YEcimXCv(j`8GPY5&B@O8Dq#X*O}_(*;qUTLLT-lznQpoy`EL{PigMIF;3ek*~jPrbd2f<`Phx zQpdj4OHeddbSlxd0FbJ*Xsj50bNX-3qM9kp9ZHWD%T5j5GsC7Z`yjpdBKNZMNV2lV zIkKLf)AF8X3d#|-&$h5n${jD#QW2=gLJ7O=SG{=EHhGrqmYU*Ba{LG`UOk6qN>qU5 zaU7e_7lLVJZ+740hfmNnJ-@YJ^dUvuG4x;hW_y zYpV^BS^{bL9>j&X8Hmbri)IwC&i=|;4JRsRb@aIl&&#wP-kbR3RRdIOO_155>Z8>8 zYEsz@vfH3yovz92f(nbT=GHc0RUh-F?M1t4UG*YF>MWWOM<4g3&Ef6=a=#GpRrN)0 z!ENI>$a5A|n<-#KDQG}B1+zs(a;j9;@cHqcgjXt>FZKA zA-4)^oNa70_aY@r^kj&H1_Qr`Drc}&y0&%lfoJLOr+HJQa!*GTS=~va`tcVg`IW%9 z_KvDPtL7|s?slqt5WYyH`NPD6>u({Q8^+n>Q@vn#?K~}?(en2ik^2HV{ewZOuV}E~ zxCDtp`E<%ebY!YhlK~mcI`o~h>mt<`ITIP8K64&ojg+J7W9xqP-{80Gl9yxvZl>jS z6SOHY7oZ>c-gaUv0$VCFWW~&_W5w^$T8lC>EO}J^pP3%SB5n$FBH5xWR>VKJUj@t; z`x2Hc`S5rlyzErnj}#L{oEQ*iAH8{i!lDcTG7Y-v{AfP(Yqhny_y4pB-{*3;HLPrm z7&zc^p%NdivOO1XC~;7$cb6hY2`e@wva2-ZPbzeXC=MO#KUe*$1hc{qGx}`jmE(iN zmSKxmQp7-Ry&R^ke>vx&9do%S5lG``*;o!e0nW)1Elt+(i&9yV4z7y-$I`dJM^Rn> zpF5B2%w+avcCx$KgiV+YyJSNW*g$}wfzChz34$&f6=}q*k_w8tC}^y&*$9G)H7Z&y zQFm3W575}!R;_Jk5iDA@@vT*VO)U7t7PYmu)%yP~{pXYOndi>Tz4zSn_?~m`eKY2K z$rp4ZE#`-FG37Il*E$<>mzy63N^u-g+dbUORmgwT zyRW?0+_M*Rv^$*jJEu6u&^~_W8vfO!SV!h#^Md(&Q&6$JjNE6wsz+`>aP8uThNd6MXL3 z@$fNix*#nqGtZoaXwdH*MT-2SX0(G#D-fj({iuoz9+4Ik$=h~7+PNcr_VOl z+|iS{hX1~v$I7K!&*7KO#sX;k&P&1<`1zVi=J)H6OLtBy-&-Sn*3ojsmS0L8zH9#) zyz=F^{}=CsubxVmhWio_Ol+l*nb~iYLON$-;UHnevM!6nDK{u!>85r zr}Q8eYdQB9Z<{ZNB;oS9`>Ktl$c6oqcNyVhbHQC}Z+Ldq^19!YmuzLT;>o5q*8t zBN#zCYmi^RgJ)~_t#t^(-4N3s{@KfyvIm^&5P4vmF_wGr&-f)({Gf@M-40Juu%6z@ zkL*8a{`FW4W5m0{v-NOIpY!seZ%ZcN*t^YKUh}7C z0=;zV0_`>L&gZXX5FS93~es?-wm6;>x!E9?$7L5eJA5jZR0<{q&|yI)*r3O z{m{T_XTN@#uMR6%^0?;O^WsaNtGN~n)cr&#nn&jF`mNyu9sJ`H&U;CL;lyiC;3sL; znelTUM+(B=9qJB~nznpclU+cIYXYm3ADortV>4J(X%VtY|d1e0n^JT7M<@c@p zp)7wYQHt8k=i$C6zvMV9c+_<|fU8}rF{Q=R<}o|@mN0T0UOP9--6eeejaZ=IQq#S? zWk@>Z4lJ)H?H6i_-?N%t$8^7?rKHVu)k%znc&_f;F93o$HPR#rli7bkE^AEU!DO&zJLHIvsflcl^_um21%g#Aee2m3FHHv0#ZTKKxcv!P!PmH zkAkW}9iWpzGUypl2y`w;2Q2`ZpsJQ?3iu6b!u~Kw1GRz*pd82#vOt)D5a(CYuW|1( z?9Ty3L2=Mkpf=D#&{WV5L5-kQpqZetmbYm;em4XAJ3$U;3TQ4U4XOui1pNV&09Ao{ zK{3#=pc>Fgpo>7$L9;H^uIBxoHd0$K$69%vS*6Z8YnQqZ%YbuB5n z2HzEH8Kq0GT@0!NB|ztZF2p@AgH8mwpcSACKxcpkLGwT@pl(nzC<|H%nhZJyv;;H+ zS`0c3bR6gwkO#T~bS>y&&|{$AfbIu92YLcD3fcm?53~a`4mut5ebB!_XMr99{TMU= z`ccc;qh-6^AEBFYd>csgTXZSPu?G7$f_8)c1eyTd4f-?aMbML=IcVDq?)?_~*MV-s zZ|}nKL(98SpOK^Ob`Q?~+@GW?vAqGb9`rZRBcM)ynqI^GLC_)48#wn9e?Pv{I?6jP zp79I(_DpPV$Mqk9F2-@GtVK|K&)amlKSd1J&&Rbt;@lQo--_+oIJXVkMqoQ{;@WEL ze+4=g&;Am}W7yvV`Uhw_e)9m%-HiRKL2bCFRDaKaDnOs&`ZQcWqlIV#o;wx$f5$y{ zVE;T^zYhERaqdFgSK{5RIR7=aA#6+S^B}fsv6ZpC2lpu`<2Trv_}$|;{}Y^Fh2zpa z-vjN!`G>LnCukw|`*5uv`e+v@uwtI2>0`||reI-s*K$W0U50pR$KyUkP zNRv{_{Z9gvIJwlib)b(?xE5@m^51^6tyS#5i--IibRTZ~1YdXJd1Lf6j^Dwx5eTV(4Pzio)ORW5R5C@$AItf$@x&ZVmuz2a(8a&H~?RS0`EK_Q_ z|B1&(vHhrJ8@h#YR2&hG7vY}FrMFn{nJ5t{O(^ko{jwy$M{jlSK#;v&X?rkVbD&z|1vzYB&(Z1aon>M z=LbNgbB&-^asR`(FOK~$aPJtd<*Aqk?N{pNaflOx9&I@SQE1@R3hKHfk}Oo4 z0r6FO{r^P&&HgMzM+)s}92LP?oc|ifNgU@vZ{awKPb_`Xx!9J(^ci5mKjB&$MYC}{ zR`WIo(^z!qMM9a|!2l5q8xB-}u?;8?aNV91x@bFuO*@33g^#w-7zTt@>5JT>J)|TM z-@~~*poUT-)%>gC=;z;w3wPn=psVP>VWxJ2| zl69#02mD_{%63D0=fUzxyxc%vx6m~r(0U~)rJxI>A^HB-4LWiCdtk|o|08gL1&&Lj zCzfh^En2`jTKo*S=}Vm755nvf(8eplQ4w%bJGdi-`_o6|K?uJ)A5|M@X@~qsQ|q2# z+VNRCxG0TpvFNMin3t`F1)$E>LKG?x{VDXBe)NwlnlgeqP97C^wb+)rdN1fY+_MK; z%!GGTm|cJZ?)vP&QI)BJomy(v1^&N0@5a~Js5KiuG@u(FK*u)Fc@6Z9_M;L}z_t$$ ze-#hB1lyIkb^s544#y?gdL_=4czqD(7W$unu817%dk^5+y|@-avwevD7Ch%;Y_Gt5 zjky0C9GBtVlFqvotyR*U3?(kvD<#P)g1*7Mld$c@eI>;5*we4R`u14Yjoy$9$L$W(6As;+ez3{;&Ts`)eYsBM8zpkpcXoMNtlct zRgekXxAy1@`|%m+%?V|yCP_Fr)K3wU2Ou9cYO zG;FWk^8~tP1WfQXl;6sujrbhy*$8I%70z!2?M6Kq*!~h!V)_!Jml)u7{C+XEB>_7X zWez|rl#H*JQ76^dFPQ?*;@U>g>G(|(?$uH5rFh<4?3dp8Pqa&^&K|(;@5K4#D9;u6 zj&JeX8*na$`$llRq^LcAdw?Bf*HDe3P~QzU`erwHDut?q)ll;?zV)*#>OF}%+eXuu zmpV=AsI)GLp`YRWUr@(>oSVGd!gss$%?<5ntA0Az(hufOqf?d`It@Otac?`!80)AJ z`F)&k#krDXc?#PS&y?z80cZ%Fxn#opq^3{+8QKa0Agg>P=@hLwE;jWBprm6zlK5F6n zaNkmV?+@{tM{)o2{{Fh$BpAmAq^5;FHhlE)Yw-AzVg2Lt24RRs(0=Wx-?b221}qvI z2F4Rd#rFlcb__nRWYU!k(vs4zKW{C)QuD7U9a-K@(sGPR!-Go}|0uqp^x(P{CXcDOs#LabL;eJpsRaqow36^>@4s@4fW*^#9+6D75!uGxX9>MRUk? zE8rEEh02H~9#`8W+=f$3b4W7a8V3d4#wk`KvxpqY+QcYO2N^Z&3e@c3f;>4+WQ){J zuAuv;#67VL`WdJ4@?yn?kV`TqFOD0GB(j)9DOOp{^kw*A^`M_wwk?Oru&GMM&?^dT zSNbte@T!PirY7@lnOqw&v2-c1EE}XalS8Z-MX-HkS&#WB$wKigkr*Nm-=%(l=ZBQM z>ti2~$lgqeQOR(H$&oaE;<8#wsZSF5XR^8R7)mKwIIF}uI|PNunbJ#4BqTrMEwd@X z&hj(ea#e~UWW?&wz3_>R8zMSNCT8u}@y!N_nnXoH5+Jd6P~PNyUQs3*wq>%1bBx_h zzQ(f~_jKp?s!h7Lm$b+66VxfbR34XEXL4K+%TtCcH8kVvX>(SP5f&rLd*xBeyF!TF zL=-!nC~=2+GGlF?y^z>GgGlekRkbd4z#~bNEJkL^@cc80X5W}Zk%U=E6d0rZ*0sAr zRm!vFvR(|PV>+o5-9%#^ZX6kAq^IybdMeMVAupWR>h9HoBA7gM@gf*N&O%%}b$ z#1uy#XLl*Xo`3O=2`#oHX}9`}EP43ScjcWjGsN9_^c77pQP!EPJisiEL~tM8pIOQ} zW1FHxyU{E?*_%>9w%f4fX|dZ#bcQ1Hy7QgXnQWCU+K2i{STUv!$cvKz%{)P+(S;P< zVlkFto!OjFC5>WE8!|Fn2WLC#OKXzjqEB;)e3U9WGU;B9=_7eGcgk7J=BKEw=t^uj zb+rJ-a+0jYYA>STNz1Do__XVMi6r^QN#hx+rcv^xrQ&(-M#2QpCSurST0e80cO@^7 z_)uo4+4wwBLw7^Ndc~{sJbL1_cH6KlR)Z13s9#xRxhwn+MMq_k+qTDIgA$vY`A&&u zTNA5DX1!>$Xm5VkS&%-7`z$}cy{ue^nY$;%f~OA#NIiqS5`i$2BB2AZov}Qz9u*SU z3q{u#NnS?c{?`I5ZbuyI!=tp`+?seVv+2w%>V77(_U{RnZx2v)h*k7FBr|14<{DXH z9~Muui0Jq%xtLb9IcO5)gocEpGR5$!*;G`pl)hSufrsP>(@;+?3#~%cAMS!*m6^gO zW%Y$l^ zJ*ra@!l@~?6(Fk{dxn)ic(=@gS!=H~08v?`&p-r}Di2(^!WI#HEbm}Ez3xJ;y!1^!%{!PKvAY;W+Omy@jIL^mG)K*k2r zJApn?czvD1m~n8NQB`g~ifVWiM=EYEN`4L0c}W;2Op7aS+3@dO6*sDM$0mPh64JISRv8D zAjU&90>03b=tcTJLd0^}NJ#P^-^wzxDH=Ng4o@I+jWq7HJQ#T*fC`Yj{m+u^Y?vro zt^@&Ui4-k#qL0RAs)Ybc3BCAw_5vD;WxdQDfv37IrVC=#$)&r|zO5;g$jCGi>xx1k zd8mSFc9^!;Tus0^6>mr)g|%2Y%&681*wzBg?0hvjFr@-ow>*MlK>)ubTUdzjT0!HFO78u*OhRn^LhmVxP+M4W_iZ;lidM zv&jPdm{@%X+KiEcFNSm0?@lu1_f8v+O5`D5G3�q{74u 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∋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%0AA5bWfI@vW2~0Hs)S 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 z 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
    -O7{jag6yAXOIoStc)fH$s2dhS4 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]c~QV( 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


    U)Mek_k z*0fdj`ug>P(0PO|irdw>zgv6n zqngSfo;%l3`Dw~7vsWVo|`d(hrptW#b+77V&y0Q##<+$Icdp=eK5F( z9uC?|WU^gKkp>;ih0XmS#$Jrupr#Te%qJU0kMMs5l+7qjzCE4auJEVo_yJ9!{cFu9 z;~a5mb}`+3Y_WTIeF(6RFv;~(4bcu=wpj1&U^#YV|d;$7^-r+!?$=MY_(xC zd-2hE2~{H&9}p_89PkO;)Rsfj(z4j0oZTKNg-|CjB&Wc2W7KMi65B1=0?QI02y`Sj zZh08nBbpx)5eEddQIAv%)?R5tJ7_U&2-b&MTqTHh+m(#=lRRPZ{czFMkL#TdYF7A0 zrBR@D$%iOHXtZ3$-BT??9ZWh)5HB+*NN9?K@P2x{)nPMHI$nu*i`$0&muW`}W-VsQ z#N(QE#HTthpUPd|0#F?h?qFK)pS0b3kDi&{%pdSHKWRk_FZPh-{uIXV2n&L=`h8FJ z!I^cDP+Umb*x>?ex8%YL5u|K$7GdMuSzX-}Fa&E4Ns|II_<;%>aU(k$np>B!yTHMO z8g@j}y=2kj=DhGeUj#CQ$R*GtR)w;hGiP)XBPv&$k~_-Jn;OESBrR6djMNJ&jYuA5$gTf-*3vmGi}023N98RmhBwfmVFT8D)`lExf+Rs6Auc7q7088_4s z%fy6qEKWu>^iiLvpboZS=Z&4yGzZd5f;(fuXxen`M%z6;95k1g1kevcUAPp`p6J1L zmd)5a;xR-1wk=bVgY?x2fZ_0uY9d`IfPfQG|75!@DoD#b4K`~7Hr&!i^@XYWVqc88=tid6 z`#s)n#}V^$4QZ%%!mNzp3X^ta|FaY}XGfhqatKXKBbct903uUB4Bg?`lC}A7 zS~TIrVU{(&HXLy+A=?}h`E|3Qz>StGjS5RpF50T4FHgB5CuPa*|N49bF1XN;`}5Li z&5tJJv3Kf#G+uEeiCQn!#vPXp~9*73f*ebaRJ3<6X*2S@f*wdGj4{-={3b_}rr%iHO{7FR}$`#`t2 zA_dSI8|i-$aGa=HJUauTOom+^2OjFUqa8bN@lF!{W9-8TrFs!{|uS95I?cF}Uy0-d^%~HU??h=Kpev#)ogzW^*T>J9(m<$Nw;dOR} zY?16dH$~3dV)s%0nij2zW^Hlk-8oQAmiR`z5yh1+{OeRF0v+Xhg}@hS1W{dvc&S0x zu&*J`h!C4a9poMnb!ZkH+EC4ATWa2+5vLYASJtux0m;X1^UCjaEl1q5rAHS>V4Qlp zgQ*c)fHRh>V_xadbL_Zwp<~$VP_KvR7yl?=K54FnAFApxT=z}DhHC}dlXeW)Ky-d7``$SMP55%Q~P1T)9MJahHmqWt?LR8&xH=rf2Z=vVBy2)-)Djb zo<<721>Qkq=9>l#IGmGg?Fc?y4zB8A5je1-KN08eMfe^?|1dy%^&iaaxT&^OMF;us zcu}l`W+2Pcsn&VnW6v_{;mmGz^p=k#ZNbdvq5fTD1 zQ*iUOQCNya)&DhkLW{xXuA8vn9q&s2xLg&LQ_jXf`EZHXO-F3g#%pG+Ve9M!YP4m_ zK2-5{3lLq2oji;88=Yu;BjH$qO%??)fy_KlB7ZX&ee8%V>~mH_3%`~ht5j{$P5yfx z@+JqYw*pog|QEldq!RJQU zL`!YRp%*o0b9WJyWK0m#5R(wOU;z2p?QCIj00ZD(OMx2J?$A>na0kjO_@~OwL@^N1 ztoH$1BbgK!9TBeM(&>`Zl)GI6ZH<+}mniMaEEbv#crdk&fk2kIxg_vM8(L;)pwN(O z+d)f5QprD`mT@KF$C0ad6J*Q~5zvqjvU#$K*uVum(GWh6;(rdu2MezLtQ|>|W~BMP zaPuAIj@ySlpBdM5uB3NI2I-(awThu1Rw1uz{OV9~2Lwmm?Ea7nj$qWm_(qJD9rK9% zOFaZqjgSwHFNG*s2Qy>%3ZcnTMx!`wuYQWVQ_%D@-|Nu0gw*&A28E%LjZYa9!zg^$~ETt9usAbxl`jTL0AU3 z(Y#$a)^vo$G^--&*uGBmW&XRxY=p=Gzf}#lP2~;Ym$P7n8~Te=qULsT_ZU(*9pryg z5*dVwB?7X|qFKHjeMSd9WoE~mI53X;2nLN7VXQzBGCn|oU!MkuEm2W_cGc_%v9B(5 z$s^$tl?bvQF&}-t_EN9^d~A9EG&GfZhwp@;$OEr}-Q76fV@f3CmRMb*45^clEs8$F z5quMl*|*~32=eP4!ZS98J#7&=fP`L)zWd2x6~zys#};Ru*v&xDfd=hw0+Bt0f@j<_ z@IdWd4e{+S>=0L8W>X$;)t%bAS-Y-B|0YHRPsra(;)g4|hJIR?ff&ZGvON&}p+wO> z8RgGurUkqX7erD28;|^{xeb&$3kZrlhR-D7)KIYej)K6v@XPQ}h`k055`@gM^m9lM zL0890zQy zj7`h+<4w^s;avBI;X0no{W})zAUbGMV~l{Sq31w?7n>a_0fu7l@zZ82pZpbJ_Wv$p%bV_>Dj&ksSj(jN!9(2&jB6&}OIkIjdJ!6bV$~Qs&7eD>%vxI#v?w}4^Q3#pMYjG-Rr=g=`QQU+-oq{nVY7)3O(l1DaLTGDVlXfN zLx$|O`pq|S*jG*AugprJ9@^-(Z6TE66n6ZtmY`Ul#@{Q0>G*~4;}>cSP(8KH9@r8GA? zF&89LOTt!`73bu+p=unNWJkDprY`z(-!VO-4Xu9w5H$l@qp9b}O*<*_kC&ugORrbV zeMua=8M$gK|)!jcT%^?5Q9>IW;O5A~!Jakf?u&x`-2(u&<@?ccO?X2o>qE*7Wvx^&@vNS zH=j{m8$@BkSuCcYNHKYwuWU7z_o6gB#@q+X(i&s+&KXi`af;CU9uvmG4B2@4r&(*- z{;{*m@*w_@MP%5E6GhWJbc+arKej19QK|T%`Hp`AwK+PCpFfxXA*2mRlFfKfkG$?M zE0x8cGx?T9<~Ah>n=&QLzixsvr;CTAu!E>{u#d(0{#o^n=pY-CnGL+%MDfLQ8W`4h zH%bdly)XkZlSG7eZ`5mGcZ_T2^_fBcR&bm{Pz_olHe4{c0v`XKkk+|l5pFGk>Z;exAFS%SPt9}_YYw1-!twmy- zU*Ori*RX)n?zJd68yPb0gqEZq-oDdt)J7NkA}>qcSH zaLHpgK&*tnKb3zm&C`}F?Zp_rzzl=45r@oe>BA7(k(AC%%om~{#c!j810D*oyR+f; zIR@(VO$b=tx{9ZK5lFdPEYrg;4bc7ktHvxGtQ!dk0ws4WLu|P{Es59Y%@2jo4<#It zTV$f>xS&u-p9_&I3Yz;caGl(e!}jUVb2^u=JuL-H&#CL5Zeyqx&1iJSPmK1(_!qmG zehrO6uIY#E`q4&7AwIoQy(((==^t`%=v2NAJ$Oi`KXrVnHXGf2Vt{`hOHS?p>49Dk zqRuwPctv&Om#;B_e@dfIjyCcSPBWGl!>;0Ds>|s;l{8l$Nga4igU9nMT=6jcj#?nM z!e-l-FcKK||MAy-CpgXF14NK0DnZfWu+^f5D+ahP2^R%nIk zM3CdkU61O?CjLnq<~aOKQ60j-%L_bd%wOU6RX}B*VI=hLffmiMn9qC@!XCrhqo+9* zDVhzet5L(V04v!xO{IsQpT{q+PkIdkvtthLEio$x>OhDsO^ZHtBYhLVuX*~b z3(Or_h;9k@@V~`-u{=d7zTyuo+}TfI3w3E{*ncHzaG0V zh6wTq((_Nfioef5Gla6O>jsX7z<;B^37Ek(S^_D-QtGGLQs2-T{+%;;?c!lzm*A)h zeAVe8tl6a}cJXI@$%tf&L40tHQ;1=FgJhHWq;v?1o>e&LV>cwOd@+JBCq>YIG_Z-u zL^5#pF=$XY82B7L+7iAoLJOe=gi%|m3l_`{i(v2 z^k+URR6crJd`yp66~dT%$4hut{_0f!*BH;;?1@QP4l-{b(Aj5>9X&fY&JsJPqY7jP zU>tlUA=R+E-Wr}CJdUZEYa2{5yU*fio&tAa^46L#MC6kI&`DrvTsnlUn~O zBHvXoE&9zq&ujiWB}?ZY&!cYs&k8vqkEC7X3~W?|tRwRe;u7XO4OI=l#RsZdA6Kkh zuqQME>hxqAB}Px~egOFi%anx0&Ae|(#0Eu))%Av_hRp`E1s2OlgH>X83&k?!Ba{YO zuL(SoZWu%8&s;rAa}ODyZP~orl3nO}@I0!z#?o&7P8Ev8p2Ub<_=q2dfR*2rgb95~ z^9EhXmWT8T?;s+}0|G`$7Kf#8SxKmvMBD0YfJj0me;UPg@S*eyZ*|_&Fb_mW`OspL zl70Nu8PH?y^BMd{?fR{!m9<9}SMftr2byw86)4M0-fTvY8>hgxsJ^3m_&NT#%0CE6 zNsEV}M$vHg7Ntm$eFgFsA@FSkAm@b`zE1>pUV}lS|MjX7OI|oW6HkYpiteT^pwE+N zS2pP77QjuDs4J3oLB6n&TG&X$1>YtR$b<`2JxQ~5+ZcpXW1XYSI&7EQ?&T3jY|RVo zi%%HD8$_>WSG|5%|7MET-vHx>idMnSFq<+W74? zP{_C_V&4xRuHgH8!y*f9gz8n}#84BHCU;UiGtkry?X&>gdu6JVgnj1`_CLRWR@#ls z&~B1w>ESpWRHmKev3ppNtzYpamH7O)Y?3+y5G4`?ex;6ARQH@Wk;sr523(PXri{53 zGi#1{5|(tWLE?ykF#&E$~~0G7P{ ze(^mD=aFB?8#+Py)$;Ho*oByISN%GZ^89yt+D$e;I;}+*b3|zpbd3+uE>8N#p9HoJC;UNxJA zhoAPFUBcvD?hQw%1)qqRaPuWlHjo$dGn@561-k8b>+xv^A8cA!vg=Z%`3RJh+Kj!i z8WYGK3eG;2h-Po%IEL<|DAw^i0{osCr2M9fpWPCzqMmV9Z|vvSS4dJMeS-Sr4gSUQ zGpf@m=f~edj@cPR>u~kEOZorK&cMbrU2Kuv>!2?aWriZqLyOP|QT@mP#tedL3Nt=79 z!3|$>A)+=pX=$~?iTbh~WG4(>qIlO(LFwVt6yA0kZK{rSG=AejlUJ5#Iy>U)Gi-rM zGEY9g3Ab3=m1E4@#AAL~BJ_o@CQE<6!eG$I@?!8?J{PF((;^cV6>=rjkZLCQzU9#8 zeF|lTgTOHPrBVL<+EzqWO+XFG3}{RmzvfW*!aDw?YJN21H7{rtJH}ZgAqeJ`qbpEPOi<6InS6;*ibu$FD z`@<{v>vf9rqqz;C5Nma4Rx*~!#Nf%iD<+;WTg z*bR##CE_OxcEB^g#n&_T^Cce3lLjnn%+!y~B$ks_9JUa|x)$ae-4zxQ)J1m{5163d z>yjdG(5M>5Y24M4va36jJKU`$p}Dgyu5+DANAK0Kq=ApBo{zzi=ubT~ynA#yv zxC?$$a=Axu9X%BrL5N|HaH6j!_xDi9^1CK1ey9^0$u&Ml$)FtWk9ix$K! zu1CkbR^#A_J%-LWg96#Z&=&Hm0Q#HJT#4<77FrDd{Lf-Z9K^wI znQ+8)xWOYuNw<7W7hdH{l_l`YO84Hr+>q#sU2 zEUFG#Zea1cRHQin*_oiGgEom1igLCWr5|z?eJ&o3OUW!>y;2olhs!$0jCiKlv=Fc4 zn^xk(ca{%H$~Y^)Z#oSnfmTF|$zucjhrw`*Z{w?QS8p!BqPn1$FqJQe;s(z2@fQOA zJqb=lYO>SRY1%>dT6hfY9U*jJ7p+|#xCVesmc+XS6Ra6Ps0PP&bDCV>o=YUwA&78i z`4_=Xgu^KC9eWm0F(d#+sivzv_n0a=P&)oWxbPDRa*iL@C%nYwg$(Y3)CM@ZnG)ew zEzHOR$Eiqwn^BJKy0t zm_~W1YPADHOl@jy$K1#ohF!5R$q&@2?uK~b7R!!qiwft1c1T}lcmYge$?`AJ$k<}(F65kQ688!}mZ0F8UYm?DsmoL3x1LjY zGAXuOGXXog`|{IJ0k~9G9idLs{iv1l=cgO_Xgfwp3#m=|@>B-lx`NzF$oScb9CZEe z5wm$v4NogePfp`oLM`wf=}&h)+Y-@QYru(lrMgAN3Vsc!;)4mh{X0o4V5=l3*415E zh}q{>A;f^bYYhZL+dW1nOhn-G(ajg~wbQu?RwpIQEo+K>2YRuEG>5IMr#w=G8rZrp z9}AJg&GVAGFQvgrPf-Ljoh=04y2SX%SxiWVFtL<`I9i%=zXz82N67X$Mr4u8A{;XP zo*DeV=cUMDmyMG9kU?6G$zCqZha<{OkMlfx?oms|Mqpg5$R#@`)*$(1cYCv}2J4vB zNSxruz?*eRr2_Byh+kS6A@2y$-&+t?D8f(U`Yu&>t!{CSxI-2MOnyYdkedTmhVFN5 zLyW|m?vcOi=hKkWV3^ZNApav0c7 zF!y(li7w{wKfe{6r%H8JqWc5LKOFNRuyg@Eu)8eg$eMXN%?(C?H8a^|syK0u>a%-4tVV5JQn!qMX zzylq9;PkRvxmm+FBKCCZ6||zpi#uXH)?gUtg-=x#DvI!M;nUVs*ZY-BG{ScU<5qix zlm`My!Wn!?xie4X)fT@m1lEuH8D#D+H?nK-IyzN^pibTnDbsbMtuQ_JnQ}1Q!E09Y z=^iO=Z*=Gonh>Sk8m|bbutW8LD3o(onx_woYN8I#XipT@keHb77`>Jv-%Tic)R!L77M~=)PoQbZzedl7$fEMmt#CKLy?LF=+nN_ znh0kpGLfdofx&sPgdvB7UfbKTsMYY5$*B_t{pnaexdv_iM!lKiSNU2Iv+Gg~4B}lyaW2*yQ^eRa4sj1709cF!zF%r8Ga{#hSpmvAF zKF~}xK1)B<)LtLA=DoNch+Q4c1-D+v%)yw;Qw`7s`9+}qUbI+@Q20pEr@uHah6p@7 zVtBy-&o#5z@-vAdD8iP1+rfS@f>sg!D5UteX7o2xov_>?!LVcCML|1=8Z|M-&keG> z3K7Ez^Fd}9t8Kk?iUDEr+t53cD#~3+RPunhxWV;PBgya^U1jI_wYCH3pboL4-OW~1 zvumMy!$64jV5R=0#gXQkXw`&kCuy`6N#>ETA!Qv57qHm%4WV2;+f#S|=*85f?KTSq zqi$q`fh-IgdQ+2^KepXlxpWJ6t45cEGxkH6)J}Sk~V725qkn`1!p}sxct;hJP?iiYm2#Tc+Qxs|(vJYSK#) zPxC)a!Or?V^g}l8Rg2XNd-ff1s^^yaa%+!*~^oz{o zY(?WgHHe0v!}rJeKf+}ldRx=kl-kdx#A*RNcP>VjF~mQ|K<5hLg?1=^d>XfHe%~%R zhD@!CVP0F^(U7MDhcBS!9ao=})cE^~@9wzCq}%|Omnm!5f`e_<~RO%_G> zzWe$7Ivm*VUFd&1mi-$I>Y#~d8GpM5*!3O|e1ts8)XfEfkHk83{=_u>)P?3Y#BD+7 z3$h`pDa*B4nj$2@@A|%Kv{MvNXq}Wn!;r${xL%pA4K$kbG{k2&MfA}nAslo&YXX&d~~4%HPYP2+E_;v1o-OxSbQRKERe1E2?**SgWV za9L*xL?))>8m(r0K08z+giW+epH^!f;*t;d(9FVpOT z&}!(v2+i)}_rMVqWmxWLaIjB~JNO0yxHv!bEy$2f@S#k6tN?0uTV;yGh(1vRdk&A| zzRs!-b%3w}7*D#QlRwZ5?YA^2Bj8J(+Y%CN%mSa(U(qnL4U6zpl{#o+4sX{o^wJIT zXTt3NvGq29QB>#t@N;%%Gm~UGtZZc2d4Fe9-+SNp z|6iEw?(EE*bDr~jKhJs29ODR74o^Gk%2w14q$@l`*ZjnGm9N}X@kBY_J&pgoO=rIT z-?C>0)=f;`&#_DrfeAkCa>V>Syj?av4i&WhYTfGhPxQwVFgz`I+0cR<|g1B=e_F8B`k!T)bjS@ zMA21?umj zxJ=80;iv``EQ;|T2jspB_%|mDFLH77;M(YH)M!8JDMfx1zx)P$e$*R65q!BzTXb=- z;-twM2E6>M%h#-hLQrBq9>mrK2hKftKOz1rOmyK7Ck@YNP$K{;&y zPPl{DV1-_+${k&KhMm+rLGrps7F#}Fk|ZeL4=0CQes~lc-(y5=d$7Wo8dx3K>7UDL z@JA=qM2F5xuTx7xU4a@^K;ly1dE@??vshaCLtnCuZ%SYdHbX{X=Rc{bt(?BiZ%g<( z2BCHU{(n%hP*VcI?GqW3@0O}b3oCC#dIUoHe8NRT-;Dl}1>~Tm{ir5^U}kADF`-el zB#&*nJQlz9ni*Rb@2*YILfQ~o^)vEX54tI7N;>qyJ1SV~3>8GqS1*Yf?&Q9rf7n~K zrU9Bi^h=&xsQFqN>Zv-v!{pm_cURMUB1bwryl2Q^Bm4i%KPc9Ycxt9qo52ojHnP)I z73Pm!KvwvJ^Y5`1+Cjc=K=Nd%y(~!#Zt&Lbz~6#(L4AA8ZC6Cr-)An>19wkq>Mm!j zhsx)zOtbYqnvKn;$yae~YVq1Ss6Lg|x;NN#C2Qcnm`29cd)Ubsv!0M(=9Z2(r3u6Q z@wr;@M3Hm-yGlN_wAKogSm1L>wr2)PC;;129(EH*VDojxOjwuSxEX6|p1w@&q8fNv z*$ebGDnn^-fYgRxa+emnJXZ1%@5>X3aV zAMzM`etM!hHz>KX>n;o0bJ+;Bc2>X$_^d2(!wieMljhGw)B^>->XI5HU=g;lyK}q; z>sd_xE)|3Nda;`$_)KIu>Y#Iy(gv@o!19MrA(u-g_66h-gWj#Qw8nof6YxoS~L zwq5L8jX;oX=XO}nxZ*4=hXs{!H|RP&HJJQd;N3HkEwy zd9W||L&)>u*VX^%DdP^T=O<6mz`9jmy%BLEx=4FKmEk6Zg3ZPu^0@m(kLd~y@JIcu z194koNK5A1RQQXHSwYE-utce!Z<>bbzOUY+G($Y(d1Ru2RZ#FGNialYD*tFEKt79q z9*pU_fb_x7r*?{M!MQ2DfFqSL+A8%b7hVUztxPu!+ zi56TX)e5(XwVSXF`Q4NBG+_^*89V0b(VV|-;D;`I9e+EjvpUQD!Z4Kf4HvfG?Mj*k zRVvAp%|8-@t2n^rJ}|C8=}n#T0Dc?3w@?1vzM@auxoG!f9Rq>Ya8Un@Vvz* zU7mmX%>9+gqVcf=qjJ;LqyvDvX3Mc}^VTYqd#p3nYx*~I`J|KOW|)UA3AWE;iw7Po z{vae@?dH><4oJ}5E9)|S;SQ?ZFkkFzjD_l@S(o-47F8$sp7FI*WYfBZmr$KO#J}S+ zE(YcePg6Z`KU`81E85Wq5Nvp6*#Pn=(myBjy=sw>*b?2J7@%1(;F-@{S2sX+_-Lw8 zIUk0P%VzG-z&e*bAY(eP5(q(s_;=^?crrw+e^6o_5A%@(ub5U{WSOn2hSI!xUi#&s zEtgjUweN^Q_cFP3#04i6(xLgb>xj708uGgbiYgIxOn=%8$J}_ZuezNkJu;2LJCGaK zO1vH3Nu!$I7D#{k-b_{(ji|1JukzvxdGQS2s=1J>6<_kkRP$HA(oJsfi@{%|&5wWe zf#Ef(nU>)K2$on0Bs?)quj8+t_u6dsQ=R#BcQX{IBgLz!0dWZJg;Jk1@23XwKabAI1>3-kGU-GaKx&9WeG-8MIW~8rLrq8ZHq}61ff>Mj8G%~oJz znJT-|o&OA)6D@kHBN6!Ed=aaBpiJ#Q-Zyw+@SM-pA7Z54(<-~>@?%r^S7r{Uz=76J zM}--^4M6D9l42L2poYgO5Y%#h3Z-3|P(R}TF_yJMzEi}5_NmsJL)%^2Kw;XY6iUqsOow(LrpqR|FVtNI>zomI{wDal{T|D7y+d_7lzCY!{PK&on^-bhg zj;oc{#~_cHYc}oUKfE1ttoVE#n9#%gyXRG_A@F9bElYI0HV&zq{zRJH7_-tpR9Q9Z z-X);P`;aV#Xz1r5gl$5JGLBna?fhj3wAL$LLUhlg@AY`1eKGhpAdBY?l(V;8Rd|%V z-49i{8XJoxa_bRwc7*a-@j^p1)RMStf_$AM?S2nSz}?nR^T^f+V$gDe((xk z;ACIPitzpCgR*6$+pY1;mq{v#B^fHI%E7eRjD#kwvA*-i819!t5B(!y6@{?tZ?YY* zGNGg=6n?laP#msF@c(G2`K6|`%1@NL10v;EipJIvQ6S={So#U=X?4bXek8cK2A<#_ zU*Z9O_PGP_?_=?Ft*rU(qFYOJa&HPWFO@SEKXYYtN#fZC)R@KUiH@jQ{BD|ogkHMl zHh6xaaExDTNsaK!qqy&fYM%>xbWmu3|7kpbKtuHIL5U3y8nbGq$sobIZiQla0W1l- z77HjBF0IAFit&h^&guf~Yzh0|tXh33Hw@YQ8^8CWpwIe#*hihLRqeoz)gMf0v@u-h z8TNBUGO9!KGgt8I#|6|igMZQ(MEIi$PZW_he6B>QVc2Sp&WZz2?wc{gDJ5V;XrgQE*81~!G?n@nNU zw>{+#N|OWarh5&4@#d+2;d5??KFg<{WNj)wRNzXxR|7{5^mHA8uu7OMe*B%(yf z=Lnd5+APfrZ(Ir1B0WAJ zt>U|<>!=z(7g}=2(xyzR*$29t%%1XOSmkZ}POP^oo@=FzqV!{koYI6&FBV{`j7sNXf1el%tKM!)E2<7HO{x&uo*=>^u;qQ&r^-eQu9}x!*a)qu76n(Z8sxmEP>A!{ z<-Q_&qtC_ZHa_QTkmCzGCI0HQ{wLs3nrbU9hH&|u>`;OXzO_;bMzZUHFnbR^WPUKWmjd#GPp8t%IkvsTc8Wm1Jn`(Yq?91K6527B`HT>xsRO|7eIN5gLRHxFNef-E8ZOk?#_IjrsHjX#4A~WqHt50gOrJ|r#bO{l^G(l>ho(~^m+o};r zLy0FMD6OlnMY>+cPSgEl6d5WyO-2|B(no31U7p&&cj~b~Ky_jFm~a4VYK<=&sL6Y7|(wb#f2NLGmrN(PA=D&ug%>d8utSZy%ySmTLV2 z8>OYMZF%oFADK&OZQhroTfndCIc;!p9t!oB`YUW#QM0j_uc#x|HtO3nBrS{~D@=Z_ zR{L59O!DaLAU0s7ph+kP^oKH(TXng_T)urF%hzX`{R4BPO=+yaWpC387sHM;5p4rs zc{PIl2>{`PV*cE<{Fjrl)^2GAIP>&0)>@1FMZJnbwCV2C{3qje5q2?YX8*(dHwzJa zTKS{Fwc5BgzjS1<^u|QAk4)o8`XK+8#-hfa&OaE-KpP7OFYqUsas9$K`NJOMuB4Cp z8e??PK33&1$(Iq+j>zSb5Z_S(5uUGt#Nta=lwIk*o;_D~y{@)}WpFM35Bb$)ZBM#a zw?JQWzoFBz0a%O2%0Z-|2cQ>~95&0f_Ep+%o831BV*0jiGOCKshsSU`wloi1*A`-s zb(gjOM&{{S)cz}}iX9BxqVano?zP3Ol;EY8V%?H{@f~GzX8aKA-HT6`zbbr#{O{+B z+?d~9Jr7H2H;k*Y%ZzWZs4ORqWjfLs$F<6`Y!Yg447GHxgp7-kt7%3&S(67U8lokB?ri87zwC)Nsb+6_bj;=P~uU7JnLLp?LQN zAt)dNSEu3T{8}0Op-TGsrh&H=Y;1~^`z0l@$CbbGe=PD?%w+|Bw#ZZaB#K_%gR1+! z8Cb;D0(C>tOPU(^ud9&L7UH+VXKfyx!LPhYP1JY-PwSgJ$U1V_=DzwpZmc^&IA)#t zhVH_~hVRRXB8DY|uBP-s6vL4T6}sv>kp9MhA6R)&XvbpsMy?ArY58$YcdgN@E03UH zWjh7mfN&0D?T${*RU`twTWG~1Gf|{k^xW^T)w@MXljRB?<{dY5PC@;Gzwm$D1sja* z0wdxNS9kWRhxar7@lrT@uDe9F$urdFX*b6;A+ic88$TmGIq*TTha~+xo(pq+D-~4? zHF!Ya-@yps1N}u^TV?FE3r#ofl2A;iGzs~pnsp`Ge|y+Z`BzHSff#jujUTEFR@Nq1 zt`nJd*VepO{3d@X*bPlHs@b z#xIpc+loNYL$MF4u`I$fbm;N{3V@ncrQ@t0YG-$X0*Be~H++Z~+}+Geu7V9N)~OdE zsIl;;RJmh;HrUwo0;E#ozo1GbCdr4>rD3Iv`n6k1s@Jx+(t}mz_=$=13=}Pb+u1)A znrq0F{53%li15~W(l;E#3Qkhie_i{1tshEb_$TLS>kPVC+uNnBoG~;{tDC9)-Oo>! z@~gb=-}sYMdGp=?-!cA*!_lU)5BWMRBwOi+7h2GSlzRZuV2odS8E+1$H0M{ho4yi@ zf@`MM`vWE&y;$cPzvh7>vQK;28@*50&8BA`!XS}K8y|kpUzAvXZJ8Z-&`V82KgFKK zo^4%_75mDOV@ILjlYAvu9AA5P`oBCoo|ftYKM3+YHNGP|q$N#h89t@hfW)WluV^;h zI}#I-BBc$yI(zk9V3r*|elJq{-+PqZSKO~f5zZjht4is+mMB62pgfp-hJ|?eIFuuYG?a zw98Oq`i(WPdf&((1+$f0TZW!58CcKP3=pgsX@!oMgErw#KHHPd^7&r%XYDHM82Vm2 zEC}|7{UbzK;0HEca8Wm_ebFD*dFU7mbeW7>R5W}q1&2l&O*e?x)0JQi$hBL_*SBl; zUR~`{&C*#YJBfX>I7Cj=*5aQgA_#IHs5v$Q(~ z5!!?e;cwy(!Bed92h)L`^MVci)lk)Z8?t3jg>1`JH{hyV!$-nb+)*{Z#3QN6TE4wx zK78^Ld}Boedy~gtvNRrW@s4^V&xVkKl?-&>zn$F$#f^ZLn}brYM%e^B+o zvz^0j$78N;tMSTtu6GvRgZdrX#wr%A--30Lr9Pf{=#TyUi3=gwkWsnk8vokw{+N<_ zK)WaU0?hgO3vVvsmv&GxU_{{IyaPVdRu#HJ^w2_=<=SMfZ-B~E2KmRK?Rj|UUfF(= zpINw+b&*nH!{1`iY?Ghx zZP;FysD!V{RkvmT`K>GX)JY(}nVNBj@#JDSuB$TNtH!Dwh4$6$&`mc)rCZxP{yo3y zN*V|&xCh>EtmENweFw2*D>g|=YgdPyNq zx=H&*Z1B$8Wn}Fvzob^jE+Aw!z>hnN1$3X<)Spl%bSGHr?Op_ib|Q%q$oR7>^`0=c zJVicHHOhaH-MNWd+^6V!sHptc{0R-$eB_NWWFsyB0fh)bJ^s#g{>ufj547}!>LR`nXudBb$?Z@?`=8XTs8FP^i_?A_f&>$*M0r) z>Tenf^F8Xqp4aG4Fr05mnr|IBNQS5VH{aubn#NzaMU9zH^CeUJgSzYL!@u_j52JkQ z_@b$5U&N!+SM@zESIjD@ve|5ysOM|9oe!Us1r)N<93@|>5ij1c$F-s>J$Ppjn|TL? zi+{F1R*LmoB`96ChHjbK&hNamu0-mx8~I6-{ry>2wC^BGrrBI@(hh7e;IqzOY*H8z zX0Q>~WSb51lYv>_yw^h&>9JYq7Her99A!XT_}y{PobO^m)1ce8d#DB3&d8%|ih;lT z%>O8{ih|awm0bJQ?CMEHwbPp3-m%H8^Q&j2--?;%0j_1&&p*oBvEt6h_w`zQrJm@!9-C7XTTk;ZSFLMD*M(MiV!x{I~6M|KQ6e-&K1XlKfo_G5ALNH%bG2 zQrkh4OZaaS{z_LX@0^;Mmo$?d20hYlZEwK3mmP>p?0}E6i;DdAo%09Qt!Xv?fbwER zArah1k`9dI=Zy8(YD{t8{DkDSG2=EvUBD2#?UABtTK6nUj`Hgt^kF{$*@(U+FF+}Q zOY7{rSUbu=CDSFz0nP5HeW8||VpE~RKPLX4FZt&|6S?aK*wtxbleCF9SO0 zeK7higJikCeP{_3ow6R?g}z^h=yFlQVw=YSc8NY1OGV+E$#WknMQGIRX)?zn&|ZwK z0~fZgCs$^O-#z8>BIIkyNi0x=E~2`>B-s>f=2LZqvwxQ4>7!e&JMs<5W37`qV88!U z(r(Ehr6cLaxXFgYkl++Xp6afoHubuu7=mlSe|MK5&#E=Pi7iiL%Qm$6;b1$tSFLQR zfGBvpeIf(jx+YvV!IS7)*>uvy64u|e>zBc65{r@2Izv+sDy*Ez7uUctnCVHl4;y6e znFI~LwD{y5Y>TdWE|A@|{31kx7OF_2zHQy6J8V8$gJmW=%x^yKD~jG@X#X)CF=LsI zag+{_ezG1K{C?KflVEi|Vx9z5o=hlBG%p%5RhGGf5K+WZ33mu<6-!Wb>la0&?AZUM zO8z0|RNHTo#|%sTduDlUQ$j(~rn)NGv@CZLn`Oh}Py+qGbvyt50$ygwcY68TeOLg6 zwMD&U2`q);}##krDV_^swZFin2IHO;tU*P_QP zW0l-FTbnt1A%kygU%AP*=+xg0w+ptB;e2xKPxg~R?F+^ibxCP=i0#;q(|=sO7Vb z2k!0({WXo9Ei6_Qy?3e~weZ1V`LTQDE2{#pfgi(CdyJqXkoL1?em2TyEUIvyS3Jkl z&@WF%DN$6^1n+LEA z3(D=LO_r-~2Lia!Eyfet`A9x3tC=kd%H3edo*jG-`~|M|dD>I0o-Vz~#q9*?ymMmo z!bK)u9`jgA2_oG*=&k{gecr_{xD@u>RIR_kcoM~rWZ8#;74Glx@GbNyk6lpnf=usf zuBBiVS3k_#Ys1PoZ6C5?mSVf+psoE%tHxy3c3AXmlK8(i()_`Hs9kWyZCK!k#M^Hz z>Ac8;tv`Ok-!fod%#0^>BpYIFbL`t|$#l6otPXFxIr!-i@-QnVM*mDY3iD7&AU=iP zqeiEBAPY;e>ihZe?=4ZA5>-<#)@(G@nV0d)z_(Tq!r_7Wdcx%6&c7xkWDy!t^$6!^8KE z^IlIuCB*KP31iJji5AV!IOB!)4lsldIe_{E}yz?DlD^ zCSX%+-Hm0`m$6ovin-t8iLJPDf-$J-h{At9W#x~`PH1n=<4Yz$X}{sR zUmfUXI z!i$H;=?R)9vHE04?U#c#pW)T~Rp~d_0a#qeu=E2S)N7_r1Kc)G zL5Tn95=%+(C_)_wFoGnZu2I!Nyip5D9Wh)Lr3Ar4XiHIZK|G( zS?<$3jo2ZloefVjx{bfEX!J6^b(uUs{D%5!Ink#gKn$G(xnSGc9_?Jtwna0l8LSJ8 zzn?DUD{DLhRAcjBmHEx!8^}x6+$HHVe3jO=UtZ6&*i?6`Kk2GV?34JF)A^Gfo?4S} z{-XujpX%;;SdA$PpEZ%Yy~c~GZdUPZtv{J4ej6PxuB=(YrGR$DqwWs9c7Teyp>-s* zRbS$ZIy`W35})BWPSXNyLI|jJWFPxR`vzq`ta}&}CHyp&7-)C<-B%X>t#c>j1wC7z zkP#c%U#YquKh9G#;Xm#`2v(a^aef(<41QKThaQanGVt^9`A#9gYSZ zGjW7)T!$w$3-{{9M|GV;FyP_4M%gaN@iJyOz~o$OcxivHQ`KBHW$JfL01>f?2zfoGGBQI zT`I1+yl~Ev&Bet&49g}eZ>Ot@gSf3pw!S1TxdN9Y%DQj_aU4O0?_s*JxK^g?@Pkzr z6KztWej%Cl;jk9CYv~4b&BC~nE6OkfXrdcEweVB09u1X&iI;7{nH`0T=$7Jk zoG@|hl&xiGjOt0WE+=miEtfB(<(R!yXxF?Oe-d9q;}|UZ)FCHs1e`Km;>?Wg^*ZVG zJ~?q`F^H*rI|h}&mW!5nbbXAHxJ94=m2H>l=Hi9aU)CijZpWCCw~A-qTc!dOdVKh-mvS$y6}1AuN9o}Cn^h2GNI;)QbNu0rQ-lN0v<28sGC z+4UXh?Gap_A*;TL1_aE%*^cw*9tNt5k)Y>^`t|~7sLYh@TZ+5!TovssB$`oMj~2>L z(rpDq-icpyvI}rsDC=J>7G2tjA*%Sn#1BC{XFG1iAfm-hGHJLpjH3ca0LSDqRh^o+ z#mz8N!slgv1$`ci9pO zaMz7DO)p5YXnYaTA58hvC#P&~Au{%TDrLR#9F6W*j_uA4#q+~THp}An38g#ycO?gH z*XYTbsjMw!#`R`4+tSln*3xV4^?LHmjQHXiDR2D1n>$AwSDf%#hvMeevy?d@oj#>> zWm)&Jz325}-^vTA$MpBoDalmgi7d;#=Cx0;T!v+jv1aF65!=IzEfH(4a#y!~M(H`n zcDLxS^xC`6na)Q__H4vH>cB%`WGQntp2&}~%<{PHIInthDM$ML+24Bg{Fzbq{t4p& zI&-hLDAJP1zvBJ;#mMM8%I=ozh?4(sW2)EQES)ntDVKUvI(9%g{7Fk9-b1<32WZFE zjY{^VNcIzlQW$P8rOvSTw;olpt0T5EJ!ejj>&`2YWd3uOKPx#OsVL=FfrRZ69O%=7 z-k{?gQ%*b1iCiK-Jsxv*k4oo8l%8JufVZc+ztHX611;w6JUOH0$alP!Gs1HB#;tdx z-UkMj$4v+0%6+IbdwVXXR43+b>yyQ*hi~~x{8J02!yqS>*#Us}8 zc;>~3eU*}Z3p3K2$OV}3zGCh^q1Z<+PUH@GkL09XS+>=2hU15wkG$vNEvWA5oMKi+ z+VU>5<8jKp7@_<}O6DE!rql?tkB(wIM*e*zKO$wF(P71Q@;`{^TQib%Ov%Pmd8zr# z(Fgn##6|B)xvg2#m#{VuD~I+fT{-7~((mlX1ShY6~4xHaS~I znSJ6Mi{;lv%u^-IgXTPByf#YjN!j76dZ{TtD;~>6`Ch5$Li3Px^L>=t-9tuhcAR>$ zjGQ->%)g|}AunK%&sl^mWIR6mlw%Aj=7HTg+IuubZ^ln4_?ebRtfSt;yCamlKShT6 z_YsLc-i&WsBh-?}0>13v?q2fc9p}~_5jQoy-b^JC>z_TO#!sLvjjdNNY5 zH_;2alX4l!T%IQmT!Ui`YmUa~V6QTaTTiXdl9OYf?e%6OT}m#}o!Q;9?wo@ucoi6# z+C3tj`=rM@Hz7}>>vGQ76UrgSnd9BztaZ@kTxyi8x51o>-d%XkRfnIa>1C;-s*E%6(KUD1HVQOg>qXM>!9GC3n zk?e<34y@(@`yD0sq4e(a-c4t+Sewj@+$hU^q}YeN_95l)i5B`wm_}dnTELpz$U`a0 z8hNrlaiqvT$5yh=u<~xCH`W`rw#Mm|6Vm5rQF!(*O734uZ;LhZmICV7;Y2d$?zg7L zDf^z}UAMd2ng;qwJE;rJ-Dl0C_nW{xXP;yp_pYDSo5)*WTI4m<*S*w?CWpXnj!Em3 z4C;0~qEPNt$!6;(!1^hmG#18@aW9Cns6}m2c~_S$dH0#avX>4zM_=`3or&>xndHn#(Py9J$QW@x$yu*^KX&Moi2af`b4JSE548Q< zxv)2X_UXuJka-9)CR`8bLfCKnMuFdVn#gYnCX4@syKNF`?O#ZgLpSSW%5yJ zIIf=#>j1nRkC^$Fy!IIuZ;50t4)@26mc+6i>ODsX!B+AG)?}q}Ecewo<$b*r+vs5x zWUPzOD;TPSO|4F?qpZ}srYLUR5AK>eOCCrK520T@v@g|i7_*XkAhE~0C7V7wp_dMA z1*dv(b1eUBFJdPwgb}jfF{%GC#XPFy&nkLGqO2LurZ+`03U};{8DmI#H^Yvdlw96s z`rI0dr98d#u@^Gaj9A`0Jzat{dgGigo=u!y7bolff+RVlSf8+7ue~*rlj0Q5KnmoB zvffl8f83inp-}HBDU(rDCnJUP4@GvKkXkH|?B|r(>NTAl3XubDcR{>-7(k?bhz?G*~dA+IT2s2JH}5*8ynr=`q? z8%;@#CsL7ufc)Ho2+52{5L54X>B$IvJ#5cOS;H?z-aVsaUX0tjK@jJRZt4+}cuWDa zW}`PTqdo83pzS7Gg)2*#%D0AF>c)9U1rT%JmJvg0OPEk)c%bjAB zJuYQmoIcPDY4)&WJmN&2oM30)xs%R4KF4yLEqeh==cnMq%EoYSngAoeP9lm_l7|M#@Q34_U7r-lpRL*-ttnanR*|ZV2+xSr7X2JPcO`D z(R6ZbDf@b9)6zu#J~ld1Bs=cElbJd`$xN-KoN?L}I^{a$>Qj(M0;!u#XS}B*JJQ1{ z!XF0rpwe!5rMSK53(ok~TPk@Ng6veq60Dz)^m*Ncqq zU1eFs42(Oe=T3TX`Y!t~gCTNGye{o=dQQ7W9b9NnPJLEm&&3y_;ILore+EZ6ew+^sWvwc81?L0cibVmPHnmK!G zgXQG^rZ^5TWK#b6IoXd~*{=`HQ8FKunelr2olghgOnt90p15q~kV=TaGsmTLonus~{nfM2g!2G!4d371OcrLVye?Un$)E zKQDXOjI3C>sG&@sRY$nyZssklCdqneov zBeYmPMGPiDR#Gw!v;svmj!)!7EQLx608#M_KU+Em5d56PKV4i$4k9CfMu>9cH7R4T zUejyE?YQO5tQ*DySsqshI8D{fK>97@V~3y%S$WB3{|os{Uh7?O{| zY&)Vu3fU10EQ48q0Hn77QC_&`#Ep0v9+P#E>EI7hH*_&f3?>#$1}%qWC0oNJ2Qcnh z?6?#FoP5-P2DHLC4P(mM83kc%mUkH1N!eh*gl><$lGKDb`1hB8zhxb=K~DH1;l0p; z%5*>-^Nx2SIf|@B$B~9oSttV;AiA|Nz7JSr!BWuB6){a7bj4FZ9#m4md#o^J;NcjU z$r5XvY>EH)3QJKO8u%Un)wi6Fg3p#>;7(fSv`{FVG>)m0t z0?@$N7QgxmH$q@xBv9^2{^H8884+O9pmGHOF6?;*5Tg0L4u!L5H>YG6&>XVNj1$xu zJP0#hfy)riz;MJA3QU~B{>kv1D*+r&;n`nw7~{aSk@-b~q+!Y{aD5Q8B$^EZB&aD3 z>)^4`3Y%BJyGapGvectdf{Rytl-6lz!$lURB+1wVvwRKvV?0MDF5d>D_kQ{5R~S1MyWX!(G1 zDxNX?ca9Lca zfYN|*S;~T_y9A*)AQwT^hGNCxOp23kDKQW|PytksQ-BR<2H)Vp2CxNb3m{dXJ32@` z3;>2O644rRf$_bXRTY?16|M>6o|%}OAnw!gxe7h=;W{zbW4NxPDZyeg;=dP+0*&H@ z3}Z8h2ZdNQ8f*Z}bUY-8?;#9LJn)Y$JW)f-VVtbOMRReHz@pC>J_u?P&&hj1sFowh z$Weg5Al4LIbogAv(bFJCP*HfepG`q;1vZODs&ODe-Ql*7TOiW5d1eJs_-5bw3t)Kkp#K{8w41Ea&U)c!F%vsT8wT882E9B zt}PMM%kb}um*?M~lZ0G^!by&v3ThW*EJPcOEg&1&a65sqg6e@7Vxlqyi~yg_fMmp_ zLiQNop=75Dc=|;XIbdm_Z+YC|VLG}Yj+vN}F6@&m$UTfhj7*GFVBxO>5($YWI^e^* zm?i;gj`N~}8g3NF*foNy8;XhUfr^CqvK15Z0L&3RjR3s>qqvbvq05$|2+GU@U|zz9 zoRm>KU_+U>6)a4Mz!Z)HH9tWd(^v<(d^3<`j2juk`W5(kGLnU;azNe=o(Uk}FwwG+ z#dAq8=E4Wj7HHRsi*tgKAhZMl3RV!py8yM&AOyks|KIO|bj0r^m75t(Whj9*) zx4XF{H1;v&8jN3cm@m)e18#Fx7)`i#ZUwir~q@i6j`DU{*q(5%3e( z5G?dVXkaKhi+ciihWIRe4Wd6nZ@`R*DW{x}P+7P(OvRF*O#z)VUO|J^=$c;Wt`Cn4 z;Pcop1e_`ga1=BsVCQ4sW`$>uag;Dlh<=0%It8!~h#(Fz?J4|aRzX~QGpT}(Cm3b* znDm4=0k^XYY7dRQ62L=XtKJl z2{aLWVvN7&Koh|=#e1kgC_3H+byWdG0yHYVj}e#XzL+{t`B}+I35tjdq>iJ#Q~|SX zLFpj)i~x{eUIHJX#ew4pLI5fX6-1B|#D!oJCnV8LTkuxFeEet^Qz6&|&K5)>)Lsnt zf4}xHTq{sVTt7w@V>-twfLSz${{0Wr8oM*`zaIcfPyvQ;VR#h<6c_9}2!03RgL_EO zC%RcsZpDq6f)K)Y$au_^BzOnlNqLMMR0XodG(in>6oIKr3n(Bk@(WdH3>ree2?Erh zN+}5d;4xl%oueSPAp=PcCtw8JQ0T4j0tw;}l&7-4!&a0Mc>e$Svf*W-CWu=A7|hH{ z6~J1!4oscl5ct(ZEo30L_kVlkF&)D8u)_dH0~2^BB#u!0#pG$2@hU)iS^)!ugv0C* zN`+xoFr~PWgq{gJ1BApOrV`!|%(y@ZDC`&_I)Mvuebxcm;x7gc5)_y;5~8Dg&L4QgJ)&{M1en`ARvo)E+z=*9zknjQgD`8 z0@*;orsJ6FGPD8{AXo{6zzN(zZ{UHdP%*^qurNr)F~r*J7@s7&f7@0VP#xrJU))p9q;G|;$ZcMldEo+QJ2`fhk zSD_UN9d8Qy@T};Ah6Cs@ie3iA9HE~MeFm5dr5Bh81}Hi$biWWtTL|g^o*{(geYjOX zN@%|V!a_R|oJ25F;YtwD7dok63F2NMPz6Sc&q7!T&adGRToih_kcI*oM62f5tP|Xj zI7eA8fYwq#aG}Br$`C54Q0t9z5lUdMGI-jAX&wfY;U{pwL4>I;WhKLN*lU3`q$~!> zq*`MBq&yHC=DIpug#0as= zK?j01M72MGqdHqq;2r|4vMFF7G!dXn610a=fJ_AC7OdiPXijjA!b^;hNEd7wA`Lu; zf!it6C4Nlc@Zm6lx%i^vW8uX?7;rs3AifBtE(g>UV?cA303J@@49cSkc_!4SxS5K_$>M_j7J1VF#LipD>|&>0XFVz##tT1uwkGJT^5$gC{E`f3!qYN6%WrbbX>HI z%b+0%~LzqL={3*b819Xawj3EOKZO=-d~t0?Fnj z{Di?^zR`VvTIe)_XA1r#Iu>Tlh3DFlFYX(A{~sv>d=?s(0Iy){f<*~!3^Y3;pc99i z2F5@J^8!#rgg_B5^ds-X^TiEgYFjsM5IyzM=olo?B?+?Rb3x+;Qn$sEL555`r|{qW zMBt2YseJK=6=quS0?~y4bgSwD_6njD2I?1dAi60=C^)OoilzXXLemh?tVOQ`bZ-NB zw31<%QcQTPA~yVB*taDc>9!)6CNwK17wln-)&(OLbngRW7a~;{-hwOz8xhWzgVO&7 ze*p^r^M{K8kW1Ww^4C?*GZ052TL6igOxDM+v}BSApUk1+{pDKJAY8iDhWMIgGk zctRFymjq{e6n3DPUxc#@2np)?zrQ|a=%8xhF%W^>;u`(`xbO>8{r~?%3r^T^fvuM4 zl(3A1T_zNXF>_Uju_-u&n@jvIro992f^A#_zzgxZ6i^f72vk0WVF=d#@0SVa2#AoF zYJx5#2tQP4LOe1Az>nF9)rIq7F2(!`#TLB}X+kAlo({R0@BJ9(P`4-m;sV=nO zF&~BCV!|mXo-J(B#kf|;kUHGgi|^ujHy64pIAftwOrfpY@OdUgy=X_sGGW7xd0&Jm ztH60dy<c zoe<0aL)yZ)BrpBdOGohh0X*D_I}x3l(H+D`AipfpFmTtDbV2_n+CGFcIk@4?PlQiH zNKC;K(Y3;*g>Enl{H^c_w}8>0QAAjoz!m)O0r!!}f^LApa6D6pOQFLED1vQ*Y(<;m zeqgx-Tm@!Bm;>Q3EMY(TFcher@CK#?JI4S89~G1a)9jpr5I_1UG+@h7#HgSR5+GsX zBQ62&hfQyT0q=;=yM?wSU9b)lpR1?%~0ln zBtno=7nV;os2SB($ccuLZY0zo%vJ$&1ZGJ#Z2J zlexlggmEq#z1IU!d80q@ zM_8DFr{-GnF<3WIG z6o7bIAarbKvMeRo_QsQrVj&lWkbXj$PvANIBwFUdV7Icb*X_pDEh*tyHNtE(C}>5Y zlhOZ_BNV+qc_ui%jU`}eM*EqhWn`{jIpu;So(T#%C zK|x9uA`A`=v!*cwrNWzIie0lvBwt6^Yg7_#l9{jkxIZPto!L3lhjNtkwVH(sh2y9l zyj$=}p_JEBsO<;LqbG4*=*hu~;R!0-Iqurd;t*J87{D`(tAGvfswv2`5flw)(FYdC z3Isk;C{!jytPX7n8vDu{I-gX5h{iE&GTr~?4N9$k-<dE@LE z<9QXB*m*}W3xRAbNE$+5(YJDK=a=PYWcTAx5Ig&2JnTo5TlorjgTp#&eLjnRCO0f3 zKfXiT+~C4Ao69qZO0R&?E<$CaV0K19D6IVRhWR?AP8|5alAS6ZTy~m) zZMbvQv>x}2#EH}=PSs4KuF7fEU{{6|ix87pQ!M}hrfxwTrlQljygI%&t0E-ZfQf@G z%eqto8?Yo&Seu-?Yh|u&pGPN4>Ri$YpM(>IQX*u4hc?794<;xiUIhLJv$8Eko<&Of zh-`X|Yy4TEzL0w-xlnln)de@~)P;>uh|YBWiA}GDT=O>D#B!0&79B&6+lVJRM$|*K zIUkU_vnd2R5{g4A{R`SUsQHh^@z6;0)r2tWd?upxP_;y~r;2Z`rBmz@LX;Fs z2<>R8n}u?appXh?dS`m0CwFvsqI+UAyVC8qg>5}0Iu7XPYz1sLvehIHE?bq#678W%x!Cu9f=HaV=x9`Zv%p50M&TxM) zLInAhGE$U_UgC$O$a(pO2aR_Asye?G3`)eo#(Y@Qz%K_KU1(7OOm{OcAah%T3jgkq zfABRx@K^L^bbg5PU{zi-KGed-Qzm`O;I+h}&jd}NqGgO4U!f6xN)1L*V9bZ&e1huF zodc3O`+rwE6AT#{8+m5+44x-DO8O>L<`pVcdg4MbX9#99C)8REsATMoYr2mVdlpMNzO-+*Y{pC%~^1I+*h=c%`MHJe$ znKh(e7Ssi&fWb2SC#w5W0T_74Q_dTG+W(XNe?IH(+BV7LJ-*-PdA=9E>;VKY-Om3sJTmCqWe{$HYac`-fO|Pu zzX|A#gA+*n{Qq&WGJ=ob0+eH4<(PO`_E)*$J8Z4Qx%bYp?x8#8!XqND;D5x{yKV&H+@Cv0b>xt(+>COZ-#Pgsc#mL(@wZB=vCv$&*pYG zrO{uXjJyTpq2cl$czGX8f(zTpIY7#T6W2Mf$X-Bq_Jtt8KbRYQ-}K`4oxn*${rpuV zzc>bR(ZwA&JTXS(Zm1CKMbT=iL%qbS+@VHp4&&mxHwou)^bpBKqh4Rx)VGHJ%8T>5|3R- z9Tq0s#?a?Rnb|pLMD8Q2^tovKHZ+Ov6389SHNrSjZ+?^bpDYdBb%1RUaZFy6kVMdu znjqLu?;*#Hq*QGsz}ySuqu52Lr zOazc)wSyeO@H_4>j7=B2mC@Pqp^4BAb{&J=^K)_U@QEB+?zdlojKnw)&K2d*t$WA* zD%AfR)DGFsgvHt`yaF*uzSO5zBFo z$Gm~>1>X6;(pw_o+b0<34}lYdJq@sz6jWO;LF8Gl_YXgck>p7!0XX%)tQR(Xi@fhj zZclMn^*93W_=ijQ(IHQclu67KzwG?Lbq`(6g^Dlcz#e7{Anh;24W|r8-qFPkuoue! zq)TjxP3KB(tj1w(BEI9S;b*!9XrtpVBeDC{D<=SJe21)MJc^4>k`E1_8QMmP3+a8r z*c!GT!(ic)NJEKrpkKJp@WCDpaBPu?@9%1Xky^nP%f=!1zRxD6jHS( zg1Vc1uthwK*rC9I3FW|m3oQ8%yV6gl>2A#RIV~|gOmcn zU>xW%;DeQuFZ0F@vdN4mhju?VcLM$uV$=YRi8JmcgUKD0&Z_KtKx!ebL`B3!Fs#m= z$2C0p6Zi}^gzR9mt3q&32(g5$9=P13gI4 zDpl~Ji3GYFcSvYps62Bma)%Z4v*+}>ecX6C68-;!{sRdZ(<{nR#fH*{22OfA zH+?jm0w_Iz=+q#fE884E?eR{T{F7v=F>#sK`Fx)< zUh>L3`tlu|fTeLGKR}uexV&(+-lW0ptdl zgW8-fROU@|#qY&V?t?<&Mjkr8HO@007QPcS*Evc)=U zHf$~zcRwWGJ27#P%@yY2iJkB6ov19wi*~xP+hk&<#r+CBVTcRwOI#kWAWA-2VQxS1 zmk029sy&cO(Og~iYJ|yNMM6vt;|RU9TK0I+cCU%o(c}ZOSBVh94jG$(Wl_utLTZm*F(_lI6yoxk5?7&dPO^578Rz`U*j#x z8f`VNdX?h^)l2Cje6&a}!VkoZ;^AEmeVk{yQm=X?pYB&=8Gl6RW12&k;*l)GBSeK4 zJmh2pPbNqPjgvp)8=|8PdIV#ZhH|YHrDx*7C8qOuG!?&77&XP4XpnaY#p8IqpTGP~ ziTEhqkzSqfc+E+8CI0^zs>d7RsTINNF@IZ>=%*^a0{-`lgje<(VULD29p@!a_Md`c zMC@aEiP`VLLBCDz<)Bl_E-z21g0?S$z2Bx-Z|f~bBsbwpGU6?N^c-F=iL5otqU6=> z2hv}Xt2i#G(|UX#%?wA|S~xkv{E;S|qiZM)sR9Z81yLnCY2;CrwS$HV*X>p zd$Jcbo-B42bz2Lon;*cD@HjN+OhkaawOkGLU{-C_0lDMCDN9+bHhPVMAxcU1O z&b7iKS}KvQplbyWp7Y-FnZx4MQiB(~eQWWrMD$YK?jZldDya4kyz0rmjDa`a>=Ocx zQQ@;fOuP*Hxg2NTo2j#IwWsm1Eb+-=x&QE}a*k~%(}x$)knE){m0k<{-hnG+I=Omu z3u?A(aRa#*OBc3&)HaaEXb&zC`IPf)8rfT^-06Hqx1zg&ht?_;JWoZW)7Yy;i>AsVw%I;KsI^IAk%AfS*iJWKc z{jxwLrTAWOxr!4jv*Ak{`Q8i3yPUtbt)PyqUJR3=!d{gPj~t07aFdX%BrV*o9kTyX`-q@xWr5Ra8~&Qk$elx8X3F9$fRl-+olvxH5}Xv zY+on&PSpeL={j+C@lszvvztqw+TUQ$z4SI{^4q>){}y<|W4Oy)z0EPeT&F0UeHNBUPv>! zQb+l`7q5}M(fSYp-7B6*AIjb=cxBg6MEr=JsrYa*yhhqtgq{`NrsH_gzzZCDv<8M} zA79+lE@5#*>P2mh?DkNxZ-l&MZ#3{DRq9Y0_XFFrYXs{d0q$bxU-VecB{qXi)YAa9 zNr!mewp)~ol#nHnBdDoNw*JBU!=-P@9P*W{#_Xhc3d|nq8%SRtZW7?=!ac8@v291O zE|1hb?NkIQGQ+3QGuUp-Le>LD#O$n^K^`NGF!i|fUY^L#J7~wR`XnEk!+68PF5FM_ zoQ5~Cp2Tz0H}Z{~XWQl02jmXURrovnf=I!`=@&RFs+-13uW_XDHOy>S#~IGZdXe|K z^Ye<+?D=?i=48n-isgY-waC9r^d9ke4RRXZH+`J_*~lV;rw;CrS>Z!>Ubx`=i8%Od zrO)wjV(q;mX|~%0L87c$7&*jF@exT+%0xskE?>NYr>=fY#-b_YPSL`?+zBQ9B+N>S z`8@DlE*OKmLu$lBg|;q|QXaClajww>>5eRusgeD5!O_`KS|gUts5p9@n1gGP174r? zg7s#Y=dpk0ypgYD>#z2`6c~xrQN8hY(!X>Md6+PI zXZDT$n@NPu5ItfGk^2|XNpMg0bl4o8RxR_v3PVy6Twc=q`tUV$IdRM}Y4~FAt zBy;KQb+ATm$lVSl@PY|ZHKNIyZnBpAnfFIXzz{@u*4j-q0xXl>>f^l%oh=AHg&mSY zkys{M-#SxV%X5lzX!yT4y*-^RKn(uKP^AI4EqG^9Op_6Q=g%n)Eq#H&MnpKR_eoYWVkOY$xgQlI*6FGp!p`SaiG zJC!UggAhFs369Hdz|{1RxSJ-;7g%}j762b{ac(_WzWX)L_&CMloZ4&=iI~D`xA0!R zP$$mBHz+h~jF+%(oa5X>?%DD_uZrsrLt8NLDSDd>B+6F$31&fTs==$sEltxA<`yF@ zI{h}1QmxtSqYPO@Nr-6ZQNdXKD%)EELk6l8PJs8wSGn{JOI{JRTqKp7X%LBH_(Y&O5`4{J*!bSi< zK#yCj%4+P8!i=z%ERcE#3%6?_UG?yh)+yF~w5U%9swF}o9MvyXNE%m+WPeB3jBTgK z;nMKzJ|9Wpi*8F`KA-p$r|R1S0*pjHZ5=~#xJ5sGMPs|K=)JD+RPo_-Q5CSD4kP{r z57O2Y?1W2?!fpBk=D9#Ksy_hWWX{(_ZT}y>VMMOop%KJfo`-1(3*ckphbc4 zi?w#NVKBQYD)t<*j_l0$MNZX~Kk%Y_PNnrB?+-XB-rFh0X%uU42a4mw{hV&0Z6m$Iz)%6;Ii>GhOn+<@Hved~@LuV)&+LNzOJ62Gl)lmWH|eLR6Q77V?ihSo;1gUkxsFE-tX6ykB28P z)MD?FV0-X81H>f|v+4V?s%HX2H=4^a@sr*zZnR^0OfnVp_k@Z`;B$hnkM_mPDxZG8 zM0Vlnh#3+3-^Nwg+i$)l$RIZYy_y_VK8IsJWslW%umy6ykIcX621Oa|oto9pL$-5% z4m%Z-c-zQ{eT1ykA63H*AP3)oMuhZ)FSu0pA|9^4BP6`8Lht;eaE|u(kwo>cVBGxC zm}c4|KVYu0SF*eG2PP$8OQV?_up{EdUKd7u_(MSVfryzTS8w~E%u#$X^CLgIEL?=- zXs_kGeHV;Q<`i?Cxc`MQSif+!KVXFIWW7aQo5q-7ZXe}DEy2I1gSC9^%P z@kX(+!Q(~4Dyk|*GL?wi%E*$^Cw+C~X>ze3`D4^j&~tRbOQc45C_ADx30_~A<>a70 zFRfouEr?)eAckhfT6F#Zk7#K(jM1UsRO_+MUpUW##nyDYj}8re+iT@-7cbyA{c{r@ z4HoBSLyY2-Iw`FM|H`JbZRxe0{g==Q^D!0e)I@31#medF6N53))cm|xHqY}ZenA+OUl$ ztbM)=QX3Vc{Dxc5aLDVDN?RLXie=p&#T)fZBk5L79WFK&t6{?a}rPA}QJ5bL=6R`Ip;&p~ z;Al#Q{$r@W$_z~^LlEnOq1))*quccvQsl4U;0p_mMn{)6Dg;^nRQTkDdPwythDAl? z+TkZq3*|2K{l(f)reQ6>%ssjhD+H`(I39t0E^pz|fsArg-=mfNhO(Cv$>+e3W3?;? z--bSb*g*YL!KP#xX@Gy{WV0XMjcV_<)lSmi&^TA?qDZaU`<&(nmiobb0ff{1L1u!c zyoWQ^_qg-N>_I-NAteAeKYJj&aCckT9%{PGd1Ynk0x-ufuNA!hh4irO4O3D&UAdfG zrTEI6|Hm=TEerwqK1$1nXQfr_@TuiEMve*c4eB;5=qb+3qj*1in(BMfkH1 zR9S#cCouZxLsNQ8u-v-vhW0HDYEe?2)}7UOpRV^x>0Hwfr1ol&w$ah}=MtGiHFH%scp4`~S}LI!M2-@R zm(rYeZDV5^TBhXd`!_Bc+JNU&pI7%A<{?3Q7G|M}iP{DVxJFvoS*9sR%Bm977`-CO zripATP_91N53j-N=Y}=RRa1u9MhREL{+qLnlkKMgI4)2Mf8*4#Q^;x>R-Q8(!@+mh zj3~$Y=7R}zkrDl#F!p-%LE=|>gFo{|coQg(z9u5>;vD^bGxC5%jNW>IxTtwRrH_j9 ztNttn|CA1B{x-(3L?vl&ZKVH3`jd;(->9H3k>$K9)x`aq&(RhUN0R~CzPpl`y_e)? z$Z%6~-%5n2Xwc8d6GGn-&ZU*xe#oG?0My~RoW@6pNHH@ugn zcVeQTXdWR|sEtRFugFPS?b=bzzv;vHGprcle5En-jwG9+V3g}UKppG|nGV_KH|2F zU;CVy66@Av9R|+4DPdi=Y0ud2$^fpoj(5rCdm2h`y?RFfMW~iwq?p$=uVvBhL*ys% zb!_6$$K*nKhbX1jW2S>#UP$v)gKQMX$<5?E_Nh)DCA<=ej5E&H^py`&{%})vvPgv~ z9+6Me4Va2~ZGgN?WOKckK0kYI*_Np0xWacZ_MvQlL>lx_F&jZZC~j z`B^|<#|h<2cC*F#3J;B)M%S~?Ch1$M)L5Ddx_+AMPkO9DkA`wo=lsXs!ZvB zABR!hdmPCKo^Uj~J%2K5^rehRzyLNgqLG-{Ur|U8pPs@sN>(&?b}c^o7|d76_Cm8f zx;U!b1A*V)c)>__I&YoeT!#P+r-&~kc-19BgL6leE0mdN!0L4kvEGX@4hvstDB62p z`h41eXLsmTf_LGuyKgZsHtlc3LFs5Lr0$$|H*$72nqd|6SKS75|cL3 zM$U;WX4)@Mj=?9%8BqLaf_~Ab@{;eh8<*WhQuIcW>G;k?T82JXF4o>8Erd4>MnB4~ zgk8mrgQ+B&E`|}To0Pr|(gM^3zQ0~+A^Gi}v<}iB36m{Up&RujlQ{SAX?tG~dq}!P zb)X>fsB1LrWTK8FvwaO9QEnresj=#6J384BlSwXeAGjweTucJin*3Artincf9c;7c z(KjpEt~}wRvBFmz9ka4ubKYWvtSdaFn93315Rv*C=()wKp&{ra0rsQ@OiPQj(aG>W zb?En`jcrK_{`y3|jy}Qr!qAQAC{W`o9MvA=d?O8o@$#O)Q?DznBI~F^E-tO3Cz6HY zB(059D?O0|DBNOahUm<4P+#n)%c#a?rXf}E5QI6aDp*{5WUvCM5H5^xy^ism*0+oP zhivAgZFd8rfI)YLmmPqLTeiGFQvuMyL^(sUvc} z^nvu>$SiCR#vgIvQjRmNn=vQiFxd`M>Kpk2P(?3=IY}>Sq?fFb5kl}=M;9AOW&C4_ z?xOmZ*I*#oI~DBDlgQ&d*xX>4-6WBfKrf&GRJt6}puyB77vl`WMs1#LRw|$39vgb86KB1Gy}EAxLUsK2bP+hlF}eb?s9DJnH&T>(69me2Yrv*zeAt^mEF-K!4J=bQye_ProxA)b(L09|SOfm-Mm4L2HQ|gT6`5fLiWz8U1T!6KaL*=hOum{Hd8Go5Z~=9!UGs=dno@c-l^jyriG*BYoCJeSUy04tM2;(;?0q zuhgg*OgTr3HGM0IOfDcj`0srPCJ%TXrZdfDs`*+~Su{(gSt2Vo znD+?I#d4|@1NF|4Jsk}pD`dYNgSn1nQiXW&rfM{fci>FD(N4W47piTI&!Ij;-y}kL zB`r%pg+12e&Puc3uWIno4_L{lCPWY8fN+e)9~Z}VaT!wL#L@Sd86`~NS_6KAK@-chgCOX|lmUjrQ;oldgu&bh_Gt72{T~$FS0L+7__}3D-i?x|t zxbQj0Ie%q$)eRpBHFx*%!+B14a)$B%mXhr;=%(*F%)ct{uHdng>y6FN=(p6Bb_x)x z#4C}Z_HhKE)Fb^k$WTKW{fic0b%^h4%ZJ|NoVaO|S4o_`g@BqYE>;Tr&yc+?MOP-V zV?Y<`HfOI3P8R0f{Ll6YyBZO8>4QiOFV)d#1KRmU_CQy*)36ANOz>d zP+?^44DJ;>wYm6iDHT!`cQo1VnE%M((s1$9s`Qh5HnN}DuNyHZ{0>FC3ybh`4UB`I z6ZPLTi82j9z{0w7(Ph)3^j> zJMvYIT3Smhc&|{no+yN`8kDPQ5mYK%4i)We;tQ!>!NcN)rq`GCx>Tb>NJ7_#P^_6=3Pm@n=tdMV5Ruur z1dNP7lc>Po`6JnSUVyLj2;j$=tk}oy2Zgp98;V=;F~5&OmJStS}O% zCzq=0Xz1Mb^5}5_)Dd<;rRZRM38I+n57qQlGOL^U!}#90R87JKMZ)8auw!Gg;!ZWQ zl^C+%;n}P(cGSk%i$)T)MfY$U@a-(YB`hWLVzLgQThwzTK>uv^`q)d5zFf@h!=zzE znOa?yJZ+P47!ajTArE9@GdnuRtFqQ%-I(xaYZ4G9F&1tFYmdSLSLp*8$HveyICFmX zx~NLJ=JD=dUk9p%XLNGOR9ywJLCjONL`Yk*63M2ZsUi&labjmSYf8&L#UDsl;%ZEt zq^EpxEYoh0tPGf*AOd+~>{uudu@uOY$d)F^#fHnr^t#&Oosit28_+q{i*SPSv^KU% z#2isQ5Kd-O5Gv?a_I)y>AgEUB;Wu4pgkz@1JCEJt*N5b>qs)hVhGr+M*6O|kj;}$7 z0+-CD=PmSl;+ z0&h!_FMp|ClvT}KaKdu3u5SJc&yhU68BKNY=zxPhRJ&7qZi)oO$|L zXP;v)JpNqYl=(}}Teji+6Fo?{Q5U4`F9hJJwR@4xdB1{L<4`-swiXXLsKwCt1qG|M zfnJks!=HqsY^%@6*4H)n&ekGuSaod(J%~OeYMAk*-Xg#r=T;(+fH`AmJ-}laQ6NbP z04eKV)V5GXCkVo&r_9c~4G$RtFCGayGaymv)|Ud{-Owpevfo5-Rr9iVeDp7DR@H(Z zdCBfQ%r-QUlS+H_`&#Hb`jd)6#dxcvy8RLR0%C*%Dnf-Zd)tS_pnkl-1xgnSnZz_w zTU@XIB~jcjQ)t2F?XUc^aU3>`@lH1n=4=oOZh1t3Kff}oG;e|)e>>uzJE*dO} z7qfq>4;uw*TJ`GLmqJ(QSv}JQw};b*cv-SNT?@9R*EU{OR2ok^aoO?5(xMZ~4hhbUI}nY9Ji`quKb(9)?~bC+pjfB)={J z!!!1KQO5j_YH=6jK0L0~%e8A4Rl^9t2WW}9hAfhwkj5Wf^fJ3>Np!!C^397{77p~w^#kiR2QJixj4-;=Q66J#X-$8%m- zRuB;|M<$i7whpKe+<8~=E4IW|VSeol`$QnWmEo!a?CvmcH#VIDC+rX8p5+YiCbvn3 ziqLU>Wv5ucq%sa7VENcc{?<~6j}*q10*Eb+$N|IjlGoso-I4IqLLf;QhK4|3Fuc6T z+HE11Z6_D9z0-sU(r+-*E#-`K#|n)e#Kyv!9*!1z=1Bgr1--W+=u|w`tU&U!r6JOQ z&m>2JzF54G($Cdct^rL4kS(XX!|ZJf;+Kb2254;LX<#YdG)3O+9o~jVdII7XJ2Hc# z=a2gQ`uu97E6y^So%vpu&y5%`yhXx8TzzL@!c|QaBPN+pd>H{Pl-!8Cof#644nlWd zQB3phDBV^DQc=W%x2GQ~aexI;x|S| z(g4_dK0!7j#dmq)*VZ_{q|c8Wqp`+Ji(-Kkr;yVj0UVg@cqtT1rG4&LPhK;>P-P=( zhOEm`rX3*bp}mT}^ydKR4FX+UPA9x+Cz4O>e523#q-lklHDbjg&Rh`}74b^J8sveD zzn8>MYryR!*10VI1_ZJh#aFmUaVwN`m3;)~f-4EXhj&D3xs`>CQdz>Z@8qjuWa z#BTP5ptNT?=C5WnvLtM_*VVT6iayQkP(^ptv|20T7)7>!mi1m~rK)8LJaJTWlFtDA z%+w^9Kc+vbAek>rC(?51x%~|wI8)!Ue#5){eX=3RNU34wEqUu-G>TAC40s&D)Z5#@m?rnfN*<+5a+oe{um_CKw+ zsc^W~D`Y?UoQpZezfi&q)26&{u8uSs+|hf#@gBva_JI{Ho^e@gg)YwHtrr{#%B9|c0L?oMwZm-5Um zeI!N^r$yc(``$!agq@uj8{)&-u*>4V`LOU4 zxte_-BjCyV{Om;r>9FxN7yUI7=5C~0hEG>v8~uU3eln_lds^hMne^%{DBPtFaxrTS zY=2DrBPt2>=*TQp_B%$5eaFIQIE_aJVhG-=_%bmq-HLQQPLE~Gx!|SjJ6R}rMV2zk z%6O`#o$SC5f2#-(jf;PZmC0&NMZAHX7FKp)2@y7CXXb=>C%@@#PIvwh!r=fP46w@^ z_(ZjSXSNR#oiS~PeT-Tbt~ux};tbk5iR*zh9czlG@!5bVho!L;l9n-MEK zTj3))8dW~of3CH3Y;5#53(gVyWN@X}{s*v{m406LZ(hUtP!UW2ReXU?<8^o5a0bV6 zpy^Sz8Dlv|7un0;1vRv-Ci*26s0%awO4j;PMe3`Tyx5juhhmX_i5(8(j#)q3OHiCW zQfBvUZ78#@`7=V*)&g`9_$?=g-zSeala&GbyRueMv7v7|plm%q%#WQ@M#L;2u`dOj ze@Z0h7NCC;1(OrWi*SUQ>DgK2zhng;2_~*O-H%xWW2@?VW-r(sBi- zEqkt5Up~c&v1)dd54jBX@vNs@pEXpSvz=ItDFB-Y-7Y!Y%*Ity;^E>2^I z13Zh61z>UDUQ2?EpK9GPa<+3kgv1#ESp)AF`;Y!0yp>NLzJVO+5ao0L7(3T^+K?Oa zOTkn062*Yw3rCWyQX1aFyES%UC#+7@JUL>g3dnp2fhTCmR6TpY4hcQ;=9t+|@?OXv zZC{9(GSeGFVXe`F6Un|&tIN3E%oKX+;_)*z`xKl~!wE+gOGAzM0^6w~r;qcMUNIj< zKg-+z8_Ti3hU~koA&wQ^XQ^o6amd67N%SxoJaLM4H;(TnoV;XeTH6%z5xo=x!i?DZ zjc|A`ITo?~F+~qY>XB<3tYX(Q*{@}qv-cC5Zc}6Jtsd`K1(-}MN4kpf!nG=nh-R|Y zLhGiZ=dyercgr6j^HumKJzTm|Xs>7-i;|B^TjBagb_O3Wo{DpsX?#U{M&G0Gv7|ZZ zBRO)5Y^Lg`)m-DJlaNt?JCX95E&jb{l~?#bXY*n`J0}2=E_v85UDk5AZaX#lam19A zv&yhPQVKXH(&Kp+E-fl8LnC#6JnP$b{+FMETZy}SiHJiL&CPadd4K70Ijm)B?UW!W zI+EnpGL7M2&$jpKKl|ny;j{;3!Qp7#a-=p(zHGv!twcnP=}j?q-VEO8B&V}^Rt(lZ zSC82LSP`=f?~xl?y{V=f-I>%dyj;t&1=hLU(O9CnIs_-61ST=FrnQP~l6JJuW_9to zr_H#Ys+nn>3(uRejJXR|ZF58C!kHJ}r%-0M&Ohz`Au21i6%DJGE_$H`}hAd>)-i_ zs=sMqT)d#Qr>SNjgD`BTNObK^{NDeKw^)FeHN}{+luQ@f^Pi{@n+OhbkSQJrXG#l@ z4@CEJvC^OSzE9fvny6a5(HxOU0&GDKyjCl_ka|4wuij=dhl?(_R~%5?(TH6~ei%85 zmBPV9nbt&N?Y7F6NIa5k-l0>V8znSc`AF_;4yPl+ZlAn(h2B~ z2ISCaa^%U%;n$6v<|%6_zpYixWVV5@UjlW=jBzqK2_&m9zw~sHwp5x{Fm9DJ|*NY6^+kh9()s znu%P}<@Rg!3Co;g=v$=}TwyqxOV%WM;?_wa@bLD=USlYbzH#gnF4uQF+oH4}YtOLj zYa_5-PO@jyyBy8mH?~kl>UBq{U2tcnp@iPKh25nJS}u`274marfe$bdtgn^U00)d^ zi_?ILKtHnVFdNG8euFhDA^7r4f{NBNEnzd4jj!?w;Hik8vd1SmCqOU_l*?9w;n%J= zpwHPrD_d3bHMZ>MdTRVWpW%*a^)>BPZy4k$q@?ffroSJ3o;El~@BRt}0DhR) zsOFF}IciRB8GcSc;$i>ac0b1@hcBcX`fAzP7)q%#m0nFBoF37zOYVqSQ@}w~MOOM4 zjx|%5@AZ{d3DKmbvueZL9B*5#uoow-GVN?ld$ZpF5pA!FMsn>9KzOkX6}jR-C;({H zF1gvuO#*(u|0j^k_a+rLjmqqdJiP-3Et~fCKP$NXCVL~qE|0?P*QBRcl27P2`a=?D z6ua1q0cb(l;UJ6pxd{7*LjS-yy)PUIY0N8R3ey%Mp*Ar^RFWQ-%w7zZi+$uk%%I^6{CWonMrF}XA8STGa%SNzBKQN%PMYxUgL+V(HD*UQ5Nrn zfKs)+Qd~w}XIY)y;pftA7gewYelAQ7SyRYWrSoN^$>o^V#bwxGiGx%{GLSluoWl94?vYu>5T_#M$Pg{2t*npnjzoso zKQum5Pj`?T*)dFehz6B+k+3o&>x$1;wHhv9e&tW!WPQuI?XP+2X1%OpQ4BsaVyCTU z{Z=i8!Zd#@X{q|3rM|n#gY4US&TT!@EyHn}c1?k^Jrq%oK*nCq4o~Vs^DcdvpU>2o z6%m$VKy=PMYfWI$uQ zT>g6yhHJ!ho=q3n13GJHDt3W+7^c-hhb$t1T+}v(fbsROMRs|)Au7r?*ynO-3(vds zGj#nZ9YfErl$@o#KZKy7WOB)Ze!xfGDICLYXi}~r+lIHsv{bK`cZUt<3M8MMGnsv& zu@eGZ&OVZz7bzh5gZ*E?dd|Kdxy0scyR(d@>R#j{uwc+zoXA9|@VXS8?&E8RENFV;*{g82g*7PeF z5)l6$F;Txq*KWBUONLL3JmA+J0{KdQ@WbA@)6~7`enkc%Men`w zN!mi*`1*JaczW=_YpVW3#|d*cDN;sft8tH+zTObYtt~ zoMfLZTGpwu9y1GMS@s6@7&CI&R3Y7#&=ccCDjtD)2Fz{DpLi)7Z-*+h`XX zN4wa3iH-V~K2IX$aA+h$rjn~c7Zq|84}cU=Xi&E%nL86ByZbI-61tU-y@XS7gpf!{ z(JZRu5EFVM&atLnGXcr8x#b+xq9rl85rq#vJ&K$!#%kCrh_AUdo8>fKaEkY+4EjVn zTE??;MfSdryun8cY@m^gk>??d>zzjd2RGK}*NT>gWWwywBXk$}5cDMepkyAd;p)Sm z>8B}?DG& za~jL~O3y0$^v5McLDYi*^ zG`m3}PdKxY>vHbsFDxLE7g&!3${o`Rjr#G&m!k?5H8ND0x~Y4~xnt`%GZ>ID#6XMO zAmB;vx7bR{Y2w6Tj?YY?C|+ellc_nfo9*^tv^J_}=CM~#WRSuUH z$xb00K};{WeSm%Hk3s&;B&{~x1exuemIxSHjn&%Cd#q{jcUmqB1HuVe4-`@(S=)fv zpM4EG7{sDLD6Fx_UBkE0$BWPLen;>2S*F!AdVAk4_Lgi0E3J>oUHR|E-cMw}`s!*c zcp+XXkg4>o1pGMCvIBaLl1obbH*-vbpb)~f1zRB@D6+Cdljn#N~vrn~)YKD5w&n_kDFmWt4G zt~zq7p#+EOP@1RJ`p|U7+^Vs!bwI@M_Ajh!t*@Zc+^#)4#G#$76jw8E+KO zztfN+;WHnxBZp8K0fFcyf?rnoP4Pb13?_t}YVsuTpX1j1sz-i@oD(10e{}0CLGjn? zCmAD#WzlQ(xBTgiW_L7u7P~N(dkIZ4%=ZO)N?{roR%%HnDiF`IPSG1>kvVfJP_&gR zNK>J>NWS7X-(=7lroES3jOs}v%l=sNWjmW2fZ?iVb(6};FKC1~a^Bltgb>EJ>)i%x zQP>w@m?wmZYewJbA7i)pou$r`eHt>@g66Mc#Z!Lz0I5?F-D&+>S7Z}DvSsXS0XIO? z+1Fr8NUf-@#4arDwrwtY^m;Ox^(Pt^L$SA`)}`g_byUd-4cP(Cch2q1HHVMXMNSQn z0kS8)5>6)HAD^2;HulgTWt6=och>}~R*ES4WY$V7U3?6~}*GM~%bTZqnF9;Xcz;>1> zpvvV+2!jhD%Gl;vsBFa^kb^|DZsWs|wT*Ts$IO=#;ugAOcr(=I=+v{yV9GJGO46!h zt||ev(prT`wvM`FKR+7M&y%dK^5M`=kCR^5)F0XmkyFCRaji<1C5_=+@q$@EJ$&vE4_2sMh*&EP3sxOvp1Rl_mPd)8nSu9f1>}Ndovy1yyCTTawonFj2pYgz&esSc((Y1g; zZYr17i!ZWi0$V;wK($$0x64@tpFB30zRX^r{}?upsS&kuSt8Ot*vV44pTg+FV%C0w z3+r2|izkm>jf!X|SiH*qMh3xdp_dkRm@bV)gY4&8RH>;x57j@YM!+UwvrBBGxiYH) z-3{U%vXWlRK28Y{uhYK`Rh8_KO6zJRw&_BVjXnrD5J&bBg?*%|pwBfP=TG8AylLx> zLT|Ks#@=S{nW*AY>7M~1qhWKON!}~o!A20aieGGzAm-Kc`8+upS_S*Kna$KWxAPMF zA^`L^w8xo38$dB`KN1wo&E^TExrofiQk4BRVBN+fo6mZ;?baU-u!6vvD>#2~I!gT| zNB^>Js93hYAmcT^z$wMKDC=yrT8dtW38+N3B;H?ODH~zEKBSHqDWqf7unU)hnD}*H zJ)dl;nIS{237A*aTMGGtT+8_jh4j_wwTL?&CpuHbIy<>U5c%+H1cyuZhdQqAxR3UT7Qj&< zd5)dgemzH{>|la-O{!D_!OmtSK}xl`i#S-nxU^ME+OD2>uO*0v)`p z?O^HzZIT0J!lGus(&SR77=bI#{W}N2Rpx(nKZ+zEv@V%Gx6=D=*Jm{MAt&T6cBr|w zKEW3>#>9IpC_@&wb~$gZz&wNqZ>3<8>3d1YYR(f2?itI9*8EPNoAw0tR{_KX6qor$ zhH~5kIj>UaNWX%gn^C_apQS5ftolY#rOhe13);u>oxLk?gl^?0YI`C!UU^2$ZO6XR zyn-%EXV$jgQ{$LP4rO14H3U@{OuoIp+SE?_o73JFtn!P4dcXRFJzLyhe~L?3hv=>i z8N+Jd#D?UiKQaHx=<9TOW;(5MiT`L^PUzip*qGI<_O3Aknw-+Fd~Ks1SI4*XttsId z1_(4%6ee97mc`3$bgj+0o{CYTTsK)vQJ?4cc57hBXjbh8aVNsKDrwJY`*G~Y?mV*- z(?$;#;hK9f%oSx&Rz7cKhIIwBb@+dYVvnRH)>@E9jj5B>Rhmi8Oe@+4@7E5z-TnJa1In1i;80@3EW* ze}b+SD*|5uz=dju=+`N+>od;sZ*I3E1V+~Iw2iOe&!EJjHz6qU%bE3jBI8PtvD?7h z>z+l9@+y;a_h8l}yZ#Wdt>|b&AQTlu$ptyX7;Ez|kEk(Vl!ZAfs&+jBwr^B#meWmw z$M5P%DEP>f$x?c!VdvHFnyaIi(uH7HK9eV}7I80i+I2KW?A_!5VKO~GOEFq{?_v%a zLGDU=Tte{+!La?WrSvbS(Shsqml^ee?-TG#K-(7AVXePODVAzrl}69@EUCvTibPQe%|Z^*9IbTr@Y_fG!sCRq7ul% ziV#N9vg{3IV^An{+nX($4J}a7Qc8Zaw{m>mnBkXzRhUuH*lsY{bLsZN?hX3g-RaJ( zW`9G~_y|Rva*ep+MJzl8Wi40pnfljgdHSqt=;<;99yU+~Vm3PB21F}20I6_;TG28|Z_^aY@E|kF!V_ikZ?gi^u~j4CZ&c2Lqfh%rIs^Is+ydw; z?gGDw9u5f&BO32gYu2U4ZYV~y5X^0WQ^zoC=JC;S+j{N55KIo#g>t5VkxSQehGSjL^L-TfRdhf*uZ1-8{~N; zx0;pLux%rf1}jmXk_ibwcWofEV=^>(vzqx4`L+Of(q{VfhIKE2frRDDZc^>q7lJEC z-Zw{`&iwRI7?i2(6!~JK(*&r@uRX1z;?`aHei#`XtON&mD)gD2$k~g!`s#8dY^W}Cm|(0z(Y%lQ5VfA z!^BHb(0ElpKqm?O9mqKwO^{27q&LZjZ0fai(a!hL)0K^umRjcS9<-1u48 zBNtoA>?)kXkScDyCQt=+adRTM8FX}qtUEHJ8S?$8?xZ(|DIJT0Ne-vEE*;5V1*t%O zv6b4>_>|N+aDlrj#}Wzyi9Hpe=iNr6_jFekmUR?L=-*1)rn`c5BaQOY7ID1(y#8u= zpNf5ATRD%pMq=H`f^mxqrc;t8KVXt~CkQuGOFb>7-nUm=6>A1q@4;$D|JH!`%kRuLN{$?PtbNTe z1Vs-+m!@e2xY)hDlrq%Z9WPHq-L zxfFME>;+hM=pg8OJ4Zh0Vku%Dy=4r{qq#=zac)nG^$7-#{As4& z;t7s}$^&K|$59I^Z1_Cby%UF#l{YJ!8Y(DQA~clCn^OV25eku!NN+JL!u|YPi|y!P1%&#`jCzlhmO4G;OSE{GcR9 zt-;*AySlW7V;gsQVgurx)&}jLaKBEERntR8o=a=tY(WEd?F0Q|Hl0#F+H`n6zd(gn z{R|!x>pT9K^>1~g5YRfx<@?iYh$)MzsPYQ1#F>0`h6M!~Q^#6Z0w6Y>FJZ{qWJ4w` znvH2%;#OjH^px4C^XJK9RDK+4m0#%43|3v@({FOhQXznONg0ypS1-_e5w_J1*(_CU z@Kb*ouFj)HxY=J8#*%5L(df!bp7jl>X!koSkqtAq;&*lCs#oF?q@=f{(;M(Spf58m zi0Q-J?@1EDRm#tG#_o{aO~wHHI38Gyc#RrFCdlvGQK0%;mi9XBFGTv2>Z00O^&SBw zN+`RpZF|XkzO3y#3K~(hQ}-pfdI+-wPobI-SSa_I=utC9@k_beo;A7~^5h$;)FOIZ zw51ziq0@aOSXNmmkyQkup~_e)aK`P$be+mP>X+83-NmI}DRj7e?k4?1y?=p5U{rWZsUnV~$^BJIigz``mN@&NnhLs0s+x4`$mhV&QExr5r zJo%+E>rty+&E*%p`#ts;P=q>hET5@90mX`0`D|DMJV>TMz`NM>;$7B?tv|r9rnzwz zAC*7}rPy3Cp(?e=y9^W6@`*ef$jCuz!c zaQDsRi^?N(1e#SvFc$f9vEyI2b^qLe5#09F_td2r6strQ2oUqFc<7@etMV_G0K_!y#0t)#HGOETqkhtsY`CtCf>ovMV zHu;;8G;{;9#N^y!gq~*Y6aAUCt~?>onBhUB2m^|61O0vlWPxuV{*>JAgvlb!P%H{a zm~zx*0pwv6|17cFD8)5SPk+BQb#|Z_m&}vzbZrVGsP0Mf?d}?Qox_1K-4iOP60mUR z$s6nRV^E8v)gF0S*opF2UUg+M{qAyt!IdAX7)LWMv0(9oc+*BJFSV2vS5BpCiX5(* zYJXWK&j*dxHQH#9J1Xc}ONTBqZCaNTyV95v@G71#z~JLmPGCLoXv?Ej z!|6|ox#?1op3!WefaMqRK&Zako=E$Okm6-lkG}Z|N;L!V2^ARbI+pfaruBoSyC>aN zF$Oo@J3*%3=QVCqHfJ%e-OAGGv=LPJK%q+Q4va>V;>qG$n>}y?qj$6Ttx0R4sbyQMv6<>|*eSi^8(Vgb5)Wh} zC@Cnv7UE$GMe@Vp+>F^b%?GJQ3>Yx8=(eWZ9ry@`;-*(F1)%Y45$!WG)@!vCLTp00 z5={C$g$3R-=G=9?`N-c;C&yNHsw!cRQl8-)p3Hy4U5$^%5ql^BHezxg&^!7>#eFUUO_Sf)Pn`6~XDs0cL$lnN=PU z>wbs(oGFUHvG;EMkFk2pL~6}jU@e-SYzXSj&?OZ%lqW;k?I|A74x*qdM@!PZN{)o|9#+u9#riYAckgPTi~y!p8aN+Hma-56L=>O0l*$P}s#R0$#RL^ zF^GV~UalZuF=+dlEZ5dM^eO4NYIWx8=?P;pQ10l=jeIdZdJ{N>Q%(U__Rx=}+kaHE zXk4`s^*nkoPY*&RB5E2Qq@onS0W`1Jmf*OhWZH}M{q&m;)FhPoxz5wJ%~~TL7L9Hg zWR>RuEF|2N%Pc64eZ!xi*Nnw31$K`{m}fC1klX#V{Ar~v34HWIS{Rg_uC}Y%y69iE zEQ5+9wGVnGq}p=#-L5@m`gai;6@$zt_gIv4Az>G4?!L+Rom7Qsam@H3z8f;D}~OA{7+d(0Zf4F z^&x;tQ}Zkiv92Rev4dmY~@M=`QaY$pZib z0*f43c{W{H=oAzrD=K84a4G{tx@))oZQ)rrknel82Z7`vr9D61k99^u+ z?+6`e%&*7+H}C6%Zjf`)&S6Y9-+^@35YG3Zo}9O=hiw|I+8`T zc(f9(8lSAs9k$|~RkQ#0cC6OI%BH{TBJkK5WlC46BkBx>K&ZjF&0tirax0wmnUmf# z8;m@F)s4w7%|Zqjd)k&hZhA7G^%zyu4@aFlA1-~+o+Q&aqcT1%h>DWGV9fCJ^6^tp zVtR?V8`n19DI;5a+g6;Flb1+sJz34+vQ$N%7EX8NhjX)?6O&EB>XK3K13bXyf_)+% za=E;Kddu?E>uJXg1rC=nx7;U0nm%ZIU$(=#0tI?ps!&0a{DSNUEG%Uuo9{ zM|x3i^?VLUawJ&f&E?}?u%zTPd$a2|SKsk=;QLuufNr)&(pwvY^lzEQSOu<=>m|Bj zxY3%zv@hvam;&tTM3)a^K%(*RB{qBXa(mt3&*;W!HX}CPAZ?on(x?^M^3Q!px@tyP zf?<>&W?LXq$?di$bi6pW%8BwNX-82GEz(=g-)yMMp4YiLUpY}u;*JH`bb+RAZfVspwdBxQM3z77kFMGNVZ#V76Sm> zUAd0l0hG)o9o@1H5U<;10ZYS7EiT?gA51f*6iW0a-0x9}3-Bq-)$wt$4F=KhGtNl| z|0`q9$NHuG1Nz;;-xi;N`3w|a21vQUi5*$bm-Blqu=q%!#ltm_v5~&!sYCoh#g)z! zeIpI3ZBr08K8bf*LeQJq48bpYM68c?L1HeDXJjQ$gl zSBdD%W29SW(qAR2VlhEOxUGrr%DgrgUo{=u(MlveU@XZdz=qi3^5G=(>HYL_ic!i>lB=ZQa7W}OQ3AP7b_ra0%uSDaP{rRm zn?FG1IfAFz^`05tI{@)y%+)cLggM2&;mZFc?g(y5mM6*|=+L!eKA) z4y`lM^OrKaRY5BP!Ih=F9nRcjJ6MbNDg7*vJ zdlR)Uo0Um_xoz0sii+vEgg2c=4%ErB8p@y1=+Ucb{b+hU%oHfiLz4jlJMxR46ez?I{p(Y6D20q{&lzJ!ljrsoKMVHX#5p=H^ zlyVxA5gW8w%cd_*mY=iOY#C)(&l@Jo*UzJFlO>Q)QHoCM$2(@5^{&^g{T)t{V!xM8}M#hS} zg_LgXUw*_dK!}t=BmJP#ygMyQgIc?0Bb7wx_#`ZwTYHR&8u-s-5zYDI=$vuxi#8dA z%OrJLIK_{Xvr;%C3B#r^mzsk{Y-VI?GD4Npu}zROVh@NLRZjx4d^Zv{S?e=F8Uq#H zpHTu=@@sOb3Q4390s%T@G`j5}uR(2G$KRKK6y+D}OhM2E9ZPa9jQ$#u6EA#^;C?x0 z5;jEsPx@T6fV!noQ6A#A1`}Oxr6!~Hi-%j_x|(FKr4_k!ZZymtMoHM_!AhhBCPZt= z^ydwLDhju4A~FY7Vom+ZL7rs|giIZ#ytz>#0{7(HRGUr2Qd4RaykA6CVh>Fr`8 zYPKj4sS>Sp(S%|-Ad15S->Cswks=iNV~_LnOm7+OMcS#zK#ZNP4`k|`CO=rE{@Vtw z1`yrAWJ)DETmnh@%{OCW&75cBD1C~2aiB$$+BA#&HLg3x*Ql#Y%*{oM%m;j}AjF@|lUrO!u${Zt|OwpPk`LaW( z7Qhy3ruIaSs8OR(+$n=$3I7FHUqC@Cm5yeblY-uSu7>X1d??7%lh<_UPqWUzKal1; zW~RH-Ecu~emFs~DK0Yvo=9htcpGEqSpjZ5@${0ZQaA#U5t?ez4_q2)HFbMMKhb#e^ zUg1be8tG7iP>&^pDJGZ>)YF43($sIPM zBcv6=3IGZdPOsI->r<_lP^C;CWwI>q%xoBQs{a6z-}n$3dnPMm>k43E0K)=Q!4U7z z#l^;)+%h>dH{ejmV#gN>9avC4V!Onb!SOYxy>c6~bswT`%dfvtb_*!5_AE7H%I)1f z*tT3R8C8|iM5`Aepr`v5rwAf-cIhQ#NENcDcQoleHdIloynzQwKNJPcOv5Ll%o|KL z5yIK;uCirJH|UeGNtq1v*NBp*)NZkIl7mAAnjKZ8sMBb2B&A9{$>bz{*RJOl>u8 z0{T8}@J_Djy-~T=Op!GGc-I#$`URb!Z@z2XU*w)CgmQU6hTr`J3wZx7O3Q|AE26nK zRWM%twFbTG+ZqHEmX<`iWX(6wuo*mGeqt;wnaHYKb{9rmN0CsTL6aD zvtsdu`o-z{e9Voh$gU0(7UKJWkm;lo0+f{fZi9CxhFFMA1hw3`noYc z)Ib;O`MrsgcER!>w}6Ji3a;R_Y1HG5J=<}O{Dcj-yprJrd&g~}EkS+1bt>PE8g5p| zdlC(*DILTQ3oR)GVWOyGMe2myhxKncK}mPJLd~KZFPOYOY?fVqt2-G2N)Pq{w^!d9 zyD0`s3@bgDjx?)KLR}C`(*6QC25*ttj)L~|mx?t084EfZfXU~uyUuwn;Oc91wI#u9 z)t&&3tbAy$F{RYH42I&597Z9(0M4B9?CL}gk(J>jgUd*T$?9v!*f3IEkD65%2rXf? zYD}!4%}DcnxFSWv=V-|WIVo#+ipMtF!qz~n~8ZAk^vLH}cRk0bQ zz>vSX#r4mXAcxcb(E%2^5+|Ncve9PK6?iMr6(gM|TQpdtWQH?ym%%yS@%fK5X09r0 zqheRn>L$VBXuJhOXpRlSS#_PwCU%P-#ZDD~r~r?92$M|dwPYR3SZoNz-Xi*XI946d zUUIT2OCoZ!uzaTj*y?@rz3-TN{}pAO~dR+pbIr*m&y|ow9WK@ zn&Db*R(FJP0${w>YJpY|VH=vd3+Xv?82B6(B*;O+1|^gvuDC+sbAq_Spp<%@)5oS! z)^J#Sgfgltr_*M$Uv%eXRFw|9v|afy1t>_4KU`ip+x{^mHuS_1-m)V~Naf zZkbFDdqTfK52?;jPIF#H=2&%`vREtt#|HfDaITt{U8(%#QoBEY$dZzEozJCrbZ@0Q zGLX0S)jAf_iKuPXa{AaJ zwj*1A+{V`+z=Ip?dw%)fX#!A|p*t){4b3>hJ0u4@@}-oVbv57+n(VHBNa6_umkvAa zv0Jae2H;RkWt5Y{f2mkdf@IW@=Qq)Pc9vc-9<_b=+8Rw;C#thh6+{_X|0{oCRx84v zTa9XwtTQGYd|JqIBXjfASp{@C82j$*aq<=O(6`o=TU^_+2O2Qt?4=HnGU^dEPBS_3 ziVaHs&E#8xxtotWH~tS#O>^$-tAUSw3RoEvHe90_=*m1tK&@?=m_~12cDM)bi=dx3 zXJmsK?N*ew)~(AHe1=XWCaZ>=H#~YTy8WO`nb&d&K#i8BYv;cAd7!{zLWCQ5h`)j8 zK>q0-A<0zo2p{_I9V|Ds711ANT9YTJ1^RMz4K$Fhu!V=X>PMXdIvqgGG?eD>yKE5k zxt^)mHd#}c;SQI<`8)&fiC9J*Kv8mUBm zQxd# zBH11KuV|~2Qk}5kXDPvA@VDri67>UzJW442GK(Qh?I7!pt|8X{%p zS!kja6T~hqgcSiLS!buzb-o_2IRIuqfEFotrSf5cdf4dBkVJ__8|j;8td|!cGs;7u5amqR4Xzgum)&Fu*D3Ft25I-X~Jhc94u**uKQc2wWe6RYwc zBVjKP+bm87a{g^@84UJmL&L7ZB@auFyhLR;V!hCT zHbbtb66kqqEDCrVsV|uMbgf%36J3mn*TEdi>~?|JNQZA}Q{^uUa13`(w3&1Pl;yaa zCYXdm7$uaUgz}>&v9(OR#FJ#S6c)G*g36os(ke$NPutGhz=X9Lv{Pt;q7(OMc=?}W z=pI;_>S#sDR)H_V8Z|kUOCVM#u;y#Qj(PTGV^O%lyX>~mB&2Ygs<9H%uMYZttp$26 zm42)f8@jhS60T*18S4E7a5;c04vdo2^6MUa)03jSoox65VC_Qt^hApHVVQ!S%;&w9 z5Km4fv%_0yDfhR64A3mZA9}c9-1ZF zV8GG5m`?lXX%9`2{3xP;&WXlCXuL3@V-d8R;7y_wl2@Hwad;d1NL@^8J%BMAa4D1Z z%{TR0xC=^Bo^0qo0g~!%PwDT2cm&tu515h57krSwhGEueYTJZlx{$t4yAw-SZhBUO z!DO(eGaWzVR=-OSZwke01wupS=vEIhq$BQ@55b;&ole&n0SUC_ zW76+f0FFO(yy^f9`o!`>50q@1v-l#lCv zA7o$~I{R?5{MyKl-q?%XN8omkKvqE1i%W%aT+oUdJ;r;E2emh&ywlcAkB#J?woMZ# zS)MwcOX>!;FR+#-UJg-|(X700gC=`t5{Q2eq!%_Tm){DCe{Ov}P>LmAK@#V%G1jq@ zj}@5U`e77+xlibhJE<(ql{$?7$*V1BJ!8(9ZtJx;9Eg1N8Xc($yq0jMEcZ}Kiu}2s z9`+mk1@*3*QqZ8*1|nRMSGC9XIiWtz&+#_tM+7cln}+xdvXwla5D3j8aY?qz(~RuH z8VV!*00RKk3gu@Q3CRN$nHyk@W_HA0()Y(!(Uc~O4xLwMR63Q-c3{NifJXd8+SZZc z%;qM+74qIYSu<-$IzYGx7L{b=afJdRy);#5_RH6&lGREl(lOWz{t>%DFMuGz=;Wmd z$$Cp-o?pGP>QXQ=q?~c7AauQCPxt^P10?KOEFVZX>jpTCOnDNTKzM)2qic-4c6B!h z0Tb7(TV7MBfB|V)&T{#ZBzY4V{`pX5w>F!x7b`CRD48!I_CVD%<(@?%c zCqR!rTgk7X1x5NC+La@>T4;t@`8;TS-HE%2saxgxvsU@1f*uoYWipjY9d;W`Gio`l zbwJEX+ZDk*8zm`3U)xh@9s<*b?wEe{il>aBTV9n%z-USN!Wt5PH}Lw5x|zML+&LY1hT(xRr)?=*Q7!a06MxG4?-rDju!l3HjHb%9bkRLS@_x2QB3plY(2 z^BJ1DahPNkLi$bDDK0EWwlZ;HAMr4w zYp0QJ@&iNkHV?=3+nYma4v6}5YUl`{kj&nj_iTjewmG+y%Z2W2(D=~u4FkhSKi&-K z8I0wU4UP8)S|F0!3K9#oO{0?*z8zr8>PCXkvFs>tf@V%_KEFpnZ$R%esPS#x3Qy7y zT`n0NK~)_y>k?W!49VWUCJWH)(dsw!(!Jetu)Abl2dDKUSCyDr2y$=*JPqM4i_Jd^ z^sj&AlS>rbO6EX1P;y{}^mv;uJBsOQ&; z&(YsnJV*%zh+&H8g&WiikO7-Wu>18Y%(PMY`b*)Zv3>IGVt2pyauJc_mU3$wx5e_+ zJ#c^d2zH3{>@}AC;BwGomw~^jT-!vqdsq%ld_=w-(m?WuEt=a^ZoQg~hmT)O&4bk< zK==SDI#d>eIV|xGi#?nSFJ+=7twK>VeFlrR-tt8C*S%}1 zzJ!*kP}k@)Aj2g!`M0}^c!4EB(J9o_f{#%pmv$xkAUGT;`c-6mQIIT zh2j)?)Q66r7M-%+hw^|#CoV@eLcZzvX38{5NMGtQ=_e-(Dc7Vq-TCMrTd2_wQrm}M zH6!!kPs60iev-co{y!A6Gaki=-!_NtyO-b9aV6~wqEw#c_nM-ichv7K$Q_bgx&LEt zq0fy_&Se0r%$NCB_9og0I=?=d8}t_KSyD>5+dculxbGA(OR7y)my&N8?^^MhAaeTz zYO~76mq1L29y?6^fpVUtFPAA}EGVTFSX|8-u!@91n@(N}p+Ri|n|_?aNN7PN4wsC9 z8!@`nz(QULZq&yFm=}I~hy3;!T8l2Fa#MiW#C9;?adF+*`jhDCZri#W1Mnq30yjAM zkt?8g>9gtaOjw!Zz~K5NtSh~3uo$7i3RbK=q`jqHirg9!I2QY9mK8g= z(pzt!EZ9rAL-N6^tuw3!iwFjf3@F1eE0@>PqZ?81*pZJd2;PrI=4cI7QA{o4=YE_*?Sc(&tHm_S)I>R`fAC8J{e>}$DR^VuXY0svG$nBXVfah=~~FW_*cMm)Na7F%hDjm@4l z35quU9KC}IL>977nCo8K@dnTk>?yZUOLpuzX6&BJOffU~^hHg8Q7T`1$PAN8M2oe| z5u9M8-){^#_~n8zsUuVT7nVDbPuBeD+31RA(6$zFC!KuVp2bXaKjDSw_Y0ja!ppq{ z=uJ&wpViM;TNX>&dJjF3$3*Y1Z_u6DR!Cn^AhERcK3#wsLQc4$AY$Wo$^N-YchIy<_# z3P~71E7YwI3iceWpVrtDFS&blOJbXO>HeJUHjwcpI$uz7e<+0h8De=lJ*jq|OO)4M z8IdqzeP#o_@GJ^?V9trd^yon>P>)%Ex8BC@OBiB#8o;5Ff6j9~Zc#v`N22u3O#2N+ zbMjZIUj3uYs{VrZHB1x7GV`zBh*oQ>!)!<@ESKmNqdtv)LGK5tPZ9i8^8LB=a6OHf zo-po=m8n+=Dfwa{0)d?UtL(DXSibu8^V1&Yuf!H6+#Oy{oW>url`LMhEg zE1SG8TH#Yb^^wEh=r`)$q6{0XCz9m{-v*Q1rWMJW1{_Q9d-w`9T2Z1J<4omj4s_+*|fj>QHm=NbKo z#ekk>hcdKL0y5#HCc5&{AVhQJE%5BprzF$$GmVLkR(nQeV-Tn?Yp!gu$Y0$<$43E% zOct#=d7O(H5_7i=?0XT{8ML2{eQyD^3COMLRBupV|$ry03OLU^cbNna7R zAYe1niq(iwtSJiJnsHa7DkQqlSts#ocsbMtSaaJQ=Oawz z#)FK?kKS#Nz&6O0DcC0zi_r0+P;HWHhKW;}ze1*{(cL5{g}fKg7NV}>-h}>1$WXVa zN%V$W9ni0(&b1a)>P)VmiuChk6hW~zAk2YsJ&z^xVt!fM12k-sQOOzCabBOn-{9#8 z6+EF=M$P&c2vP`Fa#g(o*R56xIZ^(%gBchYpPD#f2Bu82{%uPshva~snH&4kSG2tI+&>eSY;sisuMSkXuW{@c{3jh);yO^1im8YgkN^%8CD$ma2*lkvo)#>*QgHVSw& zu6gXpRF-=F=G5hl1*y@fgilIN#cM8BoNgs@K#H*Y3=?dfHPMqFFI#?K0gEg>$k{o) z)YGRs=j}?XVHRfM+DXPv?9zQySpy=Pf&Ik?7qdsDse|0_+p@IZz!so~B9mc|qZv-} zb7y(aQN!-OCDDPi?EE=)PYsKlVv~Kl=@KcTJtXa}VLNx}CIetN#a{8S%{7sq!_3xx zgnzj2p6FQ3<6p~%>bnj|r~CNfK5ghfhI4&&UGa7nkLxZT=KWsqSGB*sHEfArV63OQ zjt#`oN2uK!y*Iv3*YrUjU%sz8q79s6r{ha{HrMVyKm%vHI(-ATN`t4F&)PGLC-*P% zYQc7IBz~6R6OSM5tmFrPZAWbjHqF ze|)H`{VZqEex@y05Me!)UceT0`*cZ5Peob$Non```uKF$UgMTg!u^z=mz(C#-4`!{QzuBB(9oy+3h?K7pwMf~;@J9S{$dxjzJmVuvm z(~x$EE$=+R&L7ncUDR!V*)Y&)82V8+_)2uiarD=gE@RrjW<%@XW<#{IGJ0~o6g{Qu z|Aph$uLmRSEr~4{k;8~*@1Fj6?6~BF@AxcuaS{?-zF6>R99HFt-ySkS6n7sHP-_Wn6QSd3nux+T&sy*tdX`1F2I=B$IqN$Xa1!-{rxgrKVwvgq9dx7 zG`LF_S$&`;@=@Fu-M{$+KmDz)wO!gD*X=%F=o(yNLOEI!(=v$r55cNcs zRI%UMB_=aA7^bLATU<}Jl{(vEV)sq(u=DpYwQB;N?>efTzunNf^r#ja{7JXFGb1|i zwr=ADvc1IF1c{wYk=UVK%cgoFVeJGP@OGVL?-`<>>)44CZ1tl$R-C-NG{QEABMVBR zmc+bS-Ch?RIKo#?sEZnhdHt7>e|J=1-4mckTKbVr%k`c-!CHtN0x0$gUvQAWS`)2h z?Wg(qgWPstaTNXLPcTf*-}#DRk~njLe|Nl>pS-{i6-hn5E+1nD8D?DuX2Sd$jKuzW zi49;h#(V8uJ_lw^9Y}sdr;zl5V2QKP{{?PUNB!BxNcCyd#-(ldz@H)i?7P0;}4fxB3>THAU zl5oocf6oD(umJKWOwk8BKQVk)ouBXZcN&hpX>i6zL{FaV8q&Ox^QYKg zr-W5vXz~67-qU>y5C8gJ_i1}gwB|&YHdNa+bQWLA&-~60F7g!*#{@ZG7^svOKmRcv zCmgx7zpyf_P8z~o9JnWXa))8#%eqs2hOYRzNIcHtXCpG#mi8Pl2ul}52G2)_@Lap$ z+)-U|yr$>&e{T0W&=mrP+#{@U-aTBp5!vLzU=cKU%(EUrPXB1xJ;{&q9@L= zgDFzv#5%)G-rb++4pn=jCw$Tdozwg50>75#^Y55leWi&!we zuxscv-_7HVhNV=HyW=m)2wmv|XJ@e5yG9Jsca>Ds+LQct`e zBZ2vR7rzLw_G1`jwx1*Pxv{+tt1>GWcuEZe-E*$lJr-?{usB z=htD;I>$J+CoCCt$BxG0?a{b2a6otABD?7Ae;G$oBeB7K80AkH@)AQED|PgM4oj94 z?bdBy)Z~qv;aT42I+4%Bd)Tf67?AzdY)Cie0RL^XFM9EJcC7uZZK$s2=+UzHC;YF^ zHQiV14gH;l==rnkySO(xbb(#?hh&WQ=>+zPuC?`q#w}|N(VwZ64SuY9^+ba@pozA!|0TYN$#Lx$-ak`{p6oQ>@0nZIf7u_Y@Y>=l4gS-W-Yr9YI!yO-XT8RgJa#I| zadS55w#Ro4VV^z0{Nd=#1uQnxh=o|es*vWj)qB`@iGAT^{U7mVqdm6%UwU}b(&Yv= z0Yh@|kgjJDJI)98=%VWvv)~XG=0(w^QrD2-bbTaV>u1_M?4AwnOW3&-Uv%iO?&MkS z7&;LPzYr+6U<5~P*wYzYZpZQjIrd?`{Ux*I1cMV}aL z2XueM*@gcY&cqGdMmA!V(?=WbHym6NInVf@Pw4r?gyTqz zx@f1=|D&!S7w!pz?GW#(uaBIF|FW#TzNg+7c}mi<>%7J!*HX48KEN)-qeBDWF506z9{XZ?5WaW*>|>F=z;m=P08d312TR6MlT zU}5ZduK_V$>j1yM{lqe3{1@$n&cxn|_vlc)-H8)e!oG?xi40wcp6D~MZX5?>F+^#~aUFD~%+ug93d%6($Jbg+Fu z>+kHxK34DR`J2?U#&B$=q5oT~Up>0hTAHtGcTMCeA3Jf-(0eX2w4`gMFSBP`rM5{F6>8Y4F5mX?grq`*#QGkHrl`iv};&4PAh;5wj_d z3HWjRVm;p3AFmsVcMKh67w2_#*7x*D{e6-)5RZ2a#e3sEc6=}zKPtt~N&}tvlA->@ z5wzl%(8c`1zV(BB+UD3rXFMK%C4Mp*Kf7h7?+l{ocvt%pTMb@v0&DBB_>$9j`gh&M zvtB&UF8;2I_wo3W-7|f~|9cGA`B~R`$;iU+ZN#J&qP}|Lo&IQFgdJkZk3oosVb0df zT+Dvn>9Me$eIN-8o{F)7c-yEV#MX`^6*e>}8H`m)PUeK1E?~_hq>>F1j9}v#P zy(ilJ1HKJd{g=igAI9UFVfo--dt^7>brCNZxX@l4Uy9F&#HEw*WpQ7V>wnG5kK=}T z{ZM=`j&U*+ABcCySH&;*hrH+evalqver<7tb;aw9UGYSSycyGP$%*)d5 zPU-9hY)e05OB&$pPD3WvD$Nt|ww~fg4lM18dylmHj`ta=wg~L+(%z3(#p_R><=TZG zrR?^)3%@Trc|baLVEx6vve*fKWPtIjy{)YO@G@+o>d0PQD_gifeqndqho$IZo#jZ$ zp;z`TKDI`BP|ds-m;T&g!_e>e^8c?thlX(R6KTW$-=C}hUoVOL?-wWipEpG-{?ALI zcyb~*)&B#;g{QhIOt^wpC-VYN_FD<<4+NyMR^ewspIygU`f$V$>^=R&Y=#XTNjN)` zo?SYd6>=sF@QF>VH1WW=G&|AC#kn*KaR^(mGK;Z|3m;&%#CJWQdPiJU#Uc4)#rWq} z$t!PS_pN7a`RsE{AA_9$XNS^vFk99AES0l^rOu=ZoG+-GY=3%F0-?lv*?WcAY!qku zsBql868YuxYQv}q>tpG7xL;h`JugQ=IWTeRMo-gpT<{yyusxkbhZi!}ZnUoO0+=NnL%L=Q`_xSm(f z3DU~k*@B-T82p)YJ_VhPIeT2p&fu_09L02En(&0d`Wg~@K5imDt~fPI=#s3D)E&gN z9pmHHYw)hy1@>I(dh4ph*;%;6eyaG2Ge39ePh@a*-g*;jt?Ew_Ln3GQrQS3fN3mO{ z&MEB$a;|R*O|m_e%ye67vxYdk8o|{MxOwV#&vO8s7I3UrRdT4i14achpWea8`2qO z>kI{$x&P}=lrtbH`!iBkN@G)h&?R7*V+i&2+!&0^)^i~k(M$dvWs%1>;ZM5NXxWq- zNsOCZcm;3Dw%S;c)yRsi5qq(vEb{qY3@`^UaRpC0#8#m!&05TyR;a+OHv9Fg1aBH! zV!aKbCqI*|5tfVB<=`hz3<~MPVe+xbzMl=lrw+$^%JKhH{A5}mV_At8S+8db8uIMT z#6N=g$+Cu7wzY|c@VEe#-V3TJc>rVQi_` zB+M?w2c}p77z(os@jYqy9={kC_WJ+(xi%bO5IBo1)WxEq>xI1~i4Vk6={U}GEBc~3 z#q9zM;N17)xWdAY;o@!VNDE_`VnoIIid^$b>?o48_FgwRO)t?!;WR5m+Ph1KX9k+muwXe4OTUN6&>r{MXfpxzXM`pu|$`apFvVi5| zJZ2}}pE&(=Ys4BwLy@3xWO(AE#m9vIKA*UzQM=#X!%D4}S&hPu#MLjb_WRutqifab z)y8r$!kGOzCgB2j@jEa6pM#%5>r|FuZE8t;yualwT#Ll5UU2h%;Yi{#7mLR19mSCk z9{b?kci$}#ZLBObAj}?)7X?DQ6PK9nxc#{nHmEGdAMxjtY)X;Xorcbg&jd_^uhhiCGKW>A3WC5gVWg(V!|e?wW;K- z&~2>j!GX|rVQe|>){zSFHlfUnQ#N9>%nswwE3B7|D;A=axPT)t1S)ZDE3D2JokDsT zcX}*-{h*Cy;MIFA)^G{%OWc9n?~TXqgB?`tV)ESz#g@4 zc@@-Q9#cxueESE)m^Y#o)@}G|0i!g?l5jS77(^Sy%TT;@ z!u`+2Ok!e;L_&VHw`3~jho6N}%{-F00#(-Ava2Gq|NEyR0;KfNpZe6jCxrh8R{HAM zq|?KcZ!pK7igF%i4+wnt|3%unz^8GZ>Eet%SV)Y%8I1ssFo6M~(THG-5sVOqi6B@~ z6fA2Iv1MD4tqU@4oY=Kp*CtpFUb(f}n4~nO2Ai$bHm&Om4sz1=w7YFwD@kwLTiV_2 z{@dMpx7l;rZFh6_(!FobL%L_%?&+ZDl2{0?tt$fjt5&i7DkylYen zcL!yEPuS(X-|Kc-T@LR?$tHvM9_0L9WwXyW&^zq+vf+SlqoTz7l%`nF&8YoK$iKxe zh4kKVBC^{XmWJ0UTO?I}z%}qT)*tnRLZ+~GDkk^%6#OjhFggtWHlNA=px@(Qo$=6? zfvw>|f3HvP9r8+^9`~^SA@h*Xx?@D`Jo2!d@alJO3yvz=N7m06Lt~+l!|qT(wW`12 zNv6hkq=GTeBV+35j>OJ^K}*mu>Zg4ZW6i_6+yOW1v4@55?%*Elq&tw%#LVxZ9!*Xq zCK7w4wfsJ-(PeP8$%5)1aQi3Y(;kh_H#uWzwOY*+25M|}c%MoJ4SuIj>*@7AFgS;F znKc8m4x_|A;XATxWDlBdw`V@lJp8D#Kg22-e=4-ozt7dJ%*PId?YrM5Z+AWBu==LL zKHov#pKvf6XO;(c-;5SkrVq)1|>Div|1)p(hf24qU=7D}F>eYt!JTll zditeP%0b_J(CD%Hq~L=8bjTQg%4_qFdoyZ6c`9g*Q}MiVX5cpwv|aR^Ro>;3J?~b| z`CYDroAE5ks@LRwPdMQ<`h31|-;8IM|0x(mlk(ot7GGjOuX~C!s7vbB;M49WpEy5d zoNxtcUq(rI4PIx+L=ueAT?l9W>%5cR)}Yout_(ZVqTpMnYz=jUh8?2oyt*)ua31g; z^6m~jWHnk7@-yf{v*1<~R)JSnK zJ7yf2p0sC&cN;xR!EA7M_;J}73@cB#KNvLnTSIDStG6XIqmIO*s^If^-#>iLbC9o#pS2&L6I^>OdJ8P*(gXFLbYMw7vp_NM$Tp$?BxGPrzhyQjnbP@sf_CkEC8_YDfZjOS77TDjE` z2v3DMx6Q4%=9ELe{jPX$@9-fxYh^$ zggZiOELIX!ds42rPR&n+_XSjb?Cg{wl?dC_jBhr$Th$Me(1j6G48SdH!hM-?CvuNX zoS8Q!(ur}u#s7pS;7B-!tO04OvTpGC@WZ=XllJiV@ei6Oy{tFwwR@U9y9Q=L4|xMV zqtfP1yFcnVBL|$!OzH`DDm|7l>n#B+WO&?gT4^!w z_Ixa83~IbrgZF!m_yS&|tH*oZgI3`QnDic}qVezZwWv?2Mpqiow!^b)A|alc~ zQM56?gWkc+r=NJ}wP`p+%=InCp>O`w{OxrC8s@ytk2_yF48uH->`)zTkL##=piJkQq<6 zH1ApCcoYUB<`hKQwOgKX8XXBwk84TBD01$jS6N26}?t8y?*c>y|%oRaw z(Q>MVGuNC+Pu3w@QZb0FBWuxGi&lD|phQ$fPFe&$ZLv8;UKJ!$Q7OohSv1&ux4es7 zfEc+Nmu8YY!!KjRJ<7xot|i?f@C!W4CHWT&Mvj$@-n7eTP6mzUnyKPuO%juBsdFm> zy-d+RD^#k zaIW7fjX%BhAN5}pl~W1D*Q2V68=?IB_hsHH|N9@`TL0VMevUbRUjO`4|8@O~Yi;_a z@{6PY{*%AD@ryJ3#g_Khm0$eZFI{wmZtVdz42v1FAy>5kbqp6U`5E8 z0~VX0s9B7RCxvR}n+jAUlN^vu#KM|vLQzPW`UZ^)Hh)UYV8oR`ENQ(ZY%;MX&R{c$%8EY_ zWZkk#dG#{u)4C~@r~#EyRkPk{^g{!f^$x8gJz*S3`YDfXq~>MgL@fIxNwhQ>(i4S= zq>wlCS!;$&P$et;5huqLxjt?apCdI<73=O^=?D|^)?>X2Gsr$g*+jvd9$-iHBgtXg z+nR#wd+v z;w;NCMiz$(y%@>i=zRV8FSu!mcUQ})=n+9_}*|M-Z@06Tnr`B*-iAk!|6+XJ} z@Nh-VhI7M`WP5@Vd%ZJO#>F|4zPc%3VJ$0CT8g;~F4>(@7*#LI18R^71*EK^#$NC+ zQrbhmi^@q$ua*q)pU2h)a=Gbh{;{Dkn*4=e!ad3j_;l#E}V> zh5;3Q5OIGptj03obUdJN;mAPEQj%!3py&rxugxPT(w;~nn@B2JhwPpAb5hQy29u-N zfs8A1yf$F-Ecp6Dw}E!6KAW5ZNDBmIc~R&v z_xc%ycndz8vo0kK5nlDx2N|o)R5s|XMpHznVf;nbS~4fixFW@7XA0$waN{wKo!(a$_qkSltfvrE{I=kc@UoY6b3rj^Gpz8p6q_k4CAmIBlWcPq z-IAkETp24%Nv~>J5f;^mw`|Bd>%t~$K4=?GN-M5jb1f!Gy{1`<(GYMeLK^+0&~wSG z80sd9&kHdN8>7T|OU6pftRM+V(*mb8Et=ErfF)~IObbGvC15ZHYYv;B3IUVRY!hl$ z%0x>xNew4`L}sL%QWFAbvK66xj>^eNq3n<>lp$s+IPm}n(gJHTS`=s2vB!EO&cG1tOBn^_I}d&spFDgkoyYMypQwMf=Na72(GlEx^pqb zW7|zla>9xu?Pe1JF)h-9F&v2X#g+$YnfTd6ayYwV(_lJO@g^rqBb1Vl&-)p#af*^_ z3NnTrB?DuM30W)Uuc?t8*?7@V_EuwR%ohBl!VViJUN8qnYl2N=W4E0)3zs#zXt_S1 z53w%VQc4)zjF9o9L$G)gHkA$4LVYpHnj2;uHisxMR=rttR1&pe$Zn!MRS0FJTCgHX zip_mkX_6FC@=+eGZ%=5&R|w+HyX$^d4IHKhjj_OBY`|vL8(6bwl6*v{nrv<=#>Ci= z&8xt(VihTF8(4O}WC}o^WX*MchTj*ig>6q!*$}1BgUJ{jU-8+@jKPT8QkRVuJWhcz z7rZZdSa)U47N=wLZ|hT%ij<+kF#|W3_EtPKPm1ex*333X+DgrrW7Sc~lXv#1* z)=E36BdV;GDRonPIj+c+m^zqMkA!Ci4hM5^fW-Pb;N=Oj&xSbKP8Z5hPBW1O!7DwqLwLzPrm}1Zg#@(EmbyVfDqbMgs zWnTrv!-_;%35+zAx+o*@2`_Rr^NM9x_-m+CcCD$jzdS4+{!JI9u2R9|gTK}8lC68^68VH2+LIhHF++^f) zLd2>U&`7OS7l|8{LYS3`9w}$^u>-Y%qM(-p&=*N_ujQ5j_rok&ZM-1n9d)N-)rzI# z>^yal8K9KXm{F!Y)l5-jg_w0w=zW_lS&;SCvRF~7VP%m@y8CgM#UWE;Ehea=D`;1oJ3Me!n&o4m^Z2mGN ztMB{O0&UY!IF0geNbKKG(VkzF-d`@Y|F`m=f~kK;P|N>bZvCRXbt1o1VScy&U4HeN ze)Xc>LiH=rm6a9d|8Mz^An`x!|7TbKe*)oOd&Ki&y^f-oKS9`tL!jwz)>ARgSKVzB zSc}nWvsSHXhu}2=Th+`IFPm$Qx`h>(xH6FT8PT|lpjq{*%`k7xSUGP@wGEW5pEiFc ztSV*M7M3ixtW8SVz2J)Yp#V%tHLb|uno^lh3PwZBQ*~5)bwWwR%g*P#v?N(L6YH;s zR`?jk_byo)t#T1VhHIThQ^68(E3jq(!6wi`fG3`kQyUD3l1UK)klx>R{LX+Z1T1!1dU=7LpkkxWSotgJU6mdz2*iZw5>A;z5)L@z62?Gdf4fpHYgS*Ot#5JiV#0SpzP zTK#&@@ewg3spTjhpT1Ef#|`~gahC!sH+233)USBx+=&a*?7Av(9>)QW_vQ=c$>25(KT4f@+Njm4S#H zu-YsUC!?@Z$|0+4jJWHbtTkX_th6=hAg02ZHBcWRZKxiz9j*+PeA(EZ;H}AWkPc>s z^}gHjTEgaD@KA0H!#8D1ltO7iaofxhF&DB~>!Nn1=BumO_0eMAdaf=~Zh%<_sl;gt2rm;@2xcAHh_79x%A#Q@x^_3l~DlFl54?@)d@w1FAbY zIIpDR3mzd}9*hjAA<4NcHTnC(3!aou@YnnW5VoRE2rqb-gA2p#6Gd~)!dO>aX%B0~ z$+(NU9Elj3gk|!Q>71d!{-J48@%@OlFmon#tMLBKwtl@KmRcBTdfea73a#BR7 z%aV0jc-ef;S=&(;W=*|jk*m7va>>Vln@Gw>#Jqss4%VcohVvPtGjC11^a?bmS3ANg zjGXcTVG68Vl#;S6t+;_Xo~9}zC10Pg;xt+cgB8EzEBdld;yCWpI+IF3B7PgN7AF}6 zQ7D7hVEBlsCfQsHOp;AZn`swgW`lx{HZc~xscKOynCQ}RNBq2t2#lYW1d;LUU8OKJ z@N+iqJWi)u9rx1AM7)vFf*a${|C)Xq?8 ziFT#M`FK%P!?cUaLNd&ypw`Qnh@6W7N%}HDSmsz#$_}KIc^B-aRdOUP8Anq>SYKeikPl20WQaKk()N6udxsK+E%(qE02f{5=V=6$yz z%@I5%M&<^RAt_@#q57cNL`Af@RI6xhQs={9?*!Y-fhxEkZ&`)6oV26VY zA<9MIVqx3iU>IZAXfy`G;XpXico_rO{r3{aUm82KpcT@XuO+itn@+z)5;f{f9d;~R z6s4?G6vcYBh=N1)rDC#PYR(rE+Q8nKOxDA-kO6GZyqv`qibUKxuPp49Nzg70q6#8#cTFOi{NTN2{jGAiGwrLFp zgVAssH5Q}6fUlXtNisO;x5`vwZz?dw1Sm?=R;MUhTd!;DTB=TIU?$t}m3OOmD|f36 za8SEjlOj?TP66Jv#?g_xcWafq{dbLt#?6K|6BvpY^z6{2eh5V`j=@HcRczIS^kQ#P4gQkRypYWC-tB%54X!dtzKX<5lsD_&Cso3V&D5{blO5xg2z zbSM@GytNr?{NGkJi5mZgN?mGft6R5jMLjk$rYH@Npj0+08#itoQEIET#=B7(tC5k$ zN#V3aTc-=_#&;5+I&>W`_(9T18gk709%`qm@(`F+#lp)1X_eu$#Nc=i}Q zXb2-958*Lkme1z!5Wzsw?9foT9~4xiQc<33qWk-)^>03e-Tq4CE&yTW6#iDNU{!tP zmD{g;>NcuZUis83jW1(Z7BvRYgREC0r}|G-qmgR$ROM6||9>h19C`UNwKiD3+}Mhg z0}%8?!f5j9CiICwB4E^`5ljsc+&`3|sVP0x`sU-U3a)oV!R3zNnmcV`r>bsAs#_X& z46EBH)3=RyO=C3)p_|lO^^*TyqPB9%Ujr+sNe#QvpA;??ZctJGD9RF=wO13M&MG}qC$nx;2gz0#06!Ca!&94?in zriP}B5X`p(02dQY;F@rGxF!quJvsiW+|Q@Uzc8d*tw*!zf3vWRuzEWiFb{ZqHJbcLyXL(yroU)Fq0Nlj-ry_;?z1 z8q<(sJB`VuDNFjOeDvtil#Fp+j#8}#Sw1Rbhr-Spv`vFJJKMakc~^7uK5DIZU-Rtj zu3gyM_4uRBTFUbHsErClp-+VtwCS6^Lub*1Y)npde-4m+==slV5Z+v$xh&{FBNz4^@tS3I63 zkH_;W7SAS+XXQc9%BGbwo--@h!{5$$HtFUBIW;HC<5-}oWoU0%NXc_^@|=*K6R_^u zJVj~VRE2KgHKF@plki%%keBfxLC7~Xb<0gccXv}aim=&4o7x1tDFIW~)0?r^C<2yr z%6`Y)FbLy<0Ie#dsCCq5G^p_#>Ga%ORJ%@-ZX^bB4fQ*xrKl$N>D1}@)AH%l`20M2 z2Fj_^6#I4g=zJ=J14lFSsd;ST0cPeiM>CmQx1PIo#^bs5-16Dwrl#elTer?MdCuNC zyL|TSS><>2ZPc-b%XgjS*c#-PzBOs?^*JC%R`<$`ZHGG7-7Q0Th)7Lr5 zr@Mv#P^bSI3jTKO+VyMEyVbKk=iMsWWq*G^vU4c8+}|(DDTvY0qYojk#URh`otO9a z9P`dcWf_WkYG{aw=^<8A%kPcrV>p67@{HB02Q8%6TY=GWz)HxD9XpnGsOk7I4Yqk zbVnsZF;x4@p)y{Po*r8dxYr(ODVek-p*9p-Qc{yWJ?DF{T)2Q%PEi+1R1xi+))dWW zSoa00gu@q#r3)7>w6-rGc{IOiadFe4ZqufyF287`hBrN!-;~ei7av5mY4O1aH$C_u zMVJS%(RE)N^=8;gtN|-Dwv`#OPFa_fr8-(<9gQ-(v~=_4&5~NWsn)TfVu4PEJ%dfg zkiJ-0_LbK$nlcU%RVf27P;hOy?IxbhB z*1kD`J-j2e%h2JMq5dOK>!)l`lhBgTl+d6`r>%h*M$|2mq;5fZtCFCo72FR+>cL7< zTwPtrH*mS4F02%nqBs@^of)UrqzgZ#qob6T zj>YDCSg*}CB6h-#G)$*>Pbb@Kod7+ZVyCu99n+PHMd}?~COtl$S^k_j4y~5C4l&Wr zGLT#@y)OZo<{+!wwd>cf1qp^Dgr%eCFiY5AkOWa+VybuVQndGObtA-~THQEi+eq7Q z9?RHiJ1yWY)41cC?RLSwc{7a#jRjN*bwG1{`m=M8NNB3+#*MZr^pY^$ogDbdgJ}kw&t?<{k^wt zEiOLSzS!P=|8wo_D~r9THZ4Z~yB89-xTu5FK|u86P;)ayo@f@Ph8T!v^oM^ocA->) z+(Jkxd~*X`NXe~|F|AoZ*7ER5{>(}~zmi{BdG5^0%8@hJM6Y@kuCtZ*>KZ^}${f}) zu)&jLU2_l?d1?w)`3qn8!Y97?h0jsz{9nS>7ryYhFMs9BU;gs%ez{qD?yFz>O1V(x zRsjogt6q-FZF__(=W-lZUR_ie@c=47N6;s2p6`lkc6liPrtPS#GItf6t#>o=PzNO--d zEk%*9t~CQS(iqa`ccL5@yb)wc+DjfnN*X{(0LvsUCDPx|f3<~%0%&oU@mwPP<;VyC zL-fzaApC#~c#WU}c85hu82M5wZ4792)I&NLt>wzGx9~RR(+f-m0JHRZK-~uRH8+$4 zMK9-dT8vU-@HY^!Ig_C?sSKS;<8EOCZ$=*tG(hnCzOT~%g7ZodlPHx=f*8KC=AUoibz$q6X2!4>fTRKD&L|aVMg&VxW6kKlM=VPLkH^G3On_ zgu_Paj|^cT;((Ft*E6uUVg8+ZKduJv6Oj|STI9s)#y8@*6SZ6}lEdwcebaEK;BKbWLK%R3_X#afWDZR*qqKxOiaKWqon76 zzUC->Fm*JY&IpGN37O2oA{4eY=F+HhbEhY0H%C>G6_%+#U_<+U%L=KK^AL*`ep?4CL)4KSRR`6RPrhTadc zEfz~r3RhSxV*U|but>$>)asEr9Vc-nHoZ#Uh*3>r!BeNor*LOZp_I$DQ>Xg-E4Af6 z6e?XnUy{0YP?l8SF)doNwr+~GT3XTQT3aUr{NF&?VK8-yX9BGOL$o9M7&+H^r2+O6 z;oISa;R;MZHe0V}uV#z&V*N@zd*w>~DmVo-3v;jDVYr5)mLwJ(!*U$P#MLp--z5JQY3?8G7X&ct#zV^m{MsHk9i3zGSH5YD)F4t)ocKZ#XS_CXX5KyT<5%{?1Nr zauWVEnZ)GBMF0GH%#ElacmA$n+L`4qpufWym*Yl9y`!U$Ok66<7NWUAfznU=XpUW8 zAWyK*7gF$R)~Tul)Qeih1!4=MtBzQX<&GVLOpj^<&D30h!_Kk7v19vVH(=s!ka!Fg z2COC8wP9{QiDC37?)v`yxf83o8nt!+>Hunb6*ZJB)a3G*6%o1fWbow4o7wu! z?e+E9n>V*-ORxN9xOB6Q)&O5>LxZTO*V||dwPC}Co5iae(6x9&1|~j@+!Qp0W@c_- zp?kis`y!+gGI_Ck0s9LJ(MWAukW?1{4E7$aT?{zOSKfHx&*YpKeugB`zH7^Se;F5T0 zZ0ypQIEGRs_c2Dw0F0D{-?L7atY=A$6|P<_;aws>;$pL@*eO-MA6E!QQxW4M?VN!~E?Qx`2_`S`62&l_TYT64x;>YZ3CC zzJa~V<%Zj+DCA$*mzA#PR+g7nuq?0KLRjQgENB5|y^yj(;gLrkDdZmU7QA>zyB_Yl%-=fAw&?F^ z%H&fmcJ#|(RB7v0(#ezebJOFP=x};k*s^7H^+axUx`V6bAaG<4V_2;Ynxw}Y&e%9D&&hB(Y5@7s zO08U}k!PB{IM9Ep)_?o<@!N=$ueMV(3F~ASk4ZgVldY}!cVQB!U^D-nX3Zq|bhBo} z^jnM$NSJ)RnOtkviI*->#0_LHVmlAmDV{%%3EU|e$a7@mym($5(Y8C`pDSI!!-``6 zj7A~#H?-R9g$vni14qzp)IRK7xS)lGyb!%`^}^LU$f51fGinKLBIQ)K*S9~m zy#yOVIt@@f{6o!yl;-T`@DOH=Tc4i*0*&-E#{0Pk9$0?nf#v6xA9&#KVR#m`3VFaJlq+yFBA3YzjNVW+5~%_VS1V{7o_(#9e<${4c0Rjr=giKXJ9izv9 zv4Lg%`t9qtV|oX;2kY0vimumEGJ?V|Vz?i$W;#ug{El7#C@Y>jH;lO{-!?q_GPXK~ zpJfdd&V zp%Nb%}LDL!We*Bq1MRjMhwR|WuUtx ze#U^Vd0k{gFG{fU+w1l1Sxj=K!^5N28ZII&@8U&jE%EZ21*%2MYA#w$?FRUdky<$) z7Hiwe+qOl3&&bd8`6hSmMC}CLIk>{frEk@HJJh z1DiT=U!X-OtrJj)a?%vGoLb5WWa3P}Zxv>Zv81DV@|O%frRNRke>OFxT?>4fKX>+z z(Rt(oSAcn_q`x974R=)OQG3px&wn;3MbG0gg3azcuSlXq-rLSJ zq?$arp0S-5Z(@QR@MJeBEqRBIF4i$$GU;H4i=bS_1vvx8Mowqsj4(b<-rFXOUtG9| zxB2THZlOt*FM>gm7cMqkT>d8r0Flt~i?8w8k80OxwXb|lBk`Qz?COFWU`C;+wdlB~ zNAFLtWI7zsc0(~l1xkUN5Y%*;>}E}fY&7f2)zI{qHd zueOc>!!erp4h-U}sn_q{jc%%pzSRiK(@OrBkRvVkQ5JzNfk;9$rGsT?K`3p5#S!uk zKdgJW@8O1O5Et`0oh}b25lRVAnm=bIa~;G_$PZdH0rIykB+fYlk@B{3WLsogE?w4a z^F686%;Fj+9-W<;eRO8+?An>NYiAzCdhP77W249J{mVgc2;3-`1W*ZuQQ(Zi=rMo| z&@s{L*T_3ev zd>9~V$m?CL6$+42Z*G<;d^13AJ)9aBgVhcjsbM}^Xr?54!jrXHy8jp;%pEdG{F?a!M}htAmld;ue{8_ zG~VT(>CnMKl6nUNQ+d~}Z|tR?f^2{P;KA;L2N&kyA9T;pgE~Dpk6jrD)7|O3+})ke zKbe;o(hJ?#@9usQOWtaQRhs1AL12zLTg6G%ifA4d@_T?kY&>{l`5t`U7{J_z8F!qi zj!4y!vLuSpbU}_v2r7(#y|IY|BVGd}u2Ut9T&meh{>Y-+noQb1B3}h!E8*5&EpF&~ z$%!TkHB{ezvz|Agz1FkoF~j|b?>~Ixel(Ob`5y{r&}hMi6SG0X*k7VCea(v)tr)i) zqsNhrJVCFnDJ$Yo!~ueiSOIt%lUG1QNfpy5@b7Cg5QNB1r^!b3gZKk;N=FP%piW`f^xj1esB3ybaN3e%)yFs3BN0I}M5&g&iqQR^`|IcDn|JY+t zcG;wM?VTf3vm5O9jvbF>lO=6QYx-kWQ=;^m68URZCzP}!dYKL<$e*xa5)wquoD6^dAt?Cm0B9yUUgT z2BRoTD)}VC6Hb#?E#*~`lFbH!=4K;JoOGJRP$h&QO$Y{Xpjilo z5EqcTsI||3mhS1v*9E|rz$6pU{IS3mxn=??161C8KZ;C8^+h|eKbM@FxWjz-8etWZH81IJdY zOy0wfRxRRW3&$66<|$@S8DkUAxp z<7RTDLo8z2FjyVh*-U*ZcI;TJaLijcR)}!GCY3T4@H=HrNp^K^Np^N^0khWyJ{I8< zgo*f!oxw`_o*Mv}tTXVPM$Q;c1fC)`9?DE>LPu!9k8oZ2GT4o6a4P^Vne_}5TdvV< zavR3m(_Oy24O9Oa;KJgC`KQ2xUf%j$T|>y9HIhHnar^cAxlw)-%kAgb{RJ}EzOQiK z*YA7jKD@tv-+j@qzx4HQeEJ)o{|3sZ+qCqj1N=MNG`FMQ5*P%0u<-ZRn>`k%p56>{ z5U&?p@ z=-A2fU$c{+qN_jogH}x&HRGo3Xg-J@gND?S;})h(5a{WLEXnORK_nzg)1Qj|)SXPi zpH9|yY{$_k2J_HNE_Wl0);dXEYsGNw9B?n%=leQzcwoyRp(PM~E4cP59hfwIvRyaH zUFY9yiz;CK3$bhWHj5yN`vJSQMaXB{a{ZA?f8}Hi2ew_lTyso0rVtQk--<^gMjc2{ zyEJ;c%7Ivp^iQwLoH`Xk#Bg;K#(cGc*D9864=?w5mLDdwHpa8OX%mmZS{BJ?S-azv zM_ie)F3PSiX7j zn-|Ha%&;Ch#4gFpZBByQITS@ybclbiT|oFu>grMW&)fN8Ge#E`ySl&_1Mr=n{;~l9 za;0;G(gFYq6GCRfhZ-npLLfQbFp&`^CItS14MZjN{d-}Irj6&s1lb^em^UCC1zC&! zgtxVa`y<=r)Ltn1qfjcTy)yZ-kz5wZif93gg5-9f{m&YmH`w@%IDFVRLq26hFrjwu zpUCSS&TZRH)*>R^x&`EM~Cd{;p6Do;nNrD=})9DQ9u|t8UNv<8F0{>YX1FoAT6QD~CAi=?X-+Km^ zgwE6C&)R@4%4C$)feoeFDJ^ib)?oUgnS9$E{Yfho`VD#n<1YZ;lKAwV1M}pIm{&b$ zI?I1?-U+RUzALaR>b-w-FKtB>9BOX;W7#_SR;v!#3+c~Ie`5lN>Pe|C;hn5YIQkfz zmwKJNSA;KiNKY16Xj6>w@EJ-MESE>Bpkd*3iB&`-Fl4Bv`pVleyNGt6y6(JfOIOmi z#g^PCR+F%|hb7u3@;|cbK;IIxmFWbgm`Sb?Kr(d8^YbLw97j)?g#~%Od;T;S2oN^$ z7=Sjo7Pwke6WQFR!R#2^e)d|7wU=>;*P_?S7YsU<-OnEsj*XS0${6U$yJO0wv9hhI z*pxAt*78^xM1n%TXpq5%iDjEujb18~x|RR)Hl|uG+sJoJnmX^(aUjC9B~mBkMo|LyM)Wz?<~fv@VCEp_r!n z`^j}9xr>b2NWWMR%heinZmwL#&zE7Dkmlj)blD(4ofEW7kEcwRTe)!>&I*6AMOUfV z$j4gv54UJ+rGGgHNF01AJsmL?Y<{bn(%tE>Gi(+ zYm3x+jG2AbZa}}I#im87$(Zy6_Th+H@N<9xy{1VO#qI>1Y|lHV!qyF%uw6?ezRS%)04AMoStv z9%(A`Ff-__zn6GB_wAMUrV(r`+wg-M%W!L}(Yw*RDAC_#VB%`#A8d;LX{ubSme)zZ zOk0y%wo1wpx@2uhD&!p zh1c;QUblZ!^E%az1t3UBQ(vRCZPeB?=7sdk=4~mq!7s! zYR!CuNLp`lBP%AWBKZW~rHZK&+=#fU$!sITC9Cq&>-obnom>ZB^+E@&ZY6Iz_)jry zlny*F8E|Tn_T!uc)-_4~a6^*Pyf7~}9hGGW0!<$U{F3LfBhwf2c?iTJghQ9lzm`Yc zAO#or9Tt_OLl%&?m$$AO45R7u^3dPcp@4vU02W2p9GTA4SSGq76=Dz%C z@R19so`l|5$oI($3;BF%;dGu_&n-NOJb@^3()5^-GkCI0O-3q@Z?jiQ>fTAO%p z-;)n+x*`^JokR#2!M!IV6)8ot%6Kky-LN zrx%}09Xyyy9ZbOiCM@pDxIq4*Ta&^JK^h_YJP0>RN2+b^j3AXt$Um(DS&)}qTq#*C zrl<)TAu5clJ0l)SM-R;%O4Dupwf4 zCR36kYr5!+X_}jU10if!cM9%+WkN{L3lpg{ra&hBy6Jan=J}F=|DzUgw$P=>FQe8l zTCKUn|2dBqL+QfEIWr^rdYz4NNL&DNnUG0#gZW>b77jTKRz^QXzHO(G$n>uXT{82qLu64LXG8 zqY*cBBmxvype=7QZwymf{!+_{p|~DUiHqymILBe!YIca#a|oUc>Ep5ZP@HFUMD8N1 zX8sMGVXP{ST@v|zUWe2c1T>r?c~1xb|E$g#-x#V)FXB(2>2sm^3KO-MY*%2u~84xog%-lxfS*paf3Iz+<{g^ ztXuWQR-^F{|EEUokbLNnOsxy1k%pY{`OsZN7{v`B-?0Qimm~1&g&U4KlZrYZd?_K5 zrlEV%%Tt(WMVH3Yj!FiGAbo)$@mBi}Fy@kP>tRiXYT|qtY(N0$69iux5j0A_&nMs~ z1P2>)7#Yl!jXW$Qr=fQ6pJ6mp=CeqH*Tdh?Gp0>#rcpvQO`Jatlok&HYweH4 z_Q&|m?OH9lWM^XgZ`?5L6c~_oaq?6fDQ(ik_-kecu`ZT;%WnRzMaNyg#{aQPhxnTP zXH!tq&+CNh#wc9-jpVaBvb&w!(rK#CW2!ujyZgl#Uz~ptjja2{`DW(Wi??nqKXB{* z2Oj8s0A+c3*REYHyY}tcHPhU@Yi5T01*ZDaf|LOOZEgVt^IPL}q4%T;Y%|2i|TH|zLEG#5UXlRV%^>m--R(^32K}f{^XJ&VSpWQXH zXV>hWS?V#(EP2Ds&EVJ`@?$drjQFaE(Z!KK>Oea1suzri7YQJ_T*14#N;F*-AYmX% zTPJz4RmK{bAGXd*og-wy;;(i#vgedbmtfMHUc2*+$){iMd+q6`AATC;(D;0M{?L3n zGoG411b=QXkU4le1eD2RU1Uu+`O6Oe?*s;6olXG!r=+L^ULH9bVrOLpdQ?%mTrOn5 z0R|wM1dKm_*MdQ1RB6f1qOCQiX2F1In6Lz~*SAg7!a|5`AKzbfxB}o zwLY0FCX?WQi^zAmxgOhyMkUE+y#Wa@@H~mRvzfKPl7Spe_7Szk-`CWaZ+fi{mZu4( z6ZCu&EM`;Fldr%28V=|4efd6qwndZXH+X0yko<)vV`}pV(4A0`8PmUdmMfYG@~8`^ z5hZ`p3K5;iWX43|((ePzszPB`#zt%*0GTqdOW6kAJwm?UCD=m!Hqa~tBX|KJ6Va&2 zl2EG`$#}4=Nby7l-wtg{5C-?L9gpF_W3art9wi^z;Cyrj#MI2A5FbkKoq?_Jzx{CU z9_00bjd%9;K8qvR?+kVT2r9B3=rzDd2l=Apa^epnTSmI}RNZ zd-x4*(^niE;-g#C=u!I7!RT+wGqbZZgO3jO4jw*C%^Z7s@1AGz#mFDrki^;Fw=HxuIuG5)XZ{4;Iz_3QixJWT95h>N2HVXI2N$?CuJJ<{Vh^douoR6pSj za02@1P=u^CGhiZ4<>%>}S<B zfA4Gj4`D5eWpS^xls(b?PI!EA{K-OB|WnsEOInw$h|!p-RqsKd(Mi=&>LEKflCSHaIHxe#>Oa{SJwlRvM+^CjcFqMrpiFc5Arf>1L)DNj zWR{~)SMX72@*=C7$b`umL35k`j$30SU%KBA2;UyU#3E}oL-+3J976^2X}2Zk&4D|M zRUQhNhq~cEep}BWX&O^U-reX&W*Kt$G_XmiI6H4Bz_1iz%N8=)9KVdj@JekPVt*jx zF4rQGLjI-;GVn6_SabBB_$?g>E{$I2ugXL&>x`0zrcg6Hk-jwn@e@7DSyFIL;~go>cWNTpXt)kiRg|uFpA=Q-)UIl)AM~V zF1+~S>4iS>BmUz_9UMn;3}bmNvpQrfm_D&tyTMRITnxV9FiVcL(XvebzgDy!IfBbY zm@NmfURsZkTcn22H?jsM2^k}={0x!2J4VvO-)lznr>`B1FDPPU#IhtQfP2#OU+Raz zqlFOjWsjF(5Kn)k@K#9uk>+&}j7RuW4jM7?CLK~0qMs!1lML5#$lqc4myBF4%Cb4~ zLL-XLBB_V(awBWM;d~-^QM+@PU<^xY9} zhaHxZ){NxPAqV-Iiwv}i%#Z^;I{*NtN3}-N!}pW5227Z>uN4gb9-+~dqzo=dQz1gD z0e(1A?C-VZKL+?$tvc-=L5R><(mJV<(|PAlIw*TD@mlGam8=P!KqlDA%rht}E6+T0 zc;%Ug;mp0(@^tj|r~ABxoL5Ut9OG)oj*(RahXULXGALM7Y+%U#E^u|^RF}7W7pb{- ztJO&PZaH*w4yYHX$VshUVM(#}x9VtwJEMTN_<=j0J8QBDMu+=cIy%FVrk}y+v23n`tZ2xToJSpTF zl4d<{M3UU@V}Knx$*MqoO6c6Pr`PRvBjaq(9=CfBIf(e6eP^_!F)#0>&1UkF)4WG7 zfXe|plSfv;;%i#uaTubAFkdKdu$!jXU5TB1|HY^WLc;{Y#AIRtt@U zAaBpdg>C))+mP&t+0r%T{0sLAjpj!_vR;SWM^f5+=M4&j8sxYoWRjJTJDpvUOb#cs zog$ca_E76+H9;0F^zGZxA0f){ZJS$fME8Y+K9NY=wqE!g`EDDBTy@0EpS@2r#lN~y zvu*ju=)I)tKny6GE%G1lChueT*E$SHZPgYvP-f$Oq)*gPrsoj8rAWG4Ms_)%YjQo* z8>Mxl%U2Q2b%;2aC?=WG3{mgupvXtM!TQ&4Hj?8?=xs}1ae(4w@}E2VhcXy=5Z(wr zObziJ_r<}253#_ku)hL~aQZ-of7(Q64v-72q|ywRYyp1%!UDPnkaI@={K5GJa&^#8QrzmaA>#FD>tkct(N1FN3@q?JMEPL^zRSWe5`2SJi75KFUR9-R+lbW(7p z1mWfu+V_}nfP72mOe1R@*+ejWXMf-DNWqJ(C8G`-rhq;OjTphRM!MIwZPEU11e30o z-$Ys&Vd`b4A4hy9{nHsx-&e2JOB#~j#FdauQ77B`WU79( z(LoJKV|CJLBOfty=0LRdf06Vh08O0f`!hHL6Eb--3`qzO$pi?7OTrcIzyOge91W3z zPy`gksuivEpopTt8QbF03T3f4vMceJMyKO02x5xIf?Y7-+TYIz( zv*7`oiw^~;^u9sEa^R=$VB)B8YAGXmDKE3R{Bwi=mzjf6;X1tRI&<{ z2`Dd?FYm?%P~{lfZ4A(cd*bc?rcoQSi`cAA6qiNgu8T$rc1hX0c3m7%ZysD!dmF0H zVOI@#C=vA4%S}o0jY;x#DNF<_ir{uM0ZfX=q=8Z_eteXw3TwSadQ3&p^
      7l3U8I@0Jvuk%*sy9h{ezp&>-O5$13LO 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%0AbM&yvWGH2 zF6r4_p0OA4v=qg^oBx=a(<8tgcJ0pDg$*tT&9^rPT1+n$n>oLdWr0gdlUcEsH;cQl zKQv}wj)DPQdP2f9t4&DQvu7;91i=~@UZ-W0lw^Cn{|H3X>#V9E@fP8oH17`2V| z)TNW4{K{}8ezdV31my&bBWUh@K5%L{!^}Xk!G?Dol7MNu=u?O2a9Ji-pp?|X$Nf
      -O7{jag6yAXOIoStc)fH$s2dhS4 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]c~QV( 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


      U)Mek_k z*0fdj`ug>P(0PO|irdw>zgv6n zqngSfo;%l3`Dw~7vsWVo|`d(hrptW#b+77V&y0Q##<+$Icdp=eK5F( z9uC?|WU^gKkp>;ih0XmS#$Jrupr#Te%qJU0kMMs5l+7qjzCE4auJEVo_yJ9!{cFu9 z;~a5mb}`+3Y_WTIeF(6RFv;~(4bcu=wpj1&U^#YV|d;$7^-r+!?$=MY_(xC zd-2hE2~{H&9}p_89PkO;)Rsfj(z4j0oZTKNg-|CjB&Wc2W7KMi65B1=0?QI02y`Sj zZh08nBbpx)5eEddQIAv%)?R5tJ7_U&2-b&MTqTHh+m(#=lRRPZ{czFMkL#TdYF7A0 zrBR@D$%iOHXtZ3$-BT??9ZWh)5HB+*NN9?K@P2x{)nPMHI$nu*i`$0&muW`}W-VsQ z#N(QE#HTthpUPd|0#F?h?qFK)pS0b3kDi&{%pdSHKWRk_FZPh-{uIXV2n&L=`h8FJ z!I^cDP+Umb*x>?ex8%YL5u|K$7GdMuSzX-}Fa&E4Ns|II_<;%>aU(k$np>B!yTHMO z8g@j}y=2kj=DhGeUj#CQ$R*GtR)w;hGiP)XBPv&$k~_-Jn;OESBrR6djMNJ&jYuA5$gTf-*3vmGi}023N98RmhBwfmVFT8D)`lExf+Rs6Auc7q7088_4s z%fy6qEKWu>^iiLvpboZS=Z&4yGzZd5f;(fuXxen`M%z6;95k1g1kevcUAPp`p6J1L zmd)5a;xR-1wk=bVgY?x2fZ_0uY9d`IfPfQG|75!@DoD#b4K`~7Hr&!i^@XYWVqc88=tid6 z`#s)n#}V^$4QZ%%!mNzp3X^ta|FaY}XGfhqatKXKBbct903uUB4Bg?`lC}A7 zS~TIrVU{(&HXLy+A=?}h`E|3Qz>StGjS5RpF50T4FHgB5CuPa*|N49bF1XN;`}5Li z&5tJJv3Kf#G+uEeiCQn!#vPXp~9*73f*ebaRJ3<6X*2S@f*wdGj4{-={3b_}rr%iHO{7FR}$`#`t2 zA_dSI8|i-$aGa=HJUauTOom+^2OjFUqa8bN@lF!{W9-8TrFs!{|uS95I?cF}Uy0-d^%~HU??h=Kpev#)ogzW^*T>J9(m<$Nw;dOR} zY?16dH$~3dV)s%0nij2zW^Hlk-8oQAmiR`z5yh1+{OeRF0v+Xhg}@hS1W{dvc&S0x zu&*J`h!C4a9poMnb!ZkH+EC4ATWa2+5vLYASJtux0m;X1^UCjaEl1q5rAHS>V4Qlp zgQ*c)fHRh>V_xadbL_Zwp<~$VP_KvR7yl?=K54FnAFApxT=z}DhHC}dlXeW)Ky-d7``$SMP55%Q~P1T)9MJahHmqWt?LR8&xH=rf2Z=vVBy2)-)Djb zo<<721>Qkq=9>l#IGmGg?Fc?y4zB8A5je1-KN08eMfe^?|1dy%^&iaaxT&^OMF;us zcu}l`W+2Pcsn&VnW6v_{;mmGz^p=k#ZNbdvq5fTD1 zQ*iUOQCNya)&DhkLW{xXuA8vn9q&s2xLg&LQ_jXf`EZHXO-F3g#%pG+Ve9M!YP4m_ zK2-5{3lLq2oji;88=Yu;BjH$qO%??)fy_KlB7ZX&ee8%V>~mH_3%`~ht5j{$P5yfx z@+JqYw*pog|QEldq!RJQU zL`!YRp%*o0b9WJyWK0m#5R(wOU;z2p?QCIj00ZD(OMx2J?$A>na0kjO_@~OwL@^N1 ztoH$1BbgK!9TBeM(&>`Zl)GI6ZH<+}mniMaEEbv#crdk&fk2kIxg_vM8(L;)pwN(O z+d)f5QprD`mT@KF$C0ad6J*Q~5zvqjvU#$K*uVum(GWh6;(rdu2MezLtQ|>|W~BMP zaPuAIj@ySlpBdM5uB3NI2I-(awThu1Rw1uz{OV9~2Lwmm?Ea7nj$qWm_(qJD9rK9% zOFaZqjgSwHFNG*s2Qy>%3ZcnTMx!`wuYQWVQ_%D@-|Nu0gw*&A28E%LjZYa9!zg^$~ETt9usAbxl`jTL0AU3 z(Y#$a)^vo$G^--&*uGBmW&XRxY=p=Gzf}#lP2~;Ym$P7n8~Te=qULsT_ZU(*9pryg z5*dVwB?7X|qFKHjeMSd9WoE~mI53X;2nLN7VXQzBGCn|oU!MkuEm2W_cGc_%v9B(5 z$s^$tl?bvQF&}-t_EN9^d~A9EG&GfZhwp@;$OEr}-Q76fV@f3CmRMb*45^clEs8$F z5quMl*|*~32=eP4!ZS98J#7&=fP`L)zWd2x6~zys#};Ru*v&xDfd=hw0+Bt0f@j<_ z@IdWd4e{+S>=0L8W>X$;)t%bAS-Y-B|0YHRPsra(;)g4|hJIR?ff&ZGvON&}p+wO> z8RgGurUkqX7erD28;|^{xeb&$3kZrlhR-D7)KIYej)K6v@XPQ}h`k055`@gM^m9lM zL0890zQy zj7`h+<4w^s;avBI;X0no{W})zAUbGMV~l{Sq31w?7n>a_0fu7l@zZ82pZpbJ_Wv$p%bV_>Dj&ksSj(jN!9(2&jB6&}OIkIjdJ!6bV$~Qs&7eD>%vxI#v?w}4^Q3#pMYjG-Rr=g=`QQU+-oq{nVY7)3O(l1DaLTGDVlXfN zLx$|O`pq|S*jG*AugprJ9@^-(Z6TE66n6ZtmY`Ul#@{Q0>G*~4;}>cSP(8KH9@r8GA? zF&89LOTt!`73bu+p=unNWJkDprY`z(-!VO-4Xu9w5H$l@qp9b}O*<*_kC&ugORrbV zeMua=8M$gK|)!jcT%^?5Q9>IW;O5A~!Jakf?u&x`-2(u&<@?ccO?X2o>qE*7Wvx^&@vNS zH=j{m8$@BkSuCcYNHKYwuWU7z_o6gB#@q+X(i&s+&KXi`af;CU9uvmG4B2@4r&(*- z{;{*m@*w_@MP%5E6GhWJbc+arKej19QK|T%`Hp`AwK+PCpFfxXA*2mRlFfKfkG$?M zE0x8cGx?T9<~Ah>n=&QLzixsvr;CTAu!E>{u#d(0{#o^n=pY-CnGL+%MDfLQ8W`4h zH%bdly)XkZlSG7eZ`5mGcZ_T2^_fBcR&bm{Pz_olHe4{c0v`XKkk+|l5pFGk>Z;exAFS%SPt9}_YYw1-!twmy- zU*Ori*RX)n?zJd68yPb0gqEZq-oDdt)J7NkA}>qcSH zaLHpgK&*tnKb3zm&C`}F?Zp_rzzl=45r@oe>BA7(k(AC%%om~{#c!j810D*oyR+f; zIR@(VO$b=tx{9ZK5lFdPEYrg;4bc7ktHvxGtQ!dk0ws4WLu|P{Es59Y%@2jo4<#It zTV$f>xS&u-p9_&I3Yz;caGl(e!}jUVb2^u=JuL-H&#CL5Zeyqx&1iJSPmK1(_!qmG zehrO6uIY#E`q4&7AwIoQy(((==^t`%=v2NAJ$Oi`KXrVnHXGf2Vt{`hOHS?p>49Dk zqRuwPctv&Om#;B_e@dfIjyCcSPBWGl!>;0Ds>|s;l{8l$Nga4igU9nMT=6jcj#?nM z!e-l-FcKK||MAy-CpgXF14NK0DnZfWu+^f5D+ahP2^R%nIk zM3CdkU61O?CjLnq<~aOKQ60j-%L_bd%wOU6RX}B*VI=hLffmiMn9qC@!XCrhqo+9* zDVhzet5L(V04v!xO{IsQpT{q+PkIdkvtthLEio$x>OhDsO^ZHtBYhLVuX*~b z3(Or_h;9k@@V~`-u{=d7zTyuo+}TfI3w3E{*ncHzaG0V zh6wTq((_Nfioef5Gla6O>jsX7z<;B^37Ek(S^_D-QtGGLQs2-T{+%;;?c!lzm*A)h zeAVe8tl6a}cJXI@$%tf&L40tHQ;1=FgJhHWq;v?1o>e&LV>cwOd@+JBCq>YIG_Z-u zL^5#pF=$XY82B7L+7iAoLJOe=gi%|m3l_`{i(v2 z^k+URR6crJd`yp66~dT%$4hut{_0f!*BH;;?1@QP4l-{b(Aj5>9X&fY&JsJPqY7jP zU>tlUA=R+E-Wr}CJdUZEYa2{5yU*fio&tAa^46L#MC6kI&`DrvTsnlUn~O zBHvXoE&9zq&ujiWB}?ZY&!cYs&k8vqkEC7X3~W?|tRwRe;u7XO4OI=l#RsZdA6Kkh zuqQME>hxqAB}Px~egOFi%anx0&Ae|(#0Eu))%Av_hRp`E1s2OlgH>X83&k?!Ba{YO zuL(SoZWu%8&s;rAa}ODyZP~orl3nO}@I0!z#?o&7P8Ev8p2Ub<_=q2dfR*2rgb95~ z^9EhXmWT8T?;s+}0|G`$7Kf#8SxKmvMBD0YfJj0me;UPg@S*eyZ*|_&Fb_mW`OspL zl70Nu8PH?y^BMd{?fR{!m9<9}SMftr2byw86)4M0-fTvY8>hgxsJ^3m_&NT#%0CE6 zNsEV}M$vHg7Ntm$eFgFsA@FSkAm@b`zE1>pUV}lS|MjX7OI|oW6HkYpiteT^pwE+N zS2pP77QjuDs4J3oLB6n&TG&X$1>YtR$b<`2JxQ~5+ZcpXW1XYSI&7EQ?&T3jY|RVo zi%%HD8$_>WSG|5%|7MET-vHx>idMnSFq<+W74? zP{_C_V&4xRuHgH8!y*f9gz8n}#84BHCU;UiGtkry?X&>gdu6JVgnj1`_CLRWR@#ls z&~B1w>ESpWRHmKev3ppNtzYpamH7O)Y?3+y5G4`?ex;6ARQH@Wk;sr523(PXri{53 zGi#1{5|(tWLE?ykF#&E$~~0G7P{ ze(^mD=aFB?8#+Py)$;Ho*oByISN%GZ^89yt+D$e;I;}+*b3|zpbd3+uE>8N#p9HoJC;UNxJA zhoAPFUBcvD?hQw%1)qqRaPuWlHjo$dGn@561-k8b>+xv^A8cA!vg=Z%`3RJh+Kj!i z8WYGK3eG;2h-Po%IEL<|DAw^i0{osCr2M9fpWPCzqMmV9Z|vvSS4dJMeS-Sr4gSUQ zGpf@m=f~edj@cPR>u~kEOZorK&cMbrU2Kuv>!2?aWriZqLyOP|QT@mP#tedL3Nt=79 z!3|$>A)+=pX=$~?iTbh~WG4(>qIlO(LFwVt6yA0kZK{rSG=AejlUJ5#Iy>U)Gi-rM zGEY9g3Ab3=m1E4@#AAL~BJ_o@CQE<6!eG$I@?!8?J{PF((;^cV6>=rjkZLCQzU9#8 zeF|lTgTOHPrBVL<+EzqWO+XFG3}{RmzvfW*!aDw?YJN21H7{rtJH}ZgAqeJ`qbpEPOi<6InS6;*ibu$FD z`@<{v>vf9rqqz;C5Nma4Rx*~!#Nf%iD<+;WTg z*bR##CE_OxcEB^g#n&_T^Cce3lLjnn%+!y~B$ks_9JUa|x)$ae-4zxQ)J1m{5163d z>yjdG(5M>5Y24M4va36jJKU`$p}Dgyu5+DANAK0Kq=ApBo{zzi=ubT~ynA#yv zxC?$$a=Axu9X%BrL5N|HaH6j!_xDi9^1CK1ey9^0$u&Ml$)FtWk9ix$K! zu1CkbR^#A_J%-LWg96#Z&=&Hm0Q#HJT#4<77FrDd{Lf-Z9K^wI znQ+8)xWOYuNw<7W7hdH{l_l`YO84Hr+>q#sU2 zEUFG#Zea1cRHQin*_oiGgEom1igLCWr5|z?eJ&o3OUW!>y;2olhs!$0jCiKlv=Fc4 zn^xk(ca{%H$~Y^)Z#oSnfmTF|$zucjhrw`*Z{w?QS8p!BqPn1$FqJQe;s(z2@fQOA zJqb=lYO>SRY1%>dT6hfY9U*jJ7p+|#xCVesmc+XS6Ra6Ps0PP&bDCV>o=YUwA&78i z`4_=Xgu^KC9eWm0F(d#+sivzv_n0a=P&)oWxbPDRa*iL@C%nYwg$(Y3)CM@ZnG)ew zEzHOR$Eiqwn^BJKy0t zm_~W1YPADHOl@jy$K1#ohF!5R$q&@2?uK~b7R!!qiwft1c1T}lcmYge$?`AJ$k<}(F65kQ688!}mZ0F8UYm?DsmoL3x1LjY zGAXuOGXXog`|{IJ0k~9G9idLs{iv1l=cgO_Xgfwp3#m=|@>B-lx`NzF$oScb9CZEe z5wm$v4NogePfp`oLM`wf=}&h)+Y-@QYru(lrMgAN3Vsc!;)4mh{X0o4V5=l3*415E zh}q{>A;f^bYYhZL+dW1nOhn-G(ajg~wbQu?RwpIQEo+K>2YRuEG>5IMr#w=G8rZrp z9}AJg&GVAGFQvgrPf-Ljoh=04y2SX%SxiWVFtL<`I9i%=zXz82N67X$Mr4u8A{;XP zo*DeV=cUMDmyMG9kU?6G$zCqZha<{OkMlfx?oms|Mqpg5$R#@`)*$(1cYCv}2J4vB zNSxruz?*eRr2_Byh+kS6A@2y$-&+t?D8f(U`Yu&>t!{CSxI-2MOnyYdkedTmhVFN5 zLyW|m?vcOi=hKkWV3^ZNApav0c7 zF!y(li7w{wKfe{6r%H8JqWc5LKOFNRuyg@Eu)8eg$eMXN%?(C?H8a^|syK0u>a%-4tVV5JQn!qMX zzylq9;PkRvxmm+FBKCCZ6||zpi#uXH)?gUtg-=x#DvI!M;nUVs*ZY-BG{ScU<5qix zlm`My!Wn!?xie4X)fT@m1lEuH8D#D+H?nK-IyzN^pibTnDbsbMtuQ_JnQ}1Q!E09Y z=^iO=Z*=Gonh>Sk8m|bbutW8LD3o(onx_woYN8I#XipT@keHb77`>Jv-%Tic)R!L77M~=)PoQbZzedl7$fEMmt#CKLy?LF=+nN_ znh0kpGLfdofx&sPgdvB7UfbKTsMYY5$*B_t{pnaexdv_iM!lKiSNU2Iv+Gg~4B}lyaW2*yQ^eRa4sj1709cF!zF%r8Ga{#hSpmvAF zKF~}xK1)B<)LtLA=DoNch+Q4c1-D+v%)yw;Qw`7s`9+}qUbI+@Q20pEr@uHah6p@7 zVtBy-&o#5z@-vAdD8iP1+rfS@f>sg!D5UteX7o2xov_>?!LVcCML|1=8Z|M-&keG> z3K7Ez^Fd}9t8Kk?iUDEr+t53cD#~3+RPunhxWV;PBgya^U1jI_wYCH3pboL4-OW~1 zvumMy!$64jV5R=0#gXQkXw`&kCuy`6N#>ETA!Qv57qHm%4WV2;+f#S|=*85f?KTSq zqi$q`fh-IgdQ+2^KepXlxpWJ6t45cEGxkH6)J}Sk~V725qkn`1!p}sxct;hJP?iiYm2#Tc+Qxs|(vJYSK#) zPxC)a!Or?V^g}l8Rg2XNd-ff1s^^yaa%+!*~^oz{o zY(?WgHHe0v!}rJeKf+}ldRx=kl-kdx#A*RNcP>VjF~mQ|K<5hLg?1=^d>XfHe%~%R zhD@!CVP0F^(U7MDhcBS!9ao=})cE^~@9wzCq}%|Omnm!5f`e_<~RO%_G> zzWe$7Ivm*VUFd&1mi-$I>Y#~d8GpM5*!3O|e1ts8)XfEfkHk83{=_u>)P?3Y#BD+7 z3$h`pDa*B4nj$2@@A|%Kv{MvNXq}Wn!;r${xL%pA4K$kbG{k2&MfA}nAslo&YXX&d~~4%HPYP2+E_;v1o-OxSbQRKERe1E2?**SgWV za9L*xL?))>8m(r0K08z+giW+epH^!f;*t;d(9FVpOT z&}!(v2+i)}_rMVqWmxWLaIjB~JNO0yxHv!bEy$2f@S#k6tN?0uTV;yGh(1vRdk&A| zzRs!-b%3w}7*D#QlRwZ5?YA^2Bj8J(+Y%CN%mSa(U(qnL4U6zpl{#o+4sX{o^wJIT zXTt3NvGq29QB>#t@N;%%Gm~UGtZZc2d4Fe9-+SNp z|6iEw?(EE*bDr~jKhJs29ODR74o^Gk%2w14q$@l`*ZjnGm9N}X@kBY_J&pgoO=rIT z-?C>0)=f;`&#_DrfeAkCa>V>Syj?av4i&WhYTfGhPxQwVFgz`I+0cR<|g1B=e_F8B`k!T)bjS@ zMA21?umj zxJ=80;iv``EQ;|T2jspB_%|mDFLH77;M(YH)M!8JDMfx1zx)P$e$*R65q!BzTXb=- z;-twM2E6>M%h#-hLQrBq9>mrK2hKftKOz1rOmyK7Ck@YNP$K{;&y zPPl{DV1-_+${k&KhMm+rLGrps7F#}Fk|ZeL4=0CQes~lc-(y5=d$7Wo8dx3K>7UDL z@JA=qM2F5xuTx7xU4a@^K;ly1dE@??vshaCLtnCuZ%SYdHbX{X=Rc{bt(?BiZ%g<( z2BCHU{(n%hP*VcI?GqW3@0O}b3oCC#dIUoHe8NRT-;Dl}1>~Tm{ir5^U}kADF`-el zB#&*nJQlz9ni*Rb@2*YILfQ~o^)vEX54tI7N;>qyJ1SV~3>8GqS1*Yf?&Q9rf7n~K zrU9Bi^h=&xsQFqN>Zv-v!{pm_cURMUB1bwryl2Q^Bm4i%KPc9Ycxt9qo52ojHnP)I z73Pm!KvwvJ^Y5`1+Cjc=K=Nd%y(~!#Zt&Lbz~6#(L4AA8ZC6Cr-)An>19wkq>Mm!j zhsx)zOtbYqnvKn;$yae~YVq1Ss6Lg|x;NN#C2Qcnm`29cd)Ubsv!0M(=9Z2(r3u6Q z@wr;@M3Hm-yGlN_wAKogSm1L>wr2)PC;;129(EH*VDojxOjwuSxEX6|p1w@&q8fNv z*$ebGDnn^-fYgRxa+emnJXZ1%@5>X3aV zAMzM`etM!hHz>KX>n;o0bJ+;Bc2>X$_^d2(!wieMljhGw)B^>->XI5HU=g;lyK}q; z>sd_xE)|3Nda;`$_)KIu>Y#Iy(gv@o!19MrA(u-g_66h-gWj#Qw8nof6YxoS~L zwq5L8jX;oX=XO}nxZ*4=hXs{!H|RP&HJJQd;N3HkEwy zd9W||L&)>u*VX^%DdP^T=O<6mz`9jmy%BLEx=4FKmEk6Zg3ZPu^0@m(kLd~y@JIcu z194koNK5A1RQQXHSwYE-utce!Z<>bbzOUY+G($Y(d1Ru2RZ#FGNialYD*tFEKt79q z9*pU_fb_x7r*?{M!MQ2DfFqSL+A8%b7hVUztxPu!+ zi56TX)e5(XwVSXF`Q4NBG+_^*89V0b(VV|-;D;`I9e+EjvpUQD!Z4Kf4HvfG?Mj*k zRVvAp%|8-@t2n^rJ}|C8=}n#T0Dc?3w@?1vzM@auxoG!f9Rq>Ya8Un@Vvz* zU7mmX%>9+gqVcf=qjJ;LqyvDvX3Mc}^VTYqd#p3nYx*~I`J|KOW|)UA3AWE;iw7Po z{vae@?dH><4oJ}5E9)|S;SQ?ZFkkFzjD_l@S(o-47F8$sp7FI*WYfBZmr$KO#J}S+ zE(YcePg6Z`KU`81E85Wq5Nvp6*#Pn=(myBjy=sw>*b?2J7@%1(;F-@{S2sX+_-Lw8 zIUk0P%VzG-z&e*bAY(eP5(q(s_;=^?crrw+e^6o_5A%@(ub5U{WSOn2hSI!xUi#&s zEtgjUweN^Q_cFP3#04i6(xLgb>xj708uGgbiYgIxOn=%8$J}_ZuezNkJu;2LJCGaK zO1vH3Nu!$I7D#{k-b_{(ji|1JukzvxdGQS2s=1J>6<_kkRP$HA(oJsfi@{%|&5wWe zf#Ef(nU>)K2$on0Bs?)quj8+t_u6dsQ=R#BcQX{IBgLz!0dWZJg;Jk1@23XwKabAI1>3-kGU-GaKx&9WeG-8MIW~8rLrq8ZHq}61ff>Mj8G%~oJz znJT-|o&OA)6D@kHBN6!Ed=aaBpiJ#Q-Zyw+@SM-pA7Z54(<-~>@?%r^S7r{Uz=76J zM}--^4M6D9l42L2poYgO5Y%#h3Z-3|P(R}TF_yJMzEi}5_NmsJL)%^2Kw;XY6iUqsOow(LrpqR|FVtNI>zomI{wDal{T|D7y+d_7lzCY!{PK&on^-bhg zj;oc{#~_cHYc}oUKfE1ttoVE#n9#%gyXRG_A@F9bElYI0HV&zq{zRJH7_-tpR9Q9Z z-X);P`;aV#Xz1r5gl$5JGLBna?fhj3wAL$LLUhlg@AY`1eKGhpAdBY?l(V;8Rd|%V z-49i{8XJoxa_bRwc7*a-@j^p1)RMStf_$AM?S2nSz}?nR^T^f+V$gDe((xk z;ACIPitzpCgR*6$+pY1;mq{v#B^fHI%E7eRjD#kwvA*-i819!t5B(!y6@{?tZ?YY* zGNGg=6n?laP#msF@c(G2`K6|`%1@NL10v;EipJIvQ6S={So#U=X?4bXek8cK2A<#_ zU*Z9O_PGP_?_=?Ft*rU(qFYOJa&HPWFO@SEKXYYtN#fZC)R@KUiH@jQ{BD|ogkHMl zHh6xaaExDTNsaK!qqy&fYM%>xbWmu3|7kpbKtuHIL5U3y8nbGq$sobIZiQla0W1l- z77HjBF0IAFit&h^&guf~Yzh0|tXh33Hw@YQ8^8CWpwIe#*hihLRqeoz)gMf0v@u-h z8TNBUGO9!KGgt8I#|6|igMZQ(MEIi$PZW_he6B>QVc2Sp&WZz2?wc{gDJ5V;XrgQE*81~!G?n@nNU zw>{+#N|OWarh5&4@#d+2;d5??KFg<{WNj)wRNzXxR|7{5^mHA8uu7OMe*B%(yf z=Lnd5+APfrZ(Ir1B0WAJ zt>U|<>!=z(7g}=2(xyzR*$29t%%1XOSmkZ}POP^oo@=FzqV!{koYI6&FBV{`j7sNXf1el%tKM!)E2<7HO{x&uo*=>^u;qQ&r^-eQu9}x!*a)qu76n(Z8sxmEP>A!{ z<-Q_&qtC_ZHa_QTkmCzGCI0HQ{wLs3nrbU9hH&|u>`;OXzO_;bMzZUHFnbR^WPUKWmjd#GPp8t%IkvsTc8Wm1Jn`(Yq?91K6527B`HT>xsRO|7eIN5gLRHxFNef-E8ZOk?#_IjrsHjX#4A~WqHt50gOrJ|r#bO{l^G(l>ho(~^m+o};r zLy0FMD6OlnMY>+cPSgEl6d5WyO-2|B(no31U7p&&cj~b~Ky_jFm~a4VYK<=&sL6Y7|(wb#f2NLGmrN(PA=D&ug%>d8utSZy%ySmTLV2 z8>OYMZF%oFADK&OZQhroTfndCIc;!p9t!oB`YUW#QM0j_uc#x|HtO3nBrS{~D@=Z_ zR{L59O!DaLAU0s7ph+kP^oKH(TXng_T)urF%hzX`{R4BPO=+yaWpC387sHM;5p4rs zc{PIl2>{`PV*cE<{Fjrl)^2GAIP>&0)>@1FMZJnbwCV2C{3qje5q2?YX8*(dHwzJa zTKS{Fwc5BgzjS1<^u|QAk4)o8`XK+8#-hfa&OaE-KpP7OFYqUsas9$K`NJOMuB4Cp z8e??PK33&1$(Iq+j>zSb5Z_S(5uUGt#Nta=lwIk*o;_D~y{@)}WpFM35Bb$)ZBM#a zw?JQWzoFBz0a%O2%0Z-|2cQ>~95&0f_Ep+%o831BV*0jiGOCKshsSU`wloi1*A`-s zb(gjOM&{{S)cz}}iX9BxqVano?zP3Ol;EY8V%?H{@f~GzX8aKA-HT6`zbbr#{O{+B z+?d~9Jr7H2H;k*Y%ZzWZs4ORqWjfLs$F<6`Y!Yg447GHxgp7-kt7%3&S(67U8lokB?ri87zwC)Nsb+6_bj;=P~uU7JnLLp?LQN zAt)dNSEu3T{8}0Op-TGsrh&H=Y;1~^`z0l@$CbbGe=PD?%w+|Bw#ZZaB#K_%gR1+! z8Cb;D0(C>tOPU(^ud9&L7UH+VXKfyx!LPhYP1JY-PwSgJ$U1V_=DzwpZmc^&IA)#t zhVH_~hVRRXB8DY|uBP-s6vL4T6}sv>kp9MhA6R)&XvbpsMy?ArY58$YcdgN@E03UH zWjh7mfN&0D?T${*RU`twTWG~1Gf|{k^xW^T)w@MXljRB?<{dY5PC@;Gzwm$D1sja* z0wdxNS9kWRhxar7@lrT@uDe9F$urdFX*b6;A+ic88$TmGIq*TTha~+xo(pq+D-~4? zHF!Ya-@yps1N}u^TV?FE3r#ofl2A;iGzs~pnsp`Ge|y+Z`BzHSff#jujUTEFR@Nq1 zt`nJd*VepO{3d@X*bPlHs@b z#xIpc+loNYL$MF4u`I$fbm;N{3V@ncrQ@t0YG-$X0*Be~H++Z~+}+Geu7V9N)~OdE zsIl;;RJmh;HrUwo0;E#ozo1GbCdr4>rD3Iv`n6k1s@Jx+(t}mz_=$=13=}Pb+u1)A znrq0F{53%li15~W(l;E#3Qkhie_i{1tshEb_$TLS>kPVC+uNnBoG~;{tDC9)-Oo>! z@~gb=-}sYMdGp=?-!cA*!_lU)5BWMRBwOi+7h2GSlzRZuV2odS8E+1$H0M{ho4yi@ zf@`MM`vWE&y;$cPzvh7>vQK;28@*50&8BA`!XS}K8y|kpUzAvXZJ8Z-&`V82KgFKK zo^4%_75mDOV@ILjlYAvu9AA5P`oBCoo|ftYKM3+YHNGP|q$N#h89t@hfW)WluV^;h zI}#I-BBc$yI(zk9V3r*|elJq{-+PqZSKO~f5zZjht4is+mMB62pgfp-hJ|?eIFuuYG?a zw98Oq`i(WPdf&((1+$f0TZW!58CcKP3=pgsX@!oMgErw#KHHPd^7&r%XYDHM82Vm2 zEC}|7{UbzK;0HEca8Wm_ebFD*dFU7mbeW7>R5W}q1&2l&O*e?x)0JQi$hBL_*SBl; zUR~`{&C*#YJBfX>I7Cj=*5aQgA_#IHs5v$Q(~ z5!!?e;cwy(!Bed92h)L`^MVci)lk)Z8?t3jg>1`JH{hyV!$-nb+)*{Z#3QN6TE4wx zK78^Ld}Boedy~gtvNRrW@s4^V&xVkKl?-&>zn$F$#f^ZLn}brYM%e^B+o zvz^0j$78N;tMSTtu6GvRgZdrX#wr%A--30Lr9Pf{=#TyUi3=gwkWsnk8vokw{+N<_ zK)WaU0?hgO3vVvsmv&GxU_{{IyaPVdRu#HJ^w2_=<=SMfZ-B~E2KmRK?Rj|UUfF(= zpINw+b&*nH!{1`iY?Ghx zZP;FysD!V{RkvmT`K>GX)JY(}nVNBj@#JDSuB$TNtH!Dwh4$6$&`mc)rCZxP{yo3y zN*V|&xCh>EtmENweFw2*D>g|=YgdPyNq zx=H&*Z1B$8Wn}Fvzob^jE+Aw!z>hnN1$3X<)Spl%bSGHr?Op_ib|Q%q$oR7>^`0=c zJVicHHOhaH-MNWd+^6V!sHptc{0R-$eB_NWWFsyB0fh)bJ^s#g{>ufj547}!>LR`nXudBb$?Z@?`=8XTs8FP^i_?A_f&>$*M0r) z>Tenf^F8Xqp4aG4Fr05mnr|IBNQS5VH{aubn#NzaMU9zH^CeUJgSzYL!@u_j52JkQ z_@b$5U&N!+SM@zESIjD@ve|5ysOM|9oe!Us1r)N<93@|>5ij1c$F-s>J$Ppjn|TL? zi+{F1R*LmoB`96ChHjbK&hNamu0-mx8~I6-{ry>2wC^BGrrBI@(hh7e;IqzOY*H8z zX0Q>~WSb51lYv>_yw^h&>9JYq7Her99A!XT_}y{PobO^m)1ce8d#DB3&d8%|ih;lT z%>O8{ih|awm0bJQ?CMEHwbPp3-m%H8^Q&j2--?;%0j_1&&p*oBvEt6h_w`zQrJm@!9-C7XTTk;ZSFLMD*M(MiV!x{I~6M|KQ6e-&K1XlKfo_G5ALNH%bG2 zQrkh4OZaaS{z_LX@0^;Mmo$?d20hYlZEwK3mmP>p?0}E6i;DdAo%09Qt!Xv?fbwER zArah1k`9dI=Zy8(YD{t8{DkDSG2=EvUBD2#?UABtTK6nUj`Hgt^kF{$*@(U+FF+}Q zOY7{rSUbu=CDSFz0nP5HeW8||VpE~RKPLX4FZt&|6S?aK*wtxbleCF9SO0 zeK7higJikCeP{_3ow6R?g}z^h=yFlQVw=YSc8NY1OGV+E$#WknMQGIRX)?zn&|ZwK z0~fZgCs$^O-#z8>BIIkyNi0x=E~2`>B-s>f=2LZqvwxQ4>7!e&JMs<5W37`qV88!U z(r(Ehr6cLaxXFgYkl++Xp6afoHubuu7=mlSe|MK5&#E=Pi7iiL%Qm$6;b1$tSFLQR zfGBvpeIf(jx+YvV!IS7)*>uvy64u|e>zBc65{r@2Izv+sDy*Ez7uUctnCVHl4;y6e znFI~LwD{y5Y>TdWE|A@|{31kx7OF_2zHQy6J8V8$gJmW=%x^yKD~jG@X#X)CF=LsI zag+{_ezG1K{C?KflVEi|Vx9z5o=hlBG%p%5RhGGf5K+WZ33mu<6-!Wb>la0&?AZUM zO8z0|RNHTo#|%sTduDlUQ$j(~rn)NGv@CZLn`Oh}Py+qGbvyt50$ygwcY68TeOLg6 zwMD&U2`q);}##krDV_^swZFin2IHO;tU*P_QP zW0l-FTbnt1A%kygU%AP*=+xg0w+ptB;e2xKPxg~R?F+^ibxCP=i0#;q(|=sO7Vb z2k!0({WXo9Ei6_Qy?3e~weZ1V`LTQDE2{#pfgi(CdyJqXkoL1?em2TyEUIvyS3Jkl z&@WF%DN$6^1n+LEA z3(D=LO_r-~2Lia!Eyfet`A9x3tC=kd%H3edo*jG-`~|M|dD>I0o-Vz~#q9*?ymMmo z!bK)u9`jgA2_oG*=&k{gecr_{xD@u>RIR_kcoM~rWZ8#;74Glx@GbNyk6lpnf=usf zuBBiVS3k_#Ys1PoZ6C5?mSVf+psoE%tHxy3c3AXmlK8(i()_`Hs9kWyZCK!k#M^Hz z>Ac8;tv`Ok-!fod%#0^>BpYIFbL`t|$#l6otPXFxIr!-i@-QnVM*mDY3iD7&AU=iP zqeiEBAPY;e>ihZe?=4ZA5>-<#)@(G@nV0d)z_(Tq!r_7Wdcx%6&c7xkWDy!t^$6!^8KE z^IlIuCB*KP31iJji5AV!IOB!)4lsldIe_{E}yz?DlD^ zCSX%+-Hm0`m$6ovin-t8iLJPDf-$J-h{At9W#x~`PH1n=<4Yz$X}{sR zUmfUXI z!i$H;=?R)9vHE04?U#c#pW)T~Rp~d_0a#qeu=E2S)N7_r1Kc)G zL5Tn95=%+(C_)_wFoGnZu2I!Nyip5D9Wh)Lr3Ar4XiHIZK|G( zS?<$3jo2ZloefVjx{bfEX!J6^b(uUs{D%5!Ink#gKn$G(xnSGc9_?Jtwna0l8LSJ8 zzn?DUD{DLhRAcjBmHEx!8^}x6+$HHVe3jO=UtZ6&*i?6`Kk2GV?34JF)A^Gfo?4S} z{-XujpX%;;SdA$PpEZ%Yy~c~GZdUPZtv{J4ej6PxuB=(YrGR$DqwWs9c7Teyp>-s* zRbS$ZIy`W35})BWPSXNyLI|jJWFPxR`vzq`ta}&}CHyp&7-)C<-B%X>t#c>j1wC7z zkP#c%U#YquKh9G#;Xm#`2v(a^aef(<41QKThaQanGVt^9`A#9gYSZ zGjW7)T!$w$3-{{9M|GV;FyP_4M%gaN@iJyOz~o$OcxivHQ`KBHW$JfL01>f?2zfoGGBQI zT`I1+yl~Ev&Bet&49g}eZ>Ot@gSf3pw!S1TxdN9Y%DQj_aU4O0?_s*JxK^g?@Pkzr z6KztWej%Cl;jk9CYv~4b&BC~nE6OkfXrdcEweVB09u1X&iI;7{nH`0T=$7Jk zoG@|hl&xiGjOt0WE+=miEtfB(<(R!yXxF?Oe-d9q;}|UZ)FCHs1e`Km;>?Wg^*ZVG zJ~?q`F^H*rI|h}&mW!5nbbXAHxJ94=m2H>l=Hi9aU)CijZpWCCw~A-qTc!dOdVKh-mvS$y6}1AuN9o}Cn^h2GNI;)QbNu0rQ-lN0v<28sGC z+4UXh?Gap_A*;TL1_aE%*^cw*9tNt5k)Y>^`t|~7sLYh@TZ+5!TovssB$`oMj~2>L z(rpDq-icpyvI}rsDC=J>7G2tjA*%Sn#1BC{XFG1iAfm-hGHJLpjH3ca0LSDqRh^o+ z#mz8N!slgv1$`ci9pO zaMz7DO)p5YXnYaTA58hvC#P&~Au{%TDrLR#9F6W*j_uA4#q+~THp}An38g#ycO?gH z*XYTbsjMw!#`R`4+tSln*3xV4^?LHmjQHXiDR2D1n>$AwSDf%#hvMeevy?d@oj#>> zWm)&Jz325}-^vTA$MpBoDalmgi7d;#=Cx0;T!v+jv1aF65!=IzEfH(4a#y!~M(H`n zcDLxS^xC`6na)Q__H4vH>cB%`WGQntp2&}~%<{PHIInthDM$ML+24Bg{Fzbq{t4p& zI&-hLDAJP1zvBJ;#mMM8%I=ozh?4(sW2)EQES)ntDVKUvI(9%g{7Fk9-b1<32WZFE zjY{^VNcIzlQW$P8rOvSTw;olpt0T5EJ!ejj>&`2YWd3uOKPx#OsVL=FfrRZ69O%=7 z-k{?gQ%*b1iCiK-Jsxv*k4oo8l%8JufVZc+ztHX611;w6JUOH0$alP!Gs1HB#;tdx z-UkMj$4v+0%6+IbdwVXXR43+b>yyQ*hi~~x{8J02!yqS>*#Us}8 zc;>~3eU*}Z3p3K2$OV}3zGCh^q1Z<+PUH@GkL09XS+>=2hU15wkG$vNEvWA5oMKi+ z+VU>5<8jKp7@_<}O6DE!rql?tkB(wIM*e*zKO$wF(P71Q@;`{^TQib%Ov%Pmd8zr# z(Fgn##6|B)xvg2#m#{VuD~I+fT{-7~((mlX1ShY6~4xHaS~I znSJ6Mi{;lv%u^-IgXTPByf#YjN!j76dZ{TtD;~>6`Ch5$Li3Px^L>=t-9tuhcAR>$ zjGQ->%)g|}AunK%&sl^mWIR6mlw%Aj=7HTg+IuubZ^ln4_?ebRtfSt;yCamlKShT6 z_YsLc-i&WsBh-?}0>13v?q2fc9p}~_5jQoy-b^JC>z_TO#!sLvjjdNNY5 zH_;2alX4l!T%IQmT!Ui`YmUa~V6QTaTTiXdl9OYf?e%6OT}m#}o!Q;9?wo@ucoi6# z+C3tj`=rM@Hz7}>>vGQ76UrgSnd9BztaZ@kTxyi8x51o>-d%XkRfnIa>1C;-s*E%6(KUD1HVQOg>qXM>!9GC3n zk?e<34y@(@`yD0sq4e(a-c4t+Sewj@+$hU^q}YeN_95l)i5B`wm_}dnTELpz$U`a0 z8hNrlaiqvT$5yh=u<~xCH`W`rw#Mm|6Vm5rQF!(*O734uZ;LhZmICV7;Y2d$?zg7L zDf^z}UAMd2ng;qwJE;rJ-Dl0C_nW{xXP;yp_pYDSo5)*WTI4m<*S*w?CWpXnj!Em3 z4C;0~qEPNt$!6;(!1^hmG#18@aW9Cns6}m2c~_S$dH0#avX>4zM_=`3or&>xndHn#(Py9J$QW@x$yu*^KX&Moi2af`b4JSE548Q< zxv)2X_UXuJka-9)CR`8bLfCKnMuFdVn#gYnCX4@syKNF`?O#ZgLpSSW%5yJ zIIf=#>j1nRkC^$Fy!IIuZ;50t4)@26mc+6i>ODsX!B+AG)?}q}Ecewo<$b*r+vs5x zWUPzOD;TPSO|4F?qpZ}srYLUR5AK>eOCCrK520T@v@g|i7_*XkAhE~0C7V7wp_dMA z1*dv(b1eUBFJdPwgb}jfF{%GC#XPFy&nkLGqO2LurZ+`03U};{8DmI#H^Yvdlw96s z`rI0dr98d#u@^Gaj9A`0Jzat{dgGigo=u!y7bolff+RVlSf8+7ue~*rlj0Q5KnmoB zvffl8f83inp-}HBDU(rDCnJUP4@GvKkXkH|?B|r(>NTAl3XubDcR{>-7(k?bhz?G*~dA+IT2s2JH}5*8ynr=`q? z8%;@#CsL7ufc)Ho2+52{5L54X>B$IvJ#5cOS;H?z-aVsaUX0tjK@jJRZt4+}cuWDa zW}`PTqdo83pzS7Gg)2*#%D0AF>c)9U1rT%JmJvg0OPEk)c%bjAB zJuYQmoIcPDY4)&WJmN&2oM30)xs%R4KF4yLEqeh==cnMq%EoYSngAoeP9lm_l7|M#@Q34_U7r-lpRL*-ttnanR*|ZV2+xSr7X2JPcO`D z(R6ZbDf@b9)6zu#J~ld1Bs=cElbJd`$xN-KoN?L}I^{a$>Qj(M0;!u#XS}B*JJQ1{ z!XF0rpwe!5rMSK53(ok~TPk@Ng6veq60Dz)^m*Ncqq zU1eFs42(Oe=T3TX`Y!t~gCTNGye{o=dQQ7W9b9NnPJLEm&&3y_;ILore+EZ6ew+^sWvwc81?L0cibVmPHnmK!G zgXQG^rZ^5TWK#b6IoXd~*{=`HQ8FKunelr2olghgOnt90p15q~kV=TaGsmTLonus~{nfM2g!2G!4d371OcrLVye?Un$)E zKQDXOjI3C>sG&@sRY$nyZssklCdqneov zBeYmPMGPiDR#Gw!v;svmj!)!7EQLx608#M_KU+Em5d56PKV4i$4k9CfMu>9cH7R4T zUejyE?YQO5tQ*DySsqshI8D{fK>97@V~3y%S$WB3{|os{Uh7?O{| zY&)Vu3fU10EQ48q0Hn77QC_&`#Ep0v9+P#E>EI7hH*_&f3?>#$1}%qWC0oNJ2Qcnh z?6?#FoP5-P2DHLC4P(mM83kc%mUkH1N!eh*gl><$lGKDb`1hB8zhxb=K~DH1;l0p; z%5*>-^Nx2SIf|@B$B~9oSttV;AiA|Nz7JSr!BWuB6){a7bj4FZ9#m4md#o^J;NcjU z$r5XvY>EH)3QJKO8u%Un)wi6Fg3p#>;7(fSv`{FVG>)m0t z0?@$N7QgxmH$q@xBv9^2{^H8884+O9pmGHOF6?;*5Tg0L4u!L5H>YG6&>XVNj1$xu zJP0#hfy)riz;MJA3QU~B{>kv1D*+r&;n`nw7~{aSk@-b~q+!Y{aD5Q8B$^EZB&aD3 z>)^4`3Y%BJyGapGvectdf{Rytl-6lz!$lURB+1wVvwRKvV?0MDF5d>D_kQ{5R~S1MyWX!(G1 zDxNX?ca9Lca zfYN|*S;~T_y9A*)AQwT^hGNCxOp23kDKQW|PytksQ-BR<2H)Vp2CxNb3m{dXJ32@` z3;>2O644rRf$_bXRTY?16|M>6o|%}OAnw!gxe7h=;W{zbW4NxPDZyeg;=dP+0*&H@ z3}Z8h2ZdNQ8f*Z}bUY-8?;#9LJn)Y$JW)f-VVtbOMRReHz@pC>J_u?P&&hj1sFowh z$Weg5Al4LIbogAv(bFJCP*HfepG`q;1vZODs&ODe-Ql*7TOiW5d1eJs_-5bw3t)Kkp#K{8w41Ea&U)c!F%vsT8wT882E9B zt}PMM%kb}um*?M~lZ0G^!by&v3ThW*EJPcOEg&1&a65sqg6e@7Vxlqyi~yg_fMmp_ zLiQNop=75Dc=|;XIbdm_Z+YC|VLG}Yj+vN}F6@&m$UTfhj7*GFVBxO>5($YWI^e^* zm?i;gj`N~}8g3NF*foNy8;XhUfr^CqvK15Z0L&3RjR3s>qqvbvq05$|2+GU@U|zz9 zoRm>KU_+U>6)a4Mz!Z)HH9tWd(^v<(d^3<`j2juk`W5(kGLnU;azNe=o(Uk}FwwG+ z#dAq8=E4Wj7HHRsi*tgKAhZMl3RV!py8yM&AOyks|KIO|bj0r^m75t(Whj9*) zx4XF{H1;v&8jN3cm@m)e18#Fx7)`i#ZUwir~q@i6j`DU{*q(5%3e( z5G?dVXkaKhi+ciihWIRe4Wd6nZ@`R*DW{x}P+7P(OvRF*O#z)VUO|J^=$c;Wt`Cn4 z;Pcop1e_`ga1=BsVCQ4sW`$>uag;Dlh<=0%It8!~h#(Fz?J4|aRzX~QGpT}(Cm3b* znDm4=0k^XYY7dRQ62L=XtKJl z2{aLWVvN7&Koh|=#e1kgC_3H+byWdG0yHYVj}e#XzL+{t`B}+I35tjdq>iJ#Q~|SX zLFpj)i~x{eUIHJX#ew4pLI5fX6-1B|#D!oJCnV8LTkuxFeEet^Qz6&|&K5)>)Lsnt zf4}xHTq{sVTt7w@V>-twfLSz${{0Wr8oM*`zaIcfPyvQ;VR#h<6c_9}2!03RgL_EO zC%RcsZpDq6f)K)Y$au_^BzOnlNqLMMR0XodG(in>6oIKr3n(Bk@(WdH3>ree2?Erh zN+}5d;4xl%oueSPAp=PcCtw8JQ0T4j0tw;}l&7-4!&a0Mc>e$Svf*W-CWu=A7|hH{ z6~J1!4oscl5ct(ZEo30L_kVlkF&)D8u)_dH0~2^BB#u!0#pG$2@hU)iS^)!ugv0C* zN`+xoFr~PWgq{gJ1BApOrV`!|%(y@ZDC`&_I)Mvuebxcm;x7gc5)_y;5~8Dg&L4QgJ)&{M1en`ARvo)E+z=*9zknjQgD`8 z0@*;orsJ6FGPD8{AXo{6zzN(zZ{UHdP%*^qurNr)F~r*J7@s7&f7@0VP#xrJU))p9q;G|;$ZcMldEo+QJ2`fhk zSD_UN9d8Qy@T};Ah6Cs@ie3iA9HE~MeFm5dr5Bh81}Hi$biWWtTL|g^o*{(geYjOX zN@%|V!a_R|oJ25F;YtwD7dok63F2NMPz6Sc&q7!T&adGRToih_kcI*oM62f5tP|Xj zI7eA8fYwq#aG}Br$`C54Q0t9z5lUdMGI-jAX&wfY;U{pwL4>I;WhKLN*lU3`q$~!> zq*`MBq&yHC=DIpug#0as= zK?j01M72MGqdHqq;2r|4vMFF7G!dXn610a=fJ_AC7OdiPXijjA!b^;hNEd7wA`Lu; zf!it6C4Nlc@Zm6lx%i^vW8uX?7;rs3AifBtE(g>UV?cA303J@@49cSkc_!4SxS5K_$>M_j7J1VF#LipD>|&>0XFVz##tT1uwkGJT^5$gC{E`f3!qYN6%WrbbX>HI z%b+0%~LzqL={3*b819Xawj3EOKZO=-d~t0?Fnj z{Di?^zR`VvTIe)_XA1r#Iu>Tlh3DFlFYX(A{~sv>d=?s(0Iy){f<*~!3^Y3;pc99i z2F5@J^8!#rgg_B5^ds-X^TiEgYFjsM5IyzM=olo?B?+?Rb3x+;Qn$sEL555`r|{qW zMBt2YseJK=6=quS0?~y4bgSwD_6njD2I?1dAi60=C^)OoilzXXLemh?tVOQ`bZ-NB zw31<%QcQTPA~yVB*taDc>9!)6CNwK17wln-)&(OLbngRW7a~;{-hwOz8xhWzgVO&7 ze*p^r^M{K8kW1Ww^4C?*GZ052TL6igOxDM+v}BSApUk1+{pDKJAY8iDhWMIgGk zctRFymjq{e6n3DPUxc#@2np)?zrQ|a=%8xhF%W^>;u`(`xbO>8{r~?%3r^T^fvuM4 zl(3A1T_zNXF>_Uju_-u&n@jvIro992f^A#_zzgxZ6i^f72vk0WVF=d#@0SVa2#AoF zYJx5#2tQP4LOe1Az>nF9)rIq7F2(!`#TLB}X+kAlo({R0@BJ9(P`4-m;sV=nO zF&~BCV!|mXo-J(B#kf|;kUHGgi|^ujHy64pIAftwOrfpY@OdUgy=X_sGGW7xd0&Jm ztH60dy<c zoe<0aL)yZ)BrpBdOGohh0X*D_I}x3l(H+D`AipfpFmTtDbV2_n+CGFcIk@4?PlQiH zNKC;K(Y3;*g>Enl{H^c_w}8>0QAAjoz!m)O0r!!}f^LApa6D6pOQFLED1vQ*Y(<;m zeqgx-Tm@!Bm;>Q3EMY(TFcher@CK#?JI4S89~G1a)9jpr5I_1UG+@h7#HgSR5+GsX zBQ62&hfQyT0q=;=yM?wSU9b)lpR1?%~0ln zBtno=7nV;os2SB($ccuLZY0zo%vJ$&1ZGJ#Z2J zlexlggmEq#z1IU!d80q@ zM_8DFr{-GnF<3WIG z6o7bIAarbKvMeRo_QsQrVj&lWkbXj$PvANIBwFUdV7Icb*X_pDEh*tyHNtE(C}>5Y zlhOZ_BNV+qc_ui%jU`}eM*EqhWn`{jIpu;So(T#%C zK|x9uA`A`=v!*cwrNWzIie0lvBwt6^Yg7_#l9{jkxIZPto!L3lhjNtkwVH(sh2y9l zyj$=}p_JEBsO<;LqbG4*=*hu~;R!0-Iqurd;t*J87{D`(tAGvfswv2`5flw)(FYdC z3Isk;C{!jytPX7n8vDu{I-gX5h{iE&GTr~?4N9$k-<dE@LE z<9QXB*m*}W3xRAbNE$+5(YJDK=a=PYWcTAx5Ig&2JnTo5TlorjgTp#&eLjnRCO0f3 zKfXiT+~C4Ao69qZO0R&?E<$CaV0K19D6IVRhWR?AP8|5alAS6ZTy~m) zZMbvQv>x}2#EH}=PSs4KuF7fEU{{6|ix87pQ!M}hrfxwTrlQljygI%&t0E-ZfQf@G z%eqto8?Yo&Seu-?Yh|u&pGPN4>Ri$YpM(>IQX*u4hc?794<;xiUIhLJv$8Eko<&Of zh-`X|Yy4TEzL0w-xlnln)de@~)P;>uh|YBWiA}GDT=O>D#B!0&79B&6+lVJRM$|*K zIUkU_vnd2R5{g4A{R`SUsQHh^@z6;0)r2tWd?upxP_;y~r;2Z`rBmz@LX;Fs z2<>R8n}u?appXh?dS`m0CwFvsqI+UAyVC8qg>5}0Iu7XPYz1sLvehIHE?bq#678W%x!Cu9f=HaV=x9`Zv%p50M&TxM) zLInAhGE$U_UgC$O$a(pO2aR_Asye?G3`)eo#(Y@Qz%K_KU1(7OOm{OcAah%T3jgkq zfABRx@K^L^bbg5PU{zi-KGed-Qzm`O;I+h}&jd}NqGgO4U!f6xN)1L*V9bZ&e1huF zodc3O`+rwE6AT#{8+m5+44x-DO8O>L<`pVcdg4MbX9#99C)8REsATMoYr2mVdlpMNzO-+*Y{pC%~^1I+*h=c%`MHJe$ znKh(e7Ssi&fWb2SC#w5W0T_74Q_dTG+W(XNe?IH(+BV7LJ-*-PdA=9E>;VKY-Om3sJTmCqWe{$HYac`-fO|Pu zzX|A#gA+*n{Qq&WGJ=ob0+eH4<(PO`_E)*$J8Z4Qx%bYp?x8#8!XqND;D5x{yKV&H+@Cv0b>xt(+>COZ-#Pgsc#mL(@wZB=vCv$&*pYG zrO{uXjJyTpq2cl$czGX8f(zTpIY7#T6W2Mf$X-Bq_Jtt8KbRYQ-}K`4oxn*${rpuV zzc>bR(ZwA&JTXS(Zm1CKMbT=iL%qbS+@VHp4&&mxHwou)^bpBKqh4Rx)VGHJ%8T>5|3R- z9Tq0s#?a?Rnb|pLMD8Q2^tovKHZ+Ov6389SHNrSjZ+?^bpDYdBb%1RUaZFy6kVMdu znjqLu?;*#Hq*QGsz}ySuqu52Lr zOazc)wSyeO@H_4>j7=B2mC@Pqp^4BAb{&J=^K)_U@QEB+?zdlojKnw)&K2d*t$WA* zD%AfR)DGFsgvHt`yaF*uzSO5zBFo z$Gm~>1>X6;(pw_o+b0<34}lYdJq@sz6jWO;LF8Gl_YXgck>p7!0XX%)tQR(Xi@fhj zZclMn^*93W_=ijQ(IHQclu67KzwG?Lbq`(6g^Dlcz#e7{Anh;24W|r8-qFPkuoue! zq)TjxP3KB(tj1w(BEI9S;b*!9XrtpVBeDC{D<=SJe21)MJc^4>k`E1_8QMmP3+a8r z*c!GT!(ic)NJEKrpkKJp@WCDpaBPu?@9%1Xky^nP%f=!1zRxD6jHS( zg1Vc1uthwK*rC9I3FW|m3oQ8%yV6gl>2A#RIV~|gOmcn zU>xW%;DeQuFZ0F@vdN4mhju?VcLM$uV$=YRi8JmcgUKD0&Z_KtKx!ebL`B3!Fs#m= z$2C0p6Zi}^gzR9mt3q&32(g5$9=P13gI4 zDpl~Ji3GYFcSvYps62Bma)%Z4v*+}>ecX6C68-;!{sRdZ(<{nR#fH*{22OfA zH+?jm0w_Iz=+q#fE884E?eR{T{F7v=F>#sK`Fx)< zUh>L3`tlu|fTeLGKR}uexV&(+-lW0ptdl zgW8-fROU@|#qY&V?t?<&Mjkr8HO@007QPcS*Evc)=U zHf$~zcRwWGJ27#P%@yY2iJkB6ov19wi*~xP+hk&<#r+CBVTcRwOI#kWAWA-2VQxS1 zmk029sy&cO(Og~iYJ|yNMM6vt;|RU9TK0I+cCU%o(c}ZOSBVh94jG$(Wl_utLTZm*F(_lI6yoxk5?7&dPO^578Rz`U*j#x z8f`VNdX?h^)l2Cje6&a}!VkoZ;^AEmeVk{yQm=X?pYB&=8Gl6RW12&k;*l)GBSeK4 zJmh2pPbNqPjgvp)8=|8PdIV#ZhH|YHrDx*7C8qOuG!?&77&XP4XpnaY#p8IqpTGP~ ziTEhqkzSqfc+E+8CI0^zs>d7RsTINNF@IZ>=%*^a0{-`lgje<(VULD29p@!a_Md`c zMC@aEiP`VLLBCDz<)Bl_E-z21g0?S$z2Bx-Z|f~bBsbwpGU6?N^c-F=iL5otqU6=> z2hv}Xt2i#G(|UX#%?wA|S~xkv{E;S|qiZM)sR9Z81yLnCY2;CrwS$HV*X>p zd$Jcbo-B42bz2Lon;*cD@HjN+OhkaawOkGLU{-C_0lDMCDN9+bHhPVMAxcU1O z&b7iKS}KvQplbyWp7Y-FnZx4MQiB(~eQWWrMD$YK?jZldDya4kyz0rmjDa`a>=Ocx zQQ@;fOuP*Hxg2NTo2j#IwWsm1Eb+-=x&QE}a*k~%(}x$)knE){m0k<{-hnG+I=Omu z3u?A(aRa#*OBc3&)HaaEXb&zC`IPf)8rfT^-06Hqx1zg&ht?_;JWoZW)7Yy;i>AsVw%I;KsI^IAk%AfS*iJWKc z{jxwLrTAWOxr!4jv*Ak{`Q8i3yPUtbt)PyqUJR3=!d{gPj~t07aFdX%BrV*o9kTyX`-q@xWr5Ra8~&Qk$elx8X3F9$fRl-+olvxH5}Xv zY+on&PSpeL={j+C@lszvvztqw+TUQ$z4SI{^4q>){}y<|W4Oy)z0EPeT&F0UeHNBUPv>! zQb+l`7q5}M(fSYp-7B6*AIjb=cxBg6MEr=JsrYa*yhhqtgq{`NrsH_gzzZCDv<8M} zA79+lE@5#*>P2mh?DkNxZ-l&MZ#3{DRq9Y0_XFFrYXs{d0q$bxU-VecB{qXi)YAa9 zNr!mewp)~ol#nHnBdDoNw*JBU!=-P@9P*W{#_Xhc3d|nq8%SRtZW7?=!ac8@v291O zE|1hb?NkIQGQ+3QGuUp-Le>LD#O$n^K^`NGF!i|fUY^L#J7~wR`XnEk!+68PF5FM_ zoQ5~Cp2Tz0H}Z{~XWQl02jmXURrovnf=I!`=@&RFs+-13uW_XDHOy>S#~IGZdXe|K z^Ye<+?D=?i=48n-isgY-waC9r^d9ke4RRXZH+`J_*~lV;rw;CrS>Z!>Ubx`=i8%Od zrO)wjV(q;mX|~%0L87c$7&*jF@exT+%0xskE?>NYr>=fY#-b_YPSL`?+zBQ9B+N>S z`8@DlE*OKmLu$lBg|;q|QXaClajww>>5eRusgeD5!O_`KS|gUts5p9@n1gGP174r? zg7s#Y=dpk0ypgYD>#z2`6c~xrQN8hY(!X>Md6+PI zXZDT$n@NPu5ItfGk^2|XNpMg0bl4o8RxR_v3PVy6Twc=q`tUV$IdRM}Y4~FAt zBy;KQb+ATm$lVSl@PY|ZHKNIyZnBpAnfFIXzz{@u*4j-q0xXl>>f^l%oh=AHg&mSY zkys{M-#SxV%X5lzX!yT4y*-^RKn(uKP^AI4EqG^9Op_6Q=g%n)Eq#H&MnpKR_eoYWVkOY$xgQlI*6FGp!p`SaiG zJC!UggAhFs369Hdz|{1RxSJ-;7g%}j762b{ac(_WzWX)L_&CMloZ4&=iI~D`xA0!R zP$$mBHz+h~jF+%(oa5X>?%DD_uZrsrLt8NLDSDd>B+6F$31&fTs==$sEltxA<`yF@ zI{h}1QmxtSqYPO@Nr-6ZQNdXKD%)EELk6l8PJs8wSGn{JOI{JRTqKp7X%LBH_(Y&O5`4{J*!bSi< zK#yCj%4+P8!i=z%ERcE#3%6?_UG?yh)+yF~w5U%9swF}o9MvyXNE%m+WPeB3jBTgK z;nMKzJ|9Wpi*8F`KA-p$r|R1S0*pjHZ5=~#xJ5sGMPs|K=)JD+RPo_-Q5CSD4kP{r z57O2Y?1W2?!fpBk=D9#Ksy_hWWX{(_ZT}y>VMMOop%KJfo`-1(3*ckphbc4 zi?w#NVKBQYD)t<*j_l0$MNZX~Kk%Y_PNnrB?+-XB-rFh0X%uU42a4mw{hV&0Z6m$Iz)%6;Ii>GhOn+<@Hved~@LuV)&+LNzOJ62Gl)lmWH|eLR6Q77V?ihSo;1gUkxsFE-tX6ykB28P z)MD?FV0-X81H>f|v+4V?s%HX2H=4^a@sr*zZnR^0OfnVp_k@Z`;B$hnkM_mPDxZG8 zM0Vlnh#3+3-^Nwg+i$)l$RIZYy_y_VK8IsJWslW%umy6ykIcX621Oa|oto9pL$-5% z4m%Z-c-zQ{eT1ykA63H*AP3)oMuhZ)FSu0pA|9^4BP6`8Lht;eaE|u(kwo>cVBGxC zm}c4|KVYu0SF*eG2PP$8OQV?_up{EdUKd7u_(MSVfryzTS8w~E%u#$X^CLgIEL?=- zXs_kGeHV;Q<`i?Cxc`MQSif+!KVXFIWW7aQo5q-7ZXe}DEy2I1gSC9^%P z@kX(+!Q(~4Dyk|*GL?wi%E*$^Cw+C~X>ze3`D4^j&~tRbOQc45C_ADx30_~A<>a70 zFRfouEr?)eAckhfT6F#Zk7#K(jM1UsRO_+MUpUW##nyDYj}8re+iT@-7cbyA{c{r@ z4HoBSLyY2-Iw`FM|H`JbZRxe0{g==Q^D!0e)I@31#medF6N53))cm|xHqY}ZenA+OUl$ ztbM)=QX3Vc{Dxc5aLDVDN?RLXie=p&#T)fZBk5L79WFK&t6{?a}rPA}QJ5bL=6R`Ip;&p~ z;Al#Q{$r@W$_z~^LlEnOq1))*quccvQsl4U;0p_mMn{)6Dg;^nRQTkDdPwythDAl? z+TkZq3*|2K{l(f)reQ6>%ssjhD+H`(I39t0E^pz|fsArg-=mfNhO(Cv$>+e3W3?;? z--bSb*g*YL!KP#xX@Gy{WV0XMjcV_<)lSmi&^TA?qDZaU`<&(nmiobb0ff{1L1u!c zyoWQ^_qg-N>_I-NAteAeKYJj&aCckT9%{PGd1Ynk0x-ufuNA!hh4irO4O3D&UAdfG zrTEI6|Hm=TEerwqK1$1nXQfr_@TuiEMve*c4eB;5=qb+3qj*1in(BMfkH1 zR9S#cCouZxLsNQ8u-v-vhW0HDYEe?2)}7UOpRV^x>0Hwfr1ol&w$ah}=MtGiHFH%scp4`~S}LI!M2-@R zm(rYeZDV5^TBhXd`!_Bc+JNU&pI7%A<{?3Q7G|M}iP{DVxJFvoS*9sR%Bm977`-CO zripATP_91N53j-N=Y}=RRa1u9MhREL{+qLnlkKMgI4)2Mf8*4#Q^;x>R-Q8(!@+mh zj3~$Y=7R}zkrDl#F!p-%LE=|>gFo{|coQg(z9u5>;vD^bGxC5%jNW>IxTtwRrH_j9 ztNttn|CA1B{x-(3L?vl&ZKVH3`jd;(->9H3k>$K9)x`aq&(RhUN0R~CzPpl`y_e)? z$Z%6~-%5n2Xwc8d6GGn-&ZU*xe#oG?0My~RoW@6pNHH@ugn zcVeQTXdWR|sEtRFugFPS?b=bzzv;vHGprcle5En-jwG9+V3g}UKppG|nGV_KH|2F zU;CVy66@Av9R|+4DPdi=Y0ud2$^fpoj(5rCdm2h`y?RFfMW~iwq?p$=uVvBhL*ys% zb!_6$$K*nKhbX1jW2S>#UP$v)gKQMX$<5?E_Nh)DCA<=ej5E&H^py`&{%})vvPgv~ z9+6Me4Va2~ZGgN?WOKckK0kYI*_Np0xWacZ_MvQlL>lx_F&jZZC~j z`B^|<#|h<2cC*F#3J;B)M%S~?Ch1$M)L5Ddx_+AMPkO9DkA`wo=lsXs!ZvB zABR!hdmPCKo^Uj~J%2K5^rehRzyLNgqLG-{Ur|U8pPs@sN>(&?b}c^o7|d76_Cm8f zx;U!b1A*V)c)>__I&YoeT!#P+r-&~kc-19BgL6leE0mdN!0L4kvEGX@4hvstDB62p z`h41eXLsmTf_LGuyKgZsHtlc3LFs5Lr0$$|H*$72nqd|6SKS75|cL3 zM$U;WX4)@Mj=?9%8BqLaf_~Ab@{;eh8<*WhQuIcW>G;k?T82JXF4o>8Erd4>MnB4~ zgk8mrgQ+B&E`|}To0Pr|(gM^3zQ0~+A^Gi}v<}iB36m{Up&RujlQ{SAX?tG~dq}!P zb)X>fsB1LrWTK8FvwaO9QEnresj=#6J384BlSwXeAGjweTucJin*3Artincf9c;7c z(KjpEt~}wRvBFmz9ka4ubKYWvtSdaFn93315Rv*C=()wKp&{ra0rsQ@OiPQj(aG>W zb?En`jcrK_{`y3|jy}Qr!qAQAC{W`o9MvA=d?O8o@$#O)Q?DznBI~F^E-tO3Cz6HY zB(059D?O0|DBNOahUm<4P+#n)%c#a?rXf}E5QI6aDp*{5WUvCM5H5^xy^ism*0+oP zhivAgZFd8rfI)YLmmPqLTeiGFQvuMyL^(sUvc} z^nvu>$SiCR#vgIvQjRmNn=vQiFxd`M>Kpk2P(?3=IY}>Sq?fFb5kl}=M;9AOW&C4_ z?xOmZ*I*#oI~DBDlgQ&d*xX>4-6WBfKrf&GRJt6}puyB77vl`WMs1#LRw|$39vgb86KB1Gy}EAxLUsK2bP+hlF}eb?s9DJnH&T>(69me2Yrv*zeAt^mEF-K!4J=bQye_ProxA)b(L09|SOfm-Mm4L2HQ|gT6`5fLiWz8U1T!6KaL*=hOum{Hd8Go5Z~=9!UGs=dno@c-l^jyriG*BYoCJeSUy04tM2;(;?0q zuhgg*OgTr3HGM0IOfDcj`0srPCJ%TXrZdfDs`*+~Su{(gSt2Vo znD+?I#d4|@1NF|4Jsk}pD`dYNgSn1nQiXW&rfM{fci>FD(N4W47piTI&!Ij;-y}kL zB`r%pg+12e&Puc3uWIno4_L{lCPWY8fN+e)9~Z}VaT!wL#L@Sd86`~NS_6KAK@-chgCOX|lmUjrQ;oldgu&bh_Gt72{T~$FS0L+7__}3D-i?x|t zxbQj0Ie%q$)eRpBHFx*%!+B14a)$B%mXhr;=%(*F%)ct{uHdng>y6FN=(p6Bb_x)x z#4C}Z_HhKE)Fb^k$WTKW{fic0b%^h4%ZJ|NoVaO|S4o_`g@BqYE>;Tr&yc+?MOP-V zV?Y<`HfOI3P8R0f{Ll6YyBZO8>4QiOFV)d#1KRmU_CQy*)36ANOz>d zP+?^44DJ;>wYm6iDHT!`cQo1VnE%M((s1$9s`Qh5HnN}DuNyHZ{0>FC3ybh`4UB`I z6ZPLTi82j9z{0w7(Ph)3^j> zJMvYIT3Smhc&|{no+yN`8kDPQ5mYK%4i)We;tQ!>!NcN)rq`GCx>Tb>NJ7_#P^_6=3Pm@n=tdMV5Ruur z1dNP7lc>Po`6JnSUVyLj2;j$=tk}oy2Zgp98;V=;F~5&OmJStS}O% zCzq=0Xz1Mb^5}5_)Dd<;rRZRM38I+n57qQlGOL^U!}#90R87JKMZ)8auw!Gg;!ZWQ zl^C+%;n}P(cGSk%i$)T)MfY$U@a-(YB`hWLVzLgQThwzTK>uv^`q)d5zFf@h!=zzE znOa?yJZ+P47!ajTArE9@GdnuRtFqQ%-I(xaYZ4G9F&1tFYmdSLSLp*8$HveyICFmX zx~NLJ=JD=dUk9p%XLNGOR9ywJLCjONL`Yk*63M2ZsUi&labjmSYf8&L#UDsl;%ZEt zq^EpxEYoh0tPGf*AOd+~>{uudu@uOY$d)F^#fHnr^t#&Oosit28_+q{i*SPSv^KU% z#2isQ5Kd-O5Gv?a_I)y>AgEUB;Wu4pgkz@1JCEJt*N5b>qs)hVhGr+M*6O|kj;}$7 z0+-CD=PmSl;+ z0&h!_FMp|ClvT}KaKdu3u5SJc&yhU68BKNY=zxPhRJ&7qZi)oO$|L zXP;v)JpNqYl=(}}Teji+6Fo?{Q5U4`F9hJJwR@4xdB1{L<4`-swiXXLsKwCt1qG|M zfnJks!=HqsY^%@6*4H)n&ekGuSaod(J%~OeYMAk*-Xg#r=T;(+fH`AmJ-}laQ6NbP z04eKV)V5GXCkVo&r_9c~4G$RtFCGayGaymv)|Ud{-Owpevfo5-Rr9iVeDp7DR@H(Z zdCBfQ%r-QUlS+H_`&#Hb`jd)6#dxcvy8RLR0%C*%Dnf-Zd)tS_pnkl-1xgnSnZz_w zTU@XIB~jcjQ)t2F?XUc^aU3>`@lH1n=4=oOZh1t3Kff}oG;e|)e>>uzJE*dO} z7qfq>4;uw*TJ`GLmqJ(QSv}JQw};b*cv-SNT?@9R*EU{OR2ok^aoO?5(xMZ~4hhbUI}nY9Ji`quKb(9)?~bC+pjfB)={J z!!!1KQO5j_YH=6jK0L0~%e8A4Rl^9t2WW}9hAfhwkj5Wf^fJ3>Np!!C^397{77p~w^#kiR2QJixj4-;=Q66J#X-$8%m- zRuB;|M<$i7whpKe+<8~=E4IW|VSeol`$QnWmEo!a?CvmcH#VIDC+rX8p5+YiCbvn3 ziqLU>Wv5ucq%sa7VENcc{?<~6j}*q10*Eb+$N|IjlGoso-I4IqLLf;QhK4|3Fuc6T z+HE11Z6_D9z0-sU(r+-*E#-`K#|n)e#Kyv!9*!1z=1Bgr1--W+=u|w`tU&U!r6JOQ z&m>2JzF54G($Cdct^rL4kS(XX!|ZJf;+Kb2254;LX<#YdG)3O+9o~jVdII7XJ2Hc# z=a2gQ`uu97E6y^So%vpu&y5%`yhXx8TzzL@!c|QaBPN+pd>H{Pl-!8Cof#644nlWd zQB3phDBV^DQc=W%x2GQ~aexI;x|S| z(g4_dK0!7j#dmq)*VZ_{q|c8Wqp`+Ji(-Kkr;yVj0UVg@cqtT1rG4&LPhK;>P-P=( zhOEm`rX3*bp}mT}^ydKR4FX+UPA9x+Cz4O>e523#q-lklHDbjg&Rh`}74b^J8sveD zzn8>MYryR!*10VI1_ZJh#aFmUaVwN`m3;)~f-4EXhj&D3xs`>CQdz>Z@8qjuWa z#BTP5ptNT?=C5WnvLtM_*VVT6iayQkP(^ptv|20T7)7>!mi1m~rK)8LJaJTWlFtDA z%+w^9Kc+vbAek>rC(?51x%~|wI8)!Ue#5){eX=3RNU34wEqUu-G>TAC40s&D)Z5#@m?rnfN*<+5a+oe{um_CKw+ zsc^W~D`Y?UoQpZezfi&q)26&{u8uSs+|hf#@gBva_JI{Ho^e@gg)YwHtrr{#%B9|c0L?oMwZm-5Um zeI!N^r$yc(``$!agq@uj8{)&-u*>4V`LOU4 zxte_-BjCyV{Om;r>9FxN7yUI7=5C~0hEG>v8~uU3eln_lds^hMne^%{DBPtFaxrTS zY=2DrBPt2>=*TQp_B%$5eaFIQIE_aJVhG-=_%bmq-HLQQPLE~Gx!|SjJ6R}rMV2zk z%6O`#o$SC5f2#-(jf;PZmC0&NMZAHX7FKp)2@y7CXXb=>C%@@#PIvwh!r=fP46w@^ z_(ZjSXSNR#oiS~PeT-Tbt~ux};tbk5iR*zh9czlG@!5bVho!L;l9n-MEK zTj3))8dW~of3CH3Y;5#53(gVyWN@X}{s*v{m406LZ(hUtP!UW2ReXU?<8^o5a0bV6 zpy^Sz8Dlv|7un0;1vRv-Ci*26s0%awO4j;PMe3`Tyx5juhhmX_i5(8(j#)q3OHiCW zQfBvUZ78#@`7=V*)&g`9_$?=g-zSeala&GbyRueMv7v7|plm%q%#WQ@M#L;2u`dOj ze@Z0h7NCC;1(OrWi*SUQ>DgK2zhng;2_~*O-H%xWW2@?VW-r(sBi- zEqkt5Up~c&v1)dd54jBX@vNs@pEXpSvz=ItDFB-Y-7Y!Y%*Ity;^E>2^I z13Zh61z>UDUQ2?EpK9GPa<+3kgv1#ESp)AF`;Y!0yp>NLzJVO+5ao0L7(3T^+K?Oa zOTkn062*Yw3rCWyQX1aFyES%UC#+7@JUL>g3dnp2fhTCmR6TpY4hcQ;=9t+|@?OXv zZC{9(GSeGFVXe`F6Un|&tIN3E%oKX+;_)*z`xKl~!wE+gOGAzM0^6w~r;qcMUNIj< zKg-+z8_Ti3hU~koA&wQ^XQ^o6amd67N%SxoJaLM4H;(TnoV;XeTH6%z5xo=x!i?DZ zjc|A`ITo?~F+~qY>XB<3tYX(Q*{@}qv-cC5Zc}6Jtsd`K1(-}MN4kpf!nG=nh-R|Y zLhGiZ=dyercgr6j^HumKJzTm|Xs>7-i;|B^TjBagb_O3Wo{DpsX?#U{M&G0Gv7|ZZ zBRO)5Y^Lg`)m-DJlaNt?JCX95E&jb{l~?#bXY*n`J0}2=E_v85UDk5AZaX#lam19A zv&yhPQVKXH(&Kp+E-fl8LnC#6JnP$b{+FMETZy}SiHJiL&CPadd4K70Ijm)B?UW!W zI+EnpGL7M2&$jpKKl|ny;j{;3!Qp7#a-=p(zHGv!twcnP=}j?q-VEO8B&V}^Rt(lZ zSC82LSP`=f?~xl?y{V=f-I>%dyj;t&1=hLU(O9CnIs_-61ST=FrnQP~l6JJuW_9to zr_H#Ys+nn>3(uRejJXR|ZF58C!kHJ}r%-0M&Ohz`Au21i6%DJGE_$H`}hAd>)-i_ zs=sMqT)d#Qr>SNjgD`BTNObK^{NDeKw^)FeHN}{+luQ@f^Pi{@n+OhbkSQJrXG#l@ z4@CEJvC^OSzE9fvny6a5(HxOU0&GDKyjCl_ka|4wuij=dhl?(_R~%5?(TH6~ei%85 zmBPV9nbt&N?Y7F6NIa5k-l0>V8znSc`AF_;4yPl+ZlAn(h2B~ z2ISCaa^%U%;n$6v<|%6_zpYixWVV5@UjlW=jBzqK2_&m9zw~sHwp5x{Fm9DJ|*NY6^+kh9()s znu%P}<@Rg!3Co;g=v$=}TwyqxOV%WM;?_wa@bLD=USlYbzH#gnF4uQF+oH4}YtOLj zYa_5-PO@jyyBy8mH?~kl>UBq{U2tcnp@iPKh25nJS}u`274marfe$bdtgn^U00)d^ zi_?ILKtHnVFdNG8euFhDA^7r4f{NBNEnzd4jj!?w;Hik8vd1SmCqOU_l*?9w;n%J= zpwHPrD_d3bHMZ>MdTRVWpW%*a^)>BPZy4k$q@?ffroSJ3o;El~@BRt}0DhR) zsOFF}IciRB8GcSc;$i>ac0b1@hcBcX`fAzP7)q%#m0nFBoF37zOYVqSQ@}w~MOOM4 zjx|%5@AZ{d3DKmbvueZL9B*5#uoow-GVN?ld$ZpF5pA!FMsn>9KzOkX6}jR-C;({H zF1gvuO#*(u|0j^k_a+rLjmqqdJiP-3Et~fCKP$NXCVL~qE|0?P*QBRcl27P2`a=?D z6ua1q0cb(l;UJ6pxd{7*LjS-yy)PUIY0N8R3ey%Mp*Ar^RFWQ-%w7zZi+$uk%%I^6{CWonMrF}XA8STGa%SNzBKQN%PMYxUgL+V(HD*UQ5Nrn zfKs)+Qd~w}XIY)y;pftA7gewYelAQ7SyRYWrSoN^$>o^V#bwxGiGx%{GLSluoWl94?vYu>5T_#M$Pg{2t*npnjzoso zKQum5Pj`?T*)dFehz6B+k+3o&>x$1;wHhv9e&tW!WPQuI?XP+2X1%OpQ4BsaVyCTU z{Z=i8!Zd#@X{q|3rM|n#gY4US&TT!@EyHn}c1?k^Jrq%oK*nCq4o~Vs^DcdvpU>2o z6%m$VKy=PMYfWI$uQ zT>g6yhHJ!ho=q3n13GJHDt3W+7^c-hhb$t1T+}v(fbsROMRs|)Au7r?*ynO-3(vds zGj#nZ9YfErl$@o#KZKy7WOB)Ze!xfGDICLYXi}~r+lIHsv{bK`cZUt<3M8MMGnsv& zu@eGZ&OVZz7bzh5gZ*E?dd|Kdxy0scyR(d@>R#j{uwc+zoXA9|@VXS8?&E8RENFV;*{g82g*7PeF z5)l6$F;Txq*KWBUONLL3JmA+J0{KdQ@WbA@)6~7`enkc%Men`w zN!mi*`1*JaczW=_YpVW3#|d*cDN;sft8tH+zTObYtt~ zoMfLZTGpwu9y1GMS@s6@7&CI&R3Y7#&=ccCDjtD)2Fz{DpLi)7Z-*+h`XX zN4wa3iH-V~K2IX$aA+h$rjn~c7Zq|84}cU=Xi&E%nL86ByZbI-61tU-y@XS7gpf!{ z(JZRu5EFVM&atLnGXcr8x#b+xq9rl85rq#vJ&K$!#%kCrh_AUdo8>fKaEkY+4EjVn zTE??;MfSdryun8cY@m^gk>??d>zzjd2RGK}*NT>gWWwywBXk$}5cDMepkyAd;p)Sm z>8B}?DG& za~jL~O3y0$^v5McLDYi*^ zG`m3}PdKxY>vHbsFDxLE7g&!3${o`Rjr#G&m!k?5H8ND0x~Y4~xnt`%GZ>ID#6XMO zAmB;vx7bR{Y2w6Tj?YY?C|+ellc_nfo9*^tv^J_}=CM~#WRSuUH z$xb00K};{WeSm%Hk3s&;B&{~x1exuemIxSHjn&%Cd#q{jcUmqB1HuVe4-`@(S=)fv zpM4EG7{sDLD6Fx_UBkE0$BWPLen;>2S*F!AdVAk4_Lgi0E3J>oUHR|E-cMw}`s!*c zcp+XXkg4>o1pGMCvIBaLl1obbH*-vbpb)~f1zRB@D6+Cdljn#N~vrn~)YKD5w&n_kDFmWt4G zt~zq7p#+EOP@1RJ`p|U7+^Vs!bwI@M_Ajh!t*@Zc+^#)4#G#$76jw8E+KO zztfN+;WHnxBZp8K0fFcyf?rnoP4Pb13?_t}YVsuTpX1j1sz-i@oD(10e{}0CLGjn? zCmAD#WzlQ(xBTgiW_L7u7P~N(dkIZ4%=ZO)N?{roR%%HnDiF`IPSG1>kvVfJP_&gR zNK>J>NWS7X-(=7lroES3jOs}v%l=sNWjmW2fZ?iVb(6};FKC1~a^Bltgb>EJ>)i%x zQP>w@m?wmZYewJbA7i)pou$r`eHt>@g66Mc#Z!Lz0I5?F-D&+>S7Z}DvSsXS0XIO? z+1Fr8NUf-@#4arDwrwtY^m;Ox^(Pt^L$SA`)}`g_byUd-4cP(Cch2q1HHVMXMNSQn z0kS8)5>6)HAD^2;HulgTWt6=och>}~R*ES4WY$V7U3?6~}*GM~%bTZqnF9;Xcz;>1> zpvvV+2!jhD%Gl;vsBFa^kb^|DZsWs|wT*Ts$IO=#;ugAOcr(=I=+v{yV9GJGO46!h zt||ev(prT`wvM`FKR+7M&y%dK^5M`=kCR^5)F0XmkyFCRaji<1C5_=+@q$@EJ$&vE4_2sMh*&EP3sxOvp1Rl_mPd)8nSu9f1>}Ndovy1yyCTTawonFj2pYgz&esSc((Y1g; zZYr17i!ZWi0$V;wK($$0x64@tpFB30zRX^r{}?upsS&kuSt8Ot*vV44pTg+FV%C0w z3+r2|izkm>jf!X|SiH*qMh3xdp_dkRm@bV)gY4&8RH>;x57j@YM!+UwvrBBGxiYH) z-3{U%vXWlRK28Y{uhYK`Rh8_KO6zJRw&_BVjXnrD5J&bBg?*%|pwBfP=TG8AylLx> zLT|Ks#@=S{nW*AY>7M~1qhWKON!}~o!A20aieGGzAm-Kc`8+upS_S*Kna$KWxAPMF zA^`L^w8xo38$dB`KN1wo&E^TExrofiQk4BRVBN+fo6mZ;?baU-u!6vvD>#2~I!gT| zNB^>Js93hYAmcT^z$wMKDC=yrT8dtW38+N3B;H?ODH~zEKBSHqDWqf7unU)hnD}*H zJ)dl;nIS{237A*aTMGGtT+8_jh4j_wwTL?&CpuHbIy<>U5c%+H1cyuZhdQqAxR3UT7Qj&< zd5)dgemzH{>|la-O{!D_!OmtSK}xl`i#S-nxU^ME+OD2>uO*0v)`p z?O^HzZIT0J!lGus(&SR77=bI#{W}N2Rpx(nKZ+zEv@V%Gx6=D=*Jm{MAt&T6cBr|w zKEW3>#>9IpC_@&wb~$gZz&wNqZ>3<8>3d1YYR(f2?itI9*8EPNoAw0tR{_KX6qor$ zhH~5kIj>UaNWX%gn^C_apQS5ftolY#rOhe13);u>oxLk?gl^?0YI`C!UU^2$ZO6XR zyn-%EXV$jgQ{$LP4rO14H3U@{OuoIp+SE?_o73JFtn!P4dcXRFJzLyhe~L?3hv=>i z8N+Jd#D?UiKQaHx=<9TOW;(5MiT`L^PUzip*qGI<_O3Aknw-+Fd~Ks1SI4*XttsId z1_(4%6ee97mc`3$bgj+0o{CYTTsK)vQJ?4cc57hBXjbh8aVNsKDrwJY`*G~Y?mV*- z(?$;#;hK9f%oSx&Rz7cKhIIwBb@+dYVvnRH)>@E9jj5B>Rhmi8Oe@+4@7E5z-TnJa1In1i;80@3EW* ze}b+SD*|5uz=dju=+`N+>od;sZ*I3E1V+~Iw2iOe&!EJjHz6qU%bE3jBI8PtvD?7h z>z+l9@+y;a_h8l}yZ#Wdt>|b&AQTlu$ptyX7;Ez|kEk(Vl!ZAfs&+jBwr^B#meWmw z$M5P%DEP>f$x?c!VdvHFnyaIi(uH7HK9eV}7I80i+I2KW?A_!5VKO~GOEFq{?_v%a zLGDU=Tte{+!La?WrSvbS(Shsqml^ee?-TG#K-(7AVXePODVAzrl}69@EUCvTibPQe%|Z^*9IbTr@Y_fG!sCRq7ul% ziV#N9vg{3IV^An{+nX($4J}a7Qc8Zaw{m>mnBkXzRhUuH*lsY{bLsZN?hX3g-RaJ( zW`9G~_y|Rva*ep+MJzl8Wi40pnfljgdHSqt=;<;99yU+~Vm3PB21F}20I6_;TG28|Z_^aY@E|kF!V_ikZ?gi^u~j4CZ&c2Lqfh%rIs^Is+ydw; z?gGDw9u5f&BO32gYu2U4ZYV~y5X^0WQ^zoC=JC;S+j{N55KIo#g>t5VkxSQehGSjL^L-TfRdhf*uZ1-8{~N; zx0;pLux%rf1}jmXk_ibwcWofEV=^>(vzqx4`L+Of(q{VfhIKE2frRDDZc^>q7lJEC z-Zw{`&iwRI7?i2(6!~JK(*&r@uRX1z;?`aHei#`XtON&mD)gD2$k~g!`s#8dY^W}Cm|(0z(Y%lQ5VfA z!^BHb(0ElpKqm?O9mqKwO^{27q&LZjZ0fai(a!hL)0K^umRjcS9<-1u48 zBNtoA>?)kXkScDyCQt=+adRTM8FX}qtUEHJ8S?$8?xZ(|DIJT0Ne-vEE*;5V1*t%O zv6b4>_>|N+aDlrj#}Wzyi9Hpe=iNr6_jFekmUR?L=-*1)rn`c5BaQOY7ID1(y#8u= zpNf5ATRD%pMq=H`f^mxqrc;t8KVXt~CkQuGOFb>7-nUm=6>A1q@4;$D|JH!`%kRuLN{$?PtbNTe z1Vs-+m!@e2xY)hDlrq%Z9WPHq-L zxfFME>;+hM=pg8OJ4Zh0Vku%Dy=4r{qq#=zac)nG^$7-#{As4& z;t7s}$^&K|$59I^Z1_Cby%UF#l{YJ!8Y(DQA~clCn^OV25eku!NN+JL!u|YPi|y!P1%&#`jCzlhmO4G;OSE{GcR9 zt-;*AySlW7V;gsQVgurx)&}jLaKBEERntR8o=a=tY(WEd?F0Q|Hl0#F+H`n6zd(gn z{R|!x>pT9K^>1~g5YRfx<@?iYh$)MzsPYQ1#F>0`h6M!~Q^#6Z0w6Y>FJZ{qWJ4w` znvH2%;#OjH^px4C^XJK9RDK+4m0#%43|3v@({FOhQXznONg0ypS1-_e5w_J1*(_CU z@Kb*ouFj)HxY=J8#*%5L(df!bp7jl>X!koSkqtAq;&*lCs#oF?q@=f{(;M(Spf58m zi0Q-J?@1EDRm#tG#_o{aO~wHHI38Gyc#RrFCdlvGQK0%;mi9XBFGTv2>Z00O^&SBw zN+`RpZF|XkzO3y#3K~(hQ}-pfdI+-wPobI-SSa_I=utC9@k_beo;A7~^5h$;)FOIZ zw51ziq0@aOSXNmmkyQkup~_e)aK`P$be+mP>X+83-NmI}DRj7e?k4?1y?=p5U{rWZsUnV~$^BJIigz``mN@&NnhLs0s+x4`$mhV&QExr5r zJo%+E>rty+&E*%p`#ts;P=q>hET5@90mX`0`D|DMJV>TMz`NM>;$7B?tv|r9rnzwz zAC*7}rPy3Cp(?e=y9^W6@`*ef$jCuz!c zaQDsRi^?N(1e#SvFc$f9vEyI2b^qLe5#09F_td2r6strQ2oUqFc<7@etMV_G0K_!y#0t)#HGOETqkhtsY`CtCf>ovMV zHu;;8G;{;9#N^y!gq~*Y6aAUCt~?>onBhUB2m^|61O0vlWPxuV{*>JAgvlb!P%H{a zm~zx*0pwv6|17cFD8)5SPk+BQb#|Z_m&}vzbZrVGsP0Mf?d}?Qox_1K-4iOP60mUR z$s6nRV^E8v)gF0S*opF2UUg+M{qAyt!IdAX7)LWMv0(9oc+*BJFSV2vS5BpCiX5(* zYJXWK&j*dxHQH#9J1Xc}ONTBqZCaNTyV95v@G71#z~JLmPGCLoXv?Ej z!|6|ox#?1op3!WefaMqRK&Zako=E$Okm6-lkG}Z|N;L!V2^ARbI+pfaruBoSyC>aN zF$Oo@J3*%3=QVCqHfJ%e-OAGGv=LPJK%q+Q4va>V;>qG$n>}y?qj$6Ttx0R4sbyQMv6<>|*eSi^8(Vgb5)Wh} zC@Cnv7UE$GMe@Vp+>F^b%?GJQ3>Yx8=(eWZ9ry@`;-*(F1)%Y45$!WG)@!vCLTp00 z5={C$g$3R-=G=9?`N-c;C&yNHsw!cRQl8-)p3Hy4U5$^%5ql^BHezxg&^!7>#eFUUO_Sf)Pn`6~XDs0cL$lnN=PU z>wbs(oGFUHvG;EMkFk2pL~6}jU@e-SYzXSj&?OZ%lqW;k?I|A74x*qdM@!PZN{)o|9#+u9#riYAckgPTi~y!p8aN+Hma-56L=>O0l*$P}s#R0$#RL^ zF^GV~UalZuF=+dlEZ5dM^eO4NYIWx8=?P;pQ10l=jeIdZdJ{N>Q%(U__Rx=}+kaHE zXk4`s^*nkoPY*&RB5E2Qq@onS0W`1Jmf*OhWZH}M{q&m;)FhPoxz5wJ%~~TL7L9Hg zWR>RuEF|2N%Pc64eZ!xi*Nnw31$K`{m}fC1klX#V{Ar~v34HWIS{Rg_uC}Y%y69iE zEQ5+9wGVnGq}p=#-L5@m`gai;6@$zt_gIv4Az>G4?!L+Rom7Qsam@H3z8f;D}~OA{7+d(0Zf4F z^&x;tQ}Zkiv92Rev4dmY~@M=`QaY$pZib z0*f43c{W{H=oAzrD=K84a4G{tx@))oZQ)rrknel82Z7`vr9D61k99^u+ z?+6`e%&*7+H}C6%Zjf`)&S6Y9-+^@35YG3Zo}9O=hiw|I+8`T zc(f9(8lSAs9k$|~RkQ#0cC6OI%BH{TBJkK5WlC46BkBx>K&ZjF&0tirax0wmnUmf# z8;m@F)s4w7%|Zqjd)k&hZhA7G^%zyu4@aFlA1-~+o+Q&aqcT1%h>DWGV9fCJ^6^tp zVtR?V8`n19DI;5a+g6;Flb1+sJz34+vQ$N%7EX8NhjX)?6O&EB>XK3K13bXyf_)+% za=E;Kddu?E>uJXg1rC=nx7;U0nm%ZIU$(=#0tI?ps!&0a{DSNUEG%Uuo9{ zM|x3i^?VLUawJ&f&E?}?u%zTPd$a2|SKsk=;QLuufNr)&(pwvY^lzEQSOu<=>m|Bj zxY3%zv@hvam;&tTM3)a^K%(*RB{qBXa(mt3&*;W!HX}CPAZ?on(x?^M^3Q!px@tyP zf?<>&W?LXq$?di$bi6pW%8BwNX-82GEz(=g-)yMMp4YiLUpY}u;*JH`bb+RAZfVspwdBxQM3z77kFMGNVZ#V76Sm> zUAd0l0hG)o9o@1H5U<;10ZYS7EiT?gA51f*6iW0a-0x9}3-Bq-)$wt$4F=KhGtNl| z|0`q9$NHuG1Nz;;-xi;N`3w|a21vQUi5*$bm-Blqu=q%!#ltm_v5~&!sYCoh#g)z! zeIpI3ZBr08K8bf*LeQJq48bpYM68c?L1HeDXJjQ$gl zSBdD%W29SW(qAR2VlhEOxUGrr%DgrgUo{=u(MlveU@XZdz=qi3^5G=(>HYL_ic!i>lB=ZQa7W}OQ3AP7b_ra0%uSDaP{rRm zn?FG1IfAFz^`05tI{@)y%+)cLggM2&;mZFc?g(y5mM6*|=+L!eKA) z4y`lM^OrKaRY5BP!Ih=F9nRcjJ6MbNDg7*vJ zdlR)Uo0Um_xoz0sii+vEgg2c=4%ErB8p@y1=+Ucb{b+hU%oHfiLz4jlJMxR46ez?I{p(Y6D20q{&lzJ!ljrsoKMVHX#5p=H^ zlyVxA5gW8w%cd_*mY=iOY#C)(&l@Jo*UzJFlO>Q)QHoCM$2(@5^{&^g{T)t{V!xM8}M#hS} zg_LgXUw*_dK!}t=BmJP#ygMyQgIc?0Bb7wx_#`ZwTYHR&8u-s-5zYDI=$vuxi#8dA z%OrJLIK_{Xvr;%C3B#r^mzsk{Y-VI?GD4Npu}zROVh@NLRZjx4d^Zv{S?e=F8Uq#H zpHTu=@@sOb3Q4390s%T@G`j5}uR(2G$KRKK6y+D}OhM2E9ZPa9jQ$#u6EA#^;C?x0 z5;jEsPx@T6fV!noQ6A#A1`}Oxr6!~Hi-%j_x|(FKr4_k!ZZymtMoHM_!AhhBCPZt= z^ydwLDhju4A~FY7Vom+ZL7rs|giIZ#ytz>#0{7(HRGUr2Qd4RaykA6CVh>Fr`8 zYPKj4sS>Sp(S%|-Ad15S->Cswks=iNV~_LnOm7+OMcS#zK#ZNP4`k|`CO=rE{@Vtw z1`yrAWJ)DETmnh@%{OCW&75cBD1C~2aiB$$+BA#&HLg3x*Ql#Y%*{oM%m;j}AjF@|lUrO!u${Zt|OwpPk`LaW( z7Qhy3ruIaSs8OR(+$n=$3I7FHUqC@Cm5yeblY-uSu7>X1d??7%lh<_UPqWUzKal1; zW~RH-Ecu~emFs~DK0Yvo=9htcpGEqSpjZ5@${0ZQaA#U5t?ez4_q2)HFbMMKhb#e^ zUg1be8tG7iP>&^pDJGZ>)YF43($sIPM zBcv6=3IGZdPOsI->r<_lP^C;CWwI>q%xoBQs{a6z-}n$3dnPMm>k43E0K)=Q!4U7z z#l^;)+%h>dH{ejmV#gN>9avC4V!Onb!SOYxy>c6~bswT`%dfvtb_*!5_AE7H%I)1f z*tT3R8C8|iM5`Aepr`v5rwAf-cIhQ#NENcDcQoleHdIloynzQwKNJPcOv5Ll%o|KL z5yIK;uCirJH|UeGNtq1v*NBp*)NZkIl7mAAnjKZ8sMBb2B&A9{$>bz{*RJOl>u8 z0{T8}@J_Djy-~T=Op!GGc-I#$`URb!Z@z2XU*w)CgmQU6hTr`J3wZx7O3Q|AE26nK zRWM%twFbTG+ZqHEmX<`iWX(6wuo*mGeqt;wnaHYKb{9rmN0CsTL6aD zvtsdu`o-z{e9Voh$gU0(7UKJWkm;lo0+f{fZi9CxhFFMA1hw3`noYc z)Ib;O`MrsgcER!>w}6Ji3a;R_Y1HG5J=<}O{Dcj-yprJrd&g~}EkS+1bt>PE8g5p| zdlC(*DILTQ3oR)GVWOyGMe2myhxKncK}mPJLd~KZFPOYOY?fVqt2-G2N)Pq{w^!d9 zyD0`s3@bgDjx?)KLR}C`(*6QC25*ttj)L~|mx?t084EfZfXU~uyUuwn;Oc91wI#u9 z)t&&3tbAy$F{RYH42I&597Z9(0M4B9?CL}gk(J>jgUd*T$?9v!*f3IEkD65%2rXf? zYD}!4%}DcnxFSWv=V-|WIVo#+ipMtF!qz~n~8ZAk^vLH}cRk0bQ zz>vSX#r4mXAcxcb(E%2^5+|Ncve9PK6?iMr6(gM|TQpdtWQH?ym%%yS@%fK5X09r0 zqheRn>L$VBXuJhOXpRlSS#_PwCU%P-#ZDD~r~r?92$M|dwPYR3SZoNz-Xi*XI946d zUUIT2OCoZ!uzaTj*y?@rz3-TN{}pAO~dR+pbIr*m&y|ow9WK@ zn&Db*R(FJP0${w>YJpY|VH=vd3+Xv?82B6(B*;O+1|^gvuDC+sbAq_Spp<%@)5oS! z)^J#Sgfgltr_*M$Uv%eXRFw|9v|afy1t>_4KU`ip+x{^mHuS_1-m)V~Naf zZkbFDdqTfK52?;jPIF#H=2&%`vREtt#|HfDaITt{U8(%#QoBEY$dZzEozJCrbZ@0Q zGLX0S)jAf_iKuPXa{AaJ zwj*1A+{V`+z=Ip?dw%)fX#!A|p*t){4b3>hJ0u4@@}-oVbv57+n(VHBNa6_umkvAa zv0Jae2H;RkWt5Y{f2mkdf@IW@=Qq)Pc9vc-9<_b=+8Rw;C#thh6+{_X|0{oCRx84v zTa9XwtTQGYd|JqIBXjfASp{@C82j$*aq<=O(6`o=TU^_+2O2Qt?4=HnGU^dEPBS_3 ziVaHs&E#8xxtotWH~tS#O>^$-tAUSw3RoEvHe90_=*m1tK&@?=m_~12cDM)bi=dx3 zXJmsK?N*ew)~(AHe1=XWCaZ>=H#~YTy8WO`nb&d&K#i8BYv;cAd7!{zLWCQ5h`)j8 zK>q0-A<0zo2p{_I9V|Ds711ANT9YTJ1^RMz4K$Fhu!V=X>PMXdIvqgGG?eD>yKE5k zxt^)mHd#}c;SQI<`8)&fiC9J*Kv8mUBm zQxd# zBH11KuV|~2Qk}5kXDPvA@VDri67>UzJW442GK(Qh?I7!pt|8X{%p zS!kja6T~hqgcSiLS!buzb-o_2IRIuqfEFotrSf5cdf4dBkVJ__8|j;8td|!cGs;7u5amqR4Xzgum)&Fu*D3Ft25I-X~Jhc94u**uKQc2wWe6RYwc zBVjKP+bm87a{g^@84UJmL&L7ZB@auFyhLR;V!hCT zHbbtb66kqqEDCrVsV|uMbgf%36J3mn*TEdi>~?|JNQZA}Q{^uUa13`(w3&1Pl;yaa zCYXdm7$uaUgz}>&v9(OR#FJ#S6c)G*g36os(ke$NPutGhz=X9Lv{Pt;q7(OMc=?}W z=pI;_>S#sDR)H_V8Z|kUOCVM#u;y#Qj(PTGV^O%lyX>~mB&2Ygs<9H%uMYZttp$26 zm42)f8@jhS60T*18S4E7a5;c04vdo2^6MUa)03jSoox65VC_Qt^hApHVVQ!S%;&w9 z5Km4fv%_0yDfhR64A3mZA9}c9-1ZF zV8GG5m`?lXX%9`2{3xP;&WXlCXuL3@V-d8R;7y_wl2@Hwad;d1NL@^8J%BMAa4D1Z z%{TR0xC=^Bo^0qo0g~!%PwDT2cm&tu515h57krSwhGEueYTJZlx{$t4yAw-SZhBUO z!DO(eGaWzVR=-OSZwke01wupS=vEIhq$BQ@55b;&ole&n0SUC_ zW76+f0FFO(yy^f9`o!`>50q@1v-l#lCv zA7o$~I{R?5{MyKl-q?%XN8omkKvqE1i%W%aT+oUdJ;r;E2emh&ywlcAkB#J?woMZ# zS)MwcOX>!;FR+#-UJg-|(X700gC=`t5{Q2eq!%_Tm){DCe{Ov}P>LmAK@#V%G1jq@ zj}@5U`e77+xlibhJE<(ql{$?7$*V1BJ!8(9ZtJx;9Eg1N8Xc($yq0jMEcZ}Kiu}2s z9`+mk1@*3*QqZ8*1|nRMSGC9XIiWtz&+#_tM+7cln}+xdvXwla5D3j8aY?qz(~RuH z8VV!*00RKk3gu@Q3CRN$nHyk@W_HA0()Y(!(Uc~O4xLwMR63Q-c3{NifJXd8+SZZc z%;qM+74qIYSu<-$IzYGx7L{b=afJdRy);#5_RH6&lGREl(lOWz{t>%DFMuGz=;Wmd z$$Cp-o?pGP>QXQ=q?~c7AauQCPxt^P10?KOEFVZX>jpTCOnDNTKzM)2qic-4c6B!h z0Tb7(TV7MBfB|V)&T{#ZBzY4V{`pX5w>F!x7b`CRD48!I_CVD%<(@?%c zCqR!rTgk7X1x5NC+La@>T4;t@`8;TS-HE%2saxgxvsU@1f*uoYWipjY9d;W`Gio`l zbwJEX+ZDk*8zm`3U)xh@9s<*b?wEe{il>aBTV9n%z-USN!Wt5PH}Lw5x|zML+&LY1hT(xRr)?=*Q7!a06MxG4?-rDju!l3HjHb%9bkRLS@_x2QB3plY(2 z^BJ1DahPNkLi$bDDK0EWwlZ;HAMr4w zYp0QJ@&iNkHV?=3+nYma4v6}5YUl`{kj&nj_iTjewmG+y%Z2W2(D=~u4FkhSKi&-K z8I0wU4UP8)S|F0!3K9#oO{0?*z8zr8>PCXkvFs>tf@V%_KEFpnZ$R%esPS#x3Qy7y zT`n0NK~)_y>k?W!49VWUCJWH)(dsw!(!Jetu)Abl2dDKUSCyDr2y$=*JPqM4i_Jd^ z^sj&AlS>rbO6EX1P;y{}^mv;uJBsOQ&; z&(YsnJV*%zh+&H8g&WiikO7-Wu>18Y%(PMY`b*)Zv3>IGVt2pyauJc_mU3$wx5e_+ zJ#c^d2zH3{>@}AC;BwGomw~^jT-!vqdsq%ld_=w-(m?WuEt=a^ZoQg~hmT)O&4bk< zK==SDI#d>eIV|xGi#?nSFJ+=7twK>VeFlrR-tt8C*S%}1 zzJ!*kP}k@)Aj2g!`M0}^c!4EB(J9o_f{#%pmv$xkAUGT;`c-6mQIIT zh2j)?)Q66r7M-%+hw^|#CoV@eLcZzvX38{5NMGtQ=_e-(Dc7Vq-TCMrTd2_wQrm}M zH6!!kPs60iev-co{y!A6Gaki=-!_NtyO-b9aV6~wqEw#c_nM-ichv7K$Q_bgx&LEt zq0fy_&Se0r%$NCB_9og0I=?=d8}t_KSyD>5+dculxbGA(OR7y)my&N8?^^MhAaeTz zYO~76mq1L29y?6^fpVUtFPAA}EGVTFSX|8-u!@91n@(N}p+Ri|n|_?aNN7PN4wsC9 z8!@`nz(QULZq&yFm=}I~hy3;!T8l2Fa#MiW#C9;?adF+*`jhDCZri#W1Mnq30yjAM zkt?8g>9gtaOjw!Zz~K5NtSh~3uo$7i3RbK=q`jqHirg9!I2QY9mK8g= z(pzt!EZ9rAL-N6^tuw3!iwFjf3@F1eE0@>PqZ?81*pZJd2;PrI=4cI7QA{o4=YE_*?Sc(&tHm_S)I>R`fAC8J{e>}$DR^VuXY0svG$nBXVfah=~~FW_*cMm)Na7F%hDjm@4l z35quU9KC}IL>977nCo8K@dnTk>?yZUOLpuzX6&BJOffU~^hHg8Q7T`1$PAN8M2oe| z5u9M8-){^#_~n8zsUuVT7nVDbPuBeD+31RA(6$zFC!KuVp2bXaKjDSw_Y0ja!ppq{ z=uJ&wpViM;TNX>&dJjF3$3*Y1Z_u6DR!Cn^AhERcK3#wsLQc4$AY$Wo$^N-YchIy<_# z3P~71E7YwI3iceWpVrtDFS&blOJbXO>HeJUHjwcpI$uz7e<+0h8De=lJ*jq|OO)4M z8IdqzeP#o_@GJ^?V9trd^yon>P>)%Ex8BC@OBiB#8o;5Ff6j9~Zc#v`N22u3O#2N+ zbMjZIUj3uYs{VrZHB1x7GV`zBh*oQ>!)!<@ESKmNqdtv)LGK5tPZ9i8^8LB=a6OHf zo-po=m8n+=Dfwa{0)d?UtL(DXSibu8^V1&Yuf!H6+#Oy{oW>url`LMhEg zE1SG8TH#Yb^^wEh=r`)$q6{0XCz9m{-v*Q1rWMJW1{_Q9d-w`9T2Z1J<4omj4s_+*|fj>QHm=NbKo z#ekk>hcdKL0y5#HCc5&{AVhQJE%5BprzF$$GmVLkR(nQeV-Tn?Yp!gu$Y0$<$43E% zOct#=d7O(H5_7i=?0XT{8ML2{eQyD^3COMLRBupV|$ry03OLU^cbNna7R zAYe1niq(iwtSJiJnsHa7DkQqlSts#ocsbMtSaaJQ=Oawz z#)FK?kKS#Nz&6O0DcC0zi_r0+P;HWHhKW;}ze1*{(cL5{g}fKg7NV}>-h}>1$WXVa zN%V$W9ni0(&b1a)>P)VmiuChk6hW~zAk2YsJ&z^xVt!fM12k-sQOOzCabBOn-{9#8 z6+EF=M$P&c2vP`Fa#g(o*R56xIZ^(%gBchYpPD#f2Bu82{%uPshva~snH&4kSG2tI+&>eSY;sisuMSkXuW{@c{3jh);yO^1im8YgkN^%8CD$ma2*lkvo)#>*QgHVSw& zu6gXpRF-=F=G5hl1*y@fgilIN#cM8BoNgs@K#H*Y3=?dfHPMqFFI#?K0gEg>$k{o) z)YGRs=j}?XVHRfM+DXPv?9zQySpy=Pf&Ik?7qdsDse|0_+p@IZz!so~B9mc|qZv-} zb7y(aQN!-OCDDPi?EE=)PYsKlVv~Kl=@KcTJtXa}VLNx}CIetN#a{8S%{7sq!_3xx zgnzj2p6FQ3<6p~%>bnj|r~CNfK5ghfhI4&&UGa7nkLxZT=KWsqSGB*sHEfArV63OQ zjt#`oN2uK!y*Iv3*YrUjU%sz8q79s6r{ha{HrMVyKm%vHI(-ATN`t4F&)PGLC-*P% zYQc7IBz~6R6OSM5tmFrPZAWbjHqF ze|)H`{VZqEex@y05Me!)UceT0`*cZ5Peob$Non```uKF$UgMTg!u^z=mz(C#-4`!{QzuBB(9oy+3h?K7pwMf~;@J9S{$dxjzJmVuvm z(~x$EE$=+R&L7ncUDR!V*)Y&)82V8+_)2uiarD=gE@RrjW<%@XW<#{IGJ0~o6g{Qu z|Aph$uLmRSEr~4{k;8~*@1Fj6?6~BF@AxcuaS{?-zF6>R99HFt-ySkS6n7sHP-_Wn6QSd3nux+T&sy*tdX`1F2I=B$IqN$Xa1!-{rxgrKVwvgq9dx7 zG`LF_S$&`;@=@Fu-M{$+KmDz)wO!gD*X=%F=o(yNLOEI!(=v$r55cNcs zRI%UMB_=aA7^bLATU<}Jl{(vEV)sq(u=DpYwQB;N?>efTzunNf^r#ja{7JXFGb1|i zwr=ADvc1IF1c{wYk=UVK%cgoFVeJGP@OGVL?-`<>>)44CZ1tl$R-C-NG{QEABMVBR zmc+bS-Ch?RIKo#?sEZnhdHt7>e|J=1-4mckTKbVr%k`c-!CHtN0x0$gUvQAWS`)2h z?Wg(qgWPstaTNXLPcTf*-}#DRk~njLe|Nl>pS-{i6-hn5E+1nD8D?DuX2Sd$jKuzW zi49;h#(V8uJ_lw^9Y}sdr;zl5V2QKP{{?PUNB!BxNcCyd#-(ldz@H)i?7P0;}4fxB3>THAU zl5oocf6oD(umJKWOwk8BKQVk)ouBXZcN&hpX>i6zL{FaV8q&Ox^QYKg zr-W5vXz~67-qU>y5C8gJ_i1}gwB|&YHdNa+bQWLA&-~60F7g!*#{@ZG7^svOKmRcv zCmgx7zpyf_P8z~o9JnWXa))8#%eqs2hOYRzNIcHtXCpG#mi8Pl2ul}52G2)_@Lap$ z+)-U|yr$>&e{T0W&=mrP+#{@U-aTBp5!vLzU=cKU%(EUrPXB1xJ;{&q9@L= zgDFzv#5%)G-rb++4pn=jCw$Tdozwg50>75#^Y55leWi&!we zuxscv-_7HVhNV=HyW=m)2wmv|XJ@e5yG9Jsca>Ds+LQct`e zBZ2vR7rzLw_G1`jwx1*Pxv{+tt1>GWcuEZe-E*$lJr-?{usB z=htD;I>$J+CoCCt$BxG0?a{b2a6otABD?7Ae;G$oBeB7K80AkH@)AQED|PgM4oj94 z?bdBy)Z~qv;aT42I+4%Bd)Tf67?AzdY)Cie0RL^XFM9EJcC7uZZK$s2=+UzHC;YF^ zHQiV14gH;l==rnkySO(xbb(#?hh&WQ=>+zPuC?`q#w}|N(VwZ64SuY9^+ba@pozA!|0TYN$#Lx$-ak`{p6oQ>@0nZIf7u_Y@Y>=l4gS-W-Yr9YI!yO-XT8RgJa#I| zadS55w#Ro4VV^z0{Nd=#1uQnxh=o|es*vWj)qB`@iGAT^{U7mVqdm6%UwU}b(&Yv= z0Yh@|kgjJDJI)98=%VWvv)~XG=0(w^QrD2-bbTaV>u1_M?4AwnOW3&-Uv%iO?&MkS z7&;LPzYr+6U<5~P*wYzYZpZQjIrd?`{Ux*I1cMV}aL z2XueM*@gcY&cqGdMmA!V(?=WbHym6NInVf@Pw4r?gyTqz zx@f1=|D&!S7w!pz?GW#(uaBIF|FW#TzNg+7c}mi<>%7J!*HX48KEN)-qeBDWF506z9{XZ?5WaW*>|>F=z;m=P08d312TR6MlT zU}5ZduK_V$>j1yM{lqe3{1@$n&cxn|_vlc)-H8)e!oG?xi40wcp6D~MZX5?>F+^#~aUFD~%+ug93d%6($Jbg+Fu z>+kHxK34DR`J2?U#&B$=q5oT~Up>0hTAHtGcTMCeA3Jf-(0eX2w4`gMFSBP`rM5{F6>8Y4F5mX?grq`*#QGkHrl`iv};&4PAh;5wj_d z3HWjRVm;p3AFmsVcMKh67w2_#*7x*D{e6-)5RZ2a#e3sEc6=}zKPtt~N&}tvlA->@ z5wzl%(8c`1zV(BB+UD3rXFMK%C4Mp*Kf7h7?+l{ocvt%pTMb@v0&DBB_>$9j`gh&M zvtB&UF8;2I_wo3W-7|f~|9cGA`B~R`$;iU+ZN#J&qP}|Lo&IQFgdJkZk3oosVb0df zT+Dvn>9Me$eIN-8o{F)7c-yEV#MX`^6*e>}8H`m)PUeK1E?~_hq>>F1j9}v#P zy(ilJ1HKJd{g=igAI9UFVfo--dt^7>brCNZxX@l4Uy9F&#HEw*WpQ7V>wnG5kK=}T z{ZM=`j&U*+ABcCySH&;*hrH+evalqver<7tb;aw9UGYSSycyGP$%*)d5 zPU-9hY)e05OB&$pPD3WvD$Nt|ww~fg4lM18dylmHj`ta=wg~L+(%z3(#p_R><=TZG zrR?^)3%@Trc|baLVEx6vve*fKWPtIjy{)YO@G@+o>d0PQD_gifeqndqho$IZo#jZ$ zp;z`TKDI`BP|ds-m;T&g!_e>e^8c?thlX(R6KTW$-=C}hUoVOL?-wWipEpG-{?ALI zcyb~*)&B#;g{QhIOt^wpC-VYN_FD<<4+NyMR^ewspIygU`f$V$>^=R&Y=#XTNjN)` zo?SYd6>=sF@QF>VH1WW=G&|AC#kn*KaR^(mGK;Z|3m;&%#CJWQdPiJU#Uc4)#rWq} z$t!PS_pN7a`RsE{AA_9$XNS^vFk99AES0l^rOu=ZoG+-GY=3%F0-?lv*?WcAY!qku zsBql868YuxYQv}q>tpG7xL;h`JugQ=IWTeRMo-gpT<{yyusxkbhZi!}ZnUoO0+=NnL%L=Q`_xSm(f z3DU~k*@B-T82p)YJ_VhPIeT2p&fu_09L02En(&0d`Wg~@K5imDt~fPI=#s3D)E&gN z9pmHHYw)hy1@>I(dh4ph*;%;6eyaG2Ge39ePh@a*-g*;jt?Ew_Ln3GQrQS3fN3mO{ z&MEB$a;|R*O|m_e%ye67vxYdk8o|{MxOwV#&vO8s7I3UrRdT4i14achpWea8`2qO z>kI{$x&P}=lrtbH`!iBkN@G)h&?R7*V+i&2+!&0^)^i~k(M$dvWs%1>;ZM5NXxWq- zNsOCZcm;3Dw%S;c)yRsi5qq(vEb{qY3@`^UaRpC0#8#m!&05TyR;a+OHv9Fg1aBH! zV!aKbCqI*|5tfVB<=`hz3<~MPVe+xbzMl=lrw+$^%JKhH{A5}mV_At8S+8db8uIMT z#6N=g$+Cu7wzY|c@VEe#-V3TJc>rVQi_` zB+M?w2c}p77z(os@jYqy9={kC_WJ+(xi%bO5IBo1)WxEq>xI1~i4Vk6={U}GEBc~3 z#q9zM;N17)xWdAY;o@!VNDE_`VnoIIid^$b>?o48_FgwRO)t?!;WR5m+Ph1KX9k+muwXe4OTUN6&>r{MXfpxzXM`pu|$`apFvVi5| zJZ2}}pE&(=Ys4BwLy@3xWO(AE#m9vIKA*UzQM=#X!%D4}S&hPu#MLjb_WRutqifab z)y8r$!kGOzCgB2j@jEa6pM#%5>r|FuZE8t;yualwT#Ll5UU2h%;Yi{#7mLR19mSCk z9{b?kci$}#ZLBObAj}?)7X?DQ6PK9nxc#{nHmEGdAMxjtY)X;Xorcbg&jd_^uhhiCGKW>A3WC5gVWg(V!|e?wW;K- z&~2>j!GX|rVQe|>){zSFHlfUnQ#N9>%nswwE3B7|D;A=axPT)t1S)ZDE3D2JokDsT zcX}*-{h*Cy;MIFA)^G{%OWc9n?~TXqgB?`tV)ESz#g@4 zc@@-Q9#cxueESE)m^Y#o)@}G|0i!g?l5jS77(^Sy%TT;@ z!u`+2Ok!e;L_&VHw`3~jho6N}%{-F00#(-Ava2Gq|NEyR0;KfNpZe6jCxrh8R{HAM zq|?KcZ!pK7igF%i4+wnt|3%unz^8GZ>Eet%SV)Y%8I1ssFo6M~(THG-5sVOqi6B@~ z6fA2Iv1MD4tqU@4oY=Kp*CtpFUb(f}n4~nO2Ai$bHm&Om4sz1=w7YFwD@kwLTiV_2 z{@dMpx7l;rZFh6_(!FobL%L_%?&+ZDl2{0?tt$fjt5&i7DkylYen zcL!yEPuS(X-|Kc-T@LR?$tHvM9_0L9WwXyW&^zq+vf+SlqoTz7l%`nF&8YoK$iKxe zh4kKVBC^{XmWJ0UTO?I}z%}qT)*tnRLZ+~GDkk^%6#OjhFggtWHlNA=px@(Qo$=6? zfvw>|f3HvP9r8+^9`~^SA@h*Xx?@D`Jo2!d@alJO3yvz=N7m06Lt~+l!|qT(wW`12 zNv6hkq=GTeBV+35j>OJ^K}*mu>Zg4ZW6i_6+yOW1v4@55?%*Elq&tw%#LVxZ9!*Xq zCK7w4wfsJ-(PeP8$%5)1aQi3Y(;kh_H#uWzwOY*+25M|}c%MoJ4SuIj>*@7AFgS;F znKc8m4x_|A;XATxWDlBdw`V@lJp8D#Kg22-e=4-ozt7dJ%*PId?YrM5Z+AWBu==LL zKHov#pKvf6XO;(c-;5SkrVq)1|>Div|1)p(hf24qU=7D}F>eYt!JTll zditeP%0b_J(CD%Hq~L=8bjTQg%4_qFdoyZ6c`9g*Q}MiVX5cpwv|aR^Ro>;3J?~b| z`CYDroAE5ks@LRwPdMQ<`h31|-;8IM|0x(mlk(ot7GGjOuX~C!s7vbB;M49WpEy5d zoNxtcUq(rI4PIx+L=ueAT?l9W>%5cR)}Yout_(ZVqTpMnYz=jUh8?2oyt*)ua31g; z^6m~jWHnk7@-yf{v*1<~R)JSnK zJ7yf2p0sC&cN;xR!EA7M_;J}73@cB#KNvLnTSIDStG6XIqmIO*s^If^-#>iLbC9o#pS2&L6I^>OdJ8P*(gXFLbYMw7vp_NM$Tp$?BxGPrzhyQjnbP@sf_CkEC8_YDfZjOS77TDjE` z2v3DMx6Q4%=9ELe{jPX$@9-fxYh^$ zggZiOELIX!ds42rPR&n+_XSjb?Cg{wl?dC_jBhr$Th$Me(1j6G48SdH!hM-?CvuNX zoS8Q!(ur}u#s7pS;7B-!tO04OvTpGC@WZ=XllJiV@ei6Oy{tFwwR@U9y9Q=L4|xMV zqtfP1yFcnVBL|$!OzH`DDm|7l>n#B+WO&?gT4^!w z_Ixa83~IbrgZF!m_yS&|tH*oZgI3`QnDic}qVezZwWv?2Mpqiow!^b)A|alc~ zQM56?gWkc+r=NJ}wP`p+%=InCp>O`w{OxrC8s@ytk2_yF48uH->`)zTkL##=piJkQq<6 zH1ApCcoYUB<`hKQwOgKX8XXBwk84TBD01$jS6N26}?t8y?*c>y|%oRaw z(Q>MVGuNC+Pu3w@QZb0FBWuxGi&lD|phQ$fPFe&$ZLv8;UKJ!$Q7OohSv1&ux4es7 zfEc+Nmu8YY!!KjRJ<7xot|i?f@C!W4CHWT&Mvj$@-n7eTP6mzUnyKPuO%juBsdFm> zy-d+RD^#k zaIW7fjX%BhAN5}pl~W1D*Q2V68=?IB_hsHH|N9@`TL0VMevUbRUjO`4|8@O~Yi;_a z@{6PY{*%AD@ryJ3#g_Khm0$eZFI{wmZtVdz42v1FAy>5kbqp6U`5E8 z0~VX0s9B7RCxvR}n+jAUlN^vu#KM|vLQzPW`UZ^)Hh)UYV8oR`ENQ(ZY%;MX&R{c$%8EY_ zWZkk#dG#{u)4C~@r~#EyRkPk{^g{!f^$x8gJz*S3`YDfXq~>MgL@fIxNwhQ>(i4S= zq>wlCS!;$&P$et;5huqLxjt?apCdI<73=O^=?D|^)?>X2Gsr$g*+jvd9$-iHBgtXg z+nR#wd+v z;w;NCMiz$(y%@>i=zRV8FSu!mcUQ})=n+9_}*|M-Z@06Tnr`B*-iAk!|6+XJ} z@Nh-VhI7M`WP5@Vd%ZJO#>F|4zPc%3VJ$0CT8g;~F4>(@7*#LI18R^71*EK^#$NC+ zQrbhmi^@q$ua*q)pU2h)a=Gbh{;{Dkn*4=e!ad3j_;l#E}V> zh5;3Q5OIGptj03obUdJN;mAPEQj%!3py&rxugxPT(w;~nn@B2JhwPpAb5hQy29u-N zfs8A1yf$F-Ecp6Dw}E!6KAW5ZNDBmIc~R&v z_xc%ycndz8vo0kK5nlDx2N|o)R5s|XMpHznVf;nbS~4fixFW@7XA0$waN{wKo!(a$_qkSltfvrE{I=kc@UoY6b3rj^Gpz8p6q_k4CAmIBlWcPq z-IAkETp24%Nv~>J5f;^mw`|Bd>%t~$K4=?GN-M5jb1f!Gy{1`<(GYMeLK^+0&~wSG z80sd9&kHdN8>7T|OU6pftRM+V(*mb8Et=ErfF)~IObbGvC15ZHYYv;B3IUVRY!hl$ z%0x>xNew4`L}sL%QWFAbvK66xj>^eNq3n<>lp$s+IPm}n(gJHTS`=s2vB!EO&cG1tOBn^_I}d&spFDgkoyYMypQwMf=Na72(GlEx^pqb zW7|zla>9xu?Pe1JF)h-9F&v2X#g+$YnfTd6ayYwV(_lJO@g^rqBb1Vl&-)p#af*^_ z3NnTrB?DuM30W)Uuc?t8*?7@V_EuwR%ohBl!VViJUN8qnYl2N=W4E0)3zs#zXt_S1 z53w%VQc4)zjF9o9L$G)gHkA$4LVYpHnj2;uHisxMR=rttR1&pe$Zn!MRS0FJTCgHX zip_mkX_6FC@=+eGZ%=5&R|w+HyX$^d4IHKhjj_OBY`|vL8(6bwl6*v{nrv<=#>Ci= z&8xt(VihTF8(4O}WC}o^WX*MchTj*ig>6q!*$}1BgUJ{jU-8+@jKPT8QkRVuJWhcz z7rZZdSa)U47N=wLZ|hT%ij<+kF#|W3_EtPKPm1ex*333X+DgrrW7Sc~lXv#1* z)=E36BdV;GDRonPIj+c+m^zqMkA!Ci4hM5^fW-Pb;N=Oj&xSbKP8Z5hPBW1O!7DwqLwLzPrm}1Zg#@(EmbyVfDqbMgs zWnTrv!-_;%35+zAx+o*@2`_Rr^NM9x_-m+CcCD$jzdS4+{!JI9u2R9|gTK}8lC68^68VH2+LIhHF++^f) zLd2>U&`7OS7l|8{LYS3`9w}$^u>-Y%qM(-p&=*N_ujQ5j_rok&ZM-1n9d)N-)rzI# z>^yal8K9KXm{F!Y)l5-jg_w0w=zW_lS&;SCvRF~7VP%m@y8CgM#UWE;Ehea=D`;1oJ3Me!n&o4m^Z2mGN ztMB{O0&UY!IF0geNbKKG(VkzF-d`@Y|F`m=f~kK;P|N>bZvCRXbt1o1VScy&U4HeN ze)Xc>LiH=rm6a9d|8Mz^An`x!|7TbKe*)oOd&Ki&y^f-oKS9`tL!jwz)>ARgSKVzB zSc}nWvsSHXhu}2=Th+`IFPm$Qx`h>(xH6FT8PT|lpjq{*%`k7xSUGP@wGEW5pEiFc ztSV*M7M3ixtW8SVz2J)Yp#V%tHLb|uno^lh3PwZBQ*~5)bwWwR%g*P#v?N(L6YH;s zR`?jk_byo)t#T1VhHIThQ^68(E3jq(!6wi`fG3`kQyUD3l1UK)klx>R{LX+Z1T1!1dU=7LpkkxWSotgJU6mdz2*iZw5>A;z5)L@z62?Gdf4fpHYgS*Ot#5JiV#0SpzP zTK#&@@ewg3spTjhpT1Ef#|`~gahC!sH+233)USBx+=&a*?7Av(9>)QW_vQ=c$>25(KT4f@+Njm4S#H zu-YsUC!?@Z$|0+4jJWHbtTkX_th6=hAg02ZHBcWRZKxiz9j*+PeA(EZ;H}AWkPc>s z^}gHjTEgaD@KA0H!#8D1ltO7iaofxhF&DB~>!Nn1=BumO_0eMAdaf=~Zh%<_sl;gt2rm;@2xcAHh_79x%A#Q@x^_3l~DlFl54?@)d@w1FAbY zIIpDR3mzd}9*hjAA<4NcHTnC(3!aou@YnnW5VoRE2rqb-gA2p#6Gd~)!dO>aX%B0~ z$+(NU9Elj3gk|!Q>71d!{-J48@%@OlFmon#tMLBKwtl@KmRcBTdfea73a#BR7 z%aV0jc-ef;S=&(;W=*|jk*m7va>>Vln@Gw>#Jqss4%VcohVvPtGjC11^a?bmS3ANg zjGXcTVG68Vl#;S6t+;_Xo~9}zC10Pg;xt+cgB8EzEBdld;yCWpI+IF3B7PgN7AF}6 zQ7D7hVEBlsCfQsHOp;AZn`swgW`lx{HZc~xscKOynCQ}RNBq2t2#lYW1d;LUU8OKJ z@N+iqJWi)u9rx1AM7)vFf*a${|C)Xq?8 ziFT#M`FK%P!?cUaLNd&ypw`Qnh@6W7N%}HDSmsz#$_}KIc^B-aRdOUP8Anq>SYKeikPl20WQaKk()N6udxsK+E%(qE02f{5=V=6$yz z%@I5%M&<^RAt_@#q57cNL`Af@RI6xhQs={9?*!Y-fhxEkZ&`)6oV26VY zA<9MIVqx3iU>IZAXfy`G;XpXico_rO{r3{aUm82KpcT@XuO+itn@+z)5;f{f9d;~R z6s4?G6vcYBh=N1)rDC#PYR(rE+Q8nKOxDA-kO6GZyqv`qibUKxuPp49Nzg70q6#8#cTFOi{NTN2{jGAiGwrLFp zgVAssH5Q}6fUlXtNisO;x5`vwZz?dw1Sm?=R;MUhTd!;DTB=TIU?$t}m3OOmD|f36 za8SEjlOj?TP66Jv#?g_xcWafq{dbLt#?6K|6BvpY^z6{2eh5V`j=@HcRczIS^kQ#P4gQkRypYWC-tB%54X!dtzKX<5lsD_&Cso3V&D5{blO5xg2z zbSM@GytNr?{NGkJi5mZgN?mGft6R5jMLjk$rYH@Npj0+08#itoQEIET#=B7(tC5k$ zN#V3aTc-=_#&;5+I&>W`_(9T18gk709%`qm@(`F+#lp)1X_eu$#Nc=i}Q zXb2-958*Lkme1z!5Wzsw?9foT9~4xiQc<33qWk-)^>03e-Tq4CE&yTW6#iDNU{!tP zmD{g;>NcuZUis83jW1(Z7BvRYgREC0r}|G-qmgR$ROM6||9>h19C`UNwKiD3+}Mhg z0}%8?!f5j9CiICwB4E^`5ljsc+&`3|sVP0x`sU-U3a)oV!R3zNnmcV`r>bsAs#_X& z46EBH)3=RyO=C3)p_|lO^^*TyqPB9%Ujr+sNe#QvpA;??ZctJGD9RF=wO13M&MG}qC$nx;2gz0#06!Ca!&94?in zriP}B5X`p(02dQY;F@rGxF!quJvsiW+|Q@Uzc8d*tw*!zf3vWRuzEWiFb{ZqHJbcLyXL(yroU)Fq0Nlj-ry_;?z1 z8q<(sJB`VuDNFjOeDvtil#Fp+j#8}#Sw1Rbhr-Spv`vFJJKMakc~^7uK5DIZU-Rtj zu3gyM_4uRBTFUbHsErClp-+VtwCS6^Lub*1Y)npde-4m+==slV5Z+v$xh&{FBNz4^@tS3I63 zkH_;W7SAS+XXQc9%BGbwo--@h!{5$$HtFUBIW;HC<5-}oWoU0%NXc_^@|=*K6R_^u zJVj~VRE2KgHKF@plki%%keBfxLC7~Xb<0gccXv}aim=&4o7x1tDFIW~)0?r^C<2yr z%6`Y)FbLy<0Ie#dsCCq5G^p_#>Ga%ORJ%@-ZX^bB4fQ*xrKl$N>D1}@)AH%l`20M2 z2Fj_^6#I4g=zJ=J14lFSsd;ST0cPeiM>CmQx1PIo#^bs5-16Dwrl#elTer?MdCuNC zyL|TSS><>2ZPc-b%XgjS*c#-PzBOs?^*JC%R`<$`ZHGG7-7Q0Th)7Lr5 zr@Mv#P^bSI3jTKO+VyMEyVbKk=iMsWWq*G^vU4c8+}|(DDTvY0qYojk#URh`otO9a z9P`dcWf_WkYG{aw=^<8A%kPcrV>p67@{HB02Q8%6TY=GWz)HxD9XpnGsOk7I4Yqk zbVnsZF;x4@p)y{Po*r8dxYr(ODVek-p*9p-Qc{yWJ?DF{T)2Q%PEi+1R1xi+))dWW zSoa00gu@q#r3)7>w6-rGc{IOiadFe4ZqufyF287`hBrN!-;~ei7av5mY4O1aH$C_u zMVJS%(RE)N^=8;gtN|-Dwv`#OPFa_fr8-(<9gQ-(v~=_4&5~NWsn)TfVu4PEJ%dfg zkiJ-0_LbK$nlcU%RVf27P;hOy?IxbhB z*1kD`J-j2e%h2JMq5dOK>!)l`lhBgTl+d6`r>%h*M$|2mq;5fZtCFCo72FR+>cL7< zTwPtrH*mS4F02%nqBs@^of)UrqzgZ#qob6T zj>YDCSg*}CB6h-#G)$*>Pbb@Kod7+ZVyCu99n+PHMd}?~COtl$S^k_j4y~5C4l&Wr zGLT#@y)OZo<{+!wwd>cf1qp^Dgr%eCFiY5AkOWa+VybuVQndGObtA-~THQEi+eq7Q z9?RHiJ1yWY)41cC?RLSwc{7a#jRjN*bwG1{`m=M8NNB3+#*MZr^pY^$ogDbdgJ}kw&t?<{k^wt zEiOLSzS!P=|8wo_D~r9THZ4Z~yB89-xTu5FK|u86P;)ayo@f@Ph8T!v^oM^ocA->) z+(Jkxd~*X`NXe~|F|AoZ*7ER5{>(}~zmi{BdG5^0%8@hJM6Y@kuCtZ*>KZ^}${f}) zu)&jLU2_l?d1?w)`3qn8!Y97?h0jsz{9nS>7ryYhFMs9BU;gs%ez{qD?yFz>O1V(x zRsjogt6q-FZF__(=W-lZUR_ie@c=47N6;s2p6`lkc6liPrtPS#GItf6t#>o=PzNO--d zEk%*9t~CQS(iqa`ccL5@yb)wc+DjfnN*X{(0LvsUCDPx|f3<~%0%&oU@mwPP<;VyC zL-fzaApC#~c#WU}c85hu82M5wZ4792)I&NLt>wzGx9~RR(+f-m0JHRZK-~uRH8+$4 zMK9-dT8vU-@HY^!Ig_C?sSKS;<8EOCZ$=*tG(hnCzOT~%g7ZodlPHx=f*8KC=AUoibz$q6X2!4>fTRKD&L|aVMg&VxW6kKlM=VPLkH^G3On_ zgu_Paj|^cT;((Ft*E6uUVg8+ZKduJv6Oj|STI9s)#y8@*6SZ6}lEdwcebaEK;BKbWLK%R3_X#afWDZR*qqKxOiaKWqon76 zzUC->Fm*JY&IpGN37O2oA{4eY=F+HhbEhY0H%C>G6_%+#U_<+U%L=KK^AL*`ep?4CL)4KSRR`6RPrhTadc zEfz~r3RhSxV*U|but>$>)asEr9Vc-nHoZ#Uh*3>r!BeNor*LOZp_I$DQ>Xg-E4Af6 z6e?XnUy{0YP?l8SF)doNwr+~GT3XTQT3aUr{NF&?VK8-yX9BGOL$o9M7&+H^r2+O6 z;oISa;R;MZHe0V}uV#z&V*N@zd*w>~DmVo-3v;jDVYr5)mLwJ(!*U$P#MLp--z5JQY3?8G7X&ct#zV^m{MsHk9i3zGSH5YD)F4t)ocKZ#XS_CXX5KyT<5%{?1Nr zauWVEnZ)GBMF0GH%#ElacmA$n+L`4qpufWym*Yl9y`!U$Ok66<7NWUAfznU=XpUW8 zAWyK*7gF$R)~Tul)Qeih1!4=MtBzQX<&GVLOpj^<&D30h!_Kk7v19vVH(=s!ka!Fg z2COC8wP9{QiDC37?)v`yxf83o8nt!+>Hunb6*ZJB)a3G*6%o1fWbow4o7wu! z?e+E9n>V*-ORxN9xOB6Q)&O5>LxZTO*V||dwPC}Co5iae(6x9&1|~j@+!Qp0W@c_- zp?kis`y!+gGI_Ck0s9LJ(MWAukW?1{4E7$aT?{zOSKfHx&*YpKeugB`zH7^Se;F5T0 zZ0ypQIEGRs_c2Dw0F0D{-?L7atY=A$6|P<_;aws>;$pL@*eO-MA6E!QQxW4M?VN!~E?Qx`2_`S`62&l_TYT64x;>YZ3CC zzJa~V<%Zj+DCA$*mzA#PR+g7nuq?0KLRjQgENB5|y^yj(;gLrkDdZmU7QA>zyB_Yl%-=fAw&?F^ z%H&fmcJ#|(RB7v0(#ezebJOFP=x};k*s^7H^+axUx`V6bAaG<4V_2;Ynxw}Y&e%9D&&hB(Y5@7s zO08U}k!PB{IM9Ep)_?o<@!N=$ueMV(3F~ASk4ZgVldY}!cVQB!U^D-nX3Zq|bhBo} z^jnM$NSJ)RnOtkviI*->#0_LHVmlAmDV{%%3EU|e$a7@mym($5(Y8C`pDSI!!-``6 zj7A~#H?-R9g$vni14qzp)IRK7xS)lGyb!%`^}^LU$f51fGinKLBIQ)K*S9~m zy#yOVIt@@f{6o!yl;-T`@DOH=Tc4i*0*&-E#{0Pk9$0?nf#v6xA9&#KVR#m`3VFaJlq+yFBA3YzjNVW+5~%_VS1V{7o_(#9e<${4c0Rjr=giKXJ9izv9 zv4Lg%`t9qtV|oX;2kY0vimumEGJ?V|Vz?i$W;#ug{El7#C@Y>jH;lO{-!?q_GPXK~ zpJfdd&V zp%Nb%}LDL!We*Bq1MRjMhwR|WuUtx ze#U^Vd0k{gFG{fU+w1l1Sxj=K!^5N28ZII&@8U&jE%EZ21*%2MYA#w$?FRUdky<$) z7Hiwe+qOl3&&bd8`6hSmMC}CLIk>{frEk@HJJh z1DiT=U!X-OtrJj)a?%vGoLb5WWa3P}Zxv>Zv81DV@|O%frRNRke>OFxT?>4fKX>+z z(Rt(oSAcn_q`x974R=)OQG3px&wn;3MbG0gg3azcuSlXq-rLSJ zq?$arp0S-5Z(@QR@MJeBEqRBIF4i$$GU;H4i=bS_1vvx8Mowqsj4(b<-rFXOUtG9| zxB2THZlOt*FM>gm7cMqkT>d8r0Flt~i?8w8k80OxwXb|lBk`Qz?COFWU`C;+wdlB~ zNAFLtWI7zsc0(~l1xkUN5Y%*;>}E}fY&7f2)zI{qHd zueOc>!!erp4h-U}sn_q{jc%%pzSRiK(@OrBkRvVkQ5JzNfk;9$rGsT?K`3p5#S!uk zKdgJW@8O1O5Et`0oh}b25lRVAnm=bIa~;G_$PZdH0rIykB+fYlk@B{3WLsogE?w4a z^F686%;Fj+9-W<;eRO8+?An>NYiAzCdhP77W249J{mVgc2;3-`1W*ZuQQ(Zi=rMo| z&@s{L*T_3ev zd>9~V$m?CL6$+42Z*G<;d^13AJ)9aBgVhcjsbM}^Xr?54!jrXHy8jp;%pEdG{F?a!M}htAmld;ue{8_ zG~VT(>CnMKl6nUNQ+d~}Z|tR?f^2{P;KA;L2N&kyA9T;pgE~Dpk6jrD)7|O3+})ke zKbe;o(hJ?#@9usQOWtaQRhs1AL12zLTg6G%ifA4d@_T?kY&>{l`5t`U7{J_z8F!qi zj!4y!vLuSpbU}_v2r7(#y|IY|BVGd}u2Ut9T&meh{>Y-+noQb1B3}h!E8*5&EpF&~ z$%!TkHB{ezvz|Agz1FkoF~j|b?>~Ixel(Ob`5y{r&}hMi6SG0X*k7VCea(v)tr)i) zqsNhrJVCFnDJ$Yo!~ueiSOIt%lUG1QNfpy5@b7Cg5QNB1r^!b3gZKk;N=FP%piW`f^xj1esB3ybaN3e%)yFs3BN0I}M5&g&iqQR^`|IcDn|JY+t zcG;wM?VTf3vm5O9jvbF>lO=6QYx-kWQ=;^m68URZCzP}!dYKL<$e*xa5)wquoD6^dAt?Cm0B9yUUgT z2BRoTD)}VC6Hb#?E#*~`lFbH!=4K;JoOGJRP$h&QO$Y{Xpjilo z5EqcTsI||3mhS1v*9E|rz$6pU{IS3mxn=??161C8KZ;C8^+h|eKbM@FxWjz-8etWZH81IJdY zOy0wfRxRRW3&$66<|$@S8DkUAxp z<7RTDLo8z2FjyVh*-U*ZcI;TJaLijcR)}!GCY3T4@H=HrNp^K^Np^N^0khWyJ{I8< zgo*f!oxw`_o*Mv}tTXVPM$Q;c1fC)`9?DE>LPu!9k8oZ2GT4o6a4P^Vne_}5TdvV< zavR3m(_Oy24O9Oa;KJgC`KQ2xUf%j$T|>y9HIhHnar^cAxlw)-%kAgb{RJ}EzOQiK z*YA7jKD@tv-+j@qzx4HQeEJ)o{|3sZ+qCqj1N=MNG`FMQ5*P%0u<-ZRn>`k%p56>{ z5U&?p@ z=-A2fU$c{+qN_jogH}x&HRGo3Xg-J@gND?S;})h(5a{WLEXnORK_nzg)1Qj|)SXPi zpH9|yY{$_k2J_HNE_Wl0);dXEYsGNw9B?n%=leQzcwoyRp(PM~E4cP59hfwIvRyaH zUFY9yiz;CK3$bhWHj5yN`vJSQMaXB{a{ZA?f8}Hi2ew_lTyso0rVtQk--<^gMjc2{ zyEJ;c%7Ivp^iQwLoH`Xk#Bg;K#(cGc*D9864=?w5mLDdwHpa8OX%mmZS{BJ?S-azv zM_ie)F3PSiX7j zn-|Ha%&;Ch#4gFpZBByQITS@ybclbiT|oFu>grMW&)fN8Ge#E`ySl&_1Mr=n{;~l9 za;0;G(gFYq6GCRfhZ-npLLfQbFp&`^CItS14MZjN{d-}Irj6&s1lb^em^UCC1zC&! zgtxVa`y<=r)Ltn1qfjcTy)yZ-kz5wZif93gg5-9f{m&YmH`w@%IDFVRLq26hFrjwu zpUCSS&TZRH)*>R^x&`EM~Cd{;p6Do;nNrD=})9DQ9u|t8UNv<8F0{>YX1FoAT6QD~CAi=?X-+Km^ zgwE6C&)R@4%4C$)feoeFDJ^ib)?oUgnS9$E{Yfho`VD#n<1YZ;lKAwV1M}pIm{&b$ zI?I1?-U+RUzALaR>b-w-FKtB>9BOX;W7#_SR;v!#3+c~Ie`5lN>Pe|C;hn5YIQkfz zmwKJNSA;KiNKY16Xj6>w@EJ-MESE>Bpkd*3iB&`-Fl4Bv`pVleyNGt6y6(JfOIOmi z#g^PCR+F%|hb7u3@;|cbK;IIxmFWbgm`Sb?Kr(d8^YbLw97j)?g#~%Od;T;S2oN^$ z7=Sjo7Pwke6WQFR!R#2^e)d|7wU=>;*P_?S7YsU<-OnEsj*XS0${6U$yJO0wv9hhI z*pxAt*78^xM1n%TXpq5%iDjEujb18~x|RR)Hl|uG+sJoJnmX^(aUjC9B~mBkMo|LyM)Wz?<~fv@VCEp_r!n z`^j}9xr>b2NWWMR%heinZmwL#&zE7Dkmlj)blD(4ofEW7kEcwRTe)!>&I*6AMOUfV z$j4gv54UJ+rGGgHNF01AJsmL?Y<{bn(%tE>Gi(+ zYm3x+jG2AbZa}}I#im87$(Zy6_Th+H@N<9xy{1VO#qI>1Y|lHV!qyF%uw6?ezRS%)04AMoStv z9%(A`Ff-__zn6GB_wAMUrV(r`+wg-M%W!L}(Yw*RDAC_#VB%`#A8d;LX{ubSme)zZ zOk0y%wo1wpx@2uhD&!p zh1c;QUblZ!^E%az1t3UBQ(vRCZPeB?=7sdk=4~mq!7s! zYR!CuNLp`lBP%AWBKZW~rHZK&+=#fU$!sITC9Cq&>-obnom>ZB^+E@&ZY6Iz_)jry zlny*F8E|Tn_T!uc)-_4~a6^*Pyf7~}9hGGW0!<$U{F3LfBhwf2c?iTJghQ9lzm`Yc zAO#or9Tt_OLl%&?m$$AO45R7u^3dPcp@4vU02W2p9GTA4SSGq76=Dz%C z@R19so`l|5$oI($3;BF%;dGu_&n-NOJb@^3()5^-GkCI0O-3q@Z?jiQ>fTAO%p z-;)n+x*`^JokR#2!M!IV6)8ot%6Kky-LN zrx%}09Xyyy9ZbOiCM@pDxIq4*Ta&^JK^h_YJP0>RN2+b^j3AXt$Um(DS&)}qTq#*C zrl<)TAu5clJ0l)SM-R;%O4Dupwf4 zCR36kYr5!+X_}jU10if!cM9%+WkN{L3lpg{ra&hBy6Jan=J}F=|DzUgw$P=>FQe8l zTCKUn|2dBqL+QfEIWr^rdYz4NNL&DNnUG0#gZW>b77jTKRz^QXzHO(G$n>uXT{82qLu64LXG8 zqY*cBBmxvype=7QZwymf{!+_{p|~DUiHqymILBe!YIca#a|oUc>Ep5ZP@HFUMD8N1 zX8sMGVXP{ST@v|zUWe2c1T>r?c~1xb|E$g#-x#V)FXB(2>2sm^3KO-MY*%2u~84xog%-lxfS*paf3Iz+<{g^ ztXuWQR-^F{|EEUokbLNnOsxy1k%pY{`OsZN7{v`B-?0Qimm~1&g&U4KlZrYZd?_K5 zrlEV%%Tt(WMVH3Yj!FiGAbo)$@mBi}Fy@kP>tRiXYT|qtY(N0$69iux5j0A_&nMs~ z1P2>)7#Yl!jXW$Qr=fQ6pJ6mp=CeqH*Tdh?Gp0>#rcpvQO`Jatlok&HYweH4 z_Q&|m?OH9lWM^XgZ`?5L6c~_oaq?6fDQ(ik_-kecu`ZT;%WnRzMaNyg#{aQPhxnTP zXH!tq&+CNh#wc9-jpVaBvb&w!(rK#CW2!ujyZgl#Uz~ptjja2{`DW(Wi??nqKXB{* z2Oj8s0A+c3*REYHyY}tcHPhU@Yi5T01*ZDaf|LOOZEgVt^IPL}q4%T;Y%|2i|TH|zLEG#5UXlRV%^>m--R(^32K}f{^XJ&VSpWQXH zXV>hWS?V#(EP2Ds&EVJ`@?$drjQFaE(Z!KK>Oea1suzri7YQJ_T*14#N;F*-AYmX% zTPJz4RmK{bAGXd*og-wy;;(i#vgedbmtfMHUc2*+$){iMd+q6`AATC;(D;0M{?L3n zGoG411b=QXkU4le1eD2RU1Uu+`O6Oe?*s;6olXG!r=+L^ULH9bVrOLpdQ?%mTrOn5 z0R|wM1dKm_*MdQ1RB6f1qOCQiX2F1In6Lz~*SAg7!a|5`AKzbfxB}o zwLY0FCX?WQi^zAmxgOhyMkUE+y#Wa@@H~mRvzfKPl7Spe_7Szk-`CWaZ+fi{mZu4( z6ZCu&EM`;Fldr%28V=|4efd6qwndZXH+X0yko<)vV`}pV(4A0`8PmUdmMfYG@~8`^ z5hZ`p3K5;iWX43|((ePzszPB`#zt%*0GTqdOW6kAJwm?UCD=m!Hqa~tBX|KJ6Va&2 zl2EG`$#}4=Nby7l-wtg{5C-?L9gpF_W3art9wi^z;Cyrj#MI2A5FbkKoq?_Jzx{CU z9_00bjd%9;K8qvR?+kVT2r9B3=rzDd2l=Apa^epnTSmI}RNZ zd-x4*(^niE;-g#C=u!I7!RT+wGqbZZgO3jO4jw*C%^Z7s@1AGz#mFDrki^;Fw=HxuIuG5)XZ{4;Iz_3QixJWT95h>N2HVXI2N$?CuJJ<{Vh^douoR6pSj za02@1P=u^CGhiZ4<>%>}S<B zfA4Gj4`D5eWpS^xls(b?PI!EA{K-OB|WnsEOInw$h|!p-RqsKd(Mi=&>LEKflCSHaIHxe#>Oa{SJwlRvM+^CjcFqMrpiFc5Arf>1L)DNj zWR{~)SMX72@*=C7$b`umL35k`j$30SU%KBA2;UyU#3E}oL-+3J976^2X}2Zk&4D|M zRUQhNhq~cEep}BWX&O^U-reX&W*Kt$G_XmiI6H4Bz_1iz%N8=)9KVdj@JekPVt*jx zF4rQGLjI-;GVn6_SabBB_$?g>E{$I2ugXL&>x`0zrcg6Hk-jwn@e@7DSyFIL;~go>cWNTpXt)kiRg|uFpA=Q-)UIl)AM~V zF1+~S>4iS>BmUz_9UMn;3}bmNvpQrfm_D&tyTMRITnxV9FiVcL(XvebzgDy!IfBbY zm@NmfURsZkTcn22H?jsM2^k}={0x!2J4VvO-)lznr>`B1FDPPU#IhtQfP2#OU+Raz zqlFOjWsjF(5Kn)k@K#9uk>+&}j7RuW4jM7?CLK~0qMs!1lML5#$lqc4myBF4%Cb4~ zLL-XLBB_V(awBWM;d~-^QM+@PU<^xY9} zhaHxZ){NxPAqV-Iiwv}i%#Z^;I{*NtN3}-N!}pW5227Z>uN4gb9-+~dqzo=dQz1gD z0e(1A?C-VZKL+?$tvc-=L5R><(mJV<(|PAlIw*TD@mlGam8=P!KqlDA%rht}E6+T0 zc;%Ug;mp0(@^tj|r~ABxoL5Ut9OG)oj*(RahXULXGALM7Y+%U#E^u|^RF}7W7pb{- ztJO&PZaH*w4yYHX$VshUVM(#}x9VtwJEMTN_<=j0J8QBDMu+=cIy%FVrk}y+v23n`tZ2xToJSpTF zl4d<{M3UU@V}Knx$*MqoO6c6Pr`PRvBjaq(9=CfBIf(e6eP^_!F)#0>&1UkF)4WG7 zfXe|plSfv;;%i#uaTubAFkdKdu$!jXU5TB1|HY^WLc;{Y#AIRtt@U zAaBpdg>C))+mP&t+0r%T{0sLAjpj!_vR;SWM^f5+=M4&j8sxYoWRjJTJDpvUOb#cs zog$ca_E76+H9;0F^zGZxA0f){ZJS$fME8Y+K9NY=wqE!g`EDDBTy@0EpS@2r#lN~y zvu*ju=)I)tKny6GE%G1lChueT*E$SHZPgYvP-f$Oq)*gPrsoj8rAWG4Ms_)%YjQo* z8>Mxl%U2Q2b%;2aC?=WG3{mgupvXtM!TQ&4Hj?8?=xs}1ae(4w@}E2VhcXy=5Z(wr zObziJ_r<}253#_ku)hL~aQZ-of7(Q64v-72q|ywRYyp1%!UDPnkaI@={K5GJa&^#8QrzmaA>#FD>tkct(N1FN3@q?JMEPL^zRSWe5`2SJi75KFUR9-R+lbW(7p z1mWfu+V_}nfP72mOe1R@*+ejWXMf-DNWqJ(C8G`-rhq;OjTphRM!MIwZPEU11e30o z-$Ys&Vd`b4A4hy9{nHsx-&e2JOB#~j#FdauQ77B`WU79( z(LoJKV|CJLBOfty=0LRdf06Vh08O0f`!hHL6Eb--3`qzO$pi?7OTrcIzyOge91W3z zPy`gksuivEpopTt8QbF03T3f4vMceJMyKO02x5xIf?Y7-+TYIz( zv*7`oiw^~;^u9sEa^R=$VB)B8YAGXmDKE3R{Bwi=mzjf6;X1tRI&<{ z2`Dd?FYm?%P~{lfZ4A(cd*bc?rcoQSi`cAA6qiNgu8T$rc1hX0c3m7%ZysD!dmF0H zVOI@#C=vA4%S}o0jY;x#DNF<_ir{uM0ZfX=q=8Z_eteXw3TwSadQ3&p^
        7l3U8I@0Jvuk%*sy9h{ezp&>-O5$13LO zwGc|-^?5=mTx*fb3vo<`pdhT5PPbUuHnnciD4h=>I z2GD^9B6v7}7YC~1@f194XWUuktfJ+%ws=+A8BbLKO^DTxAMa~|82mteJ&dC?tf!{* zc&yX#{g%N4Ornh@Vi*UUfEt!TR?BVMmrU-n^LV}wxy?^lzi8WsiDq9CM%cdOi4(aK zlXFuipTK$smhKtd*Wq@Qv7=F2M;0xt^XO65breIl!E7e@*JA?WSf;8LNoM(fVx}Hy zY>YVpb7+mus+iMRwM^46)oaT%rxP2kF&;0JfA_!_}D7Yiq09&u|g9&w$PB@A1>ycCn}DnDT=CDZd|9 z^a3m!7A)8@Yr~JuUoZ=|4GVsJP5Y03+`jSpYp!X(rXApq)rz}CvX=A*=|fKg#`h8s zR|gLr8Xnv+pr*x<$GCx!Cy`lx7~|H!)*EiPQNvu2@z)#`=nZ=I3VGjE)^dgj9N*y-y=Z-({4O1bjUU)pV4j9nmjrpC&{iMkal zR@4Q0yyKPwnn(x6hWJ22P{kGggmR-h8(z_}e&hD-+YfBm-g033_VwGDZQ=F}+t;_X zPQWD6iuJ~g6M-GHwoPD;ER5&oxUN=q~y z)m^OUoy~N%ES)ambLpBIcqvUOsx1?neBdUd>{xw0$W-+{wXsaZJC?OniV#!AoQJM| z$ap}+5TO5rv5_T}Dge)d3(lgY1h(%ixw0MxaTEUP>zj2Ikxd({-vJnh5p0HG9}EoB z7e27Bcpr2LFrI?kmMX56E5B1P`Ovv?|1iGC-Q%tC)z`2WZ8g{@eI6#t8R!{aFU+W( zW3Z;sFOK#2{lsLh8m?KmI{7Mp(@iMUF>~fkH_p6CpsBrcdY53C)7v|{7t0c3NiUO~ zy-VPo(nX3F-U2+;9!UV0Djqs`Ncl<{`RmBP`N2W@kHjAwD3&#kj5V(Tmzm)k@N=FGUH6CXUCtUREFbyc& zF)%U?tDIliufV;r+fm@x#n}s&yX{afDdN$P;083UY4vFUifLoym3Qj3BCy#|533!w z20S>@(9pUAPL%=A?TV{*z~8#+D%>t_o!HV^#4TGUUJk@%BC0y@1MBH#XQX|gy{&b9 z`@jIKfwr~*fOEmXrcE$rg8zr3F9B%cO#7dK2~5J|Ve*m;lLJT~2?-Dq2sZ&8Ma6?d z6hsOrT0{i|#40t|78MUXs;$~x&tliAJ+$_+ccrb}-EZ4|U-xQv+wQ+?x7~JocYE!2 zyZirT1#+oCl9~5?p5OKCXV=YZhnxeB^=<3cx7Du)ngwL5ZEa7_+O@79E_bpIK&E4q_R*r(3QHhEELGF*X`Jmv7^qu zVn^qZ9oCFM{tl41JM1)1FX4TN$Gi16t7A_8O`A=wLbXg8yBQSjm{M*%6DyfhD13okuj z5@0EE!ToGN9loVz#%D=4jRl{CoVTu)Ul4zvHfkXXIZDv4#_?U`Yv@k`gi}L-~=&g_$ea zjY4QI5aYdld+BXk5fGrgfQBygUAS;z*#(~Q2I<0uzCQXec>~YoUA%ZPijRwcg`)I@ zC`2MU$&EYM)FV+eS38XE7=?!VG!p?BFPdajwEP{+z@S|+#lF`aGtib2Wha^OO#Hic zX$ys2yIppl-vrRhgm=lbo9<(@EUipIvl}0u$!nSMnZU^DYrE^GVqSg#qg?1+M#UL* zufh#O3_?LC(7QDm4xp4YNn8d=k`t^BNS!qf2X$o7Z3Y@Q2&ziqH2iI~L*D_4vBRw9 zp~Mw4u`;4A-@;-f*j^Al$cwV5I%AR%%p9L|?$2YMaUVOCPA@rBG&%*KR_GTpT}~I# z^Hk>~mS8IYUt~055}YyK0C+4FUkI6gETs%r2E;BI3AHm25khoIz+%f5W$ZiS(dqx= z23^l1JPCVIG&)GD4C-J;p1L%{(G|lXb@*MgZREG1N^{$QP$U7Aq(?;dy^6_?KSvm3 zyYBYehi|`qaPW2j+Sq#|gM*cWgOS^TZWTptAH)-~pzA=7BO;_sZvi)_hc=cTPKNhv zPjU_Fd&;!L#ie3)ReYQhCn@w*teyBYqZK3{un1c?jH3f^Q^*~TVK?EizddBbLx*i{ zTlg?m7Y*x+rj^=Cfif1BhDt+4R-3gHjX3_Qw6xGh9k4uS3cLOEaHis6=9I3} z4s3jYmr&@BW(!i`_VKkVa@?Obd;``A`bNI&LDbTY*fLZ76g#6 zbMhSk0zMW0%+c&{vfpH~4>G5nXj3iIVR|oBJLtMgh}ZM+AwAxFJ;m!&K_=?xv1Ggr zSju&@&>-vefEp+NMgjHQho~hHmE}W|49?RJj6RF<@flp6Zk#!VG=Ic zw@K@HZq_;-P^tS+h)DO}cmMrB&UyEJ4*+?}0Gy|>IF(yUCN+emsk(Y%VxoGYy3)xf ziW3t~dfc7|fl2L?@-eTl^qp_`S+o5gSMh+oB(YJh4 z%W_a^G2(}+UFxRg%UhOh>H(iIYbgh6U3(WdX|>zoac6_J^<+)m%cbFWo9S@49a@4J z(@S+JIsY7q?F5SbIkN!A<=dcL2dS*n`@PD1H{gq$l23UqpZ-spJZJ`nVa+d_!VMIU zWo2~5A)yMiPJd62W!Y9*+#VacDjSeUL}J+Jbx}NQE#X7Z23(UQEQnj`_a zyk53aQNsY`ZJsc_Dxv~~g7>$ubLhM3*;6W~?_NYZ4PDEBY3|zGy`C!sh+xFaiEc*% zfm=w$*vv_9*ogl})NgQ*&XR!9?GRrZ*q?A0NDp$riRNTOksR;ny1*vAq6P$Uz1s|W z9gd&LpJ`v2@qS~4n!GAt1^F`DiPa5YBYYiDN=}}MIs8N#wDtiEv&4`Uk?_JC&i2^c z9<-v_z;!%_ryyjtxh7QiVGu|i?es$y*N#~}?hcxC3LS3D-N8{?2>g|uPpJW=4uTIW z@=h$lt~HJf7wyt>4)SGUC4!w?G4k3->)6?0Uzk8h-@G$T=_7*0! z8^FAc8P2^j`6?=E&P#8maBiA#0SBBI+*h@4-@b7wOBSNzIXhxnO9ArY`yI@jN?Sz% zu*56KG0TQQ5hv6}%5;mv8z*4@k)kMYl^fGl90^s`w?}9t1QKFo-$cwAy(RQ2G8f-Z%zlsr8_H94^)VHuT{N!uXd zmo3_Rr%+TxBW58~!2TrRh;_7pNxyWdhp$ zd^vu@wD zU#}8SCZ#)QiOlM;Ea7pPU6-6dS>ge? z#K-GnDGo82DE%i_26_fu>g!x6SCL5ym`aB-QZ{=EAy`hw*e$BJnU5YF0DMgs)J8zr zr|P$%#z%Fp;iCR@!|4`QWs+NZPB*mB{#?2f@pf3JCfw|R+bKbag8tm^$B*=Tbb8Li z#%!XugV7HjL=sl(2_s_T#pxd*Mg9(H-z@q1xH2rF8crKH5a4;uv?XaXImo zF0?e#4L%V(xNEPu@iH2f%QWO8OwMj;;mvZ(<;yL5NXv4fo5PlYq47v_66HO~VDJI)93Oe$_ zDrjSM#}O4DbU%~O&2FF$#ks8Ure%%GPy+Hs=Y__bF7z#fq<|nr#4XB?UG>qhBxd4d z|0{&I^qCdUI?pav^j1=~U50k0caW7Q;b^GDTd&jEs-(<;BxgL<{Mc&{q~GgH772w5 zMI888a{HwSP`x2-`}X}q7o+1Bf!8A%@8bA4LUtjO(ypRBlR_Y8W zLN7W8QIKAY3~sF6xN&1SzACF>Dn}oTbkbGnv19*!OYHJDh!G{HYY?I=b0T_VkZq>K z1OpjNi8MBbmx;#E-u&HS2GEk7<(cwLR&rTPwZ@vBnj9Yxf3W4n#aIWS3oE9Zlk*N2 zqXokHZa}cMjUd;>GmVJ;qL3sfJ9-(vZ1|(1> z`G9D-PAX?YexT`TGs?+_;3hYVz!m6fX3=&Kc|gBA!)h2`^j%t6Ae?Ux=c@rNKWtag zX_g9Vm~L^PjMfRA-6(-sJ9CWOI&$jPk&#n$FoiqCUh?p-j(sQWtH!VJhwlM;%I$t& ztz-`h-gbH^T|}8c_vNS%iR85VJLq~U@G-hQS5$McmS#gRs6)_$Lk(M3tmw3c*|t<} z1wECEqIf7-mm%bZv1;dk2Z@=BP`9)jhBQ=X=saBxTtWna)-5K4;1hW36G2B>V`Jm; zP0Jxx!8IEHWw_tc*m@UGfu6fIH zI#EeIHV2>-aO_&;Sf_SYtpb&uL`%n*uB!aJD2%2!CC0giX?J4Z>6dHC5 zra?uMX_to^q%;+z&>+fUn|Lr9_1uJqeD=`6C}6bGum&_dT#7hib7?6W(tP??kPEmT zLijP4Kiw}uFXaW=nUmvJ@<5hO-VBVZG@m`?!@62J9I2#FolYg|1Cc@#ubG?-s|PE~iPY8d=j=Mj4tw*%_r-?6#}{Pb2D zS3NrSOnAt%P-xS1KetpO0TN!BLLuz0HwatO)uxQc0Y_i zqgO^pary8Sd^~(*^x@G}{9Weml`FfiT+#hRcTQco5=1?QAe6!Z`(`%0AbM&yvWGH2 zF6r4_p0OA4v=qg^oBx=a(<8tgcJ0pDg$*tT&9^rPT1+n$n>oLdWr0gdlUcEsH;cQl zKQv}wj)DPQdP2f9t4&DQvu7;91i=~@UZ-W0lw^Cn{|H3X>#V9E@fP8oH17`2V| z)TNW4{K{}8ezdV31my&bBWUh@K5%L{!^}Xk!G?Dol7MNu=u?O2a9Ji-pp?|X$Nf

        $62h3K1#_0g1Phw>fePiYJ%m231 z@21cnRfCvbq7A9smlPCc+$>U}o!uc-7>Zem+T)_PGix*eH;3Ys&?V+{D8yq%LRagz zQf+d^jO2;J%3|7uBQFO+}{$(w$fGDwJp8ShWjtr`wNuMSZZ=`9{1++cU$?EHT5c3*~8Ag*lZ$jEX z_(9|w0J~dyla!B$8F|mv!fER8VRzSnWhZQEwFUEGe2Te7`+sCwHpdR;hq`27qLjQg z8c|a6Ph)>E1XMULIdEd~T^6OL2Rnqz$(G~3uvWmi^IbaETK2O9VX;mw&vd=&mK8e9 zSl1qe!6Sr2TX3nw&GeA$y-42; znwPXa!jpX0vOnXZBbl3#7061=c*z8iIdh)`r|zsFG;@Xs0(yM2fvnTudMv?FJj@u7 zVE`#SZ7r;Z{EE=4n9036o?Au#HtV`7{JK+uBd*FN>*4h&kA`?HfyEc+O$n{^wOO|V zzQLL$^3MUx9Eg|4CsV(YF9x|Zo=y)ANHbxblml`7$Q_Z1D!FGoH;?8Tfq;}(Teu|E z8lm!C#e0a}W1Wj0d5CO-4O{^7`YHQ*mGl&y{I_ zQSD-riRMbWX;rn*VF0a?A~$B2%0DLa8K9zgyr=+)vV;=ybp6j}VeuI#3i9?buEgP_ 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 OqUE1E0$yczg#Q4#=#Dx7 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e3305727e1ed951890bdbc6332a55a77e410b3c73dbb6da779a49cde1537d2990000019f38b6a51a b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e3305727e1ed951890bdbc6332a55a77e410b3c73dbb6da779a49cde1537d2990000019f38b6a51a deleted file mode 100644 index 537d14ddc8962ae4fb6131d3daa9b4d314d4b8fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524288 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%0DTP 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.Lhy!AG&)t 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 z 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

        BE)9XkJXBZ)~l3hS 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

        7><7yjE?aE4})a_D{uWW_o~x>QF2V=mAjHk~khw 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

        X1BTNi&3l$QXt&+ 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

        ^npBvn`lz0q%kyW0XH+;FNS(yJRYoMqA=y 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 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e9fcaadb80eaea680234943181c0156c3dd8ff8173daaa6c521629e631dca2d60000019f38b6a54d b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e9fcaadb80eaea680234943181c0156c3dd8ff8173daaa6c521629e631dca2d60000019f38b6a54d deleted file mode 100644 index c50ba3ee900a6df25e333436abc0c9745bd76286..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 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 bf)C53xc1z{C?;6bXBq&2oF~Oa>qq|qUf~zk diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/9f458c07675338a7426a7b81ac4fb1baf92d034efbcaaf4336379640ed744ded.sqlite-shm b/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/9f458c07675338a7426a7b81ac4fb1baf92d034efbcaaf4336379640ed744ded.sqlite-shm deleted file mode 100644 index fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIuAr62r37U}9o$P*7lCU|@t|AVoG{WYDXN;00+HAlr;ljiVtj n8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O6ovo**AfQj diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm b/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm deleted file mode 100644 index fb1c06663e916e1d3fbfcaeb7b7b0390e62a966a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)p$)=76b9gf36Pa6fU2&h7z9JG1A-0OR3k~cLM1USoep^YquYo;>Y*7cl3NuGOfpXoc*1f z>vjSJ2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+0D(CO#IF-VV4ec;CyNjuK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72>h482b4r6 AzW@LL diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal b/packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal deleted file mode 100644 index ba40aeacf8d383b95c6b5f6c06e9560cd085a7f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8272 zcmXr7XKP~6eI&uaAiw|um1$f1J@#EzNSTw_V;laz5-7xoEI!?`+I9V!iQ&P4KA9z{ z3TgR8xrrqT#z5UnObiYR3P80?Pz=%r0wDb?U>1Y`n}@{5#$;m9tBc?T$}sYmFaXgg z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fe{k|jhu|^;_~v0jfo|RNja(U z$!YP9K8``Ya0ZiekgH>et3rsQlaH$cTv$PaO92cLlS}f8;xkheLR=$46as=geI0`$ z6}(*|b)X80lQU9NN^??E;!84fQx!b@LR{TlgTRuS3gMn19{!;r3PJwio-V*Z2lw+~ z;{^-djeGlTYfo~4VgoXiFk<3m)T5&zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O KqaiTTLI42Ben|lU diff --git a/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite b/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite deleted file mode 100644 index 0b58f0dca7d6ce95907cb0b322dc4802f04688c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmWFz^vNtqRY=P(%1ta$FlG>7U}9o$P*7lCU|@t|AVoG{WYDXN;00+HAlr;ljiVtj n8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O6ovo**AfQj diff --git a/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-shm b/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-shm deleted file mode 100644 index af885c62b85b469667bf1e0b4798647ea866258a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)u?fOJ6b9ha44`&dA%!!fu@QSWun@6u0$ZD4XJh9I*(gg0Hkv0Kq_q?B{czmf z<9H9g0j}(pDQA+>eA-`P%}({BdfqpOX0hKE?d5e`ov*vwy8Q8d?j1efgAD6&?q`4J z=DM8#0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV6RY0`cpF5E!RG{K+B&2oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RsOe@Bv0a BBTE1P diff --git a/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-wal b/packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-wal deleted file mode 100644 index 3b730af34a7d805e7f34336afe23e3ca71bbe816..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8272 zcmXr7XKP~6eI&uaAiw|u*}a09Va%I5Y=2CstDBr%2^3;P7Eh5aTmLfZT6=JyPi9G~ zLRx-NZeodoF;F)X6N7_-0#Gdz6oa&Z07yRzm<1ug<{|O1F_{?j>LPf7GK~Bs3_vsr zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONV8nz#BPS!fxV$`LV`52SQch}o za$3Bjk7JN8oWbNA#=rR0U7J5Lb8CAh4vSLbzv$hks~@LXdyBrwcI9!To&L zc)=q3LVoYr-!-{Fu>l!M7%}lO>e0~<7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C K(GVDEApii8%SILe diff --git a/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js b/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js deleted file mode 100644 index b1088b2f2..000000000 --- a/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js +++ /dev/null @@ -1,11 +0,0 @@ - import worker, * as OTHER_EXPORTS from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/src/index.ts"; - import * as __MIDDLEWARE_0__ from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts"; -import * as __MIDDLEWARE_1__ from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts"; - - export * from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/src/index.ts"; - const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; - export const __INTERNAL_WRANGLER_MIDDLEWARE__ = [ - - __MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default - ] - export default worker; \ No newline at end of file diff --git a/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-loader.entry.ts b/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-loader.entry.ts deleted file mode 100644 index c48da4eae..000000000 --- a/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-loader.entry.ts +++ /dev/null @@ -1,134 +0,0 @@ -// This loads all middlewares exposed on the middleware object and then starts -// the invocation chain. The big idea is that we can add these to the middleware -// export dynamically through wrangler, or we can potentially let users directly -// add them as a sort of "plugin" system. - -import ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js"; -import { __facade_invoke__, __facade_register__, Dispatcher } from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/common.ts"; -import type { WorkerEntrypointConstructor } from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js"; - -// Preserve all the exports from the worker -export * from "/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js"; - -class __Facade_ScheduledController__ implements ScheduledController { - readonly #noRetry: ScheduledController["noRetry"]; - - constructor( - readonly scheduledTime: number, - readonly cron: string, - noRetry: ScheduledController["noRetry"] - ) { - this.#noRetry = noRetry; - } - - noRetry() { - if (!(this instanceof __Facade_ScheduledController__)) { - throw new TypeError("Illegal invocation"); - } - // Need to call native method immediately in case uncaught error thrown - this.#noRetry(); - } -} - -function wrapExportedHandler(worker: ExportedHandler): ExportedHandler { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return worker; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - const fetchDispatcher: ExportedHandlerFetchHandler = function ( - request, - env, - ctx - ) { - if (worker.fetch === undefined) { - throw new Error("Handler does not export a fetch() function."); - } - return worker.fetch(request, env, ctx); - }; - - return { - ...worker, - fetch(request, env, ctx) { - const dispatcher: Dispatcher = function (type, init) { - if (type === "scheduled" && worker.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return worker.scheduled(controller, env, ctx); - } - }; - return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); - }, - }; -} - -function wrapWorkerEntrypoint( - klass: WorkerEntrypointConstructor -): WorkerEntrypointConstructor { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return klass; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - // `extend`ing `klass` here so other RPC methods remain callable - return class extends klass { - #fetchDispatcher: ExportedHandlerFetchHandler> = ( - request, - env, - ctx - ) => { - this.env = env; - this.ctx = ctx; - if (super.fetch === undefined) { - throw new Error("Entrypoint class does not define a fetch() function."); - } - return super.fetch(request); - }; - - #dispatcher: Dispatcher = (type, init) => { - if (type === "scheduled" && super.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return super.scheduled(controller); - } - }; - - fetch(request: Request) { - return __facade_invoke__( - request, - this.env, - this.ctx, - this.#dispatcher, - this.#fetchDispatcher - ); - } - }; -} - -let WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined; -if (typeof ENTRY === "object") { - WRAPPED_ENTRY = wrapExportedHandler(ENTRY); -} else if (typeof ENTRY === "function") { - WRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY); -} -export default WRAPPED_ENTRY; diff --git a/packages/data-tables-worker/.wrangler/tmp/dev-xNCQ0m/index.js b/packages/data-tables-worker/.wrangler/tmp/dev-xNCQ0m/index.js deleted file mode 100644 index 695658f7e..000000000 --- a/packages/data-tables-worker/.wrangler/tmp/dev-xNCQ0m/index.js +++ /dev/null @@ -1,6381 +0,0 @@ -var __defProp = Object.defineProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); - -// node_modules/hono/dist/compose.js -var compose = /* @__PURE__ */ __name((middleware, onError, onNotFound) => { - return (context, next) => { - let index = -1; - return dispatch(0); - async function dispatch(i) { - if (i <= index) { - throw new Error("next() called multiple times"); - } - index = i; - let res; - let isError = false; - let handler; - if (middleware[i]) { - handler = middleware[i][0][0]; - context.req.routeIndex = i; - } else { - handler = i === middleware.length && next || void 0; - } - if (handler) { - try { - res = await handler(context, () => dispatch(i + 1)); - } catch (err) { - if (err instanceof Error && onError) { - context.error = err; - res = await onError(err, context); - isError = true; - } else { - throw err; - } - } - } else { - if (context.finalized === false && onNotFound) { - res = await onNotFound(context); - } - } - if (res && (context.finalized === false || isError)) { - context.res = res; - } - return context; - } - __name(dispatch, "dispatch"); - }; -}, "compose"); - -// node_modules/hono/dist/request/constants.js -var GET_MATCH_RESULT = /* @__PURE__ */ Symbol(); - -// node_modules/hono/dist/utils/buffer.js -var bufferToFormData = /* @__PURE__ */ __name((arrayBuffer, contentType) => { - const response = new Response(arrayBuffer, { - headers: { - // Normalize the media type (case-insensitive) while keeping parameters like the boundary - "Content-Type": contentType.replace(/^[^;]+/, (mediaType) => mediaType.toLowerCase()) - } - }); - return response.formData(); -}, "bufferToFormData"); - -// node_modules/hono/dist/utils/body.js -var isRawRequest = /* @__PURE__ */ __name((request) => "headers" in request, "isRawRequest"); -var parseBody = /* @__PURE__ */ __name(async (request, options = /* @__PURE__ */ Object.create(null)) => { - const { all = false, dot = false } = options; - const headers = isRawRequest(request) ? request.headers : request.raw.headers; - const contentType = headers.get("Content-Type"); - const mediaType = contentType?.split(";")[0].trim().toLowerCase(); - if (mediaType === "multipart/form-data" || mediaType === "application/x-www-form-urlencoded") { - return parseFormData(request, { all, dot }); - } - return {}; -}, "parseBody"); -async function parseFormData(request, options) { - const headers = isRawRequest(request) ? request.headers : request.raw.headers; - const arrayBuffer = await request.arrayBuffer(); - const formDataPromise = bufferToFormData(arrayBuffer, headers.get("Content-Type") || ""); - if (!isRawRequest(request)) { - request.bodyCache.formData = formDataPromise; - } - const formData = await formDataPromise; - if (formData) { - return convertFormDataToBodyData(formData, options); - } - return {}; -} -__name(parseFormData, "parseFormData"); -function convertFormDataToBodyData(formData, options) { - const form = /* @__PURE__ */ Object.create(null); - formData.forEach((value, key) => { - const shouldParseAllValues = options.all || key.endsWith("[]"); - if (!shouldParseAllValues) { - form[key] = value; - } else { - handleParsingAllValues(form, key, value); - } - }); - if (options.dot) { - Object.entries(form).forEach(([key, value]) => { - const shouldParseDotValues = key.includes("."); - if (shouldParseDotValues) { - handleParsingNestedValues(form, key, value); - delete form[key]; - } - }); - } - return form; -} -__name(convertFormDataToBodyData, "convertFormDataToBodyData"); -var handleParsingAllValues = /* @__PURE__ */ __name((form, key, value) => { - if (form[key] !== void 0) { - if (Array.isArray(form[key])) { - ; - form[key].push(value); - } else { - form[key] = [form[key], value]; - } - } else { - if (!key.endsWith("[]")) { - form[key] = value; - } else { - form[key] = [value]; - } - } -}, "handleParsingAllValues"); -var handleParsingNestedValues = /* @__PURE__ */ __name((form, key, value) => { - if (/(?:^|\.)__proto__\./.test(key)) { - return; - } - let nestedForm = form; - const keys = key.split("."); - keys.forEach((key2, index) => { - if (index === keys.length - 1) { - nestedForm[key2] = value; - } else { - if (!nestedForm[key2] || typeof nestedForm[key2] !== "object" || Array.isArray(nestedForm[key2]) || nestedForm[key2] instanceof File) { - nestedForm[key2] = /* @__PURE__ */ Object.create(null); - } - nestedForm = nestedForm[key2]; - } - }); -}, "handleParsingNestedValues"); - -// node_modules/hono/dist/utils/url.js -var splitPath = /* @__PURE__ */ __name((path) => { - const paths = path.split("/"); - if (paths[0] === "") { - paths.shift(); - } - return paths; -}, "splitPath"); -var splitRoutingPath = /* @__PURE__ */ __name((routePath) => { - const { groups, path } = extractGroupsFromPath(routePath); - const paths = splitPath(path); - return replaceGroupMarks(paths, groups); -}, "splitRoutingPath"); -var extractGroupsFromPath = /* @__PURE__ */ __name((path) => { - const groups = []; - path = path.replace(/\{[^}]+\}/g, (match2, index) => { - const mark = `@${index}`; - groups.push([mark, match2]); - return mark; - }); - return { groups, path }; -}, "extractGroupsFromPath"); -var replaceGroupMarks = /* @__PURE__ */ __name((paths, groups) => { - for (let i = groups.length - 1; i >= 0; i--) { - const [mark] = groups[i]; - for (let j = paths.length - 1; j >= 0; j--) { - if (paths[j].includes(mark)) { - paths[j] = paths[j].replace(mark, groups[i][1]); - break; - } - } - } - return paths; -}, "replaceGroupMarks"); -var patternCache = {}; -var getPattern = /* @__PURE__ */ __name((label, next) => { - if (label === "*") { - return "*"; - } - const match2 = label.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/); - if (match2) { - const cacheKey2 = `${label}#${next}`; - if (!patternCache[cacheKey2]) { - if (match2[2]) { - patternCache[cacheKey2] = next && next[0] !== ":" && next[0] !== "*" ? [cacheKey2, match2[1], new RegExp(`^${match2[2]}(?=/${next})`)] : [label, match2[1], new RegExp(`^${match2[2]}$`)]; - } else { - patternCache[cacheKey2] = [label, match2[1], true]; - } - } - return patternCache[cacheKey2]; - } - return null; -}, "getPattern"); -var tryDecode = /* @__PURE__ */ __name((str, decoder4) => { - try { - return decoder4(str); - } catch { - return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match2) => { - try { - return decoder4(match2); - } catch { - return match2; - } - }); - } -}, "tryDecode"); -var tryDecodeURI = /* @__PURE__ */ __name((str) => tryDecode(str, decodeURI), "tryDecodeURI"); -var getPath = /* @__PURE__ */ __name((request) => { - const url = request.url; - const start = url.indexOf("/", url.indexOf(":") + 4); - let i = start; - for (; i < url.length; i++) { - const charCode = url.charCodeAt(i); - if (charCode === 37) { - const queryIndex = url.indexOf("?", i); - const hashIndex = url.indexOf("#", i); - const end = queryIndex === -1 ? hashIndex === -1 ? void 0 : hashIndex : hashIndex === -1 ? queryIndex : Math.min(queryIndex, hashIndex); - const path = url.slice(start, end); - return tryDecodeURI(path.includes("%25") ? path.replace(/%25/g, "%2525") : path); - } else if (charCode === 63 || charCode === 35) { - break; - } - } - return url.slice(start, i); -}, "getPath"); -var getPathNoStrict = /* @__PURE__ */ __name((request) => { - const result = getPath(request); - return result.length > 1 && result.at(-1) === "/" ? result.slice(0, -1) : result; -}, "getPathNoStrict"); -var mergePath = /* @__PURE__ */ __name((base, sub, ...rest) => { - if (rest.length) { - sub = mergePath(sub, ...rest); - } - return `${base?.[0] === "/" ? "" : "/"}${base}${sub === "/" ? "" : `${base?.at(-1) === "/" ? "" : "/"}${sub?.[0] === "/" ? sub.slice(1) : sub}`}`; -}, "mergePath"); -var checkOptionalParameter = /* @__PURE__ */ __name((path) => { - if (path.charCodeAt(path.length - 1) !== 63 || !path.includes(":")) { - return null; - } - const segments = path.split("/"); - const results = []; - let basePath = ""; - segments.forEach((segment) => { - if (segment !== "" && !/\:/.test(segment)) { - basePath += "/" + segment; - } else if (/\:/.test(segment)) { - if (/\?/.test(segment)) { - if (results.length === 0 && basePath === "") { - results.push("/"); - } else { - results.push(basePath); - } - const optionalSegment = segment.replace("?", ""); - basePath += "/" + optionalSegment; - results.push(basePath); - } else { - basePath += "/" + segment; - } - } - }); - return results.filter((v, i, a) => a.indexOf(v) === i); -}, "checkOptionalParameter"); -var _decodeURI = /* @__PURE__ */ __name((value) => { - if (!/[%+]/.test(value)) { - return value; - } - if (value.indexOf("+") !== -1) { - value = value.replace(/\+/g, " "); - } - return value.indexOf("%") !== -1 ? tryDecode(value, decodeURIComponent_) : value; -}, "_decodeURI"); -var _getQueryParam = /* @__PURE__ */ __name((url, key, multiple) => { - let encoded; - if (!multiple && key && !/[%+]/.test(key)) { - let keyIndex2 = url.indexOf("?", 8); - if (keyIndex2 === -1) { - return void 0; - } - if (!url.startsWith(key, keyIndex2 + 1)) { - keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1); - } - while (keyIndex2 !== -1) { - const trailingKeyCode = url.charCodeAt(keyIndex2 + key.length + 1); - if (trailingKeyCode === 61) { - const valueIndex = keyIndex2 + key.length + 2; - const endIndex = url.indexOf("&", valueIndex); - return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex)); - } else if (trailingKeyCode == 38 || isNaN(trailingKeyCode)) { - return ""; - } - keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1); - } - encoded = /[%+]/.test(url); - if (!encoded) { - return void 0; - } - } - const results = {}; - encoded ??= /[%+]/.test(url); - let keyIndex = url.indexOf("?", 8); - while (keyIndex !== -1) { - const nextKeyIndex = url.indexOf("&", keyIndex + 1); - let valueIndex = url.indexOf("=", keyIndex); - if (valueIndex > nextKeyIndex && nextKeyIndex !== -1) { - valueIndex = -1; - } - let name = url.slice( - keyIndex + 1, - valueIndex === -1 ? nextKeyIndex === -1 ? void 0 : nextKeyIndex : valueIndex - ); - if (encoded) { - name = _decodeURI(name); - } - keyIndex = nextKeyIndex; - if (name === "") { - continue; - } - let value; - if (valueIndex === -1) { - value = ""; - } else { - value = url.slice(valueIndex + 1, nextKeyIndex === -1 ? void 0 : nextKeyIndex); - if (encoded) { - value = _decodeURI(value); - } - } - if (multiple) { - if (!(results[name] && Array.isArray(results[name]))) { - results[name] = []; - } - ; - results[name].push(value); - } else { - results[name] ??= value; - } - } - return key ? results[key] : results; -}, "_getQueryParam"); -var getQueryParam = _getQueryParam; -var getQueryParams = /* @__PURE__ */ __name((url, key) => { - return _getQueryParam(url, key, true); -}, "getQueryParams"); -var decodeURIComponent_ = decodeURIComponent; - -// node_modules/hono/dist/request.js -var tryDecodeURIComponent = /* @__PURE__ */ __name((str) => tryDecode(str, decodeURIComponent_), "tryDecodeURIComponent"); -var HonoRequest = class { - static { - __name(this, "HonoRequest"); - } - /** - * `.raw` can get the raw Request object. - * - * @see {@link https://hono.dev/docs/api/request#raw} - * - * @example - * ```ts - * // For Cloudflare Workers - * app.post('/', async (c) => { - * const metadata = c.req.raw.cf?.hostMetadata? - * ... - * }) - * ``` - */ - raw; - #validatedData; - // Short name of validatedData - #matchResult; - routeIndex = 0; - /** - * `.path` can get the pathname of the request. - * - * @see {@link https://hono.dev/docs/api/request#path} - * - * @example - * ```ts - * app.get('/about/me', (c) => { - * const pathname = c.req.path // `/about/me` - * }) - * ``` - */ - path; - bodyCache = {}; - constructor(request, path = "/", matchResult = [[]]) { - this.raw = request; - this.path = path; - this.#matchResult = matchResult; - this.#validatedData = {}; - } - param(key) { - return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams(); - } - #getDecodedParam(key) { - const paramKey = this.#matchResult[0][this.routeIndex][1][key]; - const param = this.#getParamValue(paramKey); - return param && /\%/.test(param) ? tryDecodeURIComponent(param) : param; - } - #getAllDecodedParams() { - const decoded = {}; - const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]); - for (const key of keys) { - const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]); - if (value !== void 0) { - decoded[key] = /\%/.test(value) ? tryDecodeURIComponent(value) : value; - } - } - return decoded; - } - #getParamValue(paramKey) { - return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey; - } - query(key) { - return getQueryParam(this.url, key); - } - queries(key) { - return getQueryParams(this.url, key); - } - header(name) { - if (name) { - return this.raw.headers.get(name) ?? void 0; - } - const headerData = {}; - this.raw.headers.forEach((value, key) => { - headerData[key] = value; - }); - return headerData; - } - async parseBody(options) { - return parseBody(this, options); - } - #cachedBody = /* @__PURE__ */ __name((key) => { - const { bodyCache, raw: raw2 } = this; - const cachedBody = bodyCache[key]; - if (cachedBody) { - return cachedBody; - } - const anyCachedKey = Object.keys(bodyCache)[0]; - if (anyCachedKey) { - return bodyCache[anyCachedKey].then((body) => { - if (anyCachedKey === "json") { - body = JSON.stringify(body); - } - return new Response(body)[key](); - }); - } - return bodyCache[key] = raw2[key](); - }, "#cachedBody"); - /** - * `.json()` can parse Request body of type `application/json` - * - * @see {@link https://hono.dev/docs/api/request#json} - * - * @example - * ```ts - * app.post('/entry', async (c) => { - * const body = await c.req.json() - * }) - * ``` - */ - json() { - return this.#cachedBody("text").then((text) => JSON.parse(text)); - } - /** - * `.text()` can parse Request body of type `text/plain` - * - * @see {@link https://hono.dev/docs/api/request#text} - * - * @example - * ```ts - * app.post('/entry', async (c) => { - * const body = await c.req.text() - * }) - * ``` - */ - text() { - return this.#cachedBody("text"); - } - /** - * `.arrayBuffer()` parse Request body as an `ArrayBuffer` - * - * @see {@link https://hono.dev/docs/api/request#arraybuffer} - * - * @example - * ```ts - * app.post('/entry', async (c) => { - * const body = await c.req.arrayBuffer() - * }) - * ``` - */ - arrayBuffer() { - return this.#cachedBody("arrayBuffer"); - } - /** - * `.bytes()` parses the request body as a `Uint8Array`. - * - * @see {@link https://hono.dev/docs/api/request#bytes} - * - * @example - * ```ts - * app.post('/entry', async (c) => { - * const body = await c.req.bytes() - * }) - * ``` - */ - bytes() { - return this.#cachedBody("arrayBuffer").then((buffer) => new Uint8Array(buffer)); - } - /** - * Parses the request body as a `Blob`. - * @example - * ```ts - * app.post('/entry', async (c) => { - * const body = await c.req.blob(); - * }); - * ``` - * @see https://hono.dev/docs/api/request#blob - */ - blob() { - return this.#cachedBody("blob"); - } - /** - * Parses the request body as `FormData`. - * @example - * ```ts - * app.post('/entry', async (c) => { - * const body = await c.req.formData(); - * }); - * ``` - * @see https://hono.dev/docs/api/request#formdata - */ - formData() { - return this.#cachedBody("formData"); - } - /** - * Adds validated data to the request. - * - * @param target - The target of the validation. - * @param data - The validated data to add. - */ - addValidatedData(target, data) { - this.#validatedData[target] = data; - } - valid(target) { - return this.#validatedData[target]; - } - /** - * `.url()` can get the request url strings. - * - * @see {@link https://hono.dev/docs/api/request#url} - * - * @example - * ```ts - * app.get('/about/me', (c) => { - * const url = c.req.url // `http://localhost:8787/about/me` - * ... - * }) - * ``` - */ - get url() { - return this.raw.url; - } - /** - * `.method()` can get the method name of the request. - * - * @see {@link https://hono.dev/docs/api/request#method} - * - * @example - * ```ts - * app.get('/about/me', (c) => { - * const method = c.req.method // `GET` - * }) - * ``` - */ - get method() { - return this.raw.method; - } - get [GET_MATCH_RESULT]() { - return this.#matchResult; - } - /** - * `.matchedRoutes()` can return a matched route in the handler - * - * @deprecated - * - * Use matchedRoutes helper defined in "hono/route" instead. - * - * @see {@link https://hono.dev/docs/api/request#matchedroutes} - * - * @example - * ```ts - * app.use('*', async function logger(c, next) { - * await next() - * c.req.matchedRoutes.forEach(({ handler, method, path }, i) => { - * const name = handler.name || (handler.length < 2 ? '[handler]' : '[middleware]') - * console.log( - * method, - * ' ', - * path, - * ' '.repeat(Math.max(10 - path.length, 0)), - * name, - * i === c.req.routeIndex ? '<- respond from here' : '' - * ) - * }) - * }) - * ``` - */ - get matchedRoutes() { - return this.#matchResult[0].map(([[, route]]) => route); - } - /** - * `routePath()` can retrieve the path registered within the handler - * - * @deprecated - * - * Use routePath helper defined in "hono/route" instead. - * - * @see {@link https://hono.dev/docs/api/request#routepath} - * - * @example - * ```ts - * app.get('/posts/:id', (c) => { - * return c.json({ path: c.req.routePath }) - * }) - * ``` - */ - get routePath() { - return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path; - } -}; - -// node_modules/hono/dist/utils/html.js -var HtmlEscapedCallbackPhase = { - Stringify: 1, - BeforeStream: 2, - Stream: 3 -}; -var raw = /* @__PURE__ */ __name((value, callbacks) => { - const escapedString = new String(value); - escapedString.isEscaped = true; - escapedString.callbacks = callbacks; - return escapedString; -}, "raw"); -var resolveCallback = /* @__PURE__ */ __name(async (str, phase, preserveCallbacks, context, buffer) => { - if (typeof str === "object" && !(str instanceof String)) { - if (!(str instanceof Promise)) { - str = str.toString(); - } - if (str instanceof Promise) { - str = await str; - } - } - const callbacks = str.callbacks; - if (!callbacks?.length) { - return Promise.resolve(str); - } - if (buffer) { - buffer[0] += str; - } else { - buffer = [str]; - } - const resStr = Promise.all(callbacks.map((c) => c({ phase, buffer, context }))).then( - (res) => Promise.all( - res.filter(Boolean).map((str2) => resolveCallback(str2, phase, false, context, buffer)) - ).then(() => buffer[0]) - ); - if (preserveCallbacks) { - return raw(await resStr, callbacks); - } else { - return resStr; - } -}, "resolveCallback"); - -// node_modules/hono/dist/context.js -var TEXT_PLAIN = "text/plain; charset=UTF-8"; -var setDefaultContentType = /* @__PURE__ */ __name((contentType, headers) => { - return { - "Content-Type": contentType, - ...headers - }; -}, "setDefaultContentType"); -var createResponseInstance = /* @__PURE__ */ __name((body, init) => new Response(body, init), "createResponseInstance"); -var Context = class { - static { - __name(this, "Context"); - } - #rawRequest; - #req; - /** - * `.env` can get bindings (environment variables, secrets, KV namespaces, D1 database, R2 bucket etc.) in Cloudflare Workers. - * - * @see {@link https://hono.dev/docs/api/context#env} - * - * @example - * ```ts - * // Environment object for Cloudflare Workers - * app.get('*', async c => { - * const counter = c.env.COUNTER - * }) - * ``` - */ - env = {}; - #var; - finalized = false; - /** - * `.error` can get the error object from the middleware if the Handler throws an error. - * - * @see {@link https://hono.dev/docs/api/context#error} - * - * @example - * ```ts - * app.use('*', async (c, next) => { - * await next() - * if (c.error) { - * // do something... - * } - * }) - * ``` - */ - error; - #status; - #executionCtx; - #res; - #layout; - #renderer; - #notFoundHandler; - #preparedHeaders; - #matchResult; - #path; - /** - * Creates an instance of the Context class. - * - * @param req - The Request object. - * @param options - Optional configuration options for the context. - */ - constructor(req, options) { - this.#rawRequest = req; - if (options) { - this.#executionCtx = options.executionCtx; - this.env = options.env; - this.#notFoundHandler = options.notFoundHandler; - this.#path = options.path; - this.#matchResult = options.matchResult; - } - } - /** - * `.req` is the instance of {@link HonoRequest}. - */ - get req() { - this.#req ??= new HonoRequest(this.#rawRequest, this.#path, this.#matchResult); - return this.#req; - } - /** - * @see {@link https://hono.dev/docs/api/context#event} - * The FetchEvent associated with the current request. - * - * @throws Will throw an error if the context does not have a FetchEvent. - */ - get event() { - if (this.#executionCtx && "respondWith" in this.#executionCtx) { - return this.#executionCtx; - } else { - throw Error("This context has no FetchEvent"); - } - } - /** - * @see {@link https://hono.dev/docs/api/context#executionctx} - * The ExecutionContext associated with the current request. - * - * @throws Will throw an error if the context does not have an ExecutionContext. - */ - get executionCtx() { - if (this.#executionCtx) { - return this.#executionCtx; - } else { - throw Error("This context has no ExecutionContext"); - } - } - /** - * @see {@link https://hono.dev/docs/api/context#res} - * The Response object for the current request. - */ - get res() { - return this.#res ||= createResponseInstance(null, { - headers: this.#preparedHeaders ??= new Headers() - }); - } - /** - * Sets the Response object for the current request. - * - * @param _res - The Response object to set. - */ - set res(_res) { - if (this.#res && _res) { - _res = createResponseInstance(_res.body, _res); - for (const [k, v] of this.#res.headers.entries()) { - if (k === "content-type") { - continue; - } - if (k === "set-cookie") { - const cookies = this.#res.headers.getSetCookie(); - _res.headers.delete("set-cookie"); - for (const cookie of cookies) { - _res.headers.append("set-cookie", cookie); - } - } else { - _res.headers.set(k, v); - } - } - } - this.#res = _res; - this.finalized = true; - } - /** - * `.render()` can create a response within a layout. - * - * @see {@link https://hono.dev/docs/api/context#render-setrenderer} - * - * @example - * ```ts - * app.get('/', (c) => { - * return c.render('Hello!') - * }) - * ``` - */ - render = /* @__PURE__ */ __name((...args) => { - this.#renderer ??= (content) => this.html(content); - return this.#renderer(...args); - }, "render"); - /** - * Sets the layout for the response. - * - * @param layout - The layout to set. - * @returns The layout function. - */ - setLayout = /* @__PURE__ */ __name((layout) => this.#layout = layout, "setLayout"); - /** - * Gets the current layout for the response. - * - * @returns The current layout function. - */ - getLayout = /* @__PURE__ */ __name(() => this.#layout, "getLayout"); - /** - * `.setRenderer()` can set the layout in the custom middleware. - * - * @see {@link https://hono.dev/docs/api/context#render-setrenderer} - * - * @example - * ```tsx - * app.use('*', async (c, next) => { - * c.setRenderer((content) => { - * return c.html( - * - * - *

        {content}

        - * - * - * ) - * }) - * await next() - * }) - * ``` - */ - setRenderer = /* @__PURE__ */ __name((renderer) => { - this.#renderer = renderer; - }, "setRenderer"); - /** - * `.header()` can set headers. - * - * @see {@link https://hono.dev/docs/api/context#header} - * - * @example - * ```ts - * app.get('/welcome', (c) => { - * // Set headers - * c.header('X-Message', 'Hello!') - * c.header('Content-Type', 'text/plain') - * - * return c.body('Thank you for coming') - * }) - * ``` - */ - header = /* @__PURE__ */ __name((name, value, options) => { - if (this.finalized) { - this.#res = createResponseInstance(this.#res.body, this.#res); - } - const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers(); - if (value === void 0) { - headers.delete(name); - } else if (options?.append) { - headers.append(name, value); - } else { - headers.set(name, value); - } - }, "header"); - status = /* @__PURE__ */ __name((status) => { - this.#status = status; - }, "status"); - /** - * `.set()` can set the value specified by the key. - * - * @see {@link https://hono.dev/docs/api/context#set-get} - * - * @example - * ```ts - * app.use('*', async (c, next) => { - * c.set('message', 'Hono is hot!!') - * await next() - * }) - * ``` - */ - set = /* @__PURE__ */ __name((key, value) => { - this.#var ??= /* @__PURE__ */ new Map(); - this.#var.set(key, value); - }, "set"); - /** - * `.get()` can use the value specified by the key. - * - * @see {@link https://hono.dev/docs/api/context#set-get} - * - * @example - * ```ts - * app.get('/', (c) => { - * const message = c.get('message') - * return c.text(`The message is "${message}"`) - * }) - * ``` - */ - get = /* @__PURE__ */ __name((key) => { - return this.#var ? this.#var.get(key) : void 0; - }, "get"); - /** - * `.var` can access the value of a variable. - * - * @see {@link https://hono.dev/docs/api/context#var} - * - * @example - * ```ts - * const result = c.var.client.oneMethod() - * ``` - */ - // c.var.propName is a read-only - get var() { - if (!this.#var) { - return {}; - } - return Object.fromEntries(this.#var); - } - #newResponse(data, arg, headers) { - const responseHeaders = this.#res ? new Headers(this.#res.headers) : this.#preparedHeaders ?? new Headers(); - if (typeof arg === "object" && "headers" in arg) { - const argHeaders = arg.headers instanceof Headers ? arg.headers : new Headers(arg.headers); - for (const [key, value] of argHeaders) { - if (key.toLowerCase() === "set-cookie") { - responseHeaders.append(key, value); - } else { - responseHeaders.set(key, value); - } - } - } - if (headers) { - for (const [k, v] of Object.entries(headers)) { - if (typeof v === "string") { - responseHeaders.set(k, v); - } else { - responseHeaders.delete(k); - for (const v2 of v) { - responseHeaders.append(k, v2); - } - } - } - } - const status = typeof arg === "number" ? arg : arg?.status ?? this.#status; - return createResponseInstance(data, { status, headers: responseHeaders }); - } - newResponse = /* @__PURE__ */ __name((...args) => this.#newResponse(...args), "newResponse"); - /** - * `.body()` can return the HTTP response. - * You can set headers with `.header()` and set HTTP status code with `.status`. - * This can also be set in `.text()`, `.json()` and so on. - * - * @see {@link https://hono.dev/docs/api/context#body} - * - * @example - * ```ts - * app.get('/welcome', (c) => { - * // Set headers - * c.header('X-Message', 'Hello!') - * c.header('Content-Type', 'text/plain') - * // Set HTTP status code - * c.status(201) - * - * // Return the response body - * return c.body('Thank you for coming') - * }) - * ``` - */ - body = /* @__PURE__ */ __name((data, arg, headers) => this.#newResponse(data, arg, headers), "body"); - /** - * `.text()` can render text as `Content-Type:text/plain`. - * - * @see {@link https://hono.dev/docs/api/context#text} - * - * @example - * ```ts - * app.get('/say', (c) => { - * return c.text('Hello!') - * }) - * ``` - */ - text = /* @__PURE__ */ __name((text, arg, headers) => { - return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse( - text, - arg, - setDefaultContentType(TEXT_PLAIN, headers) - ); - }, "text"); - /** - * `.json()` can render JSON as `Content-Type:application/json`. - * - * @see {@link https://hono.dev/docs/api/context#json} - * - * @example - * ```ts - * app.get('/api', (c) => { - * return c.json({ message: 'Hello!' }) - * }) - * ``` - */ - json = /* @__PURE__ */ __name((object, arg, headers) => { - return this.#newResponse( - JSON.stringify(object), - arg, - setDefaultContentType("application/json", headers) - ); - }, "json"); - html = /* @__PURE__ */ __name((html, arg, headers) => { - const res = /* @__PURE__ */ __name((html2) => this.#newResponse(html2, arg, setDefaultContentType("text/html; charset=UTF-8", headers)), "res"); - return typeof html === "object" ? resolveCallback(html, HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html); - }, "html"); - /** - * `.redirect()` can Redirect, default status code is 302. - * - * @see {@link https://hono.dev/docs/api/context#redirect} - * - * @example - * ```ts - * app.get('/redirect', (c) => { - * return c.redirect('/') - * }) - * app.get('/redirect-permanently', (c) => { - * return c.redirect('/', 301) - * }) - * ``` - */ - redirect = /* @__PURE__ */ __name((location, status) => { - const locationString = String(location); - this.header( - "Location", - // Multibyes should be encoded - // eslint-disable-next-line no-control-regex - !/[^\x00-\xFF]/.test(locationString) ? locationString : encodeURI(locationString) - ); - return this.newResponse(null, status ?? 302); - }, "redirect"); - /** - * `.notFound()` can return the Not Found Response. - * - * @see {@link https://hono.dev/docs/api/context#notfound} - * - * @example - * ```ts - * app.get('/notfound', (c) => { - * return c.notFound() - * }) - * ``` - */ - notFound = /* @__PURE__ */ __name(() => { - this.#notFoundHandler ??= () => createResponseInstance(); - return this.#notFoundHandler(this); - }, "notFound"); -}; - -// node_modules/hono/dist/router.js -var METHOD_NAME_ALL = "ALL"; -var METHOD_NAME_ALL_LOWERCASE = "all"; -var METHODS = ["get", "post", "put", "delete", "options", "patch"]; -var MESSAGE_MATCHER_IS_ALREADY_BUILT = "Can not add a route since the matcher is already built."; -var UnsupportedPathError = class extends Error { - static { - __name(this, "UnsupportedPathError"); - } -}; - -// node_modules/hono/dist/utils/constants.js -var COMPOSED_HANDLER = "__COMPOSED_HANDLER"; - -// node_modules/hono/dist/hono-base.js -var notFoundHandler = /* @__PURE__ */ __name((c) => { - return c.text("404 Not Found", 404); -}, "notFoundHandler"); -var errorHandler = /* @__PURE__ */ __name((err, c) => { - if ("getResponse" in err) { - const res = err.getResponse(); - return c.newResponse(res.body, res); - } - console.error(err); - return c.text("Internal Server Error", 500); -}, "errorHandler"); -var Hono = class _Hono { - static { - __name(this, "_Hono"); - } - get; - post; - put; - delete; - options; - patch; - all; - on; - use; - /* - This class is like an abstract class and does not have a router. - To use it, inherit the class and implement router in the constructor. - */ - router; - getPath; - // Cannot use `#` because it requires visibility at JavaScript runtime. - _basePath = "/"; - #path = "/"; - routes = []; - constructor(options = {}) { - const allMethods = [...METHODS, METHOD_NAME_ALL_LOWERCASE]; - allMethods.forEach((method) => { - this[method] = (args1, ...args) => { - if (typeof args1 === "string") { - this.#path = args1; - } else { - this.#addRoute(method, this.#path, args1); - } - args.forEach((handler) => { - this.#addRoute(method, this.#path, handler); - }); - return this; - }; - }); - this.on = (method, path, ...handlers) => { - for (const p of [path].flat()) { - this.#path = p; - for (const m of [method].flat()) { - handlers.map((handler) => { - this.#addRoute(m.toUpperCase(), this.#path, handler); - }); - } - } - return this; - }; - this.use = (arg1, ...handlers) => { - if (typeof arg1 === "string") { - this.#path = arg1; - } else { - this.#path = "*"; - handlers.unshift(arg1); - } - handlers.forEach((handler) => { - this.#addRoute(METHOD_NAME_ALL, this.#path, handler); - }); - return this; - }; - const { strict, ...optionsWithoutStrict } = options; - Object.assign(this, optionsWithoutStrict); - this.getPath = strict ?? true ? options.getPath ?? getPath : getPathNoStrict; - } - #clone() { - const clone = new _Hono({ - router: this.router, - getPath: this.getPath - }); - clone.errorHandler = this.errorHandler; - clone.#notFoundHandler = this.#notFoundHandler; - clone.routes = this.routes; - return clone; - } - #notFoundHandler = notFoundHandler; - // Cannot use `#` because it requires visibility at JavaScript runtime. - errorHandler = errorHandler; - /** - * `.route()` allows grouping other Hono instance in routes. - * - * @see {@link https://hono.dev/docs/api/routing#grouping} - * - * @param {string} path - base Path - * @param {Hono} app - other Hono instance - * @returns {Hono} routed Hono instance - * - * @example - * ```ts - * const app = new Hono() - * const app2 = new Hono() - * - * app2.get("/user", (c) => c.text("user")) - * app.route("/api", app2) // GET /api/user - * ``` - */ - route(path, app2) { - const subApp = this.basePath(path); - app2.routes.map((r) => { - let handler; - if (app2.errorHandler === errorHandler) { - handler = r.handler; - } else { - handler = /* @__PURE__ */ __name(async (c, next) => (await compose([], app2.errorHandler)(c, () => r.handler(c, next))).res, "handler"); - handler[COMPOSED_HANDLER] = r.handler; - } - subApp.#addRoute(r.method, r.path, handler, r.basePath); - }); - return this; - } - /** - * `.basePath()` allows base paths to be specified. - * - * @see {@link https://hono.dev/docs/api/routing#base-path} - * - * @param {string} path - base Path - * @returns {Hono} changed Hono instance - * - * @example - * ```ts - * const api = new Hono().basePath('/api') - * ``` - */ - basePath(path) { - const subApp = this.#clone(); - subApp._basePath = mergePath(this._basePath, path); - return subApp; - } - /** - * `.onError()` handles an error and returns a customized Response. - * - * @see {@link https://hono.dev/docs/api/hono#error-handling} - * - * @param {ErrorHandler} handler - request Handler for error - * @returns {Hono} changed Hono instance - * - * @example - * ```ts - * app.onError((err, c) => { - * console.error(`${err}`) - * return c.text('Custom Error Message', 500) - * }) - * ``` - */ - onError = /* @__PURE__ */ __name((handler) => { - this.errorHandler = handler; - return this; - }, "onError"); - /** - * `.notFound()` allows you to customize a Not Found Response. - * - * @see {@link https://hono.dev/docs/api/hono#not-found} - * - * @param {NotFoundHandler} handler - request handler for not-found - * @returns {Hono} changed Hono instance - * - * @example - * ```ts - * app.notFound((c) => { - * return c.text('Custom 404 Message', 404) - * }) - * ``` - */ - notFound = /* @__PURE__ */ __name((handler) => { - this.#notFoundHandler = handler; - return this; - }, "notFound"); - /** - * `.mount()` allows you to mount applications built with other frameworks into your Hono application. - * - * @see {@link https://hono.dev/docs/api/hono#mount} - * - * @param {string} path - base Path - * @param {Function} applicationHandler - other Request Handler - * @param {MountOptions} [options] - options of `.mount()` - * @returns {Hono} mounted Hono instance - * - * @example - * ```ts - * import { Router as IttyRouter } from 'itty-router' - * import { Hono } from 'hono' - * // Create itty-router application - * const ittyRouter = IttyRouter() - * // GET /itty-router/hello - * ittyRouter.get('/hello', () => new Response('Hello from itty-router')) - * - * const app = new Hono() - * app.mount('/itty-router', ittyRouter.handle) - * ``` - * - * @example - * ```ts - * const app = new Hono() - * // Send the request to another application without modification. - * app.mount('/app', anotherApp, { - * replaceRequest: (req) => req, - * }) - * ``` - */ - mount(path, applicationHandler, options) { - let replaceRequest; - let optionHandler; - if (options) { - if (typeof options === "function") { - optionHandler = options; - } else { - optionHandler = options.optionHandler; - if (options.replaceRequest === false) { - replaceRequest = /* @__PURE__ */ __name((request) => request, "replaceRequest"); - } else { - replaceRequest = options.replaceRequest; - } - } - } - const getOptions = optionHandler ? (c) => { - const options2 = optionHandler(c); - return Array.isArray(options2) ? options2 : [options2]; - } : (c) => { - let executionContext = void 0; - try { - executionContext = c.executionCtx; - } catch { - } - return [c.env, executionContext]; - }; - replaceRequest ||= (() => { - const mergedPath = mergePath(this._basePath, path); - const pathPrefixLength = mergedPath === "/" ? 0 : mergedPath.length; - return (request) => { - const url = new URL(request.url); - url.pathname = this.getPath(request).slice(pathPrefixLength) || "/"; - return new Request(url, request); - }; - })(); - const handler = /* @__PURE__ */ __name(async (c, next) => { - const res = await applicationHandler(replaceRequest(c.req.raw), ...getOptions(c)); - if (res) { - return res; - } - await next(); - }, "handler"); - this.#addRoute(METHOD_NAME_ALL, mergePath(path, "*"), handler); - return this; - } - #addRoute(method, path, handler, baseRoutePath) { - method = method.toUpperCase(); - path = mergePath(this._basePath, path); - const r = { - basePath: baseRoutePath !== void 0 ? mergePath(this._basePath, baseRoutePath) : this._basePath, - path, - method, - handler - }; - this.router.add(method, path, [handler, r]); - this.routes.push(r); - } - #handleError(err, c) { - if (err instanceof Error) { - return this.errorHandler(err, c); - } - throw err; - } - #dispatch(request, executionCtx, env, method) { - if (method === "HEAD") { - return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, "GET")))(); - } - const path = this.getPath(request, { env }); - const matchResult = this.router.match(method, path); - const c = new Context(request, { - path, - matchResult, - env, - executionCtx, - notFoundHandler: this.#notFoundHandler - }); - if (matchResult[0].length === 1) { - let res; - try { - res = matchResult[0][0][0][0](c, async () => { - c.res = await this.#notFoundHandler(c); - }); - } catch (err) { - return this.#handleError(err, c); - } - return res instanceof Promise ? res.then( - (resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c)) - ).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c); - } - const composed = compose(matchResult[0], this.errorHandler, this.#notFoundHandler); - return (async () => { - try { - const context = await composed(c); - if (!context.finalized) { - throw new Error( - "Context is not finalized. Did you forget to return a Response object or `await next()`?" - ); - } - return context.res; - } catch (err) { - return this.#handleError(err, c); - } - })(); - } - /** - * `.fetch()` will be entry point of your app. - * - * @see {@link https://hono.dev/docs/api/hono#fetch} - * - * @param {Request} request - request Object of request - * @param {Env} Env - env Object - * @param {ExecutionContext} - context of execution - * @returns {Response | Promise} response of request - * - */ - fetch = /* @__PURE__ */ __name((request, ...rest) => { - return this.#dispatch(request, rest[1], rest[0], request.method); - }, "fetch"); - /** - * `.request()` is a useful method for testing. - * You can pass a URL or pathname to send a GET request. - * app will return a Response object. - * ```ts - * test('GET /hello is ok', async () => { - * const res = await app.request('/hello') - * expect(res.status).toBe(200) - * }) - * ``` - * @see https://hono.dev/docs/api/hono#request - */ - request = /* @__PURE__ */ __name((input, requestInit, Env, executionCtx) => { - if (input instanceof Request) { - return this.fetch(requestInit ? new Request(input, requestInit) : input, Env, executionCtx); - } - input = input.toString(); - return this.fetch( - new Request( - /^https?:\/\//.test(input) ? input : `http://localhost${mergePath("/", input)}`, - requestInit - ), - Env, - executionCtx - ); - }, "request"); - /** - * `.fire()` automatically adds a global fetch event listener. - * This can be useful for environments that adhere to the Service Worker API, such as non-ES module Cloudflare Workers. - * @deprecated - * Use `fire` from `hono/service-worker` instead. - * ```ts - * import { Hono } from 'hono' - * import { fire } from 'hono/service-worker' - * - * const app = new Hono() - * // ... - * fire(app) - * ``` - * @see https://hono.dev/docs/api/hono#fire - * @see https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API - * @see https://developers.cloudflare.com/workers/reference/migrate-to-module-workers/ - */ - fire = /* @__PURE__ */ __name(() => { - addEventListener("fetch", (event) => { - event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method)); - }); - }, "fire"); -}; - -// node_modules/hono/dist/router/reg-exp-router/matcher.js -var emptyParam = []; -function match(method, path) { - const matchers = this.buildAllMatchers(); - const match2 = /* @__PURE__ */ __name(((method2, path2) => { - const matcher = matchers[method2] || matchers[METHOD_NAME_ALL]; - const staticMatch = matcher[2][path2]; - if (staticMatch) { - return staticMatch; - } - const match3 = path2.match(matcher[0]); - if (!match3) { - return [[], emptyParam]; - } - const index = match3.indexOf("", 1); - return [matcher[1][index], match3]; - }), "match2"); - this.match = match2; - return match2(method, path); -} -__name(match, "match"); - -// node_modules/hono/dist/router/reg-exp-router/node.js -var LABEL_REG_EXP_STR = "[^/]+"; -var ONLY_WILDCARD_REG_EXP_STR = ".*"; -var TAIL_WILDCARD_REG_EXP_STR = "(?:|/.*)"; -var PATH_ERROR = /* @__PURE__ */ Symbol(); -var regExpMetaChars = new Set(".\\+*[^]$()"); -function compareKey(a, b) { - if (a.length === 1) { - return b.length === 1 ? a < b ? -1 : 1 : -1; - } - if (b.length === 1) { - return 1; - } - if (a === ONLY_WILDCARD_REG_EXP_STR || a === TAIL_WILDCARD_REG_EXP_STR) { - return 1; - } else if (b === ONLY_WILDCARD_REG_EXP_STR || b === TAIL_WILDCARD_REG_EXP_STR) { - return -1; - } - if (a === LABEL_REG_EXP_STR) { - return 1; - } else if (b === LABEL_REG_EXP_STR) { - return -1; - } - return a.length === b.length ? a < b ? -1 : 1 : b.length - a.length; -} -__name(compareKey, "compareKey"); -var Node = class _Node { - static { - __name(this, "_Node"); - } - #index; - #varIndex; - #children = /* @__PURE__ */ Object.create(null); - insert(tokens, index, paramMap, context, pathErrorCheckOnly) { - if (tokens.length === 0) { - if (this.#index !== void 0) { - throw PATH_ERROR; - } - if (pathErrorCheckOnly) { - return; - } - this.#index = index; - return; - } - const [token, ...restTokens] = tokens; - const pattern = token === "*" ? restTokens.length === 0 ? ["", "", ONLY_WILDCARD_REG_EXP_STR] : ["", "", LABEL_REG_EXP_STR] : token === "/*" ? ["", "", TAIL_WILDCARD_REG_EXP_STR] : token.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/); - let node; - if (pattern) { - const name = pattern[1]; - let regexpStr = pattern[2] || LABEL_REG_EXP_STR; - if (name && pattern[2]) { - if (regexpStr === ".*") { - throw PATH_ERROR; - } - regexpStr = regexpStr.replace(/^\((?!\?:)(?=[^)]+\)$)/, "(?:"); - if (/\((?!\?:)/.test(regexpStr)) { - throw PATH_ERROR; - } - } - node = this.#children[regexpStr]; - if (!node) { - if (Object.keys(this.#children).some( - (k) => k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR - )) { - throw PATH_ERROR; - } - if (pathErrorCheckOnly) { - return; - } - node = this.#children[regexpStr] = new _Node(); - if (name !== "") { - node.#varIndex = context.varIndex++; - } - } - if (!pathErrorCheckOnly && name !== "") { - paramMap.push([name, node.#varIndex]); - } - } else { - node = this.#children[token]; - if (!node) { - if (Object.keys(this.#children).some( - (k) => k.length > 1 && k !== ONLY_WILDCARD_REG_EXP_STR && k !== TAIL_WILDCARD_REG_EXP_STR - )) { - throw PATH_ERROR; - } - if (pathErrorCheckOnly) { - return; - } - node = this.#children[token] = new _Node(); - } - } - node.insert(restTokens, index, paramMap, context, pathErrorCheckOnly); - } - buildRegExpStr() { - const childKeys = Object.keys(this.#children).sort(compareKey); - const strList = childKeys.map((k) => { - const c = this.#children[k]; - return (typeof c.#varIndex === "number" ? `(${k})@${c.#varIndex}` : regExpMetaChars.has(k) ? `\\${k}` : k) + c.buildRegExpStr(); - }); - if (typeof this.#index === "number") { - strList.unshift(`#${this.#index}`); - } - if (strList.length === 0) { - return ""; - } - if (strList.length === 1) { - return strList[0]; - } - return "(?:" + strList.join("|") + ")"; - } -}; - -// node_modules/hono/dist/router/reg-exp-router/trie.js -var Trie = class { - static { - __name(this, "Trie"); - } - #context = { varIndex: 0 }; - #root = new Node(); - insert(path, index, pathErrorCheckOnly) { - const paramAssoc = []; - const groups = []; - for (let i = 0; ; ) { - let replaced = false; - path = path.replace(/\{[^}]+\}/g, (m) => { - const mark = `@\\${i}`; - groups[i] = [mark, m]; - i++; - replaced = true; - return mark; - }); - if (!replaced) { - break; - } - } - const tokens = path.match(/(?::[^\/]+)|(?:\/\*$)|./g) || []; - for (let i = groups.length - 1; i >= 0; i--) { - const [mark] = groups[i]; - for (let j = tokens.length - 1; j >= 0; j--) { - if (tokens[j].indexOf(mark) !== -1) { - tokens[j] = tokens[j].replace(mark, groups[i][1]); - break; - } - } - } - this.#root.insert(tokens, index, paramAssoc, this.#context, pathErrorCheckOnly); - return paramAssoc; - } - buildRegExp() { - let regexp = this.#root.buildRegExpStr(); - if (regexp === "") { - return [/^$/, [], []]; - } - let captureIndex = 0; - const indexReplacementMap = []; - const paramReplacementMap = []; - regexp = regexp.replace(/#(\d+)|@(\d+)|\.\*\$/g, (_, handlerIndex, paramIndex) => { - if (handlerIndex !== void 0) { - indexReplacementMap[++captureIndex] = Number(handlerIndex); - return "$()"; - } - if (paramIndex !== void 0) { - paramReplacementMap[Number(paramIndex)] = ++captureIndex; - return ""; - } - return ""; - }); - return [new RegExp(`^${regexp}`), indexReplacementMap, paramReplacementMap]; - } -}; - -// node_modules/hono/dist/router/reg-exp-router/router.js -var nullMatcher = [/^$/, [], /* @__PURE__ */ Object.create(null)]; -var wildcardRegExpCache = /* @__PURE__ */ Object.create(null); -function buildWildcardRegExp(path) { - return wildcardRegExpCache[path] ??= new RegExp( - path === "*" ? "" : `^${path.replace( - /\/\*$|([.\\+*[^\]$()])/g, - (_, metaChar) => metaChar ? `\\${metaChar}` : "(?:|/.*)" - )}$` - ); -} -__name(buildWildcardRegExp, "buildWildcardRegExp"); -function clearWildcardRegExpCache() { - wildcardRegExpCache = /* @__PURE__ */ Object.create(null); -} -__name(clearWildcardRegExpCache, "clearWildcardRegExpCache"); -function buildMatcherFromPreprocessedRoutes(routes) { - const trie = new Trie(); - const handlerData = []; - if (routes.length === 0) { - return nullMatcher; - } - const routesWithStaticPathFlag = routes.map( - (route) => [!/\*|\/:/.test(route[0]), ...route] - ).sort( - ([isStaticA, pathA], [isStaticB, pathB]) => isStaticA ? 1 : isStaticB ? -1 : pathA.length - pathB.length - ); - const staticMap = /* @__PURE__ */ Object.create(null); - for (let i = 0, j = -1, len = routesWithStaticPathFlag.length; i < len; i++) { - const [pathErrorCheckOnly, path, handlers] = routesWithStaticPathFlag[i]; - if (pathErrorCheckOnly) { - staticMap[path] = [handlers.map(([h]) => [h, /* @__PURE__ */ Object.create(null)]), emptyParam]; - } else { - j++; - } - let paramAssoc; - try { - paramAssoc = trie.insert(path, j, pathErrorCheckOnly); - } catch (e) { - throw e === PATH_ERROR ? new UnsupportedPathError(path) : e; - } - if (pathErrorCheckOnly) { - continue; - } - handlerData[j] = handlers.map(([h, paramCount]) => { - const paramIndexMap = /* @__PURE__ */ Object.create(null); - paramCount -= 1; - for (; paramCount >= 0; paramCount--) { - const [key, value] = paramAssoc[paramCount]; - paramIndexMap[key] = value; - } - return [h, paramIndexMap]; - }); - } - const [regexp, indexReplacementMap, paramReplacementMap] = trie.buildRegExp(); - for (let i = 0, len = handlerData.length; i < len; i++) { - for (let j = 0, len2 = handlerData[i].length; j < len2; j++) { - const map = handlerData[i][j]?.[1]; - if (!map) { - continue; - } - const keys = Object.keys(map); - for (let k = 0, len3 = keys.length; k < len3; k++) { - map[keys[k]] = paramReplacementMap[map[keys[k]]]; - } - } - } - const handlerMap = []; - for (const i in indexReplacementMap) { - handlerMap[i] = handlerData[indexReplacementMap[i]]; - } - return [regexp, handlerMap, staticMap]; -} -__name(buildMatcherFromPreprocessedRoutes, "buildMatcherFromPreprocessedRoutes"); -function findMiddleware(middleware, path) { - if (!middleware) { - return void 0; - } - for (const k of Object.keys(middleware).sort((a, b) => b.length - a.length)) { - if (buildWildcardRegExp(k).test(path)) { - return [...middleware[k]]; - } - } - return void 0; -} -__name(findMiddleware, "findMiddleware"); -var RegExpRouter = class { - static { - __name(this, "RegExpRouter"); - } - name = "RegExpRouter"; - #middleware; - #routes; - constructor() { - this.#middleware = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) }; - this.#routes = { [METHOD_NAME_ALL]: /* @__PURE__ */ Object.create(null) }; - } - add(method, path, handler) { - const middleware = this.#middleware; - const routes = this.#routes; - if (!middleware || !routes) { - throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT); - } - if (!middleware[method]) { - ; - [middleware, routes].forEach((handlerMap) => { - handlerMap[method] = /* @__PURE__ */ Object.create(null); - Object.keys(handlerMap[METHOD_NAME_ALL]).forEach((p) => { - handlerMap[method][p] = [...handlerMap[METHOD_NAME_ALL][p]]; - }); - }); - } - if (path === "/*") { - path = "*"; - } - const paramCount = (path.match(/\/:/g) || []).length; - if (/\*$/.test(path)) { - const re = buildWildcardRegExp(path); - if (method === METHOD_NAME_ALL) { - Object.keys(middleware).forEach((m) => { - middleware[m][path] ||= findMiddleware(middleware[m], path) || findMiddleware(middleware[METHOD_NAME_ALL], path) || []; - }); - } else { - middleware[method][path] ||= findMiddleware(middleware[method], path) || findMiddleware(middleware[METHOD_NAME_ALL], path) || []; - } - Object.keys(middleware).forEach((m) => { - if (method === METHOD_NAME_ALL || method === m) { - Object.keys(middleware[m]).forEach((p) => { - re.test(p) && middleware[m][p].push([handler, paramCount]); - }); - } - }); - Object.keys(routes).forEach((m) => { - if (method === METHOD_NAME_ALL || method === m) { - Object.keys(routes[m]).forEach( - (p) => re.test(p) && routes[m][p].push([handler, paramCount]) - ); - } - }); - return; - } - const paths = checkOptionalParameter(path) || [path]; - for (let i = 0, len = paths.length; i < len; i++) { - const path2 = paths[i]; - Object.keys(routes).forEach((m) => { - if (method === METHOD_NAME_ALL || method === m) { - routes[m][path2] ||= [ - ...findMiddleware(middleware[m], path2) || findMiddleware(middleware[METHOD_NAME_ALL], path2) || [] - ]; - routes[m][path2].push([handler, paramCount - len + i + 1]); - } - }); - } - } - match = match; - buildAllMatchers() { - const matchers = /* @__PURE__ */ Object.create(null); - Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach((method) => { - matchers[method] ||= this.#buildMatcher(method); - }); - this.#middleware = this.#routes = void 0; - clearWildcardRegExpCache(); - return matchers; - } - #buildMatcher(method) { - const routes = []; - let hasOwnRoute = method === METHOD_NAME_ALL; - [this.#middleware, this.#routes].forEach((r) => { - const ownRoute = r[method] ? Object.keys(r[method]).map((path) => [path, r[method][path]]) : []; - if (ownRoute.length !== 0) { - hasOwnRoute ||= true; - routes.push(...ownRoute); - } else if (method !== METHOD_NAME_ALL) { - routes.push( - ...Object.keys(r[METHOD_NAME_ALL]).map((path) => [path, r[METHOD_NAME_ALL][path]]) - ); - } - }); - if (!hasOwnRoute) { - return null; - } else { - return buildMatcherFromPreprocessedRoutes(routes); - } - } -}; - -// node_modules/hono/dist/router/smart-router/router.js -var SmartRouter = class { - static { - __name(this, "SmartRouter"); - } - name = "SmartRouter"; - #routers = []; - #routes = []; - constructor(init) { - this.#routers = init.routers; - } - add(method, path, handler) { - if (!this.#routes) { - throw new Error(MESSAGE_MATCHER_IS_ALREADY_BUILT); - } - this.#routes.push([method, path, handler]); - } - match(method, path) { - if (!this.#routes) { - throw new Error("Fatal error"); - } - const routers = this.#routers; - const routes = this.#routes; - const len = routers.length; - let i = 0; - let res; - for (; i < len; i++) { - const router = routers[i]; - try { - for (let i2 = 0, len2 = routes.length; i2 < len2; i2++) { - router.add(...routes[i2]); - } - res = router.match(method, path); - } catch (e) { - if (e instanceof UnsupportedPathError) { - continue; - } - throw e; - } - this.match = router.match.bind(router); - this.#routers = [router]; - this.#routes = void 0; - break; - } - if (i === len) { - throw new Error("Fatal error"); - } - this.name = `SmartRouter + ${this.activeRouter.name}`; - return res; - } - get activeRouter() { - if (this.#routes || this.#routers.length !== 1) { - throw new Error("No active router has been determined yet."); - } - return this.#routers[0]; - } -}; - -// node_modules/hono/dist/router/trie-router/node.js -var emptyParams = /* @__PURE__ */ Object.create(null); -var hasChildren = /* @__PURE__ */ __name((children) => { - for (const _ in children) { - return true; - } - return false; -}, "hasChildren"); -var Node2 = class _Node2 { - static { - __name(this, "_Node"); - } - #methods; - #children; - #patterns; - #order = 0; - #params = emptyParams; - constructor(method, handler, children) { - this.#children = children || /* @__PURE__ */ Object.create(null); - this.#methods = []; - if (method && handler) { - const m = /* @__PURE__ */ Object.create(null); - m[method] = { handler, possibleKeys: [], score: 0 }; - this.#methods = [m]; - } - this.#patterns = []; - } - insert(method, path, handler) { - this.#order = ++this.#order; - let curNode = this; - const parts = splitRoutingPath(path); - const possibleKeys = []; - for (let i = 0, len = parts.length; i < len; i++) { - const p = parts[i]; - const nextP = parts[i + 1]; - const pattern = getPattern(p, nextP); - const key = Array.isArray(pattern) ? pattern[0] : p; - if (key in curNode.#children) { - curNode = curNode.#children[key]; - if (pattern) { - possibleKeys.push(pattern[1]); - } - continue; - } - curNode.#children[key] = new _Node2(); - if (pattern) { - curNode.#patterns.push(pattern); - possibleKeys.push(pattern[1]); - } - curNode = curNode.#children[key]; - } - curNode.#methods.push({ - [method]: { - handler, - possibleKeys: possibleKeys.filter((v, i, a) => a.indexOf(v) === i), - score: this.#order - } - }); - return curNode; - } - #pushHandlerSets(handlerSets, node, method, nodeParams, params) { - for (let i = 0, len = node.#methods.length; i < len; i++) { - const m = node.#methods[i]; - const handlerSet = m[method] || m[METHOD_NAME_ALL]; - const processedSet = {}; - if (handlerSet !== void 0) { - handlerSet.params = /* @__PURE__ */ Object.create(null); - handlerSets.push(handlerSet); - if (nodeParams !== emptyParams || params && params !== emptyParams) { - for (let i2 = 0, len2 = handlerSet.possibleKeys.length; i2 < len2; i2++) { - const key = handlerSet.possibleKeys[i2]; - const processed = processedSet[handlerSet.score]; - handlerSet.params[key] = params?.[key] && !processed ? params[key] : nodeParams[key] ?? params?.[key]; - processedSet[handlerSet.score] = true; - } - } - } - } - } - search(method, path) { - const handlerSets = []; - this.#params = emptyParams; - const curNode = this; - let curNodes = [curNode]; - const parts = splitPath(path); - const curNodesQueue = []; - const len = parts.length; - let partOffsets = null; - for (let i = 0; i < len; i++) { - const part = parts[i]; - const isLast = i === len - 1; - const tempNodes = []; - for (let j = 0, len2 = curNodes.length; j < len2; j++) { - const node = curNodes[j]; - const nextNode = node.#children[part]; - if (nextNode) { - nextNode.#params = node.#params; - if (isLast) { - if (nextNode.#children["*"]) { - this.#pushHandlerSets(handlerSets, nextNode.#children["*"], method, node.#params); - } - this.#pushHandlerSets(handlerSets, nextNode, method, node.#params); - } else { - tempNodes.push(nextNode); - } - } - for (let k = 0, len3 = node.#patterns.length; k < len3; k++) { - const pattern = node.#patterns[k]; - const params = node.#params === emptyParams ? {} : { ...node.#params }; - if (pattern === "*") { - const astNode = node.#children["*"]; - if (astNode) { - this.#pushHandlerSets(handlerSets, astNode, method, node.#params); - astNode.#params = params; - tempNodes.push(astNode); - } - continue; - } - const [key, name, matcher] = pattern; - if (!part && !(matcher instanceof RegExp)) { - continue; - } - const child = node.#children[key]; - if (matcher instanceof RegExp) { - if (partOffsets === null) { - partOffsets = new Array(len); - let offset = path[0] === "/" ? 1 : 0; - for (let p = 0; p < len; p++) { - partOffsets[p] = offset; - offset += parts[p].length + 1; - } - } - const restPathString = path.substring(partOffsets[i]); - const m = matcher.exec(restPathString); - if (m) { - params[name] = m[0]; - this.#pushHandlerSets(handlerSets, child, method, node.#params, params); - if (hasChildren(child.#children)) { - child.#params = params; - const componentCount = m[0].match(/\//)?.length ?? 0; - const targetCurNodes = curNodesQueue[componentCount] ||= []; - targetCurNodes.push(child); - } - continue; - } - } - if (matcher === true || matcher.test(part)) { - params[name] = part; - if (isLast) { - this.#pushHandlerSets(handlerSets, child, method, params, node.#params); - if (child.#children["*"]) { - this.#pushHandlerSets( - handlerSets, - child.#children["*"], - method, - params, - node.#params - ); - } - } else { - child.#params = params; - tempNodes.push(child); - } - } - } - } - const shifted = curNodesQueue.shift(); - curNodes = shifted ? tempNodes.concat(shifted) : tempNodes; - } - if (handlerSets.length > 1) { - handlerSets.sort((a, b) => { - return a.score - b.score; - }); - } - return [handlerSets.map(({ handler, params }) => [handler, params])]; - } -}; - -// node_modules/hono/dist/router/trie-router/router.js -var TrieRouter = class { - static { - __name(this, "TrieRouter"); - } - name = "TrieRouter"; - #node; - constructor() { - this.#node = new Node2(); - } - add(method, path, handler) { - const results = checkOptionalParameter(path); - if (results) { - for (let i = 0, len = results.length; i < len; i++) { - this.#node.insert(method, results[i], handler); - } - return; - } - this.#node.insert(method, path, handler); - } - match(method, path) { - return this.#node.search(method, path); - } -}; - -// node_modules/hono/dist/hono.js -var Hono2 = class extends Hono { - static { - __name(this, "Hono"); - } - /** - * Creates an instance of the Hono class. - * - * @param options - Optional configuration options for the Hono instance. - */ - constructor(options = {}) { - super(options); - this.router = options.router ?? new SmartRouter({ - routers: [new RegExpRouter(), new TrieRouter()] - }); - } -}; - -// node_modules/hono/dist/middleware/cors/index.js -var cors = /* @__PURE__ */ __name((options) => { - const opts = { - origin: "*", - allowMethods: ["GET", "HEAD", "PUT", "POST", "DELETE", "PATCH"], - allowHeaders: [], - exposeHeaders: [], - ...options - }; - const findAllowOrigin = ((optsOrigin) => { - if (typeof optsOrigin === "string") { - if (optsOrigin === "*") { - return () => optsOrigin; - } else { - return (origin) => optsOrigin === origin ? origin : null; - } - } else if (typeof optsOrigin === "function") { - return optsOrigin; - } else { - return (origin) => optsOrigin.includes(origin) ? origin : null; - } - })(opts.origin); - const findAllowMethods = ((optsAllowMethods) => { - if (typeof optsAllowMethods === "function") { - return optsAllowMethods; - } else if (Array.isArray(optsAllowMethods)) { - return () => optsAllowMethods; - } else { - return () => []; - } - })(opts.allowMethods); - return /* @__PURE__ */ __name(async function cors2(c, next) { - function set(key, value) { - c.res.headers.set(key, value); - } - __name(set, "set"); - const allowOrigin = await findAllowOrigin(c.req.header("origin") || "", c); - if (allowOrigin) { - set("Access-Control-Allow-Origin", allowOrigin); - } - if (opts.credentials) { - set("Access-Control-Allow-Credentials", "true"); - } - if (opts.exposeHeaders?.length) { - set("Access-Control-Expose-Headers", opts.exposeHeaders.join(",")); - } - if (c.req.method === "OPTIONS") { - if (opts.origin !== "*") { - set("Vary", "Origin"); - } - if (opts.maxAge != null) { - set("Access-Control-Max-Age", opts.maxAge.toString()); - } - const allowMethods = await findAllowMethods(c.req.header("origin") || "", c); - if (allowMethods.length) { - set("Access-Control-Allow-Methods", allowMethods.join(",")); - } - let headers = opts.allowHeaders; - if (!headers?.length) { - const requestHeaders = c.req.header("Access-Control-Request-Headers"); - if (requestHeaders) { - headers = requestHeaders.split(/\s*,\s*/); - } - } - if (headers?.length) { - set("Access-Control-Allow-Headers", headers.join(",")); - c.res.headers.append("Vary", "Access-Control-Request-Headers"); - } - c.res.headers.delete("Content-Length"); - c.res.headers.delete("Content-Type"); - return new Response(null, { - headers: c.res.headers, - status: 204, - statusText: "No Content" - }); - } - await next(); - if (opts.origin !== "*") { - c.header("Vary", "Origin", { append: true }); - } - }, "cors2"); -}, "cors"); - -// node_modules/hyparquet/src/constants.js -var ParquetTypes = [ - "BOOLEAN", - "INT32", - "INT64", - "INT96", - // deprecated - "FLOAT", - "DOUBLE", - "BYTE_ARRAY", - "FIXED_LEN_BYTE_ARRAY" -]; -var Encodings = [ - "PLAIN", - "GROUP_VAR_INT", - // deprecated - "PLAIN_DICTIONARY", - "RLE", - "BIT_PACKED", - // deprecated - "DELTA_BINARY_PACKED", - "DELTA_LENGTH_BYTE_ARRAY", - "DELTA_BYTE_ARRAY", - "RLE_DICTIONARY", - "BYTE_STREAM_SPLIT" -]; -var FieldRepetitionTypes = [ - "REQUIRED", - "OPTIONAL", - "REPEATED" -]; -var ConvertedTypes = [ - "UTF8", - "MAP", - "MAP_KEY_VALUE", - "LIST", - "ENUM", - "DECIMAL", - "DATE", - "TIME_MILLIS", - "TIME_MICROS", - "TIMESTAMP_MILLIS", - "TIMESTAMP_MICROS", - "UINT_8", - "UINT_16", - "UINT_32", - "UINT_64", - "INT_8", - "INT_16", - "INT_32", - "INT_64", - "JSON", - "BSON", - "INTERVAL" -]; -var CompressionCodecs = [ - "UNCOMPRESSED", - "SNAPPY", - "GZIP", - "LZO", - "BROTLI", - "LZ4", - "ZSTD", - "LZ4_RAW" -]; -var PageTypes = [ - "DATA_PAGE", - "INDEX_PAGE", - "DICTIONARY_PAGE", - "DATA_PAGE_V2" -]; -var EdgeInterpolationAlgorithms = [ - "SPHERICAL", - "VINCENTY", - "THOMAS", - "ANDOYER", - "KARNEY" -]; - -// node_modules/hyparquet/src/wkb.js -function wkbToGeojson(reader) { - const flags = getFlags(reader); - if (flags.type === 1) { - return { type: "Point", coordinates: readPosition(reader, flags) }; - } else if (flags.type === 2) { - return { type: "LineString", coordinates: readLine(reader, flags) }; - } else if (flags.type === 3) { - return { type: "Polygon", coordinates: readPolygon(reader, flags) }; - } else if (flags.type === 4) { - const points = []; - for (let i = 0; i < flags.count; i++) { - points.push(readPosition(reader, getFlags(reader))); - } - return { type: "MultiPoint", coordinates: points }; - } else if (flags.type === 5) { - const lines = []; - for (let i = 0; i < flags.count; i++) { - lines.push(readLine(reader, getFlags(reader))); - } - return { type: "MultiLineString", coordinates: lines }; - } else if (flags.type === 6) { - const polygons = []; - for (let i = 0; i < flags.count; i++) { - polygons.push(readPolygon(reader, getFlags(reader))); - } - return { type: "MultiPolygon", coordinates: polygons }; - } else if (flags.type === 7) { - const geometries = []; - for (let i = 0; i < flags.count; i++) { - geometries.push(wkbToGeojson(reader)); - } - return { type: "GeometryCollection", geometries }; - } else { - throw new Error(`Unsupported geometry type: ${flags.type}`); - } -} -__name(wkbToGeojson, "wkbToGeojson"); -function getFlags(reader) { - const { view } = reader; - const littleEndian = view.getUint8(reader.offset++) === 1; - const rawType = view.getUint32(reader.offset, littleEndian); - reader.offset += 4; - const type = rawType % 1e3; - const flags = Math.floor(rawType / 1e3); - let count = 0; - if (type > 1 && type <= 7) { - count = view.getUint32(reader.offset, littleEndian); - reader.offset += 4; - } - let dim = 2; - if (flags) dim++; - if (flags === 3) dim++; - return { littleEndian, type, dim, count }; -} -__name(getFlags, "getFlags"); -function readPosition(reader, flags) { - const points = []; - for (let i = 0; i < flags.dim; i++) { - const coord = reader.view.getFloat64(reader.offset, flags.littleEndian); - reader.offset += 8; - points.push(coord); - } - return points; -} -__name(readPosition, "readPosition"); -function readLine(reader, flags) { - const points = []; - for (let i = 0; i < flags.count; i++) { - points.push(readPosition(reader, flags)); - } - return points; -} -__name(readLine, "readLine"); -function readPolygon(reader, flags) { - const { view } = reader; - const rings = []; - for (let r = 0; r < flags.count; r++) { - const count = view.getUint32(reader.offset, flags.littleEndian); - reader.offset += 4; - rings.push(readLine(reader, { ...flags, count })); - } - return rings; -} -__name(readPolygon, "readPolygon"); - -// node_modules/hyparquet/src/convert.js -var decoder = new TextDecoder(); -var DEFAULT_PARSERS = { - timestampFromMilliseconds(millis) { - return new Date(Number(millis)); - }, - timestampFromMicroseconds(micros) { - return new Date(Number(micros / 1000n)); - }, - timestampFromNanoseconds(nanos) { - return new Date(Number(nanos / 1000000n)); - }, - dateFromDays(days) { - return new Date(days * 864e5); - }, - stringFromBytes(bytes) { - return bytes && decoder.decode(bytes); - }, - jsonFromBytes(bytes) { - return bytes && JSON.parse(decoder.decode(bytes)); - }, - geometryFromBytes(bytes) { - return bytes && wkbToGeojson({ view: new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength), offset: 0 }); - }, - geographyFromBytes(bytes) { - return bytes && wkbToGeojson({ view: new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength), offset: 0 }); - }, - uuidFromBytes(bytes) { - if (!bytes) return void 0; - const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join(""); - return hex.slice(0, 8) + "-" + hex.slice(8, 12) + "-" + hex.slice(12, 16) + "-" + hex.slice(16, 20) + "-" + hex.slice(20, 32); - } -}; -function convertWithDictionary(data, dictionary, encoding, columnDecoder) { - if (dictionary && encoding.endsWith("_DICTIONARY")) { - let output = data; - if (data instanceof Uint8Array && !(dictionary instanceof Uint8Array)) { - output = new dictionary.constructor(data.length); - } - for (let i = 0; i < data.length; i++) { - output[i] = dictionary[data[i]]; - } - return output; - } else { - return convert(data, columnDecoder); - } -} -__name(convertWithDictionary, "convertWithDictionary"); -function convert(data, columnDecoder) { - const { element, parsers, utf8 = true, schemaPath } = columnDecoder; - const { type, converted_type: ctype, logical_type: ltype } = element; - const nullable = element.repetition_type !== "REQUIRED"; - const isVariant = schemaPath?.some((s) => s.element.logical_type?.type === "VARIANT"); - if (isVariant && type === "BYTE_ARRAY" && ctype !== "UTF8" && ltype?.type !== "STRING") { - return data; - } - if (ctype === "DECIMAL") { - const scale = element.scale || 0; - const factor = 10 ** -scale; - const arr = new Array(data.length); - for (let i = 0; i < arr.length; i++) { - if (data[i] instanceof Uint8Array) { - arr[i] = parseDecimal(data[i]) * factor; - } else { - arr[i] = Number(data[i]) * factor; - } - } - return arr; - } - if (!ctype && type === "INT96") { - return Array.from(data).map((v) => parsers.timestampFromNanoseconds(parseInt96Nanos(v))); - } - if (ctype === "DATE") { - return Array.from(data).map((v) => parsers.dateFromDays(v)); - } - if (ctype === "TIMESTAMP_MILLIS") { - return Array.from(data).map((v) => parsers.timestampFromMilliseconds(v)); - } - if (ctype === "TIMESTAMP_MICROS") { - return Array.from(data).map((v) => parsers.timestampFromMicroseconds(v)); - } - if (ctype === "JSON") { - return data.map((v) => parsers.jsonFromBytes(v)); - } - if (ctype === "BSON") { - throw new Error("parquet bson not supported"); - } - if (ctype === "INTERVAL") { - throw new Error("parquet interval not supported"); - } - if (ltype?.type === "GEOMETRY") { - return data.map((v) => parsers.geometryFromBytes(v)); - } - if (ltype?.type === "GEOGRAPHY") { - return data.map((v) => parsers.geographyFromBytes(v)); - } - if (ltype?.type === "UUID") { - return data.map((v) => parsers.uuidFromBytes(v)); - } - if (ctype === "UTF8" || ltype?.type === "STRING" || utf8 && type === "BYTE_ARRAY") { - return data.map((v) => parsers.stringFromBytes(v)); - } - if (ctype === "UINT_64" || ltype?.type === "INTEGER" && ltype.bitWidth === 64 && !ltype.isSigned) { - if (data instanceof BigInt64Array) return new BigUint64Array(data.buffer, data.byteOffset, data.length); - const arr = nullable ? new Array(data.length) : new BigUint64Array(data.length); - for (let i = 0; i < arr.length; i++) arr[i] = data[i]; - return arr; - } - if (ctype === "UINT_32" || ltype?.type === "INTEGER" && ltype.bitWidth === 32 && !ltype.isSigned) { - if (data instanceof Int32Array) return new Uint32Array(data.buffer, data.byteOffset, data.length); - const arr = nullable ? new Array(data.length) : new Uint32Array(data.length); - for (let i = 0; i < arr.length; i++) { - arr[i] = data[i] < 0 ? 4294967296 + data[i] : data[i]; - } - return arr; - } - if (ltype?.type === "FLOAT16") { - return Array.from(data).map(parseFloat16); - } - if (ltype?.type === "TIMESTAMP") { - const { unit } = ltype; - let parser = parsers.timestampFromMilliseconds; - if (unit === "MICROS") parser = parsers.timestampFromMicroseconds; - if (unit === "NANOS") parser = parsers.timestampFromNanoseconds; - const arr = new Array(data.length); - for (let i = 0; i < arr.length; i++) { - arr[i] = parser(data[i]); - } - return arr; - } - return data; -} -__name(convert, "convert"); -function parseDecimal(bytes) { - if (!bytes.length) return 0; - let value = 0n; - for (const byte of bytes) { - value = value * 256n + BigInt(byte); - } - const bits = bytes.length * 8; - if (value >= 2n ** BigInt(bits - 1)) { - value -= 2n ** BigInt(bits); - } - return Number(value); -} -__name(parseDecimal, "parseDecimal"); -function parseInt96Nanos(value) { - const days = (value >> 64n) - 2440588n; - const nano = value & 0xffffffffffffffffn; - return days * 86400000000000n + nano; -} -__name(parseInt96Nanos, "parseInt96Nanos"); -function parseFloat16(bytes) { - if (!bytes) return void 0; - const int16 = bytes[1] << 8 | bytes[0]; - const sign = int16 >> 15 ? -1 : 1; - const exp = int16 >> 10 & 31; - const frac = int16 & 1023; - if (exp === 0) return sign * 2 ** -14 * (frac / 1024); - if (exp === 31) return frac ? NaN : sign * Infinity; - return sign * 2 ** (exp - 15) * (1 + frac / 1024); -} -__name(parseFloat16, "parseFloat16"); - -// node_modules/hyparquet/src/schema.js -function schemaTree(schema, rootIndex, path) { - const element = schema[rootIndex]; - const children = []; - let count = 1; - if (element.num_children) { - while (children.length < element.num_children) { - const childElement = schema[rootIndex + count]; - const child = schemaTree(schema, rootIndex + count, [...path, childElement.name]); - count += child.count; - children.push(child); - } - } - return { count, element, children, path }; -} -__name(schemaTree, "schemaTree"); -function getSchemaPath(schema, name) { - let tree = schemaTree(schema, 0, []); - const path = [tree]; - for (const part of name) { - const child = tree.children.find((child2) => child2.element.name === part); - if (!child) throw new Error(`parquet schema element not found: ${name}`); - path.push(child); - tree = child; - } - return path; -} -__name(getSchemaPath, "getSchemaPath"); -function getPhysicalColumns(schemaTree2) { - const columns = []; - function traverse(node) { - if (node.children.length) { - for (const child of node.children) { - traverse(child); - } - } else { - columns.push(node.path.join(".")); - } - } - __name(traverse, "traverse"); - traverse(schemaTree2); - return columns; -} -__name(getPhysicalColumns, "getPhysicalColumns"); -function getMaxRepetitionLevel(schemaPath) { - let maxLevel = 0; - for (const { element } of schemaPath) { - if (element.repetition_type === "REPEATED") { - maxLevel++; - } - } - return maxLevel; -} -__name(getMaxRepetitionLevel, "getMaxRepetitionLevel"); -function getMaxDefinitionLevel(schemaPath) { - let maxLevel = 0; - for (const { element } of schemaPath.slice(1)) { - if (element.repetition_type !== "REQUIRED") { - maxLevel++; - } - } - return maxLevel; -} -__name(getMaxDefinitionLevel, "getMaxDefinitionLevel"); -function isListLike(schema) { - if (!schema) return false; - if (schema.element.converted_type !== "LIST") return false; - if (schema.children.length > 1) return false; - const firstChild = schema.children[0]; - if (firstChild.children.length > 1) return false; - if (firstChild.element.repetition_type !== "REPEATED") return false; - return true; -} -__name(isListLike, "isListLike"); -function isMapLike(schema) { - if (!schema) return false; - if (schema.element.converted_type !== "MAP") return false; - if (schema.children.length > 1) return false; - const firstChild = schema.children[0]; - if (firstChild.children.length !== 2) return false; - if (firstChild.element.repetition_type !== "REPEATED") return false; - const keyChild = firstChild.children.find((child) => child.element.name === "key"); - if (keyChild?.element.repetition_type === "REPEATED") return false; - const valueChild = firstChild.children.find((child) => child.element.name === "value"); - if (valueChild?.element.repetition_type === "REPEATED") return false; - return true; -} -__name(isMapLike, "isMapLike"); -function isFlatColumn(schemaPath) { - if (schemaPath.length !== 2) return false; - const [, column] = schemaPath; - if (column.element.repetition_type === "REPEATED") return false; - if (column.children.length) return false; - return true; -} -__name(isFlatColumn, "isFlatColumn"); - -// node_modules/hyparquet/src/thrift.js -var STOP = 0; -var TRUE = 1; -var FALSE = 2; -var BYTE = 3; -var I16 = 4; -var I32 = 5; -var I64 = 6; -var DOUBLE = 7; -var BINARY = 8; -var LIST = 9; -var STRUCT = 12; -function deserializeTCompactProtocol(reader) { - const value = {}; - let fid = 0; - while (reader.offset < reader.view.byteLength) { - const byte = reader.view.getUint8(reader.offset++); - const type = byte & 15; - if (type === STOP) break; - const delta = byte >> 4; - fid = delta ? fid + delta : readZigZag(reader); - value[`field_${fid}`] = readElement(reader, type); - } - return value; -} -__name(deserializeTCompactProtocol, "deserializeTCompactProtocol"); -function readElement(reader, type) { - switch (type) { - case TRUE: - return true; - case FALSE: - return false; - case BYTE: - return reader.view.getInt8(reader.offset++); - case I16: - case I32: - return readZigZag(reader); - case I64: - return readZigZagBigInt(reader); - case DOUBLE: { - const value = reader.view.getFloat64(reader.offset, true); - reader.offset += 8; - return value; - } - case BINARY: { - const stringLength = readVarInt(reader); - const strBytes = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, stringLength); - reader.offset += stringLength; - return strBytes; - } - case LIST: { - const byte = reader.view.getUint8(reader.offset++); - const elemType = byte & 15; - let listSize = byte >> 4; - if (listSize === 15) { - listSize = readVarInt(reader); - } - const boolType = elemType === TRUE || elemType === FALSE; - const values = new Array(listSize); - for (let i = 0; i < listSize; i++) { - values[i] = boolType ? readElement(reader, BYTE) === 1 : readElement(reader, elemType); - } - return values; - } - case STRUCT: - return deserializeTCompactProtocol(reader); - default: - throw new Error(`thrift unhandled type: ${type}`); - } -} -__name(readElement, "readElement"); -function readVarInt(reader) { - let result = 0; - let shift = 0; - while (true) { - const byte = reader.view.getUint8(reader.offset++); - result |= (byte & 127) << shift; - if (!(byte & 128)) { - return result; - } - shift += 7; - } -} -__name(readVarInt, "readVarInt"); -function readVarBigInt(reader) { - let result = 0n; - let shift = 0n; - while (true) { - const byte = reader.view.getUint8(reader.offset++); - result |= BigInt(byte & 127) << shift; - if (!(byte & 128)) { - return result; - } - shift += 7n; - } -} -__name(readVarBigInt, "readVarBigInt"); -function readZigZag(reader) { - const zigzag = readVarInt(reader); - return zigzag >>> 1 ^ -(zigzag & 1); -} -__name(readZigZag, "readZigZag"); -function readZigZagBigInt(reader) { - const zigzag = readVarBigInt(reader); - return zigzag >> 1n ^ -(zigzag & 1n); -} -__name(readZigZagBigInt, "readZigZagBigInt"); - -// node_modules/hyparquet/src/geoparquet.js -function markGeoColumns(schema, key_value_metadata) { - const columns = /* @__PURE__ */ new Map(); - const geo = key_value_metadata?.find(({ key }) => key === "geo")?.value; - const decodedColumns = (geo && JSON.parse(geo)?.columns) ?? {}; - for (const [name, column] of Object.entries(decodedColumns)) { - if (column.encoding !== "WKB") continue; - const type = column.edges === "spherical" ? "GEOGRAPHY" : "GEOMETRY"; - const id = column.crs?.id ?? column.crs?.ids?.[0]; - const crs = id ? `${id.authority}:${id.code.toString()}` : void 0; - columns.set(name, { type, crs }); - } - for (let i = 1; i < schema.length; i++) { - const { logical_type, name, num_children, type } = schema[i]; - if (num_children) { - i += num_children; - continue; - } - if (type === "BYTE_ARRAY" && !logical_type) { - schema[i].logical_type = columns.get(name); - } - } -} -__name(markGeoColumns, "markGeoColumns"); - -// node_modules/hyparquet/src/metadata.js -var defaultInitialFetchSize = 1 << 19; -var decoder2 = new TextDecoder(); -function decode(value) { - return value && decoder2.decode(value); -} -__name(decode, "decode"); -async function parquetMetadataAsync(asyncBuffer, { parsers, initialFetchSize = defaultInitialFetchSize, geoparquet = true } = {}) { - if (!asyncBuffer || !(asyncBuffer.byteLength >= 0)) throw new Error("parquet expected AsyncBuffer"); - const footerOffset = Math.max(0, asyncBuffer.byteLength - initialFetchSize); - const footerBuffer = await asyncBuffer.slice(footerOffset, asyncBuffer.byteLength); - const footerView = new DataView(footerBuffer); - if (footerView.getUint32(footerBuffer.byteLength - 4, true) !== 827474256) { - throw new Error("parquet file invalid (footer != PAR1)"); - } - const metadataLength = footerView.getUint32(footerBuffer.byteLength - 8, true); - if (metadataLength > asyncBuffer.byteLength - 8) { - throw new Error(`parquet metadata length ${metadataLength} exceeds available buffer ${asyncBuffer.byteLength - 8}`); - } - if (metadataLength + 8 > initialFetchSize) { - const metadataOffset = asyncBuffer.byteLength - metadataLength - 8; - const metadataBuffer = await asyncBuffer.slice(metadataOffset, footerOffset); - const combinedBuffer = new ArrayBuffer(metadataLength + 8); - const combinedView = new Uint8Array(combinedBuffer); - combinedView.set(new Uint8Array(metadataBuffer)); - combinedView.set(new Uint8Array(footerBuffer), footerOffset - metadataOffset); - return parquetMetadata(combinedBuffer, { parsers, geoparquet }); - } else { - return parquetMetadata(footerBuffer, { parsers, geoparquet }); - } -} -__name(parquetMetadataAsync, "parquetMetadataAsync"); -function parquetMetadata(arrayBuffer, { parsers, geoparquet = true } = {}) { - if (!(arrayBuffer instanceof ArrayBuffer)) throw new Error("parquet expected ArrayBuffer"); - const view = new DataView(arrayBuffer); - parsers = { ...DEFAULT_PARSERS, ...parsers }; - if (view.byteLength < 8) { - throw new Error("parquet file is too short"); - } - if (view.getUint32(view.byteLength - 4, true) !== 827474256) { - throw new Error("parquet file invalid (footer != PAR1)"); - } - const metadataLengthOffset = view.byteLength - 8; - const metadataLength = view.getUint32(metadataLengthOffset, true); - if (metadataLength > view.byteLength - 8) { - throw new Error(`parquet metadata length ${metadataLength} exceeds available buffer ${view.byteLength - 8}`); - } - const metadataOffset = metadataLengthOffset - metadataLength; - const reader = { view, offset: metadataOffset }; - const metadata = deserializeTCompactProtocol(reader); - const version = metadata.field_1; - const schema = metadata.field_2.map((field) => ({ - type: ParquetTypes[field.field_1], - type_length: field.field_2, - repetition_type: FieldRepetitionTypes[field.field_3], - name: decode(field.field_4), - num_children: field.field_5, - converted_type: ConvertedTypes[field.field_6], - scale: field.field_7, - precision: field.field_8, - field_id: field.field_9, - logical_type: logicalType(field.field_10) - })); - const columnSchema = schema.filter((e) => e.type); - const num_rows = metadata.field_3; - const row_groups = metadata.field_4.map((rowGroup) => ({ - columns: rowGroup.field_1.map((column, columnIndex) => ({ - file_path: decode(column.field_1), - file_offset: column.field_2, - meta_data: column.field_3 && { - type: ParquetTypes[column.field_3.field_1], - encodings: column.field_3.field_2?.map((e) => Encodings[e]), - path_in_schema: column.field_3.field_3.map(decode), - codec: CompressionCodecs[column.field_3.field_4], - num_values: column.field_3.field_5, - total_uncompressed_size: column.field_3.field_6, - total_compressed_size: column.field_3.field_7, - key_value_metadata: column.field_3.field_8?.map((kv) => ({ - key: decode(kv.field_1), - value: decode(kv.field_2) - })), - data_page_offset: column.field_3.field_9, - index_page_offset: column.field_3.field_10, - dictionary_page_offset: column.field_3.field_11, - statistics: convertStats(column.field_3.field_12, columnSchema[columnIndex], parsers), - encoding_stats: column.field_3.field_13?.map((encodingStat) => ({ - page_type: PageTypes[encodingStat.field_1], - encoding: Encodings[encodingStat.field_2], - count: encodingStat.field_3 - })), - bloom_filter_offset: column.field_3.field_14, - bloom_filter_length: column.field_3.field_15, - size_statistics: column.field_3.field_16 && { - unencoded_byte_array_data_bytes: column.field_3.field_16.field_1, - repetition_level_histogram: column.field_3.field_16.field_2, - definition_level_histogram: column.field_3.field_16.field_3 - }, - geospatial_statistics: column.field_3.field_17 && { - bbox: column.field_3.field_17.field_1 && { - xmin: column.field_3.field_17.field_1.field_1, - xmax: column.field_3.field_17.field_1.field_2, - ymin: column.field_3.field_17.field_1.field_3, - ymax: column.field_3.field_17.field_1.field_4, - zmin: column.field_3.field_17.field_1.field_5, - zmax: column.field_3.field_17.field_1.field_6, - mmin: column.field_3.field_17.field_1.field_7, - mmax: column.field_3.field_17.field_1.field_8 - }, - geospatial_types: column.field_3.field_17.field_2 - } - }, - offset_index_offset: column.field_4, - offset_index_length: column.field_5, - column_index_offset: column.field_6, - column_index_length: column.field_7, - crypto_metadata: column.field_8, - encrypted_column_metadata: column.field_9 - })), - total_byte_size: rowGroup.field_2, - num_rows: rowGroup.field_3, - sorting_columns: rowGroup.field_4?.map((sortingColumn) => ({ - column_idx: sortingColumn.field_1, - descending: sortingColumn.field_2, - nulls_first: sortingColumn.field_3 - })), - file_offset: rowGroup.field_5, - total_compressed_size: rowGroup.field_6, - ordinal: rowGroup.field_7 - })); - const key_value_metadata = metadata.field_5?.map((kv) => ({ - key: decode(kv.field_1), - value: decode(kv.field_2) - })); - const created_by = decode(metadata.field_6); - if (geoparquet) { - markGeoColumns(schema, key_value_metadata); - } - return { - version, - schema, - num_rows, - row_groups, - key_value_metadata, - created_by, - metadata_length: metadataLength - }; -} -__name(parquetMetadata, "parquetMetadata"); -function parquetSchema({ schema }) { - return getSchemaPath(schema, [])[0]; -} -__name(parquetSchema, "parquetSchema"); -function logicalType(logicalType2) { - if (logicalType2?.field_1) return { type: "STRING" }; - if (logicalType2?.field_2) return { type: "MAP" }; - if (logicalType2?.field_3) return { type: "LIST" }; - if (logicalType2?.field_4) return { type: "ENUM" }; - if (logicalType2?.field_5) return { - type: "DECIMAL", - scale: logicalType2.field_5.field_1, - precision: logicalType2.field_5.field_2 - }; - if (logicalType2?.field_6) return { type: "DATE" }; - if (logicalType2?.field_7) return { - type: "TIME", - isAdjustedToUTC: logicalType2.field_7.field_1, - unit: timeUnit(logicalType2.field_7.field_2) - }; - if (logicalType2?.field_8) return { - type: "TIMESTAMP", - isAdjustedToUTC: logicalType2.field_8.field_1, - unit: timeUnit(logicalType2.field_8.field_2) - }; - if (logicalType2?.field_10) return { - type: "INTEGER", - bitWidth: logicalType2.field_10.field_1, - isSigned: logicalType2.field_10.field_2 - }; - if (logicalType2?.field_11) return { type: "NULL" }; - if (logicalType2?.field_12) return { type: "JSON" }; - if (logicalType2?.field_13) return { type: "BSON" }; - if (logicalType2?.field_14) return { type: "UUID" }; - if (logicalType2?.field_15) return { type: "FLOAT16" }; - if (logicalType2?.field_16) return { - type: "VARIANT", - specification_version: logicalType2.field_16.field_1 - }; - if (logicalType2?.field_17) return { - type: "GEOMETRY", - crs: decode(logicalType2.field_17.field_1) - }; - if (logicalType2?.field_18) return { - type: "GEOGRAPHY", - crs: decode(logicalType2.field_18.field_1), - algorithm: EdgeInterpolationAlgorithms[logicalType2.field_18.field_2] - }; - return logicalType2; -} -__name(logicalType, "logicalType"); -function timeUnit(unit) { - if (unit.field_1) return "MILLIS"; - if (unit.field_2) return "MICROS"; - if (unit.field_3) return "NANOS"; - throw new Error("parquet time unit required"); -} -__name(timeUnit, "timeUnit"); -function convertStats(stats, schema, parsers) { - return stats && { - max: convertMetadata(stats.field_1, schema, parsers), - min: convertMetadata(stats.field_2, schema, parsers), - null_count: stats.field_3, - distinct_count: stats.field_4, - max_value: convertMetadata(stats.field_5, schema, parsers), - min_value: convertMetadata(stats.field_6, schema, parsers), - is_max_value_exact: stats.field_7, - is_min_value_exact: stats.field_8 - }; -} -__name(convertStats, "convertStats"); -function convertMetadata(value, schema, parsers) { - const { type, converted_type, logical_type } = schema; - if (value === void 0) return value; - if (type === "BOOLEAN") return value[0] === 1; - if (type === "BYTE_ARRAY") return parsers.stringFromBytes(value); - const view = new DataView(value.buffer, value.byteOffset, value.byteLength); - if (type === "FLOAT" && view.byteLength === 4) return view.getFloat32(0, true); - if (type === "DOUBLE" && view.byteLength === 8) return view.getFloat64(0, true); - if (type === "INT32" && converted_type === "DATE") return parsers.dateFromDays(view.getInt32(0, true)); - if (type === "INT64" && converted_type === "TIMESTAMP_MILLIS") return parsers.timestampFromMilliseconds(view.getBigInt64(0, true)); - if (type === "INT64" && converted_type === "TIMESTAMP_MICROS") return parsers.timestampFromMicroseconds(view.getBigInt64(0, true)); - if (type === "INT64" && logical_type?.type === "TIMESTAMP" && logical_type?.unit === "NANOS") return parsers.timestampFromNanoseconds(view.getBigInt64(0, true)); - if (type === "INT64" && logical_type?.type === "TIMESTAMP" && logical_type?.unit === "MICROS") return parsers.timestampFromMicroseconds(view.getBigInt64(0, true)); - if (type === "INT64" && logical_type?.type === "TIMESTAMP") return parsers.timestampFromMilliseconds(view.getBigInt64(0, true)); - if (type === "INT32" && view.byteLength === 4) return view.getInt32(0, true); - if (type === "INT64" && view.byteLength === 8) return view.getBigInt64(0, true); - if (converted_type === "DECIMAL") return parseDecimal(value) * 10 ** -(schema.scale || 0); - if (logical_type?.type === "FLOAT16") return parseFloat16(value); - if (logical_type?.type === "UUID") return parsers.uuidFromBytes(value); - if (type === "FIXED_LEN_BYTE_ARRAY") return value; - return value; -} -__name(convertMetadata, "convertMetadata"); - -// node_modules/hyparquet/src/indexes.js -function readOffsetIndex(reader) { - const thrift = deserializeTCompactProtocol(reader); - return { - // @ts-ignore - page_locations: thrift.field_1.map((loc) => ({ - offset: loc.field_1, - compressed_page_size: loc.field_2, - first_row_index: loc.field_3 - })), - unencoded_byte_array_data_bytes: thrift.field_2 - }; -} -__name(readOffsetIndex, "readOffsetIndex"); - -// node_modules/hyparquet/src/xxhash.js -var MASK = 0xffffffffffffffffn; -var PRIME1 = 0x9e3779b185ebca87n; -var PRIME2 = 0xc2b2ae3d27d4eb4fn; -var PRIME3 = 0x165667b19e3779f9n; -var PRIME4 = 0x85ebca77c2b2ae63n; -var PRIME5 = 0x27d4eb2f165667c5n; -function rotl64(x, r) { - return (x << r | x >> 64n - r) & MASK; -} -__name(rotl64, "rotl64"); -function round(acc, val) { - acc = acc + val * PRIME2 & MASK; - acc = rotl64(acc, 31n); - return acc * PRIME1 & MASK; -} -__name(round, "round"); -function mergeRound(acc, val) { - acc ^= round(0n, val); - return acc * PRIME1 + PRIME4 & MASK; -} -__name(mergeRound, "mergeRound"); -function xxhash64(input, seed = 0n) { - const view = new DataView(input.buffer, input.byteOffset, input.byteLength); - const len = input.byteLength; - let offset = 0; - let h64; - if (len >= 32) { - let v1 = seed + PRIME1 + PRIME2 & MASK; - let v2 = seed + PRIME2 & MASK; - let v3 = seed; - let v4 = seed - PRIME1 & MASK; - while (offset + 32 <= len) { - v1 = round(v1, view.getBigUint64(offset, true)); - offset += 8; - v2 = round(v2, view.getBigUint64(offset, true)); - offset += 8; - v3 = round(v3, view.getBigUint64(offset, true)); - offset += 8; - v4 = round(v4, view.getBigUint64(offset, true)); - offset += 8; - } - h64 = rotl64(v1, 1n) + rotl64(v2, 7n) + rotl64(v3, 12n) + rotl64(v4, 18n) & MASK; - h64 = mergeRound(h64, v1); - h64 = mergeRound(h64, v2); - h64 = mergeRound(h64, v3); - h64 = mergeRound(h64, v4); - } else { - h64 = seed + PRIME5 & MASK; - } - h64 = h64 + BigInt(len) & MASK; - while (offset + 8 <= len) { - h64 ^= round(0n, view.getBigUint64(offset, true)); - h64 = rotl64(h64, 27n) * PRIME1 + PRIME4 & MASK; - offset += 8; - } - if (offset + 4 <= len) { - h64 ^= BigInt(view.getUint32(offset, true)) * PRIME1 & MASK; - h64 = rotl64(h64, 23n) * PRIME2 + PRIME3 & MASK; - offset += 4; - } - while (offset < len) { - h64 ^= BigInt(view.getUint8(offset)) * PRIME5 & MASK; - h64 = rotl64(h64, 11n) * PRIME1 & MASK; - offset += 1; - } - h64 ^= h64 >> 33n; - h64 = h64 * PRIME2 & MASK; - h64 ^= h64 >> 29n; - h64 = h64 * PRIME3 & MASK; - h64 ^= h64 >> 32n; - return h64; -} -__name(xxhash64, "xxhash64"); - -// node_modules/hyparquet/src/bloom.js -var textEncoder = new TextEncoder(); -var SALT = new Uint32Array([ - 1203114875, - 1150766481, - 2284105051, - 2729912477, - 1884591559, - 770785867, - 2667333959, - 1550580529 -]); -function blockIndex(hash, numBlocks) { - return Number((hash >> 32n) * BigInt(numBlocks) >> 32n); -} -__name(blockIndex, "blockIndex"); -function blockMask(hash) { - const m = new Uint32Array(8); - const low = Number(hash & 0xffffffffn) | 0; - for (let i = 0; i < 8; i++) { - m[i] = 1 << (Math.imul(low, SALT[i]) >>> 27); - } - return m; -} -__name(blockMask, "blockMask"); -function sbbfContains(blocks, hash) { - const offset = blockIndex(hash, blocks.length >> 3) << 3; - const m = blockMask(hash); - for (let i = 0; i < 8; i++) { - if ((blocks[offset + i] & m[i]) === 0) return false; - } - return true; -} -__name(sbbfContains, "sbbfContains"); -function readBloomFilter(reader) { - const header = deserializeTCompactProtocol(reader); - const numBytes = header.field_1; - if (typeof numBytes !== "number" || numBytes <= 0 || numBytes % 32 !== 0) return void 0; - if (!header.field_2?.field_1) return void 0; - if (!header.field_3?.field_1) return void 0; - if (!header.field_4?.field_1) return void 0; - const { view, offset } = reader; - if (offset + numBytes > view.byteLength) { - throw new Error(`parquet bloom filter truncated: need ${numBytes} bytes, have ${view.byteLength - offset}`); - } - const blocks = new Uint32Array(numBytes >> 2); - for (let i = 0; i < blocks.length; i++) { - blocks[i] = view.getUint32(offset + i * 4, true); - } - reader.offset = offset + numBytes; - return { numBytes, blocks }; -} -__name(readBloomFilter, "readBloomFilter"); -function hashParquetValue(value, element) { - if (value === null || value === void 0) return void 0; - const { type, converted_type, logical_type } = element; - if (type === "BOOLEAN") { - if (typeof value !== "boolean") return void 0; - return xxhash64(new Uint8Array([value ? 1 : 0])); - } - if (type === "FLOAT") { - if (typeof value !== "number") return void 0; - const buf = new ArrayBuffer(4); - new DataView(buf).setFloat32(0, value, true); - return xxhash64(new Uint8Array(buf)); - } - if (type === "DOUBLE") { - if (typeof value !== "number") return void 0; - const buf = new ArrayBuffer(8); - new DataView(buf).setFloat64(0, value, true); - return xxhash64(new Uint8Array(buf)); - } - if (type === "INT32") { - if (converted_type === "DATE" || converted_type === "DECIMAL" || converted_type === "TIME_MILLIS") return void 0; - if (logical_type?.type === "DATE" || logical_type?.type === "TIME" || logical_type?.type === "DECIMAL") return void 0; - if (typeof value !== "number" || !Number.isInteger(value)) return void 0; - const buf = new ArrayBuffer(4); - new DataView(buf).setInt32(0, value | 0, true); - return xxhash64(new Uint8Array(buf)); - } - if (type === "INT64") { - if (converted_type === "TIMESTAMP_MILLIS" || converted_type === "TIMESTAMP_MICROS") return void 0; - if (converted_type === "TIME_MICROS" || converted_type === "DECIMAL") return void 0; - if (logical_type?.type === "TIMESTAMP" || logical_type?.type === "TIME" || logical_type?.type === "DECIMAL") return void 0; - let bigValue; - if (typeof value === "bigint") bigValue = value; - else if (typeof value === "number" && Number.isSafeInteger(value)) bigValue = BigInt(value); - else return void 0; - const buf = new ArrayBuffer(8); - new DataView(buf).setBigUint64(0, BigInt.asUintN(64, bigValue), true); - return xxhash64(new Uint8Array(buf)); - } - if (type === "BYTE_ARRAY") { - if (converted_type === "JSON" || converted_type === "BSON" || converted_type === "DECIMAL") return void 0; - if (logical_type?.type === "JSON" || logical_type?.type === "BSON" || logical_type?.type === "VARIANT") return void 0; - if (logical_type?.type === "GEOMETRY" || logical_type?.type === "GEOGRAPHY") return void 0; - if (typeof value === "string") return xxhash64(textEncoder.encode(value)); - if (value instanceof Uint8Array) return xxhash64(value); - return void 0; - } - if (type === "FIXED_LEN_BYTE_ARRAY") { - if (converted_type === "DECIMAL" || converted_type === "INTERVAL") return void 0; - if (logical_type?.type === "DECIMAL" || logical_type?.type === "UUID" || logical_type?.type === "FLOAT16") return void 0; - if (logical_type?.type === "GEOMETRY" || logical_type?.type === "GEOGRAPHY") return void 0; - if (value instanceof Uint8Array) return xxhash64(value); - return void 0; - } - return void 0; -} -__name(hashParquetValue, "hashParquetValue"); -function bloomEligibleColumns(filter) { - const out = /* @__PURE__ */ new Set(); - walkBloomEligible(filter, out); - return out; -} -__name(bloomEligibleColumns, "bloomEligibleColumns"); -function walkBloomEligible(filter, out) { - if (!filter) return; - if ("$and" in filter && Array.isArray(filter.$and)) { - for (const sub of filter.$and) walkBloomEligible(sub, out); - return; - } - if ("$or" in filter && Array.isArray(filter.$or)) { - for (const sub of filter.$or) walkBloomEligible(sub, out); - return; - } - if ("$nor" in filter) return; - for (const [field, condition] of Object.entries(filter)) { - if (field.startsWith("$")) continue; - if (typeof condition === "object" && condition !== null && !Array.isArray(condition)) { - if ("$eq" in condition || "$in" in condition) out.add(field); - } else { - out.add(field); - } - } -} -__name(walkBloomEligible, "walkBloomEligible"); - -// node_modules/hyparquet/src/utils.js -function concat(aaa, bbb) { - const chunk = 1e4; - for (let i = 0; i < bbb.length; i += chunk) { - aaa.push(...bbb.slice(i, i + chunk)); - } -} -__name(concat, "concat"); -function equals(a, b, strict = true) { - if (strict ? a === b : a == b) return true; - if (!a || !b || typeof a !== "object" || typeof b !== "object") return false; - if (a instanceof Uint8Array && b instanceof Uint8Array) { - if (a.length !== b.length) return false; - for (let i = 0; i < a.length; i++) { - if (a[i] !== b[i]) return false; - } - return true; - } - if (Array.isArray(a) && Array.isArray(b)) { - if (a.length !== b.length) return false; - for (let i = 0; i < a.length; i++) { - if (!equals(a[i], b[i], strict)) return false; - } - return true; - } - const aKeys = Object.keys(a); - if (aKeys.length !== Object.keys(b).length) return false; - for (const k of aKeys) { - if (!equals(a[k], b[k], strict)) return false; - } - return true; -} -__name(equals, "equals"); -function cachedAsyncBuffer({ byteLength, slice }, { minSize = defaultInitialFetchSize } = {}) { - if (byteLength < minSize) { - const buffer = slice(0, byteLength); - return { - byteLength, - async slice(start, end) { - return (await buffer).slice(start, end); - } - }; - } - const cache = /* @__PURE__ */ new Map(); - return { - byteLength, - /** - * @param {number} start - * @param {number} [end] - * @returns {Awaitable} - */ - slice(start, end) { - const key = cacheKey(start, end, byteLength); - const cached = cache.get(key); - if (cached) return cached; - const promise = slice(start, end); - cache.set(key, promise); - return promise; - } - }; -} -__name(cachedAsyncBuffer, "cachedAsyncBuffer"); -function cacheKey(start, end, size) { - if (start < 0) { - if (end !== void 0) throw new Error(`invalid suffix range [${start}, ${end}]`); - if (size === void 0) return `${start},`; - return `${size + start},${size}`; - } else if (end !== void 0) { - if (start > end) throw new Error(`invalid empty range [${start}, ${end}]`); - return `${start},${end}`; - } else if (size === void 0) { - return `${start},`; - } else { - return `${start},${size}`; - } -} -__name(cacheKey, "cacheKey"); -function flatten(chunks) { - if (!chunks) return []; - if (chunks.length === 1) return chunks[0]; - const output = []; - for (const chunk of chunks) { - concat(output, chunk); - } - return output; -} -__name(flatten, "flatten"); - -// node_modules/hyparquet/src/filter.js -function columnsNeededForFilter(filter) { - if (!filter) return []; - const columns = []; - if ("$and" in filter && Array.isArray(filter.$and)) { - columns.push(...filter.$and.flatMap(columnsNeededForFilter)); - } else if ("$or" in filter && Array.isArray(filter.$or)) { - columns.push(...filter.$or.flatMap(columnsNeededForFilter)); - } else if ("$nor" in filter && Array.isArray(filter.$nor)) { - columns.push(...filter.$nor.flatMap(columnsNeededForFilter)); - } else { - columns.push(...Object.keys(filter).map((key) => key.split(".")[0])); - } - return [...new Set(columns)]; -} -__name(columnsNeededForFilter, "columnsNeededForFilter"); -function matchFilter(record, filter, strict = true) { - if ("$and" in filter && Array.isArray(filter.$and)) { - return filter.$and.every((subQuery) => matchFilter(record, subQuery, strict)); - } - if ("$or" in filter && Array.isArray(filter.$or)) { - return filter.$or.some((subQuery) => matchFilter(record, subQuery, strict)); - } - if ("$nor" in filter && Array.isArray(filter.$nor)) { - return !filter.$nor.some((subQuery) => matchFilter(record, subQuery, strict)); - } - return Object.entries(filter).every(([field, condition]) => { - const value = resolve(record, field); - if (typeof condition !== "object" || condition === null || Array.isArray(condition)) { - return equals(value, condition, strict); - } - return Object.entries(condition || {}).every(([operator, target]) => { - if (operator === "$gt") return value > target; - if (operator === "$gte") return value >= target; - if (operator === "$lt") return value < target; - if (operator === "$lte") return value <= target; - if (operator === "$eq") return equals(value, target, strict); - if (operator === "$ne") return !equals(value, target, strict); - if (operator === "$in") return Array.isArray(target) && target.includes(value); - if (operator === "$nin") return Array.isArray(target) && !target.includes(value); - if (operator === "$not") return !matchFilter({ [field]: value }, { [field]: target }, strict); - return true; - }); - }); -} -__name(matchFilter, "matchFilter"); -function canSkipRowGroup({ rowGroup, physicalColumns, filter, strict = true, bloomFilters, schemaElements }) { - if (!filter) return false; - if ("$and" in filter && Array.isArray(filter.$and)) { - return filter.$and.some((subFilter) => canSkipRowGroup({ rowGroup, physicalColumns, filter: subFilter, strict, bloomFilters, schemaElements })); - } - if ("$or" in filter && Array.isArray(filter.$or)) { - return filter.$or.every((subFilter) => canSkipRowGroup({ rowGroup, physicalColumns, filter: subFilter, strict, bloomFilters, schemaElements })); - } - if ("$nor" in filter && Array.isArray(filter.$nor)) { - return false; - } - for (const [field, condition] of Object.entries(filter)) { - const columnIndex = physicalColumns.indexOf(field); - if (columnIndex === -1) continue; - const stats = rowGroup.columns[columnIndex].meta_data?.statistics; - const { min, max, min_value, max_value } = stats || {}; - const minVal = min_value !== void 0 ? min_value : min; - const maxVal = max_value !== void 0 ? max_value : max; - const haveStats = minVal !== void 0 && maxVal !== void 0; - const bloom = bloomFilters?.[field]; - const element = schemaElements?.[field]; - for (const [operator, target] of Object.entries(condition || {})) { - if (haveStats) { - if (operator === "$gt" && maxVal <= target) return true; - if (operator === "$gte" && maxVal < target) return true; - if (operator === "$lt" && minVal >= target) return true; - if (operator === "$lte" && minVal > target) return true; - if (operator === "$eq" && (target < minVal || target > maxVal)) return true; - if (operator === "$ne" && equals(minVal, maxVal, strict) && equals(minVal, target, strict)) return true; - if (operator === "$in" && Array.isArray(target) && target.every((v) => v < minVal || v > maxVal)) return true; - if (operator === "$nin" && Array.isArray(target) && equals(minVal, maxVal, strict) && target.includes(minVal)) return true; - } - if (bloom && element) { - if (operator === "$eq") { - const hash = hashParquetValue(target, element); - if (hash !== void 0 && !sbbfContains(bloom.blocks, hash)) return true; - } - if (operator === "$in" && Array.isArray(target) && target.length > 0) { - let allAbsent = true; - for (const v of target) { - const h = hashParquetValue(v, element); - if (h === void 0 || sbbfContains(bloom.blocks, h)) { - allAbsent = false; - break; - } - } - if (allAbsent) return true; - } - } - } - } - return false; -} -__name(canSkipRowGroup, "canSkipRowGroup"); -function resolve(record, path) { - let value = record; - for (const part of path.split(".")) { - value = value?.[part]; - } - return value; -} -__name(resolve, "resolve"); - -// node_modules/hyparquet/src/plan.js -var runLimit = 1 << 21; -function parquetPlan({ metadata, rowStart = 0, rowEnd = Infinity, columns, filter, filterStrict = true, useOffsetIndex = false, bloomFiltersByGroup, schemaElements }) { - if (!metadata) throw new Error("parquetPlan requires metadata"); - const groups = []; - const fetches = []; - const indexes = []; - const physicalColumns = getPhysicalColumns(parquetSchema(metadata)); - let groupStart = 0; - let rgIdx = 0; - for (const rowGroup of metadata.row_groups) { - const groupRows = Number(rowGroup.num_rows); - const groupEnd = groupStart + groupRows; - const bloomFilters = bloomFiltersByGroup?.[rgIdx]; - if (groupRows > 0 && groupEnd > rowStart && groupStart < rowEnd && !canSkipRowGroup({ rowGroup, physicalColumns, filter, strict: filterStrict, bloomFilters, schemaElements })) { - const chunks = []; - let groupStartByte = Infinity; - let groupEndByte = -Infinity; - for (const chunk of rowGroup.columns) { - const meta = chunk.meta_data; - if (chunk.file_path) throw new Error("parquet file_path not supported"); - if (!meta) throw new Error("parquet column metadata is undefined"); - if (!columns || columns.includes(meta.path_in_schema[0])) { - const columnOffset = meta.dictionary_page_offset || meta.data_page_offset; - const startByte = Number(columnOffset); - const endByte = Number(columnOffset + meta.total_compressed_size); - if (startByte < groupStartByte) groupStartByte = startByte; - if (endByte > groupEndByte) groupEndByte = endByte; - if (useOffsetIndex && chunk.offset_index_offset && chunk.offset_index_length && (rowStart > groupStart || rowEnd < groupEnd)) { - const offsetIndexStart = Number(chunk.offset_index_offset); - chunks.push({ - columnMetadata: meta, - offsetIndex: { - startByte: offsetIndexStart, - endByte: offsetIndexStart + chunk.offset_index_length - }, - range: { startByte, endByte } - }); - } else { - chunks.push({ - columnMetadata: meta, - range: { startByte, endByte } - }); - } - } - } - const selectStart = Math.max(rowStart - groupStart, 0); - const selectEnd = Math.min(rowEnd - groupStart, groupRows); - groups.push({ chunks, rowGroup, groupStart, groupRows, selectStart, selectEnd }); - let run; - for (const chunk of chunks) { - if ("offsetIndex" in chunk) { - indexes.push(chunk.offsetIndex); - } else { - const { range } = chunk; - if (columns) { - fetches.push(range); - } else if (run && range.endByte - run.startByte <= runLimit) { - run.endByte = range.endByte; - } else { - if (run) fetches.push(run); - run = { ...range }; - } - } - } - if (run) fetches.push(run); - } - groupStart = groupEnd; - rgIdx++; - } - if (!isFinite(rowEnd)) rowEnd = groupStart; - fetches.push(...indexes); - return { metadata, rowStart, rowEnd, columns, fetches, groups }; -} -__name(parquetPlan, "parquetPlan"); -async function prefetchBloomFilters({ file, metadata, filter, filterStrict = true }) { - const result = metadata.row_groups.map(() => ( - /** @type {Record} */ - {} - )); - const eligibleCols = bloomEligibleColumns(filter); - if (eligibleCols.size === 0) return result; - const physicalColumns = getPhysicalColumns(parquetSchema(metadata)); - const tasks = []; - metadata.row_groups.forEach((rowGroup, rgIdx) => { - if (canSkipRowGroup({ rowGroup, physicalColumns, filter, strict: filterStrict })) return; - for (const colName of eligibleCols) { - const columnIdx = physicalColumns.indexOf(colName); - if (columnIdx === -1) continue; - const meta = rowGroup.columns[columnIdx]?.meta_data; - if (!meta?.bloom_filter_offset || !meta.bloom_filter_length) continue; - const start = Number(meta.bloom_filter_offset); - const end = start + meta.bloom_filter_length; - tasks.push((async () => { - const buffer = await file.slice(start, end); - const bloom = readBloomFilter({ view: new DataView(buffer), offset: 0 }); - if (bloom) result[rgIdx][colName] = bloom; - })()); - } - }); - if (tasks.length) await Promise.all(tasks); - return result; -} -__name(prefetchBloomFilters, "prefetchBloomFilters"); -function prefetchAsyncBuffer(file, { fetches }) { - const promises = fetches.map(({ startByte, endByte }) => file.slice(startByte, endByte)); - return { - byteLength: file.byteLength, - slice(start, end = file.byteLength) { - const index = fetches.findIndex(({ startByte, endByte }) => startByte <= start && end <= endByte); - if (index < 0) { - return file.slice(start, end); - } - if (fetches[index].startByte !== start || fetches[index].endByte !== end) { - const startOffset = start - fetches[index].startByte; - const endOffset = end - fetches[index].startByte; - if (promises[index] instanceof Promise) { - return promises[index].then((buffer) => buffer.slice(startOffset, endOffset)); - } else { - return promises[index].slice(startOffset, endOffset); - } - } else { - return promises[index]; - } - } - }; -} -__name(prefetchAsyncBuffer, "prefetchAsyncBuffer"); - -// node_modules/hyparquet/src/variant.js -var decoder3 = new TextDecoder(); -var metadataCache = /* @__PURE__ */ new WeakMap(); -function decodeVariantColumn(value, parsers = DEFAULT_PARSERS) { - if (Array.isArray(value)) { - return value.map((entry) => decodeVariantColumn(entry, parsers)); - } - if (typeof value !== "object") return value; - if ("metadata" in value) { - const metadata = parseVariantMetadata(value.metadata); - const shreddedFields = value.typed_value && decodeTypedValue(value.typed_value, metadata, parsers); - const binaryValue = value.value && readVariant(makeReader(value.value), metadata, parsers); - if (shreddedFields && binaryValue) { - return { ...binaryValue, ...shreddedFields }; - } - return shreddedFields ?? binaryValue; - } - return value; -} -__name(decodeVariantColumn, "decodeVariantColumn"); -function decodeTypedValue(typedValue, metadata, parsers) { - if (typedValue instanceof Date) return typedValue; - if (typedValue && typeof typedValue === "object" && !Array.isArray(typedValue) && !(typedValue instanceof Uint8Array)) { - if ("typed_value" in typedValue && typedValue.typed_value !== null && typedValue.typed_value !== void 0) { - return decodeTypedValue(typedValue.typed_value, metadata, parsers); - } - if ("value" in typedValue && typedValue.value instanceof Uint8Array) { - return readVariant(makeReader(typedValue.value), metadata, parsers); - } - if ("typed_value" in typedValue || "value" in typedValue) { - return null; - } - const result = {}; - for (const [key, field] of Object.entries(typedValue)) { - if (!metadata.dictionary.includes(key)) continue; - result[key] = decodeTypedValue(field, metadata, parsers); - } - return result; - } - if (typedValue instanceof Uint8Array) { - return readVariant(makeReader(typedValue), metadata, parsers); - } - if (Array.isArray(typedValue)) { - return typedValue.map((element) => decodeTypedValue(element, metadata, parsers)); - } - return typedValue; -} -__name(decodeTypedValue, "decodeTypedValue"); -function makeReader(bytes) { - return { view: new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength), offset: 0 }; -} -__name(makeReader, "makeReader"); -function parseVariantMetadata(bytes) { - let bufferCache = metadataCache.get(bytes.buffer); - if (!bufferCache) { - bufferCache = /* @__PURE__ */ new Map(); - metadataCache.set(bytes.buffer, bufferCache); - } - const key = `${bytes.byteOffset}:${bytes.byteLength}`; - const cached = bufferCache.get(key); - if (cached) return cached; - const reader = makeReader(bytes); - const header = reader.view.getUint8(reader.offset++); - const version = header & 15; - if (version !== 1) throw new Error(`parquet unsupported variant metadata version: ${version}`); - const sorted = (header >> 4 & 1) === 1; - const offsetSize = (header >> 6 & 3) + 1; - const dictionarySize = readUnsigned(reader, offsetSize); - const offsets = new Array(dictionarySize + 1); - for (let i = 0; i < offsets.length; i++) { - offsets[i] = readUnsigned(reader, offsetSize); - } - const base = reader.offset; - const dictionary = new Array(dictionarySize); - for (let i = 0; i < dictionarySize; i++) { - const start = offsets[i]; - const end = offsets[i + 1]; - const strBytes = new Uint8Array(bytes.buffer, bytes.byteOffset + base + start, end - start); - dictionary[i] = decoder3.decode(strBytes); - } - const metadata = { dictionary, sorted }; - bufferCache.set(key, metadata); - return metadata; -} -__name(parseVariantMetadata, "parseVariantMetadata"); -function readUnsigned(reader, byteWidth2) { - let value = 0; - for (let i = 0; i < byteWidth2; i++) { - value |= reader.view.getUint8(reader.offset + i) << i * 8; - } - reader.offset += byteWidth2; - return value; -} -__name(readUnsigned, "readUnsigned"); -function readVariant(reader, metadata, parsers) { - const typeByte = reader.view.getUint8(reader.offset++); - const basicType = typeByte & 3; - const header = typeByte >> 2; - if (basicType === 0) return readVariantPrimitive(reader, header, parsers); - if (basicType === 2) return readVariantObject(reader, header, metadata, parsers); - if (basicType === 3) return readVariantArray(reader, header, metadata, parsers); - const bytes = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, header); - reader.offset += header; - return decoder3.decode(bytes); -} -__name(readVariant, "readVariant"); -function readVariantPrimitive(reader, typeId, parsers) { - switch (typeId) { - case 0: - return null; - case 1: - return true; - case 2: - return false; - case 3: { - const value = reader.view.getInt8(reader.offset); - reader.offset += 1; - return value; - } - case 4: { - const value = reader.view.getInt16(reader.offset, true); - reader.offset += 2; - return value; - } - case 5: { - const value = reader.view.getInt32(reader.offset, true); - reader.offset += 4; - return value; - } - case 6: { - const value = reader.view.getBigInt64(reader.offset, true); - reader.offset += 8; - return value; - } - case 7: { - const value = reader.view.getFloat64(reader.offset, true); - reader.offset += 8; - return value; - } - case 8: - return readVariantDecimal(reader, 4); - case 9: - return readVariantDecimal(reader, 8); - case 10: - return readVariantDecimal(reader, 16); - case 11: { - const value = reader.view.getInt32(reader.offset, true); - reader.offset += 4; - return parsers.dateFromDays(value); - } - case 12: - // timestamp_micros (utc) - case 13: { - const value = reader.view.getBigInt64(reader.offset, true); - reader.offset += 8; - return parsers.timestampFromMicroseconds(value); - } - case 14: { - const value = reader.view.getFloat32(reader.offset, true); - reader.offset += 4; - return value; - } - case 15: - return readVariantBinary(reader); - case 16: { - const bytes = readVariantBinary(reader); - return decoder3.decode(bytes); - } - case 17: { - const value = reader.view.getBigInt64(reader.offset, true); - reader.offset += 8; - return value; - } - case 18: - // timestamp_nanos (utc) - case 19: { - const value = reader.view.getBigInt64(reader.offset, true); - reader.offset += 8; - return parsers.timestampFromNanoseconds(value); - } - case 20: { - const bytes = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, 16); - reader.offset += 16; - const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join(""); - return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`; - } - default: - throw new Error(`parquet unsupported variant primitive type: ${typeId}`); - } -} -__name(readVariantPrimitive, "readVariantPrimitive"); -function readVariantObject(reader, header, metadata, parsers) { - const offsetWidth = (header & 3) + 1; - const idWidth = (header >> 2 & 3) + 1; - const isLarge = header >> 4 & 1; - const numElements = isLarge ? readUnsigned(reader, 4) : reader.view.getUint8(reader.offset++); - const fieldIds = new Array(numElements); - for (let i = 0; i < numElements; i++) { - fieldIds[i] = readUnsigned(reader, idWidth); - } - const offsets = new Array(numElements + 1); - for (let i = 0; i < offsets.length; i++) { - offsets[i] = readUnsigned(reader, offsetWidth); - } - const out = {}; - for (let i = 0; i < numElements; i++) { - const key = metadata.dictionary[fieldIds[i]]; - const valueReader = { - view: reader.view, - offset: reader.offset + offsets[i] - }; - out[key] = readVariant(valueReader, metadata, parsers); - } - reader.offset += offsets[offsets.length - 1]; - return out; -} -__name(readVariantObject, "readVariantObject"); -function readVariantArray(reader, header, metadata, parsers) { - const fieldOffsetSize = header & 3; - const isLarge = header >> 2 & 1; - const offsetWidth = fieldOffsetSize + 1; - const numElements = readUnsigned(reader, isLarge ? 4 : 1); - const offsets = new Array(numElements + 1); - for (let i = 0; i < offsets.length; i++) { - offsets[i] = readUnsigned(reader, offsetWidth); - } - const valuesStart = reader.offset; - const result = new Array(numElements); - for (let i = 0; i < numElements; i++) { - const valueReader = { - view: reader.view, - offset: valuesStart + offsets[i] - }; - result[i] = readVariant(valueReader, metadata, parsers); - } - reader.offset = valuesStart + offsets[offsets.length - 1]; - return result; -} -__name(readVariantArray, "readVariantArray"); -function readVariantDecimal(reader, width) { - const scale = reader.view.getUint8(reader.offset); - reader.offset += 1; - let unscaled; - if (width === 4) { - unscaled = BigInt(reader.view.getInt32(reader.offset, true)); - reader.offset += 4; - } else if (width === 8) { - unscaled = reader.view.getBigInt64(reader.offset, true); - reader.offset += 8; - } else { - const low = reader.view.getBigUint64(reader.offset, true); - const high = reader.view.getBigInt64(reader.offset + 8, true); - unscaled = high << 64n | low; - reader.offset += 16; - } - return Number(unscaled) * 10 ** -scale; -} -__name(readVariantDecimal, "readVariantDecimal"); -function readVariantBinary(reader) { - const length = reader.view.getUint32(reader.offset, true); - reader.offset += 4; - const bytes = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, length); - reader.offset += length; - return bytes; -} -__name(readVariantBinary, "readVariantBinary"); - -// node_modules/hyparquet/src/assemble.js -function assembleLists(output, definitionLevels, repetitionLevels, values, schemaPath) { - const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath); - if (!definitionLevels?.length && !repetitionLevels.length) { - if (!maxDefinitionLevel || !values.length) return values; - definitionLevels = new Array(values.length).fill(maxDefinitionLevel); - } - const n = definitionLevels?.length || repetitionLevels.length; - const repetitionPath = schemaPath.map(({ element }) => element.repetition_type); - let valueIndex = 0; - const containerStack = [output]; - let currentContainer = output; - let currentDepth = 0; - let currentDefLevel = 0; - let currentRepLevel = 0; - if (repetitionLevels[0]) { - while (currentDepth < repetitionPath.length - 2 && currentRepLevel < repetitionLevels[0]) { - currentDepth++; - if (repetitionPath[currentDepth] !== "REQUIRED") { - currentContainer = currentContainer.at(-1); - containerStack.push(currentContainer); - currentDefLevel++; - } - if (repetitionPath[currentDepth] === "REPEATED") currentRepLevel++; - } - } - for (let i = 0; i < n; i++) { - const def = definitionLevels?.length ? definitionLevels[i] : maxDefinitionLevel; - const rep = repetitionLevels[i]; - while (currentDepth && (rep < currentRepLevel || repetitionPath[currentDepth] !== "REPEATED")) { - if (repetitionPath[currentDepth] !== "REQUIRED") { - containerStack.pop(); - currentDefLevel--; - } - if (repetitionPath[currentDepth] === "REPEATED") currentRepLevel--; - currentDepth--; - } - currentContainer = containerStack.at(-1); - while ((currentDepth < repetitionPath.length - 2 || repetitionPath[currentDepth + 1] === "REPEATED") && (currentDefLevel < def || repetitionPath[currentDepth + 1] === "REQUIRED")) { - currentDepth++; - if (repetitionPath[currentDepth] !== "REQUIRED") { - const newList = []; - currentContainer.push(newList); - currentContainer = newList; - containerStack.push(newList); - currentDefLevel++; - } - if (repetitionPath[currentDepth] === "REPEATED") currentRepLevel++; - } - if (def === maxDefinitionLevel) { - currentContainer.push(values[valueIndex++]); - } else if (currentDepth === repetitionPath.length - 2) { - currentContainer.push(null); - } else { - currentContainer.push([]); - } - } - if (!output.length) { - for (let i = 0; i < maxDefinitionLevel; i++) { - const newList = []; - currentContainer.push(newList); - currentContainer = newList; - } - } - return output; -} -__name(assembleLists, "assembleLists"); -function assembleNested(subcolumnData, schema, parsers, depth = 0) { - const path = schema.path.join("."); - const optional = schema.element.repetition_type === "OPTIONAL"; - const nextDepth = optional ? depth + 1 : depth; - if (isListLike(schema)) { - let sublist = schema.children[0]; - let subDepth = nextDepth; - if (sublist.children.length === 1) { - sublist = sublist.children[0]; - subDepth++; - } - assembleNested(subcolumnData, sublist, parsers, subDepth); - const subcolumn = sublist.path.join("."); - const values = subcolumnData.get(subcolumn); - if (!values) throw new Error("parquet list column missing values"); - if (optional) flattenAtDepth(values, depth); - subcolumnData.set(path, values); - subcolumnData.delete(subcolumn); - return; - } - if (isMapLike(schema)) { - const mapName = schema.children[0].element.name; - assembleNested(subcolumnData, schema.children[0].children[0], parsers, nextDepth + 1); - assembleNested(subcolumnData, schema.children[0].children[1], parsers, nextDepth + 1); - const keys = subcolumnData.get(`${path}.${mapName}.key`); - const values = subcolumnData.get(`${path}.${mapName}.value`); - if (!keys) throw new Error("parquet map column missing keys"); - if (!values) throw new Error("parquet map column missing values"); - if (keys.length !== values.length) { - throw new Error("parquet map column key/value length mismatch"); - } - const out = assembleMaps(keys, values, nextDepth); - if (optional) flattenAtDepth(out, depth); - subcolumnData.delete(`${path}.${mapName}.key`); - subcolumnData.delete(`${path}.${mapName}.value`); - subcolumnData.set(path, out); - return; - } - if (schema.children.length) { - const invertDepth = schema.element.repetition_type === "REQUIRED" ? depth : depth + 1; - const struct = {}; - for (const child of schema.children) { - assembleNested(subcolumnData, child, parsers, invertDepth); - const childData = subcolumnData.get(child.path.join(".")); - if (!childData) throw new Error("parquet struct missing child data"); - struct[child.element.name] = childData; - } - for (const child of schema.children) { - subcolumnData.delete(child.path.join(".")); - } - let inverted = invertStruct(struct, invertDepth); - if (schema.element.logical_type?.type === "VARIANT") { - inverted = decodeVariantColumn(inverted, parsers); - } - if (optional) flattenAtDepth(inverted, depth); - subcolumnData.set(path, inverted); - } -} -__name(assembleNested, "assembleNested"); -function flattenAtDepth(arr, depth) { - for (let i = 0; i < arr.length; i++) { - if (depth) { - flattenAtDepth(arr[i], depth - 1); - } else { - arr[i] = arr[i][0]; - } - } -} -__name(flattenAtDepth, "flattenAtDepth"); -function assembleMaps(keys, values, depth) { - const out = []; - for (let i = 0; i < keys.length; i++) { - if (depth) { - out.push(assembleMaps(keys[i], values[i], depth - 1)); - } else { - if (keys[i]) { - const obj = {}; - for (let j = 0; j < keys[i].length; j++) { - const value = values[i][j]; - obj[keys[i][j]] = value === void 0 ? null : value; - } - out.push(obj); - } else { - out.push(void 0); - } - } - } - return out; -} -__name(assembleMaps, "assembleMaps"); -function invertStruct(struct, depth) { - const keys = Object.keys(struct); - const length = struct[keys[0]]?.length; - const out = []; - for (let i = 0; i < length; i++) { - const obj = {}; - for (const key of keys) { - if (struct[key].length !== length) throw new Error("parquet struct parsing error"); - obj[key] = struct[key][i]; - } - if (depth) { - out.push(invertStruct(obj, depth - 1)); - } else { - out.push(obj); - } - } - return out; -} -__name(invertStruct, "invertStruct"); - -// node_modules/hyparquet/src/delta.js -function deltaBinaryUnpack(reader, count, output) { - const int32 = output instanceof Int32Array; - const blockSize = readVarInt(reader); - const miniblockPerBlock = readVarInt(reader); - readVarInt(reader); - let value = readZigZagBigInt(reader); - let outputIndex = 0; - output[outputIndex++] = int32 ? Number(value) : value; - const valuesPerMiniblock = blockSize / miniblockPerBlock; - while (outputIndex < count) { - const minDelta = readZigZagBigInt(reader); - const bitWidths = new Uint8Array(miniblockPerBlock); - for (let i = 0; i < miniblockPerBlock; i++) { - bitWidths[i] = reader.view.getUint8(reader.offset++); - } - for (let i = 0; i < miniblockPerBlock && outputIndex < count; i++) { - const bitWidth2 = BigInt(bitWidths[i]); - if (bitWidth2) { - let bitpackPos = 0n; - let miniblockCount = valuesPerMiniblock; - const mask = (1n << bitWidth2) - 1n; - while (miniblockCount && outputIndex < count) { - let bits = BigInt(reader.view.getUint8(reader.offset)) >> bitpackPos & mask; - bitpackPos += bitWidth2; - while (bitpackPos >= 8) { - bitpackPos -= 8n; - reader.offset++; - if (bitpackPos) { - bits |= BigInt(reader.view.getUint8(reader.offset)) << bitWidth2 - bitpackPos & mask; - } - } - const delta = minDelta + bits; - value += delta; - output[outputIndex++] = int32 ? Number(value) : value; - miniblockCount--; - } - if (miniblockCount) { - reader.offset += Math.ceil((miniblockCount * Number(bitWidth2) + Number(bitpackPos)) / 8); - } - } else { - for (let j = 0; j < valuesPerMiniblock && outputIndex < count; j++) { - value += minDelta; - output[outputIndex++] = int32 ? Number(value) : value; - } - } - } - } -} -__name(deltaBinaryUnpack, "deltaBinaryUnpack"); -function deltaLengthByteArray(reader, count, output) { - const lengths = new Int32Array(count); - deltaBinaryUnpack(reader, count, lengths); - for (let i = 0; i < count; i++) { - output[i] = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, lengths[i]); - reader.offset += lengths[i]; - } -} -__name(deltaLengthByteArray, "deltaLengthByteArray"); -function deltaByteArray(reader, count, output) { - const prefixData = new Int32Array(count); - deltaBinaryUnpack(reader, count, prefixData); - const suffixData = new Int32Array(count); - deltaBinaryUnpack(reader, count, suffixData); - for (let i = 0; i < count; i++) { - const suffix = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, suffixData[i]); - if (prefixData[i]) { - output[i] = new Uint8Array(prefixData[i] + suffixData[i]); - output[i].set(output[i - 1].subarray(0, prefixData[i])); - output[i].set(suffix, prefixData[i]); - } else { - output[i] = suffix; - } - reader.offset += suffixData[i]; - } -} -__name(deltaByteArray, "deltaByteArray"); - -// node_modules/hyparquet/src/encoding.js -function readRleBitPackedHybrid(reader, width, output, length) { - if (length === void 0) { - length = reader.view.getUint32(reader.offset, true); - reader.offset += 4; - } - const startOffset = reader.offset; - let seen = 0; - while (seen < output.length) { - const header = readVarInt(reader); - if (header & 1) { - seen = readBitPacked(reader, header, width, output, seen); - } else { - const count = header >>> 1; - readRle(reader, count, width, output, seen); - seen += count; - } - } - reader.offset = startOffset + length; -} -__name(readRleBitPackedHybrid, "readRleBitPackedHybrid"); -function readRle(reader, count, bitWidth2, output, seen) { - const width = bitWidth2 + 7 >> 3; - let value = 0; - for (let i = 0; i < width; i++) { - value |= reader.view.getUint8(reader.offset++) << (i << 3); - } - for (let i = 0; i < count; i++) { - output[seen + i] = value; - } -} -__name(readRle, "readRle"); -function readBitPacked(reader, header, bitWidth2, output, seen) { - let count = header >> 1 << 3; - const mask = (1 << bitWidth2) - 1; - let data = 0; - if (reader.offset < reader.view.byteLength) { - data = reader.view.getUint8(reader.offset++); - } else if (mask) { - throw new Error(`parquet bitpack offset ${reader.offset} out of range`); - } - let left = 8; - let right = 0; - while (count) { - if (right > 8) { - right -= 8; - left -= 8; - data >>>= 8; - } else if (left - right < bitWidth2) { - data |= reader.view.getUint8(reader.offset) << left; - reader.offset++; - left += 8; - } else { - if (seen < output.length) { - output[seen++] = data >> right & mask; - } - count--; - right += bitWidth2; - } - } - return seen; -} -__name(readBitPacked, "readBitPacked"); -function byteStreamSplit(reader, count, type, typeLength) { - const width = byteWidth(type, typeLength); - const bytes = new Uint8Array(count * width); - for (let b = 0; b < width; b++) { - for (let i = 0; i < count; i++) { - bytes[i * width + b] = reader.view.getUint8(reader.offset++); - } - } - if (type === "FLOAT") return new Float32Array(bytes.buffer); - else if (type === "DOUBLE") return new Float64Array(bytes.buffer); - else if (type === "INT32") return new Int32Array(bytes.buffer); - else if (type === "INT64") return new BigInt64Array(bytes.buffer); - else if (type === "FIXED_LEN_BYTE_ARRAY") { - const split = new Array(count); - for (let i = 0; i < count; i++) { - split[i] = bytes.subarray(i * width, (i + 1) * width); - } - return split; - } - throw new Error(`parquet byte_stream_split unsupported type: ${type}`); -} -__name(byteStreamSplit, "byteStreamSplit"); -function byteWidth(type, typeLength) { - switch (type) { - case "INT32": - case "FLOAT": - return 4; - case "INT64": - case "DOUBLE": - return 8; - case "FIXED_LEN_BYTE_ARRAY": - if (!typeLength) throw new Error("parquet byteWidth missing type_length"); - return typeLength; - default: - throw new Error(`parquet unsupported type: ${type}`); - } -} -__name(byteWidth, "byteWidth"); - -// node_modules/hyparquet/src/plain.js -function readPlain(reader, type, count, fixedLength) { - if (count === 0) return []; - if (type === "BOOLEAN") { - return readPlainBoolean(reader, count); - } else if (type === "INT32") { - return readPlainInt32(reader, count); - } else if (type === "INT64") { - return readPlainInt64(reader, count); - } else if (type === "INT96") { - return readPlainInt96(reader, count); - } else if (type === "FLOAT") { - return readPlainFloat(reader, count); - } else if (type === "DOUBLE") { - return readPlainDouble(reader, count); - } else if (type === "BYTE_ARRAY") { - return readPlainByteArray(reader, count); - } else if (type === "FIXED_LEN_BYTE_ARRAY") { - if (!fixedLength) throw new Error("parquet missing fixed length"); - return readPlainByteArrayFixed(reader, count, fixedLength); - } else { - throw new Error(`parquet unhandled type: ${type}`); - } -} -__name(readPlain, "readPlain"); -function readPlainBoolean(reader, count) { - const values = new Array(count); - for (let i = 0; i < count; i++) { - const byteOffset = reader.offset + (i / 8 | 0); - const bitOffset = i % 8; - const byte = reader.view.getUint8(byteOffset); - values[i] = (byte & 1 << bitOffset) !== 0; - } - reader.offset += Math.ceil(count / 8); - return values; -} -__name(readPlainBoolean, "readPlainBoolean"); -function readPlainInt32(reader, count) { - const values = (reader.view.byteOffset + reader.offset) % 4 ? new Int32Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 4)) : new Int32Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count); - reader.offset += count * 4; - return values; -} -__name(readPlainInt32, "readPlainInt32"); -function readPlainInt64(reader, count) { - const values = (reader.view.byteOffset + reader.offset) % 8 ? new BigInt64Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 8)) : new BigInt64Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count); - reader.offset += count * 8; - return values; -} -__name(readPlainInt64, "readPlainInt64"); -function readPlainInt96(reader, count) { - const values = new Array(count); - for (let i = 0; i < count; i++) { - const low = reader.view.getBigInt64(reader.offset + i * 12, true); - const high = reader.view.getInt32(reader.offset + i * 12 + 8, true); - values[i] = BigInt(high) << 64n | low; - } - reader.offset += count * 12; - return values; -} -__name(readPlainInt96, "readPlainInt96"); -function readPlainFloat(reader, count) { - const values = (reader.view.byteOffset + reader.offset) % 4 ? new Float32Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 4)) : new Float32Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count); - reader.offset += count * 4; - return values; -} -__name(readPlainFloat, "readPlainFloat"); -function readPlainDouble(reader, count) { - const values = (reader.view.byteOffset + reader.offset) % 8 ? new Float64Array(align(reader.view.buffer, reader.view.byteOffset + reader.offset, count * 8)) : new Float64Array(reader.view.buffer, reader.view.byteOffset + reader.offset, count); - reader.offset += count * 8; - return values; -} -__name(readPlainDouble, "readPlainDouble"); -function readPlainByteArray(reader, count) { - const values = new Array(count); - for (let i = 0; i < count; i++) { - const length = reader.view.getUint32(reader.offset, true); - reader.offset += 4; - values[i] = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, length); - reader.offset += length; - } - return values; -} -__name(readPlainByteArray, "readPlainByteArray"); -function readPlainByteArrayFixed(reader, count, fixedLength) { - const values = new Array(count); - for (let i = 0; i < count; i++) { - values[i] = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, fixedLength); - reader.offset += fixedLength; - } - return values; -} -__name(readPlainByteArrayFixed, "readPlainByteArrayFixed"); -function align(buffer, offset, size) { - const aligned = new ArrayBuffer(size); - new Uint8Array(aligned).set(new Uint8Array(buffer, offset, size)); - return aligned; -} -__name(align, "align"); - -// node_modules/hyparquet/src/snappy.js -var WORD_MASK = [0, 255, 65535, 16777215, 4294967295]; -function copyBytes(fromArray, fromPos, toArray, toPos, length) { - for (let i = 0; i < length; i++) { - toArray[toPos + i] = fromArray[fromPos + i]; - } -} -__name(copyBytes, "copyBytes"); -function snappyUncompress(input, output) { - const inputLength = input.byteLength; - const outputLength = output.byteLength; - let pos = 0; - let outPos = 0; - while (pos < inputLength) { - const c = input[pos]; - pos++; - if (c < 128) { - break; - } - } - if (outputLength && pos >= inputLength) { - throw new Error("invalid snappy length header"); - } - while (pos < inputLength) { - const c = input[pos]; - let len = 0; - pos++; - if (pos >= inputLength) { - throw new Error("missing eof marker"); - } - if ((c & 3) === 0) { - let len2 = (c >>> 2) + 1; - if (len2 > 60) { - if (pos + 3 >= inputLength) { - throw new Error("snappy error literal pos + 3 >= inputLength"); - } - const lengthSize = len2 - 60; - len2 = input[pos] + (input[pos + 1] << 8) + (input[pos + 2] << 16) + (input[pos + 3] << 24); - len2 = (len2 & WORD_MASK[lengthSize]) + 1; - pos += lengthSize; - } - if (pos + len2 > inputLength) { - throw new Error("snappy error literal exceeds input length"); - } - copyBytes(input, pos, output, outPos, len2); - pos += len2; - outPos += len2; - } else { - let offset = 0; - switch (c & 3) { - case 1: - len = (c >>> 2 & 7) + 4; - offset = input[pos] + (c >>> 5 << 8); - pos++; - break; - case 2: - if (inputLength <= pos + 1) { - throw new Error("snappy error end of input"); - } - len = (c >>> 2) + 1; - offset = input[pos] + (input[pos + 1] << 8); - pos += 2; - break; - case 3: - if (inputLength <= pos + 3) { - throw new Error("snappy error end of input"); - } - len = (c >>> 2) + 1; - offset = input[pos] + (input[pos + 1] << 8) + (input[pos + 2] << 16) + (input[pos + 3] << 24); - pos += 4; - break; - default: - break; - } - if (offset === 0 || isNaN(offset)) { - throw new Error(`invalid offset ${offset} pos ${pos} inputLength ${inputLength}`); - } - if (offset > outPos) { - throw new Error("cannot copy from before start of buffer"); - } - copyBytes(output, outPos - offset, output, outPos, len); - outPos += len; - } - } - if (outPos !== outputLength) throw new Error("premature end of input"); -} -__name(snappyUncompress, "snappyUncompress"); - -// node_modules/hyparquet/src/datapage.js -function readDataPage(bytes, daph, { type, element, schemaPath }) { - const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); - const reader = { view, offset: 0 }; - let dataPage; - const repetitionLevels = readRepetitionLevels(reader, daph, schemaPath); - const { definitionLevels, numNulls } = readDefinitionLevels(reader, daph, schemaPath); - const nValues = daph.num_values - numNulls; - if (daph.encoding === "PLAIN") { - dataPage = readPlain(reader, type, nValues, element.type_length); - } else if (daph.encoding === "PLAIN_DICTIONARY" || daph.encoding === "RLE_DICTIONARY" || daph.encoding === "RLE") { - const bitWidth2 = type === "BOOLEAN" ? 1 : view.getUint8(reader.offset++); - if (bitWidth2) { - dataPage = new Array(nValues); - if (type === "BOOLEAN") { - readRleBitPackedHybrid(reader, bitWidth2, dataPage); - dataPage = dataPage.map((x) => !!x); - } else { - readRleBitPackedHybrid(reader, bitWidth2, dataPage, view.byteLength - reader.offset); - } - } else { - dataPage = new Uint8Array(nValues); - } - } else if (daph.encoding === "BYTE_STREAM_SPLIT") { - dataPage = byteStreamSplit(reader, nValues, type, element.type_length); - } else if (daph.encoding === "DELTA_BINARY_PACKED") { - const int32 = type === "INT32"; - dataPage = int32 ? new Int32Array(nValues) : new BigInt64Array(nValues); - deltaBinaryUnpack(reader, nValues, dataPage); - } else if (daph.encoding === "DELTA_LENGTH_BYTE_ARRAY") { - dataPage = new Array(nValues); - deltaLengthByteArray(reader, nValues, dataPage); - } else { - throw new Error(`parquet unsupported encoding: ${daph.encoding}`); - } - return { definitionLevels, repetitionLevels, dataPage }; -} -__name(readDataPage, "readDataPage"); -function readRepetitionLevels(reader, daph, schemaPath) { - if (schemaPath.length > 1) { - const maxRepetitionLevel = getMaxRepetitionLevel(schemaPath); - if (maxRepetitionLevel) { - const values = new Array(daph.num_values); - readRleBitPackedHybrid(reader, bitWidth(maxRepetitionLevel), values); - return values; - } - } - return []; -} -__name(readRepetitionLevels, "readRepetitionLevels"); -function readDefinitionLevels(reader, daph, schemaPath) { - const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath); - if (!maxDefinitionLevel) return { definitionLevels: [], numNulls: 0 }; - const definitionLevels = new Array(daph.num_values); - readRleBitPackedHybrid(reader, bitWidth(maxDefinitionLevel), definitionLevels); - let numNulls = daph.num_values; - for (const def of definitionLevels) { - if (def === maxDefinitionLevel) numNulls--; - } - if (numNulls === 0) definitionLevels.length = 0; - return { definitionLevels, numNulls }; -} -__name(readDefinitionLevels, "readDefinitionLevels"); -function decompressPage(compressedBytes, uncompressed_page_size, codec, compressors) { - let page; - const customDecompressor = compressors?.[codec]; - if (codec === "UNCOMPRESSED") { - page = compressedBytes; - } else if (customDecompressor) { - page = customDecompressor(compressedBytes, uncompressed_page_size); - } else if (codec === "SNAPPY") { - page = new Uint8Array(uncompressed_page_size); - snappyUncompress(compressedBytes, page); - } else { - throw new Error(`parquet unsupported compression codec: ${codec}`); - } - if (page?.length !== uncompressed_page_size) { - throw new Error(`parquet decompressed page length ${page?.length} does not match header ${uncompressed_page_size}`); - } - return page; -} -__name(decompressPage, "decompressPage"); -function readDataPageV2(compressedBytes, ph, columnDecoder) { - const view = new DataView(compressedBytes.buffer, compressedBytes.byteOffset, compressedBytes.byteLength); - const reader = { view, offset: 0 }; - const { type, element, schemaPath, codec, compressors } = columnDecoder; - const daph2 = ph.data_page_header_v2; - if (!daph2) throw new Error("parquet data page header v2 is undefined"); - const repetitionLevels = readRepetitionLevelsV2(reader, daph2, schemaPath); - reader.offset = daph2.repetition_levels_byte_length; - const definitionLevels = readDefinitionLevelsV2(reader, daph2, schemaPath); - const uncompressedPageSize = ph.uncompressed_page_size - daph2.definition_levels_byte_length - daph2.repetition_levels_byte_length; - let page = compressedBytes.subarray(reader.offset); - if (daph2.is_compressed !== false) { - page = decompressPage(page, uncompressedPageSize, codec, compressors); - } - const pageView = new DataView(page.buffer, page.byteOffset, page.byteLength); - const pageReader = { view: pageView, offset: 0 }; - let dataPage; - const nValues = daph2.num_values - daph2.num_nulls; - if (daph2.encoding === "PLAIN") { - dataPage = readPlain(pageReader, type, nValues, element.type_length); - } else if (daph2.encoding === "RLE") { - dataPage = new Array(nValues); - readRleBitPackedHybrid(pageReader, 1, dataPage); - dataPage = dataPage.map((x) => !!x); - } else if (daph2.encoding === "PLAIN_DICTIONARY" || daph2.encoding === "RLE_DICTIONARY") { - const bitWidth2 = pageView.getUint8(pageReader.offset++); - dataPage = new Array(nValues); - readRleBitPackedHybrid(pageReader, bitWidth2, dataPage, uncompressedPageSize - 1); - } else if (daph2.encoding === "DELTA_BINARY_PACKED") { - const int32 = type === "INT32"; - dataPage = int32 ? new Int32Array(nValues) : new BigInt64Array(nValues); - deltaBinaryUnpack(pageReader, nValues, dataPage); - } else if (daph2.encoding === "DELTA_LENGTH_BYTE_ARRAY") { - dataPage = new Array(nValues); - deltaLengthByteArray(pageReader, nValues, dataPage); - } else if (daph2.encoding === "DELTA_BYTE_ARRAY") { - dataPage = new Array(nValues); - deltaByteArray(pageReader, nValues, dataPage); - } else if (daph2.encoding === "BYTE_STREAM_SPLIT") { - dataPage = byteStreamSplit(pageReader, nValues, type, element.type_length); - } else { - throw new Error(`parquet unsupported encoding: ${daph2.encoding}`); - } - return { definitionLevels, repetitionLevels, dataPage }; -} -__name(readDataPageV2, "readDataPageV2"); -function readRepetitionLevelsV2(reader, daph2, schemaPath) { - const maxRepetitionLevel = getMaxRepetitionLevel(schemaPath); - if (!maxRepetitionLevel) return []; - const values = new Array(daph2.num_values); - readRleBitPackedHybrid(reader, bitWidth(maxRepetitionLevel), values, daph2.repetition_levels_byte_length); - return values; -} -__name(readRepetitionLevelsV2, "readRepetitionLevelsV2"); -function readDefinitionLevelsV2(reader, daph2, schemaPath) { - const maxDefinitionLevel = getMaxDefinitionLevel(schemaPath); - if (maxDefinitionLevel) { - const values = new Array(daph2.num_values); - readRleBitPackedHybrid(reader, bitWidth(maxDefinitionLevel), values, daph2.definition_levels_byte_length); - return values; - } -} -__name(readDefinitionLevelsV2, "readDefinitionLevelsV2"); -function bitWidth(value) { - return 32 - Math.clz32(value); -} -__name(bitWidth, "bitWidth"); - -// node_modules/hyparquet/src/column.js -function readColumn(reader, { groupStart, selectStart, selectEnd }, columnDecoder, onPage) { - const { pathInSchema, schemaPath } = columnDecoder; - const isFlat = isFlatColumn(schemaPath); - const chunks = []; - let dictionary = void 0; - let lastChunk = void 0; - let rowCount = 0; - let skipped = 0; - const emitLastChunk = onPage && (() => { - lastChunk && onPage({ - pathInSchema, - columnData: lastChunk, - rowStart: groupStart + rowCount - lastChunk.length, - rowEnd: groupStart + rowCount - }); - }); - while (isFlat ? rowCount < selectEnd : reader.offset < reader.view.byteLength - 1) { - if (reader.offset >= reader.view.byteLength - 1) break; - const header = parquetHeader(reader); - if (header.type === "DICTIONARY_PAGE") { - const { data } = readPage(reader, header, columnDecoder, dictionary, void 0, 0); - if (data) dictionary = convert(data, columnDecoder); - } else { - const lastChunkLength = lastChunk?.length || 0; - const result = readPage(reader, header, columnDecoder, dictionary, lastChunk, selectStart - rowCount); - if (result.skipped) { - if (!chunks.length) { - skipped += result.skipped; - } - rowCount += result.skipped; - } else if (result.data && lastChunk === result.data) { - rowCount += result.data.length - lastChunkLength; - } else if (result.data && result.data.length) { - emitLastChunk?.(); - chunks.push(result.data); - rowCount += result.data.length; - lastChunk = result.data; - } - } - } - emitLastChunk?.(); - return { data: chunks, skipped }; -} -__name(readColumn, "readColumn"); -function readPage(reader, header, columnDecoder, dictionary, previousChunk, pageStart) { - const { type, element, schemaPath, codec, compressors } = columnDecoder; - const compressedBytes = new Uint8Array( - reader.view.buffer, - reader.view.byteOffset + reader.offset, - header.compressed_page_size - ); - reader.offset += header.compressed_page_size; - if (header.type === "DATA_PAGE") { - const daph = header.data_page_header; - if (!daph) throw new Error("parquet data page header is undefined"); - if (pageStart > daph.num_values && isFlatColumn(schemaPath)) { - return { skipped: daph.num_values }; - } - const page = decompressPage(compressedBytes, Number(header.uncompressed_page_size), codec, compressors); - const { definitionLevels, repetitionLevels, dataPage } = readDataPage(page, daph, columnDecoder); - const values = convertWithDictionary(dataPage, dictionary, daph.encoding, columnDecoder); - const output = Array.isArray(previousChunk) ? previousChunk : []; - const assembled = assembleLists(output, definitionLevels, repetitionLevels, values, schemaPath); - return { skipped: 0, data: assembled }; - } else if (header.type === "DATA_PAGE_V2") { - const daph2 = header.data_page_header_v2; - if (!daph2) throw new Error("parquet data page header v2 is undefined"); - if (pageStart > daph2.num_rows) { - return { skipped: daph2.num_values }; - } - const { definitionLevels, repetitionLevels, dataPage } = readDataPageV2(compressedBytes, header, columnDecoder); - const values = convertWithDictionary(dataPage, dictionary, daph2.encoding, columnDecoder); - const output = Array.isArray(previousChunk) ? previousChunk : []; - const assembled = assembleLists(output, definitionLevels, repetitionLevels, values, schemaPath); - return { skipped: 0, data: assembled }; - } else if (header.type === "DICTIONARY_PAGE") { - const diph = header.dictionary_page_header; - if (!diph) throw new Error("parquet dictionary page header is undefined"); - const page = decompressPage( - compressedBytes, - Number(header.uncompressed_page_size), - codec, - compressors - ); - const reader2 = { view: new DataView(page.buffer, page.byteOffset, page.byteLength), offset: 0 }; - const dictArray = readPlain(reader2, type, diph.num_values, element.type_length); - return { skipped: 0, data: dictArray }; - } else { - throw new Error(`parquet unsupported page type: ${header.type}`); - } -} -__name(readPage, "readPage"); -function parquetHeader(reader) { - const header = deserializeTCompactProtocol(reader); - const type = PageTypes[header.field_1]; - const uncompressed_page_size = header.field_2; - const compressed_page_size = header.field_3; - const crc = header.field_4; - const data_page_header = header.field_5 && { - num_values: header.field_5.field_1, - encoding: Encodings[header.field_5.field_2], - definition_level_encoding: Encodings[header.field_5.field_3], - repetition_level_encoding: Encodings[header.field_5.field_4], - statistics: header.field_5.field_5 && { - max: header.field_5.field_5.field_1, - min: header.field_5.field_5.field_2, - null_count: header.field_5.field_5.field_3, - distinct_count: header.field_5.field_5.field_4, - max_value: header.field_5.field_5.field_5, - min_value: header.field_5.field_5.field_6 - } - }; - const index_page_header = header.field_6; - const dictionary_page_header = header.field_7 && { - num_values: header.field_7.field_1, - encoding: Encodings[header.field_7.field_2], - is_sorted: header.field_7.field_3 - }; - const data_page_header_v2 = header.field_8 && { - num_values: header.field_8.field_1, - num_nulls: header.field_8.field_2, - num_rows: header.field_8.field_3, - encoding: Encodings[header.field_8.field_4], - definition_levels_byte_length: header.field_8.field_5, - repetition_levels_byte_length: header.field_8.field_6, - is_compressed: header.field_8.field_7 === void 0 ? true : header.field_8.field_7, - // default true - statistics: header.field_8.field_8 - }; - return { - type, - uncompressed_page_size, - compressed_page_size, - crc, - data_page_header, - index_page_header, - dictionary_page_header, - data_page_header_v2 - }; -} -__name(parquetHeader, "parquetHeader"); - -// node_modules/hyparquet/src/rowgroup.js -function readRowGroup(options, { metadata }, groupPlan) { - const asyncColumns = []; - for (const chunk of groupPlan.chunks) { - const { data_page_offset, dictionary_page_offset, path_in_schema: pathInSchema } = chunk.columnMetadata; - const schemaPath = getSchemaPath(metadata.schema, pathInSchema); - const columnDecoder = { - pathInSchema, - element: schemaPath[schemaPath.length - 1].element, - schemaPath, - parsers: { ...DEFAULT_PARSERS, ...options.parsers }, - ...options, - ...chunk.columnMetadata - }; - let { startByte, endByte } = chunk.range; - if (!("offsetIndex" in chunk)) { - asyncColumns.push({ - pathInSchema, - data: Promise.resolve(options.file.slice(startByte, endByte)).then((buffer) => { - const reader = { view: new DataView(buffer), offset: 0 }; - return readColumn(reader, groupPlan, columnDecoder, options.onPage); - }) - }); - continue; - } - asyncColumns.push({ - pathInSchema, - // fetch offset index - data: Promise.resolve(options.file.slice(chunk.offsetIndex.startByte, chunk.offsetIndex.endByte)).then(async (arrayBuffer) => { - const { selectStart, selectEnd } = groupPlan; - const pages = readOffsetIndex({ view: new DataView(arrayBuffer), offset: 0 }).page_locations; - let skipped = -1; - const hasDict = dictionary_page_offset || data_page_offset < pages[0].offset; - for (let i = 0; i < pages.length; i++) { - const page = pages[i]; - const pageStart = Number(page.first_row_index); - const pageEnd = i + 1 < pages.length ? Number(pages[i + 1].first_row_index) : groupPlan.groupRows; - if (skipped < 0 && !hasDict && pageEnd > selectStart) { - startByte = Number(page.offset); - skipped = pageStart; - } - if (pageStart < selectEnd) { - endByte = Number(page.offset) + page.compressed_page_size; - } - } - if (skipped < 0) skipped = 0; - const buffer = await options.file.slice(startByte, endByte); - const reader = { view: new DataView(buffer), offset: 0 }; - const adjustedGroupPlan = skipped ? { - ...groupPlan, - groupStart: groupPlan.groupStart + skipped, - selectStart: groupPlan.selectStart - skipped, - selectEnd: groupPlan.selectEnd - skipped - } : groupPlan; - const { data, skipped: columnSkipped } = readColumn(reader, adjustedGroupPlan, columnDecoder, options.onPage); - return { - data, - skipped: skipped + columnSkipped - }; - }) - }); - } - return { groupStart: groupPlan.groupStart, groupRows: groupPlan.groupRows, asyncColumns }; -} -__name(readRowGroup, "readRowGroup"); -async function asyncGroupToRows({ asyncColumns }, selectStart, selectEnd, columns, rowFormat) { - const asyncPages = await Promise.all(asyncColumns.map( - (column) => column.data.then(({ skipped, data }) => ({ skipped, data: flatten(data) })) - )); - const selectCount = selectEnd - selectStart; - if (rowFormat === "object") { - const groupData2 = Array(selectCount); - for (let selectRow = 0; selectRow < selectCount; selectRow++) { - const rowData = {}; - for (let i = 0; i < asyncColumns.length; i++) { - const { data, skipped } = asyncPages[i]; - rowData[asyncColumns[i].pathInSchema[0]] = data[selectStart + selectRow - skipped]; - } - groupData2[selectRow] = rowData; - } - return groupData2; - } - const includedColumnNames = asyncColumns.map((child) => child.pathInSchema[0]).filter((name) => !columns || columns.includes(name)); - const columnOrder = columns ?? includedColumnNames; - const columnIndexes = columnOrder.map((name) => asyncColumns.findIndex((column) => column.pathInSchema[0] === name)); - const groupData = Array(selectCount); - for (let selectRow = 0; selectRow < selectCount; selectRow++) { - const rowData = Array(asyncColumns.length); - for (let i = 0; i < columnOrder.length; i++) { - const colIdx = columnIndexes[i]; - if (colIdx < 0) throw new Error(`parquet column not found: ${columnOrder[i]}`); - const { data, skipped } = asyncPages[colIdx]; - rowData[i] = data[selectStart + selectRow - skipped]; - } - groupData[selectRow] = rowData; - } - return groupData; -} -__name(asyncGroupToRows, "asyncGroupToRows"); -function assembleAsync(asyncRowGroup, schemaTree2, parsers) { - const { asyncColumns } = asyncRowGroup; - parsers = { ...DEFAULT_PARSERS, ...parsers }; - const assembled = []; - for (const child of schemaTree2.children) { - if (child.children.length) { - const childColumns = asyncColumns.filter((column) => column.pathInSchema[0] === child.element.name); - if (!childColumns.length) continue; - assembled.push({ - pathInSchema: child.path, - data: (async () => { - const resolved = await Promise.all(childColumns.map((c) => c.data)); - const subcolumnData = /* @__PURE__ */ new Map(); - let minLength = Infinity; - for (let i = 0; i < childColumns.length; i++) { - const flat = flatten(resolved[i].data); - subcolumnData.set(childColumns[i].pathInSchema.join("."), flat); - minLength = Math.min(minLength, flat.length); - } - for (const [key, value] of subcolumnData) { - if (value.length > minLength) { - subcolumnData.set(key, value.slice(0, minLength)); - } - } - assembleNested(subcolumnData, child, parsers); - const assembled2 = subcolumnData.get(child.element.name); - if (!assembled2) throw new Error("parquet column data not assembled"); - return { data: [assembled2], skipped: 0 }; - })() - }); - } else { - const asyncColumn = asyncColumns.find((column) => column.pathInSchema[0] === child.element.name); - if (asyncColumn) assembled.push(asyncColumn); - } - } - return { ...asyncRowGroup, asyncColumns: assembled }; -} -__name(assembleAsync, "assembleAsync"); - -// node_modules/hyparquet/src/read.js -async function parquetRead(options) { - options.metadata ??= await parquetMetadataAsync(options.file, options); - const { rowStart = 0, rowEnd, columns, onChunk, onComplete, rowFormat, filter, filterStrict = true } = options; - if (filter && rowFormat !== "object") { - throw new Error('parquet filter requires rowFormat: "object"'); - } - const filterColumns = columnsNeededForFilter(filter); - if (filterColumns.length) { - const schemaColumns = parquetSchema(options.metadata).children.map((c) => c.element.name); - const missingColumns = filterColumns.filter((c) => !schemaColumns.includes(c)); - if (missingColumns.length) { - throw new Error(`parquet filter columns not found: ${missingColumns.join(", ")}`); - } - } - let readColumns = columns; - let requiresProjection = false; - if (columns && filter) { - const missingFilterColumns = filterColumns.filter((c) => !columns.includes(c)); - if (missingFilterColumns.length) { - readColumns = [...columns, ...missingFilterColumns]; - requiresProjection = true; - } - } - let readOptions = readColumns !== columns ? { ...options, columns: readColumns } : options; - readOptions = await withBloomFilters(readOptions); - const asyncGroups = parquetReadAsync(readOptions); - if (!onComplete && !onChunk) { - await awaitAllColumns(asyncGroups); - return; - } - const schemaTree2 = parquetSchema(options.metadata); - const assembled = asyncGroups.map((arg) => assembleAsync(arg, schemaTree2, options.parsers)); - if (onChunk) { - for (const asyncGroup of assembled) { - for (const asyncColumn of asyncGroup.asyncColumns) { - asyncColumn.data.then(({ data, skipped }) => { - let rowStart2 = asyncGroup.groupStart + skipped; - for (const columnData of data) { - onChunk({ - columnName: asyncColumn.pathInSchema[0], - columnData, - rowStart: rowStart2, - rowEnd: rowStart2 + columnData.length - }); - rowStart2 += columnData.length; - } - }, () => { - }); - } - } - } - if (onComplete) { - await awaitAllColumns(assembled); - const rows = []; - for (const asyncGroup of assembled) { - const selectStart = Math.max(rowStart - asyncGroup.groupStart, 0); - const selectEnd = Math.min((rowEnd ?? Infinity) - asyncGroup.groupStart, asyncGroup.groupRows); - const groupData = rowFormat === "object" ? await asyncGroupToRows(asyncGroup, selectStart, selectEnd, readColumns, "object") : await asyncGroupToRows(asyncGroup, selectStart, selectEnd, columns, "array"); - if (filter) { - for ( - const row of - /** @type {Record[]} */ - groupData - ) { - if (matchFilter(row, filter, filterStrict)) { - if (requiresProjection && columns) { - for (const col of filterColumns) { - if (!columns.includes(col)) delete row[col]; - } - } - rows.push(row); - } - } - } else { - concat(rows, groupData); - } - } - onComplete(rows); - } else { - await awaitAllColumns(assembled); - } -} -__name(parquetRead, "parquetRead"); -async function awaitAllColumns(asyncGroups) { - const all = asyncGroups.flatMap((g) => g.asyncColumns.map((c) => c.data)); - const results = await Promise.allSettled(all); - const failed = results.find((r) => r.status === "rejected"); - if (failed) throw failed.reason; -} -__name(awaitAllColumns, "awaitAllColumns"); -function parquetReadAsync(options) { - if (!options.metadata) throw new Error("parquet requires metadata"); - const plan = parquetPlan(options); - options.file = prefetchAsyncBuffer(options.file, plan); - return plan.groups.map((groupPlan) => readRowGroup(options, plan, groupPlan)); -} -__name(parquetReadAsync, "parquetReadAsync"); -async function withBloomFilters(options) { - if (!options.useBloomFilters) return options; - if (!options.filter || !options.metadata) return options; - const schemaTree2 = parquetSchema(options.metadata); - const schemaElements = {}; - for (const child of schemaTree2.children) schemaElements[child.element.name] = child.element; - const bloomFiltersByGroup = await prefetchBloomFilters({ - file: options.file, - metadata: options.metadata, - filter: options.filter, - filterStrict: options.filterStrict - }); - return ( - /** @type {BaseParquetReadOptions} */ - { ...options, bloomFiltersByGroup, schemaElements } - ); -} -__name(withBloomFilters, "withBloomFilters"); -function parquetReadObjects(options) { - return new Promise((onComplete, reject) => { - parquetRead({ - ...options, - rowFormat: "object", - // force object output - onComplete - }).catch(reject); - }); -} -__name(parquetReadObjects, "parquetReadObjects"); - -// src/params.ts -var AGGREGATIONS = [ - "count", - "sum", - "mean", - "min", - "max", - "median" -]; -var QueryError = class extends Error { - static { - __name(this, "QueryError"); - } - status; - details; - constructor(message, status = 400, details) { - super(message); - this.status = status; - this.details = details; - } -}; -var DEFAULT_LIMIT = 1e3; -var MAX_LIMIT = 1e4; -var COMPARISON_PREFIX = /^(eq|neq|gt|gte|lt|lte)\.([\s\S]*)$/; -function parseInList(inner) { - const values = []; - let i = 0; - while (i < inner.length) { - while (i < inner.length && inner[i] === " ") i++; - if (inner[i] === '"') { - let value = ""; - i++; - while (i < inner.length) { - if (inner[i] === '"' && inner[i + 1] === '"') { - value += '"'; - i += 2; - } else if (inner[i] === '"') { - i++; - break; - } else { - value += inner[i]; - i++; - } - } - values.push(value); - while (i < inner.length && inner[i] !== ",") i++; - i++; - } else { - let end = inner.indexOf(",", i); - if (end === -1) end = inner.length; - values.push(inner.slice(i, end).trim()); - i = end + 1; - } - } - return values.filter((v) => v.length > 0); -} -__name(parseInList, "parseInList"); -function parseFilterParam(column, raw2) { - if (raw2 === "is.null") { - return { column, op: "isNull" }; - } - if (raw2 === "not.null") { - return { column, op: "notNull" }; - } - if (raw2.startsWith("in.(") && raw2.endsWith(")")) { - const values = parseInList(raw2.slice(4, -1)); - if (values.length === 0) { - throw new QueryError( - `Empty in.() list for column "${column}". Provide at least one value.` - ); - } - return { column, op: "in", values }; - } - const match2 = COMPARISON_PREFIX.exec(raw2); - if (match2) { - return { - column, - op: match2[1], - value: match2[2] - }; - } - return { column, op: "eq", value: raw2 }; -} -__name(parseFilterParam, "parseFilterParam"); -function parseQueryParams(searchParams) { - const filters = []; - for (const [key, value] of searchParams.entries()) { - if (key.startsWith("q.")) { - const column2 = key.slice(2); - if (!column2) { - throw new QueryError(`Invalid filter parameter "${key}".`); - } - filters.push(parseFilterParam(column2, value)); - } - } - let format = null; - const f = searchParams.get("f"); - if (f !== null) { - if (f !== "json" && f !== "html") { - throw new QueryError(`Invalid format "${f}". Use f=json or f=html.`); - } - format = f; - } - const groupBy = (searchParams.get("groupBy") || "").split(",").map((s) => s.trim()).filter((s) => s.length > 0); - const ops = []; - const opParam = searchParams.get("op"); - if (opParam !== null) { - for (const op of opParam.split(",").map((s) => s.trim())) { - if (!op) continue; - if (!AGGREGATIONS.includes(op)) { - throw new QueryError( - `Unknown aggregation "${op}". Supported: ${AGGREGATIONS.join(", ")}.` - ); - } - if (!ops.includes(op)) { - ops.push(op); - } - } - } - const column = searchParams.get("column"); - const needsColumn = ops.filter((op) => op !== "count"); - if (needsColumn.length > 0 && !column) { - throw new QueryError( - `The "column" parameter is required for op=${needsColumn.join(",")}.` - ); - } - if (groupBy.length > 0 && ops.length === 0) { - throw new QueryError( - `groupBy requires at least one aggregation via the "op" parameter.` - ); - } - let limit = DEFAULT_LIMIT; - const limitParam = searchParams.get("limit"); - if (limitParam !== null) { - limit = Number(limitParam); - if (!Number.isInteger(limit) || limit < 1 || limit > MAX_LIMIT) { - throw new QueryError( - `Invalid limit "${limitParam}". Must be an integer between 1 and ${MAX_LIMIT}.` - ); - } - } - let offset = 0; - const offsetParam = searchParams.get("offset"); - if (offsetParam !== null) { - offset = Number(offsetParam); - if (!Number.isInteger(offset) || offset < 0) { - throw new QueryError( - `Invalid offset "${offsetParam}". Must be a non-negative integer.` - ); - } - } - let orderBy = null; - const orderByParam = searchParams.get("orderBy"); - if (orderByParam !== null && orderByParam.trim().length > 0) { - const [key, direction = "asc"] = orderByParam.split(":"); - if (direction !== "asc" && direction !== "desc") { - throw new QueryError( - `Invalid orderBy direction "${direction}". Use :asc or :desc.` - ); - } - orderBy = { key: key.trim(), direction }; - } - return { format, groupBy, ops, column, limit, offset, orderBy, filters }; -} -__name(parseQueryParams, "parseQueryParams"); -function canonicalQueryString(searchParams) { - const entries = []; - for (const [key, value] of searchParams.entries()) { - if (key === "f") continue; - entries.push([key, value]); - } - entries.sort( - (a, b) => a[0] === b[0] ? a[1].localeCompare(b[1]) : a[0].localeCompare(b[0]) - ); - const params = new URLSearchParams(); - for (const [key, value] of entries) { - params.append(key, value); - } - return params.toString(); -} -__name(canonicalQueryString, "canonicalQueryString"); - -// src/engine/asyncBuffer.ts -var PUBLIC_UPLOADS_BASE = "https://uploads.seasketch.org"; -async function openR2File(options) { - const { bucket, key, dev, cacheEnabled, waitUntil } = options; - let byteLength; - let etag; - if (dev) { - const probe = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`, { - headers: { Range: "bytes=0-0" } - }); - if (!probe.ok) { - return null; - } - const contentRange = probe.headers.get("content-range") || ""; - byteLength = Number(contentRange.split("/")[1] || 0); - etag = probe.headers.get("etag") || ""; - if (!byteLength) { - return null; - } - } else { - const head = await bucket.head(key); - if (!head) { - return null; - } - byteLength = head.size; - etag = head.httpEtag; - } - const slice = /* @__PURE__ */ __name(async (start, end) => { - const rangeEnd = end === void 0 ? byteLength : end; - if (rangeEnd <= start) { - return new ArrayBuffer(0); - } - const cacheKey2 = new Request( - `${PUBLIC_UPLOADS_BASE}/${key}?etag=${encodeURIComponent( - etag - )}&bytes=${start}-${rangeEnd - 1}` - ); - if (cacheEnabled) { - const cached = await caches.default.match(cacheKey2); - if (cached) { - return await cached.arrayBuffer(); - } - } - let data; - if (dev) { - const res = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`, { - headers: { Range: `bytes=${start}-${rangeEnd - 1}` } - }); - if (!res.ok) { - throw new Error( - `Range request for ${key} failed with status ${res.status}` - ); - } - data = await res.arrayBuffer(); - } else { - const body = await bucket.get(key, { - range: { offset: start, length: rangeEnd - start } - }); - if (!body) { - throw new Error(`Range request to R2 for ${key} returned no body`); - } - data = await body.arrayBuffer(); - } - if (cacheEnabled) { - waitUntil( - caches.default.put( - cacheKey2, - new Response(data.slice(0), { - status: 200, - headers: { - "Content-Type": "application/octet-stream", - "Cache-Control": "public, max-age=86400" - } - }) - ) - ); - } - return data; - }, "slice"); - const buffer = cachedAsyncBuffer({ byteLength, slice }); - return { buffer, byteLength, etag }; -} -__name(openR2File, "openR2File"); -async function getR2Object(options) { - const { bucket, key, dev } = options; - if (dev) { - const res = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`); - if (!res.ok) { - return null; - } - return await res.arrayBuffer(); - } - const body = await bucket.get(key); - if (!body) { - return null; - } - return await body.arrayBuffer(); -} -__name(getR2Object, "getR2Object"); - -// src/engine/plan.ts -function kindForSchemaElement(element) { - const logical = element.logical_type?.type; - if (logical === "STRING" || element.converted_type === "UTF8") { - return "string"; - } - if (logical === "DATE" || logical === "TIMESTAMP" || element.converted_type === "DATE" || element.converted_type === "TIMESTAMP_MILLIS" || element.converted_type === "TIMESTAMP_MICROS" || element.type === "INT96") { - return "timestamp"; - } - if (element.type === "BOOLEAN") { - return "boolean"; - } - if (element.type === "INT32" || element.type === "INT64" || element.type === "FLOAT" || element.type === "DOUBLE" || element.converted_type === "DECIMAL") { - return "number"; - } - return "string"; -} -__name(kindForSchemaElement, "kindForSchemaElement"); -function columnsFromMetadata(metadata) { - const columns = /* @__PURE__ */ new Map(); - const schema = parquetSchema(metadata); - for (const child of schema.children) { - const name = child.element.name; - columns.set(name, { name, kind: kindForSchemaElement(child.element) }); - } - return columns; -} -__name(columnsFromMetadata, "columnsFromMetadata"); -function unknownColumnError(name, columns) { - return new QueryError(`Unknown column "${name}".`, 400, { - validColumns: [...columns.values()].map((c) => ({ - name: c.name, - type: c.kind - })) - }); -} -__name(unknownColumnError, "unknownColumnError"); -function coerceValue(raw2, column) { - switch (column.kind) { - case "number": { - const n = Number(raw2); - if (raw2.trim() === "" || Number.isNaN(n)) { - throw new QueryError( - `Invalid numeric value "${raw2}" for column "${column.name}".` - ); - } - return n; - } - case "boolean": { - if (raw2 === "true" || raw2 === "1") return true; - if (raw2 === "false" || raw2 === "0") return false; - throw new QueryError( - `Invalid boolean value "${raw2}" for column "${column.name}". Use true or false.` - ); - } - case "timestamp": { - const t = Date.parse(raw2); - if (Number.isNaN(t)) { - throw new QueryError( - `Invalid date value "${raw2}" for column "${column.name}". Use an ISO 8601 date.` - ); - } - return t; - } - default: - return raw2; - } -} -__name(coerceValue, "coerceValue"); -var COMPARISON_OPS = /* @__PURE__ */ new Set(["gt", "gte", "lt", "lte"]); -function compileFilters(filters, columns) { - return filters.map((filter) => { - const column = columns.get(filter.column); - if (!column) { - throw unknownColumnError(filter.column, columns); - } - if (COMPARISON_OPS.has(filter.op) && column.kind !== "number" && column.kind !== "timestamp") { - throw new QueryError( - `Operator "${filter.op}" is only supported for numeric or date columns; "${column.name}" is a ${column.kind} column.` - ); - } - const compiled = { - column: filter.column, - op: filter.op, - kind: column.kind - }; - if (filter.value !== void 0) { - compiled.value = coerceValue(filter.value, column); - } - if (filter.values !== void 0) { - compiled.values = filter.values.map((v) => coerceValue(v, column)); - } - return compiled; - }); -} -__name(compileFilters, "compileFilters"); -function normalizeValue(value, kind) { - if (value === null || value === void 0) { - return null; - } - if (typeof value === "bigint") { - return Number(value); - } - if (value instanceof Date) { - return value.getTime(); - } - if (kind === "number" && typeof value !== "number") { - const n = Number(value); - return Number.isNaN(n) ? null : n; - } - if (kind === "timestamp" && typeof value === "number") { - return value; - } - if (value instanceof Uint8Array) { - return new TextDecoder().decode(value); - } - return value; -} -__name(normalizeValue, "normalizeValue"); -function rowGroupMayMatch(filter, stats, rowCount) { - if (!stats) return true; - const nullCount = stats.null_count === void 0 ? void 0 : Number(stats.null_count); - if (filter.op === "isNull") { - return nullCount === void 0 || nullCount > 0; - } - if (filter.op === "notNull") { - return nullCount === void 0 || nullCount < rowCount; - } - const min = normalizeValue(stats.min_value, filter.kind); - const max = normalizeValue(stats.max_value, filter.kind); - if (min === null || max === null) return true; - switch (filter.op) { - case "eq": - return filter.value >= min && filter.value <= max; - case "in": - return filter.values.some((v) => v >= min && v <= max); - case "gt": - return max > filter.value; - case "gte": - return max >= filter.value; - case "lt": - return min < filter.value; - case "lte": - return min <= filter.value; - default: - return !(filter.op === "neq" && min === max && min === filter.value); - } -} -__name(rowGroupMayMatch, "rowGroupMayMatch"); -function planQuery(metadata, query) { - const columns = columnsFromMetadata(metadata); - for (const name of query.groupBy) { - if (!columns.has(name)) { - throw unknownColumnError(name, columns); - } - } - if (query.column !== null) { - if (!columns.has(query.column)) { - throw unknownColumnError(query.column, columns); - } - const kind = columns.get(query.column).kind; - const numericOps = query.ops.filter( - (op) => op !== "count" && op !== "min" && op !== "max" - ); - if (numericOps.length > 0 && kind !== "number" && kind !== "timestamp") { - throw new QueryError( - `Aggregations ${numericOps.join(", ")} require a numeric column; "${query.column}" is a ${kind} column.` - ); - } - } - const filters = compileFilters(query.filters, columns); - let neededColumns; - if (query.ops.length > 0) { - const needed = new Set(query.groupBy); - if (query.column) needed.add(query.column); - for (const f of filters) needed.add(f.column); - neededColumns = [...needed]; - } else { - neededColumns = void 0; - } - const spans = []; - let rowStart = 0; - let scanned = 0; - for (const rowGroup of metadata.row_groups) { - const numRows = Number(rowGroup.num_rows); - let mayMatch = true; - for (const filter of filters) { - const chunk = rowGroup.columns.find( - (c) => c.meta_data?.path_in_schema.join(".") === filter.column - ); - if (!chunk?.meta_data) continue; - if (!rowGroupMayMatch(filter, chunk.meta_data.statistics, numRows)) { - mayMatch = false; - break; - } - } - if (mayMatch && numRows > 0) { - scanned++; - const last = spans[spans.length - 1]; - if (last && last.rowEnd === rowStart) { - last.rowEnd = rowStart + numRows; - } else { - spans.push({ rowStart, rowEnd: rowStart + numRows }); - } - } - rowStart += numRows; - } - return { - columns, - filters, - neededColumns, - spans, - rowGroupsTotal: metadata.row_groups.length, - rowGroupsScanned: scanned, - totalRows: Number(metadata.num_rows) - }; -} -__name(planQuery, "planQuery"); - -// src/engine/execute.ts -function makePredicate(filters) { - if (filters.length === 0) { - return () => true; - } - return (row) => { - for (const filter of filters) { - const value = normalizeValue(row[filter.column], filter.kind); - switch (filter.op) { - case "isNull": - if (value !== null) return false; - break; - case "notNull": - if (value === null) return false; - break; - case "eq": - if (value === null || value !== filter.value) return false; - break; - case "neq": - if (value === null || value === filter.value) return false; - break; - case "in": - if (value === null || !filter.values.includes(value)) return false; - break; - case "gt": - if (value === null || !(value > filter.value)) return false; - break; - case "gte": - if (value === null || !(value >= filter.value)) return false; - break; - case "lt": - if (value === null || !(value < filter.value)) return false; - break; - case "lte": - if (value === null || !(value <= filter.value)) return false; - break; - } - } - return true; - }; -} -__name(makePredicate, "makePredicate"); -function jsonValue(value) { - if (typeof value === "bigint") { - return Number(value); - } - if (value instanceof Date) { - return value.toISOString(); - } - if (value instanceof Uint8Array) { - return new TextDecoder().decode(value); - } - if (value === void 0) { - return null; - } - return value; -} -__name(jsonValue, "jsonValue"); -function jsonRow(row) { - const out = {}; - for (const key of Object.keys(row)) { - out[key] = jsonValue(row[key]); - } - return out; -} -__name(jsonRow, "jsonRow"); -function compareValues(a, b) { - if (a === null || a === void 0) return b === null || b === void 0 ? 0 : 1; - if (b === null || b === void 0) return -1; - if (typeof a === "number" && typeof b === "number") return a - b; - return String(a) < String(b) ? -1 : String(a) > String(b) ? 1 : 0; -} -__name(compareValues, "compareValues"); -function median(values) { - if (values.length === 0) return null; - const sorted = [...values].sort((a, b) => a - b); - const mid = Math.floor(sorted.length / 2); - return sorted.length % 2 === 1 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2; -} -__name(median, "median"); -function sortAndPage(items, orderBy, offset, limit, validKeys) { - if (orderBy) { - if (!validKeys(orderBy.key)) { - throw new QueryError( - `orderBy key "${orderBy.key}" is not present in the output.` - ); - } - const dir = orderBy.direction === "desc" ? -1 : 1; - items.sort((a, b) => dir * compareValues(a[orderBy.key], b[orderBy.key])); - } - return items.slice(offset, offset + limit); -} -__name(sortAndPage, "sortAndPage"); -async function executeQuery(options) { - const { file, metadata, query, plan } = options; - const predicate = makePredicate(plan.filters); - if (query.ops.length === 0) { - return await executeRawQuery(options, predicate); - } - const aggColumn = query.column; - const aggKind = aggColumn ? plan.columns.get(aggColumn)?.kind : void 0; - const needsMedian = query.ops.includes("median"); - const groups = /* @__PURE__ */ new Map(); - let rowsScanned = 0; - let rowsMatched = 0; - for (const span of plan.spans) { - const rows = await parquetReadObjects({ - file, - metadata, - columns: plan.neededColumns, - rowStart: span.rowStart, - rowEnd: span.rowEnd - }); - rowsScanned += rows.length; - for (const row of rows) { - if (!predicate(row)) continue; - rowsMatched++; - const keyValues = query.groupBy.map((col) => jsonValue(row[col])); - const key = JSON.stringify(keyValues); - let group = groups.get(key); - if (!group) { - group = { - keyValues, - rowCount: 0, - valueCount: 0, - sum: 0, - min: null, - max: null, - values: needsMedian ? [] : void 0 - }; - groups.set(key, group); - } - group.rowCount++; - if (aggColumn) { - const value = normalizeValue(row[aggColumn], aggKind || "string"); - if (value !== null) { - group.valueCount++; - if (typeof value === "number") { - group.sum += value; - group.values?.push(value); - } - if (group.min === null || compareValues(value, group.min) < 0) { - group.min = value; - } - if (group.max === null || compareValues(value, group.max) > 0) { - group.max = value; - } - } - } - } - } - const output = []; - for (const group of groups.values()) { - const entry = {}; - query.groupBy.forEach((col, i) => { - entry[col] = group.keyValues[i]; - }); - for (const op of query.ops) { - entry[op] = aggregateValue(op, group, aggColumn !== null); - } - output.push(entry); - } - const validKeys = /* @__PURE__ */ __name((key) => query.groupBy.includes(key) || query.ops.includes(key), "validKeys"); - const paged = sortAndPage( - output, - query.orderBy, - query.offset, - query.limit, - validKeys - ); - return { groups: paged, rowsScanned, rowsMatched }; -} -__name(executeQuery, "executeQuery"); -function aggregateValue(op, group, hasColumn) { - switch (op) { - case "count": - return hasColumn ? group.valueCount : group.rowCount; - case "sum": - return group.valueCount > 0 ? group.sum : null; - case "mean": - return group.valueCount > 0 ? group.sum / group.valueCount : null; - case "min": - return group.min; - case "max": - return group.max; - case "median": - return median(group.values || []); - } -} -__name(aggregateValue, "aggregateValue"); -async function executeRawQuery(options, predicate) { - const { file, metadata, query, plan } = options; - const matched = []; - let rowsScanned = 0; - let rowsMatched = 0; - const target = query.orderBy ? Infinity : query.offset + query.limit; - for (const span of plan.spans) { - const rows = await parquetReadObjects({ - file, - metadata, - columns: plan.neededColumns, - rowStart: span.rowStart, - rowEnd: span.rowEnd - }); - rowsScanned += rows.length; - for (const row of rows) { - if (!predicate(row)) continue; - rowsMatched++; - if (matched.length < target) { - matched.push(jsonRow(row)); - } - } - if (matched.length >= target) break; - } - const columnNames = new Set(plan.columns.keys()); - const paged = sortAndPage( - matched, - query.orderBy, - query.offset, - query.limit, - (key) => columnNames.has(key) - ); - return { rows: paged, rowsScanned, rowsMatched }; -} -__name(executeRawQuery, "executeRawQuery"); - -// src/ui/html.ts -function escapeHtml(text) { - return text.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """); -} -__name(escapeHtml, "escapeHtml"); -function queryUiHtml(tablePath) { - const safePath = escapeHtml(tablePath); - return ` - - - - -Data Table Query — ${safePath} - - - -
        -

        Data Table Query

        -
        ${safePath}
        - -
        -

        Filters

        -
        - -
        - -
        -

        Aggregation

        -
        -
        - -
        -
        -
        -
        -
        - -
        -
        -
        - - -
        -
        -
        Leave operations unchecked to fetch raw filtered rows.
        -
        - -
        -

        Output

        -
        -
        -
        -
        -
        -
        - -
        -
        -
        -
        -
        - -\n\n`;\n}\n", "import { Context, Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\nimport { parquetMetadataAsync } from \"hyparquet\";\nimport {\n canonicalQueryString,\n parseQueryParams,\n QueryError,\n} from \"./params\";\nimport { getR2Object, openR2File } from \"./engine/asyncBuffer\";\nimport { planQuery } from \"./engine/plan\";\nimport { executeQuery } from \"./engine/execute\";\nimport { queryUiHtml } from \"./ui/html\";\n\n/**\n * data-tables-worker\n *\n * Serves cacheable GET queries over parquet data tables stored in R2, e.g.\n *\n * GET /projects/{slug}/public/dataTables/{uuid}/query\n * ?groupBy=site&op=mean&column=count&q.year=2018&q.classcode=PYCHEL\n *\n * Content negotiation: text/html requests receive an interactive query UI;\n * application/json (or f=json) receives query results.\n */\n\nconst app = new Hono<{ Bindings: Env }>();\n\nconst CACHE_ORIGIN = \"https://data-tables.seasketch.org\";\n/** Browser cache lifetime for query responses */\nconst BROWSER_MAX_AGE = 3600;\n/** CDN/edge cache lifetime. Table paths are versioned (a replacement gets a\n * new uploadId directory) so long edge lifetimes are safe. */\nconst EDGE_MAX_AGE = 86400;\n\napp.use(\n \"*\",\n cors({\n origin: \"*\",\n allowMethods: [\"GET\", \"OPTIONS\"],\n maxAge: 86400,\n })\n);\n\nfunction isDev(env: Env): boolean {\n return !!env.DEV;\n}\n\nasync function makeETag(objectEtag: string, canonicalQuery: string) {\n const data = new TextEncoder().encode(`${objectEtag}|${canonicalQuery}`);\n const digest = await crypto.subtle.digest(\"SHA-1\", data);\n const hex = [...new Uint8Array(digest)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return `\"${hex}\"`;\n}\n\nfunction errorResponse(error: unknown): Response {\n if (error instanceof QueryError) {\n return Response.json(\n { error: error.message, ...error.details },\n { status: error.status }\n );\n }\n console.error(\n JSON.stringify({\n message: \"query execution failed\",\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n })\n );\n return Response.json({ error: \"Internal server error\" }, { status: 500 });\n}\n\napp.get(\"*\", async (c) => {\n const url = new URL(c.req.url);\n const pathname = url.pathname;\n\n if (pathname.endsWith(\"/query\")) {\n const tablePath = pathname.slice(1, -\"/query\".length);\n if (!tablePath) {\n return Response.json({ error: \"Missing table path\" }, { status: 404 });\n }\n return handleQuery(c, tablePath, url);\n }\n\n if (pathname.endsWith(\"/column-stats.json\")) {\n return handleColumnStats(c, pathname.slice(1));\n }\n\n return Response.json(\n {\n error: \"Not found. Query endpoint is {tablePath}/query\",\n },\n { status: 404 }\n );\n});\n\ntype AppContext = Context<{ Bindings: Env }>;\n\nasync function handleColumnStats(\n c: AppContext,\n key: string\n): Promise {\n const dev = isDev(c.env);\n const data = await getR2Object({ bucket: c.env.SSN_TILES, key, dev });\n if (!data) {\n return Response.json({ error: \"Not found\" }, { status: 404 });\n }\n return new Response(data, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": dev\n ? \"no-store\"\n : `public, max-age=${BROWSER_MAX_AGE}, s-maxage=${EDGE_MAX_AGE}`,\n },\n });\n}\n\nasync function handleQuery(\n c: AppContext,\n tablePath: string,\n url: URL\n): Promise {\n const dev = isDev(c.env);\n const cacheEnabled = !dev;\n\n let query;\n try {\n query = parseQueryParams(url.searchParams);\n } catch (error) {\n return errorResponse(error);\n }\n\n // Content negotiation: explicit f param wins, otherwise Accept header.\n const accept = c.req.header(\"accept\") || \"\";\n const wantsHtml =\n query.format === \"html\" ||\n (query.format === null && accept.includes(\"text/html\"));\n if (wantsHtml) {\n return new Response(queryUiHtml(tablePath), {\n headers: {\n \"Content-Type\": \"text/html; charset=utf-8\",\n \"Cache-Control\": dev ? \"no-store\" : \"public, max-age=300\",\n },\n });\n }\n\n const canonicalQuery = canonicalQueryString(url.searchParams);\n const cacheKey = new Request(\n `${CACHE_ORIGIN}/${tablePath}/query?${canonicalQuery}`\n );\n const ifNoneMatch = c.req.header(\"if-none-match\");\n\n if (cacheEnabled) {\n const cached = await caches.default.match(cacheKey);\n if (cached) {\n const etag = cached.headers.get(\"etag\");\n if (etag && ifNoneMatch === etag) {\n return new Response(null, {\n status: 304,\n headers: { ETag: etag, \"Cache-Control\": cached.headers.get(\"cache-control\") || \"\" },\n });\n }\n return cached;\n }\n }\n\n const started = Date.now();\n try {\n const source = await openR2File({\n bucket: c.env.SSN_TILES,\n key: `${tablePath}/data.parquet`,\n dev,\n cacheEnabled,\n waitUntil: (p) => c.executionCtx.waitUntil(p),\n });\n if (!source) {\n throw new QueryError(\n `No data table found at \"${tablePath}/data.parquet\".`,\n 404\n );\n }\n\n const metadata = await parquetMetadataAsync(source.buffer);\n const planned = Date.now();\n const plan = planQuery(metadata, query);\n const result = await executeQuery({\n file: source.buffer,\n metadata,\n query,\n plan,\n });\n const finished = Date.now();\n\n const body = {\n table: tablePath,\n totalRows: plan.totalRows,\n rowsScanned: result.rowsScanned,\n rowsMatched: result.rowsMatched,\n rowGroups: {\n total: plan.rowGroupsTotal,\n scanned: plan.rowGroupsScanned,\n },\n timing: {\n metadataMs: planned - started,\n executeMs: finished - planned,\n totalMs: finished - started,\n },\n ...(result.groups !== undefined\n ? { groups: result.groups }\n : { rows: result.rows }),\n };\n\n const etag = await makeETag(source.etag, canonicalQuery);\n if (ifNoneMatch === etag) {\n return new Response(null, { status: 304, headers: { ETag: etag } });\n }\n\n const response = new Response(JSON.stringify(body), {\n headers: {\n \"Content-Type\": \"application/json\",\n ETag: etag,\n \"Cache-Control\": dev\n ? \"no-store\"\n : `public, max-age=${BROWSER_MAX_AGE}, s-maxage=${EDGE_MAX_AGE}`,\n },\n });\n\n if (cacheEnabled) {\n c.executionCtx.waitUntil(caches.default.put(cacheKey, response.clone()));\n }\n return response;\n } catch (error) {\n return errorResponse(error);\n }\n}\n\nexport default app;\n", "import type { Middleware } from \"./common\";\n\nconst drainBody: Middleware = async (request, env, _ctx, middlewareCtx) => {\n\ttry {\n\t\treturn await middlewareCtx.next(request, env);\n\t} finally {\n\t\ttry {\n\t\t\tif (request.body !== null && !request.bodyUsed) {\n\t\t\t\tconst reader = request.body.getReader();\n\t\t\t\twhile (!(await reader.read()).done) {}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(\"Failed to drain the unused request body.\", e);\n\t\t}\n\t}\n};\n\nexport default drainBody;\n", "import type { Middleware } from \"./common\";\n\ninterface JsonError {\n\tmessage?: string;\n\tname?: string;\n\tstack?: string;\n\tcause?: JsonError;\n}\n\nfunction reduceError(e: any): JsonError {\n\treturn {\n\t\tname: e?.name,\n\t\tmessage: e?.message ?? String(e),\n\t\tstack: e?.stack,\n\t\tcause: e?.cause === undefined ? undefined : reduceError(e.cause),\n\t};\n}\n\n// See comment in `bundle.ts` for details on why this is needed\nconst jsonError: Middleware = async (request, env, _ctx, middlewareCtx) => {\n\ttry {\n\t\treturn await middlewareCtx.next(request, env);\n\t} catch (e: any) {\n\t\tconst error = reduceError(e);\n\t\treturn Response.json(error, {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"MF-Experimental-Error-Stack\": \"true\" },\n\t\t});\n\t}\n};\n\nexport default jsonError;\n", "\t\t\t\timport worker, * as OTHER_EXPORTS from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/src/index.ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/src/index.ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\n\t\t\t\texport const __INTERNAL_WRANGLER_MIDDLEWARE__ = [\n\t\t\t\t\t\n\t\t\t\t\t__MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default\n\t\t\t\t]\n\t\t\t\texport default worker;", "export type Awaitable = T | Promise;\n// TODO: allow dispatching more events?\nexport type Dispatcher = (\n\ttype: \"scheduled\",\n\tinit: { cron?: string }\n) => Awaitable;\n\nexport type IncomingRequest = Request<\n\tunknown,\n\tIncomingRequestCfProperties\n>;\n\nexport interface MiddlewareContext {\n\tdispatch: Dispatcher;\n\tnext(request: IncomingRequest, env: any): Awaitable;\n}\n\nexport type Middleware = (\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tmiddlewareCtx: MiddlewareContext\n) => Awaitable;\n\nconst __facade_middleware__: Middleware[] = [];\n\n// The register functions allow for the insertion of one or many middleware,\n// We register internal middleware first in the stack, but have no way of controlling\n// the order that addMiddleware is run in service workers so need an internal function.\nexport function __facade_register__(...args: (Middleware | Middleware[])[]) {\n\t__facade_middleware__.push(...args.flat());\n}\nexport function __facade_registerInternal__(\n\t...args: (Middleware | Middleware[])[]\n) {\n\t__facade_middleware__.unshift(...args.flat());\n}\n\nfunction __facade_invokeChain__(\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tdispatch: Dispatcher,\n\tmiddlewareChain: Middleware[]\n): Awaitable {\n\tconst [head, ...tail] = middlewareChain;\n\tconst middlewareCtx: MiddlewareContext = {\n\t\tdispatch,\n\t\tnext(newRequest, newEnv) {\n\t\t\treturn __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail);\n\t\t},\n\t};\n\treturn head(request, env, ctx, middlewareCtx);\n}\n\nexport function __facade_invoke__(\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tdispatch: Dispatcher,\n\tfinalMiddleware: Middleware\n): Awaitable {\n\treturn __facade_invokeChain__(request, env, ctx, dispatch, [\n\t\t...__facade_middleware__,\n\t\tfinalMiddleware,\n\t]);\n}\n", "// This loads all middlewares exposed on the middleware object and then starts\n// the invocation chain. The big idea is that we can add these to the middleware\n// export dynamically through wrangler, or we can potentially let users directly\n// add them as a sort of \"plugin\" system.\n\nimport ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/node_modules/wrangler/templates/middleware/common.ts\";\nimport type { WorkerEntrypointConstructor } from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"/Users/cburt/src/@seasketch/next/packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js\";\n\nclass __Facade_ScheduledController__ implements ScheduledController {\n\treadonly #noRetry: ScheduledController[\"noRetry\"];\n\n\tconstructor(\n\t\treadonly scheduledTime: number,\n\t\treadonly cron: string,\n\t\tnoRetry: ScheduledController[\"noRetry\"]\n\t) {\n\t\tthis.#noRetry = noRetry;\n\t}\n\n\tnoRetry() {\n\t\tif (!(this instanceof __Facade_ScheduledController__)) {\n\t\t\tthrow new TypeError(\"Illegal invocation\");\n\t\t}\n\t\t// Need to call native method immediately in case uncaught error thrown\n\t\tthis.#noRetry();\n\t}\n}\n\nfunction wrapExportedHandler(worker: ExportedHandler): ExportedHandler {\n\t// If we don't have any middleware defined, just return the handler as is\n\tif (\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__ === undefined ||\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__.length === 0\n\t) {\n\t\treturn worker;\n\t}\n\t// Otherwise, register all middleware once\n\tfor (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) {\n\t\t__facade_register__(middleware);\n\t}\n\n\tconst fetchDispatcher: ExportedHandlerFetchHandler = function (\n\t\trequest,\n\t\tenv,\n\t\tctx\n\t) {\n\t\tif (worker.fetch === undefined) {\n\t\t\tthrow new Error(\"Handler does not export a fetch() function.\");\n\t\t}\n\t\treturn worker.fetch(request, env, ctx);\n\t};\n\n\treturn {\n\t\t...worker,\n\t\tfetch(request, env, ctx) {\n\t\t\tconst dispatcher: Dispatcher = function (type, init) {\n\t\t\t\tif (type === \"scheduled\" && worker.scheduled !== undefined) {\n\t\t\t\t\tconst controller = new __Facade_ScheduledController__(\n\t\t\t\t\t\tDate.now(),\n\t\t\t\t\t\tinit.cron ?? \"\",\n\t\t\t\t\t\t() => {}\n\t\t\t\t\t);\n\t\t\t\t\treturn worker.scheduled(controller, env, ctx);\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher);\n\t\t},\n\t};\n}\n\nfunction wrapWorkerEntrypoint(\n\tklass: WorkerEntrypointConstructor\n): WorkerEntrypointConstructor {\n\t// If we don't have any middleware defined, just return the handler as is\n\tif (\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__ === undefined ||\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__.length === 0\n\t) {\n\t\treturn klass;\n\t}\n\t// Otherwise, register all middleware once\n\tfor (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) {\n\t\t__facade_register__(middleware);\n\t}\n\n\t// `extend`ing `klass` here so other RPC methods remain callable\n\treturn class extends klass {\n\t\t#fetchDispatcher: ExportedHandlerFetchHandler> = (\n\t\t\trequest,\n\t\t\tenv,\n\t\t\tctx\n\t\t) => {\n\t\t\tthis.env = env;\n\t\t\tthis.ctx = ctx;\n\t\t\tif (super.fetch === undefined) {\n\t\t\t\tthrow new Error(\"Entrypoint class does not define a fetch() function.\");\n\t\t\t}\n\t\t\treturn super.fetch(request);\n\t\t};\n\n\t\t#dispatcher: Dispatcher = (type, init) => {\n\t\t\tif (type === \"scheduled\" && super.scheduled !== undefined) {\n\t\t\t\tconst controller = new __Facade_ScheduledController__(\n\t\t\t\t\tDate.now(),\n\t\t\t\t\tinit.cron ?? \"\",\n\t\t\t\t\t() => {}\n\t\t\t\t);\n\t\t\t\treturn super.scheduled(controller);\n\t\t\t}\n\t\t};\n\n\t\tfetch(request: Request) {\n\t\t\treturn __facade_invoke__(\n\t\t\t\trequest,\n\t\t\t\tthis.env,\n\t\t\t\tthis.ctx,\n\t\t\t\tthis.#dispatcher,\n\t\t\t\tthis.#fetchDispatcher\n\t\t\t);\n\t\t}\n\t};\n}\n\nlet WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined;\nif (typeof ENTRY === \"object\") {\n\tWRAPPED_ENTRY = wrapExportedHandler(ENTRY);\n} else if (typeof ENTRY === \"function\") {\n\tWRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY);\n}\nexport default WRAPPED_ENTRY;\n"], - "mappings": "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", - "names": ["match", "cacheKey", "decoder", "raw", "app", "Node", "_Node", "Node", "Hono", "child", "schemaTree", "decoder", "logicalType", "decoder", "byteWidth", "bitWidth", "bitWidth", "len", "bitWidth", "reader", "groupData", "schemaTree", "assembled", "schemaTree", "rowStart", "schemaTree", "raw", "match", "column", "cacheKey", "raw", "Hono", "cacheKey"] -} diff --git a/packages/data-tables-worker/README.md b/packages/data-tables-worker/README.md deleted file mode 100644 index 09aa3d1a5..000000000 --- a/packages/data-tables-worker/README.md +++ /dev/null @@ -1,309 +0,0 @@ -# data-tables-worker (deprecated) - -> **Deprecated.** Query serving and ACL now live in -> [`packages/pmtiles-server`](../pmtiles-server) (`DataTablesBackend` on -> `uploads.seasketch.org`). This package is kept temporarily for reference -> during cutover; do not deploy new versions. - -Cloudflare Worker that served highly cacheable GET queries over SeaSketch -overlay data tables stored as parquet in R2. It powers map visualizations by -answering questions like "average PYCHEL count per site in 2018" which can -then be joined against survey-site vector tiles in mapbox-gl-js. - -The engine is built on [hyparquet](https://github.com/hyparam/hyparquet) and -only reads the byte ranges it needs from R2: the parquet footer, plus the -column chunks for columns referenced by the query. Row groups are pruned two -ways: min/max column statistics, and bloom filters for `eq`/`in` predicates -(essential for high-cardinality string columns like species codes, where -min/max spans the whole alphabet in every row group). Execution is columnar: -filters are evaluated against just the filter columns to produce matched row -indices, and the remaining columns are only decoded for row groups with -matches -- no per-row objects are materialized during scans. - -## Table assets - -Each uploaded data table lives at an immutable R2 prefix: - -``` -{tablePath} = projects/{slug}/public/{sourceUuid}/dataTables/{uploadId} -``` - -| URL | Description | -| --- | ----------- | -| `GET /{tablePath}/query` | Run a query (JSON or HTML UI). See [Query API](#query-api) below. | -| `GET /{tablePath}/column-stats.json` | Column metadata, distinct values, and join statistics. Used to build filter UIs. | -| `GET /{tablePath}/data.parquet` | Download the underlying parquet file. | - -In production, `{tablePath}` is typically exposed on the worker as -`https://data-tables.seasketch.org/{tablePath}` (or via `queryUrl` on -`OverlayDataTable` in GraphQL). - -## Query API - -All queries are **GET** requests with parameters in the query string. There is -no request body. Parameter order does not matter; identical queries are -canonicalized for caching (see [Caching](#caching)). - -Content negotiation for `/query`: - -| Request | Response | -| ------- | -------- | -| `Accept: text/html` (browser default) | Interactive query builder UI | -| `Accept: application/json`, or `f=json` | JSON query results | -| `f=html` | Force the HTML UI regardless of `Accept` | - -The demo UI at `/query` loads `column-stats.json` from the same origin to -populate column pickers and saved form state in `localStorage`. - -### Built-in parameters - -| Param | Required | Description | -| ----- | -------- | ----------- | -| `f` | No | `json` or `html`; overrides `Accept`-based format selection. Omitted from cache keys. | -| `groupBy` | When aggregating | Comma-separated column names, e.g. `groupBy=site` or `groupBy=site,year`. Requires at least one `op`. | -| `op` | When `groupBy` is set | Comma-separated aggregations: `count`, `sum`, `mean`, `min`, `max`, `median`. Multiple ops share one `column` (except `count` — see below). | -| `column` | When any `op` other than `count` alone | Numeric column to aggregate, e.g. `column=count`. | -| `orderBy` | No | Sort key with optional direction: `orderBy=mean:desc`, `orderBy=site` (asc). Valid keys are **groupBy columns** and **aggregation names** from `op`. | -| `limit` | No | Max groups or raw rows returned. Positive integer. **Omit for no limit.** | -| `offset` | No | Skip first N groups/rows after sorting (default `0`). | - -**Query modes:** - -1. **Aggregated** — `groupBy` + `op` (+ `column` when needed). Returns a `groups` - array. Each object contains the group key column(s) plus one property per - aggregation (`mean`, `count`, etc.). -2. **Raw rows** — omit `groupBy` and `op`. Returns a `rows` array of matching - parquet records (all columns, subject to filters). Useful for inspection, not - typical map joins. - -**Aggregation semantics:** - -| `op` | Behavior | -| ---- | -------- | -| `count` | With `column`: count non-null values in that column per group (SQL `COUNT(col)`). Without `column`: count matching rows per group (`COUNT(*)`). | -| `sum`, `mean` | Computed over non-null values in `column`. Groups with no non-null values return `null` for these ops. | -| `min`, `max` | Extremes over non-null values in `column`. | -| `median` | Median of non-null values in `column` (even-length groups average the two middle values). | - -When multiple aggregations are requested (`op=mean,count&column=count`), each -group object includes all of them, e.g. `{ "site": "PINOS", "mean": 12.4, "count": 87 }`. - -### Column filters (`q.` prefix) - -Filters restrict which parquet rows participate before aggregation or raw -output. Parameter names are `q.{columnName}`; operators are embedded in the -value using a PostgREST-like syntax: - -| URL value | Meaning | Column types | -| --------- | ------- | ------------ | -| `{value}` or `eq.{value}` | equals | all | -| `neq.{value}` | not equals | all | -| `gt.{n}`, `gte.{n}`, `lt.{n}`, `lte.{n}` | comparisons | number, timestamp | -| `in.(a,b,"Smith, John")` | value in list | all; quote items that contain commas; `""` escapes `"` | -| `is.null` | column is null | all | -| `not.null` | column is not null | all | - -Examples: - -``` -q.year=2018 equality (bare value) -q.year=eq.2018 equality (explicit) -q.count=gte.5 numeric comparison -q.observer=in.(CHAD BURT,BRAD BURT) IN list -q.size=is.null null test -q.year=gte.2010&q.year=lte.2018 repeated params AND together -``` - -Rules: - -- Unknown column names → `400` with `{ error, validColumns: [{ name, type }] }`. -- Type-invalid operators (e.g. `gt` on a string column) → `400` with message. -- Timestamp filters accept ISO 8601 strings; comparisons use epoch milliseconds. -- Boolean filters accept `true`/`false` or `1`/`0`. - -There is **no** `not.in` operator; express exclusion with `neq` or multiple -filters as appropriate. - -Implementation reference: `src/params.ts` (`parseQueryParams`, `parseInList`). - -### Response format (JSON) - -Successful `f=json` responses: - -```json -{ - "table": "projects/california/public/{sourceUuid}/dataTables/{uploadId}", - "totalRows": 353253, - "rowsScanned": 353253, - "rowsMatched": 2328, - "rowGroups": { "total": 3, "scanned": 3 }, - "timing": { "metadataMs": 209, "executeMs": 230, "totalMs": 439 }, - "groups": [ - { "site": "PINOS", "mean": 1, "count": 1 } - ] -} -``` - -| Field | Description | -| ----- | ----------- | -| `table` | R2 prefix queried | -| `totalRows` | Rows in the parquet file | -| `rowsScanned` | Rows read from pruned row groups (after statistics/bloom pruning) | -| `rowsMatched` | Rows passing all filters | -| `rowGroups.total` / `rowGroups.scanned` | Parquet row-group pruning stats | -| `timing` | Server-side phase timings (ms); CPU-bound work may not be fully reflected in `executeMs` | -| `groups` | Present when `groupBy` + `op` were requested | -| `rows` | Present for raw-row mode (no aggregation) | - -Responses include `ETag`, `Cache-Control`, and `Vary: Accept` headers. - -### `column-stats.json` - -Static metadata written at upload time (`DataTablesColumnStats` in -`packages/geostats-types`). Shape: - -```json -{ - "table": "Swath Protocol Data", - "rowCount": 353253, - "columns": [ - { - "attribute": "classcode", - "type": "string", - "count": 353253, - "values": [{ "value": "PYCHEL", "count": 12345 }] - } - ], - "join": { - "column": "site", - "overlayAttribute": "site", - "matchRate": 1, - "matchedRows": 367, - "unmatchedRows": 0, - "unmatchedOverlayValues": 0 - } -} -``` - -- `columns[].attribute` — parquet column name (use in `q.` filters and `groupBy`). -- `columns[].type` — `string`, `number`, `boolean`, `date`, etc. -- `columns[].values` — distinct values with counts (for categorical pickers). -- `join.column` — key in the data table; `join.overlayAttribute` — matching - attribute on the vector layer. Map clients join query results to features - using these columns. - -### Errors - -Client errors (`400`) return JSON: - -```json -{ "error": "Unknown column \"foo\".", "validColumns": [{ "name": "site", "type": "string" }] } -``` - -Missing table → `404`. Unexpected failures → `500` with `{ "error": "Internal server error" }`. - -### Map visualization patterns - -These are the primary SeaSketch use cases; each maps directly to query params: - -| Use case | Typical query | Join key | -| -------- | ------------- | -------- | -| **Thematic map** — one value per overlay feature | `groupBy={join.column}&op=mean&column=count&q.classcode=PYCHEL&q.year=2024` | `join.column` ↔ feature attribute | -| **Site time series** — values over time for one feature | `groupBy=year&op=sum&column=count&q.site=PINOS&q.classcode=PYCHEL` | filter to selected site | -| **Multi-species comparison** | `groupBy=site&op=sum&column=count&q.classcode=in.(PYCHEL,KELKEL)&q.year=2024` | same as thematic map | - -The map client fetches aggregated results, builds a lookup `{ [joinKey]: value }`, -and drives Mapbox GL paint/layout properties from that lookup. - -### Structured settings → query string - -Map UI code (e.g. `DataTableQuerySettings` in -`packages/client/src/dataLayers/dataTableQueryApi.ts`) should compile to the -same parameter names the worker expects. Use -`buildDataTableQuerySearchParams()` in that module, or follow this mapping: - -| Structured field | Query param | -| ---------------- | ----------- | -| `groupBy: "site"` | `groupBy=site` | -| `groupBy: ["site", "year"]` | `groupBy=site,year` | -| `op: "mean"` | `op=mean` | -| `op: ["mean", "count"]` | `op=mean,count` | -| `column: "count"` | `column=count` | -| `filters: [{ column: "year", op: "eq", value: "2024" }]` | `q.year=2024` | -| `filters: [{ column: "count", op: "gte", value: "5" }]` | `q.count=gte.5` | -| `filters: [{ column: "classcode", op: "in", value: "PYCHEL,KELKEL" }]` | `q.classcode=in.(PYCHEL,KELKEL)` | -| `filters: [{ column: "size", op: "isNull" }]` | `q.size=is.null` | -| `filters: [{ column: "depth", op: "notNull" }]` | `q.depth=not.null` | - -Filter `op` values in TypeScript match `FilterOperator` in `src/params.ts` -(`eq`, `neq`, `gt`, `gte`, `lt`, `lte`, `in`, `isNull`, `notNull`). - -### Example - -``` -GET /projects/california/public/{sourceUuid}/dataTables/{uploadId}/query - ?groupBy=site&op=mean,count&column=count&q.year=2018&q.classcode=PYCHEL&f=json -``` - -```json -{ - "table": "projects/california/public/{sourceUuid}/dataTables/…", - "totalRows": 353253, - "rowsScanned": 353253, - "rowsMatched": 3, - "rowGroups": { "total": 3, "scanned": 3 }, - "timing": { "metadataMs": 209, "executeMs": 230, "totalMs": 439 }, - "groups": [ - { "site": "PINOS", "mean": 1, "count": 1 }, - { "site": "PESCADERO_DC", "mean": 1, "count": 1 }, - { "site": "LITTLE_IRISH_CEN", "mean": 1, "count": 1 } - ] -} -``` - -## Caching - -Table paths are versioned (each replacement upload gets a new uploadId -directory), so content at a given URL is immutable. Caching is intentionally -simple — three layers, each with a clear job: - -1. **HTTP response cache (primary).** Query JSON and `column-stats.json` are - served with `Cache-Control: public, max-age=86400, s-maxage=604800, - immutable` and a strong `ETag` (R2 object etag + canonicalized query). - Workers Cache (`cache.enabled` in wrangler.jsonc) stores identical GET - requests at the edge, so repeat queries never invoke the Worker at all. - This is the main win for static data. - -2. **In-memory parquet blocks (warm isolate).** Raw byte-range reads are - rounded to 512 KiB blocks and kept in an isolate-global LRU (32 MiB). - A warm isolate reuses fetched R2 bytes across queries that touch the same - table, even when filter values differ. - -3. **In-memory decoded columns (warm isolate, filter sweeps).** After blocks - are fetched, parquet still has to decompress and expand columns — the - CPU-heavy step. Decoded column arrays are cached in a second LRU (48 MiB), - keyed by file version + column + row span. Changing species or year while - scanning the same columns skips decode on subsequent queries within a - session. - -Parsed parquet footers and file stat (size/etag) are also memoized in isolate -memory per etag — cheap bookkeeping that avoids redundant R2 head() calls and -footer reads. - -In dev (`DEV` var set, see `.dev.vars`), HTTP responses use `Cache-Control: -no-store` so you always see fresh results. In-memory caches still apply. -Files are fetched from `https://uploads.seasketch.org` instead of the R2 -binding so `wrangler dev` works without credentials. - -## Development - -```sh -npm run dev # wrangler dev on :8787 (public-URL fallback, no caching) -npm test # vitest; engine tests run in Node against a real fixture parquet -npm run deploy # wrangler deploy (custom domain is attached in the CF dashboard) -``` - -Engine logic (parsing, planning/pruning, filtering, aggregation) is plain -TypeScript with no Workers dependencies and is tested directly in Node -against `test/fixtures/data.parquet`, a real 353k-row PISCO kelp forest -monitoring table. diff --git a/packages/data-tables-worker/package-lock.json b/packages/data-tables-worker/package-lock.json deleted file mode 100644 index fa7a8ad7e..000000000 --- a/packages/data-tables-worker/package-lock.json +++ /dev/null @@ -1,2597 +0,0 @@ -{ - "name": "data-tables-worker", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "data-tables-worker", - "version": "0.0.0", - "dependencies": { - "hono": "^4.7.11", - "hyparquet": "^1.26.2" - }, - "devDependencies": { - "typescript": "^5.5.2", - "vitest": "^3.2.4", - "wrangler": "^4.19.1" - } - }, - "node_modules/@cloudflare/kv-asset-handler": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.5.0.tgz", - "integrity": "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==", - "dev": true, - "license": "MIT OR Apache-2.0", - "engines": { - "node": ">=22.0.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.2.tgz", - "integrity": "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", - "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/colour": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", - "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", - "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", - "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", - "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-riscv64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", - "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.2.4" - } - }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", - "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@poppinss/colors": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz", - "integrity": "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^4.1.5" - } - }, - "node_modules/@poppinss/dumper": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.5.tgz", - "integrity": "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@poppinss/colors": "^4.1.5", - "@sindresorhus/is": "^7.0.2", - "supports-color": "^10.0.0" - } - }, - "node_modules/@poppinss/exception": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.3.tgz", - "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", - "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", - "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", - "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", - "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", - "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", - "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", - "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", - "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", - "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", - "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", - "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", - "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", - "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", - "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", - "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", - "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", - "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", - "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", - "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", - "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", - "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", - "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", - "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", - "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", - "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@sindresorhus/is": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", - "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@speed-highlight/core": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.17.tgz", - "integrity": "sha512-Z92FwKpCtfaW1V0jTU/fh3QzYEZN8wDwrzRIBoADCJfn4mJCNcJN/XegifX7BDrQ8/h9Xh/JnbyMchL0FqXrkg==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vitest/expect": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.7.tgz", - "integrity": "sha512-E8eBXaKibuvH2pSZErOjdVb5vF4PbKYcrnluBTYxEk1l/VhhwZg1kZQsdtjq+CsF5CFydf2Rdkz7jDHKSisi3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.7", - "@vitest/utils": "3.2.7", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/mocker": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.7.tgz", - "integrity": "sha512-Trr0hYO9CM3Wj6ksWHRhK9IZpIY6wTMO5u/MqXurMxT57sWBaOPEtP3Oq60ihZuh5JsiagKfz95OcxdEP6dBrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "3.2.7", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/pretty-format": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.7.tgz", - "integrity": "sha512-KUHlwqVu0sRlhCdyPdQ/wBoTfRahjUky1MubOmYw9fWfIZy1gNoHpuaaQBPAaMaVYdQYHJLurzj8ECCj5OwTqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.7.tgz", - "integrity": "sha512-sB9y4ovltoQP+WaUPwmSxO9WIg9Ig694Di5PalVPsYHklAdE027mehpWF2SQSVq+k6sFgaivbTjTJwZLSHbedA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "3.2.7", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.7.tgz", - "integrity": "sha512-7C+MwShwtBSI5Buwoyg3s/iY1eHL9PKAf+O1wVh/TdnjXUtkoL/9YQtre90i4MtNXM6edP1wJ2zOBpfCyhIS7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.7", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.7.tgz", - "integrity": "sha512-Q2eQGI6d2L/hBtZ0qNuKcAGid68XK6cv1xsoaIma6PaJhHPoqcEJhYpXZ/5myCMqkNgtP6UKuBhbc0nHKnrkuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.7.tgz", - "integrity": "sha512-x6BDOd7dyo3PFLY3I9/HJ25X/6OurhGXk2/B9gOZNPF7XDVjeBK4k01lQE5uvDpbuheErh91qYuE1E2OEjK3Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.7", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/blake3-wasm": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", - "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", - "dev": true, - "license": "MIT" - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/chai": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/check-error": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", - "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/cookie": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", - "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/error-stack-parser-es": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", - "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", - "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.1", - "@esbuild/android-arm": "0.28.1", - "@esbuild/android-arm64": "0.28.1", - "@esbuild/android-x64": "0.28.1", - "@esbuild/darwin-arm64": "0.28.1", - "@esbuild/darwin-x64": "0.28.1", - "@esbuild/freebsd-arm64": "0.28.1", - "@esbuild/freebsd-x64": "0.28.1", - "@esbuild/linux-arm": "0.28.1", - "@esbuild/linux-arm64": "0.28.1", - "@esbuild/linux-ia32": "0.28.1", - "@esbuild/linux-loong64": "0.28.1", - "@esbuild/linux-mips64el": "0.28.1", - "@esbuild/linux-ppc64": "0.28.1", - "@esbuild/linux-riscv64": "0.28.1", - "@esbuild/linux-s390x": "0.28.1", - "@esbuild/linux-x64": "0.28.1", - "@esbuild/netbsd-arm64": "0.28.1", - "@esbuild/netbsd-x64": "0.28.1", - "@esbuild/openbsd-arm64": "0.28.1", - "@esbuild/openbsd-x64": "0.28.1", - "@esbuild/openharmony-arm64": "0.28.1", - "@esbuild/sunos-x64": "0.28.1", - "@esbuild/win32-arm64": "0.28.1", - "@esbuild/win32-ia32": "0.28.1", - "@esbuild/win32-x64": "0.28.1" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/expect-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", - "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/hono": { - "version": "4.12.28", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.28.tgz", - "integrity": "sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA==", - "license": "MIT", - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/hyparquet": { - "version": "1.26.2", - "resolved": "https://registry.npmjs.org/hyparquet/-/hyparquet-1.26.2.tgz", - "integrity": "sha512-6qjyK7R2tZ4vnYP1J8NpcCeDPK1UIYk3xh5XgtQUnUM1iwkYbvI6Mz3xtmpMd6AfCCeoUoJVbEq29k5GReZRWA==", - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/loupe": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", - "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.15", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", - "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.5.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", - "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.12", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/rollup": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz", - "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.9" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.62.2", - "@rollup/rollup-android-arm64": "4.62.2", - "@rollup/rollup-darwin-arm64": "4.62.2", - "@rollup/rollup-darwin-x64": "4.62.2", - "@rollup/rollup-freebsd-arm64": "4.62.2", - "@rollup/rollup-freebsd-x64": "4.62.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", - "@rollup/rollup-linux-arm-musleabihf": "4.62.2", - "@rollup/rollup-linux-arm64-gnu": "4.62.2", - "@rollup/rollup-linux-arm64-musl": "4.62.2", - "@rollup/rollup-linux-loong64-gnu": "4.62.2", - "@rollup/rollup-linux-loong64-musl": "4.62.2", - "@rollup/rollup-linux-ppc64-gnu": "4.62.2", - "@rollup/rollup-linux-ppc64-musl": "4.62.2", - "@rollup/rollup-linux-riscv64-gnu": "4.62.2", - "@rollup/rollup-linux-riscv64-musl": "4.62.2", - "@rollup/rollup-linux-s390x-gnu": "4.62.2", - "@rollup/rollup-linux-x64-gnu": "4.62.2", - "@rollup/rollup-linux-x64-musl": "4.62.2", - "@rollup/rollup-openbsd-x64": "4.62.2", - "@rollup/rollup-openharmony-arm64": "4.62.2", - "@rollup/rollup-win32-arm64-msvc": "4.62.2", - "@rollup/rollup-win32-ia32-msvc": "4.62.2", - "@rollup/rollup-win32-x64-gnu": "4.62.2", - "@rollup/rollup-win32-x64-msvc": "4.62.2", - "fsevents": "~2.3.2" - } - }, - "node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", - "dev": true, - "license": "MIT" - }, - "node_modules/strip-literal": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", - "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/supports-color": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", - "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinypool": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", - "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD", - "optional": true - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unenv": { - "version": "2.0.0-rc.24", - "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", - "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pathe": "^2.0.3" - } - }, - "node_modules/vite": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", - "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.27.0 || ^0.28.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.7.tgz", - "integrity": "sha512-KrxIJ62Fd89gfysR4WotlgZABiz2dqFPgqGzX7s+CwsqLFomRH7777ZcrOD6+WVAh7khPQP41A+BKbpcJFrdEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.7", - "@vitest/mocker": "3.2.7", - "@vitest/pretty-format": "^3.2.7", - "@vitest/runner": "3.2.7", - "@vitest/snapshot": "3.2.7", - "@vitest/spy": "3.2.7", - "@vitest/utils": "3.2.7", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.7", - "@vitest/ui": "3.2.7", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/debug": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrangler": { - "version": "4.107.0", - "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.107.0.tgz", - "integrity": "sha512-fw69ThymNitZ0oIEBU2yNeq3kK59UKz/jyA3udwRrQIAIsxX57q5qLOpPTN7qc5t8n9pnUeofe0uxtMuhQZW8w==", - "dev": true, - "license": "MIT OR Apache-2.0", - "dependencies": { - "@cloudflare/kv-asset-handler": "0.5.0", - "@cloudflare/unenv-preset": "2.16.1", - "blake3-wasm": "2.1.5", - "esbuild": "0.28.1", - "miniflare": "4.20260701.0", - "path-to-regexp": "6.3.0", - "unenv": "2.0.0-rc.24", - "workerd": "1.20260701.1" - }, - "bin": { - "cf-wrangler": "bin/cf-wrangler.js", - "wrangler": "bin/wrangler.js", - "wrangler2": "bin/wrangler.js" - }, - "engines": { - "node": ">=22.0.0" - }, - "optionalDependencies": { - "fsevents": "2.3.3" - }, - "peerDependencies": { - "@cloudflare/workers-types": "^4.20260701.1" - }, - "peerDependenciesMeta": { - "@cloudflare/workers-types": { - "optional": true - } - } - }, - "node_modules/wrangler/node_modules/@cloudflare/unenv-preset": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.16.1.tgz", - "integrity": "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw==", - "dev": true, - "license": "MIT OR Apache-2.0", - "peerDependencies": { - "unenv": "2.0.0-rc.24", - "workerd": ">1.20260305.0 <2.0.0-0" - }, - "peerDependenciesMeta": { - "workerd": { - "optional": true - } - } - }, - "node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-64": { - "version": "1.20260701.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260701.1.tgz", - "integrity": "sha512-Zd9Y1bah6DwwBN2RW8vJohffQrIUazb8UXnqSNecOxM+jJLhUuvv5IOG8dbHcV83TyZAubea6gsQXo2yH1lDdw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-arm64": { - "version": "1.20260701.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260701.1.tgz", - "integrity": "sha512-yBLsjS1qCWqFyCY37qRUrYfzHHvMGvjh8zRKJ6MvUivYDhkZTzqduppK38FoqYvayLJ5KbcxH7zo5rkxGqbsaA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/wrangler/node_modules/@cloudflare/workerd-linux-64": { - "version": "1.20260701.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260701.1.tgz", - "integrity": "sha512-vMfqSIMfoo4xmZXEuUVqLpSFS921YKjiR9q7kDXPi6Vld1PK74UHg9LZuBavT2KSyemHUCTpj9y/4JSYOEyQbQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/wrangler/node_modules/@cloudflare/workerd-linux-arm64": { - "version": "1.20260701.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260701.1.tgz", - "integrity": "sha512-HRfwbKU2pK44V2NhoM0+iH0JJSj7nQ9Wv13ifIiGYCmTtDL8/zKtEhX7kQ3D4Vy/Cpjhttl0FkfqXj1aqLDPPg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/wrangler/node_modules/@cloudflare/workerd-windows-64": { - "version": "1.20260701.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260701.1.tgz", - "integrity": "sha512-ngxCiIN9s/fM2o1IBMD0o1/mcXrv2NJVdyznh51UH8sQuvrTrXvV2nM0Uj/qU2wMwF6prgNBcdcd7AZeZGiBQA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", - "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-darwin-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", - "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", - "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", - "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", - "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", - "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", - "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", - "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", - "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", - "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linux-arm": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", - "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linux-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", - "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linux-s390x": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", - "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linux-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", - "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", - "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", - "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-wasm32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", - "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.7.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-win32-ia32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", - "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-win32-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", - "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/miniflare": { - "version": "4.20260701.0", - "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260701.0.tgz", - "integrity": "sha512-L6eAAi6IKtyb/7J6L+YsH2vb1yBrJWKRXI293JYDiMl70+6nncdAgigex58w6WBd+CwvdMsqOyNyGs95Op5gWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "0.8.1", - "sharp": "0.34.5", - "undici": "7.28.0", - "workerd": "1.20260701.1", - "ws": "8.21.0", - "youch": "4.1.0-beta.10" - }, - "bin": { - "miniflare": "bootstrap.js" - }, - "engines": { - "node": ">=22.0.0" - } - }, - "node_modules/wrangler/node_modules/sharp": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", - "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@img/colour": "^1.0.0", - "detect-libc": "^2.1.2", - "semver": "^7.7.3" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.5", - "@img/sharp-darwin-x64": "0.34.5", - "@img/sharp-libvips-darwin-arm64": "1.2.4", - "@img/sharp-libvips-darwin-x64": "1.2.4", - "@img/sharp-libvips-linux-arm": "1.2.4", - "@img/sharp-libvips-linux-arm64": "1.2.4", - "@img/sharp-libvips-linux-ppc64": "1.2.4", - "@img/sharp-libvips-linux-riscv64": "1.2.4", - "@img/sharp-libvips-linux-s390x": "1.2.4", - "@img/sharp-libvips-linux-x64": "1.2.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", - "@img/sharp-libvips-linuxmusl-x64": "1.2.4", - "@img/sharp-linux-arm": "0.34.5", - "@img/sharp-linux-arm64": "0.34.5", - "@img/sharp-linux-ppc64": "0.34.5", - "@img/sharp-linux-riscv64": "0.34.5", - "@img/sharp-linux-s390x": "0.34.5", - "@img/sharp-linux-x64": "0.34.5", - "@img/sharp-linuxmusl-arm64": "0.34.5", - "@img/sharp-linuxmusl-x64": "0.34.5", - "@img/sharp-wasm32": "0.34.5", - "@img/sharp-win32-arm64": "0.34.5", - "@img/sharp-win32-ia32": "0.34.5", - "@img/sharp-win32-x64": "0.34.5" - } - }, - "node_modules/wrangler/node_modules/undici": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz", - "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/wrangler/node_modules/workerd": { - "version": "1.20260701.1", - "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260701.1.tgz", - "integrity": "sha512-uF813NG09JwNRRUfJ0zBomyTslSPM810dMj9LVvkQ7RAkLrQLzAlPU8Xh/3dIqZDo2bfd7tChbf2PtqLRARRJQ==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "bin": { - "workerd": "bin/workerd" - }, - "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "@cloudflare/workerd-darwin-64": "1.20260701.1", - "@cloudflare/workerd-darwin-arm64": "1.20260701.1", - "@cloudflare/workerd-linux-64": "1.20260701.1", - "@cloudflare/workerd-linux-arm64": "1.20260701.1", - "@cloudflare/workerd-windows-64": "1.20260701.1" - } - }, - "node_modules/wrangler/node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/youch": { - "version": "4.1.0-beta.10", - "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz", - "integrity": "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@poppinss/colors": "^4.1.5", - "@poppinss/dumper": "^0.6.4", - "@speed-highlight/core": "^1.2.7", - "cookie": "^1.0.2", - "youch-core": "^0.3.3" - } - }, - "node_modules/youch-core": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", - "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@poppinss/exception": "^1.2.2", - "error-stack-parser-es": "^1.0.5" - } - } - } -} diff --git a/packages/data-tables-worker/package.json b/packages/data-tables-worker/package.json deleted file mode 100644 index b13e458ac..000000000 --- a/packages/data-tables-worker/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "data-tables-worker", - "version": "0.0.0", - "private": true, - "scripts": { - "dev": "wrangler dev", - "start": "wrangler dev", - "deploy": "wrangler deploy --minify", - "test": "vitest run", - "test:watch": "vitest", - "cf-typegen": "wrangler types" - }, - "dependencies": { - "hono": "^4.7.11", - "hyparquet": "^1.26.2" - }, - "devDependencies": { - "typescript": "^5.5.2", - "vitest": "^3.2.4", - "wrangler": "^4.19.1" - } -} diff --git a/packages/data-tables-worker/src/engine/asyncBuffer.ts b/packages/data-tables-worker/src/engine/asyncBuffer.ts deleted file mode 100644 index 7f0e2d7ed..000000000 --- a/packages/data-tables-worker/src/engine/asyncBuffer.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { AsyncBuffer, cachedAsyncBuffer } from "hyparquet"; -import { ByteBudgetCache, createBlockReader } from "./blockReader"; - -export const PUBLIC_UPLOADS_BASE = "https://uploads.seasketch.org"; - -/** Raw parquet bytes, keyed by file version. Persists for the isolate lifetime. */ -const BLOCK_MEMORY_BUDGET = 32 * 1024 * 1024; -const blockMemory = new ByteBudgetCache(BLOCK_MEMORY_BUDGET); - -interface FileStat { - byteLength: number; - etag: string; - usePublicUploads: boolean; -} - -/** Avoid a repeated R2 head() within a warm isolate. Table paths are - * versioned, so etag/byteLength never change for a given key. */ -const statCache = new Map(); - -async function getFileStat( - bucket: R2Bucket, - key: string, - dev: boolean -): Promise { - const cached = statCache.get(key); - if (cached) { - return cached; - } - - let stat: FileStat | null = null; - if (!dev) { - const head = await bucket.head(key); - if (head) { - stat = { - byteLength: head.size, - etag: head.httpEtag, - usePublicUploads: false, - }; - } - } - if (!stat) { - const probe = await probePublicUploads(key); - if (probe) { - stat = { ...probe, usePublicUploads: true }; - } - } - if (stat) { - if (statCache.size >= 500) { - statCache.clear(); - } - statCache.set(key, stat); - } - return stat; -} - -async function probePublicUploads( - key: string -): Promise<{ byteLength: number; etag: string } | null> { - const probe = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`, { - headers: { Range: "bytes=0-0" }, - }); - if (!probe.ok) { - return null; - } - const contentRange = probe.headers.get("content-range") || ""; - const byteLength = Number(contentRange.split("/")[1] || 0); - const etag = probe.headers.get("etag") || ""; - if (!byteLength) { - return null; - } - return { byteLength, etag }; -} - -async function fetchPublicUploadsRange( - key: string, - start: number, - rangeEnd: number -): Promise { - const res = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`, { - headers: { Range: `bytes=${start}-${rangeEnd - 1}` }, - }); - if (!res.ok) { - throw new Error( - `Range request for ${key} failed with status ${res.status}` - ); - } - return await res.arrayBuffer(); -} - -async function fetchPublicUploadsObject( - key: string -): Promise { - const res = await fetch(`${PUBLIC_UPLOADS_BASE}/${key}`); - if (!res.ok) { - return null; - } - return await res.arrayBuffer(); -} - -export interface R2FileSource { - buffer: AsyncBuffer; - byteLength: number; - etag: string; -} - -export interface OpenFileOptions { - bucket: R2Bucket; - key: string; - /** When true, fetch from uploads.seasketch.org instead of the R2 binding. */ - dev: boolean; -} - -/** - * Opens a parquet file as a hyparquet AsyncBuffer. Byte-range reads are - * block-aligned and cached in isolate memory (keyed by etag), so warm - * isolates serve repeat queries without contacting R2. - */ -export async function openR2File( - options: OpenFileOptions -): Promise { - const { bucket, key, dev } = options; - - const stat = await getFileStat(bucket, key, dev); - if (!stat) { - return null; - } - const { byteLength, etag, usePublicUploads } = stat; - - const slice = createBlockReader({ - byteLength, - cacheId: `${key}@${etag}`, - memory: blockMemory, - fetchRange: async (start, end) => { - if (usePublicUploads) { - return fetchPublicUploadsRange(key, start, end); - } - const body = await bucket.get(key, { - range: { offset: start, length: end - start }, - }); - if (!body) { - throw new Error(`Range request to R2 for ${key} returned no body`); - } - return await body.arrayBuffer(); - }, - }); - - const buffer = cachedAsyncBuffer({ byteLength, slice }); - return { buffer, byteLength, etag }; -} - -/** Fetches a whole small object from R2, e.g. column-stats.json. */ -export async function getR2Object( - options: Pick -): Promise { - const { bucket, key, dev } = options; - if (dev) { - return fetchPublicUploadsObject(key); - } - const body = await bucket.get(key); - if (body) { - return await body.arrayBuffer(); - } - return fetchPublicUploadsObject(key); -} diff --git a/packages/data-tables-worker/src/engine/blockReader.ts b/packages/data-tables-worker/src/engine/blockReader.ts deleted file mode 100644 index 065ffdadd..000000000 --- a/packages/data-tables-worker/src/engine/blockReader.ts +++ /dev/null @@ -1,139 +0,0 @@ -/** - * Block-aligned range reader with an isolate-global in-memory cache. - * - * Parquet reads many small, overlapping byte ranges. Rounding reads up to - * fixed-size blocks and caching those blocks in isolate memory means a second - * query against the same table (even with different filters) reuses raw bytes - * without another R2 round trip, as long as the Worker isolate is still warm. - */ - -export const DEFAULT_BLOCK_SIZE = 512 * 1024; - -/** Simple LRU keyed by string with a total-bytes budget. */ -export class ByteBudgetCache { - private map = new Map(); - private bytes = 0; - - constructor(private maxBytes: number) {} - - get(key: string): T | undefined { - const entry = this.map.get(key); - if (entry !== undefined) { - this.map.delete(key); - this.map.set(key, entry); - } - return entry?.value; - } - - set(key: string, value: T, bytes?: number): void { - const size = bytes ?? (value as unknown as ArrayBuffer).byteLength; - const existing = this.map.get(key); - if (existing) { - this.bytes -= existing.bytes; - this.map.delete(key); - } - this.map.set(key, { value, bytes: size }); - this.bytes += size; - for (const [oldKey, oldEntry] of this.map) { - if (this.bytes <= this.maxBytes) { - break; - } - this.map.delete(oldKey); - this.bytes -= oldEntry.bytes; - } - } - - get totalBytes(): number { - return this.bytes; - } -} - -/** Groups sorted block indices into contiguous [first, last] runs. */ -export function coalesceRuns(indices: number[]): Array<[number, number]> { - const runs: Array<[number, number]> = []; - for (const index of indices) { - const last = runs[runs.length - 1]; - if (last && index === last[1] + 1) { - last[1] = index; - } else { - runs.push([index, index]); - } - } - return runs; -} - -export interface BlockReaderOptions { - byteLength: number; - blockSize?: number; - /** Unique per file version (e.g. `${key}@${etag}`). */ - cacheId: string; - memory: ByteBudgetCache; - fetchRange(start: number, end: number): Promise; -} - -export function createBlockReader(options: BlockReaderOptions) { - const { - byteLength, - blockSize = DEFAULT_BLOCK_SIZE, - cacheId, - memory, - fetchRange, - } = options; - - const memoryKey = (index: number) => `${cacheId}#${blockSize}#${index}`; - - return async (start: number, end?: number): Promise => { - const rangeEnd = Math.min(end === undefined ? byteLength : end, byteLength); - if (rangeEnd <= start) { - return new ArrayBuffer(0); - } - - const firstBlock = Math.floor(start / blockSize); - const lastBlock = Math.floor((rangeEnd - 1) / blockSize); - const blocks = new Map(); - let missing: number[] = []; - - for (let i = firstBlock; i <= lastBlock; i++) { - const cached = memory.get(memoryKey(i)); - if (cached) { - blocks.set(i, cached); - } else { - missing.push(i); - } - } - - if (missing.length > 0) { - await Promise.all( - coalesceRuns(missing).map(async ([runFirst, runLast]) => { - const runStart = runFirst * blockSize; - const runEnd = Math.min((runLast + 1) * blockSize, byteLength); - const data = await fetchRange(runStart, runEnd); - for (let i = runFirst; i <= runLast; i++) { - const offset = (i - runFirst) * blockSize; - const block = data.slice( - offset, - Math.min(offset + blockSize, data.byteLength) - ); - blocks.set(i, block); - memory.set(memoryKey(i), block); - } - }) - ); - } - - const out = new Uint8Array(rangeEnd - start); - for (let i = firstBlock; i <= lastBlock; i++) { - const block = blocks.get(i)!; - const blockStart = i * blockSize; - const from = Math.max(start, blockStart); - const to = Math.min(rangeEnd, blockStart + block.byteLength); - if (to > from) { - out.set( - new Uint8Array(block, from - blockStart, to - from), - from - start - ); - } - } - return out.buffer; - }; -} diff --git a/packages/data-tables-worker/src/engine/execute.ts b/packages/data-tables-worker/src/engine/execute.ts deleted file mode 100644 index aadeb6bfe..000000000 --- a/packages/data-tables-worker/src/engine/execute.ts +++ /dev/null @@ -1,372 +0,0 @@ -import { AsyncBuffer, FileMetaData, parquetReadObjects } from "hyparquet"; -import { parquetReadColumn } from "hyparquet/src/read.js"; -import { Aggregation, ParsedQuery, QueryError } from "../params"; -import { ByteBudgetCache } from "./blockReader"; -import { - ColumnKind, - CompiledFilter, - QueryPlan, - normalizeValue, -} from "./plan"; - -/** - * Decoded column arrays for a warm isolate. Parquet decode is CPU-heavy; - * caching by file version + column + row span lets filter sweeps (changing - * species/year against the same columns) skip decode on repeat queries. - * Identical queries should hit HTTP/Workers Cache instead and never reach here. - */ -const DECODED_COLUMN_BUDGET = 48 * 1024 * 1024; -const decodedColumns = new ByteBudgetCache(DECODED_COLUMN_BUDGET); - -function estimateDecodedBytes(data: unknown[]): number { - let bytes = 0; - for (const value of data) { - bytes += typeof value === "string" ? 16 + value.length * 2 : 16; - } - return bytes; -} - -export interface QueryResult { - /** Present for raw (non-aggregated) queries */ - rows?: Record[]; - /** Present for aggregated queries */ - groups?: Record[]; - rowsScanned: number; - rowsMatched: number; -} - -type Row = Record; -type Primitive = string | number | boolean | null; - -function matchesFilter(raw: unknown, filter: CompiledFilter): boolean { - const value = normalizeValue(raw, filter.kind); - switch (filter.op) { - case "isNull": - return value === null; - case "notNull": - return value !== null; - case "eq": - return value !== null && value === filter.value; - case "neq": - return value !== null && value !== filter.value; - case "in": - return value !== null && filter.values!.includes(value); - case "gt": - return value !== null && value > filter.value!; - case "gte": - return value !== null && value >= filter.value!; - case "lt": - return value !== null && value < filter.value!; - case "lte": - return value !== null && value <= filter.value!; - } -} - -function makePredicate(filters: CompiledFilter[]): (row: Row) => boolean { - if (filters.length === 0) { - return () => true; - } - return (row: Row) => { - for (const filter of filters) { - if (!matchesFilter(row[filter.column], filter)) return false; - } - return true; - }; -} - -/** Converts values to JSON-serializable output (BigInt, Date handling). */ -function jsonValue(value: unknown): unknown { - if (typeof value === "bigint") { - return Number(value); - } - if (value instanceof Date) { - return value.toISOString(); - } - if (value instanceof Uint8Array) { - return new TextDecoder().decode(value); - } - if (value === undefined) { - return null; - } - return value; -} - -function jsonRow(row: Row): Record { - const out: Record = {}; - for (const key of Object.keys(row)) { - out[key] = jsonValue(row[key]); - } - return out; -} - -interface GroupAccumulator { - keyValues: unknown[]; - rowCount: number; - valueCount: number; - sum: number; - min: Primitive; - max: Primitive; - /** buffered values for median */ - values?: number[]; -} - -function compareValues(a: unknown, b: unknown): number { - if (a === null || a === undefined) return b === null || b === undefined ? 0 : 1; - if (b === null || b === undefined) return -1; - if (typeof a === "number" && typeof b === "number") return a - b; - return String(a) < String(b) ? -1 : String(a) > String(b) ? 1 : 0; -} - -function median(values: number[]): number | null { - if (values.length === 0) return null; - const sorted = [...values].sort((a, b) => a - b); - const mid = Math.floor(sorted.length / 2); - return sorted.length % 2 === 1 - ? sorted[mid] - : (sorted[mid - 1] + sorted[mid]) / 2; -} - -function sortAndPage>( - items: T[], - orderBy: ParsedQuery["orderBy"], - offset: number, - limit: number | null, - validKeys: (key: string) => boolean -): T[] { - if (orderBy) { - if (!validKeys(orderBy.key)) { - throw new QueryError( - `orderBy key "${orderBy.key}" is not present in the output.` - ); - } - const dir = orderBy.direction === "desc" ? -1 : 1; - items.sort((a, b) => dir * compareValues(a[orderBy.key], b[orderBy.key])); - } - return limit === null - ? items.slice(offset) - : items.slice(offset, offset + limit); -} - -export async function executeQuery(options: { - file: AsyncBuffer; - metadata: FileMetaData; - query: ParsedQuery; - plan: QueryPlan; - /** Unique per file version (e.g. the object etag). Enables the decoded - * column cache; omit for one-shot reads. */ - cacheKey?: string; -}): Promise { - const { file, metadata, query, plan, cacheKey } = options; - const predicate = makePredicate(plan.filters); - - if (query.ops.length === 0) { - return await executeRawQuery(options, predicate); - } - - const aggColumn = query.column; - const aggKind: ColumnKind | undefined = aggColumn - ? plan.columns.get(aggColumn)?.kind - : undefined; - const needsMedian = query.ops.includes("median"); - const groups = new Map(); - let rowsScanned = 0; - let rowsMatched = 0; - - // Columnar execution: evaluate filters against just the filter columns to - // produce matched row indices, then read the remaining columns only for - // spans with matches. Avoids materializing an object per scanned row. - const readColumn = async ( - name: string, - span: { rowStart: number; rowEnd: number } - ): Promise => { - const key = cacheKey - ? `${cacheKey}#${name}#${span.rowStart}-${span.rowEnd}` - : null; - if (key) { - const cached = decodedColumns.get(key); - if (cached) return cached; - } - const data = (await parquetReadColumn({ - file, - metadata, - columns: [name], - rowStart: span.rowStart, - rowEnd: span.rowEnd, - })) as unknown[]; - if (key) { - decodedColumns.set(key, data, estimateDecodedBytes(data)); - } - return data; - }; - - for (const span of plan.spans) { - const spanRows = span.rowEnd - span.rowStart; - rowsScanned += spanRows; - - const filterColumns = new Map(); - await Promise.all( - [...new Set(plan.filters.map((f) => f.column))].map(async (name) => { - filterColumns.set(name, await readColumn(name, span)); - }) - ); - - const matched: number[] = []; - for (let i = 0; i < spanRows; i++) { - let ok = true; - for (const filter of plan.filters) { - if (!matchesFilter(filterColumns.get(filter.column)![i], filter)) { - ok = false; - break; - } - } - if (ok) matched.push(i); - } - rowsMatched += matched.length; - if (matched.length === 0) continue; - - const otherColumns = new Set(query.groupBy); - if (aggColumn) otherColumns.add(aggColumn); - const columnData = new Map(filterColumns); - await Promise.all( - [...otherColumns] - .filter((name) => !columnData.has(name)) - .map(async (name) => { - columnData.set(name, await readColumn(name, span)); - }) - ); - - const groupByData = query.groupBy.map((col) => columnData.get(col)!); - const aggData = aggColumn ? columnData.get(aggColumn)! : null; - - for (const i of matched) { - const keyValues = groupByData.map((data) => jsonValue(data[i])); - const key = JSON.stringify(keyValues); - let group = groups.get(key); - if (!group) { - group = { - keyValues, - rowCount: 0, - valueCount: 0, - sum: 0, - min: null, - max: null, - values: needsMedian ? [] : undefined, - }; - groups.set(key, group); - } - group.rowCount++; - - if (aggData) { - const value = normalizeValue(aggData[i], aggKind || "string"); - if (value !== null) { - group.valueCount++; - if (typeof value === "number") { - group.sum += value; - group.values?.push(value); - } - if (group.min === null || compareValues(value, group.min) < 0) { - group.min = value; - } - if (group.max === null || compareValues(value, group.max) > 0) { - group.max = value; - } - } - } - } - } - - const output: Record[] = []; - for (const group of groups.values()) { - const entry: Record = {}; - query.groupBy.forEach((col, i) => { - entry[col] = group.keyValues[i]; - }); - for (const op of query.ops) { - entry[op] = aggregateValue(op, group, aggColumn !== null); - } - output.push(entry); - } - - const validKeys = (key: string) => - query.groupBy.includes(key) || (query.ops as string[]).includes(key); - const paged = sortAndPage( - output, - query.orderBy, - query.offset, - query.limit, - validKeys - ); - - return { groups: paged, rowsScanned, rowsMatched }; -} - -function aggregateValue( - op: Aggregation, - group: GroupAccumulator, - hasColumn: boolean -): unknown { - switch (op) { - case "count": - // With an aggregation column, count non-null values (like SQL - // COUNT(col)); otherwise count matching rows (COUNT(*)). - return hasColumn ? group.valueCount : group.rowCount; - case "sum": - return group.valueCount > 0 ? group.sum : null; - case "mean": - return group.valueCount > 0 ? group.sum / group.valueCount : null; - case "min": - return group.min; - case "max": - return group.max; - case "median": - return median(group.values || []); - } -} - -async function executeRawQuery( - options: { - file: AsyncBuffer; - metadata: FileMetaData; - query: ParsedQuery; - plan: QueryPlan; - }, - predicate: (row: Row) => boolean -): Promise { - const { file, metadata, query, plan } = options; - const matched: Record[] = []; - let rowsScanned = 0; - let rowsMatched = 0; - // Without an orderBy we can stop reading as soon as the page is filled. - const target = query.orderBy - ? Infinity - : query.offset + (query.limit ?? Infinity); - - for (const span of plan.spans) { - const rows = (await parquetReadObjects({ - file, - metadata, - columns: plan.neededColumns, - rowStart: span.rowStart, - rowEnd: span.rowEnd, - })) as Row[]; - rowsScanned += rows.length; - for (const row of rows) { - if (!predicate(row)) continue; - rowsMatched++; - if (matched.length < target) { - matched.push(jsonRow(row)); - } - } - if (matched.length >= target) break; - } - - const columnNames = new Set(plan.columns.keys()); - const paged = sortAndPage( - matched, - query.orderBy, - query.offset, - query.limit, - (key) => columnNames.has(key) - ); - return { rows: paged, rowsScanned, rowsMatched }; -} diff --git a/packages/data-tables-worker/src/engine/plan.ts b/packages/data-tables-worker/src/engine/plan.ts deleted file mode 100644 index 7f1ce3989..000000000 --- a/packages/data-tables-worker/src/engine/plan.ts +++ /dev/null @@ -1,404 +0,0 @@ -import { AsyncBuffer, FileMetaData, SchemaElement, parquetSchema } from "hyparquet"; -import { - hashParquetValue, - readBloomFilter, - sbbfContains, -} from "hyparquet/src/bloom.js"; -import { ParsedQuery, QueryError, RawFilter } from "../params"; - -export type ColumnKind = "string" | "number" | "boolean" | "timestamp"; - -export interface ColumnInfo { - name: string; - kind: ColumnKind; -} - -/** A filter with its value(s) coerced to the column's type. */ -export interface CompiledFilter extends Omit { - kind: ColumnKind; - value?: string | number | boolean; - values?: (string | number | boolean)[]; -} - -export interface ReadSpan { - /** Global row index (inclusive) */ - rowStart: number; - /** Global row index (exclusive) */ - rowEnd: number; -} - -export interface QueryPlan { - columns: Map; - filters: CompiledFilter[]; - /** Columns that must be read from the parquet file. undefined = all. */ - neededColumns: string[] | undefined; - spans: ReadSpan[]; - rowGroupsTotal: number; - rowGroupsScanned: number; - totalRows: number; -} - -function kindForSchemaElement(element: { - type?: string; - converted_type?: string; - logical_type?: { type?: string }; -}): ColumnKind { - const logical = element.logical_type?.type; - if (logical === "STRING" || element.converted_type === "UTF8") { - return "string"; - } - if ( - logical === "DATE" || - logical === "TIMESTAMP" || - element.converted_type === "DATE" || - element.converted_type === "TIMESTAMP_MILLIS" || - element.converted_type === "TIMESTAMP_MICROS" || - element.type === "INT96" - ) { - return "timestamp"; - } - if (element.type === "BOOLEAN") { - return "boolean"; - } - if ( - element.type === "INT32" || - element.type === "INT64" || - element.type === "FLOAT" || - element.type === "DOUBLE" || - element.converted_type === "DECIMAL" - ) { - return "number"; - } - // Unrecognized physical types (nested, byte arrays without UTF8, etc.) - // are treated as strings for equality purposes. - return "string"; -} - -export function columnsFromMetadata( - metadata: FileMetaData -): Map { - const columns = new Map(); - const schema = parquetSchema(metadata); - for (const child of schema.children) { - const name = child.element.name; - columns.set(name, { name, kind: kindForSchemaElement(child.element) }); - } - return columns; -} - -function unknownColumnError( - name: string, - columns: Map -): QueryError { - return new QueryError(`Unknown column "${name}".`, 400, { - validColumns: [...columns.values()].map((c) => ({ - name: c.name, - type: c.kind, - })), - }); -} - -function coerceValue( - raw: string, - column: ColumnInfo -): string | number | boolean { - switch (column.kind) { - case "number": { - const n = Number(raw); - if (raw.trim() === "" || Number.isNaN(n)) { - throw new QueryError( - `Invalid numeric value "${raw}" for column "${column.name}".` - ); - } - return n; - } - case "boolean": { - if (raw === "true" || raw === "1") return true; - if (raw === "false" || raw === "0") return false; - throw new QueryError( - `Invalid boolean value "${raw}" for column "${column.name}". Use true or false.` - ); - } - case "timestamp": { - const t = Date.parse(raw); - if (Number.isNaN(t)) { - throw new QueryError( - `Invalid date value "${raw}" for column "${column.name}". Use an ISO 8601 date.` - ); - } - // timestamps are compared as epoch millis - return t; - } - default: - return raw; - } -} - -const COMPARISON_OPS = new Set(["gt", "gte", "lt", "lte"]); - -export function compileFilters( - filters: RawFilter[], - columns: Map -): CompiledFilter[] { - return filters.map((filter) => { - const column = columns.get(filter.column); - if (!column) { - throw unknownColumnError(filter.column, columns); - } - if ( - COMPARISON_OPS.has(filter.op) && - column.kind !== "number" && - column.kind !== "timestamp" - ) { - throw new QueryError( - `Operator "${filter.op}" is only supported for numeric or date columns; "${column.name}" is a ${column.kind} column.` - ); - } - const compiled: CompiledFilter = { - column: filter.column, - op: filter.op, - kind: column.kind, - }; - if (filter.value !== undefined) { - compiled.value = coerceValue(filter.value, column); - } - if (filter.values !== undefined) { - compiled.values = filter.values.map((v) => coerceValue(v, column)); - } - return compiled; - }); -} - -/** - * Normalizes a runtime or statistics value into something directly comparable - * with compiled filter values (number | string | boolean), or null. - */ -export function normalizeValue( - value: unknown, - kind: ColumnKind -): string | number | boolean | null { - if (value === null || value === undefined) { - return null; - } - if (typeof value === "bigint") { - return Number(value); - } - if (value instanceof Date) { - return value.getTime(); - } - if (kind === "number" && typeof value !== "number") { - const n = Number(value); - return Number.isNaN(n) ? null : n; - } - if (kind === "timestamp" && typeof value === "number") { - return value; - } - if (value instanceof Uint8Array) { - return new TextDecoder().decode(value); - } - return value as string | number | boolean; -} - -/** - * Bloom-filter pruning for eq/in filters. Statistics min/max rarely help for - * high-cardinality string columns (e.g. species codes span the alphabet in - * every row group), but split-block bloom filters written by DuckDB prove a - * value's *absence*, letting us skip whole row groups. Filters are tiny - * (tens to hundreds of bytes) and live next to the footer, so reads are - * served from the cached tail blocks. - * - * Returns false if a bloom filter proves the row group cannot match. - */ -async function rowGroupPassesBloomFilters( - file: AsyncBuffer, - rowGroup: FileMetaData["row_groups"][number], - filters: CompiledFilter[], - schemaElements: Map -): Promise { - for (const filter of filters) { - if (filter.op !== "eq" && filter.op !== "in") continue; - const element = schemaElements.get(filter.column); - if (!element) continue; - const meta = rowGroup.columns.find( - (c) => c.meta_data?.path_in_schema.join(".") === filter.column - )?.meta_data; - if (!meta?.bloom_filter_offset || !meta.bloom_filter_length) continue; - - const values = filter.op === "eq" ? [filter.value!] : filter.values!; - const hashes = values.map((v) => hashParquetValue(v, element)); - // undefined = ambiguous type mapping; the bloom filter can't help. - if (hashes.some((h) => h === undefined)) continue; - - const start = Number(meta.bloom_filter_offset); - const buffer = await file.slice(start, start + meta.bloom_filter_length); - const bloom = readBloomFilter({ view: new DataView(buffer), offset: 0 }); - if (!bloom) continue; - if (hashes.every((h) => !sbbfContains(bloom.blocks, h!))) { - return false; - } - } - return true; -} - -/** - * Tests whether a row group could possibly contain rows matching the filter, - * based on column chunk statistics. Conservative: returns true when unsure. - */ -function rowGroupMayMatch( - filter: CompiledFilter, - stats: - | { - min_value?: unknown; - max_value?: unknown; - null_count?: bigint | number; - } - | undefined, - rowCount: number -): boolean { - if (!stats) return true; - const nullCount = - stats.null_count === undefined ? undefined : Number(stats.null_count); - - if (filter.op === "isNull") { - return nullCount === undefined || nullCount > 0; - } - if (filter.op === "notNull") { - return nullCount === undefined || nullCount < rowCount; - } - - const min = normalizeValue(stats.min_value, filter.kind); - const max = normalizeValue(stats.max_value, filter.kind); - if (min === null || max === null) return true; - - switch (filter.op) { - case "eq": - return filter.value! >= min && filter.value! <= max; - case "in": - return filter.values!.some((v) => v >= min && v <= max); - case "gt": - return max > filter.value!; - case "gte": - return max >= filter.value!; - case "lt": - return min < filter.value!; - case "lte": - return min <= filter.value!; - default: - // neq can only be pruned when min === max === value; rarely useful - return !( - filter.op === "neq" && - min === max && - min === filter.value - ); - } -} - -export async function planQuery( - metadata: FileMetaData, - query: ParsedQuery, - /** When provided, bloom filters are consulted to prune row groups that - * pass the min/max statistics check. */ - file?: AsyncBuffer -): Promise { - const columns = columnsFromMetadata(metadata); - - // Validate built-in column references - for (const name of query.groupBy) { - if (!columns.has(name)) { - throw unknownColumnError(name, columns); - } - } - if (query.column !== null) { - if (!columns.has(query.column)) { - throw unknownColumnError(query.column, columns); - } - const kind = columns.get(query.column)!.kind; - const numericOps = query.ops.filter( - (op) => op !== "count" && op !== "min" && op !== "max" - ); - if (numericOps.length > 0 && kind !== "number" && kind !== "timestamp") { - throw new QueryError( - `Aggregations ${numericOps.join(", ")} require a numeric column; "${ - query.column - }" is a ${kind} column.` - ); - } - } - - const filters = compileFilters(query.filters, columns); - - // Determine which columns need to be read - let neededColumns: string[] | undefined; - if (query.ops.length > 0) { - const needed = new Set(query.groupBy); - if (query.column) needed.add(query.column); - for (const f of filters) needed.add(f.column); - neededColumns = [...needed]; - } else { - // raw row output returns all columns - neededColumns = undefined; - } - - // Row group pruning, first via column chunk statistics (free -- already in - // the footer), then via bloom filters for surviving row groups. - const statsPass = metadata.row_groups.map((rowGroup) => { - const numRows = Number(rowGroup.num_rows); - if (numRows === 0) return false; - for (const filter of filters) { - const chunk = rowGroup.columns.find( - (c) => c.meta_data?.path_in_schema.join(".") === filter.column - ); - if (!chunk?.meta_data) continue; - if (!rowGroupMayMatch(filter, chunk.meta_data.statistics, numRows)) { - return false; - } - } - return true; - }); - - let mayMatch = statsPass; - const hasBloomEligibleFilter = filters.some( - (f) => f.op === "eq" || f.op === "in" - ); - if (file && hasBloomEligibleFilter && statsPass.some((p) => p)) { - const schemaElements = new Map(); - for (const child of parquetSchema(metadata).children) { - schemaElements.set(child.element.name, child.element); - } - mayMatch = await Promise.all( - metadata.row_groups.map((rowGroup, i) => - statsPass[i] - ? rowGroupPassesBloomFilters(file, rowGroup, filters, schemaElements) - : Promise.resolve(false) - ) - ); - } - - const spans: ReadSpan[] = []; - let rowStart = 0; - let scanned = 0; - metadata.row_groups.forEach((rowGroup, i) => { - const numRows = Number(rowGroup.num_rows); - if (mayMatch[i]) { - scanned++; - const last = spans[spans.length - 1]; - if (last && last.rowEnd === rowStart) { - // merge contiguous row groups into a single read - last.rowEnd = rowStart + numRows; - } else { - spans.push({ rowStart, rowEnd: rowStart + numRows }); - } - } - rowStart += numRows; - }); - - return { - columns, - filters, - neededColumns, - spans, - rowGroupsTotal: metadata.row_groups.length, - rowGroupsScanned: scanned, - totalRows: Number(metadata.num_rows), - }; -} diff --git a/packages/data-tables-worker/src/index.ts b/packages/data-tables-worker/src/index.ts deleted file mode 100644 index 07b25e342..000000000 --- a/packages/data-tables-worker/src/index.ts +++ /dev/null @@ -1,319 +0,0 @@ -import { Context, Hono } from "hono"; -import { cors } from "hono/cors"; -import { FileMetaData, parquetMetadataAsync } from "hyparquet"; -import { - canonicalQueryString, - parseQueryParams, - QueryError, -} from "./params"; -import { getR2Object, openR2File } from "./engine/asyncBuffer"; -import { planQuery } from "./engine/plan"; -import { executeQuery } from "./engine/execute"; -import { queryUiHtml } from "./ui/html"; - -/** - * data-tables-worker - * - * Serves cacheable GET queries over parquet data tables stored in R2, e.g. - * - * GET /projects/{slug}/public/{sourceUuid}/dataTables/{uploadId}/query - * ?groupBy=site&op=mean&column=count&q.year=2018&q.classcode=PYCHEL - * - * Content negotiation: text/html requests receive an interactive query UI; - * application/json (or f=json) receives query results. - */ - -type Bindings = { Bindings: Env; Variables: { requestStart: number } }; - -const app = new Hono(); - -/** Browser cache lifetime for query responses */ -const BROWSER_MAX_AGE = 86400; -/** CDN/edge cache lifetime. Table paths are versioned (a replacement gets a - * new uploadId directory) so long edge lifetimes are safe. Workers Cache - * (`cache.enabled` in wrangler.jsonc) serves identical GET requests from the - * edge without invoking this Worker. */ -const EDGE_MAX_AGE = 604800; - -// Registered before CORS so it captures time spent in Hono's own routing and -// middleware, not just our handler logic. -app.use("*", async (c, next) => { - c.set("requestStart", Date.now()); - await next(); -}); - -app.use( - "*", - cors({ - origin: "*", - allowMethods: ["GET", "OPTIONS"], - maxAge: 86400, - }) -); - -function isDev(env: Env): boolean { - return !!env.DEV; -} - -/** Parsed parquet footers are small (KBs) and immutable per etag, so keep - * them in isolate memory across requests. */ -const MAX_METADATA_ENTRIES = 100; -const metadataCache = new Map(); - -async function getParquetMetadata(source: { - buffer: Parameters[0]; - etag: string; -}): Promise { - const cached = metadataCache.get(source.etag); - if (cached) { - return cached; - } - const metadata = await parquetMetadataAsync(source.buffer); - if (metadataCache.size >= MAX_METADATA_ENTRIES) { - const oldest = metadataCache.keys().next().value; - if (oldest !== undefined) { - metadataCache.delete(oldest); - } - } - metadataCache.set(source.etag, metadata); - return metadata; -} - -async function makeETag(objectEtag: string, canonicalQuery: string) { - const data = new TextEncoder().encode(`${objectEtag}|${canonicalQuery}`); - const digest = await crypto.subtle.digest("SHA-1", data); - const hex = [...new Uint8Array(digest)] - .map((b) => b.toString(16).padStart(2, "0")) - .join(""); - return `"${hex}"`; -} - -/** - * Collects named phase durations and renders them as a `Server-Timing` - * header so the browser's network panel can show where server time actually - * goes -- including phases before/outside the JSON body's own `timing` - * block (cache lookups, Hono/CORS overhead, isolate cold-start work). - */ -class Timer { - private marks: Array<[string, number]> = []; - private last: number; - - constructor(start: number) { - this.last = start; - } - - mark(name: string): void { - const now = Date.now(); - this.marks.push([name, now - this.last]); - this.last = now; - } - - header(): string { - return this.marks.map(([name, dur]) => `${name};dur=${dur}`).join(", "); - } -} - -function errorResponse(error: unknown): Response { - if (error instanceof QueryError) { - return Response.json( - { error: error.message, ...error.details }, - { status: error.status } - ); - } - console.error( - JSON.stringify({ - message: "query execution failed", - error: error instanceof Error ? error.message : String(error), - stack: error instanceof Error ? error.stack : undefined, - }) - ); - return Response.json({ error: "Internal server error" }, { status: 500 }); -} - -app.get("*", async (c) => { - const url = new URL(c.req.url); - const pathname = url.pathname; - - if (pathname.endsWith("/query")) { - const tablePath = pathname.slice(1, -"/query".length); - if (!tablePath) { - return Response.json({ error: "Missing table path" }, { status: 404 }); - } - return handleQuery(c, tablePath, url); - } - - if (pathname.endsWith("/column-stats.json")) { - return handleColumnStats(c, pathname.slice(1)); - } - - if (pathname.endsWith("/data.parquet")) { - return handleParquetDownload(c, pathname.slice(1)); - } - - return Response.json( - { - error: "Not found. Query endpoint is {tablePath}/query", - }, - { status: 404 } - ); -}); - -type AppContext = Context; - -async function handleStaticObject( - c: AppContext, - key: string, - contentType: string, - downloadFilename: string -): Promise { - const dev = isDev(c.env); - const data = await getR2Object({ bucket: c.env.SSN_TILES, key, dev }); - if (!data) { - return Response.json({ error: "Not found" }, { status: 404 }); - } - return new Response(data, { - headers: { - "Content-Type": contentType, - "Content-Disposition": `attachment; filename="${downloadFilename}"`, - "Cache-Control": dev - ? "no-store" - : `public, max-age=${BROWSER_MAX_AGE}, s-maxage=${EDGE_MAX_AGE}, immutable`, - }, - }); -} - -async function handleColumnStats( - c: AppContext, - key: string -): Promise { - return handleStaticObject(c, key, "application/json", "column-stats.json"); -} - -async function handleParquetDownload( - c: AppContext, - key: string -): Promise { - return handleStaticObject(c, key, "application/octet-stream", "data.parquet"); -} - -async function handleQuery( - c: AppContext, - tablePath: string, - url: URL -): Promise { - const dev = isDev(c.env); - const timer = new Timer(c.get("requestStart")); - - let query; - try { - query = parseQueryParams(url.searchParams); - } catch (error) { - return errorResponse(error); - } - timer.mark("parse"); - - // Content negotiation: explicit f param wins, otherwise Accept header. - const accept = c.req.header("accept") || ""; - const wantsHtml = - query.format === "html" || - (query.format === null && accept.includes("text/html")); - if (wantsHtml) { - return new Response(queryUiHtml(tablePath), { - headers: { - "Content-Type": "text/html; charset=utf-8", - "Cache-Control": dev ? "no-store" : "public, max-age=300", - }, - }); - } - - const canonicalQuery = canonicalQueryString(url.searchParams); - const started = Date.now(); - try { - const source = await openR2File({ - bucket: c.env.SSN_TILES, - key: `${tablePath}/data.parquet`, - dev, - }); - timer.mark("open"); - if (!source) { - throw new QueryError( - `No data table found at "${tablePath}/data.parquet".`, - 404 - ); - } - - const metadata = await getParquetMetadata(source); - timer.mark("metadata"); - const planned = Date.now(); - const plan = await planQuery(metadata, query, source.buffer); - timer.mark("plan"); - const result = await executeQuery({ - file: source.buffer, - metadata, - query, - plan, - cacheKey: `${tablePath}@${source.etag}`, - }); - timer.mark("execute"); - const finished = Date.now(); - - const body = { - table: tablePath, - totalRows: plan.totalRows, - rowsScanned: result.rowsScanned, - rowsMatched: result.rowsMatched, - rowGroups: { - total: plan.rowGroupsTotal, - scanned: plan.rowGroupsScanned, - }, - timing: { - metadataMs: planned - started, - executeMs: finished - planned, - totalMs: finished - started, - }, - ...(result.groups !== undefined - ? { groups: result.groups } - : { rows: result.rows }), - }; - timer.mark("serialize"); - - const etag = await makeETag(source.etag, canonicalQuery); - return new Response(JSON.stringify(body), { - headers: { - "Content-Type": "application/json", - ETag: etag, - "Server-Timing": timer.header(), - Vary: "Accept", - "Cache-Control": dev - ? "no-store" - : `public, max-age=${BROWSER_MAX_AGE}, s-maxage=${EDGE_MAX_AGE}, immutable`, - }, - }); - } catch (error) { - return errorResponse(error); - } -} - -/** - * Wraps Hono's own fetch entirely, timing it from *outside* any of our - * routing/middleware. Compare `X-Worker-Wall-Ms` against the browser's TTFB: - * if they're close, the missing time is inside our JS (a hidden await); - * if this is small while TTFB is large, the gap is in Cloudflare's edge - * dispatch/network layer, outside anything our code controls. - */ -export default { - async fetch( - request: Request, - env: Env, - ctx: ExecutionContext - ): Promise { - const t0 = Date.now(); - const response = await app.fetch(request, env, ctx); - const headers = new Headers(response.headers); - headers.set("X-Worker-Wall-Ms", String(Date.now() - t0)); - return new Response(response.body, { - status: response.status, - headers, - }); - }, -}; diff --git a/packages/data-tables-worker/src/params.ts b/packages/data-tables-worker/src/params.ts deleted file mode 100644 index 615e44c34..000000000 --- a/packages/data-tables-worker/src/params.ts +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Parses query string parameters for the /query endpoint. - * - * Built-in parameters use bare names (f, groupBy, op, column, limit, offset, - * orderBy). Column filters use a `q.` prefix with PostgREST-style operators - * embedded in the value: - * - * q.year=2018 equality (bare value) - * q.year=eq.2018 equality (explicit) - * q.count=gte.5 gt / gte / lt / lte / neq - * q.observer=in.(Chad Burt,Lyal B) IN list ("quoted" items may contain commas) - * q.size=is.null / q.size=not.null null tests - * - * Repeating the same q. param ANDs the conditions together. - */ - -export type OutputFormat = "json" | "html"; - -export const AGGREGATIONS = [ - "count", - "sum", - "mean", - "min", - "max", - "median", -] as const; -export type Aggregation = (typeof AGGREGATIONS)[number]; - -export type FilterOperator = - | "eq" - | "neq" - | "gt" - | "gte" - | "lt" - | "lte" - | "in" - | "isNull" - | "notNull"; - -/** A filter as parsed from the query string, before schema-aware coercion. */ -export interface RawFilter { - column: string; - op: FilterOperator; - /** Raw string value for eq/neq/gt/gte/lt/lte. */ - value?: string; - /** Raw string values for `in`. */ - values?: string[]; -} - -export interface ParsedQuery { - /** null means "negotiate via the Accept header" */ - format: OutputFormat | null; - groupBy: string[]; - ops: Aggregation[]; - /** Column to aggregate. Required for every op except count. */ - column: string | null; - limit: number | null; - offset: number; - orderBy: { key: string; direction: "asc" | "desc" } | null; - filters: RawFilter[]; -} - -export class QueryError extends Error { - status: number; - details?: Record; - constructor( - message: string, - status = 400, - details?: Record - ) { - super(message); - this.status = status; - this.details = details; - } -} - - -const COMPARISON_PREFIX = /^(eq|neq|gt|gte|lt|lte)\.([\s\S]*)$/; - -/** - * Parses the inner portion of an `in.(...)` list. Items may be double-quoted - * to include commas or leading/trailing whitespace, e.g. - * `in.("Smith, John",UCSB)`. - */ -export function parseInList(inner: string): string[] { - const values: string[] = []; - let i = 0; - while (i < inner.length) { - // skip whitespace between items - while (i < inner.length && inner[i] === " ") i++; - if (inner[i] === '"') { - // quoted item; "" escapes a literal quote - let value = ""; - i++; - while (i < inner.length) { - if (inner[i] === '"' && inner[i + 1] === '"') { - value += '"'; - i += 2; - } else if (inner[i] === '"') { - i++; - break; - } else { - value += inner[i]; - i++; - } - } - values.push(value); - // skip to next comma - while (i < inner.length && inner[i] !== ",") i++; - i++; - } else { - let end = inner.indexOf(",", i); - if (end === -1) end = inner.length; - values.push(inner.slice(i, end).trim()); - i = end + 1; - } - } - return values.filter((v) => v.length > 0); -} - -function parseFilterParam(column: string, raw: string): RawFilter { - if (raw === "is.null") { - return { column, op: "isNull" }; - } - if (raw === "not.null") { - return { column, op: "notNull" }; - } - if (raw.startsWith("in.(") && raw.endsWith(")")) { - const values = parseInList(raw.slice(4, -1)); - if (values.length === 0) { - throw new QueryError( - `Empty in.() list for column "${column}". Provide at least one value.` - ); - } - return { column, op: "in", values }; - } - const match = COMPARISON_PREFIX.exec(raw); - if (match) { - return { - column, - op: match[1] as FilterOperator, - value: match[2], - }; - } - // bare value = equality - return { column, op: "eq", value: raw }; -} - -export function parseQueryParams(searchParams: URLSearchParams): ParsedQuery { - const filters: RawFilter[] = []; - for (const [key, value] of searchParams.entries()) { - if (key.startsWith("q.")) { - const column = key.slice(2); - if (!column) { - throw new QueryError(`Invalid filter parameter "${key}".`); - } - filters.push(parseFilterParam(column, value)); - } - } - - let format: OutputFormat | null = null; - const f = searchParams.get("f"); - if (f !== null) { - if (f !== "json" && f !== "html") { - throw new QueryError(`Invalid format "${f}". Use f=json or f=html.`); - } - format = f; - } - - const groupBy = (searchParams.get("groupBy") || "") - .split(",") - .map((s) => s.trim()) - .filter((s) => s.length > 0); - - const ops: Aggregation[] = []; - const opParam = searchParams.get("op"); - if (opParam !== null) { - for (const op of opParam.split(",").map((s) => s.trim())) { - if (!op) continue; - if (!(AGGREGATIONS as readonly string[]).includes(op)) { - throw new QueryError( - `Unknown aggregation "${op}". Supported: ${AGGREGATIONS.join(", ")}.` - ); - } - if (!ops.includes(op as Aggregation)) { - ops.push(op as Aggregation); - } - } - } - - const column = searchParams.get("column"); - const needsColumn = ops.filter((op) => op !== "count"); - if (needsColumn.length > 0 && !column) { - throw new QueryError( - `The "column" parameter is required for op=${needsColumn.join(",")}.` - ); - } - if (groupBy.length > 0 && ops.length === 0) { - throw new QueryError( - `groupBy requires at least one aggregation via the "op" parameter.` - ); - } - - let limit: number | null = null; - const limitParam = searchParams.get("limit"); - if (limitParam !== null) { - if (limitParam.trim() === "") { - limit = null; - } else { - limit = Number(limitParam); - if (!Number.isInteger(limit) || limit < 1) { - throw new QueryError( - `Invalid limit "${limitParam}". Must be a positive integer, or omit for no limit.` - ); - } - } - } - - let offset = 0; - const offsetParam = searchParams.get("offset"); - if (offsetParam !== null) { - offset = Number(offsetParam); - if (!Number.isInteger(offset) || offset < 0) { - throw new QueryError( - `Invalid offset "${offsetParam}". Must be a non-negative integer.` - ); - } - } - - let orderBy: ParsedQuery["orderBy"] = null; - const orderByParam = searchParams.get("orderBy"); - if (orderByParam !== null && orderByParam.trim().length > 0) { - const [key, direction = "asc"] = orderByParam.split(":"); - if (direction !== "asc" && direction !== "desc") { - throw new QueryError( - `Invalid orderBy direction "${direction}". Use :asc or :desc.` - ); - } - orderBy = { key: key.trim(), direction }; - } - - return { format, groupBy, ops, column, limit, offset, orderBy, filters }; -} - -/** - * Produces a canonical query string so that logically identical requests - * (parameter order, whitespace) share a single cache entry. - */ -export function canonicalQueryString(searchParams: URLSearchParams): string { - const entries: [string, string][] = []; - for (const [key, value] of searchParams.entries()) { - if (key === "f") continue; // format normalized separately - entries.push([key, value]); - } - entries.sort((a, b) => - a[0] === b[0] ? a[1].localeCompare(b[1]) : a[0].localeCompare(b[0]) - ); - const params = new URLSearchParams(); - for (const [key, value] of entries) { - params.append(key, value); - } - return params.toString(); -} diff --git a/packages/data-tables-worker/src/ui/html.ts b/packages/data-tables-worker/src/ui/html.ts deleted file mode 100644 index 342ea950d..000000000 --- a/packages/data-tables-worker/src/ui/html.ts +++ /dev/null @@ -1,498 +0,0 @@ -/** - * A self-contained demo UI for exercising the query engine. Served when the - * query endpoint is requested with Accept: text/html (or f=html). The page - * loads ../column-stats.json (proxied by this worker, with CDN fallback) to - * populate column pickers, then runs queries against the same endpoint with - * f=json. - */ - -function escapeHtml(text: string): string { - return text - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """); -} - -export function queryUiHtml(tablePath: string): string { - const safePath = escapeHtml(tablePath); - const tablePathJs = JSON.stringify(tablePath); - return ` - - - - -Data Table Query — ${safePath} - - - -
        - - - -`; -} diff --git a/packages/data-tables-worker/test/blockReader.test.ts b/packages/data-tables-worker/test/blockReader.test.ts deleted file mode 100644 index 95c5f80da..000000000 --- a/packages/data-tables-worker/test/blockReader.test.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { - ByteBudgetCache, - coalesceRuns, - createBlockReader, -} from "../src/engine/blockReader"; - -function makeFile(byteLength: number): Uint8Array { - const data = new Uint8Array(byteLength); - for (let i = 0; i < byteLength; i++) { - data[i] = i % 251; - } - return data; -} - -interface Harness { - read: (start: number, end?: number) => Promise; - fetches: Array<[number, number]>; - memory: ByteBudgetCache; -} - -function makeReader( - file: Uint8Array, - { blockSize = 16, memoryBudget = 1024 * 1024 } = {} -): Harness { - const fetches: Array<[number, number]> = []; - const memory = new ByteBudgetCache(memoryBudget); - const read = createBlockReader({ - byteLength: file.byteLength, - blockSize, - cacheId: "test@etag", - memory, - fetchRange: async (start, end) => { - fetches.push([start, end]); - return file.slice(start, end).buffer; - }, - }); - return { read, fetches, memory }; -} - -describe("coalesceRuns", () => { - it("groups contiguous indices into runs", () => { - expect(coalesceRuns([0, 1, 2, 5, 6, 9])).toEqual([ - [0, 2], - [5, 6], - [9, 9], - ]); - expect(coalesceRuns([])).toEqual([]); - expect(coalesceRuns([3])).toEqual([[3, 3]]); - }); -}); - -describe("ByteBudgetCache", () => { - it("evicts least recently used entries when over budget", () => { - const cache = new ByteBudgetCache(30); - cache.set("a", new ArrayBuffer(10)); - cache.set("b", new ArrayBuffer(10)); - cache.set("c", new ArrayBuffer(10)); - // Touch "a" so "b" becomes the eviction candidate. - cache.get("a"); - cache.set("d", new ArrayBuffer(10)); - expect(cache.get("a")).toBeDefined(); - expect(cache.get("b")).toBeUndefined(); - expect(cache.get("c")).toBeDefined(); - expect(cache.get("d")).toBeDefined(); - expect(cache.totalBytes).toBe(30); - }); -}); - -describe("createBlockReader", () => { - it("returns exact bytes for unaligned ranges", async () => { - const file = makeFile(100); - const { read } = makeReader(file); - const result = new Uint8Array(await read(5, 37)); - expect(result).toEqual(file.slice(5, 37)); - }); - - it("clamps to end of file and handles empty ranges", async () => { - const file = makeFile(50); - const { read } = makeReader(file); - expect(new Uint8Array(await read(40))).toEqual(file.slice(40)); - expect((await read(10, 10)).byteLength).toBe(0); - expect((await read(60, 70)).byteLength).toBe(0); - }); - - it("fetches contiguous missing blocks in a single ranged request", async () => { - const file = makeFile(100); - const { read, fetches } = makeReader(file); - await read(0, 60); // blocks 0-3 - expect(fetches).toEqual([[0, 64]]); - }); - - it("serves overlapping reads from memory without refetching", async () => { - const file = makeFile(100); - const { read, fetches } = makeReader(file); - await read(0, 40); // blocks 0-2 - await read(10, 30); // fully covered - expect(fetches).toHaveLength(1); - await read(20, 90); // needs blocks 1-5; 3-5 missing - expect(fetches).toEqual([ - [0, 48], - [48, 96], - ]); - const result = new Uint8Array(await read(20, 90)); - expect(result).toEqual(file.slice(20, 90)); - }); -}); diff --git a/packages/data-tables-worker/test/calculations.test.ts b/packages/data-tables-worker/test/calculations.test.ts deleted file mode 100644 index 7cf677056..000000000 --- a/packages/data-tables-worker/test/calculations.test.ts +++ /dev/null @@ -1,486 +0,0 @@ -import { beforeAll, describe, expect, it } from "vitest"; -import { - AsyncBuffer, - FileMetaData, - asyncBufferFromFile, - parquetMetadataAsync, -} from "hyparquet"; -import { parseQueryParams } from "../src/params"; -import { planQuery } from "../src/engine/plan"; -import { executeQuery, QueryResult } from "../src/engine/execute"; - -/** - * Aggregation-correctness tests for the fixture PISCO kelp-forest swath survey - * (353,253 rows, 3 row groups). These calculations drive thematic maps and - * time-series charts used in a contentious public policy process, so every - * expected value here was computed *independently* with DuckDB against the same - * data.parquet fixture (see the queries in the comment above each test), not by - * trusting the engine's own output. - * - * The two primary product use cases are exercised heavily: - * 1. Thematic map -> groupBy=site, aggregating `count` across surveys. - * 2. Site time series -> fixed site, groupBy=year, one or more classcodes. - * - * Semantics being pinned (verified to match DuckDB / SQL): - * - sum/mean/min/max/median ignore NULL `count` values. - * - `count` WITH an aggregation column = COUNT(col) (non-null values); - * WITHOUT a column = COUNT(*) (matching rows). - * - A group whose values are all NULL yields sum/mean/min/max = null and - * count(col) = 0, while still reporting rowsMatched > 0. - * - count = 0 is a real value (sum stays 0, not null). - */ - -const FIXTURE = "test/fixtures/data.parquet"; - -let file: AsyncBuffer; -let metadata: FileMetaData; - -beforeAll(async () => { - file = await asyncBufferFromFile(FIXTURE); - metadata = await parquetMetadataAsync(file); -}); - -async function run(qs: string): Promise { - const query = parseQueryParams(new URLSearchParams(qs)); - const plan = await planQuery(metadata, query, file); - return executeQuery({ file, metadata, query, plan }); -} - -/** Index aggregated groups by the value of a single groupBy column. */ -function byKey(result: QueryResult, key: string): Record { - return Object.fromEntries(result.groups!.map((g: any) => [g[key], g])); -} - -const MEAN_PRECISION = 6; // digits after the decimal point for toBeCloseTo - -// --------------------------------------------------------------------------- -// Whole-table aggregates (no filters, no groupBy) -// --------------------------------------------------------------------------- -describe("whole-table aggregates", () => { - // DuckDB: sum=11283244, min=0, max=13450, count(count)=353234, avg=31.9426895… - it("sum/min/max/mean/count over the entire count column", async () => { - const r = await run("op=sum,min,max,mean,count&column=count"); - const g = r.groups![0] as any; - expect(g.sum).toBe(11283244); - expect(g.min).toBe(0); - expect(g.max).toBe(13450); - expect(g.count).toBe(353234); // non-null values (19 rows have null count) - expect(g.mean).toBeCloseTo(31.942689548571202, MEAN_PRECISION); - expect(r.rowsScanned).toBe(353253); - expect(r.rowsMatched).toBe(353253); - }); - - // COUNT(*) counts matching rows; the 19 null-count rows are included. - it("count without a column is COUNT(*), including null-count rows", async () => { - const r = await run("op=count"); - expect(r.groups).toEqual([{ count: 353253 }]); - }); -}); - -// --------------------------------------------------------------------------- -// NULL handling edge cases -// --------------------------------------------------------------------------- -describe("null handling", () => { - // STRPURAD has 21,014 rows but 10 have a NULL count. - // DuckDB: count(count)=21004, sum=5403907, min=1, max=13450, - // avg=257.2798990668444, median=41. - it("excludes null values from sum/mean/min/max/median/count(col)", async () => { - const r = await run( - "op=sum,min,max,mean,median,count&column=count&q.classcode=STRPURAD" - ); - const g = r.groups![0] as any; - expect(r.rowsMatched).toBe(21014); // rows matched includes the 10 nulls - expect(g.count).toBe(21004); // but count(col) excludes them - expect(g.sum).toBe(5403907); - expect(g.min).toBe(1); - expect(g.max).toBe(13450); - expect(g.median).toBe(41); - expect(g.mean).toBeCloseTo(257.2798990668444, MEAN_PRECISION); - }); - - // NO_ORG is a single row with count = 0 (a real zero, not null). - // DuckDB: count=1, sum=0, min=0, max=0, avg=0. - it("treats count=0 as a real value, not null", async () => { - const r = await run( - "op=sum,min,max,mean,count&column=count&q.classcode=NO_ORG" - ); - expect(r.rowsMatched).toBe(1); - expect(r.groups).toEqual([{ sum: 0, min: 0, max: 0, mean: 0, count: 1 }]); - }); - - // STRPURAD at CASPAR_3 in 2015: 6 rows, every count NULL. - // Aggregates collapse to null; count(col)=0 while rowsMatched=6. - it("all-null group yields null aggregates but non-zero rowsMatched", async () => { - const r = await run( - "op=sum,min,max,mean,count&column=count" + - "&q.classcode=STRPURAD&q.year=2015&q.site=CASPAR_3" - ); - expect(r.rowsMatched).toBe(6); - expect(r.groups).toEqual([ - { sum: null, min: null, max: null, mean: null, count: 0 }, - ]); - }); - - // Same group, COUNT(*) still sees all 6 rows. - it("COUNT(*) counts rows even when every value is null", async () => { - const r = await run( - "op=count&q.classcode=STRPURAD&q.year=2015&q.site=CASPAR_3" - ); - expect(r.groups).toEqual([{ count: 6 }]); - }); -}); - -// --------------------------------------------------------------------------- -// Thematic map: groupBy=site (PRIMARY use case) -// --------------------------------------------------------------------------- -describe("thematic map (groupBy=site)", () => { - // MEGUND in 2004, per site. DuckDB reports 33 sites; spot-checked below. - it("aggregates count per site for one species/year", async () => { - const r = await run( - "groupBy=site&op=sum,mean,min,max,count&column=count" + - "&q.classcode=MEGUND&q.year=2004" - ); - expect(r.groups).toHaveLength(33); - expect(r.rowsMatched).toBe(126); - const s = byKey(r, "site"); - - expect(s["ROCKY_POINT_N"]).toMatchObject({ - sum: 490, - min: 3, - max: 105, - count: 11, - }); - expect(s["ROCKY_POINT_N"].mean).toBeCloseTo(44.54545454545455, MEAN_PRECISION); - - expect(s["SCI_VALLEY_CEN"]).toMatchObject({ sum: 332, count: 3 }); - expect(s["SCI_VALLEY_CEN"].mean).toBeCloseTo(110.66666666666667, MEAN_PRECISION); - - expect(s["ANACAPA_EAST_ISLE_CEN"]).toMatchObject({ - sum: 51, - min: 3, - max: 37, - mean: 17, - count: 3, - }); - - // Grand total across all site sums must equal the ungrouped sum (2031). - const total = r.groups!.reduce((acc: number, g: any) => acc + g.sum, 0); - expect(total).toBe(2031); - }); - - // STRPURAD in 2015, per site: 115 sites, mixing fully-null, partially-null, - // and single-row groups. DuckDB: rows=1139, count(count)=1129. - it("per-site aggregation with null and single-row groups", async () => { - const r = await run( - "groupBy=site&op=sum,mean,min,max,count&column=count" + - "&q.classcode=STRPURAD&q.year=2015" - ); - expect(r.groups).toHaveLength(115); - expect(r.rowsMatched).toBe(1139); - const s = byKey(r, "site"); - - // Fully-null site: aggregates null, count(col)=0. - expect(s["CASPAR_3"]).toEqual({ - site: "CASPAR_3", - sum: null, - mean: null, - min: null, - max: null, - count: 0, - }); - - // Partially-null site: 6 rows, 2 non-null counts (510, 643). - expect(s["TEN_MILE_2"]).toMatchObject({ - sum: 1153, - min: 510, - max: 643, - mean: 576.5, - count: 2, - }); - - // Single-row site. - expect(s["PYRAMID_POINT_1"]).toEqual({ - site: "PYRAMID_POINT_1", - sum: 1, - mean: 1, - min: 1, - max: 1, - count: 1, - }); - - expect(s["ANACAPA_LIGHTHOUSE_REEF_CEN"]).toMatchObject({ - sum: 6490, - min: 820, - max: 3100, - mean: 1622.5, - count: 4, - }); - - // count(col) totals across sites should equal DuckDB's 1129 non-null values. - const nonNull = r.groups!.reduce((acc: number, g: any) => acc + g.count, 0); - expect(nonNull).toBe(1129); - }); - - // Thematic maps often show the top-N sites. PISGIG across all years, - // ordered by total count desc. DuckDB top 5 verified below. - it("orders sites by summed count and paginates (top-N)", async () => { - const r = await run( - "groupBy=site&op=sum,count&column=count&q.classcode=PISGIG" + - "&orderBy=sum:desc&limit=5" - ); - expect(r.groups!.map((g: any) => [g.site, g.sum])).toEqual([ - ["SMI_HARRIS_PT_RESERVE_E", 1884], - ["HOPKINS_DC", 1882], - ["SCI_HAZARDS_CEN", 1454], - ["SCI_PAINTED_CAVE_E", 1438], - ["SCI_HAZARDS_W", 1245], - ]); - }); - - // Top-N by mean (density) rather than total, for the same MEGUND 2004 slice. - it("orders sites by mean count and paginates", async () => { - const r = await run( - "groupBy=site&op=mean,sum,count&column=count" + - "&q.classcode=MEGUND&q.year=2004&orderBy=mean:desc&limit=3" - ); - const sites = r.groups!.map((g: any) => g.site); - expect(sites).toEqual([ - "SCI_VALLEY_CEN", - "ANACAPA_EAST_ISLE_W", - "ROCKY_POINT_N", - ]); - expect((r.groups![0] as any).mean).toBeCloseTo( - 110.66666666666667, - MEAN_PRECISION - ); - expect((r.groups![1] as any).mean).toBeCloseTo(52.5, MEAN_PRECISION); - }); -}); - -// --------------------------------------------------------------------------- -// Site time series: groupBy=year at a fixed site (SECONDARY use case) -// --------------------------------------------------------------------------- -describe("site time series (groupBy=year)", () => { - // MACPYRAD (giant kelp) at HOPKINS_UC, every survey year. DuckDB: 26 years. - it("single-species yearly series at one site", async () => { - const r = await run( - "groupBy=year&op=sum,mean,min,max,count&column=count" + - "&q.classcode=MACPYRAD&q.site=HOPKINS_UC" - ); - expect(r.groups).toHaveLength(26); - const y = byKey(r, "year"); - - expect(y[1999]).toMatchObject({ sum: 74, min: 1, max: 2, count: 63 }); - expect(y[1999].mean).toBeCloseTo(1.1746031746031746, MEAN_PRECISION); - - // 2004: every observation is 1. - expect(y[2004]).toMatchObject({ sum: 27, min: 1, max: 1, mean: 1, count: 27 }); - - expect(y[2024]).toMatchObject({ sum: 84, min: 1, max: 11, count: 32 }); - expect(y[2024].mean).toBeCloseTo(2.625, MEAN_PRECISION); - }); - - // Multi-species series (in-list): purple urchin adults + recruits at - // HOPKINS_UC, 2018-2020..2022. Both classcodes fold into each year's totals. - it("multi-species yearly series at one site", async () => { - const r = await run( - "groupBy=year&op=sum,mean,min,max,count&column=count" + - "&q.classcode=in.(STRPURAD,STRPURREC)&q.site=HOPKINS_UC" + - "&q.year=gte.2018&q.year=lte.2022" - ); - expect(r.groups).toHaveLength(5); - const y = byKey(r, "year"); - - expect(y[2018]).toMatchObject({ sum: 2642, min: 1, max: 471, count: 33 }); - expect(y[2018].mean).toBeCloseTo(80.06060606060606, MEAN_PRECISION); - - // 2020 urchin bloom: STRPURAD 6260 + STRPURREC 819 = 7079. - expect(y[2020]).toMatchObject({ sum: 7079, min: 1, max: 733, count: 52 }); - expect(y[2020].mean).toBeCloseTo(136.1346153846154, MEAN_PRECISION); - - expect(y[2022]).toMatchObject({ sum: 5150, min: 3, max: 617, count: 39 }); - expect(y[2022].mean).toBeCloseTo(132.05128205128204, MEAN_PRECISION); - }); - - // Time series constrained to a temporal window via ANDed range filters. - it("yearly series within an inclusive temporal range", async () => { - const r = await run( - "groupBy=year&op=sum,mean,count&column=count" + - "&q.classcode=KELKEL&q.year=gte.2010&q.year=lte.2015" - ); - expect(r.groups).toHaveLength(6); - const y = byKey(r, "year"); - expect(y[2010]).toMatchObject({ sum: 1709, count: 248 }); - expect(y[2010].mean).toBeCloseTo(6.891129032258065, MEAN_PRECISION); - expect(y[2011]).toMatchObject({ sum: 1595, count: 290, mean: 5.5 }); - expect(y[2015]).toMatchObject({ sum: 889, count: 172 }); - expect(y[2015].mean).toBeCloseTo(5.1686046511627906, MEAN_PRECISION); - }); -}); - -// --------------------------------------------------------------------------- -// Filter operators -// --------------------------------------------------------------------------- -describe("filter operators", () => { - // in-list on the grouped column itself, aggregating per classcode. - it("in-list species, aggregated per classcode", async () => { - const r = await run( - "groupBy=classcode&op=sum,mean,count&column=count" + - "&q.classcode=in.(PYCHEL,PISGIG,PISBRE)" - ); - const c = byKey(r, "classcode"); - expect(c["PISBRE"]).toMatchObject({ sum: 13504, count: 2328 }); - expect(c["PISBRE"].mean).toBeCloseTo(5.8006872852233675, MEAN_PRECISION); - expect(c["PISGIG"]).toMatchObject({ sum: 73413, count: 10623 }); - expect(c["PISGIG"].mean).toBeCloseTo(6.910759672408924, MEAN_PRECISION); - expect(c["PYCHEL"]).toMatchObject({ sum: 9664, count: 3674 }); - expect(c["PYCHEL"].mean).toBeCloseTo(2.6303756124115405, MEAN_PRECISION); - }); - - // neq excludes both the value and nulls; campus has no nulls here. - it("neq filter", async () => { - const r = await run( - "op=sum,count&column=count&q.classcode=HALRUF&q.campus=neq.UCSC" - ); - expect(r.groups).toEqual([{ sum: 5284, count: 1317 }]); - expect(r.rowsMatched).toBe(1317); - }); - - // Exclusive gt/lt bounds: year>2010 & year<2013 selects 2011-2012 only. - it("exclusive numeric bounds (gt/lt)", async () => { - const r = await run( - "op=sum,mean,count&column=count&q.classcode=CRAGIG&q.year=gt.2010&q.year=lt.2013" - ); - const g = r.groups![0] as any; - expect(g.sum).toBe(1294); - expect(g.count).toBe(496); - expect(g.mean).toBeCloseTo(2.6088709677419355, MEAN_PRECISION); - expect(r.rowsMatched).toBe(496); - }); - - // Inclusive range rollup (no groupBy) over a temporal window. - it("inclusive range rollup (gte/lte)", async () => { - const r = await run( - "op=sum,mean,min,max,count&column=count" + - "&q.classcode=KELKEL&q.year=gte.2010&q.year=lte.2015" - ); - const g = r.groups![0] as any; - expect(g).toMatchObject({ sum: 7357, min: 1, max: 113, count: 1299 }); - expect(g.mean).toBeCloseTo(5.663587374903772, MEAN_PRECISION); - expect(r.rowsMatched).toBe(1299); - }); - - // Filter on a floating-point column (depth). Null depths are excluded by - // the comparison, so rowsMatched already reflects non-null depths. - it("filters on a double column (depth)", async () => { - const r = await run( - "op=sum,mean,count&column=count&q.classcode=PANINT&q.depth=gte.10" - ); - const g = r.groups![0] as any; - expect(g.sum).toBe(2688); - expect(g.count).toBe(1211); - expect(g.mean).toBeCloseTo(2.2196531791907512, MEAN_PRECISION); - expect(r.rowsMatched).toBe(1211); - }); -}); - -// --------------------------------------------------------------------------- -// Median -// --------------------------------------------------------------------------- -describe("median", () => { - // Even value count -> average of the two middle values. SARMUT n=80 -> 4.5. - it("interpolates the median for even value counts", async () => { - const r = await run( - "op=median,count,sum,mean,min,max&column=count&q.classcode=SARMUT" - ); - expect(r.groups![0]).toMatchObject({ - median: 4.5, - count: 80, - sum: 3466, - min: 1, - max: 643, - }); - expect((r.groups![0] as any).mean).toBeCloseTo(43.325, MEAN_PRECISION); - }); - - // ACTBRA n=16 -> median 22.5. - it("median for a small even-count group", async () => { - const r = await run( - "op=median,count,sum,max&column=count&q.classcode=ACTBRA" - ); - expect(r.groups![0]).toMatchObject({ - median: 22.5, - count: 16, - sum: 686, - max: 150, - }); - }); - - // Odd value count -> the middle value. PTETES = [1,1,1] -> 1. - it("median for an odd-count group", async () => { - const r = await run("op=median,count&column=count&q.classcode=PTETES"); - expect(r.groups![0]).toEqual({ median: 1, count: 3 }); - }); - - // Median must ignore null values just like the other aggregates. - // STRPURAD has 10 nulls; DuckDB median over the 21004 non-null values = 41. - it("median ignores null values", async () => { - const r = await run("op=median,count&column=count&q.classcode=STRPURAD"); - expect(r.groups![0]).toEqual({ median: 41, count: 21004 }); - }); -}); - -// --------------------------------------------------------------------------- -// Multi-key grouping and empty results -// --------------------------------------------------------------------------- -describe("multi-key grouping and empty results", () => { - // Group by two dimensions at once. DuckDB: 14 distinct campus/zone pairs; - // top 6 by row count verified below. - it("groups by two columns and orders by count", async () => { - const r = await run( - "groupBy=campus,zone&op=count&orderBy=count:desc&limit=6" - ); - expect( - r.groups!.map((g: any) => [g.campus, g.zone, g.count]) - ).toEqual([ - ["UCSC", "MID", 55133], - ["UCSB", "INNER", 52143], - ["UCSC", "OUTER", 51828], - ["UCSB", "OUTER", 51353], - ["UCSC", "INNER", 42793], - ["UCSB", "MID", 30255], - ]); - }); - - it("counts all distinct campus/zone pairs", async () => { - const r = await run("groupBy=campus,zone&op=count"); - expect(r.groups).toHaveLength(14); - }); - - // A species that does not exist matches nothing: no groups, even for a - // grouped thematic-map query. - it("returns no groups for a non-existent species (groupBy=site)", async () => { - const r = await run( - "groupBy=site&op=sum,mean,count&column=count&q.classcode=NOTREAL" - ); - expect(r.groups).toEqual([]); - expect(r.rowsMatched).toBe(0); - }); - - // Same, without groupBy: a global aggregate over zero matches produces no - // group at all (rather than a row of nulls). - it("returns no groups for a global aggregate with zero matches", async () => { - const r = await run("op=sum,mean,count&column=count&q.classcode=NOTREAL"); - expect(r.groups).toEqual([]); - expect(r.rowsMatched).toBe(0); - }); - - // Impossible temporal window. - it("returns no groups when a range filter excludes everything", async () => { - const r = await run( - "groupBy=year&op=sum,count&column=count&q.classcode=KELKEL&q.year=gt.3000" - ); - expect(r.groups).toEqual([]); - expect(r.rowsMatched).toBe(0); - }); -}); diff --git a/packages/data-tables-worker/test/engine.test.ts b/packages/data-tables-worker/test/engine.test.ts deleted file mode 100644 index bd3ed41d6..000000000 --- a/packages/data-tables-worker/test/engine.test.ts +++ /dev/null @@ -1,255 +0,0 @@ -import { beforeAll, describe, expect, it } from "vitest"; -import { - AsyncBuffer, - FileMetaData, - asyncBufferFromFile, - parquetMetadataAsync, -} from "hyparquet"; -import { parseQueryParams, QueryError } from "../src/params"; -import { planQuery } from "../src/engine/plan"; -import { executeQuery } from "../src/engine/execute"; - -/** - * Engine tests run directly in Node against a real data table produced by - * the ingestion pipeline (PISCO kelp forest swath surveys, 353,253 rows, - * 3 row groups). Expected values were computed independently with DuckDB / - * a full scan of the file. - */ - -// vitest runs with cwd at the package root -const FIXTURE = "test/fixtures/data.parquet"; - -let file: AsyncBuffer; -let metadata: FileMetaData; - -beforeAll(async () => { - file = await asyncBufferFromFile(FIXTURE); - metadata = await parquetMetadataAsync(file); -}); - -async function run(qs: string, useBloomFilters = true) { - const query = parseQueryParams(new URLSearchParams(qs)); - const plan = await planQuery( - metadata, - query, - useBloomFilters ? file : undefined - ); - const result = await executeQuery({ file, metadata, query, plan }); - return { query, plan, result }; -} - -describe("example query", () => { - it("groupBy=site&op=mean,count&column=count&q.year=2018&q.classcode=PYCHEL", async () => { - const { result } = await run( - "groupBy=site&op=mean,count&column=count&q.year=2018&q.classcode=PYCHEL" - ); - expect(result.groups).toHaveLength(3); - const bySite = Object.fromEntries( - result.groups!.map((g: any) => [g.site, g]) - ); - expect(Object.keys(bySite).sort()).toEqual([ - "LITTLE_IRISH_CEN", - "PESCADERO_DC", - "PINOS", - ]); - for (const g of result.groups!) { - expect(g).toMatchObject({ mean: 1, count: 1 }); - } - expect(result.rowsMatched).toBe(3); - }); -}); - -describe("aggregations", () => { - it("computes global sum/min/max/median/mean without groupBy", async () => { - const { result } = await run( - "op=sum,min,max,median,mean,count&column=count&q.year=2018&q.classcode=PYCHEL" - ); - expect(result.groups).toEqual([ - { sum: 3, min: 1, max: 1, median: 1, mean: 1, count: 3 }, - ]); - }); - - it("count without a column counts matching rows", async () => { - const { result } = await run("op=count&q.campus=HSU"); - expect(result.groups).toEqual([{ count: 11515 }]); - }); - - it("orders groups by aggregate value and paginates", async () => { - const { result } = await run( - "groupBy=campus&op=count&orderBy=count:desc&limit=2" - ); - expect(result.groups!.map((g: any) => g.campus)).toEqual(["UCSC", "UCSB"]); - expect(result.groups![0].count).toBe(149754); - }); -}); - -describe("row group pruning", () => { - // Fixture row group stats: - // rg0: 122,880 rows, year [1999,2020], campus [UCSC,UCSC], site_name_old all null - // rg1: 122,880 rows, year [1999,2024], campus [UCSB,UCSC] - // rg2: 107,493 rows, year [2004,2024], campus [HSU,VRG] - it("prunes row groups via string equality statistics", async () => { - const { plan, result } = await run("op=count&q.campus=HSU"); - expect(plan.rowGroupsTotal).toBe(3); - expect(plan.rowGroupsScanned).toBe(1); - expect(result.rowsScanned).toBe(107493); - expect(result.rowsMatched).toBe(11515); - }); - - it("prunes row groups via numeric comparison statistics", async () => { - const { plan } = await run("op=count&q.year=lte.2003"); - expect(plan.rowGroupsScanned).toBe(2); // rg2 min year is 2004 - }); - - it("prunes all-null row groups for not.null filters", async () => { - const { plan } = await run("op=count&q.site_name_old=not.null"); - expect(plan.rowGroupsScanned).toBe(2); // rg0 is 100% null - }); - - it("scans everything when statistics cannot exclude (blooms disabled)", async () => { - const { plan } = await run("op=count&q.classcode=PYCHEL", false); - expect(plan.rowGroupsScanned).toBe(3); - }); - - // 72 of the fixture's 182 species codes occur in only one row group; - // min/max statistics can't prune them (codes span the alphabet in every - // row group) but bloom filters prove absence. - it("prunes row groups via bloom filters for eq on high-cardinality strings", async () => { - // SOLSPP only occurs in rg0 - const { plan, result } = await run("op=count&q.classcode=SOLSPP"); - expect(plan.rowGroupsScanned).toBe(1); - expect(result.rowsScanned).toBe(122880); - expect(result.groups![0].count).toBeGreaterThan(0); - }); - - it("prunes row groups via bloom filters for in lists", async () => { - // SOLSPP is rg0-only, MACPYRJUV is rg1-only; rg2 can be skipped - const { plan } = await run( - "op=count&q.classcode=in.(SOLSPP,MACPYRJUV)" - ); - expect(plan.rowGroupsScanned).toBe(2); - }); - - it("merges contiguous surviving row groups into one read span", async () => { - const { plan } = await run("op=count&q.year=lte.2003"); - expect(plan.spans).toEqual([{ rowStart: 0, rowEnd: 245760 }]); - }); -}); - -describe("filters", () => { - it("equality against strings", async () => { - const { result } = await run("op=count&q.observer=CHAD BURT"); - expect(result.groups).toEqual([{ count: 100 }]); - }); - - it("in lists", async () => { - const { result } = await run( - "op=count&q.observer=in.(CHAD BURT,LYALL BELLQUIST)" - ); - expect(result.groups).toEqual([{ count: 650 }]); // 100 + 550 - }); - - it("numeric comparisons", async () => { - const { result } = await run("q.count=gte.4000"); - expect(result.rowsMatched).toBe(134); - }); - - it("null tests", async () => { - const { result } = await run("op=count&q.size=is.null"); - expect(result.groups).toEqual([{ count: 217323 }]); - }); - - it("ANDed range filters on the same column", async () => { - const { result } = await run( - "op=count&q.year=gte.2010&q.year=lte.2012" - ); - expect(result.groups).toEqual([{ count: 57005 }]); - }); - - it("only reads the columns a query needs", async () => { - const { plan } = await run( - "groupBy=site&op=mean&column=count&q.year=2018" - ); - expect(plan.neededColumns!.sort()).toEqual(["count", "site", "year"]); - }); -}); - -describe("decoded column cache", () => { - it("returns identical results when served from the cache", async () => { - const query = parseQueryParams( - new URLSearchParams( - "groupBy=site&op=count,mean&column=count&q.classcode=PISBRE&q.year=2017" - ) - ); - const plan = await planQuery(metadata, query, file); - const cold = await executeQuery({ - file, - metadata, - query, - plan, - cacheKey: "test-etag", - }); - const warm = await executeQuery({ - file, - metadata, - query, - plan, - cacheKey: "test-etag", - }); - expect(warm).toEqual(cold); - expect(warm.rowsMatched).toBe(62); - }); -}); - -describe("raw row output", () => { - it("returns filtered rows with limit/offset/orderBy", async () => { - const { result } = await run( - "q.count=gte.4000&orderBy=count:desc&limit=3" - ); - expect(result.rows).toHaveLength(3); - expect(result.rows![0].count).toBe(13450); // max count in the table - const counts = result.rows!.map((r: any) => r.count); - expect([...counts].sort((a, b) => b - a)).toEqual(counts); - }); - - it("serializes values as JSON-safe types (no BigInt)", async () => { - const { result } = await run("limit=1"); - const row = result.rows![0]; - expect(typeof row.year).toBe("number"); - expect(typeof row.site).toBe("string"); - expect(() => JSON.stringify(row)).not.toThrow(); - }); -}); - -describe("validation", () => { - it("rejects unknown columns, listing valid ones", async () => { - await expect(run("q.bogus=1")).rejects.toThrow(QueryError); - try { - await run("q.bogus=1"); - } catch (e: any) { - expect(e.details.validColumns.map((c: any) => c.name)).toContain("site"); - } - }); - - it("rejects comparison operators on string columns", async () => { - await expect(run("q.site=gte.A")).rejects.toThrow( - /only supported for numeric/ - ); - }); - - it("rejects non-numeric values for numeric columns", async () => { - await expect(run("q.year=abc")).rejects.toThrow(/Invalid numeric value/); - }); - - it("rejects numeric aggregations of string columns", async () => { - await expect( - run("groupBy=site&op=mean&column=observer") - ).rejects.toThrow(/require a numeric column/); - }); - - it("rejects orderBy keys missing from the output", async () => { - await expect( - run("groupBy=site&op=count&orderBy=depth") - ).rejects.toThrow(/orderBy/); - }); -}); diff --git a/packages/data-tables-worker/test/fixtures/data.parquet b/packages/data-tables-worker/test/fixtures/data.parquet deleted file mode 100644 index 32353861d9301f6c64dedb9fa2bdba9814364c6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1086796 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�q{74u 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∋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%0AA5bWfI@vW2~0Hs)S zsj!m$^zuBWr6#BM(kY+8{2Rcvb0>^op@_TfLpj*K!3&hV4;$0&XhDf~2)qIMTorAK z_&3ppvXE3GjV2{5RQRNTtuvR2?^d+Mq4Js#|&iFW>Bf6;$xv>-Z>fMRzVHc+8pI`<^m(QbzCgG2rsDdYa|6*`i@Vc|tX-<~G zUH_p*M6~->qJCxb(ZiyTI8`c+`^NF*5ZkAm9Hcg#E}e(sb8E30>Pz%ze*mk+iPZ(( zGw7uynlw6xtsF1%Re{-y7X2HbwP1PIK!54n3RsY;8u?1`wl97^pz)Eb7l7u)7t*OB z>^b{V?4MvREwga zl2{_^Y92J^u!i8Wir`t3>Dh>sZ_}+-NcIPYnS^CM@*y<=NL?4T7A-iD)$olj3O0O5{1eM&~%-++F)Jd%k3WypI-}BJd-Lg z{PtqD(Gj96G--M@{k&Wc6w&io@ZM=VoU!3nSC;6=5{X@!{uLlE^s!7i-~x>0^+B*9F^x6MLs$js?Bg35_G;SNcfVGW8WR( z%HgLpx7D4IVM)fIj}FN!JeC2-EhcH<;SAD2w*?THzJhduzBm((&KPS5qZ|w0c)m0B zgV7X2D3;zXV&aKeaNX&PvPkL+aSJ%W%sFl$h(OL#Me8Q0&g5vTcu<)?g#T@rswevf zk+c^%(iIADNLmP{$O`C1+FlA?;H8ckbj&SU8&96352nLwGDaoszF4;%zDsU9A9pL( zB-vH8calg2VdFk{q+Z`pkgXC=YXP1E^+PkUnG|0DH^VJ9D{!D-Hh>!-vuc;U&<72h ztR~DuCy$b|K-C}<7f-93k3jL6q6fjuW5&(->AfINGK$YchVO&)i`y_h0<*n$IC51j zavhAkq~SKOZ{Rsf9#s*s3@x32QCWTn?YxKbz^{d!KieVqMJ@|R69-%lum{-G!<*@M z;0S`I%Q2A(xdFXgFiUh-N?n8WiGto$|ILKl^aX2PYWYqsXYa(f@T!ss(~C`P6~LWGwJ}d?x&jo7ba5rDMXO* z3TY=?m;&;*Bada@2D0un%lZFiK%AkF=n_wXU*|X37zh4Hkw7l+pj5*0-3{O_}({OC#YvGGg4nb<_wywMyp!Q9=6EF z!>vV5KvB|%%v`IOAF7%p`Ll4%kKriS&^@!of4n{$s4X7LCocNeJfXW)XJ{-veoDW7 zzBq(l)ag!G;({|-idIfx#o`}cMFt>U7B5k&294zSZ1dSr%*ifC0Ve2|r6DJnd(2rC z8<~a?N*4_+hK@E0*!Te4o)U9pHMfPl*u0;)?dz~waDj^t~DQii3Z?fgS(ZSyjTu2=e0?}5&Y{kfK0KLbw9%t3daNdlehRQ090j_lv51BznT7bR z<~)>aQnFQsbDZ_kYOupw(VJZ~H;VLAz{)XOmZEkY;sNXo_lVmI&>T5R`3$rqi8&6s z_$1+(jV&wpb@XLg%Yo3lMRT!_YniNmp+3c~`4U|>Q3k2F zV=&`ph}I-AsUP<5_$1yGQ_(5@H?~$GXCrjgI4Ocsi{SiVFa~9SQ)qrMEmZiYaSfF44Hh zt6E_Kk#&WD!N_6{Jfc7=pw$g_CI2nGtOu~CBa?OK(RY?mI~7gH{F`F3y4SjQlD365mVuM!|=0{_SQ+&T%;u3AQn)+!Ge1jl-?{}=(&inJL0t7nF ztjd60dj#>j3hR91|3!7UC;bq8?@^#1!K^KEC^QWEf`M-)c^2NkGF*@dP# z@K8?KWyuB`KI{=ks@1j0&UPAEtHL#J9kMHG%)o_1G3H#Bh=0SIA^but8$akXAYpQf zc#)>ZIh?VsT85yq0|ncX1XL)4NjV zqYL+9Rb0J{8KmOEXs;2TVkhsy##Fl(P_UXP)R!+wt&u>ay+na>c8V7>%j@XVY9-%) zv)B_bJGIw_Ew&P&vX~Aqqc$(M^lRoxKjtQ(}?pbfSh;a>Q? zj%;Lu=C}l!#U!ER?d19rY+>u87j)JYk7nUuuYnFGYRPih#{;4LI4*ipoa#WxQ@EJ2 zT4QF?F>l~8wuweu^ldQSK!=JEZAxIu1HwpJEO7yV)CL{`k}6A#UT6c`NkV7m0lEWc zU;Zs^3ew-_LNG}?3JnmG+GNJY4(dh|0_d~&tLW-gc0f_EOy`7~93K6qCKKMoxy|e@ z+9Tv1G2e<@wXBcsL7kA4L(mt!GC5_nE#UIver*4EV-OzWs&OS0T8=`gV+asBbes_O zi82?z{-jHDI742G|C8+bGyp|`B#n-Lhsr%-fvvHz)_lQ!DDwA`$0hepdcBA0rX#)? zMB$|XhQ#Ax;C44-AC+A~t2`H1c;PM1n)w=ucfiowen!85R3F*{LqkWJ;^{(_&zxY%vDws1RaZ@*2$9;+|Q3_}hwYEMmOH zq*o_x+$g8fjdFOavmNwBZQHlmFOa)JEHOWi{_DpiT1d701+mo)7JwqT7U)HjF;n0L zZGGu3^@?OBb#)aK?_HTTCJbCl2#xP^E z_MmU@+P~)*XsSs^V2C^fX&c{wjjADz^^wq(C-bvKIXn%tEC1m-JgDSmFr#p-HWUZH zHW8cW)V~30$h$FQQjPyz3M=$a-QE}c^SLFcP<*(~)EXtRgv9{iBZyoVa-f#p- z`!ZNAE^Iov0h0M(F)b|RD{0LIw4j_9V__fuFyp2a7`U-&>|rpQ#ayor1YkHIP-sZ* zBlTI{8QoT|5B*W~c~W3s+*{302gg z>@-ppZP3C5Bp1ZDC^BCzWJWw7wingfti>QSnT%mw0^$cvzl?{>t z61%j-fR-H?(XD6g36~4>lL40s0(pvo)zxJ}?vUXYsA# zw=8|IgW zF+)TDDj2WLo)4#Kh#eHkvgm)6XxedCU8Nz$2XX20JLqRFX@3G5H5B@^w0C9}r?p`Z4xmYhR>Z$zey&fz^gNo}17zyhA(pp+i<{06 z7gR$p&>m74yO*AX;GW(rigBqMMaiCRdHL+S6#aO5+rs!-EVVcv+xuwn$LTE`f&-Cl zj(-tApJVVMY)LWMs`Q3|z54q_IhJ^$dx3+EcQIxUi)c`;q<7Es6=NKibc|mMn-C4e z#xlHRxf^_Bc##{lpe!JyF`E_C+FN?P@LZ*udL@DTIl2(ob_abimwt~-=~EXS0BM)r zKL`KuYr*I&pM~X4a<{m4E@L0OQnoSNB_Rv#FSeMirwo1W8OTJRq7}czCAHR@ha?~* z^&R6o;im$mI0TfP;K(DH=;W^p>R%WGFLAta;PZvzfi1yVXCk1M2l%;)W?JG$vx3i6 zkwcT~Y2}QPAqeD9UJoQGILJTMO|faAhz*_S8xE zW!KEl?o{(?6A4N!28r$mDkZ)O)@Oyqz4h4*VA6l6ax0Uh%NE=sfuf2bWKE( zR7$##z5>?NFrd*8gy|YwIWjh#o`7&3CQoGpg2p%je{kYmric+>A?MyoT9-rL4YvUMlY{XvJM^Ueyd`W$jI)F zy~ue6!f3HXzYxeO&%s6#`^fkjR`fv%JMGZAqD8v+eh}887Jc7=?yLSXI_6Q5Z4SCZ zXeE%8x68*PccJw0mOxOVq6L^DzY^(`kp~m(YUfCmRBX|fxwIGkxyoL|u)NzEf8ylb z^Fj2gwb)YNE)G9S?sB9mamf~mKkEV5H#pcB^ah^b1*&IQ>;5x{ZP}f@gEU&C*dKd& zO4j)Mo@&fma~z9gy%c6(S5dZwHIOd!-+6p&?5GN5$|FqyRPA?-XH)b`gQrO@)t>ez z)e@?SaGM^xkUv`j03#24IJ)U|;1%W1+nmi?`6+sa@Yv#u9cHJmX zHlNCw`1|=}`d0)4z#pi*I92D0N>*89i{^~N)_{Im%_AbedE!JB!ePXX3032#=*KNM zBwSC8@OCf>zU6O3q_`VhrJ985Ern4a^n#nUFifIk(YxB5%Vm@`?h-nm=$W$AE3^~i zH#*sX$-{>Y9?;7`eq$*+4B@@~)t=9Q5ZgiRCEKZbNzZin$=AeMEg zo$+iomluqQfh1tXvAJb*ydf=N#w819qkiy5ie${A-^b{45Brt5Q0aWmL8m(q3dDI^ z2ZrrD)M&J09J1w#sYMDZmNQISD<3CR0BEX&6$e9^Jr07 zS!wz$Nu3Jobn(J!i3i4a)ot|f>{iK}PkNNv3;<3Ey2FFYGK?89EswecoN#=_81H~f zXm0^eB15H3lEtVQ!2~_o=Nv1A%uYnW?g5!HIw;L5jX*cW4nU={yPQ>d+GSLe9=p{- z4N5%syT$ zUylasM)maBE|&g69BY=?k-alHDqfbPP)f(Uq%kIsxhajg*3_6ZCpnBVs*k zJc2dntGmEB7x%Z zsy2KWQ&saa@wrK}F4- z!j=-j>7}n0Nzg<8B=Yh1&{SQZ!3)A|4KpCZ@k#X8axX}Sj9rn&5Sv6xs!U>k;g|a0 z9(({~lzpj{fdY=*o5)7(K~{j0vV%HHXj7#*1EA;$tjU6+x1XkfbEs3x78l?ANLJUR zZg6|3)9cH%7x@k5gDF#G?}8Hf->`y777b~xCmB!ugI!8_1(<2>QBOL2pLjEtJbnCO ziG3u#o`NQBrwwyi`ffe$aP}*D*$oE4u#M@Z7cLr9zxMEAyr6teS50plpeb?mu>Wtb zff$O$con@QsJR4)L^H*}Fl%LMS2t(HiXpCAHStE5vd}eKyd}UM%$3d^2i$bA%3Gv z1_5$bftVMj3ry}CP$@qcN<*#%XE2>=8pQK!SpG&eoPdwB8;W?PmeOuGcGH$+r0C2U zzlMLCnuKJ}(;c+chYfF&-JtNqsCI?9M&|Y^Nlp?9g@mEPeT&=YfXln6u1Cpec_7#N zHQKZm-zFo+Po$qisIcjs)#zn(6QS#%K%qMI;`qNn%K^uwn_erRnkL{h^zi%~mc5{Q z2+%8rRZp&$90jx_B>ZZ9JGyiCX}ac8bZPxE&0PhGE9d5ySLbuQM92ZIIS-F%46!k4 zq1)M^43xS$wZ}5dxt5m1M5crOsC)V&G8!@q6C8e=lE5;l7nz(sEp(0elH6L0>B-SP zdbCz=#mj-qK0qQ`0{n+=yXb{CBVS1O3Ys`u8|}w0p=&yL?EtERP|^>sJ$Ro~Gexn* z2KqCMI^|cx!>p)=C7lYon@cV&LDL78@SBp6{z@Ippio7`Rzin3&2=>ngC&u~ALX>r z#9WpwW%Kxi*kysyHU^|9$ttkK?_pQG#5dECY=M{0zFBw+-7b2+#co!jSiN?)KRlL( z@eK@1G(quZc+`lRdMUF@zdUR<0A#IA!^sj38K}N5omiH;KeJ=7C;&Nu{B8xNG#~5- z8x-V_GI945C|&Vf-T;++;45V|>aXC;?Adx0!yJICm0S}zarJ|x?oR={lcO921~XXx4pSG8c@~ zoMO@$2oC+|?Pf=wt!UEqY>1vP)D;ZGrnA)S*^vKV0%sb9?bp)BIghVYE=eZz+cx3d z#aq*NL%w!vfie&LLI%WzjLLp6P2ocM&w5$<33CyT}#7cz*ymh z4}ke6b14cO_4j6u|AQ`4E2b7`iP7AKZLh-CP~pOKF%lfE(5B&hahJ`nSNk1^h|_8j zWHK`be!w-@uEzUCaSR|yXA3%Tog=BM>?k-?HFOYb&O_PYGMsNZySG+$h9w_!^{p~k z5tT3V^Y{x0e5JfcbAA`?o<~1D@1&{E|EYOZEhLs3(A9Z>TuEXA3=Lu&kS6`8LbhdY zSo!%?*6G%wCUL9R?8jxVg|#}UsL%{Ztabc9c0WIhejg13h{7iK(StyShW(7vxi)l% zLZ6(iNDhs<>dh@GD!^Uh+*-wl`_QhXE9gHU^N@D}3e`dwZvnTV|1QMOFRWAim;mfP zi+;CR$;VLQf_628X8>gaot`WWNYpah$3k!$)ad8vSr~n((S;_y!T9ICMc~jlLiEXG zn&6V)T5(>`Qc>mr>mG$p@$@pAse|>eGolAdpeP!fLenot?tJ&hIatSTM@N94uW-{7 z6M!H(E~_n3lXFmiX>bI*whXH@a|PcFgnn`%tar#SiZ}ReN!^gg1IKeBuL% z18p1*qpW5>cKX3X)be*&*0pu!AygJUgi7+=2!sIv%-QW$cp!ez%*z$x2}E|*mHnfF z6Bk@utqmvo!O}aRV~`;~JOBPy79cme?mJbx6~h@dbkxMUq5#dWPn{px#@AqU+rqN| z`Y))%cYbYJlqW{f7lm855u-i=^o6slF=aXqv#XZVn!qL10HD}B@)lFrS+Ulr(q76PI zmA3h@vloAG>D7;Vc+PFUM*0WIo%DT?FQVjY;=*C4)a00T&Ug z{cr|KtMdjp(t-M~b_3ZBr!XI9riO_fbbVzWon zB|S+4-H=vQ`o7XiNVpIBZm3k9U4@Idap+-TZOxmAT&?9pm`7jo>x{OZwkr{Y0Ig zd)vjOh>2{!c%YTuHporAk6<@RLdh*~Y5A4t_RQx_kY89V?lG(dn zUV@PKU2ZbMDO|1BsS+yOx>6b;)soNJPt7&-or?9?xFw5X&LiPmvR?ce^h?PG` z4^IR9oB5z?ZvahW<$vuS@-s^WF-eR-tIx!VaATGISq?XGups zx=Foi{7sf1{lIIQT%3_-%+v){4KP03UQZReB{%?FN(N zOEAs5yud!rrUFoceg&(bXhNWR1RCrR=hw-yRMRCs(o>rwaUkU7MiwL64uS>Ib6#E) zAJ4J2?^uo=sLP_JMf$0-0f;X#*+5b7rb4AFQrD`eQ4@4+H?T5WwyD1|@&@>HjN#h?b(Obp} z+6w6*R1&oMOt9<@(b8&gzZ5!FW0pWqhLS7(CA>ypa)n2GQ^2(2afuf};v+W90GKIW zI>Vfa3VqA8MyKLM;j$~SyQ*T$0@d2k)31|M8OlmyN-(V~Kn#6bb%>{v$B0 z^KJdxIPMg0%swr7;R6aNem@mr0au1acrQ-R?F;ay8-B(k?X`K3dSd0}GH}gR%3Mfa zwZW9^BDp*jMw|L)=ycJHVrz1)<9ufy0lIO^#sO61E5EJyb|rnO+M}lBz3+4flYWW zw4ValG6taxFO_+?U=L_V&UIKIr{~WBz$O7{-kGXL(N{=N!qCPhKpM)0__EK-Z__(d zd=4EESx%qQ6g4sYQtBWYrRDRG`No7SadClW({U#176Pbi(c9o6YGc~jg2D~AS-B=>g2o9hGcCFRdBRXEN|!xQLY;j691 zvaL+3+yMuTlG&&b|BGp8RoeLf)x%Ra!J$4+9ZZ4BYBT5NtcDt*c?c$@l9)7uHg8tc z(>B>#=~)|DA<;>{rZ9fOhILFb|J>?7m*3>p_|bX`c#@7rg}SDSX9BDhD~!QktD6rL zJWxC|=48%2;?AjP9|2+0czuZF?H^rIVJ)J+`A23;dogr-`D zg-(I?x^^3qmsl?-AAyqsF;T#LohR2%75nY6)5 zc?4bd5o^N5JK}c+Gzc8A)rfu`FuD$BgR#mQL?-PSk#GOD~+~e<{&QoXwa!t<-kbzccp$Ug+k-`zN33z zj7;sK&x-6*^qo)`m@+fxNqtQ;G7ZoIyQ`a{NlF4p!hq{0oDhB>w@m4O+Z{Z=LF=ac zD^D6^8Z2Bfr9Ua~i6!W`d`Vf^F}sixY6m0OX*#Se^1}L@^qNhhcsN?t3i(bzbpNoB!=!cpN>U`NaAbyW?W=DR@AHZ$E zUG5Dq{}c9knFX|?0F6aaDg8kmIKnLPU4fsce-{{bGGh?w_>u1TOaO)XMwGs*8eg{= z({Gmf_yONyHkK4su;LbVn4~4Cat@^_-k@j-&ULY`SC_7IU8acM|Zao;pWO5iJ3wk*s?r#u- zg+2)@8vx8L?-9S5rBB;6atTdGV}*J~EOWEs-kvyY>WmVW*qy&Dda)zhMh%7Hu)_C- z5M4bk&6-2=euP!UxEa+)sB%z}u-9XX=yrwuN0vKkS^Q#v|KLtuu1fj5?J9(VysJzR z#$V{Y`R-2_`KzdCHCWGh-JGaD1S04GSMj>Rw3LIwZ8Dn!a>Yku2i=^Om5Rq=;xRyH z@<+7o?3V@+qvBC9p@2UgkYX80eq)s1qiE=VT7~YNWe(y0Qk_HEYTmx_G`&-z%#jV+ zQOUZv2X<)>Uy|yh|DrTnPVdZ)4S5GZ1wkRf`=k_@L5H!2n7_m3@@ExC2#XnF$}y*M za)I5>x8R5k(`T2{FBJ|qrD#UAHuljC)A`KhKps?}IxMQ6xPmUahL6+fcEBWJWuX|> zJTiR+R7-^g+8`~O1IZ(=;jgj0R9X(s#!n{bo_5-$GuGRV_R{GteT^;@tcTvjns}uP z4ww8I?X~}ZB8Z#Zexu3e{=APdDl3O=G%vKN7rNr8(7+w`CrA9TmAH1pT}N?pCp69=BqtYjg4yO{GnK@e`M4 z2^_8w4S(!$cRq6E`Ymx?ZS+pT8shGk_|TfNyX zly=$NUG3erw#)W@=l!QXp8{s)%caqzr3kL7qUjtLr4etll1Mc|8-ycL#IY&?a$_c^o{K`|J=Z4q{=)xn=k zK~&U9S7A{83D+>aFprMf``;EUuCv9$P|J&SPZ8a+^~E(Jn;YGM?f!v7Ils0Cg<33&_ASBOrX-mz zT=*!0JW6Gi8fI+dJp#-d+A%B*dWmDQHQ!1Ghq$`spiCE9Gye#{zl(#uo_8 zkRF@|+@vRZT+htX(nW_%1vBY{7wYBC9Kaj-oNpi;ZU?KQ>w^vbTIS}$wXpWWHb+zD zg^uoACF;u$2l?>^t(m8mpwOoN^n@pF^kIzLGlD+dqPq27y8YqSLMR+Vak-hsrLkOC z#5*g$n$fQs)&(A+1(+?ec~k&tX>)s{!205gxMfoKq-dBv&hUQtB*pF1sI>tyiOkjzGi?muGsb6IbTN-n`8IcTuof7WxxX@`lh_1 zZ6qqL!!B2KYxMU*RHy!HA1@BIue{zyDH2b2Je?CVCrtP7<}@Wggj}F$?O`Cb6qU{$ zL+T}1DFQgPgOmuYIG<;Y1`X5LBebTCdAf>kFKxK;A! zg~dDDei)Ds2O5p3!AKHY&Kls2)!Vk!h1V6!w)|$Md28sqbb4nN+VGEu(-)e4e5-|`G0!YST z145-xocZ+4j@Y(C=JWy@RtImi{vwB-GpcN@PBlYBO!uLEgk~2(#Ktxb<8BjU%VIHm zff5lUCq1_!07val=iajR3qh6Uuz zPC8du%Ib0LTVITtT{fIuCYqe)wu!+G18jy)RaDwB4aGhMxpy)4cSCP(-Ro);z`)5u ziS>5U!?*d0RZw3ofEe&%86yj&YD~B-yBJb4l4!^{MF&L-;LBZj*`^SUX)4pe4G08x zI#zwuiPYTgxVOjFIz@pl2(`(5#2Z%yP*}xGt%V!k16ExGUx@&JN%2h=9x5}}!UbR! zPQJo|xMfmem;}wb7K_p!3N3?CH{2t6e_ks)OTl~~kTDL8J^_SaDW*?!c7$Jv37cXyX3R(V2o7xUQLtZexEDrF zrF+_i9>$amt@2Vzz;Zjynz`d*8 z(;17KiY0E&lsYO+mMyjuDZUM+G0PDoLzX(e>F#DWHZ@x?%mQp4%S(PAJ{A znBD`;@CG_4`O5Ug-!}0X92ou30y(`axHaqP5WO=k5xtOnGpN~pi8RrDvm7DcHdy>b zr*#&wbYBQvhubCWMos*Xhn{Mo#dkWYB4-CyNOapeir*#*9dRyX;=?0qab$jUB}%mD zcWS~n#kHxo{3Kn>!MXbL09g3ZA145ff*pgw?6&3fwW>7vPFYxVAc}y48Nya--vOiu zfnHC7lj}r)u0^I$E^vo2>6T6qL1U?2hzY)%p0^h$MUq5kW;1go$QNk6x#*Kwy|MLN zQKrB{Q8&(BihjY;Rn#}FofnkKrQlxknd4*yp)9V0nSiQ?Qmq|O$w9l! zD?;070VF#>QXZ^IfG!&fvTRZzxH$Djg$V)%!xVqkF9~pNV>dL_=v0fpZl+n&6N;7v zIu+iFJeMlN>ZPJtbiXdf#sV4%28>M-O* zba)^ia;IywlPW?80-|5H;cIRRDdo$8X0NanXGT{yy*iCD?C@1|Y8ct^4?6)F%(BzG zY*&wza=*_zY$F56@^%ViJbR8T_qDoQOHp9igcQ45%V6g*2cdr#(DE!SPQg`^P7jYx zDG<6VCpd(9)g*9NYqG2vQU*V}KQEL1kgj-Y6)lGk(}WqW>kD1C+Hk51!63b!i{;r{ z2-k+FrT78bq`{nW&pcY=*fsZ^u!S(OyC+~~wSZ$ipm~^EZD9a5G>wRct#+A1=g2(m)lX@i3UbmQJ}#gHV{U0P9Jq4aB#h2p*6Q z{aKPL6KGbLT*n6DD>u(m<(*nBG;;*)3($}`mD7cxh+7V6IT@gS^N&iYw#uDm zrxzQ55xiYs$+diJ87gtLNZ_6e%sTn8y*oJlFV-mS8Uj5LIV)&lHYC`ZZ=9&s)5Rqf zr&!EdF{9HkL7k5Rv(~T*H5f76IY_js^jS6!`xG%LbzHV8vY6{5XsFQ z^s>j(0n?JMkR_eVUS2g31JYA&ep4E2>o4?p(bmfOo^C3fAws?RCbf+~$8*$jM($wA zFVVtb=wEDW@$G+wD{XlzUDvQw`S-c>=RtvpnT0-SGuxn{_8p9Zw(WAs(1JFAI<0@_ zDZlibVNwgbseOLqJiIH=6Ja=FCVi*RhSpk&M_tZBt%vqOV%vn%+qKf}DbRulHmL8Q z$5e_r{GMtRa5c0WuC!lpW_ApqrGvP#z@anY*GY!!@gY3HQ)R)~h-E%(U|0-khTzwa zpiv#;D+#jl40~Yvw({E%7bfwu0S9!ZF^52GN-6qdO<~Pno>j&KJ2X>eOTsrWCvjrh zX$H~%6r5h^iIH%*DA7|bA54EA7BSrzVNARs2n5np7csFsu}^e$m!TMSiVgI1Gfl}A zUS@6`Dp!hwcFdP=gaqV>n;)sd+8Q5*MY|oLhoYT!ZzFXKJy*-N9T}H`ckMgV`W^kL z6-1xAZ&TDrWIF@pmTuNWBefM4ovv>VdpzLU=C)&xd^>j4=e~bIFV=k$w&~=naSh1R zhl*parY*qWtu#+xr=n4B!{-HWdJ3$lg;q}zfDxYG?&G)Fg-*c zn0Oyqmx6JYl@HMA@f^`=qk-A3oe$*=2yX*J9rLmf=p{_){Muq{$cqB4J;Y zQXjHa;R6ILk{b=EC!oY!cV-9d>{@R|Ee7E^Ci=qR`aX^1WMQcS1zW5Iy3DLeyYP^= zq+`tsKSBmIzb<}-3ZKR`{D}i^ObE-ND0+$C=F%}OyxC%L#N;`LeP?OnE)2u@o~%4z zMk*@q-rz}-T1!0%&zh)IhlRE$lRm;?l6V1^^Cgr!CJtEiM5>gphO;(L=J_)yWu{-s z52(ple*gjA+RPO+*Wh$o>D7kls2t2`3!n$I0ufbHbZ;Wjp8oFOg3q_xVd4v3DPr`M z2XzdGiAv@uJm?Nubi1bmhg4ZwkI84E-={+MNR>G?J6sotzunWfU*vsw?wO(`-*=sFs#KE2AL0XP#0`=aQoEm0XuJ!? znF1J7vYYBvSUopoE4|Of1!w##JWkIF)RInz?F%K?5S2Jmy~U)TNS))qtl9HKclRkf zqp1(#8UIuxRD(Qd_Ddl>M|c93oG+d3dr`82+<+*V2f(-zOd7zba#pq(6Q)+K|a~mhwUi=j9csItu+BL5>5CXBUd{T zzF{g;`>?@Y30rKLkZf@=>uL$8$zNqte1ZbmJin9XR^d_<`~bN^{1>O?RZ1Gj%tu}z zOBybKzRt4)r$sunBs3XcxWu5=e+8vNj0TJchL^ zx*z>%(+W~$7U%6*PGQigOuowrNZ!^JUM!sRh3H8XwDDQM@2cHQ0-waWlZ;U3MOy%C zX6_CJyRzvl}bcZCy7`es=V;Ej4 zchh_c_)ezfYP8VRI@(jHU{ZSt1JTha_g$N}J6y|NR7xx~-g)|b${QspwonyK$-f(Y z9=pa5PlIy_PLb(@cy+PwYdJ7ddXB1UXjr;liBa=#=%N?Q0Naxmp%NOd0O$-c!L=`fyTCX42u!cK8lqxS zmG5Wpk%|X579qzFg`8Cuzzn78L)5^1J5GN_(;MX6ooxmUo*>1sk0S`k@qOpImRb3O z)Fi}?q%#X&p1;`E4<#jdou9#CN4Xq-(WXAKo+iH7j) zdfHMa!|F?8lA0Tqn4tDM);ayUkg{k)Hs&H#vAXi|; zm3BuLMxw5E-jth|2T$GXF#4Qpt99X$A0y4?4^Hn5z+kH8#&*ZF;` zA;IdbbGS25e@eppRG-HWjmv7ORA6}9x0Mb*-~T%=`va8+w03Y83P4O^#qMj{C)`x# z(}Q$W_SGuLtmt7hd6C0>UWO|!{h0pSI37#K0sBmD83o!Z()PBmHGyW0DskGL)hM;L z-GB;&)5$Evf_>E9WpRn_QNy}bgWA`Pt;~B{&gH_+oXviB%D+lhJ5clfSGPbyXC(`;6n57Lz@ zK3fhIMV-{RjtQLvHa;~Efs@IF&OuD=EL8douYDzbeN_0`_hoo1HI1cbmL)L_ZqM)h#F~dw#WHBZ<+9}f24?G^bQu^<|N}5G^VSkLL(7yi)I(!I~Lc|Pq#$h zpt+;jXt*+oo;v!p1EExc=&y@uY4@~q`;ffXs3HvtcV`4iS5T9R) zUhDMZx2baFqEG+#seJK#Tr<89PAAV8U{K%mXt z&vtODnKj4gkOF#iBr02ZeLledEoqKe+QSk3ewtg#oZt@Ndp_H+u^zCYgP=_XBu4O$G zvlyOCy${ed-_q&soU$`_@)MeC@gFv@`dCb^aHA~~N<$ZR`inbYxFfbP8|;2{fo9qq zy9V9;5=@Pv}Z~52y+>xXSF*!pYiVe_K(R!qmGe<UlBDqRd_?*4bAABJucOG`L1CHLzq(b_2IKUI?otl^!PN7M)ezh*N z!%|!yGFh{FsWilMmN&<>B+O}gOhSGCAo}u{KchY*h@M_B4QWZPB-mtO zGzUe)4(UpoDPxQu1euc#dcPYDMq`C+oDvFX_MNzHK1zYkcdM%uDH@s8O}@BYsBO^M zn8p=(I?M)ePyJOvz%<=kD5NIl6ZU=4kKy%23kv;>MfBlE=7N3)Y;_0`43#;ETynjY zCW?Jja0u9-nGecU^OwAwY8zOWgd=jC@Fg7&)3+l%$g*ZuwK+spwZN!FYkZoYPZr}7OoiXjep06(*-7zbp z@4!HDgT`pu9;iHQf)5@9bjxVkJw_-jGb}T%z28!5X$Rh45DZ$8!=^zw{iZ`OfaEI( zx#(~6$QMF}d5RjQzqI35d#CZf2^>yUu^6=+?k|LH;`tI!$Cvjmd`!VvBTRCA=i&cN zE);@li!?tNHYBB%+>+;C-z;73`Sq2z`Tm}cECi*2Twx`k2qC_nEJe2ts`UmKJne<1b08-|#All(1utofy zV9XF**ISU=k#`a^Ux9Up3&W>nxH!d8k%HsTB=nnJ$TwsfqFA>0^V=eEnD|B}DKz^J zkmq4kBME-)dX=u-N$ECzy}|9N0y`qVmN-}iSwG}p>aD-u(>aLW{Vs2aU34Yx_Qx=2=^y^1j-%b(TIqg$U9a9`Mi7tUgUgh9Bo4#>vog8|{v z+P&EY?J+P?snY=>6sX*9nIPd`K|IUlJvlIqF$X{PZ%9lO7So8!b>Q|fLh_X=> z@D)B)m%yi#4M6L`(zG4>wh~DFgE)2Ep;nVeRJVc${N-3C4Bi4jCqm2fC>dlp*Zu(s zPg#x}QSVMV5FlkJUt%YxlQJcG^$A~QKJo}-Z6nZCW$Drk_s97-E# zjRyuZ;gJ57V4-`KmT1hcb!@ZWGw%pa=kvZJPz&Y_q*w05le`_>_}o)I%E{ds61;r& zY<$;WDnShFg>-XQLoDg3g#c^Y6sEC!nKmuJSrNz->onW54wlr`5clxoK^l@w4)#Aq9KLgyQ4vi(b>B~ZrWOshug|m*#0B-ryWk8LqPD>CX>)5vd>-uVhJ3|gYH&?H+v zE@+v%?q|7NP1WDP!d{OAUk!0L!?^mKYrGw%oSI2KQ@6$W7E*(_c37w`cTs!V0e z`+vr3HW)m;DIVirY?ICDth>J!Wgg(8g!bp3$q0#&K)|5q903slye=@Jm`$Z6E3qCX zPEYv)CW8~l$>@IJf(0ExjHyh$+*aYr#9Rb0e%^>CWEw@{7H?aFVcNn%F>!$-WI|eU zcVdao6>D9*(n-#Tz!7!bMg7|Wxkh>@a2poE zkJAb@1Q7KlB|H7hu<}=I0US?J(Iqu7tC~16>PN%9j^r+EWXS6r^qpt$C-~X?qrSs3^B6%r z)uRgDwz3n@UG#x#4e;H0g3T{}3~G*iB3tb8J4={J=7nTUw#nzd9eo-i|Qv zcB(3wcWN1KmB%3Hlmu9*OqlA2N6ZanH8WwOM*zicPw8}r@36ovC9fY$W4IpAe^d4w zF%Wo;OB$RtGt0psfd?r(j@dZYJpbw<{;PPI(1% zkB={V5>#Qvkr!#TopKvmZ12B5jM4rvG%6P!*5Lpxm>>vg5An&6vsjGJ{GU>_48B$pW~CP07r_RZTJn7i;@UjXJPaT=vkzTEzXkYUM|5uHIhatF zj%3EEG+jYO$5f%5`33?Kh4g)mw-`eTyVz-Hn-llCsz~1v<7GqX=et^&G7S(p}gH(F268^>XumQ_XLmas5 z*84_}zNA8@@M{A`aux2F9k+H1PHhMPb(%Si&dR0wVx!^mB4xh24GT$8hP8WP#qzMx@+OsIB@(z3H^ADmV!T>S8bbI-W)VAONAYD=qH`^+_In>xJ%94Ac1Fa{0jQ zxSb9k$9byp=20~65Fn=t!GG-X{hxt1dMl{QJtj}RO6xgoAK<&lUrui9FJr+^4?i$# zh|p-MVjTvCFt_E18P!yK7yuj^ziw&5>8C?_S`wx0h2tTk&umO`eLfwKm1n5tIC76L zc<+_FFtB@!s!Sf70V%j)u)0OXl=gdM3BNiVv&Gg~6t}tEu~Q}!sCGN2216$uu>&1q zIwW2IEbdfs@O9He!|8f9rq1I7tU+*{sqites$RHRIF~noxhfw7csw`?^tUS<`U8+~cEXUK4JVP)`kB zEd^DBQZqd!=C9Yv1ruEzF3P8rOMRx<_KO%OM6&kRW95i400fC|m#^UTK6E za+NQ%tm(NP>-5r7)m*ofgmggodcw1Nu(l9YPZ|vgKp9Zm7E3V&qgLCIA3}PU_TG)x zetN!lvL_I%z&KE4`vqE2A&PDq`)r9DZ7ti`ZAz|EAaslNX3d%`)y~tw=kb_?Ff&KTX8bP(w%QikpQifx0nL;m@`K~j4&oj^~KICp% zyVImA!Kw4Z^XW#IrZZ!VnWpE6_8@;|Ad-|wEJayvVX;aJzj7ac!4_W$A9&J>S-J1? z1f%wmxBYGN*&^{m5BH0dz}~@G@rw;_v8q4_nind=5JpeP10obwFsE~7(eK%^dXHUul3fMIo@Q$xW_UjdZ_%eMD;+owQgs#83E8$?& zXHO*Y9mP6Ftno56J1G;lZC2$B5OYlB21ll@3 z!6NJ(Q78tZriF;5!AP~6%wt94lq)IVuvRG=ZuYKx+!enmpz5!a+zkDJupT`0D$u&8 zJ|Bo_h+~LFtst4w!W8sexf}@Di)kdSpj2?^*h$-bbXJnw+dxIBiJ(p-EC_UzR0g`O zS^sJ6b~-x;v+k3l_``!7(*xZWjC41}aMa$o>fH9gwKT?AiE)+-9y;_8eL9H-p%kUx z@Zx2-S6k@zA(S?c{*#z9qbazy6E(!2^7w=_mY;W#D$XfM9$~A6-W|^OW(oUQoc?{B zPTmS}v%Fr8C8c>I1}*5)H3_IKRl+#HHA8Y#M6?(raYtcc3dJqUqVi;#H;TV3dCY)^ zT14zPl_f=tDVBQd?q!*Y;<=!fJ{v>wYMPizgCF*_&|#lk2O|W&{xrkj%I86~poQqK zErGs!JX@L~XJD_`LBGH$g0VYkn-v`n^R=Xf`!y;Wh41G-%SzcYX6Wov zH%m7qjFVk&=joy+sg|)4fb(P;)R`Op8PEFTX10z$wu+i(c3u$<(^l|Nhx&u6AR(qP zmg#rhZSS1MSEW&DwiP zX5`v7ffql^yM`(_&Sa}AJJr*)Rxm5|Z9?Pv6kNL3Ph~cH;@hCph#@w|0LzI|GxQfx zZ2j($1j$9us_?k(e8w%xMl24t$h1*nZVAmS6Mx;ne?M4;P`6qXcu8F$lT&o7C#h+q zuoRa=IEAMAk+z0Z7AkxqF&LIb_`cKj*=S?O;^t5WM%wm6Z#4(fzAAn*OfZ?mPtBlr zHn3%uS*;^2i5Ys@%-9dp=*fHzUloH#_sHqf+S@v3kbi+_Jjbu6=`YKDHY)@W8}ZH> zh+dQf>C?41*!BTMb5V}NljN=5d(!3+X-bO>ax)|Okdj_hT5R==g%t|Z8ek56H4h+b zK86YO;t2;j+b*2Hxv$uSKwba$pAKkU8xgFkaNOmT_-{4@X|ePS*M&`<$SKrbC>BY% zi(eg7dgJ`nul8F!T_YIm%iB)+fVP^2?mnGQYk$r}KG^wSg_uq^njBbhQJ@h2Po8`Q zoJ=rK*7bi`Xb*r7oLds@VZeg_An|`uLNcfmza5uhzS{w>6anhPWofkBQzC4+1ipbS z7}+j3BeC48gk5J!0#Q?fMXtx{G>lUwZ!OIp&Ci4}1^mX&KThYz++>*uO2v_MVGXT% z*%6!l)aLFMj^4r=9W?lUyuX7^`anY&C(++?EyGk6J2HIE+!{T*@iVAF{Ye5KG$}dK z-4nh;X4Z6=y~>VHeD6(2@1df zleunDz|OR0?|B|CEHpzF&i(p+1t6GfJ*{oW^9h;7R|rO;tDK7Ht#8oi+F;+Ko)A21 z_pwPPnt3qc7fcrA2vl|&%^3;KyU(t_uT0QPucrF;ti4Zk2l=IwxIQ-TjECI}IB!Mz zTl88lU?VZ6xiUszegEe^2Utj_Y<~LN!ogoC^?k9-DoS~se`y!(?JKqbN&+c^rRPVW z`tm@@Y|ikv#ks#l1nJ0h)|1hz7|hzNh9Qdrd{WzCP*RI0W)}+a=yU0h$w*wxT^s#2 z(P{r>v=9N`vu2>+b$s*F^Sg51L&t*!FY*oJLArR6PUO;@4Ta3C0!5p#@b=74AL3uV zC&7~3b+8g9V_no$O53|>j2DBf6B0mQ_2YCp{h}hgJ-%9_7hEJx zrhAt&+m#>VhrkA*2Pa_~{`{td2KrigA=areCc8{Km(CruGMmJgm>ujQGbL5~D-W2= z13#CSz>`>GlWY7@Abt)I>$;h)6A?8=peuj_ag(g5t#bvw5E`;ax2hNq*X=YPU6P ze|V}*8$vUehOav8Zs4Cu^u5o==-%lp?s{Z6)MsM`3&Yh1Sh@+Go z579*j-HRqx!64`xr$2oE5ctCwmIbwRX^5)DbY}Ln!B}Q%HNLKxB%G(+X`ZP=Z#6|IQO{C0U!nT zi12$Ac7Vy-)fcy63=>M;Bwsjd=bvTLRF5p0RG(hxjn3YjVbR$PD6m+WhvRCKY3_FVV=n&vsm~#64Fp!I+sVpl-V~luB5|XGQq!WN zgn)xx-S}0KO3$ti=fV;>NV{_Key2g7ASG(D0=dwJ zc&Kr^{x5YpMjYclP?(5-VgA|#6!)`gu$#>E%w#cV9e;NP+*}xso8jf& z6zBQtpkZC=f|H?Y-1NxJ>(+t7lXy(YDET&yDN&d;Bhv8aNB*&JuTW+OZEYi?j5c?h zYM67~usm|o#F4O}Q|j-i30tA|6RlR7aKgiQLuXvh2SIvecwiy#ip6K0+&F4dQh|k9 zLWt1Vnao`|4xsRvBiiYk`K}XHD$|qL_;?f?-toCu@XzjIVz?f#gr^R=T{FNW%P6M4 zo4S&IPM&cDKQLo6hQaz`x(+8J8d)Y@OT|P2K!zR+UOOc)a1H>7$8>t+jEpX|ie7k) zI)>2Vgm1Y{fmN%XKa*DA4l?h0%ATPLU8wBss7}%B(BIN2EzP&Btll&`iR-x1b|US& zFP=%lOnNj;G5`jzEV1|%4}c&mf5TatsrsO_uLo=?HnSGfl_JY)aFFO1Tu1luHK}>+ zIOBMBIN&O&qtR)NlhxfvK3RK~^4kpx<{>^=QDl|SX1$Y1h#*rTgnJ9dihrL>iN z$!+9aiMVT{A!g5@V^wZU*KLIhyJ_%z+B%-P#&~Q>Q`j&qXSAeP8MDtYO`#zpsi)8b zHBCg|)umU)!8yj3p=idH_u&zO`GTuPOAfIYMO{9BFPY9e9Psxm$3iXX zr1kXxB0Rn_ML^vx9m!!xoxPIFuG9M?^8SXfL@7t^qT`iNg^1>0r!EDq4dQRyfTTL) zpx_!>*#qw=5Fc~$rl(BzT@?hI!-KR8zU3$Vte(k#n2T%aKgIO-WQgOBr~7{4`z88s zraP9IDK^9{o#R|W3vQsxqa9Dkw&jvYYi{)`M&%U&9{%k@Pq{EdS#JA!9`b}hTGHT8eyVM!~#BxIs$D5;_^ zD{@`vw1-?X=%Jfw%2*{7x2f&4+UXEgUD5OCk^ACqdbWVlheF6{a{9bkGxke3Z)ig* znuPChDwy?09rk*#&K3Tm!w1(xK57_$L_*EgR^{--{?kLZS+Zc6!#A|!q6|rvdXt7w ziZ(_^w##55R8#J-LQk*J%AE#^sXP5N_$uCv z^fxh34fy_K6I5;P!~nHL4=;N5Xc=wEg^em8O8ULb{w z@uhk`tr;iG4_*dWSk_pa$uL}ot9$@Ngh0=|vljOu!1(cENFr2xoL`Zk9kV3`RUK*Y zPMU8MLTaQZb^D6S(`j3U6qXczmCImsK^1Lq<`*2{On2()jfb}JFX&;3&mPI2&cIc= zT8|!tYblm-X}()`{`Rl!=7qxf#CiUp<%+tw>bX|0g5YZXcF~&7!OP!#s*J7s>3w4o zGEAbTd~GdCjb{x@aU}-!?bLROD$-%Wc^_hyTkjTBVW24JgYW3SLkybeeZ~8W3(I!) zak{G#I8=KM%r-r7fZ>5iDt-PYHI1itz?D~fgz))JD=05%-21OQ*!egbc0cyj1#CE_ z^N&20_`SO=g0CF<_sMv1A9bYAkI$D_*y=xBxL+-3-^)ap?V!Ll(NhKD2$44T$!(y= zWNoq+#+X#Sl3Q(Ztzx1b+9JX~@*4C6G&qEGdG{`mmF43s#te3@f zF_Q3GDY^yYhsg5TpZ4K7XS=e8>w~B1GXaXYIsgaI-Z@c^%4YPn zPP3T3kX8JK4hm9p_5K57X%NJn~*rI@%_I0QWOOw%p5jx_;ix?i^-{ zB|LCk^teVhH&TY*ap9?h_CN;`C1^ob>%(+@C-O8bR{=N)k?YF~kXWht`ai;?gF~-d z#ntuk=Ab0RGaft9NY-_iuW#dj-a+*zSTyU8#bNju&?{ZlGDhpdMyAGdPDD+uCi~@U z5~H6M2&(}#Z4&9TJZWclj7r~CnR!xka0+}eC^?gL^*_a4q1odCMvyUOXIm6zQ*^1c z@KSe$?61;JTj1tF!EI&7|C|;b(#`)fzqa}{Ekw+~*2EE@pT(fTys~Ep$s6)%z_S%mXt_SXM4Sc{d z8MO`OFV3KY)vx?ucS@@*Zgn7F2xl8_NOmk(W|@(Z5q=eo(({Q~SX(^YZ%x?PpnPq1<@_;U$Dz$H!Dom32O z;G%6{5J^Krv<>Gso{njQ-(D*~U!t&bIPHQbMsIiHzrSZ=N&2(2b(3E*UqiWOs)NkZ zOOjxY@OuH!v~Fc)-{+K*hXS8(AFV7?ds8=1$@^kK5MdKSK!4S31p%@};79VI!<=D; z);~+!LAyQ@-epRBvl0VEyNWIZJk5*^^t6Ve{K=8hA&_Z1lWDPscBnvX18N-A@BOdP zA<4mHW7m*c+JqaKUYy+-ahsFcp^L%Il@70*S!$ZY16qkE&=$TFuBFC%MO!m951>y^ zG#)N<{2Fd`nSd{tbhPKNj(7q82@d+dJtrYIn^*Gy47s%Vj1=WO&& zx=&|)WV^An1JC0; za3^!aTKuC=sHG+q=p{Hz`D#7us5EoL?E;tU|C^L>^xlvRfbf7TQ4-PNQiPwxs6Wde zie+Y0w28?8Y>LFf`SiaJ+h77_7nPGj5QX7ecDi|RN#xYN-Lv>6(2HB`cs-`O`s@-i| zcw*|>@6EJ)7PWs$vreP2taw0WAZ-*D?mcU99eIMs9F~(xJLb9tmYdXSc5LA4(u9f6 z8`%Jt4!ZMJkanL#cd+J=i8?A!Xb7H;%H=dL$L6CavK>Z`*Dr5+>rl{KhzW*(4ZHfjrRl$aXx{iDKQ zc6Z2PHlN4Wl+@M1pk$#DQ=g~h=`?Wyv+;GrR?v^O#vs13B3c6;2EB4dWZQfvDRq+T zgQwj}4HkHVj|!Jl@!fC_(~|gS#s7~y-jOf~*ED*9XAP|cE2lkem(}&}3JLuo66^3I zhU;Ztnh-64mmC~)teWCYAx9)lu{oGFd7XXr@y;-Ws1Y@@7`)I?@V(f`5R6`7ISeUs--2|J9bR9 zfhYhCC00iWcv07~d51@URb2D5r<*azvUS`yDwOC45C#D}ucmPs1KynPmp znn1jl+n8W=5y_5xLp4eB$umOMS+d)XxlZ1oite5P4?I3;u4heM z_c%ji1mK#Pg;#iF41{y;T7&Klr1V~zAg7Ds-C3P(V;vz8>!}C&wW;sx-Eow4bAmHEBz=5>ybhE zqTd^UZ;#fo4(HG3i|_((LznHEI!b@kHbe;QDzd9UG6<9LrW*GYnt4bYb5lR|6OWE}cLFI3*YTclW_ z&)1J05PiRm7R?eqr@R~GM+dEPQY;__{q){)2Nr5_VR!s#>haQZZvTVc2WR+mcXpq) z(U*h86tUk#1!=Oi08`Fp)|N6ARw#3nl205dOWNe_cTKrFgE8}wsIo{?%Ngx|fVQl_ zJ*{FAP2au&ZPb6Xu|(aTZm$L^jTtGXtp)BIaRi!+|#uuBbw)gPY4vz!68G7m&w13N*D z*V6RKbrxM$*0z}JZk4gK?$gz#e56w*t5IFDgAK4b7vKTWF?wmmiZ5EfN<@u;!aocDm3Jt8`WXw;nZ> zue_fYWYUPtydAO=e6Ge^H%q~(QT zbLpl7B2<%)j8LV%n^q1EJvXV0T84r^bsjU*R}$NJzJaP&K#}~vyo#ky+f(z7ZMm4l z%uF&W5Clkv(v@c1`7ZjOcN=@9S*P0giDnPFY1ZAM2+?Wq2MEPYUK%Tjx}AhV;F_Z>f3)3uwNZQmgtZq3(#q z;0SY|PVtuZMJ=wP*Zfro6Y6r-w3s*P-%0sZAwKpQB+_AgZOF6s!Mc$)uR>?rv{P9UDNFVU0iVi4Um-N{xw4F;FFbodrUIZ$x~VRxF*OjJWKrn3uTZP5kxM;Qk+>Z(qUE5T_*$$alu3eI zOKsl^&+?^3aIIf6pFZ&TcB`?J4b{uGrs^qS2Q|S>oIe5ja4Q_qcrpg|CTD0f-*5Am?WO6zpWk~N$HkN7^v+{6S0x09DS9CT z3}NYrwF-747%vEbSTXIxZrss<5Y_v!!3(*JADO~$of$nQ(Y`*?oWhtCL5|6Dd->rK zx;vSa3HY-cQ?L-mrAJ>8(b^qbMjJ8!NO?|?4Wou6j#L|RoBRbVJ(Ow_j=TuUd{X~@9}^ug6$^}uyn4x=$ZFaTW_e}*OTKVjbpcR=4l zhsvlU6`$h`?&)P(x?O6El4A#c5Q%l1X0{v7<%OliP(6&?L6w_aDZ` z{f!b&Q{oH9`L^QGzZkEWkklMQLO?WxT5ni3jZJ3rx#ID&dc$hIa?~_S=9`DpO)xqK zbLTNP+*SrWE}o5ZT}5hOK=C~r{~6F|^#G)Z`-K38w<`sdPriSPs3GR#YuS1mvs+#Z z0vK{K8M7r^dr`VvmS_}v9B_RM3Wl(nXWycyifG%jvdFhzlp#>eppOSoWv&Z_bca_I z4)g4CjL8{2;zD6jt99n$rU0}1ZrL}zOn`+f6Rw7s*Q&)}9ZzRQ(j6->;D)>C|6=kM zX!ajsuJtT}f)&(DaC~WTk%lRmhImvJ9^1HkMQ4Qn`dBGS=1|+eOjEZwf|}_zjgB<| zx-dBHdx#e0(IOjl9EClOUaSgp&>#z@CLh8HohE5o(soi(8fef^3KS_iQ&NbfXuyIMizHeE6g1qly68>{m3rNv z=+{ftRK?p?t$@4Uos^43aV?6MRs3$N;CjKY=%VXw*Wc6M{;{833h89dIq!Mj=Y8Ji z33s`mr?ENcrmOl0dGFTMQ1;({X9(_H(6JaWA@Iz!JK5XkGtVU6VA{%=+Uy&AOJl=M z;_rt~lS1NqX;l|WoK7yqxDDB`>eDI8U`od8tDqfK z&I9h$rk;fw`18|q83c-jy$0HXCQmnZ3C6~eg&0Z5vI9H3S6%=)QwR}$Mc88uUtn$x z4sAt*+!Y{-oplVb^d0+2C!2_B1-ku+t}}@(o3xwUi`Xu+#0|VY!szWSVGnh|u)403@H5-N4AOy6n*HB2QbT8DTI;>xR1pe`q@` z)Gq$o4d44EPMt|1HArx~cfSSd&o65E%LBY8uthBN4ruKL4-jvDxo!~uQM&~&AN%kH zJv#tX7Tlc$P2>FpR#0R;c*%Pn#a0p&N<0&}&~ z#>kcn?}t}k`-pbSMRZpfN6PWj;miK~^f^23IDUK-Qvnh)TSbS*VBfI@cqnn6m*vZ6 zp1o!vWE6YZO;@pj>r{uOrv7f0r{uyzUy0?8 z;qJeKxb3J71J_`uzO3hpLh-KybaAR{v0u+YV5;A+I1%&?)z$KFblWwtOwI|y8~aQC z|}AIt{Sd&t*@0$xQb7dXUZ81>RsPiF7*}ag4iKyKXL)$nQ)4?)|IZ z9U4JTH^lyMUJyih`juy0qvKWf;3e8C8-*mkeypr%w>uCTZh}_e-)AG}O?2;nz5!&l ztuY$cBxTcMXbxLpTi*WbhGW$+vEWBkW2;*ChH*y|(}r+J&h zg0}|(afqOl;1aMosULG4XbnM&y9ez|9CLui25q3>=hYad^743s+6+Jweq`GKL~Tm& z8d02w2Jl}HnMAl9`)P>ItWOccv2n+{-D))=or6HrY$;uY`fLV%x`gn;e0o;{uMUTO zZW9tS$P7pc4@26?K;>DOEiIi$bV5fO-;CbaLM6KI<&zbnnD!mXW z4DSG6TPntQl?x36=sXD{>hDWG}o&YHqR?x}dsGR6| z`OK1w;*}+ln>jQf@%B_=5$~!|O9Z9gz$-EcA6Q-QAnjSpg|}&uc_3{Cwu8REM>+?p zm{}XCKwv{v1Kl1X?H%toT^q?b3C2?q;sl|SK&#uWqwWEsI~Qf^uc3|~m#V?p4I|@- zrwWgVr69z%T+KcBK2)Ko-QDM}ox4r&RGq`8R60HwAtZPRP1E9(FkZ#;z&Pj5&Bj$3 zI%CZNLd-Fk9E*-tHy2Ed864pMlK#MC9v#tE(_IJIXRoIpr5>}DdfP?lXEJ5(WqiLq~c8l`M1!=KneeNETsVd zacrD$@?vp>kh3o)tEkV7`alM!>K0J_LO_BkL}~rl;ysL0r zac_VDxugziUPovWUm?FfP!NSzJSiD^_`|}Q&~OyLCVn)zJ!)fDpwnbLE=K@_d zm%4{3{;{7nx*-@in7@=(gRd)CE0)%GG>Tk!?2&of;vBKST?$x(#JnPqg$PPtet4k*x_${5hj`8ml z*3KUs0I%<8ifE4X+Cti4VE<%o2=1jgEMNq4k-!qMTS(S)Cuc;+NKNyx-%1UEru203 zg*v?2NDl3!2v&zi0zWnoth4=OVYnJwq0veBbOF5aY^aMRJKXrD9>UZ4331k%ZO0)^ zLL8|Sc6lg5cxMW!gq-XmE1Q<<#8~s}fxEi8-E^_&aQYza+#mKp6{KokQR081+K20lc^n9x&eLW}jUp&?X_ z>&tIIbw}?^ajqmr4*gceTc@(yTrPSm&|NH2HT^Dv>(vsx7PbIXPWr-pic6nFzOJ?F zVCe*|^Zh=$V_U@xn!ZMXQiF8k1?GuRaRh%`3E_PzbTJZwPww`h=f@$$+RqM6_`~bd z@P&CtZ7WWZZdhBDu^I)auWqD|CZ9wxbZJZRqk6BN;Q;e+^GxhdNh z-hZ{I5i%+^{c`t9YoxqR2OcP8TLm>ZX9C8x49?$!UI0h1Zrs={BAdVOyu?ChZ|s0$ znpB5c6olSwFzE0KsBR?ioR%H90LOzTe3lR#Ig^j2a6_dZMlEB*Cyz>Mpt$cIf0gm{ z9yOz3nHK1Wrss_i$KwN!O}x`0o!E6we3nbaHpO=w;hYB^*}flw zTUo4iJ?WdH;%|UEvxt!7Gn@I7f8KrjqN3)t1TUE=oe4r$Le-B{MvZvmnF*Tw2z)Px zIXR45PfybrgqB4bnA0Jk7%Dobd^(p?g6J0$%igEt`GAM}b7zL369+bHJHnLOO0Qdk zqeL(yVUv|vV;_oNywE(nY%v@hXzY85CoW;M0e^L?%OM_qz4%XUg;sfpf=~s$%;ZcW zk3Piv4fFr%aVxpZN`Bo9j$(pG0YG`VsN-`YcyNy|xl3141gG03j-6`)aS{1s?laOG zFwxMa4q>B;hsxzs*>EX6x-9|i!LnfK$OWd~7yoVdRv^S$P!b~~uc|W&-U-IL+Xpz2 z^Wp6HhYRUN!4X#_krFtHMxdfDL=4a*Z1f6z05{9GiYuPd?cHaX^R?*G2k0}j1Ghyg zM*;#*93AkO8WNuu@|ApFr+VZFTKbDdacJP_V0NHxblBYe8N z4iUlSY){c5Cw`Mc3;bl!nq%h`wUEH-p;kzT3vJsS8pmf4YJ%<0QVJF*wqXju7ail@ z1xL2iqT(^lV67$dI;Air>+b2GAMvSyrbl$VRS4rrj^6a+gzv+b&)oPIX&ps4?d`4_TNyorOkas) zSsf;HI^3#Qyp-25uGJ5nNDq=ILGX`Sgj39=*bPt=N$YWiBuwn1tVQ*3WQ(I_jK{9* zyhG(jEZo(v8c|$+4jR<0f)Y1A+##CP^vTf_Dk(D3eR-WtJRPY6`7IelYRc2`l&&}? z(A)x_u+%~rFq6?T2xqrP@K)OBRIF^iZKfg zAZTE%V7`l#>Pvj$DDuy$JnD``uX_F7!#D6V)LJ|;z&FQHXZla*e~kXo=X<y{=9eUX>`os}X@ zZ2FuS(iNzrPRQn~-cMvg)1$~+#@8O4xUhM1-f1o+eRldV)^c)Q;5v-hD0D{Pm&o&< zKK;l(uh~2>ZA`iHBazUzru%K=zo-$aliQjWr$6O+ujvkveN79)ledpEP_N{RNF z6g0@7jGh;DDc+Q*fFl>AlS9Y3&m8=$yYq|+J6;K6EeABJsRSjfe8CsUXbJM#xdz8TV{{Sii7m0wEq?RW@*pm zhxPOl(y)7fQDuM1SP>n)AFJ7k=LgF zI!#Wdpj7Gxjyt5?Ebee?8r?2mW8)+HUihMxKAQYm(O~DL)fRYrP?xq+fLfWSUwq=5 zfzw{1>_w$P#b7o8*)u1X^dyj!vG2v5=b}?zjBa58`$lX)0!5IgwHidM#EdpcpA>QF zvR>J|A_-R|r7bX7~pl*Ml+4DkV20&JV-{~ygYZ^zm)3f3Jzd#U~+`? zx{#`29ty7U@MFtUhEKz-=M&xwSFf6K-%EF0>b_aKP!L{CAaqhahdirahrYUkLeBK# z)R9VIjH6Bk{%v<87BPu`^20a>wEQ3;a|zzIYHd@RKvwuo zLMFp&)__HdA^Dyey~O;0eJ|q{zB|#9SDV6>N5{;0v59DYuvKs57zz%kdW>iE&c0D) zE-I0!L#?z~xahvLtCV;CM5n3wCJ1CD#L5W2Sf>A0$uMii`^OUw> z2|QpPOq6-0J;0)ToJ?&A#eL`Ba%>7_zzAaI5n0FA7@HU4wf)=G2sIRiKI)b&T(x|l z1JjGP#mCx4(@0fpxfyR#^eELYD&p>$`i4A}q$d*?&BudE((#jPi& zcWc!(xKbQS;BRQ!hG-*-#Tck1AwFxDtZ9P;uEPkJZftG>)3{e@O$ojwkGirY5b}`` z%5{z;z3{T)%X{?|+u2%4x`q8xI5vn=EoQCoiY}c-E4PU?F`b%+fM<^Be}KSVka_g( zVioUsi2`cD$^DvN4yqroTe~_M_?(cnAB5G2wcj*bj1l|HYm-iNVVq3WB4fADOz;rs z>H^`B6(4|LgpuBsru*vGOu=_m)%`rajNv4GxHFn+g>nhQT{h7TTOjAHK@)4v5p<$R z`s=FipffUeEbH+EUL{lLiMqec)Cb8d{}hxF{e&K0n|mR>p$067Q*_pw}iMF3g>qIKtKh8E_hqNC*{p=1QXd`oA6$;&$0ff?{Ll2MGJUKA1 z?nd}`qfk&#nuxSD4%DO{q;`5NLS`UAaCP-~_DNMddqv_qGwi>45(OjUj6ChzJo;+H z)pq1S>E+i)0YfN!-xGWTO=bhKmdKBxm?4!UOCs<6P2f{zQg3Cm_nI{ zY|81GdFpK;QuhebA)I=Rv}T9~{H)Af7uJRV9m&0WLmHY1EE$++p;V=(ik7T!=8!|S) zc{{nhjE*J4+Cde=)i4r|tT`nMB|HQlFmIh9NTVqqBzOya2FL8^uNMZo^@BO`6SE+O(TJ(X0UMT)brQg{J~l7}^B*!1AS5SEc?eAQV1saXo8-XfL$d#1(DY0kBq5)_V*~*ydw9pi)Le%JaD4FxSh&i%g__53ApvKdaJ%*ooc`LpiG6NS ztCUUF?r@>R7Jyz8$-L{%O?EL_0vP3uQa))mapzgSm?*hM_p6v;nv8E8;;_ zWJuI8J~=6w%1P*Nih$;l6T(4c1hg00`5mE+bZ^8qh+-jxY8{E36xb^wzOrl)TcNTC zy}Vov3u?bVL(}Wc&;UUL2dNDWNa+h+*bbdj_MA#; zg?|zySBXBnCPfI=n?#_8bGO*KEzNvLfJO?5t0{+1kZRa@-c_U~g}tUAq0C3A)JPnM zM&5IFM)0kRbAvEL)*UWBIbCn@r@Ms8jBT*FdD{O2fDsjr{8;4c%Yg)2C>H@zW$ zCGH~px)gDRk8B@>!%%KLy)`{LT1H$G4+g`}HVV}P!_hLXPlAh3%0!wrOlyJ*Lk?1@jK{B735*#k zS+-L~9%9q7DDk`f3(+14LF{cz(g_@{ZF$q?o0E^f#l*aDk+N?$U4_G9i5uC@BE?U# zhPJ$jep}Tc2tomX-oS=>ayCggh@j>;m)t+x==JBZ=RKrYOBV;W^Sthz2BZNx$-0`> zrdkN##q2H-oxF%q)#=?0QW;{fHcbxk#6kR+))I7ucB7BQ9?0{R(|+7xOW8g7?v+1H zd0nd1ri-}$ITv62@|EYLlhwJO-B19I*p-1KVsWprk9I=fZKbaTNuKE2d~##ax-N-S z!lfBhId;gazyU?npwVZN^muP2uvj#V4EA&$DGDso)l_yX@Rn2;O`L&2TuPlypQPWS z*Zawt_Qis$Jf_{?U2)6ktU8{gi(A{ELrN?p_Y*T7x^r^~P>fx;^rx&#B7JMCmJ4yX z2^iiLEUDF#RJUjQ$@DxDJA`uIKl(h2mJrwR|E`z?pJQYNMT8#^q~+GS9EhZnB#zaY z30(|6;O_6slv9(&XK)J zwK4!}me_Yo&p4ykmRxv9_Og|>)C=JLZcSc(O-21tW7?t?2VbN-IcS-)6$9uTSqs-|R z4P5$|ULk5{cE9Wh{1|lNHShgk^mcld0F<2V%Hy3pdvly3>Il@6{9%baav+xP!NUW} zJvmnJc6no+FmPnx)E0bP*Nt)!38`oFbt1FPUeH4_1}RSLy>#gl=Gau!O%ndJ?+HKN z)<++Hd24>tTcH{r_nN~u0@1)Q)3ta#4}?iWtS2w&+SLwZ)}k+Chri7JHy1aQm2U zz92)|L|E}88Uc$&r;mv%8wF4&8}iOT5OkS=gKpH_TRAPTSSM==g`(;R+^G-1gZ&2S z##9DlWHJ#)zvXf6Ugd*5Y=IhX)%S98$76357M|Ma{Z>+3m=jKy(%%ASLPVX$bRt%> zs)BHQgpx^Dx2E`FXQW$VZIHZIW7I+&0E-EO%pwC;fe?Z63r1?1t_wUPEUs^9*DYcB zE#KXu(pH0$*1Z!r3~C}Z%yW^G^0)OA#grh)cB9IzB|_lNRtURe1}}))_3dy&1|?4~Oumgv ztSH!GA);ez3p=l_msLzl#yU_1IYI=2v!51+ez&2)SZ=8XoKoj`ao^!-WOhi_mo;p? zVW$5?-0a)!wxEbG#b!6E>H+QC9-B4zLV8!@T&eM336urdUrVUq!-jAaA01$CtG-;? zb^ge+U98;89xl;wdtryzQcK@cItdahzuKSO&)zJ-W+44A)RF^NXk4iey>(ks_^LC5 zHYJ7gj}8mX!|X_b>O<~kYFAZ6 zg|@?H7x!yF#it;N69I5iqSudD;F4#FrfmGzlH!>@#Obv%sL++-@kl&taIW?UaX3|q z6t6dj6126DxpdH(i6<$z%dSK$e(g{!$)m{REuQL zd`h&cme9qac_iH=ke)A7%M2{ zSM@b5W?rrDI;MabvSV~@v~|stDS4}5)8fQ1Cx^LbVa0zVU_@mJZ*ENU&={ao{UmWD z`guf62ma|!W5_(Qg>GyIZYak0YWba{k+ihzDq#x`4R2jo%pb@8#K^afdk{tFIg)6S zS-Ff_)B#p5Tj=oy-4aE%Y6?oOH5>$@?QK&NmIHtHALGalss~j!?+Kz?hhx2nEx|N& zfD1V$tj=**W#o?9&l0b%WBtq>Tx1qUee8_@JC+Ak9bjGXg#CLV`Xy$Ka`Gnbs#Ae3 z66$1+>8gdqWAzny4bSpwj%KMB=i03I@S^p1{Y zyT{WWo`iGN+VMPfCN@}J?#>|4K75|v(rF;X+p6|(0Y-1xYaV|bHuD!`BG&2&T8A%o z4f1EH1`XllHB~u-Qy~(?E*?+sRBQsY6A9hu)h)=jz1Q$$>zt*n5llWrY!^zgf)ZZN zvio46SP( z15^s=PSD#U>EF|@u;s;_7-=C6Gmj*8tkDm43B(zR>_?m3Y9tU+%?S*AGLg6!m7Jbd zQq;RhC+f~$#FXBMC@PMnpt*eaGHgMmmOU?Nzqy+*q{!#)OwSF`P|i%Dm44&+O{N>S zlF`K>3fX5>EjI`c82L9sqO3TD$rqYpcNBmy`*+O@!R6UTZLSyY^}A9)5}LjLSEduZ zd0cxc^lgey&PC(aC?|xZW!I1mqa28$a(<#y*QQQuKVNHLum${TyU@QXLcGoGgt&P4 zIf1iiTS3%@#M2Il0-d+3>0M-2)z@x0k?W#0^c|ntsv`)tvz8*B&$8^e{kwBbYP)8U z3u!@}iA6EW*4P*C7m7RV?&m@_aoj!Lnn_9O0F=Ul^U5}^c_`|1^s9mEvF!aiKdb~A z2vo*d!rza?gq+No+>9OTzYErcw$E#f0gR#SuL=o(`NDG`M@w+o;zf@A=+$m04Euv~ z9{=NNaeEHHeqcNJE{1R&k4aw{A{{uyBa~I5xFOY9P4r)53~&`SNnUmEnS7D86}TO0 zTV@Mo<0sUymb)_tJ+yUT4pIj-aJ(*SsR|G$vb2{9Wg_esN0+rC8A|AQr2#5Eu2YUw z$8))IKl`mH*}8_5qj6u(TZALyM!GMY^i)ZmA*>`B$#q^U+pmvx6hTYY5GtSl_u$;e zlvZu}xa3|F{nyb--Mdw_UH+btA+woB8R%e0%$e+G=fm-5DNBppBm@`%WAtj)=H@|7 zRV;6X5M43wFDxv3!5@$0u!q|^d0Srym zwg%Y2;_hE|PERjJ?PCxYoDd_^hDPSNr>J_GtA&@4Lw3h$4J;>Sxq(UdQfx3^oq>uZ zYjMr{29+X=65T0)w!jufi<=c@?yUzL5cF6JUjHto1$ve}kVjcxo!q=lML>NYGM zc9`t3;$(g<8%C|ZV`x!&dls%o>=WOr&XhiwuZ9Y7zl9(IuS9hhA!zB2iPUd~-;Pf& zpoT%Ig-Ynx5Wa^T0c>?>gn=A=QuUuefML}-4^NW$P+c~Lv^~T+*V$QXsLg9e7Nh(G z#cQqDf=251{CS}fNxTIRw{V_O1S-f?`67^;QfCn7&m%VM9vdbd)zV< z*24KAHdqSjK=xgcU(*h)M}h5Qca?x6%ue@=wVfW1G?A*B)K>YkK+X`_APZiuU0EW$ zhJOs&T7cbE8MRAr3zkfsaPwZ!fQl0!jtQzBE`TWRF^;RVOW->@-sHt6Zn}=sS zZ4N1xlUin|?VdOHzeUXRfh@|kOAG_ zeD{}a>}=m))1MRrvx^W#Lv^82NZAOCD+m^Gi3#s`xFcD+X+ELdKQg}<;!)ulZ%led zxskCdm3>pl78Qg>(3yE;|N1u<^*+M-fz7b%s^gfh;n4pTWW(V23(oG?QiR@a-|fKP zw1dTNf-wiwPxr_X5&h#F`P0EbSBd$Jx!R46EA8Hme|lB1*Qb{Mts#XqtWe zT;%T&LzGooj`3B+wq;E!59RgR(emXV;%4EQrMMX!X&oNzuCf;32%@&;X6JhWE~12Y1o)uBpWJm>%?}ZFNaOuTy@GSVp8;bgm9VwRlh`Q{)dCqP98y>I zrXVZ=_v;j}RgT8N7+Q+~Whia^u^{4)s{8aceq8dkAriod*PxVp&>VyNF(sViqE;54 z;!d=9Wb3;Fitb;y*PNe3o~bdp4j;WY@&*l`#7geh(3pXIu019*5?DRVsPxbng{~i8j1tqkgaf17` zL_snJ&W@ccyuM@Lt=SXU(s5Wumgi5v{M1rt|Iic z_;gtNuy@AQpAW>%muH+OzcHTbWU)zO<#fEVEM+;8 z4$&aBU;d0gb+K_0?>L+BB_f*2O^1_j2Z4!WbeuOrJv1%RFm4kkDvrEE12QvT>+&kYz!5QlTYvsCEfMa+ELc*uXj1-a_rC)9@#yLBg7*g~KOQqo@*> zvaI9<1NbK_9*vcKhPh7Z)P+s8;Uy#wqH?Vd+vgsIA3CKGvhg zL)2P^__t8}TF`)iQs=|#64 z%XPWjY`+)|qXr>pAEdo%tJYZHQ|0{a>ewAtro$KsY%P~RY(81q!eAqEE>7ax##slK zICrHBquS6SM0q7^VRs_Mu8G;lyXtKE*}YG07``XFj}X$%n0vI&0QqEaObvmQJ9)il zO@CXU4U;8*jQBE$E(-K!?hl7X98%um%UYeD)?D%)(ME8{l|n9eAzGXfK*~#p@Ly)G zAIrN$LKm$OcYd#3SP3^6QI$JTb+b<=7=%k9(R1+jU};x0 zVeY+;E+k8FoIcNkF--^r9mDaMQP& zwd#9(YguVvjg8C#isP>Gju9x>LMoN;tAg)4w3pwxg=gQKMnv{m#0`&3w1rs`&FM{; zdf&5nQef!d&Ls9@f=HF@cGdvv*ZXE%m(lGd$fYf=hW#y~#td_-Lwlwmve`=AQJCsY zyTT?7X+PA6fSR@MgG?w0Ii4xIb>lm?eUr85iXTbK&LVUcu2cB|An5D?e?)Gx)1|lW zeDYMIch!jYcL_<6_76Yw6516@cX&6{kC>>CR3n!4?LIZ6Jifb;)hkh|DhN0ZxJISL z`D%KffYjX!jfzB5_1gb@x0Ppi6@hld$~*uG{Uu?4?{=$VMr(Ypkf*Zx@o3jsebbW* z{Q#O;P%gtDw%F%c**4G(Jb%j+_eD_UAvMAhKjvtWi|HzR75QHvi^#l3_5OrWm5_5N zph60oq@nzGP{9bgpCHS2mf`R%2x>p#o(Z_gAx!>|zUrnzSds1p44>=@5vbxSK#ImP z=1JIQj0^DcX11){t)k^chSI~4Jz3&d;6ok{^)utkOUJ6%=X9TMxT)B&Y9V_UNicF= zHlrX`LjVd9-tOjGPj2FPlzLs>O9LvJV?*q{B8YUhJ*^< zZ*bGuad^+c6DqHkhsptdrkeA0)!<3YxCs>2cR}2W<8@mH3!5KF8h>he@DaXxPGJrO zPbSDOuteoy`%e=*I3Dp_E z*Ah7bwgf^|iXF!M3F`<1_tow!s@#DZPp=xU_7e-6;K_;T%oFXO)6|$^Krs5nsvx$L zZW2DE!-{dbIRkp7c8-|2H|tT8pk+C8cp)I zoXk~$vTuOY{oY9oQq_t{0;PkbX^p^0vGnvLDs3!N|kX<$nZs+mb`+lTV zW2$rM72wTFSh0&PzW49}S$m<-2U;<-V}qj`z#LazQ@_6 z6{!6wCRJt?Y4@qbpMKE$e36?+2JZ~fH(8{Z1kvEbZ+l7u7%&6EkSIye=>nCiD&Zz% zWN*bLmKYoUn>|(gs#LErkctCV<=O8=*v+L-&e&lC(iLMN)-pX3i4S^fzo4d<+=wdf zzhWBWNu<2~*c_+s%Mwvx&EC4&qo7tT=NIOP12gdKPEoi0`8*lUuQu4^>al4G;hI*u zpN}3g2Zgqzn+JR2KYkvhps#%F$LS4L#&Fhzw>#@(vd)n=Pi4J9m|WBE6llUz)Ns&Fnct2<(r-kizop;m`EmEvh&$T8iR}G|TM-Aqk{Erh1M-#- z_Kgs`zUsfqjas}GGshJDCQ?FI>@-yePPYqcZ&2m2*;`s2(zHeA-ujNW`8U^7qOQqa z?GlNNlz6Y7fH!?}u>z*JgKgD)d){ARu=iluRVw;pcJ8TQ7I_OmQ{rFK_qA5$h2AKy z7*(~p{^^zfX)(CiDf&UQ5?K{0)Rg6_RuNPfRhc{uNJ)L`{r}gz#D#>AqCF11l-Khk z6pt)R$TxU2;DTQ=JA3UUeTK;M9WbDX? zL`F%KZvJ7_zQIc>V$emHr1!PLG@015*CUE3krbOH)6-PcNG{VXD5Gw}wj~$^luc&u zP5{M~q`kFlVrBUE+1n*=%7SrB*CF6N5FfZUr0jE95J_zPs|_4$S^o?jEyk zf{oKhvZ-J5+$p+0$3jSz82Mn3W%J(q;NqA z_1OS4bjo|rl87>0OxGRBv$6TeExh5h^yPk7`qppk)GG!H}I6oEBoFhjlQO!aqQ! zOB=?KBsGiap@nG?I5~w5onL~@osAV?J1X3SCpjnq2vYxrRs=wLtb5WKXHDoR7t^OJlO1PU0z_d&Jn}f^!{fr^V%gMZXY4uDWi;} z#ch@#Dk0l7zCH5nuJ=pV<{S7PK&DlQjq^%ta(PQAMX^kn5S^2X*pF2$nv;JWM}HXW znc7&xN#G1cvzDupZ9uha;c9w9^g?`)qrdWeap|uGL2y$nP@o}AW^PRnf$p2;zC6U< zDKxkv`xjLlkx*oDIMswA$r^L&8D5R z3~Va1C6pj8)k@$_0i7#gx&J{u%x>9M#g^rM|4|c_*qyUO ztp<`osDVh(QO{rtj$oe+iuipmOL*Z6l-&E+&H^%FJ_7;!u!<{;*Z%_MjB0DOGsuqg zKYDCGU;18~7>2tosfL%%&lgXf6Fs-AHFJzkrnWvM5=S zS@xsew(%hXs)oK-;$y6BW}QzT6bNr`Exz=@r|#}Z-;;5Ka2i}VmbsE?@JxfN=*xI@`KWle8M&%DQh>18`vID49BJ%v*naBS{zE? z5a0dqoH2YFB56=r^@DNJao*a)+X5Dk=ig8O;w$?IWoQpho~F(4#t9bq%60e670}zU ziu2lVkyeWA$+F!2?v<&m#TkK>$@UY2I>+Rh9lDn zNW?UiSoqQ0j?BD*N}wrHOz2^YQDW(9IEQZ-wYR^INbh&-g=pq+6w^@w?xOOG&d z6n8P&v=REI`|jIw(z4dlq6)xs1!h!^*p!%+A!0TCwD}$TT-29#UPw>keYb+K?CcE` z`XUEEZ4Motg~FD7d3s2t)Dgt-Br%KK1_k558;~R@y6WTq?w9sevWI7NVl=_xk@V)| zr2`3*VBCzrk0jeOrCm&<3(HwQjAG;KIQCpARC8-oEmR-Or2o3{@JZ8OSVOyz@NA{b zGsTU&5twxM9Sy+dw>KKcGJ7wlVLa^;Hpx3WKKZyGy3k|k(qwk2Cs^6>?%WB}V+o_& z8?83s?VI~w_StEo%b&{G4fbBx?LEI`)yGGT+ENGgvHA!fnxgfd-ZuqccV5Ym!M^cE zt!~$>}!wM!3 z;1v!@hY%PoShj<8uoXy24LkyB6m_98HJIXvzdd(3`yimrnT<6}UN6S5fK?4qa4L@x zLUfpfj=QEu-@>g=3T&Sn$K+a{$U6=RuOa3C^HuBK`0#l)*^kMoA*4RuUtx1q#QQ_t zkL#&}w_H*2?v}TavTN+ua`TtCC68m=brZPF!34tJjao7{nbWp19 zT(hjzCDNZ{b*_W5aCXJb+dNW#PdA3Sx z7aBce3+IglTxeng3Xu01WV)%=8VgGFUc)@bl)t^0O zYEc^qmTwUiJr-&%w8>D4y)8EoC(-jC}m3C2>Ty~cw(IM`73kZV&@0eYyX`Pr1dzjVE4l7b9}it zuid5-Db;!X>ydM3toT4;d5W*x?^DOLRv?#OrN!zJhA zV)ohT2JT&+9-;I5dWTJnhjw8W-#xAm)dkY~Wm$P_FVe zn)~dc@tW@p;?A`{A+~pVr^X`8I)bt!rkT_papofipB@&W7mv(t+L|OHyQK>bg zySeS{9yTCt#M9P5Vw^aGBcS}@43Zl6`*(5M{i$@pB|_g4=FWq(LGA`~r{6#F?B1es z!)CG^GQ>K$0RzmdLvd|G6nd7G=|e%Y+?_gr37HhnN;UVEaK4hwX-=6hBW&I{UB$&+ zRNG+;n(;aVq+&vrlmtkIfXbEiumb_~AVBOYIg&&_q>lw=u5B8LhK%4IKina_9OWCB{RaygsoO zEZX8Tc~UYuh&Q=YMQg>Doj&ckIp%Y*j?dmB7v_%uP&zsVH3hNep#>$j;xux6H8Nv2 zd1S-A!qCawHsNQL?J(d!HHSUZ#L$#A28%8n!s-4Vcjd0m{bp0kDmF5U%`4S*l-0>f z)|ON;_qq%*O_9YL!#gHbe}T4|qCT7NfZA-+dwq{5OeQETHc@<2J~(q0x{nyy$y$Pk zA2BavZ^^Hh>8+48~&20XKNROJm6ZR6M{vi@D&R0#3#`j)^kEm96l+k<+vm9|CA zZod~jC^DZ!p6o4T&v3ZIuh=8)>Q>8AVHV$Ft{D6g_Dfa- zZnLY>$-_R?cDeG&*L^J!$ z2+8E+mZiy;AA))ybIn}MwSw~{)mUKjQRAHVSj{(9kGAF+mHEqA48$GRTi-Zi> zdg{(^B7b9xjP58`t9eQ^8$AW0Ep|(4JyyBj)<7YnN%g!Bdc+UwpmsgOZC-M9|CBb+$nHcupHG z)5%hQA?Dlplv%q1$3p_p_~&tWpYy8u-yZhP1#OjeSFl|grA;4b|EEG+leg0_N%N`_ z>#GhCBk=%#%%wSFeUL6!6Q=>?8Xc$os{tSJSqK(>Y{jH7ZvZ{XREpzborEUXQ$?&l zFX&v=*X^A-V&YPBHljqW54kx^xB?)`ug9f`j<^Iw&2o65#5D(FKTF3+x9S7iii*_8 z78MGbq79xwBz5l}kl`WwXzgoPuACDXW@&}b!q#NIRh=2bgw~-*~%wBeSk#5)mjOP-RXD_)`&UB1W z)?N%o&y7BR7CDLmvOU|h0HFTMrmtCF`SdlVE!w(5v2`TJE|>;#x;l}C@>y{p&L^5+ zCp<97*Cy8C_UOc&;nDlLTUvFhRRjMbRm6VdbI;#yr~j0h8qjNF__LaR-DYcMgwd4c zhkZ*ntf;lx(*_H8ltIbc%5D#-M@9v-PA{6K9b_zunM&HOqdhl8u{5=v-7$-Vw3YL) zmM>HYbmxPuknzI@f$$LBo?afha+A$@p$QLl|6($%{aXVoZaX1dwB=OlV42dXvnw#N z&yRj4qKT)io*M^jy zIT_jAAaEK0R11o=$z?mY)m0Py&F0cWSYtVIlIGrImyh=&?c@f=S|9&alMmDr`FZnC z(`I)f4wIB!;Pn^Qq8WH?B`OY5M}>$ledUsq9jZ+hqh6wu!OoM_0g}i1k-Kb8Zqpt1 z=+FP0%&nu|URk@$i>;|!WWxwH#}wKWax|n5M5=pssNVHEZ&1TowTEwMQJ^M(Ag%G^sMqP`A>H&wl!%=@XP$9*=KZ`uo0Zf&IOxpr4k+k( zL5+gg*W9jMY!=owcR9?w_N1b z^!wWggSESgw2u@?hE2<($y-9TL?xALXY!nO&HgerV=mfreRvCx1ipXs_2+hO<*M1k z6Y42AKN{&d=h`n9EZBGBm+a=sdUV_EK~j!-+~o|~TiLJ|0RGH?+(OW=yfXOCqJ8po zbhISdLerK_n+5@G^xj;UqdgO0vg@|TF8_d5%s-~R21tNsA59+(P?}6v4Y7SlbgJ1+ zGZIrk*OJt*Vd16O0DcSrRh8ItJjfB|di3Ss+tyOX2B$DjiL%!_U)3nXnI;bHje`2@ z^;-)3k34;?K7ZAgtuShD6ju1$4q_?OgX~0wdRxX(HdXt+g!GhNR-nBg8so?Sf`CU! z{_CqOH*Navr+XH_)XIXsJ?%yh!&98Wt)Z|Z^WzJLP~SVdZ{J2IcMMV@_hN^sxwUS8 zCIvKabTjgbmu81>v)=jP%fCE!w^B?y0Kg8g6=wv@weeH3qW`qV3h)^b{qciAgA*!{0wRw1RB|778eRufh#!uaDmZr56bWAMf3JdU>dV z*6In1j-mKv2{uCy?tb@GQMn2%v!&YAMVJ@HUfEO%gfB93du&l#)_aA@9+v2A45(Nh zKemAwk2&5has__rUVp|-BKv42PAgVC{9P2{O?c^)9WSa{S^^|P+muHx7`+Ih%ZWK9 z&Flo@|1l}|1ImNVr&Zm`DoUuVMe~?5pO>0Jq$KMD`;e$6%))htK;LEOhqd3v5qI+K zkT>pAU3pGG|BBXC>5Uch^$(SvH8bKlMfXW}G@vD}w)U~BW{9>?EOe+v@b#%+eI@30 z9&D5!#`E9+^(`6`HP6>|LJkmZ)jDYJ`s=m-=Ccd)kUBdeI_G_Mwy!)yELH9_Usw8V zn|ePGHD3Xnt_yonGM?;#I-1~5Ugvg!Nf~GiqhP}c1yx{+N`N;?F2UoHzd)wn^rt#=a6>u_&a6I$UTM@ zLx1Yf`0^bRVw!`ToJ(h9Y%n2{)!H-V#DQLxqwl$@J?0DO=MHg3eo;I7xQ;Dlgwi|2 zm4pP2;vm9gcc>!J?<)cW$madpO*8nPYzA%ehViHcU-WDD$@R5I0ub|W&HN8ga=?A` z&p2_tC*O8&@MVPw`wxn8_@NcxP>bFZLxWE6==gQTYm2J8#;{5{jf@-t=M&B zkDb#X<_RW3U!bMk+6wwGfS#gw>mBDWZpk*6DWl^R&9Da9EMO2!9f!B&Poe0+Oq`)Y z3IvnXf14Cilo2#yROA~TcCpMd6R<}+D|l7WE-R(?Ht<2K^Qws-0Zw(t>f~zI3HUH% zD`ei$NYvv5Nq{e5q0_?hhs+Yqp9XRQCfe?lblkIB0U%VIPaAk*!8E{7ibZ5Q|cJ`0F?)n~-8L#$O0ohLL{r>;Q)4PDTQJrbP=V(Tn z(QQVSWm%SGjpR$>TM`jM;>3Vp?uJru zye*~O{w=iqThcC##)Ob`OG&o0OWIOAN&-%oi^p+@$FV%;e<$7N=V4-7Gn#YGcfRla zuIHTGF|TlUeh^#5NS#exC=;zE*d&&$%UtvuDdLTdy9K$=1tJlY{g7y>eqfjvBGDzE z={kaV$xR;$`Q*Azgh6g9x>ZNxb&Jl%d1PfKufy4X$BtD;fBsn#*N#i_m5xUL|No!U zXboRuq-qXG8)}Yl;C>_r2|)}n?-xkSUE_f(=i24CR^y7`O5j?GYZb1Zu*h4g_eNgN zhf%2G7kT|s{6j9oy^C>Of=dmH;Vxdk5)WkX=Nep%xSDY-!nGXN3S293t@DdmE+ax9 z9>cC13EsHbeVK?)T5+}G>b~$qjwheS>ptV&U5ih9adoI*@r&l!aAS%qQ8sJZ*lvyMCbFL zb9IS(GrR}amH6Gg+=q2?Yq)Dk7ry!u?)3BIDu0I8uW?(y@xq9%Bm)@gm)#C5fte6S z;G*hAWWe?hd{ToUCqQ}r+rfP5aG;SDV-=`C3 zsvp;tXm%qpFZ{lr^jB@Ha%uY|{}9PsG_)kb@B4}$kD@2$UE#=u4p?{^ug13w48>TI z;WPK4*LPriCZ-~f-}i;TkDm$rd<@rVVxsr`=l}`l(24yZ6j{=bC-#c{gZbwPUUVb6 zF$B8o3m@b6ebwKJ$6aFBWFrV;hL7+sJ%|sD@Lt?V;BrTt;|Cwchx^d0eRx3zFE`ye z_|b7(twjHcPC_m-L^1tMxEAB;z_kQD)qjGbI+xF~_@D)s{Tq=dNz79kf3)FR=05e` zB8h{_d5}AQ4}Q^qw+CN6MocV3?f*0e_vstarsxibH}3W4N&k}l{JtT)ICD3?Z=g&0 zC3dU%6^tGKVQvVIX%$PTP}QU+lXYe= zt|Als!lf#lEf`EjlrBwhBsS5esl|xJsKJP?8mxd7i4`W03d0YXIE6SAYl1XVq=l$^ z1{flPG)WTpJ&CX9sD%4b62mib{KVeSxCbDo0kR0+N#Pl{d?$c=n&6NE86lQT7$aSz zqL}Ck8s}^#=uFXL6o(-Fy)G1a~M5iX2FW0qp-qJ z9uz>E0n(0vxPwokoh0tXF0}3TF^PWs{U^$c@q8NhQs`qGO}Rha{>ShR_i~?YM4ypS zz;ig$0bPk-xB|2p1pWJW-LWR|oQU=VxTFgNL(eQ`s1|yy5Y7|`Q}Dme1PnQ(D>#-C zUBv057n*as{&!L(Ko%cioP~K*LFatNrMQ6)R71v?K_?9~(A{xU5FZm>QEbj+1oMvC zLt>D8Bhffg;o$rc3aZ&Mm;~=qbtn&4K);yo_A5Q5u;*x)1?Nnf4eDQyH3 z&Nv;76GAJbf+RSSy1igD9NfI}i6uRkPD2+;?UO$5z#q}NEZwNoak=I zsBsqI2qh-oNkK4`gmh|Qc%a4*u{i@ACd;@-Yzz~G02O7sU@G`cCN^4g+0o_i(EqWg zCXilY$~tE&hJyB-g3d5t2U97)PD-Iy9LRu4MVlN^T%ij=5LDvkbR9}ONQGeK+rTf7 z_9Ix7W>DXLgQCV+z&Hex)4KG63BGX$Aeb`9>QWOkNijyeTZUL~Ig2fXX!8X=(>Q}* zBJhL>>PK`1{Zm0L^j*LROsa)UBIz8#!VRbuk^`YYBo40+;USr%qu@upl)CduO%Q=Y zv-}`#TNq;(!M;rx9B65RESP={FGIgTAK4`$dPOW11cc=PB8eB?C4of{hSxEM3N=*H zPe=xgM=a7s44G&lH1BrMQa~5?yi9b-x}7!Z91*JJPw(Fx{P!)Q2n47e9@`OLt#K@m(D=dhw+;tgHIE`S{1unUw0 zZ3rj?Wrp4m>`vm!FdlPU(EzJKO28=S2Uh$+V6vj&V7n4f4t!NI-TB7kpAuvqvOhqBo$ogZw z_#Aal4`k9LO_t+5jdbxoC;&_rF^R|E@^}%t29VS>@1Zn@WL%*( z8RVFv57}Ep9D~!cF(lEKsQ)98aAx)}w&yU(*i&?=2tm(Y63Gy#je%Q;HLw}H_68{o z;J8LYUr2!rIW%ukEP(hw>=Es3yk9^QJw&m9c>qX&1Sp$!IU{>fry+o_0%2f7jy|8! z(nK#{fIck{DuDkf2kznwK_@-{vKlz##qmf>G0}Jah>z3pH_Fe3q7b0+vt3Iu!;QEy zplFJS*^%rKVrLy!S`B(@gqUbJo6LbM@L#dM0PG+hdMoCtsuU^zfe+E~w-agn)k>m$ zUnc#B9%y#m$uz`=FfC8a>;_7Ea<0%BKo4Y2@T;+PKV*`c*kdga!%#Gb7MJlh(MEZ* zfa9{ENhndWquE!Bza^=bZ%K_J94ZkL354{XA>vlwz#TUxbR5A7na2w}Iaj7QFcDL< z)fu1#OF$7Mw|)`D8JI2fI!WW+*ZW}i zRe?rf!T@RzbTx#&$G!hU#Ie^pIm<;M+f@)WTi;^=e+(`|3_v-)WlFsSRal?uk7X>kyIs^+Szc~>C2^BKZ_hcuuiHLdgU}U`m^%0>>90U&Wwm+*fWS{15)IbsU&)%26o%R1pUY()ui-XUlT>4m1O4u@w5*9whT1 zh8*Y*hA{+^ePiHGxVtb|vt|T9YH4F{VL}X!Rs$$>>g0Hn8lV)wL?D?vzn5^$vN%mY z|F9GY<}@nr6$oYu;Gt-DbsC(>nG|ZD&@OrlruATC2(v$wy`ChrS2JJ`Msk9uNBdN( z4>F(DK_Q`^o+g9O*YUDNck!m$_eS2u9s7@Vh%;9x0e-208)?35*Po&cy$m zw6mdDN3=WNjNv^VN6wa{XT%65m$S#;NQs02_^=0YO9HqSGSG|s3ZQIl z&tWZ@&1G6H1rm+j7cjU3N0A?a!_VIpV7C(yUu=Yl>-y*VhfcNxEePV`S-t!>tp!ZwkvhjQUe;|2U zReUkxfmqOi-xIrNL@W((M;|D^n&=@6m`A49(t|`Cs7^T)a1M<(a7+|&aNIAjQ%@lJ zYya3rvS{b8V;Y694oUN3d36ZCg}jfsv1DSl93z32uh9e43YpO1W1mA>wYc)1wJy`zzc>7q-_>16h1(h2%^{$P< zoUy4Ttq^0-R*>54cUti+*Din&M#gpRK@r+98*9bpBV?&-=inrXzQ8RP?BfI!0<2G1 zMuNqSKr7fRS_lypoWfA=5$eZlil-zKB@5nTuxBqzF=7^AxpdJdh?D(cr~u->_q{~I z1hmo~?FT$@2D+gfzQ$LCu{(L$kh;Z?V5reQb`}qaNt!rx4yyKi2$&?&@3>=7#||Uw zycwE66ET1#I6R2{FG_!xLlVbFya5y(`=b99D4)rNU<_n{lxbWk(3>c9~{o0kHPH4+th@>@0%V4$a-V{kw!NJR#$8Uci4*OTUG zHV}%_=cx1te~8gx9Ti2KAsa$*Eh%Wq);AElH?)CMKwLHZS_qQbPwRLxO#3@szX#S4 zj18`TtN?-hGHQJO7!qu1O5YGO!?5$fgo#G_ZzQBuhhS{z#V<%Bhz3aY0njYo%0q2o zmvQicC8hl#m^(W5K_mrac0S3dz%8d1N92q6_>5=!H)`KbC^g zBU=T7Nt?o`rbYVMB9Y=M^lZEu-~(lqZH@jkIBDG_)O@Z;$QY+le$Dv~V@gXnp<`CtQr#hJurWd>K<6aa_Z z2yp^*&trgR1GnLSIt(5aOaR$bp*A_!)q=Z(paHfRYqf!%@a1&XQp=m9a1i`H9Ls=n zN$1$VHwzGAA8dHL0KS1be;2sz(`DKzdPwuY=IFhFfhVB6?eZR=!8ZuezKy~k0=q`z z#xjsTs7}&?GZ(UL#pApuLFbDx7<>TmtzVE69k`3Mws?q#u3QIT361?3$B6cokWfm&eKNa%SLrByp&g*Se(p{C!(6N8%tRc_q4$&r0uI8A2?O%T5rh802*! zdvmG_fYxhiT-*~*88Dck%uMM&a4>Cv*V)+1_-E&4vS{r27@Q79)#&R%Dd~s8U(7>3 zzati(kmCM0rIM#j2(pX#kDG8?vC)~gZyy=$9NVF~Q{W*~b9_K|J zr#}dGAvzw=p1^|N7?IxlK>AE@>=|)0iD;tqr(ncq2o@dtDi(GTnVyh5!Lj`STj^gz zJkAvQiv$RdM2`nrUW&l}MrysIxVuxyLnw-z4R$rOhru^KY?2y17C`opXLR5@SU+WW z$M}k@VJ(P=baU}PqY?ViG-Ys7t(d**=>k%W&Nk=6VvxpBwb=(wC9|u-Up^V3%hp&X;V}K>FV;-n( z!ilITk3Wa_x^y5M8YZF0)^9dLcjJHZU067W5aH*>p2xJ&7p0rR^!^B>$)MwA2p&;n z=O057kfd1Bo)cwVkp4B$3eTN*fG;_c8UHu>m-qfjDgdS=t~LT6Ugx9_W!}W8OJQkD zmh#xK2!`3?+Pl2NqVX87=-8E%w}s;OVX3G%HymphYef<9kLWjLm>!ccD#FqcrT?lX zJ>yT8?Dee z-r%xd9hi3af%Qpu;nmS&sFR4+2V-!FaXN0xFGYAJAMHbY#A?eC-}u$z+y!q<^={@X zismEaqcg35j~wv~>awXEdLZJ1t(lXq3~DzJRr+ff`z8#+6B+v#afB>A^tyCY041p3 zs)Bm9ct_BV60>|jdyqKeh*@SO9*nvxf%=&3NK(*?Q2}<6{ufS?9lM%1-b2kk;xi}^ z-i}3)k4<>Lh$1;hmUae1)Mpp8tw6?_fb`9%^i~yedGA+ABURE5s(42pUxyLFfEkn` zVQf>3l@QVymm32lA4OK&$bGU|MSrj`!tk0d@<5F<4%Nc{qloSoEH%@q3B1{m%I=nS4RUi#md-Sa71Te2@OV9L|{;)Xe++nil5`hBhA2=tF<2O zzW@GBnI^Chg95w;vd_U6t3JHJss;L2uop|8eSHs z*`?C&ljLFg+4TFd@jpl92+J5(supLB&I%DUFA~naP(OS|at%(<}1vol~ zZpgv}kAAmiz!c*&7JasAYzIk3HzuWys}@_OOD7qHpRAdzhU_|qbn z%hT3~iO5#P`y;4+?8Zg^MS2)VQehW&rskxr)zUYjP{@QEloF`~2h9vsTwINu!9DcP zM2g-Wl1Ad$mE|iVfH;dTnFiZ^x0R#;WQg;?Zj3%w#cLG_+jPDNCxVw=7a_qIVzEU! zB=d$GeLh&c3^xA**?FlpCan&W=CRKVv`Y_TH?ic8aol$}l13=xVeQji1q+uH>AIk# zSEpd0b(u(mNFN1IjUGXuz!IePD#;0lsWcFDd0Hj5*fL%I{n(9CLe9R&Ta-3EhH$3G z05>2!%EG`;Tbl&86kx=_+tj_e0* zrkQjGA}Z~Vi4zbyuRn!2yEVhO{xK90z)h5%jK-J;i&l-|=fujK0Le>f6{wNjjE=v0 zJ==ou9i81;(9aK)iWGZ09&ng(Os1`L=wV5veDXQpr%dW z#f#y0UlAp0`BMpEPeSnQLow-8lwL-J@|&b9T3a0=)2vH6EDf@>vS;cb0%(NvBbv@R zMiF0_bk}~9p7@dKXxLANi!9_p7NvMt8j&|+)zEUHoh;vtO*MZmW2-Qc9N~(WM>kee z>=#2G*m;JBU-dZgc{g{G#t0@bWNkN~-Zo`<6xUsx6-C;6=vpE^eIvz5~)5J%~t~t0?|*`NH-ya02eUkJW2|p_53w}tR;agEbDdUmCYNk8?TRjxbwfEyL`N7a7>P# zPf9O@3C)g5?R6-DksgUkKTKsT#_MyeJ7-D1sOAl&ycXNd=7d3_BVgt=m~5c(DS{@H zfMmyWFhNoV*!(n?XUoQJ*rOq^V>XcjJRq6-_6{KtPN-cG4-VEH1X}6;S=6|-x-?jW zs?XFzunK)qIQ&L=FRv?Ff5;T+XU3k!K4doVqB?KRurQgqre6<@AI($>g66Zhgi*Z0 zWhUve5k!u1Txu`DS)X0~FdMk?z0wn5sj41}sU?Oro5_%t3NdWGWA(ByEJov2xLW|E z3CmKDq=oDO=T5R(>m-|2`fc_*o&D$d3?k|deH|>@3$%VeAE(-FB>dcEuv-fzGE0nk z9orFlk!A$OeF@~O;1f2j>N8B0rScw{;>rW!Ex|=iEoN7&v z7K+H;?hqCxw8zNh<4*CPADdx@Fv`3{byJp-SrQnVFX$5xQf(IgCwE@f#~zjXLV1(2 zqueXdAG=G0EifjIccj=9Q=R)^vXsA{hs&vw^Fn15dCyAXV`ggQdG@N!v`Rr|+WWip(!S5YgqJ6}X&v7z|_8=HTzpGqS!=&_r8SD#9+QDkynl13w_# z&eMPf)s2)(-v~&{Q(sIXrsSrw!CZhm^iFp;3{_-YbT$+bD%8APiZt|8kRn`=>2u(J zlX;+rCPSTM5A}o)iB17#rO_yOTALH__3X*LZu)lykVucn<}@Ma33;+W(ishUiAZUk zBXo?*lVxp3000svvpiNgxj4*u*!==%dh%&K!k2xYmR!jnoo0 z@Bx3&)HpZ4gl6&sYg#9$2CXzB^IeYgZ#5zET8WeHifxDtBWi53)nxBlgj%#Z-YxXD z!&Q_|8rnW-rz}}DFo(x7sT9!;Lwmd9?ejP66Iq?m}l zpO%{IzV8TP7deGSD(oOv;a~v|5=ZSPlaw0<6C%Csn_`OZINLF<{YMBB)+?dfWUcSLWm#&Na@s|Y=GYhJ=;(~nWfQhnT@ z6FDZs-^Q_Q(jG;E%SDAf1Nn6M>KyV5DY&M_D9pZH(mTm6PaY}6=L9k;lM|G@9-U5; z^YCBb4ZIhRd#2}>DrwvnN{A?=Lwd?>m<8q<*dptkhy z$i_-aEl%z-WU|XNZuJm^%r6( zQ}ayd<$N0>64U_f)d%IfE`r0ENRT&+h>##cM9xt%vxD>?d3I_UeRM^aO8QaX_!t6% zC&#IDag$WtC{=>I)+3d}5gVdh#IXy&^8XacS(JpJd`B-*% z6Hm^pP|t&;GBID_UJ=NNwK?>2ft(V^n*;$GgHiBQjNFfo9GB`O>o*)>k80e=K{~E8 z@(v4osJ?B`*k&2K7slnMwp(SkQx!C))){xI9oZf|+t4*7+xKuE{>6X#@H`tGIbB#| zG3~A5{9D4C%&2JAp>fHctv6={Yl2L5r$-n|oj$Lv-p^RivHAH0eTp5W!>rK1i(AgU zakw~F0pk`V&1P@O=Hx8vAqD5C;LJ?T&yf*lYL**iY*abIw7b`yW~DNG-u;E6-2TES zH&sZREZj9^(OK3l>*I-``wdni&cb(KiNC8JV}%n1iLpAS9z3wjUc6t;UTj^iZ8ll% zIGfbx*U3w7eGe%KpQ#j8VMJ9<&nk*BFHcR4Gr=iDe;z#B;q6t-364xT z4FnN3rC;u%=ZB4gqc2Qwe|~7==q#9Idud{xJn+a=@yuu;KQk%hZZ#HCmSa=retUKA zzMpA_xsTayZs_BS2Ma0d>_vH-b?uwlP0voeeUfgPl+SACj)F(nN&TZjrT8xA>~O$> zY^KQWH=PDxPD(q=ZXZ6!_xI*Yhq+Jg%^y{jjpsx2zZRw@f~VgxXHj*g&6K#KY?U#? z?za|t3hx}1bZJEcct zM_bSrFzmG!d%w))9od5g zV6&#DV47(2=Y+kiFe5nKW?>$%&bBWY3vA*L!p5u?lL{;2O>Tj0>9N>apToB7W*=A! z>}}Wq@0m{N#Q5xl1(ttd8lqHE6!TtV;UJgWCD?~$ODT{Z_7T#n!vHIWf-@P;!eRM0 z!h%y@FxdMj_h7xMIW^UrKcLMS&j@p+;XyWXmK&@*p9SJeR_}>ymdU$+gH2VRwpE*RX3I=M|6$F*S1FW^!fxm>XCJvxayP?%hldqw2earLJ0WA1 zVQCy-YOlfUq6~~!NwssJK6R#KbM}pF_&7ta*u*Sew{Q+RafAt4nZ6;gM@EHyMSilk z$AFqWs znH`y-r{>RbhNHdDnQM2$%RV{7O|UiAU*uO9J3}U4o&%mdbX2h6TYg)>+SFgq>$}0i z#xG~Ln}r4GmBK^28B>lj`RX)=J2bQhtab1H$%7NyZT87Ddnk<=o9MAI;30=Sp$Q}K zeI59j69)y>aFDUCr`YW8gj4KA|c9|Oj(f@W*n^o))V^%Kpl0kDzPrn2H zSCojm;eoINdGQ1U<0PR=r84;w_Y?C-2Pc5ugQ`9&xb74&<} z-wKj!*2;;a^5A{O1P=3jl-mpI?xK9p-fhNY+4@hRvZdFW=7xu@`+LmEXSm_i@Oh(K zvwQdcn{fX&t5&f;=FT5Q7>9w49g|Hd!<9n8(&pF#0w#ZD1{n4Y)p9-d5@Lf(BN>iO zO_bCCNlHWE75EYY8VpFHnCvgoWW>6Ljn6}jXD9H1pjFuP%r<8Cu-&`o>461RpDNf# zOCu(8DrNz`fHqsm!`7K+@_|yXVUyPMUiKP-H77711*<%d1a9=B^ktKiQ{3KJHYI#< zYPD_^;73S9k>(lh+m>}w9nQ^4mp52n1w>9ybJNeLV8j<@reB%nW?ztB+R|&6$C1;#0&&orE8O|O)#|=4KMoec80a2~88nstt7!-P%B_MepKx_axH*}^jA z*cNEUlh(vEZWN|DduDEnVojDxv-BSd+8lj_mAT3SYf$V3He!>hrLwhfbnOooxQ85a zwg4oyX=SPcMG8_Dve#JeI!rWM| zG4q0)QhH&uGz)`{WmFDw_m!!X?oSW)gj~!Sfy+8I2{&M&fC|by{5-{G^Ndv3Ha0%N zRHVD5m6EkbFc$=SmTu=tdI8k4CfMAB0&9TD{rHZ?oriXF3Q`3eV>2X9*sMa%7u*1k zV>lDC_TfC^M%W`{YJzbe7My*|BQsXs-csW`;>&w?dp>t2(BKz5Imws8hhW3-AeuM_SV=o?(sA;U#W-l3R2mIoE~Fl_UK8BaNCGskAizf5OzOPM9*Jwp3{U0=XbLG@zlw~Gw%ye zs@7q7&u-;d0fvLc4NmK?BQOY+be^z>&A$k_wFJ71JE1_gJ7c6rB$UA`}ZsBsTDx=S#%H-+3PiS(xQQkStMWvI@()5O_(Sg_yc z^hxS~Eg|gZ$@xiP+n_mhh_f6-@ojQ`PT$r`j!=Ds{AJlAa58sMyIgoqu%{V2I)_-! zLx{QldY&BKrRd6tZolm+Rc&r|o-&(G&!+b{9oA_ znG_Z{Yhr{{TxC|DHYZ`Oo#A%F;IV&+{@CQ$Q3Q7vt3wAy48dMd%qi&4sZoaNyQxCP z(S9czFDg*CoC6o5#K2t(TxH*nWxX(|>g-(=)ej5X74l(egeZcn9~8`M3i`q)T;*@F z^)kMAjzeHddq+0dIO?9~ss2!!^iHExS|MkDE9kpqYqxBCe4)F4n&nJIg%Uso+X7)T z)Tw-e;P%8dtjEX;N*=DhQ&{3a`uhGDz0!ePOj#&o{H7UncAbAA>RZWqCb z^R>_-Y~+Lxk&TmImowWkp@ddBC0GM?5h3{%VW`{g9M^egry+_Lb zd~nCMp-5_IdVEGJ3$Jmn3p4ttVolRrh0IP1gS%z2r9ygl$z){MU9g~?+c6bVl*=BLyO?9bW5BM7Z8NLYEHEfmy!g(;yj#m$$}_5|3h zV4kVmV=(rRqwk-vHSWwj{H(K=sJiuSg)Dp^7^BKwi_3o6;na)r33VjTCb}yxP27WOG?Z6r zuM1u5!1UOtY)wM_5rvJ&iq1CoWSobF^-78v&mEFm)IOmdZvF@N*a{)Dq%mMaHG z&d}$2HAvVzRn_AYvaS}a#kPrk23#P+5Q9?^j&mWH6|EQRcm&{9+`9#LDq`^w}LT&8YkCw;f~6cc_@s0 zVWH^s{1Z3-iEs?GTd+x`r1th}3xDH!)e1d+P}v8pI{TuMVK!I!olrSXDjx~vBr@P{ zqfGrx*@T~RR0f&)N5DFh+)L^lt*llIh{rpiFE_`?uY?D8sAlD$V$RKDA{Xd8o74N9 z=`n4t_@IDXvg2ZiH9;LAGz1C;Qa=)S+*(H2SIJs+vQ;x|< zECQk7@X--NOB_FmqCb=#T8 zQZdvDXH9a>oUmC|3MX9uKwFJ9T$2h>p(kh6f?;1%Aw!C4!c->bY?AAB3$V2wSavR} z)*%}Cq>wSWgoOi$gv=8Pu@~FLSG8TJaV)6QnCD@AN9nMTDfQ|zliaY~b&{)q&$L>_ zD4_{-@0JlVQ6UzD=frFUN~4S<+(KCsK#UTQ{-kX5ju_4vZm7!?3WOVarCbCjpl-rl z>4Uxu<^K_WC?J6FuhTP@K17}qGT5Qzusep4VGD^>lY33I>7>?U!AhvW*_@|6N@7*- zk#2CdqE$xp$~+xjAjfw>i$I|qh8N9QhlwutnDT9iL_^#`>jk}}VwUwlLGSuTuN+#Ut*amUpEocySObugSy(MLh2-wJs)M^3Z%gjX0i-i03q^d1#h zK{;0%Ia`?B!B!nFAP2~b4gyal7ZG5)3Q&R$+h!E-a1me+e`Z&q063bRMVb6N1=ee* z1sGN(CJX|1$PrLdt{}V&Lt=MDq|Il-t_2es0 z$mqN|S|G#k!yen_lxb;1e^GECo}X}^Di^E$mD*t-98oY;u;N@> z#W^9IdRsOy?DvI#FH9rhVsS%kPR=`@AhldzhZOVdJ-z>M4}vxy{7x_d|MLi-^*hs? zK8ws2JgCgbQwlj#t74^D1(Eo&a7=~%d|Nh4j?O-UgQ;c;y=I9aEr{Tepo4!ae+Ald z$b1?Qk$ZY{Hf(HBGtRRLqUm_Yl*3scC}et8(Mt=Y0ytu@@P~j{3`OcL5GuOr+SCvu zDC5#Jv^szdEg}irT`)#nmG@hvpOsW&ijfI5KZ0=H3F>?RWE_EkFu4plW;}$Hz>H9N z3y7z@Gkd0}$Yfz2B$>6z3#CWMxhceMQ~F^96xcZdu_`!O=MhMlA6IP7-e!%Dx|!;Q zw*U+_ol~~=SC)YTIMsx8`=U~r>31*}QFnEqwsx92b9!kl+5O@IwLTDzaG203H@-8a z?1Rs8K{LLo!0*csgD_5ULIzKpFDl2d+zu8QQ1MyCU7V+#5RN%d$cbLlC!0k~{-1N; zAD4SAR6ZV*ACr3#dLorkwt#Ys=+>IE*U>VvfflDbhvc)USAad`6m0V0s7)Rw@6*9v z$nQs77uyA;#XjM3Y=$#m3tB|rdV^OV;EnTjnWBD?d`%Rw8B=6 z=K^sTm)H zgPufvmA@shD7Lt@kqWhSO?_okLKJP3G}jq1+@#^s}uQT zmA7G0&@1ui;$$cnUm2{rD3$2oBK|%CO0Zx4A_(65PjIsGi(-bEKBgqmit zD%DQWd72iRs^b0--5luqXK_H~zD=JU9nt*>f{c4k(06A%&I&w1Oc zJLSF=-Rss~>JCw;<*HKtKwIYWV59r=y373WmbL~_tH*6mZOV({VZl=uZwofk+9sDO zRH*B?!vAycL<*G1MVq-L-s1ZMo!|tzZW+NNN+!Am`U3 zm;jEaTQjt&sv8s#TI$wy)pb;5&~9y_iA&{VU)%9i6X>R_($-cjM!Q_SvL^eq*c9n& zIhx~>)j|z+RRzDbud7;|!I$JkYkY|-{Z*ufws&=S-TCi`DaUE z>tj8HKAURl;3FvIqkbg;UiNnq-;zv51dVg?_AsT#Hh_ZhmJBEdX2r89e@zDpIoDqm zscYs^wB?rU-?X1(oA~AkeTwpg4(!HSfB>yar2KJ=h*CNGNF-4wM(VYH4bhs~6|^RX zK53$#Hi<$FPpeW?NHlf$+q<*ZiXp z8lqpldoWd>YH6=t)aYwlKF}f7gQ1&KHDCycQ!soof*I=U^CzthV3K5`r&H-7K5$Zd zr>uIw%(=F3qbpgF_{y%JuMYC!?dBu7_J*r4>F8Q?Rrfl#|3Xbi{RKh7RCOdfy<7N1 zQy7($_l}~N;g5WCb@*O)7Dc(Gs?)PB2r~PFJ{i7#6#ap zHH-CC-uBR^yz52q%?%gt%w=yQjVz`&p8YihMS zc%MM^RDFAAgWR_=*kZJ5@k=m7Fbxs>|Ckayyu7xN)?`0V+PzQE*M>#EHwq!abn!B2 zYyz}_dpU@(fTq0d-2;K_+mTeRT^4AdxjvPPM@R-7V7iJ(;>xb*THQ4M8ku8T$$S=dM+K>j0uv-na_{D}(e`D`c%Z(G&qz zx3q^lGuh_{e&@fgAK>E?I@)}TQ4J&1hZ?%C`qZa|V56t@(EoOdsW@aVnG3W>8^*!| zaqpKR7)8oo{24v40U}-= zw|d&GU5|sM_=vYN`&IAf29xzDJ!`}>q6_x%mOy7uqpvB_c@55-rfmb?x zOY^VXM!G8tnk7`&v_`rmneN0gKdm>&Egtf1MY|`FNtZ!g>jcBLxOrz5ec%#>y|;G)r$2gXtTJyXvxZ3uz@V~)HOl#Hr(93Y4a9MsI6-6Ot0I} zb#+jTw@H~5o0eTfgr<70JH2VSs|oDaBCTB8D0<_KfGXfYyW9tr(BFtzfh3PTwpZjK z5#i38yVZd&q?AnG`kt#Uxpj^D#Y^)+%uELk_uG1tuZ~DN#LikE1J@{s@%Fyk%I7vV zae+opq`i6*^`vN181PKfn~HaICAj+A>g7eZH`X*mPMSWtGEtLgst;`nYWLijibI>% zB(Ohpu$gf6R{>0##g^{!yQE|Mj(kfr$aN~v7F>OMAMl1`pWth?f!nT(0{Q{`ZSA4X z^osSj_pGc+;lz$etc#0ONzaQn;$taxeIpPDxSeZht4__E7z%CaC1QB9cikPR}nsvj@`a)`B#Ex)N{p_1h&&mhy)^6{L%(=QNkNNP05tE0YV!j4Smw0K#F?g zAi-1(h#?N)_5$lSEd{CTqom32?E^U104~~}|L;&^BuECnEJFJY z-0Px&<`0##E1Ekn4O}R^I+%(FHkJLPDSFJ`1LYb5BqU*U)N;Ai>!mOFSJe0+ltV$G zDHp7&X&Ml_f~20%K*NwIG(#nK6emOv77-lFH+rE&o1tlZ9%$;0rVeRRjBN@6jhpD! zoi~t}_Nh)NiYjlHYmp}7fBR<2Q{(GME%K~_1p|vP&^`7{XWP1M9iP5)*`2}7T@TZ` zt*OhBRsQzsmBAW}4b$GRvZ;CO`u;#P6ZG`metBHV5FdI*C~TO_rlogk%fDEYl2?2c z_V6858tBr#YEj?nOPW#*X=#zRJLZbC$i=h%{hqpx=3F$CmNR|L-n9J4ilO0P0${1E zQn$-%K0Q)c?yJ2@sBLM_T>KfIkSO21ad3m)hkb{A@lJ0i>SH%;zG29BUHPyGg-^HV zfU6w8dTDS`(!UI~Yh5BXlXTCVXabP>D|C@`YY^sXZ8JpS`M>0F1ZN6!?WqOGR1FlM zmlqN2eFg_VFkbQc6P_BV^=pIvyUNw1sqa&?xrh4K2GQp)>G#*xr4|hZ2Z}_?{syz* zgMhU!>b_1uL*3C90$!g~l&&fxBgh zZ@SIJW!=m?j9)y zv0xTwWs$}*pNEh@NJY*YC$Qwb;dJz4|9fA_XwX1appj4eUZhT}UwdsfA!7FEC9v2w z(Z^wj)G5I`N`_iaZhaH!D@wzGwqkNT zm`N?!6eNo_HTuTR@#$5`p9JCU#M7NHK*t{;Lf_XDLdx%jk^A2HX4rCJ0=G@zwEfzv zgEW2Hbyc2(Pe=+vO(P0`g*qYL5((c8zj2SjOifQZR2 z%91RLaFHLsBfN;`weWg~bfRwxBUnSfkG%wb5P0!YmmfSpu`~QN^J*Ut#!iguTA=}{ANRaD%7yt(|-HXs&LR(8vE<%b4tC?JSa&Ua$m&erlQn#N1q_BnRXmakr(0{G zV%nnB;g(GU-{YI*fyKnr@_D{7A>A0f5s?R&QEl+5)AG%IjWsa#I_0iQmt1W1z@^~p zyDts;;BSUVGr>?2qPGQaYPdPJw63YXrPGrko-4pPk(SuvTZ6$4e|3X&gAZ<5eet^D zt0_Jgx*jYQl)e@bGgmiiqtY*eE1;9ALs$wfuUg&LPvg6TJ+8MP*f=_v@K(=i18vIqj>%`&Pg>;*;&yeJu#h91j$)SOGrn>|5Ra6lmI#*?s7x zSfW0+a$QjRawJvVeW_3@=E%+~id#voR0;Emv~+ct1jpigz*;%jB?+Zb=%|X5YRG$Y zM|*UYFW0H`t%f>ki``D>kx&QMNV8UigTYPvqy)&FYNW~cI>CY|@6M;MJ=O)N_lKq1 zuY&TaZ}0MCQ6!I*@K**~wMD>DSoHp!M6cK%$Fj&sstM|DDZHiTs?_cGZ44r6(3Gog zfaq7nt5=Xlz!xZ)sb0UVtc@K@G-TEM?-eyBSig<}y1)t5?2h_B_&()FHl*guCu{CAe~*Xc>{x$A?pBUv48@cuH5z3e>LGXw&Xy)_4IQ-2lVA_y3TGFZUa z+_nnn3agi^qT3?Tv`l4sXErDOFp4!jKMTb=8*c7f(JVb$(@C3ZJ944$&3!#uQ2Rpk z_DBpSicis^O~DmZ@HI6fAcNPowO1FP$ivKs;{YeI^Jai`OCX(H6@tSbDvqHq-w9>l zt054uWZiA_e_MgH{+ikj7*WfmJF7Fzkt%OALprf`KY=h?E)z`9mpiMXat~&p!<$~T zbUd|!i?kr-0jIet6<>P!*v~?+5UQkSBN;i?J=6#WYL*Vf>8?GBd}|x26Wu^nb>_CU zjcs*&6S%3Sy&L;PCj+b2UC$?>zN%v#Rq~RhH_>ey+oDT?WOcA6)xKhFBa8*&YpfN= zD2C{%^Y*P+-@WF_S}iAC7PU4k?OLL# z9b7ud`@2`t{)oT&Vt-p^(Wa}q9{K+``u4yms_Xx`vopIhJF{nJXLojI-#fFjo9rXW z20|Vr2oqQ!0aP#`8iPbg0)kpmD&nK2ii)qQwQ9AkO)XY@Rc)b1br6-8t8aWpJop z&_C4Cey#Ya_xv=e{&((iy7u75l zE|2eBbEA5=Ww=udsfY*Kh>ZxOtII(jfXwx=Ptdh!jJ*iBv?K*qDVc>E2)meTyINZvFQn+dA(`FEbi3X*f zReVgoF+9?)uq%#cW=G4quYboUgo}M#9C?f$s7oGAuMU`%gk5Z!d}FIG#>cQ30Vt4S zV-IPdd=PPpiZ|xj_hl^xgb~%%xd_&?*Q2?RfdP0kF@YbC?lX~w^7^{it8%;MI2k7g#&|%`_|OA`@k!Q!dtJu0Sr{} zMxQ(|#Z{e9_}uh3AH&5Jq_T1X1ASFZXCl3GmP3}a^T>*Jal@?&#`OMUp;{l903WWa z$oCVOwl%^qPScC+?fWIl&;IDQSyrp)UfV5{N$iiJI%p{|ij z0lo?YIJ8E&|6Fb`d#>#fX{`!ss?L;S6ocMZuFgYS@p|K)gif<2K!$^&zdOpm> zg_Pn~{AIdn`o0-$EgnZg%|-@ioyqMA(eQj=ZSbAN&HMK~hy2}kkun$_+OKRygoK_H zZVrIX>DjR6_-eh0aSB%rRfCn8`!qC!18Z@e5J%%?^-`aZGV{4%FTXZ*vv-|&9AEL2 zjcRZn)3dE}g>_u0ww3;^*Ye?j;_KST$$|8BjIP$Xn6=J&XcLdbL!Owon5DwmCfwJ( ziWg*ARRQSJDGH%SO8L7Y-(xQvjWzPf(cJm#26lR}Q&_52>fd4gh)z_1peh5C3xs$D zlc-r3WpQZ9U8bIn@8ja0kAzOrZu$YAq1M&Nx)%EXvA}7_G=W^xEiRTsEi1Nw80^D3 z4sxkzaXv=!)>;Nv13*`D6TKr_6+`hR!nRaiZpQ=ZCc74;?<*b1R=x3IuYiPFsCj7# z={JVh75DmLzK{~{ZS~*^O^S-rvGamKu4+pd^wnwvGF^buV6am~4luhwzmv!gOSpQY zD7^5o{Wmh~#E!*CJLPdm1f^jp7uBu-6L2fA5NQJdO|Cf5*D9X6pbCr&HDO>WCk}UO z1#W`Q%Ph}FgLW+MiTc%np<|BcyoEHT&rHzKxc4h5c_0s(ZcE(bV!j6I-U};)N{DV# z3ajZLZZ))CQZ9jKv&Y#QKl4)1F9D(ACk<{JhV38!gO44^HmM$ zDO&B)|0q+0R3QAG{r}OxbZLEs->)@_SXH@e8NLnDLVymnTAXO&Sd)tTMjF+$*bfzF z027Q&3U(+H^SDtz`)v0OTwMPl(R=XjpYphB`m)1xp^Biinj{uW&|uI3af3w53!Q27 zUcno+ezp6RS_LF+3_@aobG(L?B@OuuE``*_K{}G8SZW@bS`-6|4wL2sxj#FwfHM=I z%1wGcfu~{hPJSwt!(DV<2-D2K{1^1d_yzPqTovSz9ia!&*c`{R{s6~jPUKP{lPW&<>`wu-hrk0iVW!(Yos%>iE)o}#G?Ls@RRVx4eF)qN=K;0pV>ahgKtCHEJrpvb;$a2KbnakOjj-FKyv&Ig zsAe2c`VxcPDF9`(WK`t1RcO9|rk)iSihcA<3M{#Pe2j&n_h;GPBe8rG`43&5=92V< z>S8Evyk*1m5wyaZvTCN&|;sbX1@-@mWOt z604JVF$oHUR%u+wJtlD6OuvSNODwcg{Sdu|5ddN~H_W!OZ*k_>B=gf%878xPXfRFb zF!II?`A~(6u?@65#fl=;KNEZkjUD4|7q5_bb=H+ZbZTSnLR`5=+Tv0)B&eXbPIP-L z^OqD>$F!}30tN)!3886h85iHYNia;bqN!wY3$cT0-YFN^NhXh!%h9@~hvmn_^_E{h z=+I^0)ajN+x*ew7Q85z%l1hf^sOsZdC%=u%JS0~~hG<<3`WockEvABBX6wr4&%HBH~pqANpv`9w6F&9zS9BEdsW>XT0` z0Nas5LJILl24$Tdwyljd91IY$rLrE*4m6EEc7o68nzshGTr6Jbg7ELfZRAxsXwiE) z14FZBE@i(G(As-Fns{78IUEwHbbPvnOMDiszsX56e`>HaY}h?YFye?CLMX$I5@)G+ z{}Gm;<`B~8dg&h#{4=#9Pk+&xcle?pw?jKYyXr@nkr>#P(vR5Ng^iIsI(Bg0>02dn z{8o08#OIyNJsHU#$WGlPHmmVU`NwR$>PyrxL=*QGI2w93(TvsfoUQOiP3@0fozQ$y ze{oK2|$p8&!>OR*J0Hxhf4;@snE=d$5ZYk5M8 zhLOf>y!AGyn?g8UT({*?mRiI+;4-NF_@CHD4TK5Jy*2Q}P{TPfFw(iEl9c`79`|;o zgOju{wHpo0>tuE{<&YUj;7v_s`r&Sl=fDy0o*FC$-il7$$>{ZIwNM%!q#q?Ep(au| zq8592NB>7Q0w%Fg?x2gL2&8GXxQ@*-p@QqV{*&1s=qyWu`$E4zBm{yw3k-?Dj^&DB zrixp_0T(2EB?}fbPdh_n8jwF;Y1UYv8NLO@$2Z(1UDgXb4D3FyiN9Ned%RQ~Up;Gf zkuBz~M-RS4D!eT42{!c1cI0SP2cIAjY}&-)))7t|FRUzFxgfoft&pH8(@Uxu&W&7u z_FmqFnnPp31+a4jb5NH$=Ki|giY8a;LL>;(ddt|;`E z`J4G@HQU*?5lz8_>5~^!qJB_jJsl$n8I)>88btGU0eLkhg{6LggGso*!7t*xQSpxY zT~&m>hAIFlwQtaEn*JDqtW5t^95p@M(=pJ}I(Xfr4q?=vEz)V4;AMKk+KMN_v{1C# zGBP-B^bEB2k8iz`GZ$Y5wf3&bs{w$c#qN3YsXaKgVDFiGOxoliNcs9b`g(0z#=Aq< zE~N*0^=ZWt_11ujtg}jAlQlO~O5bhO8-397`qr!pB0ojX%Yx6KSJUi2(^td8XVUg! zbq?C<#1m?8(2j-Zp+p358l3&!Q&jMo9(xi^2S0v~i;451e?p-$;y{aaRm#`cmMB&~ z9GG0rMn?}x*x&Ddfj^@cEHa=?-}_tKC*C$!-P!O%~RZdb+HzcP}+p(gR%x~E7ED*!o_sZgIIdGQcvbdZz@@7Xw7CbA@E+djn3g9W-SKu7A4N=?)Q z{WGz{#l#yJ&|_G8@tvQLN?&(DB-1SkArakmrqx2HODSXlB{y5Y2P)BX8r0)LVRb65 zm8!XOZQeb(4_&NmGgQ`N>TvJ2pK|jE17Gfua)}Vw5H-`)Dz2NkV^N||&FITO5r)@Y z>UH2E(dq4A%2Nx~sB1x)QYmXw1e~YhDNhORRrG)qeJ{MxaNu8&vWBPT$BkXh6+2t| z+vYF1>RzWYFxy*m^ML=Wi~zhM0qTlg zh3Wt{2VnZ)as(f<6dq4}naFkKTRM-)hm@H9GYyd(j7mrQ&aIcHVKyxJr;_7C37AePQf2e z6pUPja^pUnbeS?y2i!W`hlW$Qm~E%yVkWF&Ae(ks7xw|jVVf}ISk>0~m*4+07IFWz z=Y|ygR^|G{@SgcB3bC09BoO#mo_~AQpG#V5dkKU%3aaZh}|)@lpaq@3`5=@ZRQP_uuA33FcSRR zXcGDhHMKAqQmaXSuvDjl3CVY6q?q2JD@nnpv*Y(HL<>KRU<;Z+ulZr-(A+ed*a}hk zT-t#$BKFzn5N(U)AP6;hK>`e^13{Yjncu)>@%y<8QFtojp0U*@M*{0JDO-7E*1HR?}e!_zg{svUQ_aqHzPwZbM^ z>8ExH7CjzO|2|nnlJ82yV*_zCa2P5RcS$H#*zvpHFE`Fg$`QoFRftXI{HY(N7LAK zXwvpVP%mSI3}spbuR&KhtThF_QV0ct^Xq2-_vw>?(F-JGR(Jnd{4w1b;8K}a{Zj+- zkf^{!0N0B{7v=@YGj)#%$3R62r}cZJ#$h)LLatLkT4voB2+3L!93KaBgTmt>XNem= z2W#MXf;b`}ua88t8uFIYAQ_}O4|4dy!Xlr6yQAQCMAltbk)xRjbOHHhfYuj=YFQ8$ z`4H@2aPSn$)HU2Ofb<|;rA_6bXc(*O6GZ4tit20lFY|5Q#N_F_E}#`8ggHHC;hf~E zz@G)`= zN@@4Kwr-Z$if~@VFc=Egezu98hzT7LbVb|J9;;a{fWGtj;sp6J=bLg&=%tbw`e^= z|4DKoeJI!m`XJ?t2~qgR91ko}B&jKgc1|VbSKaTAUPZ+!B$88;+{omyf{@V9$#Ln) z3_Dsdbn+M27geNpV8PQx94V1roF$tWR0w5425V;{3fHXHMCW1mePnL* zO({Aqu_=)2p3HL=`(^~@ljX+=^hYJxUVk9d5*F70rGt=+!&rh)0sH8(2IQd+I-#zWD0t%qJgBT$hD6C zW%c`0PND{BG~Y*C67;T`Dkyfr-?{^HMO7MX1N4j1YH0rnJ>A)&O z_Fw|sPaC$<2Ay`=wQ_N|2d3G1m7D{$fYd7lsPttfu_aoqd3_*KAo#|$;MBGC z)qRx&Pvgi)Q)0N@W5bsF++_bys+KL*;g`v4%!!pa)8jSZ>e_cDbbGX<3r0$Wze-Jx z(6?IYbrsesK19hJtxBu7O9T3+8mqx#GA}XPhUVu9l0+ei2FFZ>(3NHzv5`ObJORZ${n3=zKKGl)6{Yb23KS z&Nju|=tX0<3DIl7f*=o2;EA=uG~3}s_QL4btXm{aPV74!4wm-G-6k%XR3Y7^A1jNO zOtnp|lp4O16AxERAoXh3utMc#`k6wTYIGqKko7N~gpHv=L(*qO+3ky5usGFBv7;$p zrsi}{-<)&B62N;>pY?r7l3Lb9x5(^RBygcDkQ-UE;RI<};z`V9KzbtE8gdMfK{ zz`oiI=J`sjvP_vJmjcu}w77Zhw(BW|v8c%D9kDdL$~QVU5(;+q@3>QZguP;&--v}b zr>bSB&Pj+nTA@OKio0W*=^_5 zOlO?FAC$uQ7XMNN+%@-Gf9LWu?PSgtqJCOv$|tG_{AIQYeXce1+w;YAzgnwB(_nCs z&UiBj%b%+7ynE=I4)pRIy&a}2D_oR*Av={gL?4yz)_MAKMS~7KJm}s}=NM}}Fg@Zr z?_0x|;hMO|z${jSozwS?UZpi`qVwpJfa*w{j8ZE`+O7Kc*#svFWUDe4DLT%ELW2eb$@;CQAZ1=y&g6pIX1bBvTb2TCuKS zAudJd>-5?zYpYPw^>P3s`~{+>dGRU`W}2gHVDuFYxz|Q7eNqG;P!rWjZTkA9&^8h6%w%AqVZCqo zdo%QQrNMe9WnQ$Tq%THSbR!Brrxcb-j>nDi9a64uNBtUzUm$@-`j$WVOQ#|f^oQso z{(>A76gI9VRoMK6&%)kLc;4U~Vx^K(t(qu%qZ3y%2E15!mzPs9>Ej z-Dqa%(?M%rABElC3pFnquBLN7%C-q`^>j}i15jT8$FAsKMjHU{dIJ(wg>I15GGeU$ zYOonlRHxitMTDhfc@U7rq>nU^|A3K~TN)g`*&rPoV|oNk9lj?G1@^Rp@Csq9d9WMY zjVYGA=4zWca;AUkQo(SEn!!-fC?R*E?{+pe7txK`nny^9fMA{kG>cySSKUYB!ILvl4*e)7p=5)cc5U|h6OMS)DmgLup7eAk*m@fK@g@kYyUzal<;ZYL z)gUZ#xZ1-55P3qXL3=tk!An^moDbauyC{@W87dn(P-BIZbIph2(IeZiy)XQ=l@pZf z#SK!txRX{zokl&DDJp!JBX8q|nGU2F=XhZG>7gT?4hJcP*8`I}ECDTMRL@aUnxxu| z;l7pEPI^6{L$pxW&W(0SS9>~P$VsK)%Ez%rTFCKn#r?nm$mOwe-n^SQA()7_0Yd&5 zc0Yx#CM!RAo$e&;WEx2wpOWDHqgT@C2)#HBF2Ab>4ZZ0a?a<{RY4T+WHy1sn?z)B0 zl|B|SVm$FGi@5W@|d&HxOdS_nx_^x7T} ziEi(rycQU;MFO4&@C@qP4fcuvuh^48sel#ugUtzrj#0$k1icbrS6H3;M;N-` z%VRhc_?_RA*aXYW>NM>L=`qAeYK_+LlpItt^>o1AmZVeKx#YAH5gtQ1#pAl_7vg#S z9erj5qQkb9UuvQ0l>Nk$eC#PRzAx`QUHOfa7oNdyy7&tjM%n%L6OD?XXF&w-%X>fm zPz|LFbNX2tk|h9&nKK)W<2`N?MO7$T10g>(PVWTpOR|TaA)1KFAwf3f->~`Yhq(l1 z8DT>tL(`uJ3^rFR%9?(4k{%0)o5YM5rfm&FC>s}0G_!*BVE@R066X;C7*pah@dQle zwL}$Jp!P9$WQ_^Z$&7B!&E$=uVdGm?1fK>jz9dvp!U9Xb>{0A~~*PoPAF@z2JdvTX4|PNq{9ps=ta z9kP1Wr_2LBtC!}_SAj-el>b(ESbBUq#U$++?ZxEt1x-I`7M|_o8NF z$#`)>|EZsSf&VXxb7+$l`X4S;eTvv0I8W<4Tq`s<4B_}igPeaSJi1T?JQdrwv!#L@ z(+y+#KDH6UR>h3}MtULesEJJ>9^wu5su15-sA1GWF3&wCJ}o^Snx^ka($i*q^I4oY zdLUHA`uf~Kc5h(0c%r+rbcFi6BkiZ%l653|B89DU(DuIM8@P};>?<{K&{v@u6&6;r zr9jt9d%r{fR%=`ys^by%6Fi^~bK<`d zU=4W(dy~|FWICo8XH631r|G|-#tCT|dz&7!a41XIsEQzX+V%u!`8bF>_Dg; zTq(xzX%2U`7xe`yTMJkb$5#J**5s-5*Cc(GxDwA8)Uiw7>#D4v1XI?KcUYc;V&1f_A%Ef?GpN0(}~>zz+nIrw>gUA}tj&W9DYf zy$3TwJmSHYr|5G@{3CsRp(wM*1dl*qTbc{ka6G#`@b$*t>d*{o?E#el&9#n7EvPg) zOepm^E7`?NWVXBtAmE>fDS}%HV%|0YMrzLajYDc2g>CjD46H^0@4{w08eHv09NI|f zFvdac(2r_%x8VfthbB=A1hKgTCzUQBOKwyfS~&?<%D!2&G3=g8>-#3L&;7B^uCNjRRjIAFC4l81bwYY}B{Cb^BPmHrI1GxRi^7B%FU zk~O_@3_ncJtt1}NA|SmBj0YZ#J_k~Zn{|l8;N}TQG~+WFoLm3&>zovyL==%oYG+NH z%-+*aLJ9onKh;#JcSMgBB0fQeACx{YIm1#S;QGUXE;@D&8r!N)4H)N_u?|NnWrLmn zSGiqlT1}satnWpF1B%bgkyytzCyLThfo3qvSx-qfVHRW$)9t~A;dOwPCfCOkY37A* zvf45TpQ4$JmeT}(ir&GFj^MI(_}3OHw>kGj#3C7nO)u$^U_6#Zd$E1|k75%p+G!8gdD?F`Tq&GJU;5FB{ zRFK^=)OAhq<~7h~jg9tX0oNf9pFo&>ug_<|){}*E%FLU3D9}b<7<6Qgnhhykv@!oh zUP>p=b5M?g{9h}mMOtX=`dedCl$SZvW(|T0zzT135LdkPwM?X@W?S*6F)3cou@o?` z{wG88ryFj)UGwO_8hxlV^s>9q2-<}5iCy0TQgt=zY0Taplo`l0l~|NWW;*A zbi;KSEDlG;kGXq6N?-h2`k}fMQleO`_pam3uFn2#E%28*)YfFZ2VvmLvp+vpUZ6zjd6F`mAN!&PDex1Ynh(Qf@+}OOrl%tfa+^NZ=%-;i zVR2t=cx1~m{KRnl!_9azJ=dwiOB&Fh9vHY>MOk%>?3xVPxy zOMhU61WW7QFJZO&r%tQjP_AET9n;~2`sdHyh7AKRl(dn)kzR}KEQ1srR$QC+z=a2& zZLu2+-kWfG!{Z6aUxv*PRgs>Ibr(G}uZn8aKnr~R(#r{M@+-iN_Z<4Gr16=Sc?O+1 zXE~@VxWK*GTW~otNYg%$bC@i%F)Y}I{;Md!Zk|&8&4$-@Lh%0>d7fs%xgsQAyMh`e zj72)D*%hUj!RXq)J}>I6P1tu~0Fz-88>Fijp<{#3Kl(F`g}MMG)`a7<42uSR72F8s%cC`cx0MRRPxvG*4yfsPVgLrzS(S?R z69fD8H7U-)K(Lx_X!QL?gUmf93?cNBOrO{B7;%(4)^@-c5J&jEgEChsS_)1RFJL_P z^3=neFM6XwhbUE18aVbz%-B)&xk~CFHUfUY^vhLX!5^x0Sp@p+Ux|A%5apg?Biunc zB(r%O%j{4hE+YE#2i-Ax4WDq|w@{lNJ%C3-PI5ot;&}HQ_be3%Y`^;*xzGTK_Yr$X zzdk^V0vbZ+ep}3{2Vpy5r_tXOxlO`*i#mjnXIZVL97N$(^6}6sxOES_8vu&3qpKn1 zo9{xyOZ)Oqv-P<4CLW!u{sn=3?cKaYZH()&~kPyYc`d2NUj~#H3b9i1B z63@u5x{KkJ-4cbg<7)Z=m3}OVr{lQq$1#uo5i?_)SH+82WMHI<5B};w2^WaILAE?8lPky*r&fQbE(971<;_9=#y!@SMZmnyzseso@DM$b}(WdOg+gzH`XQ` zWbAR2CP{3I@RVzPZ)SvDT!>&lOSBi^~1X<6@ zoyc9@c28r+SiiD1h)wjFCLsSfA;6}P9R4?et;JT0LHx%Wu%1I(d8?00F`3o{We1&E z{^r-kKwuRMU^KzW@TNN4>64IcMGRj%pl>LS25GxryjsJV^$7Yo%f+jpquDOw$6i~F zAsU)TVTKTRL5=T|UZuzD>{aeX@!$HOE)GRRzZXY{{UV@o1@TWp#f#BKi#4{7osASE zE)B?|0cjsL*98o4m6aP)rv&;a#M&EKU)g>FBl|+7vsp{y$18OGY5aX`MeA69=+5Xd z2Ky@jr;bJXJPOYWu=T|h2#QoVP5wE@rbI3uC;(IsEAq9pO@n&FN5LX}o8AixPGziH zo-5^HFhgSuG^M5^EAkLM+Z<3N8G`KNN6BXNNL4&e%PV+~&@bc}6!afd0nA>dm%BrA z1hX>gGpYk)Ts)es$S`qGY92mFH!m)Q-dbuG@*L&$ z!c`E`TDG`*r=H2+kU32$gUS3z)yjZLuY z0mE2|+!ngFVOE$M)3-=;&`%GUtlH4wPqN(&h4q5-YT)_^b{)KV)?-tji&r!fmA^Rj z4HUduP3~!-AK)sT`JMisfCggHFasCS6&f|iFze1>U!aIWi$8F@eOD0N{KzcMdFY>5 zJ#O<+c=k0J`v_@d8<&#r8~twS1n@;TM9~{Vn3sZW_j2Ij<9=59)Km_7ZDz;l1X+V0 z=m~GSGU{SeoTEu5yqUqEiu0;jN%oIUI5dCT_!v^f$5w+pZkFiUa4oJSqxHT7FlHhY zrU%3Hs0DzP3rKKkmbQsk;SUc7IA5k^iGbpos1$+akxw%g*MCLUEkazPr;;Ez4PZWe zT!=x1-2My(9!Ltbn4m}s?KWN1 zO1oQC&9oKTX;{a@K%wJ{?ubbqENqCbEvtYNG5Tl`nw*5YA|QkTUEP{{r-Q+l%z$kK z#<#OuQYflHi3dD?;AZfXgH<}tEgesEuR@pS>8vIb77VJ--n*;XAyvEDB-9Tl z%bg%v>82X(#OmiARA6NX^+uWLm|jEeSt{2DCqS$?KDV@#zD^Ergu)YW_Sjx4yeI~M z?12?*y-4)ZFuE&Mi}T>=X`zc{y33WCeWreMGQrKSqL0f&rw?5s(BDPu?JzkL zKC5tc*ynT5#bnv?6zYP77HDqMIasqRS|KxN)3+V#a}#{KBct~9e^m`W2jBPJc|%Cv${y*g{7t)2#QS>YQ$AMSP)X zSeFVYq|;k?rv;CJI>U6u5K4F&skbglsC*8UdRs_bS<^&+u?e=kxQ_vot}&#fr$^66Uc+k_nAD}jdW;g^T>3JO!%OR6o+=kV6B7lmhBrnmz5>0t(m?P zUL>R^`V=z?qt~2nPHdEg5C&#KW1+%)2d48F%z2II7+Y!ep9$%qB8a>X&4R-H>r5|0 z>zx7K3}tuBJ}(iYwOTjoGr+TV4Yk{OM0@Y_(CAuRDf;n#DFFm~W=^R0Oa~hGj}pBY zMPWYs&<$)%0^b2<*`G%~NmE zF>0iSa@mO+66eVq!D~T$Go56kPZ_S+Xq84fQOC>-(g%=!p+Qgv8M)qRPhZ>&d8M3= zbe@b7S(-UYL%?t<(8be^DPS4lKrMDLz3<=bF~RWJQT1K?I29iSA=)bk5Z#M2My~8+~`ss4F-y z(T%EPGbv|U=bpULi`6VsziVSq5Y&y}$<(AfFpEdKHerbv#dHT{GkSKgzk9Jkk5#)< zgeu0JM|j~IHO)d7-F=kxP!3<-ug^PXqeL?~C`N($0BwuYr3J@VQJX*t!U9g-f?8OO z1vy)4*oGVR#{(^+KNB#H{eE0+9&D$+HuiqQqWilTY};`Dc=cP9(8vNLOZ)x`b|pa}XGhuag@f=^RM0W0v^buEi8Y?g+MpL> zT+blNb7o7yt}W#6T8d6j{^5b^Skj0McZ>|qEs#W4rr^>pgbkjIm8!Se(n&v&sx{Fb z9x&i!v|%AA4Z)N@1y`k9OB~;xi@`mWTYLvZxBsS8S*(tbZ^hJQLMf0jyBxGYb3h`Y zL`2kS)@q0f^l3A7U>abCHcO+Ya2Qp*2}K>KXl2kfz>F9%ttR$#;3%Ts2-}Uw-{YAv+hBaay{CFLG?s2rqMuCo$ z8F8teN#(Oa>=?-Tw{@Gm2Ub@jPy5T&MysMMgNzTm>gZymRTt}6F^_Ec=osr}^uj>J z@!}P}=@AWdLT0(!(-?>9Lm2oRf}g)if2#FCs7s(+FFV|UJ;8X9{lp!Ye3d-Qx-<0i zl~RaHZhnpOD5k+MQpvPEQ*Y=|nYJ5!;1Tpdmgfa8s0X>@I$a7b;(gIH!S%;`c|Ig& zdicD4d#wY}7RA2aJkO>25D9ch7KVhFz~(Qq!KTF={B>S%QE+C=GFY`CT?y=5nADnB ztq*FTKR4%O#^aa3qTmxE_nn+K6BjB80;y);-E4ic466Xo(Fb+ZhKOO@#k|eiaQf7I z>>FTh9TWdFRIA#79QGTXlZB5afhI_{28$wC6Ioz3UAJW6@mjGh-Z4X$Fx(grDKW2M0&gW{QPgJsyCE_Sfz zOP6;GHf}C>jH_KfgmFP$rQtuGggjs1!|tSjlAe!{sojj1yir54iXJEUz~cSxFn;ps zA~Zrv;n)4ct^FHj@$^TMZ)05@KHf!p8;{MmZ9RS)o+~JEhdmkpsAk$c4h{r_YJDD$ zywRjjNAV>B*Hr-nB~K~X(!KRm-daQ9oW5-(t3;r-0#3Qx5wsWk0XJ>Mt6ORcHSQ`E z>%1iv{tO#|!&J*G{To~H^=3T9(rgtzcx7rfd({=u$cWG91~#Ap!rsvra6!bPOk+Dh zgZyB*xD181l~h^p6^r0--q$qjrBbVPC;M-N=i@Qn)tlyvPA>1wL*_@vDDq0yOYH}+ zMQ8T9Nuj)j#+OUj)a*KHSAa>N#wUgm3@-zVjE0q8ld}zjT(t1}u~W!g%BGgWlUr|H zis!}h3?&4aag+k~!I|WXT*G6#dc7WCcWfc*HPQJ<>~gF0^%SPa#XRX9?iyU)H%XdL z9GaJBshQOhZWy|r!2grAAfk5PgXaexJB}hZc-giz@8t7dAB?jXX=uRGEWzTdW>@2P z+)_m!QZ6v^0h{;w6jpB?@18fy=J|B1heta&U}Pa39N1x9OUvh@(&APXhkykHJ~s1< z|0`p;%|d?^1)4>+UVz!2XWo*=en+>crQ=H%SWCex${|ZI_!ZZ~l)i)I>6F1;X9|@i zfMti2!aMFM?z?yp_}E9o56$P@^WZY`Mc>P&U_cN{@ZnfDQtt*qNRJ`u$cM`HHEh@Q zqu*dBL|j~}v5a-Kz+*#D*vNwyRbD^nxb$#k}f)kBe-!N9@WtbG(4 z4HsbLa4S?EjHnwDDz11I9^`#VXfk=aFNn8aDuCAB)y7G?ZU;04*;~01-J14aSNOzz zk>l85xG7MM432|^r98jEJs;6J2v$4B<*{Ga%eoZfz1A`nZewP>1abz_-j7v0Thlr~ zkE0ixBGm@E8zmJ?u1&5GkGB3NbwwD%T=5w7)tRZqJQH4@_|F`|BhPqmZp3<)uJWrM zeq`dX%D#kQmUnD}XZai=c-+kwI-A|Qh98bgX!>S9xKzuF636q?3Hl<3PQ+%~aTlTG+H!?Wm3WAsV!G0x}y zWb#0$ljHYnJ^XLve>{4@jjiF#8E4wp*z6e7uHw!SMvL;8SkhhESqDC_-mo55rG1CV=syn}jO?AaT#>~m!Ei(;x=s_taN*pWCq5?681V9E5> z|CRaIrsx9!whA00Yl^`2)Z6-c^u$*9mp=&6>Kt7Y9!)ZferVE~hzii@Oy0qcY(Tqt z!-?~3a367Y5&o^dyDDa2#AEnt$9wrvjd(nrmINS9sLEG8O6mMr7LrXPn`a{FtAlT3XF$%nqXk~F@};8 z5(}74@e$4fuyE*yoyfWy{oe{{wo>IGB9SLTcN(CMXj2mV&86E)rcT2+qZM&eVVv$= zjc#f6IqN1f99LRHQ>&yrUiRnRLb*jeif)g{&ov$I}UI zlRt!B+^Ee7vup8~>o9y#Q(@*uY$XjEbkf#_^8KeEu3umAi9wc$0JMnu3N{F8`aH0X z|EixM<}|bsLizLv{0{V&D96p*PkR$kSH@fo%Pl1JqKd8n?mP^qD?mh*mTqr zrG+{gF4x)Hd%gqLHG3q22HsUrG}{|}>7-0N?U;FgnCb%ym`^^0x{JvjdN?THu^eNe znt*o(R>8{SAQ|arV^!-i`BAk3lc>HMS19A9guW_3qX7WVb_wMnl5ODMz(U3kY-2ZD z0{&pqhz8d`)C}BN1OmP9AkBdU|4q{6OO;gBra9r8p?GOh7n;=bw#Tf|$w0 zDxQsv{(W?ugIY1xMh`DgwVJ;b_sIsFJbEt$;v5n8SSa)XSBk~rrOhQ7TlNa}I!Hzz zsAtrm9^I_}*1?$yG`DI; zb4--yjvmt29D$`PoF$`X%)OX(w_m@4qaiJ1?md&^OQOodN;PvjJC2J7e$BCL4v@70}0dN4|_RqgItIp=~Regs21+L;eg* zOTMF9jEP!jpmhbju*vKIBxfCptBw;(v2OuS)Tm2ipqsy@`BMU9pA{H z=;9*XT|xR3#*csBY=!hYLiCmd`yA)3f7Upzv_Gtt)nYrlYwXArN&|3r`)Zr_yW4PL z!kLLaI;9naBE1x(dt*YWy!T`J=a98VKjwH;gMx2}39!6h#o7d)aF|nl44^-V!~7>F zJ<+uJ;>-VlrfGUQQ0>0w4Yd3a{l}jDM_cTyaZ0`r7+5*e^V}SzAM)XAj@tKNZ$VWa*Q+gTsFExN_Vdk!z<3NSE!)WZ@^W_J4rtsyH$)7 z-ZL8s5>|rE+4Dzmr75|mV{pgfSyt%XaavwSBU2RC1?oMKzM(Dgguqn_jfS6GAwF}u z)G_oHmCNiT(iYIey&Yn-q`QGkwktB&J#Q=RITd?}N2OlLL@_bC&9{=?O>cHK+S9DN zdFIdJdKzy=W4%2;Lv{)D$|)7PU!uPo)0Z^by$_rVhK4<2B*?CTRcjM$r+)`Zhx8ssmOp7NV zc)-?wtYGH znAohBq-)S)ilb8NkHU7t())OfY4!%!7|MLA7l)! z$QHVJsOYHK+TiS+0iV*w{G}A|Ejzvu=KdPN|LP~A4Q!@xWP~MPOl>OMC~A#O1+sNH z+s4J@pJKHp-=pT{kX4O4DGn~@np*8yhwS$Chzn~=CpZA1ckr`1}5 zrx1)f z)%WeWQdQ8Wmv)_jUqftqL>jw-mTZo|VF#bEj)$_I{?RhiSL5KmK?xu#-Rm9W))Df* zM8|yq$ve8YU=a4ZX%k2}77C#MFlUUuIkkk-qXQ{UnHi)>Q%%tLIyNzBvJ%K|hOY2B zQ^W$4zW@67j?+gO$dSmd&)4sikPd(RBg8|AF}J-@)-@Z~Zxl^0bBz9?BJNmiT0Vhf zcEy`2{LmHpm7-hobLgiu908TeP5+Xum%wb$qQ&SIh&4?6#7Qnz|J$dtrwN;}K!x`koV02&^l(6_5Tve>)lLI|?nQ5+U;h)$_%U32l`(RUPf zJ*IP0Z-SGe%Z``QnfmBF?Cz@qd&~%GRf;V(-PT6KAutzXbr?=j5$7+pAra-ohsNHp zFv!_gnU=)srVOzJEto^IpL1E4gwDeB_8DA7e3|1CtxfcIly2*9nHtI?CWg={a=yxT z;-T7fo}a!vUU2<|7stGK-~UA9m7@oNGi2J<&PMgI!oEL)J%NGryKIS3!JcUga|M0L zcDgnoq1|p_zdK7mE`~P5h5G2d95;Q8W%N~G7(%;>VCNXV;{Wx4JqlbiY&&Y2owp-wU1q*?`pSrobVvdqJCyjpQRV5(N@ZHR#{;uGIV-)|Y)tG{`k*xrahC$4O0iS#XS zQEog&&zHm>(Pb6-pIf*CxEm~%SQ!0;%TLai|4DzWh&3eiPUf0`J1TD$TR178qQetP zF_pd1Kv@5sNndq{|BbGf^mi6-#$af9U0^t|QEGsVJ&SP()BH_|O9DWk7Nh8}*i}Cj zj|`Si(F?>Yzh=#m5S{eTtE83TG(RasW2ww`4Zs$kw7!-$*y0MdogVBbZb=|ixT+p0 z==69=4$?0|0f!xD?87wy(_BFk=ji7*v%hl5dD~rW<&by=vf)#Wwe)rZ=O$80{J1>b z&q?B*mLKZiL1JI}y&u5DSho_Iu-@S*eqkF>0rzO)X-Vwp|f_Wcq2e_`l z9xng?DSH#}D5|V){M=Mmsw?Tf-CapnI-R7KBptGogakqeNmnF5SObW=kSGCBQ9u+T zOLu^0N!Yv;!b!aLM%nEjZGk`4%^$g)y-FFPqxR9pBiK)qkstX7@wnK6 zeZ5N^-~=xxxwllAkt5>yL{=_jw|v?1o>){n5OWc@2BG#-?`g6s6>?pLJHy(ttRt4q z;_p_FqoXrtf-zl>C%OlYP>$IHPb2d!GaxH>Wl_wQpZJA}mThEeT!WcznGKKjdYB9B z{QA2XfRaelWVaS977ey_|!Ec%|$4b9}hWM!HK7t-00Z-zZPS25O#zr%h^1Gbf3& z*bi9LeOkzrWLL5kUj~`E|8)9;iIEJr|<9|!$>jx9f_BTGQDe3SI_B-X23ue@K1VpQ~mX2o->8$%-K~iZEztGZh6IP+47Jn1$ zx=JrBCC68?TeKejgWIsgK5%Wp7RDRzVGpW9VXR43%C9jimi&Sy>n4Ae1&P&ZIn0z4 zqwGm$2bH_3L5a$_0JHPwZsfmC7w-p6C7F1O*({-QiYJk04`qwwf~GiDhLjSJ9-C+#kN&Q?jxR1?!}y=3Ql>vs8J?+>n8~s2 zBS^#4Ghn{h@yU(_<|GOEIr03>R@MmFo~d4E7yk;gnC4UmCqhY+tka3qf5m}_>+ATY zGshWof%Ja(58 z=_98N-i=qMIuZMh4U9W60pFdc_aAq{^@h{__dHLcMr1>jNu%27f5f7O8q*58jiV^Dm2`qJ}f6GQ|-!rQN zT9%oAmH`=g+|J99!K0+7DX3@`&kF-=5KkPTW;yKGF(dFekw0}kyID5nPD|n^Qv5rh zNe4<`k5O*$xlckRXi4M;fB^>-LGNu4!lg~mVR1=jGYgKf$Hko_&HkIQK}->`6Cdm} z06jE`!N>(;P*O=EIRc)M=}1)M*CRg2o>je;Ur3Uxh!CG{M-+-PqxLIy3NzPsLv0P{ zr&Qzq4rUjR@e4UXM!3@m8-L3M3|1ydG5*J)O#TfS$+;wp5X0^Vv0aGsgV!Kk5)>YS zAa*CgUeMS~=Cw9f1FE7paVkGtff`)!fCw>e>m4o2d7s&T*?J9F!@YJSKOQ%JlA@|C z%Kw$jCyixcjySTRY_;+kH2AeMc|j5P&9|!nIg3fp8^IAcWU9RxBophvedCow-+KYTG5Bl@T ze8k=HNQu=$&em;+0gR#yM;_G9R1?W1NzAU9+!=WtqiS;;#dZN;+A-pnkSA+hEZKb+ z$&i8l;yC_BJkRp-7vq4mw~Nb9aJ?l^<5?!Nm$7SC?TQ&zbudzD*fk)2S z17A+tU{jt@FcGWz!}l0_r~ak{;UuwuXJ zSY*$WBrQoUg;CsOk8^wh3&+l6WdY|$?11yWe;&Jozu>4X_wOf3oVIm<|D->`*=QDG zk{S!POp(jkU&V@+oor}YJ(;wp19$Uhpoqk=I!Aru7;Y=DPzIt~5wNKI5YLZR1MZRy zV-wYhar{A8F~z$}7DH!B;dhT}d=pz|&40IvY+;h5mO-8*L%`lu2H7KWW-;Hs%PZvLcB9)iZYTdw)LBulshCYX63vk?r zh)a7g9#DmBB58bemizD+W>^0fr{v1wRCO-5P6h(a_TzE>GWQx}v#6I64lk9j;i)#} z<3HFN3oV&Wm#DmKK~!j8IZ0cxc!4T5p*q=Cb#5Bp&?F}+{N98v&v}jLcss|c@%UdW%~$3`=C6VhnFR|pSBuW%r|~TurRk@ zG$A0dyjoeGt|ZD?vt)O3YEv>RY#HmnfY)O_YViQtQCF_m?Ywd%hdz?2 z-f5mx!;d8a*{Sw2t8W>|{)o&xK=T9FKhcz&tbCXl82?!cWOg3RpuqskN31R4X#xH& z4&+abZ~D$?$h^@kLv$q~IM`{9oihoxy$>3h*K7bl0z@?hR_^C1< zg54A=%8bRTF*aWB<(_JIvm{ugczqJ=%Hm}BV8_6wXbzY_MM)Ze&@D&!++kumj8dY9 z<#v#Ngy`ZzfXV8U$?QB^4L#eJHG%zEZsW7!lm`bZ?Wv&tGO-Ffa=zTfjwo|2l=mxU zN_{ek$NBiGdtup2WI%RC8= z)0@RYaqAX@Njd}nHjyTd;Fnx)P86HO0zNCR(I;DvzYCj6d|i;F#!uKGBXl)0FOSy- z`N|-|{3lz)*}R$a5A5O$idU`N@e~3%#T#YAbfeyE7ZVz%iKSPepOVX8(zRsKQD zC+D=>hG)8a?ffqzQ85M<4*u#y_IV4U4*1P(HqOM7a*ir@JBez~m^4X!!OH(J&A*vH zp2_x#V`^nF9v+++xeFp}BWhgmuSa9>zAhBAJSdp#^z88{`-{cN{^$5lW_BD}|0f=Z z*OT#Bz?m{^s&)-Ki107@M!p6ii0WDF2Az4W9^RdX3})pfTfv3nBPdz^J+xQ8s*FGG zRGx&l7Bl@yy85IwXM!D~H!080L~LLbW8>nijge7sf-k+EV%3|~*?ocMdEXQMhwG*_ zUJEoIs|Ee=fL4p*#IKl`h!QZM4j@k&#`@P&kv_)%q9D@N4Gkc*)RbaVnvH4w-2agq z4nf!;1F7=w)Eg2-i~q0eM)i(NIUf5_IUj0Y{OlLG4A9to_E2CnXwDs%HpU;toH^B> zU6}iLt6avW6fA%jZH8en&}Qa*;))06iIH~oNG^Zb-WW7HvtreCKt~eGp!D4upNhl@ z#3Buu)wl^JdvPcKWghY_*WSy^ESU&FQfd>2SBz>vV#XcwnHi5tR+gpA{y{yRraYg> zb{NvNH5(o`@mcXTK6?T4F&J~K7ok6@OYNZjyIGnE^Zikrr@|xVse7wh%0wGWSBBW0 z0{kqC)%agkez1nW>JSGQq0>(!vnk9bC-Of`g2e48c0V3pP{qHU&jPI$ckgO86v#*@ zBm~+%y<8k^FldEYcC#t+(Z`D14tF8!ft15)A7V3MaVI4u1DwBo0%~(0gf($Y-Jbz^ zlboU|K#}9Inh(`1VP8Wb7QWj}G48&}{ELLZkH{QU6!r$993(g%_B+F~fx+&aGZLCq zEiAL=_{9XbZf`xhwnaSAvWefak)5(SxE#-HbKYY=rvJ&sAbhiGK?gk0z+i5phI+-_a;EZBBG1nUl3P4=Y=8Mx$NffbrP$+% zzll9TnXQY(YsfVz9^?oxBlXz?+}&npIUsEWd2M;5ww&U(?1j9cTN_`J=L0Xmeb&m$ zJmMsA(2b8cy<(c75q7w5wW}v&ai9NI@W}2A_1E$2Ri(mgy<1r(tBY-o|AHEAcKhG^ zS=#nGx!qlvTgJ`94pJV0RL+M3SGJT{kQ|xG2Kuno%|KH!la%+&X@6uzD6g}^FdMH* zJ?@2K^FW5fryQ8e-&XmiETbx<2**isT-{Pp^Y7&`(^bi4K@^|4Hc!r_BsJF|-`skx zqbXZ*0{>7(L~LC)vi9lBJpL!t#>&%Dlv{3NFHmyrI~KUMiqw70vJ*@MgbTi`8arF} z9SYxWw!Y0T#9alG3h6P5$V8 zLmsW$GHJB9Ux79{+{Pb|=U)!sTUR5bI$>zRtQs|S0Dooz8w-+od>T(G<5HXfwc}oG z_SQ~kGqC(_gcxEscEqS5Y!D4YY||P4`HyY`u*E8+IaPfPV0G)@e@@P8{iqf)w%t%9UacObY#f<_!KR%1CVF5}1;^%<=^n#KP%)X8#?v3skqS><6XIEKe6_uuPWkv~~pRKDBmJdXvYjF_K##uI^7`g?_7g zP*y?#?Fmz6y82n;%crq5O;x=LBn*?;?^zW)qdb(%cV+R0XWUKRZRs!XQm-rb&yg49 zbYkQGjCspVY&r010!`RBxEk+L9=D5+F#ns)fpqswWL2|XYy9!&=1pgw@$andN0ccx zptnGU8Q_M7dZB5P|gR-MsOsm$zX$ z79y+o{y6pko6>k!%P?`Q8~COU2sQcpRHuemXosA{bG@h2z(y-ZWA~HFcMU`>jWZT^ znb%1D4p_Ai@0MkZlsOO#3}s)6cfp38shpU^q5RlHSJ`UkQ^`eq^(eDZBr;b~M%k4| z9sUh4XcK~AH#l4WWWALyOmuwRbO*R9k9haUkGdOwmVdAGFIAWw&$~W5KwM@=y zvIRaDo7n*Niuh;t9v_sV{2@VG1$ULYGO2K_P28*gL$(g$ug>EOfI!Zxo=!{~0(jd2 z%H>Q9pfU=HTm?V!cWNk3U6RszHjvH3alB-(NliF>jWWW_on+cOd36T_R3*_-JWy=J38m(A&UaSVp! zunqtvY&aC_OlIK+6MZQTB#9tR1`wE2VIxzQIQcsXsDMK#Yn#NS1U9cD=pVsMaw9)` z3!lHV_FMiZd(Q8<^BPp9{Y-64#%^mjKUydbRCjV~vUbe6mz<77BL}{A2;~(<8hK6< z3^hT=a(FDdWxg~`+{DL@RbJ5o55kpztWld2iQ%>1i^Gw(hGG*6P%RbM!1C693KR2$ zz_+rk>80XQw!r;Qvo^_;nW-%ha~gxk0|kefmp5Q61U?{P_A>FN!K1LPhE6a`O!E&; zgr^l@lv9_z3B$tS5(DSmw*7n>!5llhcMs2F`oRqciU zbg~mICmqOl%=4FuTFFjwkImz!Y{`?r3oW;i^w`Jjc6{7y6?gc*Q-6*ZZChg9&O)9v zG)J%wLhq9yvOP@`VU0!(AAiG1d9%M15AY;&Vp1}~i!%6~cS2{kIzM|woXECVA2Sh? zzh^V~hZ@@vI0AI340*4$1{)Qn2Iz23ezzN+o1Wm!$$l4dB_a7-YQD4fTJBB|Q&?VO zM$V08BavsXJ`%4jkvBqxb^243sb!AAP2H?f9w|2zUJvLUpsnT_Nx)J*uTWgbPc`wZ zMLf=IsOF22Hti4{gWmnz$o5ws90-fqtgJ1^)Y1n6Ut)M38O6$!J5mte@=-bnm+v2n zMe!*|`X;y))kJq$u2>EYOKk(9a6FQ3o1SDp@Z70<<0f7iq;@QE-{z}R~wwZIhJegwm zjDUPUtQ!bjZ~!WU3e>HLr03p5?PiRkU7egEKUR0GJ6o1Vi@jKXlvRV7!hiLWUH!$j z?mkp2f)V|7kPI(I{y>VR-k&XhN9mq_7V+;iu|_M(*#V>w#DO=BR+G}07jaFdQnOhG z_?el{9>iO-#m2Q!OC}=cm4h#eKjvI-ax(QH>l_p|O(vJ~^Mm4b>iZLl{{o&+*E@M4 zf@=`^6z|KqUTHG>J(RKKICd@1xa4aB@z%zIZQH)cDRHE@i;G3u;RpP?3-=7;)Sw<8 zsKx9#Am%d;Y7xy2yVxv>S|Z|1V9o!t_8HHzu>@fIg}uO} zKI})+b5t&;frj1yS^T5=u~J}N0%i$WKQ*cc#wF%gx(YnV9wOz!!F2HN@91&L63ONZ4Q-k_8?P?kY{5GzV@(>yq}U^0?xXB|ga zAT-c<@%-8K>_&b%OfKe>H6AQ-@$9IJ}WPY~9fMM}V{>9Y5%}Rb6U!a7@Tvf9w9OKLUb6gJWQV zbBkE-xD{s9Ij@KT_fI)oswyxNPSbf>F)XG1!+|=hm5H*rWc-U(OE#R20K^bc<$=qC ztS)fY<=feM_J#CnOR+cke{6Ab3gDhuY5c6u3IGD zp#a8CbN)!CoJ|GSvmw^_f&y^i9UM8AKc+PrMQ5CQtYU|w$!gv61pi8ALkx*_Ymj}( zY}((&Tikv(NY`Z@#{ZGs_$RB4KRV?2A*~C*D$`Xgd|PhbR)z?c+2yG8neNJ+lgF38 zU@^x#7l}V3q(P`bGGy^kzIUA3)Z|%iww~tAImlcZ&W2DCyVJ0duPR}`h>si6=aosy z)4;=5&kbVFs=0PPT45*Hz3dG(pdcdJ)bT(vH0;Ppy!o!2g{E|qTmy1n7)AhBhIsQ) z&}tDTagLw8#%ENpTQIDv;@}yB$#xC97aIsAa}@H0UGA+3<3X~@8T@V!5jz!Af zQ!qhwY_oW@X^?m-M>qV+G02!%a+mxF?|>F*q*5z?0~S&xo4}`(h?>>Py*YuePw$%A z!ha~7npftQ%al*YuzBK8N^W|c#n<(6ez%z2bObqj@SUp94S?NG{)uAPfL0hUcwM4c zp{GKihY~pF6?rZi8rY_l7NqjD8xPMc-p+GNxIaOe zp!(aJ(#37;8Vi8%GF68e!cet7j*0oqX;n9t!S8FyD!guzSi@UWHQ49Um&LOx_pR}c zaz2-nrWU%f+4ZbP+`dztliU)|yDYP>uN%lF^Exdpdp94E$EWg*8^9J@yOifW2vwsyyv1}CRCHyL-2FANDTcBcWHK4hyDE12F>v%jH zY%M{@HYof7NJYDQqn(u?5*uuRa#ibYW~%$!vADrk0nq_KDrxJx{74~2dIqYtz$^ZO zBmMMdwwh(-e39-?fD0R&zehS^`OlMBjXgtf6uH#pUXW$Z`?%P}C*Gt4Qj}R79@hnp zpsY#N>>9BWNcv{J$m)l|37CW_hZ&p3R+)ulH!K74qfiM7-e6;xh9;TQcR9sM8NT$j zZ*kenYSeSKg4=miF_}`8$v`Dk{ytWHH6ic`vM4CeS%#&~Q4W&by;Pp!yr=2+qPppjoCU2dH^~!4hba30tqhkvC}k`ZC995roC_GFl%hEHyw&D;OLo{; zinR`S&LDWl4nAfK2Jzhyh`LpV0*MjM_APU*6$qykl(FfK8(EV4w&PlMbIU35q+G2}#mSfX;J5ROut&y=6ZnIVqQIT9Iiws9Lgp!ZQk9qDkRxT{ zYpvE9iG-pysbXy}zc*EE;y!NfQL zq-Zruh|)}RrQitmUx>BArO4MnaV@+XpH*iH%$%Z%^@)vQ6LeLz7IN$GT=`2QRRj6%$bpa>?HXe4?cxVu-#5vO z$g)_}7ANdj(qo4XVM#ELy5SUf@M=dSL6| z(S$lZ0&@AoB*|xBHG<>QW^iPzXr!B&Wd+a)kUrvmtIg#^E0QUb<-yPSsvl?}SdWvn zGHi8OvVlwCVy7!%fI;2}Vp0GY3booHKI<5ZF8IHr*uZKlK=jx;%&7A_5QRxZ#YRag zR^d?=H$!OtIUiZF2*|$?V#Fb(x57(V(IlW?Jj%ZawacuZ zf#b<4Gn;d*|9kMh;%^}GUvj1ZL~twS#D4|4k2nN@gGkY0P2zpvkMWyOz%tLDFOLOX z6ijs32R|HxXfXsp1H|f<^(-B7;vtwBJAgqO<3DIO20*B_uzwlu)4+0spvE9kB9m>Tn6;y= zB}mVca^3|QyOLW|AbUVUYo8PIG32-U*)4Eo#WcMlu0VvyPyQ9MO}v3L$7AwM&R>Wc z{SF&yJSD;SZhg3AqA^J?Ct^75EVfk#0mo(p5?$;%vGB2@vekuHApv0{vQ=z`>CYTk zB_|-?QG9OBzY*~fBibC#!P*1}T6VMlFZl?RNpZyGBR9J6zQ8+Lgk6h;`X>KV{%Tgh zl7QR~HPs>(B{5$IoXlH6aXM-rF zC4t?qy$*|8ZI5-HVO7WryjlC0n2B04D~zuhvwwv5gISM&*j?fxXlVdnfr%)|-snvP z+_K5;tUZpdit`cK<$oNCZbqK}33(2CLR@7WzK!A^d(=P!73_7dk+bCo1{ftkP6MYb zv+ixN-1)O%o)QZwzRt~Fk^38`z@55UJJHyxMZt9flUJRdEGGJr5ZneyoxsJLk>@E+ zBC2~0QbcS+?4~597dn_xrw=X7bjPu4ATnJb5E2biTxi53W&}3jS=9PG zhGyNZetYW*4C-8P01zJ8jTNww#=SfryRw+ZpDcij%be{M2VysZC^9UNN!!>;Gy+w* z;8qePV|1I0@|ZXMchHmSu{F6-t+09t$T=UEMa>ZHmv!naGCE z9%^{kK@+vLh5@1VZtOPLKh3}c?1*V{TIatG@P3nX1H->@P7WtBjh-tR@3q>vYe(OR z0BxF5dtL41S`$8vuNyalrIlWQN+z1?q!-1M{+BIW+Q|c#P zi}1u9o0xOg+GUu)(dd*i)t0o|FcaEDR`+k=5RarAu$7U6IW;ijDN1W4pth-BJnlS6A6p z(o(Qk%nDPO@yI!{L{5e;ZkAlt0+la8r}hh^EkD28G*4upjQco|!)v25kDUKm1nc!6K zTSyV1-y0r&%(U+u(=Q5VL$*5(Y3vZwc2RpTotk?{*i#(}e|W&=`;dBuh7X?+)|@Pw zyCfKk1}_Ry-#m(65*xQ(P^w~GVXtKBFAftuSm`^`-{R7u7Xe)wO5NVSzM2+ALPWYw z)Lt}~r-pA2_N`cf@^(yn#JZXNG|Jpl-c}xK4xeOkn;W(->|%@9V=0g9V6jUy$??Or(b}JJjDUQU6d1FQxZw8}yUHLH#ma(l3&!2R(}J9kpUOwPjHBTnoC3v%4`L zMuaMLSK$;iw?7!QMf55hp^z7EJ!g!!4{=&#Gg=VVnu(Ud{~YzuAx3xzMGoNaUV*|V z9Y-puSu=MXkS?W~`_540XiML@Yc76b3!)XQwc6`D73vS76*dZ=6V9=)zSm|(+o-4W zfE3%;Zd()b^qp)$)mx^WV5Xi{8?C&z(zinTsU_{0*Lz`)Y&8AE2gTwoi}+fgoBGHXxV+7T{_0}FU zvTL}nrCT3SYA}=_)540@bYF3uoxE z^-H?hsbQG=kc|%C$I<*n6g~jTtt9G-4fleKjKq^A2J!s_QU*EiXU56gc-RZJAnA)i zc-AmofQ_>OCh~E&a*uR>b8yz9(xQ`A#T3M(ReGor#dQ2qJzFar zq_};S03BqhFAZ~PrNOi8*yhT%1@t$5mgduG`iA;ayHKmpeu8%2M%v`q_nRZfS|Ug3 z*n`1EvFwH5k^17%Ep74)9#d(#9M<{{31_Np(dO_nPt1cJ)A<99%ecO@&)aYN;qeX9$X zb&0NkWqLY=i@NP#yUxz)(mp+8*ZO{3u}yHD2p*YL8R;41F;kaAqVS+f@*irK) zKvlSBv!Ljq>PY{O!l%={|Jg0diNcW_Jx*#z0RDYvrB?Y`tAMQ!qLsP_sgkk zA>Vbf<&wvi*ndD+X^0Gv4SKNHL;YBkA_n2@Y$p1F*rmlw$g~?I=j^_d;w|h8NKhfhO9zKyaOCZO8-K+>E&eAztXytL^5V_1Ey52`udi&YR z&Q47V>zy`xzuwDCQJv{}%lT?sgT6F)>3b0C{uOjpHZ7u-zQxsK(wEZlD}BQ5%?G@8 z6X_?s^ilgoq3^F8$fiC_Bh~ZK{H0jmJN{7Y!M*jXj}T?E^NXZclB~PSe}M zI=^t#cVGAx?%OLgdwPn|#b!FV*%qv}?bDKbj%qFL4S$u|DtzAI!2`p?&)ND|uwgMR zKgu2#%-Vfq9w^a{)Zh>vITHNEcYy8c)NSVeeqCtO@zSJIc$aj&+Z)kCouM_lZi_*O zK`b^1hbw!vXbbJsb$eL9-0t0{pVVzWTp(P+|0}xZ{AJvM^k_Bdy8d|Zaun1mo5t}y`ab5P}q2|6xF+h^Ln=}+OA1`x*>_qbh4i5wkRGP3bpB% z_0@gtSeUQqI>)vs6~m=pJuy^mG7t2Gk9chjeckj(yL6$K&i)$oe5naX7gmPtSQQeZ zCxuJzN$I_dHv9=4Y;IWQwMF_v7DS$EhrQ@vA+uc3qj+dk+OCHp`ekWlv_C`_b#GX^ z(hEs=FoZ5e+1Iwd>WH95S{OPUBDCAv1G?{T=|35w{w}@xO1Bpyq3hM>K_s^R12`iX zsdl5m8q+U(J3`gI=#>t=Tetm+{~K_9BpM2Wdir{`ey#sxZ?LDmH`o`_*_rkaqRj-; z2P@w01JyU5GRVghhpOc$3{(Z#=lqe0L12R5`rsaS?(J*t6Wx_XbY^Cwq4XFLCi z;Cn%8+gurL2Gh-h5bp0qhp!Bebf;mYc6nA}nzgfku!Viz%dD;1OXu{%-CjG^FEeQW zs?_&Tbg73z2ZWf;v~UmlIGoOgBJGmP=zVoW*XI2mTwA})MlJ2OVE<*PGAD$v?lB+! zN?6{b^A91NDvOqFUU6vAh9RD?)h?Y#kbLKlvdib_i}k`ruVksx_$sepwueKN!Qh26 z4TqZP#IOz1r3>E+AI`FwRtaH3?&Ms&3c4HO+tU3;a7*BkEtSvb|*&H9fE+P>~#;V2fK=#|Ain@@Tp2QJ&NlzC|< z^sUf2!KW~78TBu;g`>Y<0ZWBG0IldEMW$njBNIK;^PZ#_D#S*KLbe`oy3`k17QS-% zfKJCcLF}QELf5xaTRY6JhB|VIQM+!VD_7Wqbhpj7?0~mO-&swoI=fj>|2GmM{%@me zhEnJkVc!8yq;qL_Sug$2T@~qnU#izPuyZ!7f{A)++mfT~p%4!q-YnEtOI_7i)ogTr zF`a)#!t#G*F_`QE_5XvJ&TqE)Xm@8XookmO(Tm}$!=Vz2sX*3M7@}-HxraU5)hin84MwHRaepd6x`X|uyMsf+BK_+f={pK=6X-CN+NB3CGFZH z#5~MQXK0@Eq&wX6nP7j$MrRf-BUAq%FNnP3tYC)34K1Ow$AmMVK%YO`vH&Y$@Tc;P z^V(cC?Z`QLjGs#LMYIjV%K7Hv2ab|?pRiGQPWmx8&9>$=G$&+sbR8F{N@|NP3NE$T z+WMQrXS-WEh3K!rdhV;yJUs`P`O<#2J3*S?Ob`Pm%!Yp17rksu%Q0QM5{`zV%R`XH z;TOE&E9GO(;kiBvcdnM~1f@b};r4dvREZ%vE_Uj+U`QY4gN!<*cPIT(2P%!O_kht) zg*v4p*yKd3*XUP5K3$)r_x`BsYxT=E-=%6W&ldfhE?w&MF!-k~hN8OglYT(AeF@1R zMRYH?4#EY!@kW>WqFAh=XY^?Jl3v}W_u9a=?6Tga`?37v(K^F_?Jy+GW9VN**FV>* zd)lkJbp0THyP`wBV(3&<3fC^`!~1nFBpjWkF6eyvl5h+r{!Fi3XGa%%g4&Vcwn$&6 zv>{}p`|Y2N_7A-XvvUDCf3`a}KfLTDLX0&_$!YFHaCvLAE^zblYlSS2FS-W7Uhr}Q=M zu3Zcd4_;dDZCfwBq*py@Y%NIdVWb}x%oN2=20lmZ>rQn_(cWy2EodiwH5T=1Pj*i= zm`ON`nLnh1qbu8@dUM3!`pZ?3=+X%E9ct;U^sTvf31O@{HKEU7UkSl(*!#3x{Fdq8 z3VlCzK#;{$(&qwdL?r@^XtVT17kzHC_4P(VSdD}ey2lk+F9pLkug~1G5WCb1`cbe^ zcQ_2nkNge;SV=L_qe4UU7s1t~gZuiz!RQiigu>5A4d~519$E#h-`AHW1**=M4BVS{Zg5U9O~PH8v4Fn9~ql>SjG?PN&e<%lbQ|o|CqN zcu-X60~>S;T_H~!1W;%godty~qtG(kRj=-HgK{CpF5s$$m?P-=3+2>v3{9#UNcUZSYdVLMr8RqNnqZ+K*Uw~602f~qwh@zv#bdrTXVMhjF({?mW(^BbT zAC;r*b>CS!c8+G;9`2e?J?Eg5gE-wqCmQj5oY2ZQu0jgWdLH z_x7`p2s#+nnrP4~o?WWkECw$9B^o3IC*Pm&G&JV61wZL<*+SaDeGsdgF>lqC* zBwRQk6oKCBamd^?z!Rq3)gB6Zsc%tmGuEFYKMGyd-tc+>86SxoqH4FY;b09 z^c5Os>(YibRINV9ri^$WT*+M@3$Tuxjy)^|uMBMnN?rH)wD}uSM|%z)Vds7)HR#Qh z7_xq~-tkgONF!Nt&um-OiuAJe=4fNjP3_G_Zhu669tdfT9Y9mDiSwO$Ch${xMC zU)P{`*&z%Ge}g?(3wA+S^r5>~rJxS8gI*0vr>^!h#-c~j&F6mmYmBQM<`)h7Lw#9@ zPU-7(X4iWSI;JT5bb4xA|GL#Xd$2iqqnegqI4YPP)DK5GJzeb|RHf0<3s|d9vQNR$ z+T~8^f=>OLZC_6}*~@K@{7$%V*|UARgbh_g^`n9hT+B~NeJ9V+nR9!EGxt>n`>c{( zFQ+eiL-bJR0pVZ>+j>W6m0(`Exr_AXpzeu8zZ3S|TNzxkIDBzGue4!_$3~}TVOk%g#QuGn z5D9hLdj2YPZN_Tz9X0?Sum?1L$_9CE?5qU$UH-fD(^u?5r|?p!sz)zx2rY(DX+uA# z5+ZV6_Z5vD`xa{jxVwEZ^>;!eJO?Ea;z^gnSH7zbhqNoK3$hA(Ekh^6nD;$z3s;|m zz6;YH_1s(KGvwMb!U_mc+_P8c@!ERsmD)lVS~jDT&Cu6cqQ7dwm2ZUeFmmm{ml|yS(m`zPVxZ;*qn);c zx^|KM^q%cWy|O{K^@r%!A6c}QzL5^vFf`tmAbzw&()UWE`_pV|Qhh$|TiHy<-W7Zo zkA=?;^4RruFL;-kyB@ZMVZIDr{0bUX=p6GyImI5>)&rA=x!MO!%`hOPLx(h!aHzh} zZ1uxhCWoNjx3}d?g13IjB1||lV+cNyBBb>_A-VM3LPH-a{{#io1-NFy$8ja38+%?d zKL}DdEUf9e7pqTCH`~zHEo=-)&)Twg?HF$Vk~Kt6GewIYZ#m75g(D}0Mo&ZEqmtfi zK61?wL5OrOiom>N7c>ko#Soc{e|8Gu+trtk+JZz_f$_oz{Dc=)Ecm00E3SSfYBP>s z{psql|9Hb`cm<6&AB`kfmjBP!Z)g1Hg};6KuX9Y;LmMxj@m6oV{U0Y7hyLS*Gkvfq zYcan6Jo3N)H8Ju9(Pra8zuohH|Mj=eza2NuKv2(bhj7*ZI6E9emB01kKYMcZukW|B z|3BY@SC9V3{r>w5-~ap=#8-3{E)aYGSK?0?|NiqSIEdHPo1h$@(bNBWEjMN%8(q74 z1Rs7IC^S3B{(FM(`G36T8jlG6*CFQnuaCIB@g@Af9r^Fy{$D@znp9%m1&= zJqCvRpJViYb=m*lNhKeVeMc;A4d+%^jCC^E`82u`6bHz$V;Gs1Gslc+IN+L=3>SID zCb|v>{}r=r1{tTB?;Jq%%kq7MZKljjhb+;3B=5Tir<@X^GicQeN_+t~U+x>Z3MD0D z#yIKUAh=JB;R5oA>7IAk1)LkPM)TRKd}eyxbYTWfxC3c9M41J7QAW36Vol_`@F6{l z6L(7TjKBpPw&E@oqsjD3%(6W8%Pu2q;2zSd?nfgYxRJ&mcMfyP4hHjUMNT$OM}sWe zMbhN`A2LdNWj=2I%ko!D;_@6fwap)EJcYje_cGyy-RPrbHzRH2Rufaih+`auCoy|W ztY*)U8|7GoEQ9u+Z*wYx(VPuJ!G?dE8CqtaVQ}N0Q_Q;<<^LOgvJc=&gy$!A*Km3k zKmW^y)fiY$MY6=^5^W~!+mD2_7C%tQ4}#i+oEU(&5NkRL(5g*YSM z8l*)0^;+lRuNlY9CMQ7?aX=p*SB497taspe&@>aRph2?P zbYhS^+Jr+zrsQI)-CA$@)P;T;eevK7w0qJW2uCyHxo9iKWIGMOZ^pBna@aJ}ho;%^ zVUraf23gB-PnYSNV%bG+S?@4~i>wV)di6;@8Z>DQ`EYGI#v@N2O`EKzOq&XEAQdO% z;^qO_ZW@;^*V9|YJ19}!PA3Z1m}dI%=oH*4H zdqoI+m`gLQ7_?$*QSlDP!SP}EtNSQCXAzBC=Q52OY+ba@=>AKHD%tngTztxQ^kD)v z8Kaer&ZC}5HoY~;MWtxxCY+arAsZl{GL0*e_tA;**`_eYobDUnXPTLB^-VHUp$yu5 ztQ=$9fH^f|JZ_**t>q@9^3~Izb*IqwpecE9K|Lw5kKUTsHp#UOtr>sNG$;k9j>GIG zPig~j-XcmKUv7G<$eR7w8Y;7HFQ_*S%Ex4WQzmDdKJ{aQ$7Q2&FFLY|4`N%{3Ob5F%m*K9LmroX#JNGi`=4E~aN)wj;F(X({PN2$1LV0QP80+mZhCml znl(AWMRN~*|NZyLXu*x^=3?ZFf`!5BOKzAtb!txVJNg#CWm|*mc3>wH7YN>aS2|u9!S{AuiwnI$S$rSIGlIMK+8qwZXLCn{GlKVo zf5y{GgEh0X5hF%q$uEuAR21y~bv0Vy4n7_NsEVTmtU1uygV}S9c&sG&>K|~-krYhN z!Oh-F0*&Pt*i-X@Ti)`er~iKZ4tiw#j?83V&=I!?{Y%Ojo%vQ-Ft-q&7p51Kf9{*p zW(w!l-CzQo$PK}P!QM;P;K3QeOg$5g&9s_FqHMrg89j>z4A)#AXH6sMjwuG zKJ-Y;|A}Ko*Mo%IXmY#z4=F9rVBEgNyh}7|FOU(6WqE!`q20RR_jzcB_hP>op|QK3dmM6 z`n|{=kD;DeR!C<7)nLjXmbph&d2V?2cx6n*hL>m;eEDPO!jp0L=2~GG=WJ~Ck7K=JoDkYA;M40dYy_4K-0>X& zS6;H?kzEL@rz$l5edB5UacIwXacFEN4(&|9ZJ#!w!R5HuhYlEDb}MN01qBUwNk)54 z`0(iq4{WrPasGZ2?tcSX__m6(ju->#!#6x4l@2wa%dd%e#t8v?zMmxAdM+OJqQGXr zxX+d|Iue8L+sCkb=%HA46MdQkc<9}BH1uy?v~i`1cK;qA=XA)5$Gl#LDDXcz@as=G zMl1hp!joR}GZ@vQSVE0g)esKE;|M`>`4-4U z%H~vv5`wUQ$5ADYFsk67dMb60FODh{Dwk+*0+n+rPb6S-Robb-Nm(lLaH%kfsuaq{ z0%oCXBwx8HTcTTHsXm3E7o^6K4_SP;X9AS~N|;kFidZV}bwe=G;4}h4Nuff8UgMm6 zMuTxfA0gF0({HpbTO|*tqI9arpzKu2$C8;rJ_n^DnhXyLAbo&*97dafRpe4-9{KVqtAMf#DVJ!3g~|t#uZRXaXhsa>7n4t*$zIAG zK!q_h0nJD;T9scyxiN;3G2ccg6ID2fvPFJC5?2T2q=~0kP4eX6_uc*21@C9C_6}5c-P3M5HzJ+fqW%Y zkCX}InMm$>N-d%5 zCQ-v=V|aa2C?8CgKo%Hku0>q{gH90d0=gpq9Z=ax{2IzR4$NuGpSXS=_QX$o)P4` zg^F&as$9y#P(xL#qs%HQEP~ELi3!HwFW@3hT(7OCw@vavgbYBiHS8rt0F~C>kW)S^~qg)6*59QVw2f_Xz zlF18b#{E<>hsJ@tAD}Ft3Lrv1j&2gE+)UZ9I;4;at$8Y`C6ro=U7;~J9teaA8VuZ% z0c5ujA4{3TNNFauf#On-3qdMObRu~gDG@6GY+2w((7+PPUP``YQczFh8LC8Qz0%gHYrEyeJLfKQP)JBDQSBKh3Y5@&y zF$4>&(&@`dg}MuF5{>c9T0x~tD6@#tucgXjsu@9u3lQteZ}%SVAMMuUt1Pc!I0+d@?y_!Y?0Lhx8-VPHXfm|`>@6Bj1;Emz42 zOKtuCBJEwk+p4a#;k9iYTgTQpmSjoR&9Y=mimb@8A}fk4%ZiRH*|IH5M!qC*(%^)| zO)`Xr5JDP4NCF{+kOW#nA*3lu$#7{YZD}bGn3B@amfkPZcKUTXz?A9G>2%so+hMNX z|1M95mP_aVpXbj*$gwOPowN5^?|Rp}*4~G_H&G{cZw8XX7;YhRguEl?4WMrhbdb3+sjQm~tnKtEv7K90Z1GL{EX93weH@!Q!AlW|I~WgIgHses8^ z$JT`(!`;Xt8DWBOWW;V5?IP-8LSb)_7^CIFR-W7huEfkEpkIxonT*HCa-8fzawGa6 zjyR|j!6inY(pA~RMwVUb3h znWS?OwIUU=Ea3=fMkK0GPDh>V$b%S>AWM+K1+rreu92d43eGS+2m;OUUGTU8@`C)s zT;VK>e&Gfh!|cH^3RFr_9zcziWmcLkFyI3Kw=E<0atOw*zug z064>L0b(F{EqII^n{;xXJaA9oPDr^`Quv`rF z5G4RmFnEdVdFt$DbA|sVKo8bZ^eE+ni#%}MB2De0vAyKQQouU4E2o7491(dPya3;Y zYfDqshV9`fw1U#Bs1qX)XDf}HnX|#aI-$?l$*ZIEdUAq@!l&Y-M##C6%qJ<_K*1wS z%fodP!i~qN0)h&54OYL6qPH;cg71ar$$fyLIPF#nA7xYluK+2E&(IjqJ4lfP1@EF@ z8^!PD7>X%IAOIao7bvln@&_1^;xOHvGI%NLpI zqiB|5i>4C32iyNsXf=iQlK)<^Z71~zb8@fk8jT;bAJl{7zHny-bWf;}p7vV(_ePO1LR4Q}n&; z8qOn>`Vi$-QwC_6TKv*2lmq~R+TBS}94BbgR%Ss6aOQEcNfZZ3Th62lP#HsH0r5CP zogXI89*%TLq#pND_ppIAsv`@x*lx?Ojjn_L99sp|fN; zN9NPy0cRLu8vyFgJNN+J3T_a)nYPgLYtY) zJIIWf_)#);kb9i%Dhj)WA&rw8>#pE{$X@TK&KuZSl9=M_X$uBqj?%CPVG)A!>v6 z16_@b9vBD1r^$FDbsnJ|t<(fMca99J$c)EmeumUfkpBsCKEm@AYNz2b@}K9Z3W^K% z6~yB$V3|aoR&vAsk=G!*Il^vb+rmzVTsyIy@>`hSA|vj^$TU$dL6OxE7}!H$8_7jh+o=<L|HU~&~dN8!&drXP1te~R|xWurqp>dR7w9N?JQ9Cy_7U_ zu5E<>o+bBFJTErTFzg^|rq~R_VDxF~Ji&M8xquA?m@;`!u#fonupLexC(m_kmXYn8 z)hdG<4dwLC^1jVX#5p=u?wh!}(p zK#v%?VOj{9UF3yqvSl%= zs$;qsTuBB*A8?`56g*DbM#;Q~jN2JK!Z03O%xQ`qA|*f0q1%bR~vpl+#{>Y{YcXiPUOJK2BjXUqb|}at9N_FyitcW&eWQ zVT!C`1qNc2{T7PfM*cVx`_utW&oQAuiR5YaCh$YN2u26z>Vyz+h&-R;kHau#;Z4|M z3u^%|aUC?Qqb&Gjin#fQjjx5 zlY2Ya;ng0>Iw?0w@u$cWCI2*e>sXJw5-y5l zpiJf`DUSpgDPoo)V3}qbjxgg-Rw;Ij!&qvb!uu!z!<}XIF#aHaC88HX8pvPNO@1Bu zab^!CzQFl#dY%jy$Z|6!dN|zLAmZFd`VMLeQWH8WfH;0q$M_Y)qB>(-jA}+ClVLJ$ zB_qt@C>fDU&o2^X7kMBPARB>ABjGVn8kr$f5gZIq5sa)L!cco>qK zX_zW3XcH?0_%2+{>khhhQXCu8nLhCn?_g+pGJ#ft^=U9LiBs$@PEJwwzr|1>re`Ham zfZUki9NG!Sjg3gB8CDS}!ua4;GOr=y9F;4JnIFKZpDL#*cYtlB3==-h@R=(yzl(q= zfR42@EAd`OSwvc>9mq?*NZ}jEJx87z=aG5Qz6OR&o>y_O6y8g0+bplrK1$$*q14OExD)2 zTc*+-v=4*%;ZV=l6io!h(u`0hB${Fa@JehB1#n-=r+*6n+k2S8AY=BNCJS=$>sU&(J;^?ex8Z5L$eZDW(Q(Qi=cFOG zmL+P)THy^8Tua-=DKbyl^E5WaN)o^oG|Jh)kcL2wg_zJ>q58wV5xOnM*ibqb09@{+1%xSl%1JetRx3r2*g>#FzSU3e21+(k-a)I~`}59 z$p-Blzk(8jWEc1i4P%N?+4Du}#OA^EtW#!@#G{lC|3Au+$G&w@5rN_orBD-xvJfa| ziK4q18o+QNXU^Iw1@#mNjT?WFEe8N+d=J?mNI-`(vLFGGDGn(GC>$ddql9c2&(E-O znux5+`y2&tW#Rz26dwVV2%%`Oz`};vO4)YuKp9%gHek7zC()bdC}&2O%4!Y>2#hv} zqutE2B3mi^EIG&6egIA25uRB}-@suLLK@gm=qpr!!y?g{q4a%RGx0+CK-veYxRY{t z!v`pQhy?}+Y3rabf@p&;ATQZWW9wP!MwSpkpvK_CsiERPyg|wW?f|9mZVKJRsq?f- zb8rn8g;&#@jw<^oisBWh4Q>$BpoQ}o5485LQs*WzUd_r){9YD@-G4^Ih`^YjFS42f z(wD{NhglY55a-8qOcP+4kg^cfI^Ap)@E7DR{ANJ$R?b}};b_Qcq0J*UIB9Hw!U)vC zMU7`G>x(LGL}5h}kAFp(B4}Z&Mp%xym@+soC+~7fK{K$^@Vy+0!*{a`3|<4Y%s3f{ zBF~ch-TVgF*ffeQ_3Rxfj2l+SFC{;25H9m2ir&vq02L7FHDncJqRyjK0M%MWS6#Ch zR-t?VTObVMdjb3FDW2lQ1t|;ik1U2A;W>-a@lx7@iHAlsL>ktYzW&RXpFh&lk$wBY z`^_2s2k8k?Y9loJk437WpAn~S?zWrae&naa1w|<5se~;D4b=62bzn}?L1EF4$v9YsG%$Z%#lhKfIoSP zEYMYUTECA8W1)!|1yUUFUxXe|F&GKZcr}Do@ZT&=;&lj4Me+j{KslkQ=xEa@w(+Kvae#0GVx3=6Bvow$HJEiiiLp z3Pou00Ee3xYGQx_AQCt-kRNhafik!?)LV>Ph0cS9RXN*3($7-m2C^aGc2FM5!EOfj ztM<_D2#q~V3mvox8CxGqjDUL3=gzehLQQ513)qDs+4`9X;+*z*@*}BjT`Z99;*bq# z1Q`{;!F!R*6qa88y2ua%BVM0I4dEy!VGy?SAW=wD?xSRoLjzP?PT$h`=hLZq3Z5_gr_eaqQoSv*0CT5 zvXQV-0;L_X)rFxz~0Z1ZHW9}i4gn%m;kz? zjCI4PssY>2PzJQtMNW-!>~Nu}}z<^#Hd#Bp{RbQe+=9 z0Te&Yn4qm(djZ^rujA@g4AccBRwTq-6z-vH2jw24Jk;WE(QuZA_frKwR;e~gm05~C zMTt`sGf@Fd81@V`5h)736dYqeM^6tDqy)`^Z+x4=3+Q^~&<`5Z3BJ9S1;xGHNZn8} z+s#Z4X)+|)$T6D%2s{O8%4rH8 zr!6oXq(Y}SM+2;ZU*iHZ?UdO}PO!gylttSCzHcwXLmY`c`WQe1@1)QJl(?C}AbpJM zbCDBVM9G;L(58=(dzfMX!^O|qK`qZvBXaf9Od1J+w(n43pAo5An` zNTSCn34sG3{}giy=mp54AWXoAFqiQ~A4>cc#ePWP{n#dzzXF92|NkNHkH`Z?29+mB z7F;&0elOnzR6Hj{J?MtxY#<0vvFo_@0BZpGLRi3zfRuR-QF1-`*HXHHU3?Cj%U_e_ z$Fv98K%P=X%3{_&N>GGTfYM!@ai)`61T07x^Hc+Qhir-(InpdJ?tb#4CkeXbEUSB+!?a+eF;p)i6mF;dR$2fWfvZA| zQfb=}+O&xZezL8hrT~*i2+GLYaBC4%Q$9fjNV=;iwug4s(Zb&>vM}h^-ONv8XlAma zA305#)y&p*TWQA?EVP3h`fuYp4D@4!VFaca8khPO%gD&tfh2o4ZAomQ1muZDZ5TNq zz8f$Ftiw#BZ2@z+Zh*GT(=HS<>uC;=6cGv?7U1MFvyI8%1UHqDU*Zn0LAuG_5^<%2s{_3=@rbt6Pu`M1vW*BuKUD>=WkJ5$t!>Grw{&j zR`rgA>wjffo8C(D-k^Q&!~oy;<(m%#BKIbwCkZ_WTM1IN~JlpqV}H#ZHd#y0dkv3MN(L0Y{r|DC>!j+ z8UU_OgL(tO&}QeJW?dfH!|J^pb5MK@_H!6Si3oJu`xJjQB;eH56g@@>V1jN@7)3yC z=QH39_!Py@MVEYP;aDN1~wQSE@( zPT5IHoTITrlt(=qnfi8$UqRu|PzkLqz@jIaBq!d(#RibmTxBtZEs*9+Y`Mex-#owc z`-A^Azi_;xm;K(<-mtmSNL%xt0<^IQXg`(F}xsPd;KS_x@sBjyF zHgk9b|IavBc*)jtf!+Tk3-fkp$q2FNK)Ic5W{s~k5G?mU#zLRZjJpwzVOoVYHw@{|e(R7g~Fw{ZY@=V~+-x2~v zzM0~SvRZzgqM#u#=OjxcWtcpcV>EG(U+NJ`*qrw5{{OqgoQS4r`i#k z{RvGrGC@OmEQ8*rRaANpWj;gs!<5Cafi*W!3eB&mzK>E24G_&tV8)hFvWNDgehk-J z{76Efxp!0E&n3prBzOIm5bREHe}gl^B2%=VsY}+%9SOLAG}4zUB`?rUQ0bK%e2q6# zCu%uxHMC=1OOb=DZbC(m;M*Uh!UE@Qg$opWmG&KD=gXX-+zuK>F7kI&{wX~qaEZ;7 zf1EoA#^S90rLn;*w2K{7+sHiyxhJTCPgx%3ogLiGQ9I5b4a9^wbW^$(~3)K}nTY>>VVf+Vf5UMoMl}PX&;i_2;Iq)*t2{{I#!-W%~Gw)tX z?xp+@D%CN`Od`(jq1ewUaU-S9u?mGuD1MO%Ga?jdA*^UMS|R_DGEb3;dJ1wx)J;ya zS{b^Jb+TxJt6A<5&hjB=B3VbC9sdOd@l+c-6>^OExgwR20Bj>?4-G#`C8+7()v)#h zgCY=g;bulk_Oq}J71q6hv$1f1 z%^RH};X4SOsR=*r&0)~K50GBuHy8x8P{s~Wa6io<hg*YbUPEJ#(hij5j!@1{ z$ww)QVMe*>1Yay7LvoVh7`8FW+((g%6n~WR`?+g(_XS*H7wcm8hznGClqRoX90Su! zoMzI$8m_gJqUg1MgwyBFhq=cVW{<{=eLXa`nPLdl50m-byylK-ducV-%aFNlq1D$@ za*zsWWXD*AsR9>nWMMM*C{->{1}Fscg;F$1$^96sr8K!f`4Jk1g!CkBK_8Zf_8lPY z!tQ^pqnF++)Y04iyj7NiQ1^pRUh&1_?E|}i{?-G~qql{sU%hhaXj||4XZF11;B8;@ zM=!kn%)7sEYwMEA>D1M){NbRx_CV>*&f;yBKR(dEO-KBr^ZxhYOMm&%RgbNIcJFV0 z_CE)YyrW*H&HRx{`G#EimfN}ZXWxBz>cPr~(%1g%r9W`UMOL}vrRNUTH>&Q`?+;GD zlgf$VeCfrLOILk--BUYXee=OPjpnj{{`+rzWaNZraPM#aaA10??8&6}EyUu5H(kmb z*Yu`?KMd_#2fOa=BI@Lwoe=PhzasmuDe})0`VGZ?OOf9(WrNt zElhk-i$++=paZmnvS<&)k204pk=_?x=M&Wyg}B_mQtXqQ&>}exk5dZmU~5_Yxl150 zw$mi)VF<7*sSu_#(*3=Z1o?nif0QG;6U`puEVvGX7@)7dObLy@yKs_AXrKzH9+gn9 zzJ}swD0Px5$h)R!<2c246Uxrs5Hn@u{kD~)RnNTi>o?@^4gZryT=D1cXmf8@jro;V z-bSz9PPl&m%E3RK1HF?#{>RESwDY(5%Aa^4cTLcY^5AhuGgh)#vwkn7kJ8v4 zS|8#Vp58#owG_F)@hPTIeiID?OYh+7VX#awsB_0D{xq8bWF0?Vv2n{}^df~2qPBA_ z75ZTX<>}pIY$3Cbg$9W4c?6klbS3JWklN50gu+>9(V#bzX7-m*UdSJ{^~`;G%eT%I z-|^sWg^4$h`E(Aqi9eJ}{{EY1hmNT2 z>0SSS58i@Lb9-6tjDSI)MiJxfl^|B4YZ`J9)~rR=)9O2^u!k917z;Wy+H{IzBp6B> z@)9a)ySYpiYT=fL3~Ce|*rm9DpthEOf~E>8ltT~WU9=yavnpkWDR(F3Q2Z#<*!7ft zmC|6CpuA1A4ZPMsWd~(& zDxg;<%I#t3pG<(-oaE+tRvaa+{b!J2qVQJcUQhr+^aP8SaR_fmXrDsyTPOzddX8pK z)2_9QYGZbqbI`VbqY~spG=-|PWfRSzIrc%y{X2DD$C76OOGBlm!Td%Vps_F-kwqWDO(+qk(1|2p*uE5DZe=X>1i`p?w}>ItGx0j0zHkPBsAd zIy(jT&>UoIXk^GCHd6&+^pliD7aa2cQ6AoOmG*s<747_ga?3Zbib7K5q}5nsb%9E! zc_b%0Y4Rh#r?(h?=!l(25|2~tX(of2{frJ_q%XvUG2GhvhIZH7Il&D2=)w7%RGYE|4clIcPTM zEga!rm5r#W6gi$)jHRYr=|E#?#tGqs1tl|m;NR;oPB9b&=7InIL0U$f{}kg85{ z?|$%l&g~H;uwWIfXlf@#pz%QygHVj&La_y11`D(vYWW`W2Duv^IuR@wA4k)w8}-I7 z^WxRL{gjVT`9^MU0r!TjK#qeWAv;E+PyyjAM&T-7Qus8(MCUvU7WiJ6G9ah4j!S=O zq@ZTXY-e9WDGbJug>n2d<7O1<#x*>Q3r}$%%A*QAOQplyhX=JB2_0@QehnpN_?0}= zzkbHKoSw41R9a7yFEEP15aU85Z=rQ6PlpXcBFq}8B8CzEiQOpX$-Rq$=N5Z6?xxAx zIXZJGZx?qDtJhJ}-K0g=g^X{j<-fs_&6_XXW?ee_vDKg4_@;xWcfI!Q^Wz_kzU%+x z;MF&$C2wye*!TL|xyM_wfgAtpKmPTffBKCNuY8AtcUFVnkj3hx+um8&`qdju?o9_M z>;I43_df@y-eP$!dcghTwCMotGE(d~m)qdbD4EQn4-M+-X;!Tw8)$Em%Wx2)RwD=A z!}TXbD69{L--5NGl@(errV7RM&OAl;6Y7Ro(SjT=xR=+KMbIL-i|nveoNa{BD33}B z8vm!bxPYjOkAov6V6x~TI6;LGDjcTCp2cK%Eq9(KuBOP{T%ksXRpQfx?fqhl>JQ>} z@F`yZ4JTv}dK}FjtC%nYjt+=($VhKNlx(Ga&(k!TqPDTgC%Y&GQiX>9wKTkn%BY5& z<`M;D;N(-3i&CzE4J|s!MjE+})+4Q+WvttIl0gVf11YTHxtej0i|cUKFb#u#L$tY{ z#^$+mIE*pEP9-a7+q0BIdJv6JSfYzKQ%J?|v zPTH6+<~CC*MjMl~{^MMELvRFvK{+vr5P6VN6XbuKQcyuKGCLk!zNB?tDx8rl&KDv;eE9$@uRe4cgyw~z7KkG&{jLjW{V zuA2&|VckaA9*QH9K{i2b17AVJJw=689DN}z-GjXqpiV;FL4-lIvkf9*V2NAD#s}IUMip-iH4N|)zF54 zx&n9#igsJL%?U-|5=zNX&VVd?xB(T|hjl`k^DM=~wC2DUpx=Ng^s`!28Q~>Fx>@4A zc)G1mc9yNr)bU56I@;SJ-X)83&n-c^(~CU92# zc47z*94TuRk>53jQx&}V1Y7G`Q|ikk5G zi#VlsqFSvKC0_z3tQA*by4F;*5l#GgXs9?eTE^W@l|}=PMtE{--tn3?GgTDc(71*N z#dt?BRmH%Fbih&@#UyF+33tUip_Oq)lWG_#R;Ig+A&fUgnD~RXBjC!;1HZ3|sTDiCy z7dTWdR;Bppe&hIPzF6LDj^XDD%ywbF?_|^R8?wCjTNV051MzVq)p;2zD^#jHL#Kj97k-4O~76? z%xrOX6oz2Jqjo-EnTFep6gOXA^cc%Ut+qznKtr2f^uu4g)!Ni(WmMc6DHLaM%icBG zba6`ip6{@+h;vqbR~ts~0r4doDc&F0LIv$r%V@beJv}OZs4r_X8y-sb@$mvD}^a-jrU-Nro?@j3HXLqEPIDWagpV6)n^Hf z<9aLJHC32{Z-sa{Hom4@gtr#73eVhQ27I7!?PYG5WMz%FTGnn5(Su)e!wZIsW7EaW znA({s+|E=nU)z4u!7jIV29oAOpCs^!DS zXhgUVR&>*IV!?uE6it_kn_G1glRiuLE%veE@NjLkDE&B5(Q2@ZlDDGG;i&u9%m2n$ zotd7g74HibfhlXet47OH)y+SW&KNPPwb6-}jdL0x;NTKHZc&^H0hDlulbDsE&6gLq zP}Q{3J_LUSMjbwcVd-^G6>$fvMk}V3x~bCHqygud99=0N*nXLYF8@(&!aFAp`tC>! zX`|Elptrgtk83MFkQ##F<-JowrAl!WcH$e#O%%(R4mhJWGg2znrq}rVx}mD*w~uIR z%9t84ryVvCwa z8MIop5_sJ>m9JLE1(tlBz2A%Lm>4SITZB2V(TfiPgn@G6^V;c92_6r$n+1-DR(oZ1 zsERWm{+F>A!9yf9{X(1=z!9K1DYF9GPv)79eZviag) zZoS?=2K(?%O^i;Ld?GT1ud2YYCe{>d(%RSvoX5A(Mby|Xa2!|zE`I<1KtjkTG=8t<<@ zBTVA!-MjTO#W~F#g27;_hYRMD%g(aO?QfkUahHeRf8EGyz+R`8{VHJ|j2 z;#vzXqFh`fDqHI<<(Y|z(J9SJrI&vmsljV&GZXnzwLB+AQl(-AuZ;1tu4bzv(|9i3 zTonePtCly<(U2C@mx|M`*2}B>6YLi_f4Sg$B?2fz*qp)~j~2RRKm5h3<@0dRgPwzz z8vy#X^9K1nVw)HM?u|})@y5!*XADqb>EumzjQa>i@zSOkAYvB3E*D2eiqld`H>DjM zbZdaR+R&&bPDZAy2ylR8{G*9drd%xc)T(PR+ghyz(AK7C?9SEh;`CHcsX9Ko>eC2)maiHYY~yq4MZ>6{bFlVZL~c z9{7I#LEX^I;UOBA_E~_(HLd6yF-*aM)OX27VDMD+(gPs`w23tUdR(UXUWsFz27@S1 z7c2SN4BI32@%q_4&DO6ztczIx=y_wG`KmOH5)a+%5U;GnBY=cfM}PA!dL1j5&NyQegR0eN^CC z>LQ7MqxF6fsSgQHeGL0Q>UK!chASKO4Nm>-qT&6b(V#asn)OPpw zs9`_$ungUX%_y-rO5Pz0F(6611<5_<1X(Aj5x;laahj$^O-AFWzNx7RLK{AC?mq06 zi%X;1?nPcf-p)p?xw+Y3Fo*^`$WszR(hC*OzHSoO1yXoSLbT(Fw9U$22$E7FElYUU z2GMd=35z8*3KA7Xh_fakwMxoWtFZf}UQ-k~YI>in;*E712WjI8Jnl}ctD&OS@`xZu z^%uBwQ9Dk*tSO3LSuj3XuV2?Vr!O_ear0{4nAYc8o)r3^DXXUSF*T--tDg|2(?UOM zs_E|*Y8Y>=>BmfSjS+p`w6}4iDXrJHXi5v7=&WR4!ls8UE#i7=5qM~$;7uv5%WSe$ z5>h~*g;y5TikHo1Gj6awjU^K}v{;2ubY^p93AGEV#{fy9{jyN7Wxif-R_ir$z5MC@ zhX|MdsgIGNv9S@)z1KBb4=NG{%w(4gJa9Uz)!Hl!iZCs=V^2F=j7c;~l0%qUC7aK5xMk=7mGwY0{Qw9m2QJy;c6Ua4Job zL22mz3tW;(-`3V92Na>hKlKhg-C7v%K+4;3+nA+K?W;41`B?okqH*4ytKVjK*Du&7 z>pvy1hpEwM7Xn*U3#CD4x63kip6rB`81VGU1ctCx;_+ycWY}YiT$603<1mpkYov`D z#`O?Z!nLe#(W_eX#V7D!-X2q<)vRw;)%P#e-#LFs(EBUcIF1g@(ys-5bC>xM(Xd1J zjIfXCX6@eA$c0;P;yV@|NhI`Uz0GC8Z;X1) z;SeGG`orW>3@|aAQ#dg#gLo^RhE2la5baKKqrJ@9a#qqSE*D!0eyhRzaL|6MWF*DW zBSn?4(kNFQSotq|g(v%DUAuVS6Qbes!f{HNcDuhWOeJ?*|4ZR`MCem)gHv^DPN&-` zX^FJ>ErphpJ?*?jxPDS+e@3`c`WJ=c38BxrZWf;BL`U2+?7dyI z;|3n8YyY@t`@Ha^d=H7vi07Pe?(!TLjoWe@wLfK)8M=+PC?BAzVKe?du$~u58;jSGsLDu+dfOhy^npUl)!aiNJGW$)2`P z3D@qxo~|#5K)LHjV#%0uZpmH3IqfQROuEv}yel63k#Ia9g7MIm&TWqUp>#0f33Ou|^G5n{VUWbKN4h`c zcDY=AefTSOaonfy=ola_9PZV=#N&a$Vij?O%|2W#9?>piA52|epZqRdg}h(-v~pa! zNtidE=sv3t1R~nIFvTsB0xLqkVmt z5=7!g47xHdKVnu|_dl zVv$Iot4q}D0@%P=I$-Y$_w|LteUbrR)Mru*Fckcjy1Fw;>g)&Hy}cbBy;?`FbQAT0 z=d`-<^|4qi8WaDCN1)?U6i0x1l{j_Cy^`w1&_p8m>)N`4A`S&_kOvGM9eCebD@H~b zVQx_=Co*jM(vUoBbh*N?_g4hAWr16;u_Dsz;Q{>*82kEgHMm)U{XMBqX%hu_0BMer zvVc3=EF^Cv($@zo>5GU4oP7?D{k2G6Go>Wq`>ABZcv=um;5iN2YRqJd?}ql);+@?g zovRC^!Ud!27J6KWqU-7k^ytHpu>2q{AuL+paSk|`O)TTt_H^l8nv}))CSdz!*pTbe zzq~5F)-1f*9r`W|Cx;KCE*29lLZ|Hzzk0d<NqQ#b_%=Prd%)mwJ_+r!d*fSBN9Krp!K+V z#MPojLCYU@9dAoSD^2=DBEc7e(u+x05{b69M8fw`*hIwiY4~|0(ko!(CL0VrCR~6o z-(CZzvJEkLjnrU_wYA~+yt2$H`gtpAx8C2YDHbU!MqphglQ6Z(SBWe1ZJ5rF)fwTs zeI23!xByQ(|GkG_#@MxJ8Ii;UZ<8)pu7L3?vK$wG>$5LU36rk3SF-4P zBawrVV@=d|IHboc`+OD*gt15K{JZp4@y9c| zY?9EjFxap!fm;a2z&nJa)%<0>`LJG+IUkL;Vd(8O_o`;SFeyIifDkY5kuZH|0eJ|GA!jc=E=~ZS8XWqw=f$J1PQ12O z7mdBVQ5TD8@lBXS7dCV^%Z=30{XJlOP->7`KrX3QeV5)guQ&JT zVV`zIRqxfCzo8c&k&eUoaC##=2WEC}@g<~&jR+FqF!s#HE9>vX4#`3}_AR^%aYAW< zzs+DMbGQgRdmBd3^~n~i@J;n>mzrgGzHcMO*vI(bGbtC~=u#U~yY5NJD2n{!gt$^_ z63)Rdzz@4{&XClqi$tVdQcZ>#N(Xraq^|`e@e}zq{!+;#oO)Lvpt_n3;XpVb>ec1= z3L&fiqEfH(GSz&o%A+NY$QIw^*{|Uu4eGfwqvd$@3{mI$IXHvjdD# z&hZv;3&!=h{2@FS{Bc`di|`=JTZ7XSfEiou_OQDbA^)%nS6jE3UNrLThmET89TTi3 z?LqIO`Fn;h|D&%#ZjzdPkBRS_OR{ZLmW;Noa_2{yZ2#J1KGP)dq**WovnWW*;Q%9I z2=EO^i>@X)s|)wYRY|B_imnGxA;+-x+kr&JIspb>SjJ|Mp;n{_cW5)my5jr=nTHL*Rb*n<>k+E}*c7^yLW(ik_{4CgRFeT*6@je&GiUgcF7SaBP-Opd>e3eb_(o4${$l-U{WIkq)bkw#fLy7T?XrXci?Ag zyDtYFmFI@_53Ea($u-O$-L5lt5;VW zq%cOqq%^Z}IBXyTI%xtJ{AH}vkatp4Iw4f~hzO`NE$yIkQbQV4%px~np_Wk}X>w`S zw)Tn$ikS9EMV#%__w@EEDngM14gh-R4=p&v-!7Q@z;9fcAX1T|sHh z*RP9om|M*{*YfNpLgCpZZM41@4|+i=ItNtwuq@hrC}k{Hn+(d&5xt|)9^tUbzny5i z^qSOAT%uhryR@>lTxx?+y7kevw&Wvq8+1Z)*q}tL*jiWo4H(VKCQ0X7G4_i(5!f7& zf&goHv`}qE-2Dq1uroVS;^^pgx@6DhAA{E;PG~(z(FhxJ*hMoZ29B$N*F8N-Bka#D zwYIm(0AlJ9P}*pPXxLCvzi#S$)g%Eezx?xyzxzj$46=9)bl%qNinbeMvuZV9=ei%@ z<6n?qTGW&MIq8#0P5LL`luIaKSgMATI;8cK3=H5>)UUN*MXjyP-F^z6`r1FfDt?N8 zjj(!``g1d;O|Q1J`l1L>(!~bfA>STJFW((lM?Kx|!&r0)5qO^xlKcn<2z;9C7JO+k^zdEUJjp=CvmEGxme&FaOT`TVRY( zZhijXkKrdRhrfjks##Xe6ApF6A-dF~tqx)Pz8U7}(3_WOB7j_?%-?a`0lwJRCtB1G zIz&zVPOBnpceo+qrKKg(pq!NYq{~Gpnjvw!u-GHLy~~y@>lJ9*Ff7Ay_digd^I1FQ zNKv1*JKL<%1!cK*B?iH2YNKV^fV@KLw>C==YmWgR)Wnd`IjrIqkrTH7s|s?1nuG7l ztzzBb1NxXN1_CSD;ZR_5E)(E8?`1oXz%6=XQazL#5DEllNrj3d)bHrkuY*82pEe+) zL?S1J<)DJ3(6+;cRs_Kxj4{nTATN6iA`{j{cOC=>;$$povRJLMS#Ch)l!8q~ zQg|^X5NL%BFPK?Z3oP_pA%yc&$f<Bv@TTO}@xJx!edNCqa;U1JZB;2?t<5-8jSF?S> z;Q0%K`Z4 z66u$P8)MKP>F-Zp1rH2M4~U$6eVdn?n#)f8{v-h|*Di}m;S4+3%e2Lr40{ey$x zkV3M$3f#9y7R3^21f70HOy@mXYeV!3;A=H#u6|x!mC3U@n&fy~zzqb+~+^ zuq(1|Fb6W#BHfEb{bWy__-hdrOT=X&sK=Xq?=^p+2^VeFr=#iqF(9Sn`x)-}K3%k5 z>_7(J5B{kK46`mxf#L?+j74hJ4+a7VUV|*c$Oh4famBAO3sy-E1=K*(U{gTDdp6wT zyNJtBHvEK@YZ`C_+u3m$T~_3~8;u`#+HjVemLFkPx?ZxN)28R(fT-)Bs0pR-gkIL74}mzU$yW zMg&tB0o>9l-XP^ggJGq673&FBM~ z@(T9U9mR=%LYZ5aylavMeV?NN>{F~*AS-vvzO)}j0Gm~B3x?%SNR6^d7YxdZ?9ipt zP#R>b?8AAl2z*EYGNl#(54;E9TEc8I^T^kafudPAkcXV3ZcF~mwVZD@i%90|JP;h zssr_c?gw7&14!UXq$Qxi(naqj=U5CB*=xwTA~mx3lN9hsQD4 zMiI93_kXM|psDMc)S)KvSsKIZxk*U|_8xo@)(&whE2Ojh*gV*$K9<%TUldO+`s)92wDepHXR`SYE^_uZ z=|8|-J|G@4JqPs90$0+D4r-Gv9>{YJgwb1+p7~ z{mtNO1NH%>nFdTAAh1(r)k}e%Bu(S7aM*)Os+yL!x0$w|{TJt-`8{j9gi-ysj&|cE zr0SAOZTA8k2B1(nL?b&?5J9#Ie}+l8v@e~(E!1+_*&S!gXZN1JL7(Z*NcEEK(XApN zHJ|;Ch+6v7Y1pyvc}zi*tn!e+VWdVRM^Vx0Fp8D<1;~NgZ#NH|c{n=tVOC zsa-e%r=$jx)BIt*?IU`K-2$<)Tf!Oz^L<7I&?XL&rhbwW@Qfr|KPrC$`?8&x5yu62 zG}w!{LF`8<(5wj0zkz{b#XF2E1G5v@$3uL3CpbYZoy=+GCtc<*xy&bA>PsF;R=?)D z2+df1-2;WCQSrn545VScka>vfoR_)P0k_a0`v6$q&5qq_63F0S%I$!-tkJmw!kcC?7r_8wH2#KYo)(Z}lK zbJ9n458}F%At{C_tYFqmSBQtKAC;cb4aNXCLVSZuVd6i0HeHA2v-oiRwqXYA4?^ZOHO)D8aiJPLfeftcwr#G3)gnBR|Eu>KaGwL_{E z&L1RjqbOHM0uAjpZzs5xM|^OM#aPc~GX=t4RhJ2<9V!Ull^8s^W30l}^8U|(cl?WW zgKWBcgha`a=CoDJ0K?i~E3HY)nttGiBB$Er(REUn3_JMbF(z-)IY>Ry%YGqV%i&#+ z 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
        -O7{jag6yAXOIoStc)fH$s2dhS4 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]c~QV( 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


        U)Mek_k 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
          7l3U8I@0Jvuk%*sy9h{ezp&>-O5$13LO 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%0AbM&yvWGH2 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 Z3q3vEJuLra>g_#GMGYkYaAG){{0|weL9YM+ diff --git a/packages/data-tables-worker/test/params.test.ts b/packages/data-tables-worker/test/params.test.ts deleted file mode 100644 index 48a929a60..000000000 --- a/packages/data-tables-worker/test/params.test.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { - canonicalQueryString, - parseInList, - parseQueryParams, - QueryError, -} from "../src/params"; - -function parse(qs: string) { - return parseQueryParams(new URLSearchParams(qs)); -} - -describe("parseInList", () => { - it("parses simple lists", () => { - expect(parseInList("a,b,c")).toEqual(["a", "b", "c"]); - }); - - it("trims unquoted items", () => { - expect(parseInList("a , b")).toEqual(["a", "b"]); - }); - - it("supports quoted items containing commas", () => { - expect(parseInList('"Smith, John",UCSB')).toEqual(["Smith, John", "UCSB"]); - }); - - it("supports escaped quotes", () => { - expect(parseInList('"say ""hi""",x')).toEqual(['say "hi"', "x"]); - }); -}); - -describe("parseQueryParams", () => { - it("parses bare values as equality filters", () => { - const q = parse("q.year=2018&q.classcode=PYCHEL"); - expect(q.filters).toEqual([ - { column: "year", op: "eq", value: "2018" }, - { column: "classcode", op: "eq", value: "PYCHEL" }, - ]); - }); - - it("parses comparison operators", () => { - const q = parse("q.count=gte.5&q.depth=lt.10.5"); - expect(q.filters).toEqual([ - { column: "count", op: "gte", value: "5" }, - { column: "depth", op: "lt", value: "10.5" }, - ]); - }); - - it("parses in lists", () => { - const q = parse("q.observer=in.(Chad Burt,Lyal Belquist)"); - expect(q.filters).toEqual([ - { column: "observer", op: "in", values: ["Chad Burt", "Lyal Belquist"] }, - ]); - }); - - it("parses null tests", () => { - const q = parse("q.size=is.null&q.depth=not.null"); - expect(q.filters).toEqual([ - { column: "size", op: "isNull" }, - { column: "depth", op: "notNull" }, - ]); - }); - - it("ANDs repeated filters on the same column", () => { - const q = parse("q.year=gte.2010&q.year=lte.2018"); - expect(q.filters).toHaveLength(2); - }); - - it("parses groupBy, op and column", () => { - const q = parse("groupBy=site,zone&op=mean,count&column=count"); - expect(q.groupBy).toEqual(["site", "zone"]); - expect(q.ops).toEqual(["mean", "count"]); - expect(q.column).toBe("count"); - }); - - it("requires column for non-count aggregations", () => { - expect(() => parse("groupBy=site&op=mean")).toThrow(QueryError); - }); - - it("allows op=count without a column", () => { - const q = parse("groupBy=site&op=count"); - expect(q.column).toBeNull(); - }); - - it("requires op when groupBy is present", () => { - expect(() => parse("groupBy=site")).toThrow(QueryError); - }); - - it("rejects unknown aggregations", () => { - expect(() => parse("op=stddev&column=count")).toThrow(QueryError); - }); - - it("defaults to no limit and accepts explicit limits", () => { - expect(parse("groupBy=site&op=count").limit).toBeNull(); - expect(parse("limit=500").limit).toBe(500); - expect(parse("limit=100000").limit).toBe(100000); - }); - - it("rejects invalid formats, limits and offsets", () => { - expect(() => parse("f=xml")).toThrow(QueryError); - expect(() => parse("limit=0")).toThrow(QueryError); - expect(() => parse("limit=abc")).toThrow(QueryError); - expect(() => parse("offset=-1")).toThrow(QueryError); - }); - - it("parses orderBy with direction", () => { - expect(parse("orderBy=mean:desc").orderBy).toEqual({ - key: "mean", - direction: "desc", - }); - expect(parse("orderBy=site").orderBy).toEqual({ - key: "site", - direction: "asc", - }); - expect(() => parse("orderBy=site:sideways")).toThrow(QueryError); - }); -}); - -describe("canonicalQueryString", () => { - it("orders parameters deterministically and drops f", () => { - const a = canonicalQueryString( - new URLSearchParams("f=json&q.b=2&q.a=1&groupBy=site&op=mean&column=c") - ); - const b = canonicalQueryString( - new URLSearchParams("op=mean&q.a=1&column=c&groupBy=site&q.b=2&f=html") - ); - expect(a).toBe(b); - expect(a).not.toContain("f="); - }); -}); diff --git a/packages/data-tables-worker/tsconfig.json b/packages/data-tables-worker/tsconfig.json deleted file mode 100644 index abfe95317..000000000 --- a/packages/data-tables-worker/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "Bundler", - "strict": true, - "noEmit": true, - "skipLibCheck": true, - "lib": ["ESNext"], - "types": ["./worker-configuration.d.ts"] - }, - "include": ["src/**/*.ts", "test/**/*.ts"] -} diff --git a/packages/data-tables-worker/vitest.config.mts b/packages/data-tables-worker/vitest.config.mts deleted file mode 100644 index c9184a6cb..000000000 --- a/packages/data-tables-worker/vitest.config.mts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from "vitest/config"; - -// Engine logic (param parsing, planning/pruning, filtering, aggregation) is -// plain TypeScript and is tested directly in Node against the real parquet -// fixture. The thin Cloudflare layer (R2 binding, caches.default) is -// exercised via `wrangler dev`. -export default defineConfig({ - test: { - environment: "node", - }, -}); diff --git a/packages/data-tables-worker/worker-configuration.d.ts b/packages/data-tables-worker/worker-configuration.d.ts deleted file mode 100644 index 522db55a0..000000000 --- a/packages/data-tables-worker/worker-configuration.d.ts +++ /dev/null @@ -1,14656 +0,0 @@ -/* eslint-disable */ -// Generated by Wrangler by running `wrangler types` (hash: 4fbc21eb347373113694c1873616665e) -// Runtime types generated with workerd@1.20260701.1 2026-07-01 nodejs_compat -interface __BaseEnv_Env { - SSN_TILES: R2Bucket; - DEV: string; -} -declare namespace Cloudflare { - interface Env extends __BaseEnv_Env {} -} -interface Env extends __BaseEnv_Env {} -type StringifyValues> = { - [Binding in keyof EnvType]: EnvType[Binding] extends string ? EnvType[Binding] : string; -}; -declare namespace NodeJS { - interface ProcessEnv extends StringifyValues> {} -} - -// Begin runtime types -/*! ***************************************************************************** -Copyright (c) Cloudflare. All rights reserved. -Copyright (c) Microsoft Corporation. All rights reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* eslint-disable */ -// noinspection JSUnusedGlobalSymbols -declare var onmessage: never; -/** - * The **`DOMException`** interface represents an abnormal event (called an **exception**) that occurs as a result of calling a method or accessing a property of a web API. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException) - */ -declare class DOMException extends Error { - constructor(message?: string, name?: string); - /** - * The **`message`** read-only property of the a message or description associated with the given error name. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/message) - */ - readonly message: string; - /** - * The **`name`** read-only property of the one of the strings associated with an error name. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/name) - */ - readonly name: string; - /** - * The **`code`** read-only property of the DOMException interface returns one of the legacy error code constants, or `0` if none match. - * @deprecated - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/code) - */ - readonly code: number; - static readonly INDEX_SIZE_ERR: number; - static readonly DOMSTRING_SIZE_ERR: number; - static readonly HIERARCHY_REQUEST_ERR: number; - static readonly WRONG_DOCUMENT_ERR: number; - static readonly INVALID_CHARACTER_ERR: number; - static readonly NO_DATA_ALLOWED_ERR: number; - static readonly NO_MODIFICATION_ALLOWED_ERR: number; - static readonly NOT_FOUND_ERR: number; - static readonly NOT_SUPPORTED_ERR: number; - static readonly INUSE_ATTRIBUTE_ERR: number; - static readonly INVALID_STATE_ERR: number; - static readonly SYNTAX_ERR: number; - static readonly INVALID_MODIFICATION_ERR: number; - static readonly NAMESPACE_ERR: number; - static readonly INVALID_ACCESS_ERR: number; - static readonly VALIDATION_ERR: number; - static readonly TYPE_MISMATCH_ERR: number; - static readonly SECURITY_ERR: number; - static readonly NETWORK_ERR: number; - static readonly ABORT_ERR: number; - static readonly URL_MISMATCH_ERR: number; - static readonly QUOTA_EXCEEDED_ERR: number; - static readonly TIMEOUT_ERR: number; - static readonly INVALID_NODE_TYPE_ERR: number; - static readonly DATA_CLONE_ERR: number; - get stack(): any; - set stack(value: any); -} -type WorkerGlobalScopeEventMap = { - fetch: FetchEvent; - scheduled: ScheduledEvent; - queue: QueueEvent; - unhandledrejection: PromiseRejectionEvent; - rejectionhandled: PromiseRejectionEvent; -}; -declare abstract class WorkerGlobalScope extends EventTarget { - EventTarget: typeof EventTarget; -} -/* The **`console`** object provides access to the debugging console (e.g., the Web console in Firefox). * - * The **`console`** object provides access to the debugging console (e.g., the Web console in Firefox). - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console) - */ -interface Console { - "assert"(condition?: boolean, ...data: any[]): void; - /** - * The **`console.clear()`** static method clears the console if possible. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/clear_static) - */ - clear(): void; - /** - * The **`console.count()`** static method logs the number of times that this particular call to `count()` has been called. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/count_static) - */ - count(label?: string): void; - /** - * The **`console.countReset()`** static method resets counter used with console/count_static. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/countReset_static) - */ - countReset(label?: string): void; - /** - * The **`console.debug()`** static method outputs a message to the console at the 'debug' log level. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/debug_static) - */ - debug(...data: any[]): void; - /** - * The **`console.dir()`** static method displays a list of the properties of the specified JavaScript object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/dir_static) - */ - dir(item?: any, options?: any): void; - /** - * The **`console.dirxml()`** static method displays an interactive tree of the descendant elements of the specified XML/HTML element. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/dirxml_static) - */ - dirxml(...data: any[]): void; - /** - * The **`console.error()`** static method outputs a message to the console at the 'error' log level. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/error_static) - */ - error(...data: any[]): void; - /** - * The **`console.group()`** static method creates a new inline group in the Web console log, causing any subsequent console messages to be indented by an additional level, until console/groupEnd_static is called. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/group_static) - */ - group(...data: any[]): void; - /** - * The **`console.groupCollapsed()`** static method creates a new inline group in the console. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/groupCollapsed_static) - */ - groupCollapsed(...data: any[]): void; - /** - * The **`console.groupEnd()`** static method exits the current inline group in the console. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/groupEnd_static) - */ - groupEnd(): void; - /** - * The **`console.info()`** static method outputs a message to the console at the 'info' log level. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/info_static) - */ - info(...data: any[]): void; - /** - * The **`console.log()`** static method outputs a message to the console. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/log_static) - */ - log(...data: any[]): void; - /** - * The **`console.table()`** static method displays tabular data as a table. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/table_static) - */ - table(tabularData?: any, properties?: string[]): void; - /** - * The **`console.time()`** static method starts a timer you can use to track how long an operation takes. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/time_static) - */ - time(label?: string): void; - /** - * The **`console.timeEnd()`** static method stops a timer that was previously started by calling console/time_static. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/timeEnd_static) - */ - timeEnd(label?: string): void; - /** - * The **`console.timeLog()`** static method logs the current value of a timer that was previously started by calling console/time_static. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/timeLog_static) - */ - timeLog(label?: string, ...data: any[]): void; - timeStamp(label?: string): void; - /** - * The **`console.trace()`** static method outputs a stack trace to the console. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/trace_static) - */ - trace(...data: any[]): void; - /** - * The **`console.warn()`** static method outputs a warning message to the console at the 'warning' log level. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/warn_static) - */ - warn(...data: any[]): void; -} -declare const console: Console; -type BufferSource = ArrayBufferView | ArrayBuffer; -type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array; -declare namespace WebAssembly { - class CompileError extends Error { - constructor(message?: string); - } - class RuntimeError extends Error { - constructor(message?: string); - } - type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128"; - interface GlobalDescriptor { - value: ValueType; - mutable?: boolean; - } - class Global { - constructor(descriptor: GlobalDescriptor, value?: any); - value: any; - valueOf(): any; - } - type ImportValue = ExportValue | number; - type ModuleImports = Record; - type Imports = Record; - type ExportValue = Function | Global | Memory | Table; - type Exports = Record; - class Instance { - constructor(module: Module, imports?: Imports); - readonly exports: Exports; - } - interface MemoryDescriptor { - initial: number; - maximum?: number; - shared?: boolean; - } - class Memory { - constructor(descriptor: MemoryDescriptor); - readonly buffer: ArrayBuffer; - grow(delta: number): number; - } - type ImportExportKind = "function" | "global" | "memory" | "table"; - interface ModuleExportDescriptor { - kind: ImportExportKind; - name: string; - } - interface ModuleImportDescriptor { - kind: ImportExportKind; - module: string; - name: string; - } - abstract class Module { - static customSections(module: Module, sectionName: string): ArrayBuffer[]; - static exports(module: Module): ModuleExportDescriptor[]; - static imports(module: Module): ModuleImportDescriptor[]; - } - type TableKind = "anyfunc" | "externref"; - interface TableDescriptor { - element: TableKind; - initial: number; - maximum?: number; - } - class Table { - constructor(descriptor: TableDescriptor, value?: any); - readonly length: number; - get(index: number): any; - grow(delta: number, value?: any): number; - set(index: number, value?: any): void; - } - function instantiate(module: Module, imports?: Imports): Promise; - function validate(bytes: BufferSource): boolean; -} -/** - * The **`ServiceWorkerGlobalScope`** interface of the Service Worker API represents the global execution context of a service worker. - * Available only in secure contexts. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope) - */ -interface ServiceWorkerGlobalScope extends WorkerGlobalScope { - DOMException: typeof DOMException; - WorkerGlobalScope: typeof WorkerGlobalScope; - btoa(data: string): string; - atob(data: string): string; - setTimeout(callback: (...args: any[]) => void, msDelay?: number): number; - setTimeout(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; - clearTimeout(timeoutId: number | null): void; - setInterval(callback: (...args: any[]) => void, msDelay?: number): number; - setInterval(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; - clearInterval(timeoutId: number | null): void; - queueMicrotask(task: Function): void; - structuredClone(value: T, options?: StructuredSerializeOptions): T; - reportError(error: any): void; - fetch(input: RequestInfo | URL, init?: RequestInit): Promise; - self: ServiceWorkerGlobalScope; - crypto: Crypto; - caches: CacheStorage; - scheduler: Scheduler; - performance: Performance; - Cloudflare: Cloudflare; - readonly origin: string; - Event: typeof Event; - ExtendableEvent: typeof ExtendableEvent; - CustomEvent: typeof CustomEvent; - PromiseRejectionEvent: typeof PromiseRejectionEvent; - FetchEvent: typeof FetchEvent; - TailEvent: typeof TailEvent; - TraceEvent: typeof TailEvent; - ScheduledEvent: typeof ScheduledEvent; - MessageEvent: typeof MessageEvent; - CloseEvent: typeof CloseEvent; - ReadableStreamDefaultReader: typeof ReadableStreamDefaultReader; - ReadableStreamBYOBReader: typeof ReadableStreamBYOBReader; - ReadableStream: typeof ReadableStream; - WritableStream: typeof WritableStream; - WritableStreamDefaultWriter: typeof WritableStreamDefaultWriter; - TransformStream: typeof TransformStream; - ByteLengthQueuingStrategy: typeof ByteLengthQueuingStrategy; - CountQueuingStrategy: typeof CountQueuingStrategy; - ErrorEvent: typeof ErrorEvent; - MessageChannel: typeof MessageChannel; - MessagePort: typeof MessagePort; - EventSource: typeof EventSource; - ReadableStreamBYOBRequest: typeof ReadableStreamBYOBRequest; - ReadableStreamDefaultController: typeof ReadableStreamDefaultController; - ReadableByteStreamController: typeof ReadableByteStreamController; - WritableStreamDefaultController: typeof WritableStreamDefaultController; - TransformStreamDefaultController: typeof TransformStreamDefaultController; - CompressionStream: typeof CompressionStream; - DecompressionStream: typeof DecompressionStream; - TextEncoderStream: typeof TextEncoderStream; - TextDecoderStream: typeof TextDecoderStream; - Headers: typeof Headers; - Body: typeof Body; - Request: typeof Request; - Response: typeof Response; - WebSocket: typeof WebSocket; - WebSocketPair: typeof WebSocketPair; - WebSocketRequestResponsePair: typeof WebSocketRequestResponsePair; - AbortController: typeof AbortController; - AbortSignal: typeof AbortSignal; - TextDecoder: typeof TextDecoder; - TextEncoder: typeof TextEncoder; - navigator: Navigator; - Navigator: typeof Navigator; - URL: typeof URL; - URLSearchParams: typeof URLSearchParams; - URLPattern: typeof URLPattern; - Blob: typeof Blob; - File: typeof File; - FormData: typeof FormData; - Crypto: typeof Crypto; - SubtleCrypto: typeof SubtleCrypto; - CryptoKey: typeof CryptoKey; - CacheStorage: typeof CacheStorage; - Cache: typeof Cache; - FixedLengthStream: typeof FixedLengthStream; - IdentityTransformStream: typeof IdentityTransformStream; - HTMLRewriter: typeof HTMLRewriter; -} -declare function addEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetAddEventListenerOptions | boolean): void; -declare function removeEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetEventListenerOptions | boolean): void; -/** - * The **`dispatchEvent()`** method of the EventTarget sends an Event to the object, (synchronously) invoking the affected event listeners in the appropriate order. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent) - */ -declare function dispatchEvent(event: WorkerGlobalScopeEventMap[keyof WorkerGlobalScopeEventMap]): boolean; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/btoa) */ -declare function btoa(data: string): string; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/atob) */ -declare function atob(data: string): string; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setTimeout) */ -declare function setTimeout(callback: (...args: any[]) => void, msDelay?: number): number; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setTimeout) */ -declare function setTimeout(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/clearTimeout) */ -declare function clearTimeout(timeoutId: number | null): void; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setInterval) */ -declare function setInterval(callback: (...args: any[]) => void, msDelay?: number): number; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setInterval) */ -declare function setInterval(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/clearInterval) */ -declare function clearInterval(timeoutId: number | null): void; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/queueMicrotask) */ -declare function queueMicrotask(task: Function): void; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/structuredClone) */ -declare function structuredClone(value: T, options?: StructuredSerializeOptions): T; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/reportError) */ -declare function reportError(error: any): void; -/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/fetch) */ -declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise; -declare const self: ServiceWorkerGlobalScope; -/** -* The Web Crypto API provides a set of low-level functions for common cryptographic tasks. -* The Workers runtime implements the full surface of this API, but with some differences in -* the [supported algorithms](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/#supported-algorithms) -* compared to those implemented in most browsers. -* -* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/) -*/ -declare const crypto: Crypto; -/** -* The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. -* -* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) -*/ -declare const caches: CacheStorage; -declare const scheduler: Scheduler; -/** -* The Workers runtime supports a subset of the Performance API, used to measure timing and performance, -* as well as timing of subrequests and other operations. -* -* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/) -*/ -declare const performance: Performance; -declare const Cloudflare: Cloudflare; -declare const origin: string; -declare const navigator: Navigator; -interface TestController { -} -interface ExecutionContext { - waitUntil(promise: Promise): void; - passThroughOnException(): void; - readonly exports: Cloudflare.Exports; - readonly props: Props; - cache?: CacheContext; - readonly access?: CloudflareAccessContext; - tracing: Tracing; -} -type ExportedHandlerFetchHandler = (request: Request>, env: Env, ctx: ExecutionContext) => Response | Promise; -type ExportedHandlerConnectHandler = (socket: Socket, env: Env, ctx: ExecutionContext) => void | Promise; -type ExportedHandlerTailHandler = (events: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise; -type ExportedHandlerTraceHandler = (traces: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise; -type ExportedHandlerTailStreamHandler = (event: TailStream.TailEvent, env: Env, ctx: ExecutionContext) => TailStream.TailEventHandlerType | Promise; -type ExportedHandlerScheduledHandler = (controller: ScheduledController, env: Env, ctx: ExecutionContext) => void | Promise; -type ExportedHandlerQueueHandler = (batch: MessageBatch, env: Env, ctx: ExecutionContext) => void | Promise; -type ExportedHandlerTestHandler = (controller: TestController, env: Env, ctx: ExecutionContext) => void | Promise; -interface ExportedHandler { - fetch?: ExportedHandlerFetchHandler; - connect?: ExportedHandlerConnectHandler; - tail?: ExportedHandlerTailHandler; - trace?: ExportedHandlerTraceHandler; - tailStream?: ExportedHandlerTailStreamHandler; - scheduled?: ExportedHandlerScheduledHandler; - test?: ExportedHandlerTestHandler; - email?: EmailExportedHandler; - queue?: ExportedHandlerQueueHandler; -} -interface StructuredSerializeOptions { - transfer?: any[]; -} -declare abstract class Navigator { - sendBeacon(url: string, body?: BodyInit): boolean; - readonly userAgent: string; - readonly hardwareConcurrency: number; - readonly platform: string; - readonly language: string; - readonly languages: string[]; -} -interface AlarmInvocationInfo { - readonly isRetry: boolean; - readonly retryCount: number; - readonly scheduledTime: number; -} -interface Cloudflare { - readonly compatibilityFlags: Record; -} -interface CachePurgeError { - code: number; - message: string; -} -interface CachePurgeResult { - success: boolean; - errors: CachePurgeError[]; -} -interface CachePurgeOptions { - tags?: string[]; - pathPrefixes?: string[]; - purgeEverything?: boolean; -} -interface CacheContext { - purge(options: CachePurgeOptions): Promise; -} -interface CloudflareAccessContext { - readonly aud: string; - getIdentity(): Promise; -} -declare abstract class ColoLocalActorNamespace { - get(actorId: string): Fetcher; -} -interface DurableObject { - fetch(request: Request): Response | Promise; - connect?(socket: Socket): void | Promise; - alarm?(alarmInfo?: AlarmInvocationInfo): void | Promise; - webSocketMessage?(ws: WebSocket, message: string | ArrayBuffer): void | Promise; - webSocketClose?(ws: WebSocket, code: number, reason: string, wasClean: boolean): void | Promise; - webSocketError?(ws: WebSocket, error: unknown): void | Promise; -} -type DurableObjectStub = Fetcher & { - readonly id: DurableObjectId; - readonly name?: string; -}; -interface DurableObjectId { - toString(): string; - equals(other: DurableObjectId): boolean; - readonly name?: string; - readonly jurisdiction?: string; -} -declare abstract class DurableObjectNamespace { - newUniqueId(options?: DurableObjectNamespaceNewUniqueIdOptions): DurableObjectId; - idFromName(name: string): DurableObjectId; - idFromString(id: string): DurableObjectId; - get(id: DurableObjectId, options?: DurableObjectNamespaceGetDurableObjectOptions): DurableObjectStub; - getByName(name: string, options?: DurableObjectNamespaceGetDurableObjectOptions): DurableObjectStub; - jurisdiction(jurisdiction: DurableObjectJurisdiction): DurableObjectNamespace; -} -type DurableObjectJurisdiction = "eu" | "fedramp" | "fedramp-high"; -interface DurableObjectNamespaceNewUniqueIdOptions { - jurisdiction?: DurableObjectJurisdiction; -} -type DurableObjectLocationHint = "wnam" | "enam" | "sam" | "weur" | "eeur" | "apac" | "apac-ne" | "apac-se" | "oc" | "afr" | "me"; -type DurableObjectRoutingMode = "primary-only"; -interface DurableObjectNamespaceGetDurableObjectOptions { - locationHint?: DurableObjectLocationHint; - routingMode?: DurableObjectRoutingMode; -} -interface DurableObjectClass<_T extends Rpc.DurableObjectBranded | undefined = undefined> { -} -interface DurableObjectState { - waitUntil(promise: Promise): void; - readonly exports: Cloudflare.Exports; - readonly props: Props; - readonly id: DurableObjectId; - readonly storage: DurableObjectStorage; - container?: Container; - facets: DurableObjectFacets; - blockConcurrencyWhile(callback: () => Promise): Promise; - acceptWebSocket(ws: WebSocket, tags?: string[]): void; - getWebSockets(tag?: string): WebSocket[]; - setWebSocketAutoResponse(maybeReqResp?: WebSocketRequestResponsePair): void; - getWebSocketAutoResponse(): WebSocketRequestResponsePair | null; - getWebSocketAutoResponseTimestamp(ws: WebSocket): Date | null; - setHibernatableWebSocketEventTimeout(timeoutMs?: number): void; - getHibernatableWebSocketEventTimeout(): number | null; - getTags(ws: WebSocket): string[]; - abort(reason?: string): void; -} -interface DurableObjectTransaction { - get(key: string, options?: DurableObjectGetOptions): Promise; - get(keys: string[], options?: DurableObjectGetOptions): Promise>; - list(options?: DurableObjectListOptions): Promise>; - put(key: string, value: T, options?: DurableObjectPutOptions): Promise; - put(entries: Record, options?: DurableObjectPutOptions): Promise; - delete(key: string, options?: DurableObjectPutOptions): Promise; - delete(keys: string[], options?: DurableObjectPutOptions): Promise; - rollback(): void; - getAlarm(options?: DurableObjectGetAlarmOptions): Promise; - setAlarm(scheduledTime: number | Date, options?: DurableObjectSetAlarmOptions): Promise; - deleteAlarm(options?: DurableObjectSetAlarmOptions): Promise; -} -interface DurableObjectStorage { - get(key: string, options?: DurableObjectGetOptions): Promise; - get(keys: string[], options?: DurableObjectGetOptions): Promise>; - list(options?: DurableObjectListOptions): Promise>; - put(key: string, value: T, options?: DurableObjectPutOptions): Promise; - put(entries: Record, options?: DurableObjectPutOptions): Promise; - delete(key: string, options?: DurableObjectPutOptions): Promise; - delete(keys: string[], options?: DurableObjectPutOptions): Promise; - deleteAll(options?: DurableObjectPutOptions): Promise; - transaction(closure: (txn: DurableObjectTransaction) => Promise): Promise; - getAlarm(options?: DurableObjectGetAlarmOptions): Promise; - setAlarm(scheduledTime: number | Date, options?: DurableObjectSetAlarmOptions): Promise; - deleteAlarm(options?: DurableObjectSetAlarmOptions): Promise; - sync(): Promise; - sql: SqlStorage; - kv: SyncKvStorage; - transactionSync(closure: () => T): T; - getCurrentBookmark(): Promise; - getBookmarkForTime(timestamp: number | Date): Promise; - onNextSessionRestoreBookmark(bookmark: string): Promise; -} -interface DurableObjectListOptions { - start?: string; - startAfter?: string; - end?: string; - prefix?: string; - reverse?: boolean; - limit?: number; - allowConcurrency?: boolean; - noCache?: boolean; -} -interface DurableObjectGetOptions { - allowConcurrency?: boolean; - noCache?: boolean; -} -interface DurableObjectGetAlarmOptions { - allowConcurrency?: boolean; -} -interface DurableObjectPutOptions { - allowConcurrency?: boolean; - allowUnconfirmed?: boolean; - noCache?: boolean; -} -interface DurableObjectSetAlarmOptions { - allowConcurrency?: boolean; - allowUnconfirmed?: boolean; -} -declare class WebSocketRequestResponsePair { - constructor(request: string, response: string); - get request(): string; - get response(): string; -} -interface DurableObjectFacets { - get(name: string, getStartupOptions: () => FacetStartupOptions | Promise>): Fetcher; - abort(name: string, reason: any): void; - delete(name: string): void; - clone(src: string, dst: string): void; -} -interface FacetStartupOptions { - id?: DurableObjectId | string; - class: DurableObjectClass; -} -interface AnalyticsEngineDataset { - writeDataPoint(event?: AnalyticsEngineDataPoint): void; -} -interface AnalyticsEngineDataPoint { - indexes?: ((ArrayBuffer | string) | null)[]; - doubles?: number[]; - blobs?: ((ArrayBuffer | string) | null)[]; -} -/** - * The **`Event`** interface represents an event which takes place on an `EventTarget`. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event) - */ -declare class Event { - constructor(type: string, init?: EventInit); - /** - * The **`type`** read-only property of the Event interface returns a string containing the event's type. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/type) - */ - get type(): string; - /** - * The **`eventPhase`** read-only property of the being evaluated. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/eventPhase) - */ - get eventPhase(): number; - /** - * The read-only **`composed`** property of the or not the event will propagate across the shadow DOM boundary into the standard DOM. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/composed) - */ - get composed(): boolean; - /** - * The **`bubbles`** read-only property of the Event interface indicates whether the event bubbles up through the DOM tree or not. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/bubbles) - */ - get bubbles(): boolean; - /** - * The **`cancelable`** read-only property of the Event interface indicates whether the event can be canceled, and therefore prevented as if the event never happened. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelable) - */ - get cancelable(): boolean; - /** - * The **`defaultPrevented`** read-only property of the Event interface returns a boolean value indicating whether or not the call to Event.preventDefault() canceled the event. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/defaultPrevented) - */ - get defaultPrevented(): boolean; - /** - * The Event property **`returnValue`** indicates whether the default action for this event has been prevented or not. - * @deprecated - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/returnValue) - */ - get returnValue(): boolean; - /** - * The **`currentTarget`** read-only property of the Event interface identifies the element to which the event handler has been attached. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/currentTarget) - */ - get currentTarget(): EventTarget | undefined; - /** - * The read-only **`target`** property of the dispatched. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/target) - */ - get target(): EventTarget | undefined; - /** - * The deprecated **`Event.srcElement`** is an alias for the Event.target property. - * @deprecated - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/srcElement) - */ - get srcElement(): EventTarget | undefined; - /** - * The **`timeStamp`** read-only property of the Event interface returns the time (in milliseconds) at which the event was created. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/timeStamp) - */ - get timeStamp(): number; - /** - * The **`isTrusted`** read-only property of the when the event was generated by the user agent (including via user actions and programmatic methods such as HTMLElement.focus()), and `false` when the event was dispatched via The only exception is the `click` event, which initializes the `isTrusted` property to `false` in user agents. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/isTrusted) - */ - get isTrusted(): boolean; - /** - * The **`cancelBubble`** property of the Event interface is deprecated. - * @deprecated - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelBubble) - */ - get cancelBubble(): boolean; - /** - * The **`cancelBubble`** property of the Event interface is deprecated. - * @deprecated - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelBubble) - */ - set cancelBubble(value: boolean); - /** - * The **`stopImmediatePropagation()`** method of the If several listeners are attached to the same element for the same event type, they are called in the order in which they were added. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/stopImmediatePropagation) - */ - stopImmediatePropagation(): void; - /** - * The **`preventDefault()`** method of the Event interface tells the user agent that if the event does not get explicitly handled, its default action should not be taken as it normally would be. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/preventDefault) - */ - preventDefault(): void; - /** - * The **`stopPropagation()`** method of the Event interface prevents further propagation of the current event in the capturing and bubbling phases. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/stopPropagation) - */ - stopPropagation(): void; - /** - * The **`composedPath()`** method of the Event interface returns the event's path which is an array of the objects on which listeners will be invoked. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/composedPath) - */ - composedPath(): EventTarget[]; - static readonly NONE: number; - static readonly CAPTURING_PHASE: number; - static readonly AT_TARGET: number; - static readonly BUBBLING_PHASE: number; -} -interface EventInit { - bubbles?: boolean; - cancelable?: boolean; - composed?: boolean; -} -type EventListener = (event: EventType) => void; -interface EventListenerObject { - handleEvent(event: EventType): void; -} -type EventListenerOrEventListenerObject = EventListener | EventListenerObject; -/** - * The **`EventTarget`** interface is implemented by objects that can receive events and may have listeners for them. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget) - */ -declare class EventTarget = Record> { - constructor(); - /** - * The **`addEventListener()`** method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener) - */ - addEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetAddEventListenerOptions | boolean): void; - /** - * The **`removeEventListener()`** method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener) - */ - removeEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetEventListenerOptions | boolean): void; - /** - * The **`dispatchEvent()`** method of the EventTarget sends an Event to the object, (synchronously) invoking the affected event listeners in the appropriate order. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent) - */ - dispatchEvent(event: EventMap[keyof EventMap]): boolean; -} -interface EventTargetEventListenerOptions { - capture?: boolean; -} -interface EventTargetAddEventListenerOptions { - capture?: boolean; - passive?: boolean; - once?: boolean; - signal?: AbortSignal; -} -interface EventTargetHandlerObject { - handleEvent: (event: Event) => any | undefined; -} -/** - * The **`AbortController`** interface represents a controller object that allows you to abort one or more Web requests as and when desired. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController) - */ -declare class AbortController { - constructor(); - /** - * The **`signal`** read-only property of the AbortController interface returns an AbortSignal object instance, which can be used to communicate with/abort an asynchronous operation as desired. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController/signal) - */ - get signal(): AbortSignal; - /** - * The **`abort()`** method of the AbortController interface aborts an asynchronous operation before it has completed. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController/abort) - */ - abort(reason?: any): void; -} -/** - * The **`AbortSignal`** interface represents a signal object that allows you to communicate with an asynchronous operation (such as a fetch request) and abort it if required via an AbortController object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal) - */ -declare abstract class AbortSignal extends EventTarget { - /** - * The **`AbortSignal.abort()`** static method returns an AbortSignal that is already set as aborted (and which does not trigger an AbortSignal/abort_event event). - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_static) - */ - static abort(reason?: any): AbortSignal; - /** - * The **`AbortSignal.timeout()`** static method returns an AbortSignal that will automatically abort after a specified time. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/timeout_static) - */ - static timeout(delay: number): AbortSignal; - /** - * The **`AbortSignal.any()`** static method takes an iterable of abort signals and returns an AbortSignal. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/any_static) - */ - static any(signals: AbortSignal[]): AbortSignal; - /** - * The **`aborted`** read-only property returns a value that indicates whether the asynchronous operations the signal is communicating with are aborted (`true`) or not (`false`). - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/aborted) - */ - get aborted(): boolean; - /** - * The **`reason`** read-only property returns a JavaScript value that indicates the abort reason. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/reason) - */ - get reason(): any; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_event) */ - get onabort(): any | null; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_event) */ - set onabort(value: any | null); - /** - * The **`throwIfAborted()`** method throws the signal's abort AbortSignal.reason if the signal has been aborted; otherwise it does nothing. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/throwIfAborted) - */ - throwIfAborted(): void; -} -interface Scheduler { - wait(delay: number, maybeOptions?: SchedulerWaitOptions): Promise; -} -interface SchedulerWaitOptions { - signal?: AbortSignal; -} -/** - * The **`ExtendableEvent`** interface extends the lifetime of the `install` and `activate` events dispatched on the global scope as part of the service worker lifecycle. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ExtendableEvent) - */ -declare abstract class ExtendableEvent extends Event { - /** - * The **`ExtendableEvent.waitUntil()`** method tells the event dispatcher that work is ongoing. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ExtendableEvent/waitUntil) - */ - waitUntil(promise: Promise): void; -} -/** - * The **`CustomEvent`** interface represents events initialized by an application for any purpose. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent) - */ -declare class CustomEvent extends Event { - constructor(type: string, init?: CustomEventCustomEventInit); - /** - * The read-only **`detail`** property of the CustomEvent interface returns any data passed when initializing the event. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent/detail) - */ - get detail(): T; -} -interface CustomEventCustomEventInit { - bubbles?: boolean; - cancelable?: boolean; - composed?: boolean; - detail?: any; -} -/** - * The **`Blob`** interface represents a blob, which is a file-like object of immutable, raw data; they can be read as text or binary data, or converted into a ReadableStream so its methods can be used for processing the data. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob) - */ -declare class Blob { - constructor(bits?: ((ArrayBuffer | ArrayBufferView) | string | Blob)[], options?: BlobOptions); - /** - * The **`size`** read-only property of the Blob interface returns the size of the Blob or File in bytes. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) - */ - get size(): number; - /** - * The **`type`** read-only property of the Blob interface returns the MIME type of the file. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) - */ - get type(): string; - /** - * The **`slice()`** method of the Blob interface creates and returns a new `Blob` object which contains data from a subset of the blob on which it's called. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) - */ - slice(start?: number, end?: number, type?: string): Blob; - /** - * The **`arrayBuffer()`** method of the Blob interface returns a Promise that resolves with the contents of the blob as binary data contained in an ArrayBuffer. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer) - */ - arrayBuffer(): Promise; - /** - * The **`bytes()`** method of the Blob interface returns a Promise that resolves with a Uint8Array containing the contents of the blob as an array of bytes. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/bytes) - */ - bytes(): Promise; - /** - * The **`text()`** method of the string containing the contents of the blob, interpreted as UTF-8. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) - */ - text(): Promise; - /** - * The **`stream()`** method of the Blob interface returns a ReadableStream which upon reading returns the data contained within the `Blob`. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/stream) - */ - stream(): ReadableStream; -} -interface BlobOptions { - type?: string; -} -/** - * The **`File`** interface provides information about files and allows JavaScript in a web page to access their content. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File) - */ -declare class File extends Blob { - constructor(bits: ((ArrayBuffer | ArrayBufferView) | string | Blob)[] | undefined, name: string, options?: FileOptions); - /** - * The **`name`** read-only property of the File interface returns the name of the file represented by a File object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) - */ - get name(): string; - /** - * The **`lastModified`** read-only property of the File interface provides the last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) - */ - get lastModified(): number; -} -interface FileOptions { - type?: string; - lastModified?: number; -} -/** -* The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. -* -* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) -*/ -declare abstract class CacheStorage { - /** - * The **`open()`** method of the the Cache object matching the `cacheName`. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CacheStorage/open) - */ - open(cacheName: string): Promise; - readonly default: Cache; -} -/** -* The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. -* -* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) -*/ -declare abstract class Cache { - /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#delete) */ - delete(request: RequestInfo | URL, options?: CacheQueryOptions): Promise; - /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#match) */ - match(request: RequestInfo | URL, options?: CacheQueryOptions): Promise; - /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#put) */ - put(request: RequestInfo | URL, response: Response): Promise; -} -interface CacheQueryOptions { - ignoreMethod?: boolean; -} -/** -* The Web Crypto API provides a set of low-level functions for common cryptographic tasks. -* The Workers runtime implements the full surface of this API, but with some differences in -* the [supported algorithms](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/#supported-algorithms) -* compared to those implemented in most browsers. -* -* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/) -*/ -declare abstract class Crypto { - /** - * The **`Crypto.subtle`** read-only property returns a cryptographic operations. - * Available only in secure contexts. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/subtle) - */ - get subtle(): SubtleCrypto; - /** - * The **`Crypto.getRandomValues()`** method lets you get cryptographically strong random values. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/getRandomValues) - */ - getRandomValues(buffer: T): T; - /** - * The **`randomUUID()`** method of the Crypto interface is used to generate a v4 UUID using a cryptographically secure random number generator. - * Available only in secure contexts. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/randomUUID) - */ - randomUUID(): string; - DigestStream: typeof DigestStream; -} -/** - * The **`SubtleCrypto`** interface of the Web Crypto API provides a number of low-level cryptographic functions. - * Available only in secure contexts. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto) - */ -declare abstract class SubtleCrypto { - /** - * The **`encrypt()`** method of the SubtleCrypto interface encrypts data. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/encrypt) - */ - encrypt(algorithm: string | SubtleCryptoEncryptAlgorithm, key: CryptoKey, plainText: ArrayBuffer | ArrayBufferView): Promise; - /** - * The **`decrypt()`** method of the SubtleCrypto interface decrypts some encrypted data. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/decrypt) - */ - decrypt(algorithm: string | SubtleCryptoEncryptAlgorithm, key: CryptoKey, cipherText: ArrayBuffer | ArrayBufferView): Promise; - /** - * The **`sign()`** method of the SubtleCrypto interface generates a digital signature. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/sign) - */ - sign(algorithm: string | SubtleCryptoSignAlgorithm, key: CryptoKey, data: ArrayBuffer | ArrayBufferView): Promise; - /** - * The **`verify()`** method of the SubtleCrypto interface verifies a digital signature. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/verify) - */ - verify(algorithm: string | SubtleCryptoSignAlgorithm, key: CryptoKey, signature: ArrayBuffer | ArrayBufferView, data: ArrayBuffer | ArrayBufferView): Promise; - /** - * The **`digest()`** method of the SubtleCrypto interface generates a _digest_ of the given data, using the specified hash function. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/digest) - */ - digest(algorithm: string | SubtleCryptoHashAlgorithm, data: ArrayBuffer | ArrayBufferView): Promise; - /** - * The **`generateKey()`** method of the SubtleCrypto interface is used to generate a new key (for symmetric algorithms) or key pair (for public-key algorithms). - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/generateKey) - */ - generateKey(algorithm: string | SubtleCryptoGenerateKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; - /** - * The **`deriveKey()`** method of the SubtleCrypto interface can be used to derive a secret key from a master key. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveKey) - */ - deriveKey(algorithm: string | SubtleCryptoDeriveKeyAlgorithm, baseKey: CryptoKey, derivedKeyAlgorithm: string | SubtleCryptoImportKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; - /** - * The **`deriveBits()`** method of the key. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveBits) - */ - deriveBits(algorithm: string | SubtleCryptoDeriveKeyAlgorithm, baseKey: CryptoKey, length?: number | null): Promise; - /** - * The **`importKey()`** method of the SubtleCrypto interface imports a key: that is, it takes as input a key in an external, portable format and gives you a CryptoKey object that you can use in the Web Crypto API. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/importKey) - */ - importKey(format: string, keyData: (ArrayBuffer | ArrayBufferView) | JsonWebKey, algorithm: string | SubtleCryptoImportKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; - /** - * The **`exportKey()`** method of the SubtleCrypto interface exports a key: that is, it takes as input a CryptoKey object and gives you the key in an external, portable format. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/exportKey) - */ - exportKey(format: string, key: CryptoKey): Promise; - /** - * The **`wrapKey()`** method of the SubtleCrypto interface 'wraps' a key. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/wrapKey) - */ - wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | SubtleCryptoEncryptAlgorithm): Promise; - /** - * The **`unwrapKey()`** method of the SubtleCrypto interface 'unwraps' a key. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/unwrapKey) - */ - unwrapKey(format: string, wrappedKey: ArrayBuffer | ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | SubtleCryptoEncryptAlgorithm, unwrappedKeyAlgorithm: string | SubtleCryptoImportKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; - timingSafeEqual(a: ArrayBuffer | ArrayBufferView, b: ArrayBuffer | ArrayBufferView): boolean; -} -/** - * The **`CryptoKey`** interface of the Web Crypto API represents a cryptographic key obtained from one of the SubtleCrypto methods SubtleCrypto.generateKey, SubtleCrypto.deriveKey, SubtleCrypto.importKey, or SubtleCrypto.unwrapKey. - * Available only in secure contexts. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey) - */ -declare abstract class CryptoKey { - /** - * The read-only **`type`** property of the CryptoKey interface indicates which kind of key is represented by the object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/type) - */ - readonly type: string; - /** - * The read-only **`extractable`** property of the CryptoKey interface indicates whether or not the key may be extracted using `SubtleCrypto.exportKey()` or `SubtleCrypto.wrapKey()`. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable) - */ - readonly extractable: boolean; - /** - * The read-only **`algorithm`** property of the CryptoKey interface returns an object describing the algorithm for which this key can be used, and any associated extra parameters. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm) - */ - readonly algorithm: CryptoKeyKeyAlgorithm | CryptoKeyAesKeyAlgorithm | CryptoKeyHmacKeyAlgorithm | CryptoKeyRsaKeyAlgorithm | CryptoKeyEllipticKeyAlgorithm | CryptoKeyArbitraryKeyAlgorithm; - /** - * The read-only **`usages`** property of the CryptoKey interface indicates what can be done with the key. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/usages) - */ - readonly usages: string[]; -} -interface CryptoKeyPair { - publicKey: CryptoKey; - privateKey: CryptoKey; -} -interface JsonWebKey { - kty: string; - use?: string; - key_ops?: string[]; - alg?: string; - ext?: boolean; - crv?: string; - x?: string; - y?: string; - d?: string; - n?: string; - e?: string; - p?: string; - q?: string; - dp?: string; - dq?: string; - qi?: string; - oth?: RsaOtherPrimesInfo[]; - k?: string; -} -interface RsaOtherPrimesInfo { - r?: string; - d?: string; - t?: string; -} -interface SubtleCryptoDeriveKeyAlgorithm { - name: string; - salt?: (ArrayBuffer | ArrayBufferView); - iterations?: number; - hash?: (string | SubtleCryptoHashAlgorithm); - $public?: CryptoKey; - info?: (ArrayBuffer | ArrayBufferView); -} -interface SubtleCryptoEncryptAlgorithm { - name: string; - iv?: (ArrayBuffer | ArrayBufferView); - additionalData?: (ArrayBuffer | ArrayBufferView); - tagLength?: number; - counter?: (ArrayBuffer | ArrayBufferView); - length?: number; - label?: (ArrayBuffer | ArrayBufferView); -} -interface SubtleCryptoGenerateKeyAlgorithm { - name: string; - hash?: (string | SubtleCryptoHashAlgorithm); - modulusLength?: number; - publicExponent?: (ArrayBuffer | ArrayBufferView); - length?: number; - namedCurve?: string; -} -interface SubtleCryptoHashAlgorithm { - name: string; -} -interface SubtleCryptoImportKeyAlgorithm { - name: string; - hash?: (string | SubtleCryptoHashAlgorithm); - length?: number; - namedCurve?: string; - compressed?: boolean; -} -interface SubtleCryptoSignAlgorithm { - name: string; - hash?: (string | SubtleCryptoHashAlgorithm); - dataLength?: number; - saltLength?: number; -} -interface CryptoKeyKeyAlgorithm { - name: string; -} -interface CryptoKeyAesKeyAlgorithm { - name: string; - length: number; -} -interface CryptoKeyHmacKeyAlgorithm { - name: string; - hash: CryptoKeyKeyAlgorithm; - length: number; -} -interface CryptoKeyRsaKeyAlgorithm { - name: string; - modulusLength: number; - publicExponent: ArrayBuffer | ArrayBufferView; - hash?: CryptoKeyKeyAlgorithm; -} -interface CryptoKeyEllipticKeyAlgorithm { - name: string; - namedCurve: string; -} -interface CryptoKeyArbitraryKeyAlgorithm { - name: string; - hash?: CryptoKeyKeyAlgorithm; - namedCurve?: string; - length?: number; -} -declare class DigestStream extends WritableStream { - constructor(algorithm: string | SubtleCryptoHashAlgorithm); - readonly digest: Promise; - get bytesWritten(): number | bigint; -} -/** - * The **`TextDecoder`** interface represents a decoder for a specific text encoding, such as `UTF-8`, `ISO-8859-2`, `KOI8-R`, `GBK`, etc. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoder) - */ -declare class TextDecoder { - constructor(label?: string, options?: TextDecoderConstructorOptions); - /** - * The **`TextDecoder.decode()`** method returns a string containing text decoded from the buffer passed as a parameter. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoder/decode) - */ - decode(input?: (ArrayBuffer | ArrayBufferView), options?: TextDecoderDecodeOptions): string; - get encoding(): string; - get fatal(): boolean; - get ignoreBOM(): boolean; -} -/** - * The **`TextEncoder`** interface takes a stream of code points as input and emits a stream of UTF-8 bytes. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder) - */ -declare class TextEncoder { - constructor(); - /** - * The **`TextEncoder.encode()`** method takes a string as input, and returns a Global_Objects/Uint8Array containing the text given in parameters encoded with the specific method for that TextEncoder object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder/encode) - */ - encode(input?: string): Uint8Array; - /** - * The **`TextEncoder.encodeInto()`** method takes a string to encode and a destination Uint8Array to put resulting UTF-8 encoded text into, and returns a dictionary object indicating the progress of the encoding. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder/encodeInto) - */ - encodeInto(input: string, buffer: Uint8Array): TextEncoderEncodeIntoResult; - get encoding(): string; -} -interface TextDecoderConstructorOptions { - fatal: boolean; - ignoreBOM: boolean; -} -interface TextDecoderDecodeOptions { - stream: boolean; -} -interface TextEncoderEncodeIntoResult { - read: number; - written: number; -} -/** - * The **`ErrorEvent`** interface represents events providing information related to errors in scripts or in files. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent) - */ -declare class ErrorEvent extends Event { - constructor(type: string, init?: ErrorEventErrorEventInit); - /** - * The **`filename`** read-only property of the ErrorEvent interface returns a string containing the name of the script file in which the error occurred. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/filename) - */ - get filename(): string; - /** - * The **`message`** read-only property of the ErrorEvent interface returns a string containing a human-readable error message describing the problem. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/message) - */ - get message(): string; - /** - * The **`lineno`** read-only property of the ErrorEvent interface returns an integer containing the line number of the script file on which the error occurred. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/lineno) - */ - get lineno(): number; - /** - * The **`colno`** read-only property of the ErrorEvent interface returns an integer containing the column number of the script file on which the error occurred. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/colno) - */ - get colno(): number; - /** - * The **`error`** read-only property of the ErrorEvent interface returns a JavaScript value, such as an Error or DOMException, representing the error associated with this event. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/error) - */ - get error(): any; -} -interface ErrorEventErrorEventInit { - message?: string; - filename?: string; - lineno?: number; - colno?: number; - error?: any; -} -/** - * The **`MessageEvent`** interface represents a message received by a target object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent) - */ -declare class MessageEvent extends Event { - constructor(type: string, initializer: MessageEventInit); - /** - * The **`data`** read-only property of the The data sent by the message emitter; this can be any data type, depending on what originated this event. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/data) - */ - readonly data: any; - /** - * The **`origin`** read-only property of the origin of the message emitter. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/origin) - */ - readonly origin: string | null; - /** - * The **`lastEventId`** read-only property of the unique ID for the event. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/lastEventId) - */ - readonly lastEventId: string; - /** - * The **`source`** read-only property of the a WindowProxy, MessagePort, or a `MessageEventSource` (which can be a WindowProxy, message emitter. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/source) - */ - readonly source: MessagePort | null; - /** - * The **`ports`** read-only property of the containing all MessagePort objects sent with the message, in order. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/ports) - */ - readonly ports: MessagePort[]; -} -interface MessageEventInit { - data: ArrayBuffer | string; -} -/** - * The **`PromiseRejectionEvent`** interface represents events which are sent to the global script context when JavaScript Promises are rejected. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent) - */ -declare abstract class PromiseRejectionEvent extends Event { - /** - * The PromiseRejectionEvent interface's **`promise`** read-only property indicates the JavaScript rejected. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/promise) - */ - readonly promise: Promise; - /** - * The PromiseRejectionEvent **`reason`** read-only property is any JavaScript value or Object which provides the reason passed into Promise.reject(). - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/reason) - */ - readonly reason: any; -} -/** - * The **`FormData`** interface provides a way to construct a set of key/value pairs representing form fields and their values, which can be sent using the Window/fetch, XMLHttpRequest.send() or navigator.sendBeacon() methods. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData) - */ -declare class FormData { - constructor(); - /** - * The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) - */ - append(name: string, value: string | Blob): void; - /** - * The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) - */ - append(name: string, value: string): void; - /** - * The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) - */ - append(name: string, value: Blob, filename?: string): void; - /** - * The **`delete()`** method of the FormData interface deletes a key and its value(s) from a `FormData` object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/delete) - */ - delete(name: string): void; - /** - * The **`get()`** method of the FormData interface returns the first value associated with a given key from within a `FormData` object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/get) - */ - get(name: string): (File | string) | null; - /** - * The **`getAll()`** method of the FormData interface returns all the values associated with a given key from within a `FormData` object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/getAll) - */ - getAll(name: string): (File | string)[]; - /** - * The **`has()`** method of the FormData interface returns whether a `FormData` object contains a certain key. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/has) - */ - has(name: string): boolean; - /** - * The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) - */ - set(name: string, value: string | Blob): void; - /** - * The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) - */ - set(name: string, value: string): void; - /** - * The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) - */ - set(name: string, value: Blob, filename?: string): void; - /* Returns an array of key, value pairs for every entry in the list. */ - entries(): IterableIterator<[ - key: string, - value: File | string - ]>; - /* Returns a list of keys in the list. */ - keys(): IterableIterator; - /* Returns a list of values in the list. */ - values(): IterableIterator<(File | string)>; - forEach(callback: (this: This, value: File | string, key: string, parent: FormData) => void, thisArg?: This): void; - [Symbol.iterator](): IterableIterator<[ - key: string, - value: File | string - ]>; -} -interface ContentOptions { - html?: boolean; -} -declare class HTMLRewriter { - constructor(); - on(selector: string, handlers: HTMLRewriterElementContentHandlers): HTMLRewriter; - onDocument(handlers: HTMLRewriterDocumentContentHandlers): HTMLRewriter; - transform(response: Response): Response; -} -interface HTMLRewriterElementContentHandlers { - element?(element: Element): void | Promise; - comments?(comment: Comment): void | Promise; - text?(element: Text): void | Promise; -} -interface HTMLRewriterDocumentContentHandlers { - doctype?(doctype: Doctype): void | Promise; - comments?(comment: Comment): void | Promise; - text?(text: Text): void | Promise; - end?(end: DocumentEnd): void | Promise; -} -interface Doctype { - readonly name: string | null; - readonly publicId: string | null; - readonly systemId: string | null; -} -interface Element { - tagName: string; - readonly attributes: IterableIterator; - readonly removed: boolean; - readonly namespaceURI: string; - getAttribute(name: string): string | null; - hasAttribute(name: string): boolean; - setAttribute(name: string, value: string): Element; - removeAttribute(name: string): Element; - before(content: string | ReadableStream | Response, options?: ContentOptions): Element; - after(content: string | ReadableStream | Response, options?: ContentOptions): Element; - prepend(content: string | ReadableStream | Response, options?: ContentOptions): Element; - append(content: string | ReadableStream | Response, options?: ContentOptions): Element; - replace(content: string | ReadableStream | Response, options?: ContentOptions): Element; - remove(): Element; - removeAndKeepContent(): Element; - setInnerContent(content: string | ReadableStream | Response, options?: ContentOptions): Element; - onEndTag(handler: (tag: EndTag) => void | Promise): void; -} -interface EndTag { - name: string; - before(content: string | ReadableStream | Response, options?: ContentOptions): EndTag; - after(content: string | ReadableStream | Response, options?: ContentOptions): EndTag; - remove(): EndTag; -} -interface Comment { - text: string; - readonly removed: boolean; - before(content: string, options?: ContentOptions): Comment; - after(content: string, options?: ContentOptions): Comment; - replace(content: string, options?: ContentOptions): Comment; - remove(): Comment; -} -interface Text { - readonly text: string; - readonly lastInTextNode: boolean; - readonly removed: boolean; - before(content: string | ReadableStream | Response, options?: ContentOptions): Text; - after(content: string | ReadableStream | Response, options?: ContentOptions): Text; - replace(content: string | ReadableStream | Response, options?: ContentOptions): Text; - remove(): Text; -} -interface DocumentEnd { - append(content: string, options?: ContentOptions): DocumentEnd; -} -/** - * This is the event type for `fetch` events dispatched on the ServiceWorkerGlobalScope. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent) - */ -declare abstract class FetchEvent extends ExtendableEvent { - /** - * The **`request`** read-only property of the the event handler. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent/request) - */ - readonly request: Request; - /** - * The **`respondWith()`** method of allows you to provide a promise for a Response yourself. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent/respondWith) - */ - respondWith(promise: Response | Promise): void; - passThroughOnException(): void; -} -type HeadersInit = Headers | Iterable> | Record; -/** - * The **`Headers`** interface of the Fetch API allows you to perform various actions on HTTP request and response headers. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers) - */ -declare class Headers { - constructor(init?: HeadersInit); - /** - * The **`get()`** method of the Headers interface returns a byte string of all the values of a header within a `Headers` object with a given name. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/get) - */ - get(name: string): string | null; - getAll(name: string): string[]; - /** - * The **`getSetCookie()`** method of the Headers interface returns an array containing the values of all Set-Cookie headers associated with a response. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/getSetCookie) - */ - getSetCookie(): string[]; - /** - * The **`has()`** method of the Headers interface returns a boolean stating whether a `Headers` object contains a certain header. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/has) - */ - has(name: string): boolean; - /** - * The **`set()`** method of the Headers interface sets a new value for an existing header inside a `Headers` object, or adds the header if it does not already exist. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/set) - */ - set(name: string, value: string): void; - /** - * The **`append()`** method of the Headers interface appends a new value onto an existing header inside a `Headers` object, or adds the header if it does not already exist. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/append) - */ - append(name: string, value: string): void; - /** - * The **`delete()`** method of the Headers interface deletes a header from the current `Headers` object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/delete) - */ - delete(name: string): void; - forEach(callback: (this: This, value: string, key: string, parent: Headers) => void, thisArg?: This): void; - /* Returns an iterator allowing to go through all key/value pairs contained in this object. */ - entries(): IterableIterator<[ - key: string, - value: string - ]>; - /* Returns an iterator allowing to go through all keys of the key/value pairs contained in this object. */ - keys(): IterableIterator; - /* Returns an iterator allowing to go through all values of the key/value pairs contained in this object. */ - values(): IterableIterator; - [Symbol.iterator](): IterableIterator<[ - key: string, - value: string - ]>; -} -type BodyInit = ReadableStream | string | ArrayBuffer | ArrayBufferView | Blob | URLSearchParams | FormData | Iterable | AsyncIterable; -declare abstract class Body { - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/body) */ - get body(): ReadableStream | null; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bodyUsed) */ - get bodyUsed(): boolean; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer) */ - arrayBuffer(): Promise; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bytes) */ - bytes(): Promise; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/text) */ - text(): Promise; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/json) */ - json(): Promise; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/formData) */ - formData(): Promise; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/blob) */ - blob(): Promise; -} -/** - * The **`Response`** interface of the Fetch API represents the response to a request. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response) - */ -declare var Response: { - prototype: Response; - new (body?: BodyInit | null, init?: ResponseInit): Response; - error(): Response; - redirect(url: string, status?: number): Response; - json(any: any, maybeInit?: (ResponseInit | Response)): Response; -}; -/** - * The **`Response`** interface of the Fetch API represents the response to a request. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response) - */ -interface Response extends Body { - /** - * The **`clone()`** method of the Response interface creates a clone of a response object, identical in every way, but stored in a different variable. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/clone) - */ - clone(): Response; - /** - * The **`status`** read-only property of the Response interface contains the HTTP status codes of the response. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/status) - */ - status: number; - /** - * The **`statusText`** read-only property of the Response interface contains the status message corresponding to the HTTP status code in Response.status. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/statusText) - */ - statusText: string; - /** - * The **`headers`** read-only property of the with the response. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/headers) - */ - headers: Headers; - /** - * The **`ok`** read-only property of the Response interface contains a Boolean stating whether the response was successful (status in the range 200-299) or not. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/ok) - */ - ok: boolean; - /** - * The **`redirected`** read-only property of the Response interface indicates whether or not the response is the result of a request you made which was redirected. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/redirected) - */ - redirected: boolean; - /** - * The **`url`** read-only property of the Response interface contains the URL of the response. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/url) - */ - url: string; - webSocket: WebSocket | null; - cf: any | undefined; - /** - * The **`type`** read-only property of the Response interface contains the type of the response. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/type) - */ - type: "default" | "error"; -} -interface ResponseInit { - status?: number; - statusText?: string; - headers?: HeadersInit; - cf?: any; - webSocket?: (WebSocket | null); - encodeBody?: "automatic" | "manual"; -} -type RequestInfo> = Request | string; -/** - * The **`Request`** interface of the Fetch API represents a resource request. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request) - */ -declare var Request: { - prototype: Request; - new >(input: RequestInfo | URL, init?: RequestInit): Request; -}; -/** - * The **`Request`** interface of the Fetch API represents a resource request. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request) - */ -interface Request> extends Body { - /** - * The **`clone()`** method of the Request interface creates a copy of the current `Request` object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/clone) - */ - clone(): Request; - /** - * The **`method`** read-only property of the `POST`, etc.) A String indicating the method of the request. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/method) - */ - method: string; - /** - * The **`url`** read-only property of the Request interface contains the URL of the request. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/url) - */ - url: string; - /** - * The **`headers`** read-only property of the with the request. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/headers) - */ - headers: Headers; - /** - * The **`redirect`** read-only property of the Request interface contains the mode for how redirects are handled. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/redirect) - */ - redirect: string; - fetcher: Fetcher | null; - /** - * The read-only **`signal`** property of the Request interface returns the AbortSignal associated with the request. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/signal) - */ - signal: AbortSignal; - cf?: Cf; - /** - * The **`integrity`** read-only property of the Request interface contains the subresource integrity value of the request. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/integrity) - */ - integrity: string; - /** - * The **`keepalive`** read-only property of the Request interface contains the request's `keepalive` setting (`true` or `false`), which indicates whether the browser will keep the associated request alive if the page that initiated it is unloaded before the request is complete. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/keepalive) - */ - keepalive: boolean; - /** - * The **`cache`** read-only property of the Request interface contains the cache mode of the request. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/cache) - */ - cache?: "no-store" | "no-cache"; -} -interface RequestInit { - /* A string to set request's method. */ - method?: string; - /* A Headers object, an object literal, or an array of two-item arrays to set request's headers. */ - headers?: HeadersInit; - /* A BodyInit object or null to set request's body. */ - body?: BodyInit | null; - /* A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */ - redirect?: string; - fetcher?: (Fetcher | null); - cf?: Cf; - /* A string indicating how the request will interact with the browser's cache to set request's cache. */ - cache?: "no-store" | "no-cache"; - /* A cryptographic hash of the resource to be fetched by request. Sets request's integrity. */ - integrity?: string; - /* An AbortSignal to set request's signal. */ - signal?: (AbortSignal | null); - encodeResponseBody?: "automatic" | "manual"; -} -type Service Rpc.WorkerEntrypointBranded) | Rpc.WorkerEntrypointBranded | ExportedHandler | undefined = undefined> = T extends new (...args: any[]) => Rpc.WorkerEntrypointBranded ? Fetcher> : T extends Rpc.WorkerEntrypointBranded ? Fetcher : T extends Exclude ? never : Fetcher; -type Fetcher = (T extends Rpc.EntrypointBranded ? Rpc.Provider : unknown) & { - fetch(input: RequestInfo | URL, init?: RequestInit): Promise; - connect(address: SocketAddress | string, options?: SocketOptions): Socket; -}; -interface KVNamespaceListKey { - name: Key; - expiration?: number; - metadata?: Metadata; -} -type KVNamespaceListResult = { - list_complete: false; - keys: KVNamespaceListKey[]; - cursor: string; - cacheStatus: string | null; -} | { - list_complete: true; - keys: KVNamespaceListKey[]; - cacheStatus: string | null; -}; -interface KVNamespace { - get(key: Key, options?: Partial>): Promise; - get(key: Key, type: "text"): Promise; - get(key: Key, type: "json"): Promise; - get(key: Key, type: "arrayBuffer"): Promise; - get(key: Key, type: "stream"): Promise; - get(key: Key, options?: KVNamespaceGetOptions<"text">): Promise; - get(key: Key, options?: KVNamespaceGetOptions<"json">): Promise; - get(key: Key, options?: KVNamespaceGetOptions<"arrayBuffer">): Promise; - get(key: Key, options?: KVNamespaceGetOptions<"stream">): Promise; - get(key: Array, type: "text"): Promise>; - get(key: Array, type: "json"): Promise>; - get(key: Array, options?: Partial>): Promise>; - get(key: Array, options?: KVNamespaceGetOptions<"text">): Promise>; - get(key: Array, options?: KVNamespaceGetOptions<"json">): Promise>; - list(options?: KVNamespaceListOptions): Promise>; - put(key: Key, value: string | ArrayBuffer | ArrayBufferView | ReadableStream, options?: KVNamespacePutOptions): Promise; - getWithMetadata(key: Key, options?: Partial>): Promise>; - getWithMetadata(key: Key, type: "text"): Promise>; - getWithMetadata(key: Key, type: "json"): Promise>; - getWithMetadata(key: Key, type: "arrayBuffer"): Promise>; - getWithMetadata(key: Key, type: "stream"): Promise>; - getWithMetadata(key: Key, options: KVNamespaceGetOptions<"text">): Promise>; - getWithMetadata(key: Key, options: KVNamespaceGetOptions<"json">): Promise>; - getWithMetadata(key: Key, options: KVNamespaceGetOptions<"arrayBuffer">): Promise>; - getWithMetadata(key: Key, options: KVNamespaceGetOptions<"stream">): Promise>; - getWithMetadata(key: Array, type: "text"): Promise>>; - getWithMetadata(key: Array, type: "json"): Promise>>; - getWithMetadata(key: Array, options?: Partial>): Promise>>; - getWithMetadata(key: Array, options?: KVNamespaceGetOptions<"text">): Promise>>; - getWithMetadata(key: Array, options?: KVNamespaceGetOptions<"json">): Promise>>; - delete(key: Key): Promise; -} -interface KVNamespaceListOptions { - limit?: number; - prefix?: (string | null); - cursor?: (string | null); -} -interface KVNamespaceGetOptions { - type: Type; - cacheTtl?: number; -} -interface KVNamespacePutOptions { - expiration?: number; - expirationTtl?: number; - metadata?: (any | null); -} -interface KVNamespaceGetWithMetadataResult { - value: Value | null; - metadata: Metadata | null; - cacheStatus: string | null; -} -type QueueContentType = "text" | "bytes" | "json" | "v8"; -interface Queue { - metrics(): Promise; - send(message: Body, options?: QueueSendOptions): Promise; - sendBatch(messages: Iterable>, options?: QueueSendBatchOptions): Promise; -} -interface QueueSendMetrics { - backlogCount: number; - backlogBytes: number; - oldestMessageTimestamp?: Date; -} -interface QueueSendMetadata { - metrics: QueueSendMetrics; -} -interface QueueSendResponse { - metadata: QueueSendMetadata; -} -interface QueueSendBatchMetrics { - backlogCount: number; - backlogBytes: number; - oldestMessageTimestamp?: Date; -} -interface QueueSendBatchMetadata { - metrics: QueueSendBatchMetrics; -} -interface QueueSendBatchResponse { - metadata: QueueSendBatchMetadata; -} -interface QueueSendOptions { - contentType?: QueueContentType; - delaySeconds?: number; -} -interface QueueSendBatchOptions { - delaySeconds?: number; -} -interface MessageSendRequest { - body: Body; - contentType?: QueueContentType; - delaySeconds?: number; -} -interface QueueMetrics { - backlogCount: number; - backlogBytes: number; - oldestMessageTimestamp?: Date; -} -interface MessageBatchMetrics { - backlogCount: number; - backlogBytes: number; - oldestMessageTimestamp?: Date; -} -interface MessageBatchMetadata { - metrics: MessageBatchMetrics; -} -interface QueueRetryOptions { - delaySeconds?: number; -} -interface Message { - readonly id: string; - readonly timestamp: Date; - readonly body: Body; - readonly attempts: number; - retry(options?: QueueRetryOptions): void; - ack(): void; -} -interface QueueEvent extends ExtendableEvent { - readonly messages: readonly Message[]; - readonly queue: string; - readonly metadata: MessageBatchMetadata; - retryAll(options?: QueueRetryOptions): void; - ackAll(): void; -} -interface MessageBatch { - readonly messages: readonly Message[]; - readonly queue: string; - readonly metadata: MessageBatchMetadata; - retryAll(options?: QueueRetryOptions): void; - ackAll(): void; -} -interface R2Error extends Error { - readonly name: string; - readonly code: number; - readonly message: string; - readonly action: string; - readonly stack: any; -} -interface R2ListOptions { - limit?: number; - prefix?: string; - cursor?: string; - delimiter?: string; - startAfter?: string; - include?: ("httpMetadata" | "customMetadata")[]; -} -interface R2Bucket { - head(key: string): Promise; - get(key: string, options: R2GetOptions & { - onlyIf: R2Conditional | Headers; - }): Promise; - get(key: string, options?: R2GetOptions): Promise; - put(key: string, value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, options?: R2PutOptions & { - onlyIf: R2Conditional | Headers; - }): Promise; - put(key: string, value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, options?: R2PutOptions): Promise; - createMultipartUpload(key: string, options?: R2MultipartOptions): Promise; - resumeMultipartUpload(key: string, uploadId: string): R2MultipartUpload; - delete(keys: string | string[]): Promise; - list(options?: R2ListOptions): Promise; -} -interface R2MultipartUpload { - readonly key: string; - readonly uploadId: string; - uploadPart(partNumber: number, value: ReadableStream | (ArrayBuffer | ArrayBufferView) | string | Blob, options?: R2UploadPartOptions): Promise; - abort(): Promise; - complete(uploadedParts: R2UploadedPart[]): Promise; -} -interface R2UploadedPart { - partNumber: number; - etag: string; -} -declare abstract class R2Object { - readonly key: string; - readonly version: string; - readonly size: number; - readonly etag: string; - readonly httpEtag: string; - readonly checksums: R2Checksums; - readonly uploaded: Date; - readonly httpMetadata?: R2HTTPMetadata; - readonly customMetadata?: Record; - readonly range?: R2Range; - readonly storageClass: string; - readonly ssecKeyMd5?: string; - writeHttpMetadata(headers: Headers): void; -} -interface R2ObjectBody extends R2Object { - get body(): ReadableStream; - get bodyUsed(): boolean; - arrayBuffer(): Promise; - bytes(): Promise; - text(): Promise; - json(): Promise; - blob(): Promise; -} -type R2Range = { - offset: number; - length?: number; -} | { - offset?: number; - length: number; -} | { - suffix: number; -}; -interface R2Conditional { - etagMatches?: string; - etagDoesNotMatch?: string; - uploadedBefore?: Date; - uploadedAfter?: Date; - secondsGranularity?: boolean; -} -interface R2GetOptions { - onlyIf?: (R2Conditional | Headers); - range?: (R2Range | Headers); - ssecKey?: (ArrayBuffer | string); -} -interface R2PutOptions { - onlyIf?: (R2Conditional | Headers); - httpMetadata?: (R2HTTPMetadata | Headers); - customMetadata?: Record; - md5?: ((ArrayBuffer | ArrayBufferView) | string); - sha1?: ((ArrayBuffer | ArrayBufferView) | string); - sha256?: ((ArrayBuffer | ArrayBufferView) | string); - sha384?: ((ArrayBuffer | ArrayBufferView) | string); - sha512?: ((ArrayBuffer | ArrayBufferView) | string); - storageClass?: string; - ssecKey?: (ArrayBuffer | string); -} -interface R2MultipartOptions { - httpMetadata?: (R2HTTPMetadata | Headers); - customMetadata?: Record; - storageClass?: string; - ssecKey?: (ArrayBuffer | string); -} -interface R2Checksums { - readonly md5?: ArrayBuffer; - readonly sha1?: ArrayBuffer; - readonly sha256?: ArrayBuffer; - readonly sha384?: ArrayBuffer; - readonly sha512?: ArrayBuffer; - toJSON(): R2StringChecksums; -} -interface R2StringChecksums { - md5?: string; - sha1?: string; - sha256?: string; - sha384?: string; - sha512?: string; -} -interface R2HTTPMetadata { - contentType?: string; - contentLanguage?: string; - contentDisposition?: string; - contentEncoding?: string; - cacheControl?: string; - cacheExpiry?: Date; -} -type R2Objects = { - objects: R2Object[]; - delimitedPrefixes: string[]; -} & ({ - truncated: true; - cursor: string; -} | { - truncated: false; -}); -interface R2UploadPartOptions { - ssecKey?: (ArrayBuffer | string); -} -declare abstract class ScheduledEvent extends ExtendableEvent { - readonly scheduledTime: number; - readonly cron: string; - noRetry(): void; -} -interface ScheduledController { - readonly scheduledTime: number; - readonly cron: string; - noRetry(): void; -} -interface QueuingStrategy { - highWaterMark?: (number | bigint); - size?: (chunk: T) => number | bigint; -} -interface UnderlyingSink { - type?: string; - start?: (controller: WritableStreamDefaultController) => void | Promise; - write?: (chunk: W, controller: WritableStreamDefaultController) => void | Promise; - abort?: (reason: any) => void | Promise; - close?: () => void | Promise; -} -interface UnderlyingByteSource { - type: "bytes"; - autoAllocateChunkSize?: number; - start?: (controller: ReadableByteStreamController) => void | Promise; - pull?: (controller: ReadableByteStreamController) => void | Promise; - cancel?: (reason: any) => void | Promise; -} -interface UnderlyingSource { - type?: "" | undefined; - start?: (controller: ReadableStreamDefaultController) => void | Promise; - pull?: (controller: ReadableStreamDefaultController) => void | Promise; - cancel?: (reason: any) => void | Promise; - expectedLength?: (number | bigint); -} -interface Transformer { - readableType?: string; - writableType?: string; - start?: (controller: TransformStreamDefaultController) => void | Promise; - transform?: (chunk: I, controller: TransformStreamDefaultController) => void | Promise; - flush?: (controller: TransformStreamDefaultController) => void | Promise; - cancel?: (reason: any) => void | Promise; - expectedLength?: number; -} -interface StreamPipeOptions { - preventAbort?: boolean; - preventCancel?: boolean; - /** - * Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered. - * - * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader. - * - * Errors and closures of the source and destination streams propagate as follows: - * - * An error in this source readable stream will abort destination, unless preventAbort is truthy. The returned promise will be rejected with the source's error, or with any error that occurs during aborting the destination. - * - * An error in destination will cancel this source readable stream, unless preventCancel is truthy. The returned promise will be rejected with the destination's error, or with any error that occurs during canceling the source. - * - * When this source readable stream closes, destination will be closed, unless preventClose is truthy. The returned promise will be fulfilled once this process completes, unless an error is encountered while closing the destination, in which case it will be rejected with that error. - * - * If destination starts out closed or closing, this source readable stream will be canceled, unless preventCancel is true. The returned promise will be rejected with an error indicating piping to a closed stream failed, or with any error that occurs during canceling the source. - * - * The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set. - */ - preventClose?: boolean; - signal?: AbortSignal; -} -type ReadableStreamReadResult = { - done: false; - value: R; -} | { - done: true; - value?: undefined; -}; -/** - * The `ReadableStream` interface of the Streams API represents a readable stream of byte data. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream) - */ -interface ReadableStream { - /** - * The **`locked`** read-only property of the ReadableStream interface returns whether or not the readable stream is locked to a reader. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/locked) - */ - get locked(): boolean; - /** - * The **`cancel()`** method of the ReadableStream interface returns a Promise that resolves when the stream is canceled. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/cancel) - */ - cancel(reason?: any): Promise; - /** - * The **`getReader()`** method of the ReadableStream interface creates a reader and locks the stream to it. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/getReader) - */ - getReader(): ReadableStreamDefaultReader; - /** - * The **`getReader()`** method of the ReadableStream interface creates a reader and locks the stream to it. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/getReader) - */ - getReader(options: ReadableStreamGetReaderOptions): ReadableStreamBYOBReader; - /** - * The **`pipeThrough()`** method of the ReadableStream interface provides a chainable way of piping the current stream through a transform stream or any other writable/readable pair. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeThrough) - */ - pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; - /** - * The **`pipeTo()`** method of the ReadableStream interface pipes the current `ReadableStream` to a given WritableStream and returns a Promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeTo) - */ - pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; - /** - * The **`tee()`** method of the two-element array containing the two resulting branches as new ReadableStream instances. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/tee) - */ - tee(): [ - ReadableStream, - ReadableStream - ]; - values(options?: ReadableStreamValuesOptions): AsyncIterableIterator; - [Symbol.asyncIterator](options?: ReadableStreamValuesOptions): AsyncIterableIterator; -} -/** - * The `ReadableStream` interface of the Streams API represents a readable stream of byte data. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream) - */ -declare const ReadableStream: { - prototype: ReadableStream; - new (underlyingSource: UnderlyingByteSource, strategy?: QueuingStrategy): ReadableStream; - new (underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; -}; -/** - * The **`ReadableStreamDefaultReader`** interface of the Streams API represents a default reader that can be used to read stream data supplied from a network (such as a fetch request). - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader) - */ -declare class ReadableStreamDefaultReader { - constructor(stream: ReadableStream); - get closed(): Promise; - cancel(reason?: any): Promise; - /** - * The **`read()`** method of the ReadableStreamDefaultReader interface returns a Promise providing access to the next chunk in the stream's internal queue. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/read) - */ - read(): Promise>; - /** - * The **`releaseLock()`** method of the ReadableStreamDefaultReader interface releases the reader's lock on the stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/releaseLock) - */ - releaseLock(): void; -} -/** - * The `ReadableStreamBYOBReader` interface of the Streams API defines a reader for a ReadableStream that supports zero-copy reading from an underlying byte source. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader) - */ -declare class ReadableStreamBYOBReader { - constructor(stream: ReadableStream); - get closed(): Promise; - cancel(reason?: any): Promise; - /** - * The **`read()`** method of the ReadableStreamBYOBReader interface is used to read data into a view on a user-supplied buffer from an associated readable byte stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read) - */ - read(view: T): Promise>; - /** - * The **`releaseLock()`** method of the ReadableStreamBYOBReader interface releases the reader's lock on the stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/releaseLock) - */ - releaseLock(): void; - readAtLeast(minElements: number, view: T): Promise>; -} -interface ReadableStreamBYOBReaderReadableStreamBYOBReaderReadOptions { - min?: number; -} -interface ReadableStreamGetReaderOptions { - /** - * Creates a ReadableStreamBYOBReader and locks the stream to the new reader. - * - * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation. - */ - mode: "byob"; -} -/** - * The **`ReadableStreamBYOBRequest`** interface of the Streams API represents a 'pull request' for data from an underlying source that will made as a zero-copy transfer to a consumer (bypassing the stream's internal queues). - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest) - */ -declare abstract class ReadableStreamBYOBRequest { - /** - * The **`view`** getter property of the ReadableStreamBYOBRequest interface returns the current view. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/view) - */ - get view(): Uint8Array | null; - /** - * The **`respond()`** method of the ReadableStreamBYOBRequest interface is used to signal to the associated readable byte stream that the specified number of bytes were written into the ReadableStreamBYOBRequest.view. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respond) - */ - respond(bytesWritten: number): void; - /** - * The **`respondWithNewView()`** method of the ReadableStreamBYOBRequest interface specifies a new view that the consumer of the associated readable byte stream should write to instead of ReadableStreamBYOBRequest.view. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respondWithNewView) - */ - respondWithNewView(view: ArrayBuffer | ArrayBufferView): void; - get atLeast(): number | null; -} -/** - * The **`ReadableStreamDefaultController`** interface of the Streams API represents a controller allowing control of a ReadableStream's state and internal queue. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController) - */ -declare abstract class ReadableStreamDefaultController { - /** - * The **`desiredSize`** read-only property of the required to fill the stream's internal queue. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/desiredSize) - */ - get desiredSize(): number | null; - /** - * The **`close()`** method of the ReadableStreamDefaultController interface closes the associated stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/close) - */ - close(): void; - /** - * The **`enqueue()`** method of the ```js-nolint enqueue(chunk) ``` - `chunk` - : The chunk to enqueue. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/enqueue) - */ - enqueue(chunk?: R): void; - /** - * The **`error()`** method of the with the associated stream to error. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/error) - */ - error(reason: any): void; -} -/** - * The **`ReadableByteStreamController`** interface of the Streams API represents a controller for a readable byte stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController) - */ -declare abstract class ReadableByteStreamController { - /** - * The **`byobRequest`** read-only property of the ReadableByteStreamController interface returns the current BYOB request, or `null` if there are no pending requests. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/byobRequest) - */ - get byobRequest(): ReadableStreamBYOBRequest | null; - /** - * The **`desiredSize`** read-only property of the ReadableByteStreamController interface returns the number of bytes required to fill the stream's internal queue to its 'desired size'. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/desiredSize) - */ - get desiredSize(): number | null; - /** - * The **`close()`** method of the ReadableByteStreamController interface closes the associated stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/close) - */ - close(): void; - /** - * The **`enqueue()`** method of the ReadableByteStreamController interface enqueues a given chunk on the associated readable byte stream (the chunk is copied into the stream's internal queues). - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/enqueue) - */ - enqueue(chunk: ArrayBuffer | ArrayBufferView): void; - /** - * The **`error()`** method of the ReadableByteStreamController interface causes any future interactions with the associated stream to error with the specified reason. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/error) - */ - error(reason: any): void; -} -/** - * The **`WritableStreamDefaultController`** interface of the Streams API represents a controller allowing control of a WritableStream's state. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController) - */ -declare abstract class WritableStreamDefaultController { - /** - * The read-only **`signal`** property of the WritableStreamDefaultController interface returns the AbortSignal associated with the controller. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/signal) - */ - get signal(): AbortSignal; - /** - * The **`error()`** method of the with the associated stream to error. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/error) - */ - error(reason?: any): void; -} -/** - * The **`TransformStreamDefaultController`** interface of the Streams API provides methods to manipulate the associated ReadableStream and WritableStream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController) - */ -declare abstract class TransformStreamDefaultController { - /** - * The **`desiredSize`** read-only property of the TransformStreamDefaultController interface returns the desired size to fill the queue of the associated ReadableStream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/desiredSize) - */ - get desiredSize(): number | null; - /** - * The **`enqueue()`** method of the TransformStreamDefaultController interface enqueues the given chunk in the readable side of the stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/enqueue) - */ - enqueue(chunk?: O): void; - /** - * The **`error()`** method of the TransformStreamDefaultController interface errors both sides of the stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/error) - */ - error(reason: any): void; - /** - * The **`terminate()`** method of the TransformStreamDefaultController interface closes the readable side and errors the writable side of the stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/terminate) - */ - terminate(): void; -} -interface ReadableWritablePair { - readable: ReadableStream; - /** - * Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use. - * - * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader. - */ - writable: WritableStream; -} -/** - * The **`WritableStream`** interface of the Streams API provides a standard abstraction for writing streaming data to a destination, known as a sink. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream) - */ -declare class WritableStream { - constructor(underlyingSink?: UnderlyingSink, queuingStrategy?: QueuingStrategy); - /** - * The **`locked`** read-only property of the WritableStream interface returns a boolean indicating whether the `WritableStream` is locked to a writer. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/locked) - */ - get locked(): boolean; - /** - * The **`abort()`** method of the WritableStream interface aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be immediately moved to an error state, with any queued writes discarded. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/abort) - */ - abort(reason?: any): Promise; - /** - * The **`close()`** method of the WritableStream interface closes the associated stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/close) - */ - close(): Promise; - /** - * The **`getWriter()`** method of the WritableStream interface returns a new instance of WritableStreamDefaultWriter and locks the stream to that instance. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/getWriter) - */ - getWriter(): WritableStreamDefaultWriter; -} -/** - * The **`WritableStreamDefaultWriter`** interface of the Streams API is the object returned by WritableStream.getWriter() and once created locks the writer to the `WritableStream` ensuring that no other streams can write to the underlying sink. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter) - */ -declare class WritableStreamDefaultWriter { - constructor(stream: WritableStream); - /** - * The **`closed`** read-only property of the the stream errors or the writer's lock is released. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/closed) - */ - get closed(): Promise; - /** - * The **`ready`** read-only property of the that resolves when the desired size of the stream's internal queue transitions from non-positive to positive, signaling that it is no longer applying backpressure. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/ready) - */ - get ready(): Promise; - /** - * The **`desiredSize`** read-only property of the to fill the stream's internal queue. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/desiredSize) - */ - get desiredSize(): number | null; - /** - * The **`abort()`** method of the the producer can no longer successfully write to the stream and it is to be immediately moved to an error state, with any queued writes discarded. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/abort) - */ - abort(reason?: any): Promise; - /** - * The **`close()`** method of the stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/close) - */ - close(): Promise; - /** - * The **`write()`** method of the operation. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/write) - */ - write(chunk?: W): Promise; - /** - * The **`releaseLock()`** method of the corresponding stream. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/releaseLock) - */ - releaseLock(): void; -} -/** - * The **`TransformStream`** interface of the Streams API represents a concrete implementation of the pipe chain _transform stream_ concept. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream) - */ -declare class TransformStream { - constructor(transformer?: Transformer, writableStrategy?: QueuingStrategy, readableStrategy?: QueuingStrategy); - /** - * The **`readable`** read-only property of the TransformStream interface returns the ReadableStream instance controlled by this `TransformStream`. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream/readable) - */ - get readable(): ReadableStream; - /** - * The **`writable`** read-only property of the TransformStream interface returns the WritableStream instance controlled by this `TransformStream`. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream/writable) - */ - get writable(): WritableStream; -} -declare class FixedLengthStream extends IdentityTransformStream { - constructor(expectedLength: number | bigint, queuingStrategy?: IdentityTransformStreamQueuingStrategy); -} -declare class IdentityTransformStream extends TransformStream { - constructor(queuingStrategy?: IdentityTransformStreamQueuingStrategy); -} -interface IdentityTransformStreamQueuingStrategy { - highWaterMark?: (number | bigint); -} -interface ReadableStreamValuesOptions { - preventCancel?: boolean; -} -/** - * The **`CompressionStream`** interface of the Compression Streams API is an API for compressing a stream of data. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CompressionStream) - */ -declare class CompressionStream extends TransformStream { - constructor(format: "gzip" | "deflate" | "deflate-raw"); -} -/** - * The **`DecompressionStream`** interface of the Compression Streams API is an API for decompressing a stream of data. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DecompressionStream) - */ -declare class DecompressionStream extends TransformStream { - constructor(format: "gzip" | "deflate" | "deflate-raw"); -} -/** - * The **`TextEncoderStream`** interface of the Encoding API converts a stream of strings into bytes in the UTF-8 encoding. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoderStream) - */ -declare class TextEncoderStream extends TransformStream { - constructor(); - get encoding(): string; -} -/** - * The **`TextDecoderStream`** interface of the Encoding API converts a stream of text in a binary encoding, such as UTF-8 etc., to a stream of strings. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoderStream) - */ -declare class TextDecoderStream extends TransformStream { - constructor(label?: string, options?: TextDecoderStreamTextDecoderStreamInit); - get encoding(): string; - get fatal(): boolean; - get ignoreBOM(): boolean; -} -interface TextDecoderStreamTextDecoderStreamInit { - fatal?: boolean; - ignoreBOM?: boolean; -} -/** - * The **`ByteLengthQueuingStrategy`** interface of the Streams API provides a built-in byte length queuing strategy that can be used when constructing streams. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy) - */ -declare class ByteLengthQueuingStrategy implements QueuingStrategy { - constructor(init: QueuingStrategyInit); - /** - * The read-only **`ByteLengthQueuingStrategy.highWaterMark`** property returns the total number of bytes that can be contained in the internal queue before backpressure is applied. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/highWaterMark) - */ - get highWaterMark(): number; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/size) */ - get size(): (chunk?: any) => number; -} -/** - * The **`CountQueuingStrategy`** interface of the Streams API provides a built-in chunk counting queuing strategy that can be used when constructing streams. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy) - */ -declare class CountQueuingStrategy implements QueuingStrategy { - constructor(init: QueuingStrategyInit); - /** - * The read-only **`CountQueuingStrategy.highWaterMark`** property returns the total number of chunks that can be contained in the internal queue before backpressure is applied. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/highWaterMark) - */ - get highWaterMark(): number; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/size) */ - get size(): (chunk?: any) => number; -} -interface QueuingStrategyInit { - /** - * Creates a new ByteLengthQueuingStrategy with the provided high water mark. - * - * Note that the provided high water mark will not be validated ahead of time. Instead, if it is negative, NaN, or not a number, the resulting ByteLengthQueuingStrategy will cause the corresponding stream constructor to throw. - */ - highWaterMark: number; -} -interface TracePreviewInfo { - id: string; - slug: string; - name: string; -} -interface ScriptVersion { - id?: string; - tag?: string; - message?: string; -} -declare abstract class TailEvent extends ExtendableEvent { - readonly events: TraceItem[]; - readonly traces: TraceItem[]; -} -interface TraceItem { - readonly event: (TraceItemFetchEventInfo | TraceItemJsRpcEventInfo | TraceItemConnectEventInfo | TraceItemScheduledEventInfo | TraceItemAlarmEventInfo | TraceItemQueueEventInfo | TraceItemEmailEventInfo | TraceItemTailEventInfo | TraceItemCustomEventInfo | TraceItemHibernatableWebSocketEventInfo) | null; - readonly eventTimestamp: number | null; - readonly logs: TraceLog[]; - readonly exceptions: TraceException[]; - readonly diagnosticsChannelEvents: TraceDiagnosticChannelEvent[]; - readonly scriptName: string | null; - readonly entrypoint?: string; - readonly scriptVersion?: ScriptVersion; - readonly dispatchNamespace?: string; - readonly scriptTags?: string[]; - readonly tailAttributes?: Record; - readonly preview?: TracePreviewInfo; - readonly durableObjectId?: string; - readonly outcome: string; - readonly executionModel: string; - readonly truncated: boolean; - readonly cpuTime: number; - readonly wallTime: number; -} -interface TraceItemAlarmEventInfo { - readonly scheduledTime: Date; -} -interface TraceItemConnectEventInfo { -} -interface TraceItemCustomEventInfo { -} -interface TraceItemScheduledEventInfo { - readonly scheduledTime: number; - readonly cron: string; -} -interface TraceItemQueueEventInfo { - readonly queue: string; - readonly batchSize: number; -} -interface TraceItemEmailEventInfo { - readonly mailFrom: string; - readonly rcptTo: string; - readonly rawSize: number; -} -interface TraceItemTailEventInfo { - readonly consumedEvents: TraceItemTailEventInfoTailItem[]; -} -interface TraceItemTailEventInfoTailItem { - readonly scriptName: string | null; -} -interface TraceItemFetchEventInfo { - readonly response?: TraceItemFetchEventInfoResponse; - readonly request: TraceItemFetchEventInfoRequest; -} -interface TraceItemFetchEventInfoRequest { - readonly cf?: any; - readonly headers: Record; - readonly method: string; - readonly url: string; - getUnredacted(): TraceItemFetchEventInfoRequest; -} -interface TraceItemFetchEventInfoResponse { - readonly status: number; -} -interface TraceItemJsRpcEventInfo { - readonly rpcMethod: string; -} -interface TraceItemHibernatableWebSocketEventInfo { - readonly getWebSocketEvent: TraceItemHibernatableWebSocketEventInfoMessage | TraceItemHibernatableWebSocketEventInfoClose | TraceItemHibernatableWebSocketEventInfoError; -} -interface TraceItemHibernatableWebSocketEventInfoMessage { - readonly webSocketEventType: string; -} -interface TraceItemHibernatableWebSocketEventInfoClose { - readonly webSocketEventType: string; - readonly code: number; - readonly wasClean: boolean; -} -interface TraceItemHibernatableWebSocketEventInfoError { - readonly webSocketEventType: string; -} -interface TraceLog { - readonly timestamp: number; - readonly level: string; - readonly message: any; -} -interface TraceException { - readonly timestamp: number; - readonly message: string; - readonly name: string; - readonly stack?: string; -} -interface TraceDiagnosticChannelEvent { - readonly timestamp: number; - readonly channel: string; - readonly message: any; -} -interface TraceMetrics { - readonly cpuTime: number; - readonly wallTime: number; -} -interface UnsafeTraceMetrics { - fromTrace(item: TraceItem): TraceMetrics; -} -/** - * The **`URL`** interface is used to parse, construct, normalize, and encode URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL) - */ -declare class URL { - constructor(url: string | URL, base?: string | URL); - /** - * The **`origin`** read-only property of the URL interface returns a string containing the Unicode serialization of the origin of the represented URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/origin) - */ - get origin(): string; - /** - * The **`href`** property of the URL interface is a string containing the whole URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/href) - */ - get href(): string; - /** - * The **`href`** property of the URL interface is a string containing the whole URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/href) - */ - set href(value: string); - /** - * The **`protocol`** property of the URL interface is a string containing the protocol or scheme of the URL, including the final `':'`. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/protocol) - */ - get protocol(): string; - /** - * The **`protocol`** property of the URL interface is a string containing the protocol or scheme of the URL, including the final `':'`. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/protocol) - */ - set protocol(value: string); - /** - * The **`username`** property of the URL interface is a string containing the username component of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/username) - */ - get username(): string; - /** - * The **`username`** property of the URL interface is a string containing the username component of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/username) - */ - set username(value: string); - /** - * The **`password`** property of the URL interface is a string containing the password component of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/password) - */ - get password(): string; - /** - * The **`password`** property of the URL interface is a string containing the password component of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/password) - */ - set password(value: string); - /** - * The **`host`** property of the URL interface is a string containing the host, which is the URL.hostname, and then, if the port of the URL is nonempty, a `':'`, followed by the URL.port of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/host) - */ - get host(): string; - /** - * The **`host`** property of the URL interface is a string containing the host, which is the URL.hostname, and then, if the port of the URL is nonempty, a `':'`, followed by the URL.port of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/host) - */ - set host(value: string); - /** - * The **`hostname`** property of the URL interface is a string containing either the domain name or IP address of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hostname) - */ - get hostname(): string; - /** - * The **`hostname`** property of the URL interface is a string containing either the domain name or IP address of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hostname) - */ - set hostname(value: string); - /** - * The **`port`** property of the URL interface is a string containing the port number of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/port) - */ - get port(): string; - /** - * The **`port`** property of the URL interface is a string containing the port number of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/port) - */ - set port(value: string); - /** - * The **`pathname`** property of the URL interface represents a location in a hierarchical structure. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/pathname) - */ - get pathname(): string; - /** - * The **`pathname`** property of the URL interface represents a location in a hierarchical structure. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/pathname) - */ - set pathname(value: string); - /** - * The **`search`** property of the URL interface is a search string, also called a _query string_, that is a string containing a `'?'` followed by the parameters of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/search) - */ - get search(): string; - /** - * The **`search`** property of the URL interface is a search string, also called a _query string_, that is a string containing a `'?'` followed by the parameters of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/search) - */ - set search(value: string); - /** - * The **`hash`** property of the URL interface is a string containing a `'#'` followed by the fragment identifier of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hash) - */ - get hash(): string; - /** - * The **`hash`** property of the URL interface is a string containing a `'#'` followed by the fragment identifier of the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hash) - */ - set hash(value: string); - /** - * The **`searchParams`** read-only property of the access to the [MISSING: httpmethod('GET')] decoded query arguments contained in the URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/searchParams) - */ - get searchParams(): URLSearchParams; - /** - * The **`toJSON()`** method of the URL interface returns a string containing a serialized version of the URL, although in practice it seems to have the same effect as ```js-nolint toJSON() ``` None. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/toJSON) - */ - toJSON(): string; - /*function toString() { [native code] }*/ - toString(): string; - /** - * The **`URL.canParse()`** static method of the URL interface returns a boolean indicating whether or not an absolute URL, or a relative URL combined with a base URL, are parsable and valid. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/canParse_static) - */ - static canParse(url: string, base?: string): boolean; - /** - * The **`URL.parse()`** static method of the URL interface returns a newly created URL object representing the URL defined by the parameters. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/parse_static) - */ - static parse(url: string, base?: string): URL | null; - /** - * The **`createObjectURL()`** static method of the URL interface creates a string containing a URL representing the object given in the parameter. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/createObjectURL_static) - */ - static createObjectURL(object: File | Blob): string; - /** - * The **`revokeObjectURL()`** static method of the URL interface releases an existing object URL which was previously created by calling Call this method when you've finished using an object URL to let the browser know not to keep the reference to the file any longer. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/revokeObjectURL_static) - */ - static revokeObjectURL(object_url: string): void; -} -/** - * The **`URLSearchParams`** interface defines utility methods to work with the query string of a URL. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams) - */ -declare class URLSearchParams { - constructor(init?: (Iterable> | Record | string)); - /** - * The **`size`** read-only property of the URLSearchParams interface indicates the total number of search parameter entries. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/size) - */ - get size(): number; - /** - * The **`append()`** method of the URLSearchParams interface appends a specified key/value pair as a new search parameter. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/append) - */ - append(name: string, value: string): void; - /** - * The **`delete()`** method of the URLSearchParams interface deletes specified parameters and their associated value(s) from the list of all search parameters. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/delete) - */ - delete(name: string, value?: string): void; - /** - * The **`get()`** method of the URLSearchParams interface returns the first value associated to the given search parameter. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/get) - */ - get(name: string): string | null; - /** - * The **`getAll()`** method of the URLSearchParams interface returns all the values associated with a given search parameter as an array. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/getAll) - */ - getAll(name: string): string[]; - /** - * The **`has()`** method of the URLSearchParams interface returns a boolean value that indicates whether the specified parameter is in the search parameters. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/has) - */ - has(name: string, value?: string): boolean; - /** - * The **`set()`** method of the URLSearchParams interface sets the value associated with a given search parameter to the given value. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/set) - */ - set(name: string, value: string): void; - /** - * The **`URLSearchParams.sort()`** method sorts all key/value pairs contained in this object in place and returns `undefined`. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/sort) - */ - sort(): void; - /* Returns an array of key, value pairs for every entry in the search params. */ - entries(): IterableIterator<[ - key: string, - value: string - ]>; - /* Returns a list of keys in the search params. */ - keys(): IterableIterator; - /* Returns a list of values in the search params. */ - values(): IterableIterator; - forEach(callback: (this: This, value: string, key: string, parent: URLSearchParams) => void, thisArg?: This): void; - /*function toString() { [native code] }*/ - toString(): string; - [Symbol.iterator](): IterableIterator<[ - key: string, - value: string - ]>; -} -declare class URLPattern { - constructor(input?: (string | URLPatternInit), baseURL?: (string | URLPatternOptions), patternOptions?: URLPatternOptions); - get protocol(): string; - get username(): string; - get password(): string; - get hostname(): string; - get port(): string; - get pathname(): string; - get search(): string; - get hash(): string; - get hasRegExpGroups(): boolean; - test(input?: (string | URLPatternInit), baseURL?: string): boolean; - exec(input?: (string | URLPatternInit), baseURL?: string): URLPatternResult | null; -} -interface URLPatternInit { - protocol?: string; - username?: string; - password?: string; - hostname?: string; - port?: string; - pathname?: string; - search?: string; - hash?: string; - baseURL?: string; -} -interface URLPatternComponentResult { - input: string; - groups: Record; -} -interface URLPatternResult { - inputs: (string | URLPatternInit)[]; - protocol: URLPatternComponentResult; - username: URLPatternComponentResult; - password: URLPatternComponentResult; - hostname: URLPatternComponentResult; - port: URLPatternComponentResult; - pathname: URLPatternComponentResult; - search: URLPatternComponentResult; - hash: URLPatternComponentResult; -} -interface URLPatternOptions { - ignoreCase?: boolean; -} -/** - * A `CloseEvent` is sent to clients using WebSockets when the connection is closed. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent) - */ -declare class CloseEvent extends Event { - constructor(type: string, initializer?: CloseEventInit); - /** - * The **`code`** read-only property of the CloseEvent interface returns a WebSocket connection close code indicating the reason the connection was closed. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/code) - */ - readonly code: number; - /** - * The **`reason`** read-only property of the CloseEvent interface returns the WebSocket connection close reason the server gave for closing the connection; that is, a concise human-readable prose explanation for the closure. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/reason) - */ - readonly reason: string; - /** - * The **`wasClean`** read-only property of the CloseEvent interface returns `true` if the connection closed cleanly. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/wasClean) - */ - readonly wasClean: boolean; -} -interface CloseEventInit { - code?: number; - reason?: string; - wasClean?: boolean; -} -type WebSocketEventMap = { - close: CloseEvent; - message: MessageEvent; - open: Event; - error: ErrorEvent; -}; -/** - * The `WebSocket` object provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket) - */ -declare var WebSocket: { - prototype: WebSocket; - new (url: string, protocols?: (string[] | string)): WebSocket; - readonly READY_STATE_CONNECTING: number; - readonly CONNECTING: number; - readonly READY_STATE_OPEN: number; - readonly OPEN: number; - readonly READY_STATE_CLOSING: number; - readonly CLOSING: number; - readonly READY_STATE_CLOSED: number; - readonly CLOSED: number; -}; -/** - * The `WebSocket` object provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket) - */ -interface WebSocket extends EventTarget { - accept(options?: WebSocketAcceptOptions): void; - /** - * The **`WebSocket.send()`** method enqueues the specified data to be transmitted to the server over the WebSocket connection, increasing the value of `bufferedAmount` by the number of bytes needed to contain the data. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/send) - */ - send(message: (ArrayBuffer | ArrayBufferView) | string): void; - /** - * The **`WebSocket.close()`** method closes the already `CLOSED`, this method does nothing. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/close) - */ - close(code?: number, reason?: string): void; - serializeAttachment(attachment: any): void; - deserializeAttachment(): any | null; - /** - * The **`WebSocket.readyState`** read-only property returns the current state of the WebSocket connection. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/readyState) - */ - readyState: number; - /** - * The **`WebSocket.url`** read-only property returns the absolute URL of the WebSocket as resolved by the constructor. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/url) - */ - url: string | null; - /** - * The **`WebSocket.protocol`** read-only property returns the name of the sub-protocol the server selected; this will be one of the strings specified in the `protocols` parameter when creating the WebSocket object, or the empty string if no connection is established. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/protocol) - */ - protocol: string | null; - /** - * The **`WebSocket.extensions`** read-only property returns the extensions selected by the server. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/extensions) - */ - extensions: string | null; - /** - * The **`WebSocket.binaryType`** property controls the type of binary data being received over the WebSocket connection. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/binaryType) - */ - binaryType: "blob" | "arraybuffer"; -} -interface WebSocketAcceptOptions { - /** - * When set to `true`, receiving a server-initiated WebSocket Close frame will not - * automatically send a reciprocal Close frame, leaving the connection in a half-open - * state. This is useful for proxying scenarios where you need to coordinate closing - * both sides independently. Defaults to `false` when the - * `no_web_socket_half_open_by_default` compatibility flag is enabled. - */ - allowHalfOpen?: boolean; -} -declare const WebSocketPair: { - new (): { - 0: WebSocket; - 1: WebSocket; - }; -}; -interface SqlStorage { - exec>(query: string, ...bindings: any[]): SqlStorageCursor; - get databaseSize(): number; - Cursor: typeof SqlStorageCursor; - Statement: typeof SqlStorageStatement; -} -declare abstract class SqlStorageStatement { -} -type SqlStorageValue = ArrayBuffer | string | number | null; -declare abstract class SqlStorageCursor> { - next(): { - done?: false; - value: T; - } | { - done: true; - value?: never; - }; - toArray(): T[]; - one(): T; - raw(): IterableIterator; - columnNames: string[]; - get rowsRead(): number; - get rowsWritten(): number; - [Symbol.iterator](): IterableIterator; -} -interface Socket { - get readable(): ReadableStream; - get writable(): WritableStream; - get closed(): Promise; - get opened(): Promise; - get upgraded(): boolean; - get secureTransport(): "on" | "off" | "starttls"; - close(): Promise; - startTls(options?: TlsOptions): Socket; -} -interface SocketOptions { - secureTransport?: string; - allowHalfOpen: boolean; - highWaterMark?: (number | bigint); -} -interface SocketAddress { - hostname: string; - port: number; -} -interface TlsOptions { - expectedServerHostname?: string; -} -interface SocketInfo { - remoteAddress?: string; - localAddress?: string; -} -/** - * The **`EventSource`** interface is web content's interface to server-sent events. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource) - */ -declare class EventSource extends EventTarget { - constructor(url: string, init?: EventSourceEventSourceInit); - /** - * The **`close()`** method of the EventSource interface closes the connection, if one is made, and sets the ```js-nolint close() ``` None. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close) - */ - close(): void; - /** - * The **`url`** read-only property of the URL of the source. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url) - */ - get url(): string; - /** - * The **`withCredentials`** read-only property of the the `EventSource` object was instantiated with CORS credentials set. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials) - */ - get withCredentials(): boolean; - /** - * The **`readyState`** read-only property of the connection. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState) - */ - get readyState(): number; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ - get onopen(): any | null; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ - set onopen(value: any | null); - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ - get onmessage(): any | null; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ - set onmessage(value: any | null); - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ - get onerror(): any | null; - /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ - set onerror(value: any | null); - static readonly CONNECTING: number; - static readonly OPEN: number; - static readonly CLOSED: number; - static from(stream: ReadableStream): EventSource; -} -interface EventSourceEventSourceInit { - withCredentials?: boolean; - fetcher?: Fetcher; -} -interface ExecOutput { - readonly stdout: ArrayBuffer; - readonly stderr: ArrayBuffer; - readonly exitCode: number; -} -interface ContainerExecOptions { - cwd?: string; - env?: Record; - user?: string; - stdin?: ReadableStream | "pipe"; - stdout?: "pipe" | "ignore"; - stderr?: "pipe" | "ignore" | "combined"; -} -interface ExecProcess { - readonly stdin: WritableStream | null; - readonly stdout: ReadableStream | null; - readonly stderr: ReadableStream | null; - readonly pid: number; - readonly exitCode: Promise; - output(): Promise; - kill(signal?: number): void; -} -interface Container { - get running(): boolean; - start(options?: ContainerStartupOptions): void; - monitor(): Promise; - destroy(error?: any): Promise; - signal(signo: number): void; - getTcpPort(port: number): Fetcher; - setInactivityTimeout(durationMs: number | bigint): Promise; - interceptOutboundHttp(addr: string, binding: Fetcher): Promise; - interceptAllOutboundHttp(binding: Fetcher): Promise; - snapshotDirectory(options: ContainerDirectorySnapshotOptions): Promise; - snapshotContainer(options: ContainerSnapshotOptions): Promise; - interceptOutboundHttps(addr: string, binding: Fetcher): Promise; - exec(cmd: string[], options?: ContainerExecOptions): Promise; -} -interface ContainerDirectorySnapshot { - id: string; - size: number; - dir: string; - name?: string; -} -interface ContainerDirectorySnapshotOptions { - dir: string; - name?: string; -} -interface ContainerDirectorySnapshotRestoreParams { - snapshot: ContainerDirectorySnapshot; - mountPoint?: string; -} -interface ContainerSnapshot { - id: string; - size: number; - name?: string; -} -interface ContainerSnapshotOptions { - name?: string; -} -interface ContainerStartupOptions { - entrypoint?: string[]; - enableInternet: boolean; - env?: Record; - labels?: Record; - directorySnapshots?: ContainerDirectorySnapshotRestoreParams[]; - containerSnapshot?: ContainerSnapshot; -} -/** - * The **`MessagePort`** interface of the Channel Messaging API represents one of the two ports of a MessageChannel, allowing messages to be sent from one port and listening out for them arriving at the other. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) - */ -declare abstract class MessagePort extends EventTarget { - /** - * The **`postMessage()`** method of the transfers ownership of objects to other browsing contexts. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort/postMessage) - */ - postMessage(data?: any, options?: (any[] | MessagePortPostMessageOptions)): void; - /** - * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort/close) - */ - close(): void; - /** - * The **`start()`** method of the MessagePort interface starts the sending of messages queued on the port. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort/start) - */ - start(): void; - get onmessage(): any | null; - set onmessage(value: any | null); -} -/** - * The **`MessageChannel`** interface of the Channel Messaging API allows us to create a new message channel and send data through it via its two MessagePort properties. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageChannel) - */ -declare class MessageChannel { - constructor(); - /** - * The **`port1`** read-only property of the the port attached to the context that originated the channel. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageChannel/port1) - */ - readonly port1: MessagePort; - /** - * The **`port2`** read-only property of the the port attached to the context at the other end of the channel, which the message is initially sent to. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageChannel/port2) - */ - readonly port2: MessagePort; -} -interface MessagePortPostMessageOptions { - transfer?: any[]; -} -type LoopbackForExport Rpc.EntrypointBranded) | ExportedHandler | undefined = undefined> = T extends new (...args: any[]) => Rpc.WorkerEntrypointBranded ? LoopbackServiceStub> : T extends new (...args: any[]) => Rpc.DurableObjectBranded ? LoopbackDurableObjectClass> : T extends ExportedHandler ? LoopbackServiceStub : undefined; -type LoopbackServiceStub = Fetcher & (T extends CloudflareWorkersModule.WorkerEntrypoint ? (opts: { - props?: Props; -}) => Fetcher : (opts: { - props?: any; -}) => Fetcher); -type LoopbackDurableObjectClass = DurableObjectClass & (T extends CloudflareWorkersModule.DurableObject ? (opts: { - props?: Props; -}) => DurableObjectClass : (opts: { - props?: any; -}) => DurableObjectClass); -interface LoopbackDurableObjectNamespace extends DurableObjectNamespace { -} -interface LoopbackColoLocalActorNamespace extends ColoLocalActorNamespace { -} -interface SyncKvStorage { - get(key: string): T | undefined; - list(options?: SyncKvListOptions): Iterable<[ - string, - T - ]>; - put(key: string, value: T): void; - delete(key: string): boolean; -} -interface SyncKvListOptions { - start?: string; - startAfter?: string; - end?: string; - prefix?: string; - reverse?: boolean; - limit?: number; -} -interface WorkerStub { - getEntrypoint(name?: string, options?: WorkerStubEntrypointOptions): Fetcher; - getDurableObjectClass(name?: string, options?: WorkerStubEntrypointOptions): DurableObjectClass; -} -interface WorkerStubEntrypointOptions { - props?: any; - limits?: workerdResourceLimits; -} -interface WorkerLoader { - get(name: string | null, getCode: () => WorkerLoaderWorkerCode | Promise): WorkerStub; - load(code: WorkerLoaderWorkerCode): WorkerStub; -} -interface WorkerLoaderModule { - js?: string; - cjs?: string; - text?: string; - data?: ArrayBuffer; - json?: any; - py?: string; - wasm?: ArrayBuffer; -} -interface WorkerLoaderWorkerCode { - compatibilityDate: string; - compatibilityFlags?: string[]; - allowExperimental?: boolean; - limits?: workerdResourceLimits; - mainModule: string; - modules: Record; - env?: any; - globalOutbound?: (Fetcher | null); - tails?: Fetcher[]; - streamingTails?: Fetcher[]; -} -interface workerdResourceLimits { - cpuMs?: number; - subRequests?: number; -} -/** -* The Workers runtime supports a subset of the Performance API, used to measure timing and performance, -* as well as timing of subrequests and other operations. -* -* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/) -*/ -declare abstract class Performance { - /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/#performancetimeorigin) */ - get timeOrigin(): number; - /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/#performancenow) */ - now(): number; - /** - * The **`toJSON()`** method of the Performance interface is a Serialization; it returns a JSON representation of the Performance object. - * - * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Performance/toJSON) - */ - toJSON(): object; -} -interface Tracing { - enterSpan(name: string, callback: (span: Span, ...args: A) => T, ...args: A): T; - startActiveSpan(name: string, callback: (span: Span, ...args: A) => T, ...args: A): T; - Span: typeof Span; -} -declare abstract class Span { - get isTraced(): boolean; - setAttribute(key: string, value?: (boolean | number | string)): void; - end(): void; -} -/** - * Represents the identity of a user authenticated via Cloudflare Access. - * This matches the result of calling /cdn-cgi/access/get-identity. - * - * The exact structure of the returned object depends on the identity provider - * configuration for the Access application. The fields below represent commonly - * available properties, but additional provider-specific fields may be present. - */ -interface CloudflareAccessIdentity extends Record { - /** The user's email address, if available from the identity provider. */ - email?: string; - /** The user's display name. */ - name?: string; - /** The user's unique identifier. */ - user_uuid?: string; - /** The Cloudflare account ID. */ - account_id?: string; - /** Login timestamp (Unix epoch seconds). */ - iat?: number; - /** The user's IP address at authentication time. */ - ip?: string; - /** Authentication methods used (e.g., "pwd"). */ - amr?: string[]; - /** Identity provider information. */ - idp?: { - id: string; - type: string; - }; - /** Geographic information about where the user authenticated. */ - geo?: { - country: string; - }; - /** Group memberships from the identity provider. */ - groups?: Array<{ - id: string; - name: string; - email?: string; - }>; - /** Device posture check results, keyed by check ID. */ - devicePosture?: Record; - /** True if the user connected via Cloudflare WARP. */ - is_warp?: boolean; - /** True if the user is authenticated via Cloudflare Gateway. */ - is_gateway?: boolean; -} -// ============================================================================ -// Agent Memory -// -// Public type surface for user Workers binding to an Agent Memory namespace. -// ============================================================================ -/** Memory type — every memory is classified into exactly one. */ -type AgentMemoryMemoryType = "fact" | "event" | "instruction" | "task"; -/** Search intensity for recall. */ -type AgentMemoryThinkingLevel = "low" | "medium" | "high"; -/** Response verbosity for recall. */ -type AgentMemoryResponseLength = "short" | "medium" | "long"; -/** A conversation message passed to ingest(). */ -interface AgentMemoryMessage { - role: "system" | "user" | "assistant"; - content: string; - /** Optional message timestamp. */ - timestamp?: Date; -} -/** Raw memory content passed to remember(). */ -interface AgentMemoryIncomingMemory { - /** Raw memory content. The service classifies and summarizes automatically. */ - content: string; - /** Optional session identifier to associate with this memory. */ - sessionId?: string | null | undefined; -} -/** A stored memory returned from remember(), get(), and delete(). */ -interface AgentMemoryMemory { - /** Memory ID. */ - id: string; - /** Memory type. */ - type: AgentMemoryMemoryType; - /** Text summary. */ - summary: string; - /** Memory text. */ - content: string; - /** Session that created this memory. */ - sessionId: string | null; - /** Memory creation time. */ - createdAt: Date; - /** Memory last-update time. */ - updatedAt: Date; -} -/** Single entry in a list() response. Same shape as Memory minus full content. */ -type AgentMemoryMemoryListEntry = Omit; -/** A scored memory candidate in a recall result. */ -interface AgentMemoryScoredCandidate { - /** Candidate ID. */ - id: string; - /** Text summary. */ - summary: string; - /** Session that created this candidate, when known. */ - sessionId: string | null; - /** Relevance score (higher is better). Comparable only within a single query. */ - score: number; -} -/** Options for the ingest() method. */ -interface AgentMemoryIngestOptions { - /** Session identifier to associate with memories created during ingestion. */ - sessionId?: string | null | undefined; -} -/** Options for the getSummary() method. */ -interface AgentMemoryGetSummaryOptions { - /** Session identifier to retrieve session summary for. */ - sessionId?: string | null | undefined; -} -/** Response from the getSummary() method. */ -interface AgentMemoryGetSummaryResponse { - /** Markdown summary. */ - summary: string; -} -/** - * Options for the recall() method. - * - * `referenceDate` accepts a Date object, an ISO-8601 date string - * (YYYY-MM-DD), or a full ISO-8601 datetime string. When provided, this - * date is used as "today" for resolving relative time references - * ("how many days ago", "last week") instead of the server's wall-clock time. - */ -interface AgentMemoryRecallOptions { - /** Recall intensity: "low" (default), "medium", or "high". */ - thinkingLevel?: AgentMemoryThinkingLevel; - /** Response verbosity: "short", "medium" (default), or "long". */ - responseLength?: AgentMemoryResponseLength; - /** Temporal anchor for date arithmetic. */ - referenceDate?: Date | string; -} -/** Response from the recall() method. */ -interface AgentMemoryRecallResult { - /** Number of memories retrieved. */ - count: number; - /** LLM-generated answer synthesizing the matching memories. */ - answer: string; - /** Matching memories ranked by relevance. */ - candidates: AgentMemoryScoredCandidate[]; -} -/** - * Options for the list() method. - * - * `cursor` is the opaque continuation token returned by the previous page; - * pass it back unchanged to fetch the next page. `sessionId` and `type` - * are exact-match filters; combining them is allowed. - */ -interface AgentMemoryListMemoriesOptions { - /** Maximum number of memories to return. Default 20, max 500. */ - limit?: number; - /** Opaque cursor from a previous page. */ - cursor?: string; - /** Exact-match session filter. */ - sessionId?: string; - /** Exact-match memory-type filter. */ - type?: AgentMemoryMemoryType; -} -/** Response from the list() method. */ -interface AgentMemoryListMemoriesResult { - memories: AgentMemoryMemoryListEntry[]; - /** Continuation cursor; absent when this page exhausted the result set. */ - cursor?: string; -} -/** - * A single Agent Memory profile, scoped to a profile name. - * - * Returned by {@link AgentMemoryNamespace.getProfile}. - */ -declare abstract class AgentMemoryProfile { - /** - * Retrieve a memory by ID. - * - * @param memoryId - ULID of the memory to retrieve. - * @throws if the memory does not exist. - */ - get(memoryId: string): Promise; - /** - * Delete a memory by ID. - * - * Removes the memory and any source messages linked by the memory's - * source message IDs. - * - * @param memoryId - ULID of the memory to delete. - * @throws if the memory does not exist. - */ - delete(memoryId: string): Promise; - /** - * Store a memory in this profile. The content is automatically classified, - * summarized, and indexed. - * - * @param memory - Raw memory content to persist. - */ - remember(memory: AgentMemoryIncomingMemory): Promise; - /** - * Extract memories from a conversation. - * - * @param messages - Conversation messages to extract memories from. - * @param options - Optional ingest options. - */ - ingest(messages: Iterable, options?: AgentMemoryIngestOptions): Promise; - /** - * Get a profile summary. - * - * @param options - Optional getSummary options. - */ - getSummary(options?: AgentMemoryGetSummaryOptions): Promise; - /** - * Recall memories in this profile. - * - * @param query - Recall query matched against memory content and keywords. - * @param options - Optional recall parameters. - * @returns Matching memories with relevance scores and a synthesized answer. - */ - recall(query: string, options?: AgentMemoryRecallOptions): Promise; - /** - * List active memories in this profile. - * - * Returns a paginated, filterable view of stored memories. Superseded - * versions are excluded. Use the returned `cursor` (when present) to - * fetch the next page. - * - * @param options - Optional pagination and filter options. - */ - list(options?: AgentMemoryListMemoriesOptions): Promise; - /** - * Soft-delete every memory and message in this profile that is tagged - * with `sessionId`. - * - * Idempotent: deleting a sessionId that has no rows is a no-op. - * - * @param sessionId - Session to delete. - */ - deleteSession(sessionId: string): Promise; -} -/** - * Namespace-level Agent Memory binding. - * - * Used as the type of an `env.MEMORY`-style binding backed by the Agent - * Memory product. - * - * @example - * ```ts - * export default { - * async fetch(_request: Request, env: Env): Promise { - * const profile = await env.MEMORY.getProfile("wrangler-e2e"); - * const summary = await profile.getSummary(); - * return Response.json(summary); - * }, - * }; - * ``` - */ -declare abstract class AgentMemoryNamespace { - /** - * Get a memory profile by name. Profiles are isolated by namespace and - * addressed by a compound key (namespaceId:profileName). - * - * @param profileName - Profile name (validated against naming rules). - * @returns RPC target for interacting with the profile. - */ - getProfile(profileName: string): Promise; - /** - * Soft-delete a profile and schedule deferred purge. Marks all - * memories and messages as deleted. - * - * @param profileName - Name of the profile to delete. - */ - deleteProfile(profileName: string): Promise; -} -// ============ AI Search Error Interfaces ============ -interface AiSearchInternalError extends Error { -} -interface AiSearchNotFoundError extends Error { -} -// ============ AI Search Common Types ============ -/** A single message in a conversation-style search or chat request. */ -type AiSearchMessage = { - role: 'system' | 'developer' | 'user' | 'assistant' | 'tool'; - content: string | null; -}; -/** - * Common shape for `ai_search_options` used by both single-instance and multi-instance requests. - * Contains retrieval, query rewrite, reranking, and cache sub-options. - */ -type AiSearchOptions = { - retrieval?: { - /** Which retrieval backend to use. Defaults to the instance's configured index_method. */ - retrieval_type?: 'vector' | 'keyword' | 'hybrid'; - /** Fusion method for combining vector + keyword results. */ - fusion_method?: 'max' | 'rrf'; - /** How keyword terms are combined: "and" = all terms must match, "or" = any term matches. */ - keyword_match_mode?: 'and' | 'or'; - /** Minimum similarity score (0-1) for a result to be included. Default 0.4. */ - match_threshold?: number; - /** Maximum number of results to return (1-50). Default 10. */ - max_num_results?: number; - /** Vectorize metadata filters applied to the search. */ - filters?: VectorizeVectorMetadataFilter; - /** Number of surrounding chunks to include for context (0-3). Default 0. */ - context_expansion?: number; - /** If true, return only item metadata without chunk text. */ - metadata_only?: boolean; - /** If true (default), return empty results on retrieval failure instead of throwing. */ - return_on_failure?: boolean; - /** Boost results by metadata field values. Max 3 entries. */ - boost_by?: Array<{ - field: string; - direction?: 'asc' | 'desc' | 'exists' | 'not_exists'; - }>; - [key: string]: unknown; - }; - query_rewrite?: { - enabled?: boolean; - model?: string; - rewrite_prompt?: string; - [key: string]: unknown; - }; - reranking?: { - enabled?: boolean; - model?: string; - /** Match threshold (0-1, default 0.4) */ - match_threshold?: number; - [key: string]: unknown; - }; - cache?: { - enabled?: boolean; - cache_threshold?: 'super_strict_match' | 'close_enough' | 'flexible_friend' | 'anything_goes'; - }; - [key: string]: unknown; -}; -// ============ AI Search Request Types ============ -/** - * Request body for single-instance search. - * Exactly one of `query` or `messages` must be provided. - */ -type AiSearchSearchRequest = { - /** Simple query string. */ - query: string; - messages?: never; - ai_search_options?: AiSearchOptions; -} | { - query?: never; - /** Conversation-style input. At least one user message with non-empty content is required. */ - messages: AiSearchMessage[]; - ai_search_options?: AiSearchOptions; -}; -type AiSearchChatCompletionsRequest = { - messages: AiSearchMessage[]; - model?: string; - stream?: boolean; - ai_search_options?: AiSearchOptions; - [key: string]: unknown; -}; -// ============ AI Search Multi-Instance Types (Namespace-Scoped) ============ -/** `ai_search_options` shape for multi-instance requests — requires `instance_ids`. */ -type AiSearchMultiSearchOptions = AiSearchOptions & { - /** Instance IDs to search across (1-10). */ - instance_ids: string[]; -}; -/** - * Request for searching across multiple instances within a namespace. - * `ai_search_options` is required and must include `instance_ids`. - * Exactly one of `query` or `messages` must be provided. - */ -type AiSearchMultiSearchRequest = { - /** Simple query string. */ - query: string; - messages?: never; - ai_search_options: AiSearchMultiSearchOptions; -} | { - query?: never; - /** Conversation-style input. */ - messages: AiSearchMessage[]; - ai_search_options: AiSearchMultiSearchOptions; -}; -/** A search result chunk tagged with the instance it originated from. */ -type AiSearchMultiSearchChunk = AiSearchSearchResponse['chunks'][number] & { - instance_id: string; -}; -/** Describes a per-instance error during a multi-instance operation. */ -type AiSearchMultiSearchError = { - instance_id: string; - message: string; -}; -/** Response from a multi-instance search, with chunks tagged by instance and optional partial-failure errors. */ -type AiSearchMultiSearchResponse = { - search_query: string; - chunks: AiSearchMultiSearchChunk[]; - errors?: AiSearchMultiSearchError[]; -}; -/** Request for chat completions across multiple instances within a namespace. `ai_search_options` is required and must include `instance_ids`. */ -type AiSearchMultiChatCompletionsRequest = Omit & { - ai_search_options: AiSearchMultiSearchOptions; -}; -/** Response from multi-instance chat completions, with chunks tagged by instance and optional partial-failure errors. */ -type AiSearchMultiChatCompletionsResponse = Omit & { - chunks: AiSearchMultiSearchChunk[]; - errors?: AiSearchMultiSearchError[]; -}; -// ============ AI Search Response Types ============ -type AiSearchSearchResponse = { - search_query: string; - chunks: Array<{ - id: string; - type: string; - /** Match score (0-1) */ - score: number; - text: string; - item: { - timestamp?: number; - key: string; - metadata?: Record; - }; - scoring_details?: { - /** Keyword match score (0-1) */ - keyword_score?: number; - /** Vector similarity score (0-1) */ - vector_score?: number; - /** Keyword rank position */ - keyword_rank?: number; - /** Vector rank position */ - vector_rank?: number; - /** Reranking model score */ - reranking_score?: number; - /** Fusion method used to combine results */ - fusion_method?: 'rrf' | 'max'; - [key: string]: unknown; - }; - }>; -}; -type AiSearchChatCompletionsResponse = { - id?: string; - object?: string; - model?: string; - choices: Array<{ - index?: number; - message: { - role: 'system' | 'developer' | 'user' | 'assistant' | 'tool'; - content: string | null; - [key: string]: unknown; - }; - [key: string]: unknown; - }>; - chunks: AiSearchSearchResponse['chunks']; - [key: string]: unknown; -}; -type AiSearchStatsResponse = { - queued?: number; - running?: number; - completed?: number; - error?: number; - skipped?: number; - outdated?: number; - last_activity?: string; - /** Storage engine statistics. */ - engine?: { - vectorize?: { - vectorsCount: number; - dimensions: number; - }; - r2?: { - payloadSizeBytes: number; - metadataSizeBytes: number; - objectCount: number; - }; - }; -}; -// ============ AI Search Instance Info Types ============ -type AiSearchInstanceInfo = { - id: string; - type?: 'r2' | 'web-crawler' | string; - source?: string; - source_params?: unknown; - paused?: boolean; - status?: string; - namespace?: string; - created_at?: string; - modified_at?: string; - token_id?: string; - ai_gateway_id?: string; - rewrite_query?: boolean; - reranking?: boolean; - embedding_model?: string; - ai_search_model?: string; - rewrite_model?: string; - reranking_model?: string; - /** @deprecated Use index_method instead. */ - hybrid_search_enabled?: boolean; - /** Controls which storage backends are active. */ - index_method?: { - vector?: boolean; - keyword?: boolean; - }; - /** Fusion method for combining vector and keyword results. */ - fusion_method?: 'max' | 'rrf'; - indexing_options?: { - keyword_tokenizer?: 'porter' | 'trigram'; - } | null; - retrieval_options?: { - keyword_match_mode?: 'and' | 'or'; - boost_by?: Array<{ - field: string; - direction?: 'asc' | 'desc' | 'exists' | 'not_exists'; - }>; - } | null; - chunk?: boolean; - chunk_size?: number; - chunk_overlap?: number; - score_threshold?: number; - max_num_results?: number; - cache?: boolean; - cache_threshold?: 'super_strict_match' | 'close_enough' | 'flexible_friend' | 'anything_goes'; - custom_metadata?: Array<{ - field_name: string; - data_type: 'text' | 'number' | 'boolean' | 'datetime'; - }>; - /** Sync interval in seconds. */ - sync_interval?: 3600 | 7200 | 14400 | 21600 | 43200 | 86400; - metadata?: Record; - [key: string]: unknown; -}; -/** Pagination, search, and ordering parameters for listing instances within a namespace. */ -type AiSearchListInstancesParams = { - page?: number; - per_page?: number; - /** Search instances by ID. */ - search?: string; - /** Field to sort by. */ - order_by?: 'created_at'; - /** Sort direction. */ - order_by_direction?: 'asc' | 'desc'; -}; -type AiSearchListResponse = { - result: AiSearchInstanceInfo[]; - result_info?: { - count: number; - page: number; - per_page: number; - total_count: number; - }; -}; -// ============ AI Search Config Types ============ -type AiSearchConfig = { - /** Instance ID (1-32 chars, pattern: ^[a-z0-9_]+(?:-[a-z0-9_]+)*$) */ - id: string; - /** Instance type. Omit to create with built-in storage. */ - type?: 'r2' | 'web-crawler' | string; - /** Source URL (required for web-crawler type). */ - source?: string; - source_params?: unknown; - /** Token ID (UUID format) */ - token_id?: string; - ai_gateway_id?: string; - /** Enable query rewriting (default false) */ - rewrite_query?: boolean; - /** Enable reranking (default false) */ - reranking?: boolean; - embedding_model?: string; - ai_search_model?: string; - rewrite_model?: string; - reranking_model?: string; - /** @deprecated Use index_method instead. */ - hybrid_search_enabled?: boolean; - /** Controls which storage backends are used during indexing. Defaults to vector-only. */ - index_method?: { - vector?: boolean; - keyword?: boolean; - }; - /** Fusion method for combining vector and keyword results. "rrf" = reciprocal rank fusion (default), "max" = maximum score. */ - fusion_method?: 'max' | 'rrf'; - indexing_options?: { - keyword_tokenizer?: 'porter' | 'trigram'; - } | null; - retrieval_options?: { - keyword_match_mode?: 'and' | 'or'; - boost_by?: Array<{ - field: string; - direction?: 'asc' | 'desc' | 'exists' | 'not_exists'; - }>; - } | null; - chunk?: boolean; - chunk_size?: number; - chunk_overlap?: number; - /** Minimum similarity score (0-1) for a result to be included. */ - score_threshold?: number; - max_num_results?: number; - cache?: boolean; - /** Similarity threshold for cache hits. Stricter = fewer cache hits but higher relevance. */ - cache_threshold?: 'super_strict_match' | 'close_enough' | 'flexible_friend' | 'anything_goes'; - custom_metadata?: Array<{ - field_name: string; - data_type: 'text' | 'number' | 'boolean' | 'datetime'; - }>; - namespace?: string; - /** Sync interval in seconds. 3600=1h, 7200=2h, 14400=4h, 21600=6h, 43200=12h, 86400=24h. */ - sync_interval?: 3600 | 7200 | 14400 | 21600 | 43200 | 86400; - metadata?: Record; - [key: string]: unknown; -}; -// ============ AI Search Item Types ============ -type AiSearchItemInfo = { - id: string; - key: string; - status: 'completed' | 'error' | 'skipped' | 'queued' | 'running' | 'outdated'; - next_action?: 'INDEX' | 'DELETE' | null; - error?: string; - checksum?: string; - namespace?: string; - chunks_count?: number | null; - file_size?: number | null; - source_id?: string | null; - last_seen_at?: string; - created_at?: string; - metadata?: Record; - [key: string]: unknown; -}; -type AiSearchItemContentResult = { - body: ReadableStream; - contentType: string; - filename: string; - size: number; -}; -type AiSearchUploadItemOptions = { - metadata?: Record; -}; -type AiSearchListItemsParams = { - page?: number; - per_page?: number; - /** Search items by key name. */ - search?: string; - /** Sort order for results. */ - sort_by?: 'status' | 'modified_at'; - /** Filter items by processing status. */ - status?: 'queued' | 'running' | 'completed' | 'error' | 'skipped' | 'outdated'; - /** Filter items by source (e.g. "builtin" or "web-crawler:https://example.com"). */ - source?: string; - /** JSON-encoded Vectorize filter for metadata filtering. */ - metadata_filter?: string; -}; -type AiSearchListItemsResponse = { - result: AiSearchItemInfo[]; - result_info?: { - count: number; - page: number; - per_page: number; - total_count: number; - }; -}; -// ============ AI Search Item Logs Types ============ -type AiSearchItemLogsParams = { - /** Maximum number of log entries to return (1-100, default 50). */ - limit?: number; - /** Opaque cursor for pagination. Pass the `cursor` value from a previous response. */ - cursor?: string; -}; -type AiSearchItemLog = { - timestamp: string; - action: string; - message: string; - fileKey?: string; - chunkCount?: number; - processingTimeMs?: number; - errorType?: string; -}; -/** Paginated response for item processing logs (cursor-based). */ -type AiSearchItemLogsResponse = { - result: AiSearchItemLog[]; - result_info: { - count: number; - per_page: number; - cursor: string | null; - truncated: boolean; - }; -}; -// ============ AI Search Item Chunks Types ============ -type AiSearchItemChunksParams = { - /** Maximum number of chunks to return (1-100, default 20). */ - limit?: number; - /** Offset into the chunks list (default 0). */ - offset?: number; -}; -/** A single indexed chunk belonging to an item, including its text content and byte range. */ -type AiSearchItemChunk = { - id: string; - text: string; - start_byte: number; - end_byte: number; - item?: { - timestamp?: number; - key: string; - metadata?: Record; - }; -}; -/** Paginated response for item chunks (offset-based). */ -type AiSearchItemChunksResponse = { - result: AiSearchItemChunk[]; - result_info: { - count: number; - total: number; - limit: number; - offset: number; - }; -}; -// ============ AI Search Job Types ============ -type AiSearchJobInfo = { - id: string; - source: 'user' | 'schedule'; - description?: string; - last_seen_at?: string; - started_at?: string; - ended_at?: string; - end_reason?: string; -}; -type AiSearchJobLog = { - id: number; - message: string; - message_type: number; - created_at: number; -}; -type AiSearchCreateJobParams = { - description?: string; -}; -type AiSearchListJobsParams = { - page?: number; - per_page?: number; -}; -type AiSearchListJobsResponse = { - result: AiSearchJobInfo[]; - result_info?: { - count: number; - page: number; - per_page: number; - total_count: number; - }; -}; -type AiSearchJobLogsParams = { - page?: number; - per_page?: number; -}; -type AiSearchJobLogsResponse = { - result: AiSearchJobLog[]; - result_info?: { - count: number; - page: number; - per_page: number; - total_count: number; - }; -}; -// ============ AI Search Sub-Service Classes ============ -/** - * Single item service for an AI Search instance. - * Provides info, download, sync, logs, and chunks operations on a specific item. - */ -declare abstract class AiSearchItem { - /** Get metadata about this item. */ - info(): Promise; - /** - * Download the item's content. - * @returns Object with body stream, content type, filename, and size. - */ - download(): Promise; - /** - * Trigger re-indexing of this item. - * @returns The updated item info. - */ - sync(): Promise; - /** - * Retrieve processing logs for this item (cursor-based pagination). - * @param params Optional pagination parameters (limit, cursor). - * @returns Paginated log entries for this item. - */ - logs(params?: AiSearchItemLogsParams): Promise; - /** - * List indexed chunks for this item (offset-based pagination). - * @param params Optional pagination parameters (limit, offset). - * @returns Paginated chunk entries for this item. - */ - chunks(params?: AiSearchItemChunksParams): Promise; -} -/** - * Items collection service for an AI Search instance. - * Provides list, upload, and access to individual items. - */ -declare abstract class AiSearchItems { - /** List items in this instance. */ - list(params?: AiSearchListItemsParams): Promise; - /** - * Upload a file as an item. Behaves as an upsert: if an item with the same - * filename already exists, it is overwritten and re-indexed. - * @param name Filename for the uploaded item. - * @param content File content as a ReadableStream, Blob, or string. - * @param options Optional metadata to attach to the item. - * @returns The created item info. - */ - upload(name: string, content: ReadableStream | Blob | string, options?: AiSearchUploadItemOptions): Promise; - /** - * Upload a file and poll until processing completes. - * Behaves as an upsert: if an item with the same filename already exists, - * it is overwritten and re-indexed. - * @param name Filename for the uploaded item. - * @param content File content as a ReadableStream, Blob, or string. - * @param options Optional metadata and polling configuration. - * @returns The item info after processing completes (or timeout). - */ - uploadAndPoll(name: string, content: ReadableStream | Blob | string, options?: AiSearchUploadItemOptions & { - /** Polling interval in milliseconds (default 1000). */ - pollIntervalMs?: number; - /** Maximum time to wait in milliseconds (default 30000). */ - timeoutMs?: number; - }): Promise; - /** - * Get an item by ID. - * @param itemId The item identifier. - * @returns Item service for info, download, sync, logs, and chunks operations. - */ - get(itemId: string): AiSearchItem; - /** - * Delete an item from the instance. - * @param itemId The item identifier. - */ - delete(itemId: string): Promise; -} -/** - * Single job service for an AI Search instance. - * Provides info, logs, and cancel operations for a specific job. - */ -declare abstract class AiSearchJob { - /** Get metadata about this job. */ - info(): Promise; - /** Get logs for this job. */ - logs(params?: AiSearchJobLogsParams): Promise; - /** - * Cancel a running job. - * @returns The updated job info. - * @throws AiSearchNotFoundError if the job does not exist. - */ - cancel(): Promise; -} -/** - * Jobs collection service for an AI Search instance. - * Provides list, create, and access to individual jobs. - */ -declare abstract class AiSearchJobs { - /** List jobs for this instance. */ - list(params?: AiSearchListJobsParams): Promise; - /** - * Create a new indexing job. - * @param params Optional job parameters. - * @returns The created job info. - */ - create(params?: AiSearchCreateJobParams): Promise; - /** - * Get a job by ID. - * @param jobId The job identifier. - * @returns Job service for info, logs, and cancel operations. - */ - get(jobId: string): AiSearchJob; -} -// ============ AI Search Binding Classes ============ -/** - * Instance-level AI Search service. - * - * Used as: - * - The return type of `AiSearchNamespace.get(name)` (namespace binding) - * - The type of `env.BLOG_SEARCH` (single instance binding via `ai_search`) - * - * Provides search, chat, update, stats, items, and jobs operations. - * - * @example - * ```ts - * // Via namespace binding - * const instance = env.AI_SEARCH.get("blog"); - * const results = await instance.search({ - * query: "How does caching work?", - * }); - * - * // Via single instance binding - * const results = await env.BLOG_SEARCH.search({ - * messages: [{ role: "user", content: "How does caching work?" }], - * }); - * ``` - */ -declare abstract class AiSearchInstance { - /** - * Search the AI Search instance for relevant chunks. - * @param params Search request with query or messages and optional AI search options. - * @returns Search response with matching chunks and search query. - */ - search(params: AiSearchSearchRequest): Promise; - /** - * Generate chat completions with AI Search context (streaming). - * @param params Chat completions request with stream: true. - * @returns ReadableStream of server-sent events. - */ - chatCompletions(params: AiSearchChatCompletionsRequest & { - stream: true; - }): Promise; - /** - * Generate chat completions with AI Search context. - * @param params Chat completions request. - * @returns Chat completion response with choices and RAG chunks. - */ - chatCompletions(params: AiSearchChatCompletionsRequest): Promise; - /** - * Update the instance configuration. - * @param config Partial configuration to update. - * @returns Updated instance info. - */ - update(config: Partial): Promise; - /** Get metadata about this instance. */ - info(): Promise; - /** - * Get instance statistics (item count, indexing status, etc.). - * @returns Statistics with counts per status, last activity time, and engine details. - */ - stats(): Promise; - /** Items collection — list, upload, and manage items in this instance. */ - get items(): AiSearchItems; - /** Jobs collection — list, create, and inspect indexing jobs. */ - get jobs(): AiSearchJobs; -} -/** - * Namespace-level AI Search service. - * - * Used as the type of `env.AI_SEARCH` (namespace binding via `ai_search_namespaces`). - * Scoped to a single namespace. Provides dynamic instance access, creation, deletion, - * and multi-instance search/chat operations. - * - * @example - * ```ts - * // Access an instance within the namespace - * const blog = env.AI_SEARCH.get("blog"); - * const results = await blog.search({ query: "How does caching work?" }); - * - * // List all instances in the namespace - * const instances = await env.AI_SEARCH.list(); - * - * // Create a new instance with built-in storage - * const tenant = await env.AI_SEARCH.create({ id: "tenant-123" }); - * - * // Upload items into the instance - * await tenant.items.upload("doc.pdf", fileContent); - * - * // Search across multiple instances - * const multi = await env.AI_SEARCH.search({ - * query: "caching", - * ai_search_options: { instance_ids: ["blog", "docs"] }, - * }); - * - * // Delete an instance - * await env.AI_SEARCH.delete("tenant-123"); - * ``` - */ -declare abstract class AiSearchNamespace { - /** - * Get an instance by name within the bound namespace. - * @param name Instance name. - * @returns Instance service for search, chat, update, stats, items, and jobs. - */ - get(name: string): AiSearchInstance; - /** - * List instances in the bound namespace. - * @param params Optional pagination, search, and ordering parameters. - * @returns Array of instance metadata with pagination info. - */ - list(params?: AiSearchListInstancesParams): Promise; - /** - * Create a new instance within the bound namespace. - * @param config Instance configuration. Only `id` is required — omit `type` and `source` to create with built-in storage. - * @returns Instance service for the newly created instance. - * - * @example - * ```ts - * // Create with built-in storage (upload items manually) - * const instance = await env.AI_SEARCH.create({ id: "my-search" }); - * - * // Create with web crawler source - * const instance = await env.AI_SEARCH.create({ - * id: "docs-search", - * type: "web-crawler", - * source: "https://developers.cloudflare.com", - * }); - * ``` - */ - create(config: AiSearchConfig): Promise; - /** - * Delete an instance from the bound namespace. - * @param name Instance name to delete. - */ - delete(name: string): Promise; - /** - * Search across multiple instances within the bound namespace. - * Fans out to the specified instance_ids and merges results. - * @param params Search request with required `ai_search_options.instance_ids`. - * @returns Search response with chunks tagged by instance_id and optional partial-failure errors. - */ - search(params: AiSearchMultiSearchRequest): Promise; - /** - * Generate chat completions across multiple instances within the bound namespace (streaming). - * Fans out to the specified instance_ids, merges context, and generates a response. - * @param params Chat completions request with stream: true and required `ai_search_options.instance_ids`. - * @returns ReadableStream of server-sent events. - */ - chatCompletions(params: AiSearchMultiChatCompletionsRequest & { - stream: true; - }): Promise; - /** - * Generate chat completions across multiple instances within the bound namespace. - * Fans out to the specified instance_ids, merges context, and generates a response. - * @param params Chat completions request with required `ai_search_options.instance_ids`. - * @returns Chat completion response with choices, chunks tagged by instance_id, and optional partial-failure errors. - */ - chatCompletions(params: AiSearchMultiChatCompletionsRequest): Promise; -} -type AiImageClassificationInput = { - image: number[]; -}; -type AiImageClassificationOutput = { - score?: number; - label?: string; -}[]; -declare abstract class BaseAiImageClassification { - inputs: AiImageClassificationInput; - postProcessedOutputs: AiImageClassificationOutput; -} -type AiImageToTextInput = { - image: number[]; - prompt?: string; - max_tokens?: number; - temperature?: number; - top_p?: number; - top_k?: number; - seed?: number; - repetition_penalty?: number; - frequency_penalty?: number; - presence_penalty?: number; - raw?: boolean; - messages?: RoleScopedChatInput[]; -}; -type AiImageToTextOutput = { - description: string; -}; -declare abstract class BaseAiImageToText { - inputs: AiImageToTextInput; - postProcessedOutputs: AiImageToTextOutput; -} -type AiImageTextToTextInput = { - image: string; - prompt?: string; - max_tokens?: number; - temperature?: number; - ignore_eos?: boolean; - top_p?: number; - top_k?: number; - seed?: number; - repetition_penalty?: number; - frequency_penalty?: number; - presence_penalty?: number; - raw?: boolean; - messages?: RoleScopedChatInput[]; -}; -type AiImageTextToTextOutput = { - description: string; -}; -declare abstract class BaseAiImageTextToText { - inputs: AiImageTextToTextInput; - postProcessedOutputs: AiImageTextToTextOutput; -} -type AiMultimodalEmbeddingsInput = { - image: string; - text: string[]; -}; -type AiIMultimodalEmbeddingsOutput = { - data: number[][]; - shape: number[]; -}; -declare abstract class BaseAiMultimodalEmbeddings { - inputs: AiImageTextToTextInput; - postProcessedOutputs: AiImageTextToTextOutput; -} -type AiObjectDetectionInput = { - image: number[]; -}; -type AiObjectDetectionOutput = { - score?: number; - label?: string; -}[]; -declare abstract class BaseAiObjectDetection { - inputs: AiObjectDetectionInput; - postProcessedOutputs: AiObjectDetectionOutput; -} -type AiSentenceSimilarityInput = { - source: string; - sentences: string[]; -}; -type AiSentenceSimilarityOutput = number[]; -declare abstract class BaseAiSentenceSimilarity { - inputs: AiSentenceSimilarityInput; - postProcessedOutputs: AiSentenceSimilarityOutput; -} -type AiAutomaticSpeechRecognitionInput = { - audio: number[]; -}; -type AiAutomaticSpeechRecognitionOutput = { - text?: string; - words?: { - word: string; - start: number; - end: number; - }[]; - vtt?: string; -}; -declare abstract class BaseAiAutomaticSpeechRecognition { - inputs: AiAutomaticSpeechRecognitionInput; - postProcessedOutputs: AiAutomaticSpeechRecognitionOutput; -} -type AiSummarizationInput = { - input_text: string; - max_length?: number; -}; -type AiSummarizationOutput = { - summary: string; -}; -declare abstract class BaseAiSummarization { - inputs: AiSummarizationInput; - postProcessedOutputs: AiSummarizationOutput; -} -type AiTextClassificationInput = { - text: string; -}; -type AiTextClassificationOutput = { - score?: number; - label?: string; -}[]; -declare abstract class BaseAiTextClassification { - inputs: AiTextClassificationInput; - postProcessedOutputs: AiTextClassificationOutput; -} -type AiTextEmbeddingsInput = { - text: string | string[]; -}; -type AiTextEmbeddingsOutput = { - shape: number[]; - data: number[][]; -}; -declare abstract class BaseAiTextEmbeddings { - inputs: AiTextEmbeddingsInput; - postProcessedOutputs: AiTextEmbeddingsOutput; -} -type RoleScopedChatInput = { - role: "user" | "assistant" | "system" | "tool" | (string & NonNullable); - content: string; - name?: string; -}; -type AiTextGenerationToolLegacyInput = { - name: string; - description: string; - parameters?: { - type: "object" | (string & NonNullable); - properties: { - [key: string]: { - type: string; - description?: string; - }; - }; - required: string[]; - }; -}; -type AiTextGenerationToolInput = { - type: "function" | (string & NonNullable); - function: { - name: string; - description: string; - parameters?: { - type: "object" | (string & NonNullable); - properties: { - [key: string]: { - type: string; - description?: string; - }; - }; - required: string[]; - }; - }; -}; -type AiTextGenerationFunctionsInput = { - name: string; - code: string; -}; -type AiTextGenerationResponseFormat = { - type: string; - json_schema?: any; -}; -type AiTextGenerationInput = { - prompt?: string; - raw?: boolean; - stream?: boolean; - max_tokens?: number; - temperature?: number; - top_p?: number; - top_k?: number; - seed?: number; - repetition_penalty?: number; - frequency_penalty?: number; - presence_penalty?: number; - messages?: RoleScopedChatInput[]; - response_format?: AiTextGenerationResponseFormat; - tools?: AiTextGenerationToolInput[] | AiTextGenerationToolLegacyInput[] | (object & NonNullable); - functions?: AiTextGenerationFunctionsInput[]; -}; -type AiTextGenerationToolLegacyOutput = { - name: string; - arguments: unknown; -}; -type AiTextGenerationToolOutput = { - id: string; - type: "function"; - function: { - name: string; - arguments: string; - }; -}; -type UsageTags = { - prompt_tokens: number; - completion_tokens: number; - total_tokens: number; -}; -type AiTextGenerationOutput = { - response?: string; - tool_calls?: AiTextGenerationToolLegacyOutput[] & AiTextGenerationToolOutput[]; - usage?: UsageTags; -}; -declare abstract class BaseAiTextGeneration { - inputs: AiTextGenerationInput; - postProcessedOutputs: AiTextGenerationOutput; -} -type AiTextToSpeechInput = { - prompt: string; - lang?: string; -}; -type AiTextToSpeechOutput = Uint8Array | { - audio: string; -}; -declare abstract class BaseAiTextToSpeech { - inputs: AiTextToSpeechInput; - postProcessedOutputs: AiTextToSpeechOutput; -} -type AiTextToImageInput = { - prompt: string; - negative_prompt?: string; - height?: number; - width?: number; - image?: number[]; - image_b64?: string; - mask?: number[]; - num_steps?: number; - strength?: number; - guidance?: number; - seed?: number; -}; -type AiTextToImageOutput = ReadableStream; -declare abstract class BaseAiTextToImage { - inputs: AiTextToImageInput; - postProcessedOutputs: AiTextToImageOutput; -} -type AiTranslationInput = { - text: string; - target_lang: string; - source_lang?: string; -}; -type AiTranslationOutput = { - translated_text?: string; -}; -declare abstract class BaseAiTranslation { - inputs: AiTranslationInput; - postProcessedOutputs: AiTranslationOutput; -} -/** - * Workers AI support for OpenAI's Chat Completions API - */ -type ChatCompletionContentPartText = { - type: "text"; - text: string; -}; -type ChatCompletionContentPartImage = { - type: "image_url"; - image_url: { - url: string; - detail?: "auto" | "low" | "high"; - }; -}; -type ChatCompletionContentPartInputAudio = { - type: "input_audio"; - input_audio: { - /** Base64 encoded audio data. */ - data: string; - format: "wav" | "mp3"; - }; -}; -type ChatCompletionContentPartFile = { - type: "file"; - file: { - /** Base64 encoded file data. */ - file_data?: string; - /** The ID of an uploaded file. */ - file_id?: string; - filename?: string; - }; -}; -type ChatCompletionContentPartRefusal = { - type: "refusal"; - refusal: string; -}; -type ChatCompletionContentPart = ChatCompletionContentPartText | ChatCompletionContentPartImage | ChatCompletionContentPartInputAudio | ChatCompletionContentPartFile; -type FunctionDefinition = { - name: string; - description?: string; - parameters?: Record; - strict?: boolean | null; -}; -type ChatCompletionFunctionTool = { - type: "function"; - function: FunctionDefinition; -}; -type ChatCompletionCustomToolGrammarFormat = { - type: "grammar"; - grammar: { - definition: string; - syntax: "lark" | "regex"; - }; -}; -type ChatCompletionCustomToolTextFormat = { - type: "text"; -}; -type ChatCompletionCustomToolFormat = ChatCompletionCustomToolTextFormat | ChatCompletionCustomToolGrammarFormat; -type ChatCompletionCustomTool = { - type: "custom"; - custom: { - name: string; - description?: string; - format?: ChatCompletionCustomToolFormat; - }; -}; -type ChatCompletionTool = ChatCompletionFunctionTool | ChatCompletionCustomTool; -type ChatCompletionMessageFunctionToolCall = { - id: string; - type: "function"; - function: { - name: string; - /** JSON-encoded arguments string. */ - arguments: string; - }; -}; -type ChatCompletionMessageCustomToolCall = { - id: string; - type: "custom"; - custom: { - name: string; - input: string; - }; -}; -type ChatCompletionMessageToolCall = ChatCompletionMessageFunctionToolCall | ChatCompletionMessageCustomToolCall; -type ChatCompletionToolChoiceFunction = { - type: "function"; - function: { - name: string; - }; -}; -type ChatCompletionToolChoiceCustom = { - type: "custom"; - custom: { - name: string; - }; -}; -type ChatCompletionToolChoiceAllowedTools = { - type: "allowed_tools"; - allowed_tools: { - mode: "auto" | "required"; - tools: Array>; - }; -}; -type ChatCompletionToolChoiceOption = "none" | "auto" | "required" | ChatCompletionToolChoiceFunction | ChatCompletionToolChoiceCustom | ChatCompletionToolChoiceAllowedTools; -type DeveloperMessage = { - role: "developer"; - content: string | Array<{ - type: "text"; - text: string; - }>; - name?: string; -}; -type SystemMessage = { - role: "system"; - content: string | Array<{ - type: "text"; - text: string; - }>; - name?: string; -}; -/** - * Permissive merged content part used inside UserMessage arrays. - * - * Cabidela has a limitation where anyOf/oneOf with enum-based discrimination - * inside nested array items does not correctly match different branches for - * different array elements, so the schema uses a single merged object. - */ -type UserMessageContentPart = { - type: "text" | "image_url" | "input_audio" | "file"; - text?: string; - image_url?: { - url?: string; - detail?: "auto" | "low" | "high"; - }; - input_audio?: { - data?: string; - format?: "wav" | "mp3"; - }; - file?: { - file_data?: string; - file_id?: string; - filename?: string; - }; -}; -type UserMessage = { - role: "user"; - content: string | Array; - name?: string; -}; -type AssistantMessageContentPart = { - type: "text" | "refusal"; - text?: string; - refusal?: string; -}; -type AssistantMessage = { - role: "assistant"; - content?: string | null | Array; - refusal?: string | null; - name?: string; - audio?: { - id: string; - }; - tool_calls?: Array; - function_call?: { - name: string; - arguments: string; - }; -}; -type ToolMessage = { - role: "tool"; - content: string | Array<{ - type: "text"; - text: string; - }>; - tool_call_id: string; -}; -type FunctionMessage = { - role: "function"; - content: string; - name: string; -}; -type ChatCompletionMessageParam = DeveloperMessage | SystemMessage | UserMessage | AssistantMessage | ToolMessage | FunctionMessage; -type ChatCompletionsResponseFormatText = { - type: "text"; -}; -type ChatCompletionsResponseFormatJSONObject = { - type: "json_object"; -}; -type ResponseFormatJSONSchema = { - type: "json_schema"; - json_schema: { - name: string; - description?: string; - schema?: Record; - strict?: boolean | null; - }; -}; -type ResponseFormat = ChatCompletionsResponseFormatText | ChatCompletionsResponseFormatJSONObject | ResponseFormatJSONSchema; -type ChatCompletionsStreamOptions = { - include_usage?: boolean; - include_obfuscation?: boolean; -}; -type PredictionContent = { - type: "content"; - content: string | Array<{ - type: "text"; - text: string; - }>; -}; -type AudioParams = { - voice: string | { - id: string; - }; - format: "wav" | "aac" | "mp3" | "flac" | "opus" | "pcm16"; -}; -type WebSearchUserLocation = { - type: "approximate"; - approximate: { - city?: string; - country?: string; - region?: string; - timezone?: string; - }; -}; -type WebSearchOptions = { - search_context_size?: "low" | "medium" | "high"; - user_location?: WebSearchUserLocation; -}; -type ChatTemplateKwargs = { - /** Whether to enable reasoning, enabled by default. */ - enable_thinking?: boolean; - /** If false, preserves reasoning context between turns. */ - clear_thinking?: boolean; -}; -/** Shared optional properties used by both Prompt and Messages input branches. */ -type ChatCompletionsCommonOptions = { - model?: string; - audio?: AudioParams; - frequency_penalty?: number | null; - logit_bias?: Record | null; - logprobs?: boolean | null; - top_logprobs?: number | null; - max_tokens?: number | null; - max_completion_tokens?: number | null; - metadata?: Record | null; - modalities?: Array<"text" | "audio"> | null; - n?: number | null; - parallel_tool_calls?: boolean; - prediction?: PredictionContent; - presence_penalty?: number | null; - reasoning_effort?: "low" | "medium" | "high" | null; - chat_template_kwargs?: ChatTemplateKwargs; - response_format?: ResponseFormat; - seed?: number | null; - service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; - stop?: string | Array | null; - store?: boolean | null; - stream?: boolean | null; - stream_options?: ChatCompletionsStreamOptions; - temperature?: number | null; - tool_choice?: ChatCompletionToolChoiceOption; - tools?: Array; - top_p?: number | null; - user?: string; - web_search_options?: WebSearchOptions; - function_call?: "none" | "auto" | { - name: string; - }; - functions?: Array; -}; -type PromptTokensDetails = { - cached_tokens?: number; - audio_tokens?: number; -}; -type CompletionTokensDetails = { - reasoning_tokens?: number; - audio_tokens?: number; - accepted_prediction_tokens?: number; - rejected_prediction_tokens?: number; -}; -type CompletionUsage = { - prompt_tokens: number; - completion_tokens: number; - total_tokens: number; - prompt_tokens_details?: PromptTokensDetails; - completion_tokens_details?: CompletionTokensDetails; -}; -type ChatCompletionTopLogprob = { - token: string; - logprob: number; - bytes: Array | null; -}; -type ChatCompletionTokenLogprob = { - token: string; - logprob: number; - bytes: Array | null; - top_logprobs: Array; -}; -type ChatCompletionAudio = { - id: string; - /** Base64 encoded audio bytes. */ - data: string; - expires_at: number; - transcript: string; -}; -type ChatCompletionUrlCitation = { - type: "url_citation"; - url_citation: { - url: string; - title: string; - start_index: number; - end_index: number; - }; -}; -type ChatCompletionResponseMessage = { - role: "assistant"; - content: string | null; - refusal: string | null; - annotations?: Array; - audio?: ChatCompletionAudio; - tool_calls?: Array; - function_call?: { - name: string; - arguments: string; - } | null; -}; -type ChatCompletionLogprobs = { - content: Array | null; - refusal?: Array | null; -}; -type ChatCompletionChoice = { - index: number; - message: ChatCompletionResponseMessage; - finish_reason: "stop" | "length" | "tool_calls" | "content_filter" | "function_call"; - logprobs: ChatCompletionLogprobs | null; -}; -type ChatCompletionsMessagesInput = { - messages: Array; -} & ChatCompletionsCommonOptions; -type ChatCompletionsOutput = { - id: string; - object: string; - created: number; - model: string; - choices: Array; - usage?: CompletionUsage; - system_fingerprint?: string | null; - service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; -}; -/** - * Workers AI support for OpenAI's Responses API - * Reference: https://github.com/openai/openai-node/blob/master/src/resources/responses/responses.ts - * - * It's a stripped down version from its source. - * It currently supports basic function calling, json mode and accepts images as input. - * - * It does not include types for WebSearch, CodeInterpreter, FileInputs, MCP, CustomTools. - * We plan to add those incrementally as model + platform capabilities evolve. - */ -type ResponsesInput = { - background?: boolean | null; - conversation?: string | ResponseConversationParam | null; - include?: Array | null; - input?: string | ResponseInput; - instructions?: string | null; - max_output_tokens?: number | null; - parallel_tool_calls?: boolean | null; - previous_response_id?: string | null; - prompt_cache_key?: string; - reasoning?: Reasoning | null; - safety_identifier?: string; - service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; - stream?: boolean | null; - stream_options?: StreamOptions | null; - temperature?: number | null; - text?: ResponseTextConfig; - tool_choice?: ToolChoiceOptions | ToolChoiceFunction; - tools?: Array; - top_p?: number | null; - truncation?: "auto" | "disabled" | null; -}; -type ResponsesOutput = { - id?: string; - created_at?: number; - output_text?: string; - error?: ResponseError | null; - incomplete_details?: ResponseIncompleteDetails | null; - instructions?: string | Array | null; - object?: "response"; - output?: Array; - parallel_tool_calls?: boolean; - temperature?: number | null; - tool_choice?: ToolChoiceOptions | ToolChoiceFunction; - tools?: Array; - top_p?: number | null; - max_output_tokens?: number | null; - previous_response_id?: string | null; - prompt?: ResponsePrompt | null; - reasoning?: Reasoning | null; - safety_identifier?: string; - service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; - status?: ResponseStatus; - text?: ResponseTextConfig; - truncation?: "auto" | "disabled" | null; - usage?: ResponseUsage; -}; -type EasyInputMessage = { - content: string | ResponseInputMessageContentList; - role: "user" | "assistant" | "system" | "developer"; - type?: "message"; -}; -type ResponsesFunctionTool = { - name: string; - parameters: { - [key: string]: unknown; - } | null; - strict: boolean | null; - type: "function"; - description?: string | null; -}; -type ResponseIncompleteDetails = { - reason?: "max_output_tokens" | "content_filter"; -}; -type ResponsePrompt = { - id: string; - variables?: { - [key: string]: string | ResponseInputText | ResponseInputImage; - } | null; - version?: string | null; -}; -type Reasoning = { - effort?: ReasoningEffort | null; - generate_summary?: "auto" | "concise" | "detailed" | null; - summary?: "auto" | "concise" | "detailed" | null; -}; -type ResponseContent = ResponseInputText | ResponseInputImage | ResponseOutputText | ResponseOutputRefusal | ResponseContentReasoningText; -type ResponseContentReasoningText = { - text: string; - type: "reasoning_text"; -}; -type ResponseConversationParam = { - id: string; -}; -type ResponseCreatedEvent = { - response: Response; - sequence_number: number; - type: "response.created"; -}; -type ResponseCustomToolCallOutput = { - call_id: string; - output: string | Array; - type: "custom_tool_call_output"; - id?: string; -}; -type ResponseError = { - code: "server_error" | "rate_limit_exceeded" | "invalid_prompt" | "vector_store_timeout" | "invalid_image" | "invalid_image_format" | "invalid_base64_image" | "invalid_image_url" | "image_too_large" | "image_too_small" | "image_parse_error" | "image_content_policy_violation" | "invalid_image_mode" | "image_file_too_large" | "unsupported_image_media_type" | "empty_image_file" | "failed_to_download_image" | "image_file_not_found"; - message: string; -}; -type ResponseErrorEvent = { - code: string | null; - message: string; - param: string | null; - sequence_number: number; - type: "error"; -}; -type ResponseFailedEvent = { - response: Response; - sequence_number: number; - type: "response.failed"; -}; -type ResponseFormatText = { - type: "text"; -}; -type ResponseFormatJSONObject = { - type: "json_object"; -}; -type ResponseFormatTextConfig = ResponseFormatText | ResponseFormatTextJSONSchemaConfig | ResponseFormatJSONObject; -type ResponseFormatTextJSONSchemaConfig = { - name: string; - schema: { - [key: string]: unknown; - }; - type: "json_schema"; - description?: string; - strict?: boolean | null; -}; -type ResponseFunctionCallArgumentsDeltaEvent = { - delta: string; - item_id: string; - output_index: number; - sequence_number: number; - type: "response.function_call_arguments.delta"; -}; -type ResponseFunctionCallArgumentsDoneEvent = { - arguments: string; - item_id: string; - name: string; - output_index: number; - sequence_number: number; - type: "response.function_call_arguments.done"; -}; -type ResponseFunctionCallOutputItem = ResponseInputTextContent | ResponseInputImageContent; -type ResponseFunctionCallOutputItemList = Array; -type ResponseFunctionToolCall = { - arguments: string; - call_id: string; - name: string; - type: "function_call"; - id?: string; - status?: "in_progress" | "completed" | "incomplete"; -}; -interface ResponseFunctionToolCallItem extends ResponseFunctionToolCall { - id: string; -} -type ResponseFunctionToolCallOutputItem = { - id: string; - call_id: string; - output: string | Array; - type: "function_call_output"; - status?: "in_progress" | "completed" | "incomplete"; -}; -type ResponseIncludable = "message.input_image.image_url" | "message.output_text.logprobs"; -type ResponseIncompleteEvent = { - response: Response; - sequence_number: number; - type: "response.incomplete"; -}; -type ResponseInput = Array; -type ResponseInputContent = ResponseInputText | ResponseInputImage; -type ResponseInputImage = { - detail: "low" | "high" | "auto"; - type: "input_image"; - /** - * Base64 encoded image - */ - image_url?: string | null; -}; -type ResponseInputImageContent = { - type: "input_image"; - detail?: "low" | "high" | "auto" | null; - /** - * Base64 encoded image - */ - image_url?: string | null; -}; -type ResponseInputItem = EasyInputMessage | ResponseInputItemMessage | ResponseOutputMessage | ResponseFunctionToolCall | ResponseInputItemFunctionCallOutput | ResponseReasoningItem; -type ResponseInputItemFunctionCallOutput = { - call_id: string; - output: string | ResponseFunctionCallOutputItemList; - type: "function_call_output"; - id?: string | null; - status?: "in_progress" | "completed" | "incomplete" | null; -}; -type ResponseInputItemMessage = { - content: ResponseInputMessageContentList; - role: "user" | "system" | "developer"; - status?: "in_progress" | "completed" | "incomplete"; - type?: "message"; -}; -type ResponseInputMessageContentList = Array; -type ResponseInputMessageItem = { - id: string; - content: ResponseInputMessageContentList; - role: "user" | "system" | "developer"; - status?: "in_progress" | "completed" | "incomplete"; - type?: "message"; -}; -type ResponseInputText = { - text: string; - type: "input_text"; -}; -type ResponseInputTextContent = { - text: string; - type: "input_text"; -}; -type ResponseItem = ResponseInputMessageItem | ResponseOutputMessage | ResponseFunctionToolCallItem | ResponseFunctionToolCallOutputItem; -type ResponseOutputItem = ResponseOutputMessage | ResponseFunctionToolCall | ResponseReasoningItem; -type ResponseOutputItemAddedEvent = { - item: ResponseOutputItem; - output_index: number; - sequence_number: number; - type: "response.output_item.added"; -}; -type ResponseOutputItemDoneEvent = { - item: ResponseOutputItem; - output_index: number; - sequence_number: number; - type: "response.output_item.done"; -}; -type ResponseOutputMessage = { - id: string; - content: Array; - role: "assistant"; - status: "in_progress" | "completed" | "incomplete"; - type: "message"; -}; -type ResponseOutputRefusal = { - refusal: string; - type: "refusal"; -}; -type ResponseOutputText = { - text: string; - type: "output_text"; - logprobs?: Array; -}; -type ResponseReasoningItem = { - id: string; - summary: Array; - type: "reasoning"; - content?: Array; - encrypted_content?: string | null; - status?: "in_progress" | "completed" | "incomplete"; -}; -type ResponseReasoningSummaryItem = { - text: string; - type: "summary_text"; -}; -type ResponseReasoningContentItem = { - text: string; - type: "reasoning_text"; -}; -type ResponseReasoningTextDeltaEvent = { - content_index: number; - delta: string; - item_id: string; - output_index: number; - sequence_number: number; - type: "response.reasoning_text.delta"; -}; -type ResponseReasoningTextDoneEvent = { - content_index: number; - item_id: string; - output_index: number; - sequence_number: number; - text: string; - type: "response.reasoning_text.done"; -}; -type ResponseRefusalDeltaEvent = { - content_index: number; - delta: string; - item_id: string; - output_index: number; - sequence_number: number; - type: "response.refusal.delta"; -}; -type ResponseRefusalDoneEvent = { - content_index: number; - item_id: string; - output_index: number; - refusal: string; - sequence_number: number; - type: "response.refusal.done"; -}; -type ResponseStatus = "completed" | "failed" | "in_progress" | "cancelled" | "queued" | "incomplete"; -type ResponseStreamEvent = ResponseCompletedEvent | ResponseCreatedEvent | ResponseErrorEvent | ResponseFunctionCallArgumentsDeltaEvent | ResponseFunctionCallArgumentsDoneEvent | ResponseFailedEvent | ResponseIncompleteEvent | ResponseOutputItemAddedEvent | ResponseOutputItemDoneEvent | ResponseReasoningTextDeltaEvent | ResponseReasoningTextDoneEvent | ResponseRefusalDeltaEvent | ResponseRefusalDoneEvent | ResponseTextDeltaEvent | ResponseTextDoneEvent; -type ResponseCompletedEvent = { - response: Response; - sequence_number: number; - type: "response.completed"; -}; -type ResponseTextConfig = { - format?: ResponseFormatTextConfig; - verbosity?: "low" | "medium" | "high" | null; -}; -type ResponseTextDeltaEvent = { - content_index: number; - delta: string; - item_id: string; - logprobs: Array; - output_index: number; - sequence_number: number; - type: "response.output_text.delta"; -}; -type ResponseTextDoneEvent = { - content_index: number; - item_id: string; - logprobs: Array; - output_index: number; - sequence_number: number; - text: string; - type: "response.output_text.done"; -}; -type Logprob = { - token: string; - logprob: number; - top_logprobs?: Array; -}; -type TopLogprob = { - token?: string; - logprob?: number; -}; -type ResponseUsage = { - input_tokens: number; - output_tokens: number; - total_tokens: number; -}; -type Tool = ResponsesFunctionTool; -type ToolChoiceFunction = { - name: string; - type: "function"; -}; -type ToolChoiceOptions = "none"; -type ReasoningEffort = "minimal" | "low" | "medium" | "high" | null; -type StreamOptions = { - include_obfuscation?: boolean; -}; -/** Marks keys from T that aren't in U as optional never */ -type Without = { - [P in Exclude]?: never; -}; -/** Either T or U, but not both (mutually exclusive) */ -type XOR = (T & Without) | (U & Without); -type Ai_Cf_Baai_Bge_Base_En_V1_5_Input = { - text: string | string[]; - /** - * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. - */ - pooling?: "mean" | "cls"; -} | { - /** - * Batch of the embeddings requests to run using async-queue - */ - requests: { - text: string | string[]; - /** - * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. - */ - pooling?: "mean" | "cls"; - }[]; -}; -type Ai_Cf_Baai_Bge_Base_En_V1_5_Output = { - shape?: number[]; - /** - * Embeddings of the requested text values - */ - data?: number[][]; - /** - * The pooling method used in the embedding process. - */ - pooling?: "mean" | "cls"; -} | Ai_Cf_Baai_Bge_Base_En_V1_5_AsyncResponse; -interface Ai_Cf_Baai_Bge_Base_En_V1_5_AsyncResponse { - /** - * The async request id that can be used to obtain the results. - */ - request_id?: string; -} -declare abstract class Base_Ai_Cf_Baai_Bge_Base_En_V1_5 { - inputs: Ai_Cf_Baai_Bge_Base_En_V1_5_Input; - postProcessedOutputs: Ai_Cf_Baai_Bge_Base_En_V1_5_Output; -} -type Ai_Cf_Openai_Whisper_Input = string | { - /** - * An array of integers that represent the audio data constrained to 8-bit unsigned integer values - */ - audio: number[]; -}; -interface Ai_Cf_Openai_Whisper_Output { - /** - * The transcription - */ - text: string; - word_count?: number; - words?: { - word?: string; - /** - * The second this word begins in the recording - */ - start?: number; - /** - * The ending second when the word completes - */ - end?: number; - }[]; - vtt?: string; -} -declare abstract class Base_Ai_Cf_Openai_Whisper { - inputs: Ai_Cf_Openai_Whisper_Input; - postProcessedOutputs: Ai_Cf_Openai_Whisper_Output; -} -type Ai_Cf_Meta_M2M100_1_2B_Input = { - /** - * The text to be translated - */ - text: string; - /** - * The language code of the source text (e.g., 'en' for English). Defaults to 'en' if not specified - */ - source_lang?: string; - /** - * The language code to translate the text into (e.g., 'es' for Spanish) - */ - target_lang: string; -} | { - /** - * Batch of the embeddings requests to run using async-queue - */ - requests: { - /** - * The text to be translated - */ - text: string; - /** - * The language code of the source text (e.g., 'en' for English). Defaults to 'en' if not specified - */ - source_lang?: string; - /** - * The language code to translate the text into (e.g., 'es' for Spanish) - */ - target_lang: string; - }[]; -}; -type Ai_Cf_Meta_M2M100_1_2B_Output = { - /** - * The translated text in the target language - */ - translated_text?: string; -} | Ai_Cf_Meta_M2M100_1_2B_AsyncResponse; -interface Ai_Cf_Meta_M2M100_1_2B_AsyncResponse { - /** - * The async request id that can be used to obtain the results. - */ - request_id?: string; -} -declare abstract class Base_Ai_Cf_Meta_M2M100_1_2B { - inputs: Ai_Cf_Meta_M2M100_1_2B_Input; - postProcessedOutputs: Ai_Cf_Meta_M2M100_1_2B_Output; -} -type Ai_Cf_Baai_Bge_Small_En_V1_5_Input = { - text: string | string[]; - /** - * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. - */ - pooling?: "mean" | "cls"; -} | { - /** - * Batch of the embeddings requests to run using async-queue - */ - requests: { - text: string | string[]; - /** - * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. - */ - pooling?: "mean" | "cls"; - }[]; -}; -type Ai_Cf_Baai_Bge_Small_En_V1_5_Output = { - shape?: number[]; - /** - * Embeddings of the requested text values - */ - data?: number[][]; - /** - * The pooling method used in the embedding process. - */ - pooling?: "mean" | "cls"; -} | Ai_Cf_Baai_Bge_Small_En_V1_5_AsyncResponse; -interface Ai_Cf_Baai_Bge_Small_En_V1_5_AsyncResponse { - /** - * The async request id that can be used to obtain the results. - */ - request_id?: string; -} -declare abstract class Base_Ai_Cf_Baai_Bge_Small_En_V1_5 { - inputs: Ai_Cf_Baai_Bge_Small_En_V1_5_Input; - postProcessedOutputs: Ai_Cf_Baai_Bge_Small_En_V1_5_Output; -} -type Ai_Cf_Baai_Bge_Large_En_V1_5_Input = { - text: string | string[]; - /** - * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. - */ - pooling?: "mean" | "cls"; -} | { - /** - * Batch of the embeddings requests to run using async-queue - */ - requests: { - text: string | string[]; - /** - * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. - */ - pooling?: "mean" | "cls"; - }[]; -}; -type Ai_Cf_Baai_Bge_Large_En_V1_5_Output = { - shape?: number[]; - /** - * Embeddings of the requested text values - */ - data?: number[][]; - /** - * The pooling method used in the embedding process. - */ - pooling?: "mean" | "cls"; -} | Ai_Cf_Baai_Bge_Large_En_V1_5_AsyncResponse; -interface Ai_Cf_Baai_Bge_Large_En_V1_5_AsyncResponse { - /** - * The async request id that can be used to obtain the results. - */ - request_id?: string; -} -declare abstract class Base_Ai_Cf_Baai_Bge_Large_En_V1_5 { - inputs: Ai_Cf_Baai_Bge_Large_En_V1_5_Input; - postProcessedOutputs: Ai_Cf_Baai_Bge_Large_En_V1_5_Output; -} -type Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Input = string | { - /** - * The input text prompt for the model to generate a response. - */ - prompt?: string; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * Controls the creativity of the AI's responses by adjusting how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; - image: number[] | (string & NonNullable); - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; -}; -interface Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Output { - description?: string; -} -declare abstract class Base_Ai_Cf_Unum_Uform_Gen2_Qwen_500M { - inputs: Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Input; - postProcessedOutputs: Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Output; -} -type Ai_Cf_Openai_Whisper_Tiny_En_Input = string | { - /** - * An array of integers that represent the audio data constrained to 8-bit unsigned integer values - */ - audio: number[]; -}; -interface Ai_Cf_Openai_Whisper_Tiny_En_Output { - /** - * The transcription - */ - text: string; - word_count?: number; - words?: { - word?: string; - /** - * The second this word begins in the recording - */ - start?: number; - /** - * The ending second when the word completes - */ - end?: number; - }[]; - vtt?: string; -} -declare abstract class Base_Ai_Cf_Openai_Whisper_Tiny_En { - inputs: Ai_Cf_Openai_Whisper_Tiny_En_Input; - postProcessedOutputs: Ai_Cf_Openai_Whisper_Tiny_En_Output; -} -interface Ai_Cf_Openai_Whisper_Large_V3_Turbo_Input { - audio: string | { - body?: object; - contentType?: string; - }; - /** - * Supported tasks are 'translate' or 'transcribe'. - */ - task?: string; - /** - * The language of the audio being transcribed or translated. - */ - language?: string; - /** - * Preprocess the audio with a voice activity detection model. - */ - vad_filter?: boolean; - /** - * A text prompt to help provide context to the model on the contents of the audio. - */ - initial_prompt?: string; - /** - * The prefix appended to the beginning of the output of the transcription and can guide the transcription result. - */ - prefix?: string; - /** - * The number of beams to use in beam search decoding. Higher values may improve accuracy at the cost of speed. - */ - beam_size?: number; - /** - * Whether to condition on previous text during transcription. Setting to false may help prevent hallucination loops. - */ - condition_on_previous_text?: boolean; - /** - * Threshold for detecting no-speech segments. Segments with no-speech probability above this value are skipped. - */ - no_speech_threshold?: number; - /** - * Threshold for filtering out segments with high compression ratio, which often indicate repetitive or hallucinated text. - */ - compression_ratio_threshold?: number; - /** - * Threshold for filtering out segments with low average log probability, indicating low confidence. - */ - log_prob_threshold?: number; - /** - * Optional threshold (in seconds) to skip silent periods that may cause hallucinations. - */ - hallucination_silence_threshold?: number; -} -interface Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output { - transcription_info?: { - /** - * The language of the audio being transcribed or translated. - */ - language?: string; - /** - * The confidence level or probability of the detected language being accurate, represented as a decimal between 0 and 1. - */ - language_probability?: number; - /** - * The total duration of the original audio file, in seconds. - */ - duration?: number; - /** - * The duration of the audio after applying Voice Activity Detection (VAD) to remove silent or irrelevant sections, in seconds. - */ - duration_after_vad?: number; - }; - /** - * The complete transcription of the audio. - */ - text: string; - /** - * The total number of words in the transcription. - */ - word_count?: number; - segments?: { - /** - * The starting time of the segment within the audio, in seconds. - */ - start?: number; - /** - * The ending time of the segment within the audio, in seconds. - */ - end?: number; - /** - * The transcription of the segment. - */ - text?: string; - /** - * The temperature used in the decoding process, controlling randomness in predictions. Lower values result in more deterministic outputs. - */ - temperature?: number; - /** - * The average log probability of the predictions for the words in this segment, indicating overall confidence. - */ - avg_logprob?: number; - /** - * The compression ratio of the input to the output, measuring how much the text was compressed during the transcription process. - */ - compression_ratio?: number; - /** - * The probability that the segment contains no speech, represented as a decimal between 0 and 1. - */ - no_speech_prob?: number; - words?: { - /** - * The individual word transcribed from the audio. - */ - word?: string; - /** - * The starting time of the word within the audio, in seconds. - */ - start?: number; - /** - * The ending time of the word within the audio, in seconds. - */ - end?: number; - }[]; - }[]; - /** - * The transcription in WebVTT format, which includes timing and text information for use in subtitles. - */ - vtt?: string; -} -declare abstract class Base_Ai_Cf_Openai_Whisper_Large_V3_Turbo { - inputs: Ai_Cf_Openai_Whisper_Large_V3_Turbo_Input; - postProcessedOutputs: Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output; -} -type Ai_Cf_Baai_Bge_M3_Input = Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts | Ai_Cf_Baai_Bge_M3_Input_Embedding | { - /** - * Batch of the embeddings requests to run using async-queue - */ - requests: (Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts_1 | Ai_Cf_Baai_Bge_M3_Input_Embedding_1)[]; -}; -interface Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts { - /** - * A query you wish to perform against the provided contexts. If no query is provided the model with respond with embeddings for contexts - */ - query?: string; - /** - * List of provided contexts. Note that the index in this array is important, as the response will refer to it. - */ - contexts: { - /** - * One of the provided context content - */ - text?: string; - }[]; - /** - * When provided with too long context should the model error out or truncate the context to fit? - */ - truncate_inputs?: boolean; -} -interface Ai_Cf_Baai_Bge_M3_Input_Embedding { - text: string | string[]; - /** - * When provided with too long context should the model error out or truncate the context to fit? - */ - truncate_inputs?: boolean; -} -interface Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts_1 { - /** - * A query you wish to perform against the provided contexts. If no query is provided the model with respond with embeddings for contexts - */ - query?: string; - /** - * List of provided contexts. Note that the index in this array is important, as the response will refer to it. - */ - contexts: { - /** - * One of the provided context content - */ - text?: string; - }[]; - /** - * When provided with too long context should the model error out or truncate the context to fit? - */ - truncate_inputs?: boolean; -} -interface Ai_Cf_Baai_Bge_M3_Input_Embedding_1 { - text: string | string[]; - /** - * When provided with too long context should the model error out or truncate the context to fit? - */ - truncate_inputs?: boolean; -} -type Ai_Cf_Baai_Bge_M3_Output = Ai_Cf_Baai_Bge_M3_Output_Query | Ai_Cf_Baai_Bge_M3_Output_EmbeddingFor_Contexts | Ai_Cf_Baai_Bge_M3_Output_Embedding | Ai_Cf_Baai_Bge_M3_AsyncResponse; -interface Ai_Cf_Baai_Bge_M3_Output_Query { - response?: { - /** - * Index of the context in the request - */ - id?: number; - /** - * Score of the context under the index. - */ - score?: number; - }[]; -} -interface Ai_Cf_Baai_Bge_M3_Output_EmbeddingFor_Contexts { - response?: number[][]; - shape?: number[]; - /** - * The pooling method used in the embedding process. - */ - pooling?: "mean" | "cls"; -} -interface Ai_Cf_Baai_Bge_M3_Output_Embedding { - shape?: number[]; - /** - * Embeddings of the requested text values - */ - data?: number[][]; - /** - * The pooling method used in the embedding process. - */ - pooling?: "mean" | "cls"; -} -interface Ai_Cf_Baai_Bge_M3_AsyncResponse { - /** - * The async request id that can be used to obtain the results. - */ - request_id?: string; -} -declare abstract class Base_Ai_Cf_Baai_Bge_M3 { - inputs: Ai_Cf_Baai_Bge_M3_Input; - postProcessedOutputs: Ai_Cf_Baai_Bge_M3_Output; -} -interface Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Input { - /** - * A text description of the image you want to generate. - */ - prompt: string; - /** - * The number of diffusion steps; higher values can improve quality but take longer. - */ - steps?: number; -} -interface Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Output { - /** - * The generated image in Base64 format. - */ - image?: string; -} -declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_1_Schnell { - inputs: Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Input; - postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Output; -} -type Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Input = Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Prompt | Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Messages; -interface Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Prompt { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - image?: number[] | (string & NonNullable); - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; - /** - * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. - */ - lora?: string; -} -interface Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Messages { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role?: string; - /** - * The tool call id. If you don't know what to put here you can fall back to 000000001 - */ - tool_call_id?: string; - content?: string | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }[] | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }; - }[]; - image?: number[] | (string & NonNullable); - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - /** - * If true, the response will be streamed back incrementally. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Controls the creativity of the AI's responses by adjusting how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -type Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Output = { - /** - * The generated text response from the model - */ - response?: string; - /** - * An array of tool calls requests made during the response generation - */ - tool_calls?: { - /** - * The arguments passed to be passed to the tool call request - */ - arguments?: object; - /** - * The name of the tool to be called - */ - name?: string; - }[]; -}; -declare abstract class Base_Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct { - inputs: Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Input; - postProcessedOutputs: Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Output; -} -type Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Input = Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Prompt | Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Messages | Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Async_Batch; -interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Prompt { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. - */ - lora?: string; - response_format?: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Messages { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role: string; - content: string | { - /** - * Type of the content (text) - */ - type?: string; - /** - * Text content - */ - text?: string; - }[]; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - response_format?: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_1; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_1 { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Async_Batch { - requests?: { - /** - * User-supplied reference. This field will be present in the response as well it can be used to reference the request and response. It's NOT validated to be unique. - */ - external_reference?: string; - /** - * Prompt for the text generation model - */ - prompt?: string; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; - response_format?: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_2; - }[]; -} -interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_2 { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -type Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Output = { - /** - * The generated text response from the model - */ - response: string; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; - /** - * An array of tool calls requests made during the response generation - */ - tool_calls?: { - /** - * The arguments passed to be passed to the tool call request - */ - arguments?: object; - /** - * The name of the tool to be called - */ - name?: string; - }[]; -} | string | Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_AsyncResponse; -interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_AsyncResponse { - /** - * The async request id that can be used to obtain the results. - */ - request_id?: string; -} -declare abstract class Base_Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast { - inputs: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Input; - postProcessedOutputs: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Output; -} -interface Ai_Cf_Meta_Llama_Guard_3_8B_Input { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender must alternate between 'user' and 'assistant'. - */ - role: "user" | "assistant"; - /** - * The content of the message as a string. - */ - content: string; - }[]; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Dictate the output format of the generated response. - */ - response_format?: { - /** - * Set to json_object to process and output generated text as JSON. - */ - type?: string; - }; -} -interface Ai_Cf_Meta_Llama_Guard_3_8B_Output { - response?: string | { - /** - * Whether the conversation is safe or not. - */ - safe?: boolean; - /** - * A list of what hazard categories predicted for the conversation, if the conversation is deemed unsafe. - */ - categories?: string[]; - }; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; -} -declare abstract class Base_Ai_Cf_Meta_Llama_Guard_3_8B { - inputs: Ai_Cf_Meta_Llama_Guard_3_8B_Input; - postProcessedOutputs: Ai_Cf_Meta_Llama_Guard_3_8B_Output; -} -interface Ai_Cf_Baai_Bge_Reranker_Base_Input { - /** - * A query you wish to perform against the provided contexts. - */ - /** - * Number of returned results starting with the best score. - */ - top_k?: number; - /** - * List of provided contexts. Note that the index in this array is important, as the response will refer to it. - */ - contexts: { - /** - * One of the provided context content - */ - text?: string; - }[]; -} -interface Ai_Cf_Baai_Bge_Reranker_Base_Output { - response?: { - /** - * Index of the context in the request - */ - id?: number; - /** - * Score of the context under the index. - */ - score?: number; - }[]; -} -declare abstract class Base_Ai_Cf_Baai_Bge_Reranker_Base { - inputs: Ai_Cf_Baai_Bge_Reranker_Base_Input; - postProcessedOutputs: Ai_Cf_Baai_Bge_Reranker_Base_Output; -} -type Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Input = Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Prompt | Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Messages; -interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Prompt { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. - */ - lora?: string; - response_format?: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Messages { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role: string; - /** - * The content of the message as a string. - */ - content: string; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - response_format?: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode_1; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode_1 { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -type Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Output = { - /** - * The generated text response from the model - */ - response: string; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; - /** - * An array of tool calls requests made during the response generation - */ - tool_calls?: { - /** - * The arguments passed to be passed to the tool call request - */ - arguments?: object; - /** - * The name of the tool to be called - */ - name?: string; - }[]; -}; -declare abstract class Base_Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct { - inputs: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Input; - postProcessedOutputs: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Output; -} -type Ai_Cf_Qwen_Qwq_32B_Input = Ai_Cf_Qwen_Qwq_32B_Prompt | Ai_Cf_Qwen_Qwq_32B_Messages; -interface Ai_Cf_Qwen_Qwq_32B_Prompt { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * JSON schema that should be fulfilled for the response. - */ - guided_json?: object; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Qwen_Qwq_32B_Messages { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role?: string; - /** - * The tool call id. If you don't know what to put here you can fall back to 000000001 - */ - tool_call_id?: string; - content?: string | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }[] | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - /** - * JSON schema that should be fufilled for the response. - */ - guided_json?: object; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -type Ai_Cf_Qwen_Qwq_32B_Output = { - /** - * The generated text response from the model - */ - response: string; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; - /** - * An array of tool calls requests made during the response generation - */ - tool_calls?: { - /** - * The arguments passed to be passed to the tool call request - */ - arguments?: object; - /** - * The name of the tool to be called - */ - name?: string; - }[]; -}; -declare abstract class Base_Ai_Cf_Qwen_Qwq_32B { - inputs: Ai_Cf_Qwen_Qwq_32B_Input; - postProcessedOutputs: Ai_Cf_Qwen_Qwq_32B_Output; -} -type Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Input = Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Prompt | Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Messages; -interface Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Prompt { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * JSON schema that should be fulfilled for the response. - */ - guided_json?: object; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Messages { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role?: string; - /** - * The tool call id. Must be supplied for tool calls for Mistral-3. If you don't know what to put here you can fall back to 000000001 - */ - tool_call_id?: string; - content?: string | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }[] | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - /** - * JSON schema that should be fufilled for the response. - */ - guided_json?: object; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -type Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Output = { - /** - * The generated text response from the model - */ - response: string; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; - /** - * An array of tool calls requests made during the response generation - */ - tool_calls?: { - /** - * The arguments passed to be passed to the tool call request - */ - arguments?: object; - /** - * The name of the tool to be called - */ - name?: string; - }[]; -}; -declare abstract class Base_Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct { - inputs: Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Input; - postProcessedOutputs: Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Output; -} -type Ai_Cf_Google_Gemma_3_12B_It_Input = Ai_Cf_Google_Gemma_3_12B_It_Prompt | Ai_Cf_Google_Gemma_3_12B_It_Messages; -interface Ai_Cf_Google_Gemma_3_12B_It_Prompt { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * JSON schema that should be fufilled for the response. - */ - guided_json?: object; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Google_Gemma_3_12B_It_Messages { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role?: string; - content?: string | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }[]; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - /** - * JSON schema that should be fufilled for the response. - */ - guided_json?: object; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -type Ai_Cf_Google_Gemma_3_12B_It_Output = { - /** - * The generated text response from the model - */ - response: string; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; - /** - * An array of tool calls requests made during the response generation - */ - tool_calls?: { - /** - * The arguments passed to be passed to the tool call request - */ - arguments?: object; - /** - * The name of the tool to be called - */ - name?: string; - }[]; -}; -declare abstract class Base_Ai_Cf_Google_Gemma_3_12B_It { - inputs: Ai_Cf_Google_Gemma_3_12B_It_Input; - postProcessedOutputs: Ai_Cf_Google_Gemma_3_12B_It_Output; -} -type Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Input = Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt | Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages | Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Async_Batch; -interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * JSON schema that should be fulfilled for the response. - */ - guided_json?: object; - response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role?: string; - /** - * The tool call id. If you don't know what to put here you can fall back to 000000001 - */ - tool_call_id?: string; - content?: string | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }[] | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; - /** - * JSON schema that should be fufilled for the response. - */ - guided_json?: object; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Async_Batch { - requests: (Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt_Inner | Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages_Inner)[]; -} -interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt_Inner { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * JSON schema that should be fulfilled for the response. - */ - guided_json?: object; - response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages_Inner { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role?: string; - /** - * The tool call id. If you don't know what to put here you can fall back to 000000001 - */ - tool_call_id?: string; - content?: string | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }[] | { - /** - * Type of the content provided - */ - type?: string; - text?: string; - image_url?: { - /** - * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted - */ - url?: string; - }; - }; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; - /** - * JSON schema that should be fufilled for the response. - */ - guided_json?: object; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -type Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Output = { - /** - * The generated text response from the model - */ - response: string; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; - /** - * An array of tool calls requests made during the response generation - */ - tool_calls?: { - /** - * The tool call id. - */ - id?: string; - /** - * Specifies the type of tool (e.g., 'function'). - */ - type?: string; - /** - * Details of the function tool. - */ - function?: { - /** - * The name of the tool to be called - */ - name?: string; - /** - * The arguments passed to be passed to the tool call request - */ - arguments?: object; - }; - }[]; -}; -declare abstract class Base_Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct { - inputs: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Input; - postProcessedOutputs: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Output; -} -type Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Input = Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Async_Batch; -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. - */ - lora?: string; - response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role: string; - content: string | { - /** - * Type of the content (text) - */ - type?: string; - /** - * Text content - */ - text?: string; - }[]; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_1; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_1 { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Async_Batch { - requests: (Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt_1 | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages_1)[]; -} -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt_1 { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. - */ - lora?: string; - response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_2; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_2 { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages_1 { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role: string; - content: string | { - /** - * Type of the content (text) - */ - type?: string; - /** - * Text content - */ - text?: string; - }[]; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_3; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_3 { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -type Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Output = Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Chat_Completion_Response | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Text_Completion_Response | string | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_AsyncResponse; -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Chat_Completion_Response { - /** - * Unique identifier for the completion - */ - id?: string; - /** - * Object type identifier - */ - object?: "chat.completion"; - /** - * Unix timestamp of when the completion was created - */ - created?: number; - /** - * Model used for the completion - */ - model?: string; - /** - * List of completion choices - */ - choices?: { - /** - * Index of the choice in the list - */ - index?: number; - /** - * The message generated by the model - */ - message?: { - /** - * Role of the message author - */ - role: string; - /** - * The content of the message - */ - content: string; - /** - * Internal reasoning content (if available) - */ - reasoning_content?: string; - /** - * Tool calls made by the assistant - */ - tool_calls?: { - /** - * Unique identifier for the tool call - */ - id: string; - /** - * Type of tool call - */ - type: "function"; - function: { - /** - * Name of the function to call - */ - name: string; - /** - * JSON string of arguments for the function - */ - arguments: string; - }; - }[]; - }; - /** - * Reason why the model stopped generating - */ - finish_reason?: string; - /** - * Stop reason (may be null) - */ - stop_reason?: string | null; - /** - * Log probabilities (if requested) - */ - logprobs?: {} | null; - }[]; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; - /** - * Log probabilities for the prompt (if requested) - */ - prompt_logprobs?: {} | null; -} -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Text_Completion_Response { - /** - * Unique identifier for the completion - */ - id?: string; - /** - * Object type identifier - */ - object?: "text_completion"; - /** - * Unix timestamp of when the completion was created - */ - created?: number; - /** - * Model used for the completion - */ - model?: string; - /** - * List of completion choices - */ - choices?: { - /** - * Index of the choice in the list - */ - index: number; - /** - * The generated text completion - */ - text: string; - /** - * Reason why the model stopped generating - */ - finish_reason: string; - /** - * Stop reason (may be null) - */ - stop_reason?: string | null; - /** - * Log probabilities (if requested) - */ - logprobs?: {} | null; - /** - * Log probabilities for the prompt (if requested) - */ - prompt_logprobs?: {} | null; - }[]; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; -} -interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_AsyncResponse { - /** - * The async request id that can be used to obtain the results. - */ - request_id?: string; -} -declare abstract class Base_Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8 { - inputs: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Input; - postProcessedOutputs: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Output; -} -interface Ai_Cf_Deepgram_Nova_3_Input { - audio: { - body: object; - contentType: string; - }; - /** - * Sets how the model will interpret strings submitted to the custom_topic param. When strict, the model will only return topics submitted using the custom_topic param. When extended, the model will return its own detected topics in addition to those submitted using the custom_topic param. - */ - custom_topic_mode?: "extended" | "strict"; - /** - * Custom topics you want the model to detect within your input audio or text if present Submit up to 100 - */ - custom_topic?: string; - /** - * Sets how the model will interpret intents submitted to the custom_intent param. When strict, the model will only return intents submitted using the custom_intent param. When extended, the model will return its own detected intents in addition those submitted using the custom_intents param - */ - custom_intent_mode?: "extended" | "strict"; - /** - * Custom intents you want the model to detect within your input audio if present - */ - custom_intent?: string; - /** - * Identifies and extracts key entities from content in submitted audio - */ - detect_entities?: boolean; - /** - * Identifies the dominant language spoken in submitted audio - */ - detect_language?: boolean; - /** - * Recognize speaker changes. Each word in the transcript will be assigned a speaker number starting at 0 - */ - diarize?: boolean; - /** - * Identify and extract key entities from content in submitted audio - */ - dictation?: boolean; - /** - * Specify the expected encoding of your submitted audio - */ - encoding?: "linear16" | "flac" | "mulaw" | "amr-nb" | "amr-wb" | "opus" | "speex" | "g729"; - /** - * Arbitrary key-value pairs that are attached to the API response for usage in downstream processing - */ - extra?: string; - /** - * Filler Words can help transcribe interruptions in your audio, like 'uh' and 'um' - */ - filler_words?: boolean; - /** - * Key term prompting can boost or suppress specialized terminology and brands. - */ - keyterm?: string; - /** - * Keywords can boost or suppress specialized terminology and brands. - */ - keywords?: string; - /** - * The BCP-47 language tag that hints at the primary spoken language. Depending on the Model and API endpoint you choose only certain languages are available. - */ - language?: string; - /** - * Spoken measurements will be converted to their corresponding abbreviations. - */ - measurements?: boolean; - /** - * Opts out requests from the Deepgram Model Improvement Program. Refer to our Docs for pricing impacts before setting this to true. https://dpgr.am/deepgram-mip. - */ - mip_opt_out?: boolean; - /** - * Mode of operation for the model representing broad area of topic that will be talked about in the supplied audio - */ - mode?: "general" | "medical" | "finance"; - /** - * Transcribe each audio channel independently. - */ - multichannel?: boolean; - /** - * Numerals converts numbers from written format to numerical format. - */ - numerals?: boolean; - /** - * Splits audio into paragraphs to improve transcript readability. - */ - paragraphs?: boolean; - /** - * Profanity Filter looks for recognized profanity and converts it to the nearest recognized non-profane word or removes it from the transcript completely. - */ - profanity_filter?: boolean; - /** - * Add punctuation and capitalization to the transcript. - */ - punctuate?: boolean; - /** - * Redaction removes sensitive information from your transcripts. - */ - redact?: string; - /** - * Search for terms or phrases in submitted audio and replaces them. - */ - replace?: string; - /** - * Search for terms or phrases in submitted audio. - */ - search?: string; - /** - * Recognizes the sentiment throughout a transcript or text. - */ - sentiment?: boolean; - /** - * Apply formatting to transcript output. When set to true, additional formatting will be applied to transcripts to improve readability. - */ - smart_format?: boolean; - /** - * Detect topics throughout a transcript or text. - */ - topics?: boolean; - /** - * Segments speech into meaningful semantic units. - */ - utterances?: boolean; - /** - * Seconds to wait before detecting a pause between words in submitted audio. - */ - utt_split?: number; - /** - * The number of channels in the submitted audio - */ - channels?: number; - /** - * Specifies whether the streaming endpoint should provide ongoing transcription updates as more audio is received. When set to true, the endpoint sends continuous updates, meaning transcription results may evolve over time. Note: Supported only for webosockets. - */ - interim_results?: boolean; - /** - * Indicates how long model will wait to detect whether a speaker has finished speaking or pauses for a significant period of time. When set to a value, the streaming endpoint immediately finalizes the transcription for the processed time range and returns the transcript with a speech_final parameter set to true. Can also be set to false to disable endpointing - */ - endpointing?: string; - /** - * Indicates that speech has started. You'll begin receiving Speech Started messages upon speech starting. Note: Supported only for webosockets. - */ - vad_events?: boolean; - /** - * Indicates how long model will wait to send an UtteranceEnd message after a word has been transcribed. Use with interim_results. Note: Supported only for webosockets. - */ - utterance_end_ms?: boolean; -} -interface Ai_Cf_Deepgram_Nova_3_Output { - results?: { - channels?: { - alternatives?: { - confidence?: number; - transcript?: string; - words?: { - confidence?: number; - end?: number; - start?: number; - word?: string; - }[]; - }[]; - }[]; - summary?: { - result?: string; - short?: string; - }; - sentiments?: { - segments?: { - text?: string; - start_word?: number; - end_word?: number; - sentiment?: string; - sentiment_score?: number; - }[]; - average?: { - sentiment?: string; - sentiment_score?: number; - }; - }; - }; -} -declare abstract class Base_Ai_Cf_Deepgram_Nova_3 { - inputs: Ai_Cf_Deepgram_Nova_3_Input; - postProcessedOutputs: Ai_Cf_Deepgram_Nova_3_Output; -} -interface Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Input { - queries?: string | string[]; - /** - * Optional instruction for the task - */ - instruction?: string; - documents?: string | string[]; - text?: string | string[]; -} -interface Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Output { - data?: number[][]; - shape?: number[]; -} -declare abstract class Base_Ai_Cf_Qwen_Qwen3_Embedding_0_6B { - inputs: Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Input; - postProcessedOutputs: Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Output; -} -type Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Input = { - /** - * readable stream with audio data and content-type specified for that data - */ - audio: { - body: object; - contentType: string; - }; - /** - * type of data PCM data that's sent to the inference server as raw array - */ - dtype?: "uint8" | "float32" | "float64"; -} | { - /** - * base64 encoded audio data - */ - audio: string; - /** - * type of data PCM data that's sent to the inference server as raw array - */ - dtype?: "uint8" | "float32" | "float64"; -}; -interface Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Output { - /** - * if true, end-of-turn was detected - */ - is_complete?: boolean; - /** - * probability of the end-of-turn detection - */ - probability?: number; -} -declare abstract class Base_Ai_Cf_Pipecat_Ai_Smart_Turn_V2 { - inputs: Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Input; - postProcessedOutputs: Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Output; -} -declare abstract class Base_Ai_Cf_Openai_Gpt_Oss_120B { - inputs: XOR; - postProcessedOutputs: XOR; -} -declare abstract class Base_Ai_Cf_Openai_Gpt_Oss_20B { - inputs: XOR; - postProcessedOutputs: XOR; -} -interface Ai_Cf_Leonardo_Phoenix_1_0_Input { - /** - * A text description of the image you want to generate. - */ - prompt: string; - /** - * Controls how closely the generated image should adhere to the prompt; higher values make the image more aligned with the prompt - */ - guidance?: number; - /** - * Random seed for reproducibility of the image generation - */ - seed?: number; - /** - * The height of the generated image in pixels - */ - height?: number; - /** - * The width of the generated image in pixels - */ - width?: number; - /** - * The number of diffusion steps; higher values can improve quality but take longer - */ - num_steps?: number; - /** - * Specify what to exclude from the generated images - */ - negative_prompt?: string; -} -/** - * The generated image in JPEG format - */ -type Ai_Cf_Leonardo_Phoenix_1_0_Output = string; -declare abstract class Base_Ai_Cf_Leonardo_Phoenix_1_0 { - inputs: Ai_Cf_Leonardo_Phoenix_1_0_Input; - postProcessedOutputs: Ai_Cf_Leonardo_Phoenix_1_0_Output; -} -interface Ai_Cf_Leonardo_Lucid_Origin_Input { - /** - * A text description of the image you want to generate. - */ - prompt: string; - /** - * Controls how closely the generated image should adhere to the prompt; higher values make the image more aligned with the prompt - */ - guidance?: number; - /** - * Random seed for reproducibility of the image generation - */ - seed?: number; - /** - * The height of the generated image in pixels - */ - height?: number; - /** - * The width of the generated image in pixels - */ - width?: number; - /** - * The number of diffusion steps; higher values can improve quality but take longer - */ - num_steps?: number; - /** - * The number of diffusion steps; higher values can improve quality but take longer - */ - steps?: number; -} -interface Ai_Cf_Leonardo_Lucid_Origin_Output { - /** - * The generated image in Base64 format. - */ - image?: string; -} -declare abstract class Base_Ai_Cf_Leonardo_Lucid_Origin { - inputs: Ai_Cf_Leonardo_Lucid_Origin_Input; - postProcessedOutputs: Ai_Cf_Leonardo_Lucid_Origin_Output; -} -interface Ai_Cf_Deepgram_Aura_1_Input { - /** - * Speaker used to produce the audio. - */ - speaker?: "angus" | "asteria" | "arcas" | "orion" | "orpheus" | "athena" | "luna" | "zeus" | "perseus" | "helios" | "hera" | "stella"; - /** - * Encoding of the output audio. - */ - encoding?: "linear16" | "flac" | "mulaw" | "alaw" | "mp3" | "opus" | "aac"; - /** - * Container specifies the file format wrapper for the output audio. The available options depend on the encoding type.. - */ - container?: "none" | "wav" | "ogg"; - /** - * The text content to be converted to speech - */ - text: string; - /** - * Sample Rate specifies the sample rate for the output audio. Based on the encoding, different sample rates are supported. For some encodings, the sample rate is not configurable - */ - sample_rate?: number; - /** - * The bitrate of the audio in bits per second. Choose from predefined ranges or specific values based on the encoding type. - */ - bit_rate?: number; -} -/** - * The generated audio in MP3 format - */ -type Ai_Cf_Deepgram_Aura_1_Output = string; -declare abstract class Base_Ai_Cf_Deepgram_Aura_1 { - inputs: Ai_Cf_Deepgram_Aura_1_Input; - postProcessedOutputs: Ai_Cf_Deepgram_Aura_1_Output; -} -interface Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Input { - /** - * Input text to translate. Can be a single string or a list of strings. - */ - text: string | string[]; - /** - * Target langauge to translate to - */ - target_language: "asm_Beng" | "awa_Deva" | "ben_Beng" | "bho_Deva" | "brx_Deva" | "doi_Deva" | "eng_Latn" | "gom_Deva" | "gon_Deva" | "guj_Gujr" | "hin_Deva" | "hne_Deva" | "kan_Knda" | "kas_Arab" | "kas_Deva" | "kha_Latn" | "lus_Latn" | "mag_Deva" | "mai_Deva" | "mal_Mlym" | "mar_Deva" | "mni_Beng" | "mni_Mtei" | "npi_Deva" | "ory_Orya" | "pan_Guru" | "san_Deva" | "sat_Olck" | "snd_Arab" | "snd_Deva" | "tam_Taml" | "tel_Telu" | "urd_Arab" | "unr_Deva"; -} -interface Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Output { - /** - * Translated texts - */ - translations: string[]; -} -declare abstract class Base_Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B { - inputs: Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Input; - postProcessedOutputs: Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Output; -} -type Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Input = Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Async_Batch; -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. - */ - lora?: string; - response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role: string; - content: string | { - /** - * Type of the content (text) - */ - type?: string; - /** - * Text content - */ - text?: string; - }[]; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_1; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_1 { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Async_Batch { - requests: (Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt_1 | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages_1)[]; -} -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt_1 { - /** - * The input text prompt for the model to generate a response. - */ - prompt: string; - /** - * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. - */ - lora?: string; - response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_2; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_2 { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages_1 { - /** - * An array of message objects representing the conversation history. - */ - messages: { - /** - * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). - */ - role: string; - content: string | { - /** - * Type of the content (text) - */ - type?: string; - /** - * Text content - */ - text?: string; - }[]; - }[]; - functions?: { - name: string; - code: string; - }[]; - /** - * A list of tools available for the assistant to use. - */ - tools?: ({ - /** - * The name of the tool. More descriptive the better. - */ - name: string; - /** - * A brief description of what the tool does. - */ - description: string; - /** - * Schema defining the parameters accepted by the tool. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - } | { - /** - * Specifies the type of tool (e.g., 'function'). - */ - type: string; - /** - * Details of the function tool. - */ - function: { - /** - * The name of the function. - */ - name: string; - /** - * A brief description of what the function does. - */ - description: string; - /** - * Schema defining the parameters accepted by the function. - */ - parameters: { - /** - * The type of the parameters object (usually 'object'). - */ - type: string; - /** - * List of required parameter names. - */ - required?: string[]; - /** - * Definitions of each parameter. - */ - properties: { - [k: string]: { - /** - * The data type of the parameter. - */ - type: string; - /** - * A description of the expected parameter. - */ - description: string; - }; - }; - }; - }; - })[]; - response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_3; - /** - * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. - */ - raw?: boolean; - /** - * If true, the response will be streamed back incrementally using SSE, Server Sent Events. - */ - stream?: boolean; - /** - * The maximum number of tokens to generate in the response. - */ - max_tokens?: number; - /** - * Controls the randomness of the output; higher values produce more random results. - */ - temperature?: number; - /** - * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. - */ - top_p?: number; - /** - * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. - */ - top_k?: number; - /** - * Random seed for reproducibility of the generation. - */ - seed?: number; - /** - * Penalty for repeated tokens; higher values discourage repetition. - */ - repetition_penalty?: number; - /** - * Decreases the likelihood of the model repeating the same lines verbatim. - */ - frequency_penalty?: number; - /** - * Increases the likelihood of the model introducing new topics. - */ - presence_penalty?: number; -} -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_3 { - type?: "json_object" | "json_schema"; - json_schema?: unknown; -} -type Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Output = Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Chat_Completion_Response | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Text_Completion_Response | string | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_AsyncResponse; -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Chat_Completion_Response { - /** - * Unique identifier for the completion - */ - id?: string; - /** - * Object type identifier - */ - object?: "chat.completion"; - /** - * Unix timestamp of when the completion was created - */ - created?: number; - /** - * Model used for the completion - */ - model?: string; - /** - * List of completion choices - */ - choices?: { - /** - * Index of the choice in the list - */ - index?: number; - /** - * The message generated by the model - */ - message?: { - /** - * Role of the message author - */ - role: string; - /** - * The content of the message - */ - content: string; - /** - * Internal reasoning content (if available) - */ - reasoning_content?: string; - /** - * Tool calls made by the assistant - */ - tool_calls?: { - /** - * Unique identifier for the tool call - */ - id: string; - /** - * Type of tool call - */ - type: "function"; - function: { - /** - * Name of the function to call - */ - name: string; - /** - * JSON string of arguments for the function - */ - arguments: string; - }; - }[]; - }; - /** - * Reason why the model stopped generating - */ - finish_reason?: string; - /** - * Stop reason (may be null) - */ - stop_reason?: string | null; - /** - * Log probabilities (if requested) - */ - logprobs?: {} | null; - }[]; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; - /** - * Log probabilities for the prompt (if requested) - */ - prompt_logprobs?: {} | null; -} -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Text_Completion_Response { - /** - * Unique identifier for the completion - */ - id?: string; - /** - * Object type identifier - */ - object?: "text_completion"; - /** - * Unix timestamp of when the completion was created - */ - created?: number; - /** - * Model used for the completion - */ - model?: string; - /** - * List of completion choices - */ - choices?: { - /** - * Index of the choice in the list - */ - index: number; - /** - * The generated text completion - */ - text: string; - /** - * Reason why the model stopped generating - */ - finish_reason: string; - /** - * Stop reason (may be null) - */ - stop_reason?: string | null; - /** - * Log probabilities (if requested) - */ - logprobs?: {} | null; - /** - * Log probabilities for the prompt (if requested) - */ - prompt_logprobs?: {} | null; - }[]; - /** - * Usage statistics for the inference request - */ - usage?: { - /** - * Total number of tokens in input - */ - prompt_tokens?: number; - /** - * Total number of tokens in output - */ - completion_tokens?: number; - /** - * Total number of input and output tokens - */ - total_tokens?: number; - }; -} -interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_AsyncResponse { - /** - * The async request id that can be used to obtain the results. - */ - request_id?: string; -} -declare abstract class Base_Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It { - inputs: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Input; - postProcessedOutputs: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Output; -} -interface Ai_Cf_Pfnet_Plamo_Embedding_1B_Input { - /** - * Input text to embed. Can be a single string or a list of strings. - */ - text: string | string[]; -} -interface Ai_Cf_Pfnet_Plamo_Embedding_1B_Output { - /** - * Embedding vectors, where each vector is a list of floats. - */ - data: number[][]; - /** - * Shape of the embedding data as [number_of_embeddings, embedding_dimension]. - * - * @minItems 2 - * @maxItems 2 - */ - shape: [ - number, - number - ]; -} -declare abstract class Base_Ai_Cf_Pfnet_Plamo_Embedding_1B { - inputs: Ai_Cf_Pfnet_Plamo_Embedding_1B_Input; - postProcessedOutputs: Ai_Cf_Pfnet_Plamo_Embedding_1B_Output; -} -interface Ai_Cf_Deepgram_Flux_Input { - /** - * Encoding of the audio stream. Currently only supports raw signed little-endian 16-bit PCM. - */ - encoding: "linear16"; - /** - * Sample rate of the audio stream in Hz. - */ - sample_rate: string; - /** - * End-of-turn confidence required to fire an eager end-of-turn event. When set, enables EagerEndOfTurn and TurnResumed events. Valid Values 0.3 - 0.9. - */ - eager_eot_threshold?: string; - /** - * End-of-turn confidence required to finish a turn. Valid Values 0.5 - 0.9. - */ - eot_threshold?: string; - /** - * A turn will be finished when this much time has passed after speech, regardless of EOT confidence. - */ - eot_timeout_ms?: string; - /** - * Keyterm prompting can improve recognition of specialized terminology. Pass multiple keyterm query parameters to boost multiple keyterms. - */ - keyterm?: string; - /** - * Opts out requests from the Deepgram Model Improvement Program. Refer to Deepgram Docs for pricing impacts before setting this to true. https://dpgr.am/deepgram-mip - */ - mip_opt_out?: "true" | "false"; - /** - * Label your requests for the purpose of identification during usage reporting - */ - tag?: string; -} -/** - * Output will be returned as websocket messages. - */ -interface Ai_Cf_Deepgram_Flux_Output { - /** - * The unique identifier of the request (uuid) - */ - request_id?: string; - /** - * Starts at 0 and increments for each message the server sends to the client. - */ - sequence_id?: number; - /** - * The type of event being reported. - */ - event?: "Update" | "StartOfTurn" | "EagerEndOfTurn" | "TurnResumed" | "EndOfTurn"; - /** - * The index of the current turn - */ - turn_index?: number; - /** - * Start time in seconds of the audio range that was transcribed - */ - audio_window_start?: number; - /** - * End time in seconds of the audio range that was transcribed - */ - audio_window_end?: number; - /** - * Text that was said over the course of the current turn - */ - transcript?: string; - /** - * The words in the transcript - */ - words?: { - /** - * The individual punctuated, properly-cased word from the transcript - */ - word: string; - /** - * Confidence that this word was transcribed correctly - */ - confidence: number; - }[]; - /** - * Confidence that no more speech is coming in this turn - */ - end_of_turn_confidence?: number; -} -declare abstract class Base_Ai_Cf_Deepgram_Flux { - inputs: Ai_Cf_Deepgram_Flux_Input; - postProcessedOutputs: Ai_Cf_Deepgram_Flux_Output; -} -interface Ai_Cf_Deepgram_Aura_2_En_Input { - /** - * Speaker used to produce the audio. - */ - speaker?: "amalthea" | "andromeda" | "apollo" | "arcas" | "aries" | "asteria" | "athena" | "atlas" | "aurora" | "callista" | "cora" | "cordelia" | "delia" | "draco" | "electra" | "harmonia" | "helena" | "hera" | "hermes" | "hyperion" | "iris" | "janus" | "juno" | "jupiter" | "luna" | "mars" | "minerva" | "neptune" | "odysseus" | "ophelia" | "orion" | "orpheus" | "pandora" | "phoebe" | "pluto" | "saturn" | "thalia" | "theia" | "vesta" | "zeus"; - /** - * Encoding of the output audio. - */ - encoding?: "linear16" | "flac" | "mulaw" | "alaw" | "mp3" | "opus" | "aac"; - /** - * Container specifies the file format wrapper for the output audio. The available options depend on the encoding type.. - */ - container?: "none" | "wav" | "ogg"; - /** - * The text content to be converted to speech - */ - text: string; - /** - * Sample Rate specifies the sample rate for the output audio. Based on the encoding, different sample rates are supported. For some encodings, the sample rate is not configurable - */ - sample_rate?: number; - /** - * The bitrate of the audio in bits per second. Choose from predefined ranges or specific values based on the encoding type. - */ - bit_rate?: number; -} -/** - * The generated audio in MP3 format - */ -type Ai_Cf_Deepgram_Aura_2_En_Output = string; -declare abstract class Base_Ai_Cf_Deepgram_Aura_2_En { - inputs: Ai_Cf_Deepgram_Aura_2_En_Input; - postProcessedOutputs: Ai_Cf_Deepgram_Aura_2_En_Output; -} -interface Ai_Cf_Deepgram_Aura_2_Es_Input { - /** - * Speaker used to produce the audio. - */ - speaker?: "sirio" | "nestor" | "carina" | "celeste" | "alvaro" | "diana" | "aquila" | "selena" | "estrella" | "javier"; - /** - * Encoding of the output audio. - */ - encoding?: "linear16" | "flac" | "mulaw" | "alaw" | "mp3" | "opus" | "aac"; - /** - * Container specifies the file format wrapper for the output audio. The available options depend on the encoding type.. - */ - container?: "none" | "wav" | "ogg"; - /** - * The text content to be converted to speech - */ - text: string; - /** - * Sample Rate specifies the sample rate for the output audio. Based on the encoding, different sample rates are supported. For some encodings, the sample rate is not configurable - */ - sample_rate?: number; - /** - * The bitrate of the audio in bits per second. Choose from predefined ranges or specific values based on the encoding type. - */ - bit_rate?: number; -} -/** - * The generated audio in MP3 format - */ -type Ai_Cf_Deepgram_Aura_2_Es_Output = string; -declare abstract class Base_Ai_Cf_Deepgram_Aura_2_Es { - inputs: Ai_Cf_Deepgram_Aura_2_Es_Input; - postProcessedOutputs: Ai_Cf_Deepgram_Aura_2_Es_Output; -} -interface Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Input { - multipart: { - body?: object; - contentType?: string; - }; -} -interface Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Output { - /** - * Generated image as Base64 string. - */ - image?: string; -} -declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_2_Dev { - inputs: Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Input; - postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Output; -} -interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Input { - multipart: { - body?: object; - contentType?: string; - }; -} -interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Output { - /** - * Generated image as Base64 string. - */ - image?: string; -} -declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B { - inputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Input; - postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Output; -} -interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Input { - multipart: { - body?: object; - contentType?: string; - }; -} -interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Output { - /** - * Generated image as Base64 string. - */ - image?: string; -} -declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B { - inputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Input; - postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Output; -} -declare abstract class Base_Ai_Cf_Zai_Org_Glm_4_7_Flash { - inputs: ChatCompletionsInput; - postProcessedOutputs: ChatCompletionsOutput; -} -declare abstract class Base_Ai_Cf_Moonshotai_Kimi_K2_5 { - inputs: ChatCompletionsInput; - postProcessedOutputs: ChatCompletionsOutput; -} -declare abstract class Base_Ai_Cf_Moonshotai_Kimi_K2_6 { - inputs: ChatCompletionsInput; - postProcessedOutputs: ChatCompletionsOutput; -} -declare abstract class Base_Ai_Cf_Nvidia_Nemotron_3_120B_A12B { - inputs: ChatCompletionsInput; - postProcessedOutputs: ChatCompletionsOutput; -} -declare abstract class Base_Ai_Cf_Google_Gemma_4_26B_A4B_IT { - inputs: ChatCompletionsInput; - postProcessedOutputs: ChatCompletionsOutput; -} -interface AiModels { - "@cf/huggingface/distilbert-sst-2-int8": BaseAiTextClassification; - "@cf/stabilityai/stable-diffusion-xl-base-1.0": BaseAiTextToImage; - "@cf/runwayml/stable-diffusion-v1-5-inpainting": BaseAiTextToImage; - "@cf/runwayml/stable-diffusion-v1-5-img2img": BaseAiTextToImage; - "@cf/lykon/dreamshaper-8-lcm": BaseAiTextToImage; - "@cf/bytedance/stable-diffusion-xl-lightning": BaseAiTextToImage; - "@cf/myshell-ai/melotts": BaseAiTextToSpeech; - "@cf/google/embeddinggemma-300m": BaseAiTextEmbeddings; - "@cf/microsoft/resnet-50": BaseAiImageClassification; - "@cf/meta/llama-2-7b-chat-int8": BaseAiTextGeneration; - "@cf/mistral/mistral-7b-instruct-v0.1": BaseAiTextGeneration; - "@cf/meta/llama-2-7b-chat-fp16": BaseAiTextGeneration; - "@hf/thebloke/llama-2-13b-chat-awq": BaseAiTextGeneration; - "@hf/thebloke/mistral-7b-instruct-v0.1-awq": BaseAiTextGeneration; - "@hf/thebloke/zephyr-7b-beta-awq": BaseAiTextGeneration; - "@hf/thebloke/openhermes-2.5-mistral-7b-awq": BaseAiTextGeneration; - "@hf/thebloke/neural-chat-7b-v3-1-awq": BaseAiTextGeneration; - "@hf/thebloke/deepseek-coder-6.7b-base-awq": BaseAiTextGeneration; - "@hf/thebloke/deepseek-coder-6.7b-instruct-awq": BaseAiTextGeneration; - "@cf/deepseek-ai/deepseek-math-7b-instruct": BaseAiTextGeneration; - "@cf/defog/sqlcoder-7b-2": BaseAiTextGeneration; - "@cf/openchat/openchat-3.5-0106": BaseAiTextGeneration; - "@cf/tiiuae/falcon-7b-instruct": BaseAiTextGeneration; - "@cf/thebloke/discolm-german-7b-v1-awq": BaseAiTextGeneration; - "@cf/qwen/qwen1.5-0.5b-chat": BaseAiTextGeneration; - "@cf/qwen/qwen1.5-7b-chat-awq": BaseAiTextGeneration; - "@cf/qwen/qwen1.5-14b-chat-awq": BaseAiTextGeneration; - "@cf/tinyllama/tinyllama-1.1b-chat-v1.0": BaseAiTextGeneration; - "@cf/microsoft/phi-2": BaseAiTextGeneration; - "@cf/qwen/qwen1.5-1.8b-chat": BaseAiTextGeneration; - "@cf/mistral/mistral-7b-instruct-v0.2-lora": BaseAiTextGeneration; - "@hf/nousresearch/hermes-2-pro-mistral-7b": BaseAiTextGeneration; - "@hf/nexusflow/starling-lm-7b-beta": BaseAiTextGeneration; - "@hf/google/gemma-7b-it": BaseAiTextGeneration; - "@cf/meta-llama/llama-2-7b-chat-hf-lora": BaseAiTextGeneration; - "@cf/google/gemma-2b-it-lora": BaseAiTextGeneration; - "@cf/google/gemma-7b-it-lora": BaseAiTextGeneration; - "@hf/mistral/mistral-7b-instruct-v0.2": BaseAiTextGeneration; - "@cf/meta/llama-3-8b-instruct": BaseAiTextGeneration; - "@cf/fblgit/una-cybertron-7b-v2-bf16": BaseAiTextGeneration; - "@cf/meta/llama-3-8b-instruct-awq": BaseAiTextGeneration; - "@cf/meta/llama-3.1-8b-instruct-fp8": BaseAiTextGeneration; - "@cf/meta/llama-3.1-8b-instruct-awq": BaseAiTextGeneration; - "@cf/meta/llama-3.2-3b-instruct": BaseAiTextGeneration; - "@cf/meta/llama-3.2-1b-instruct": BaseAiTextGeneration; - "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b": BaseAiTextGeneration; - "@cf/ibm-granite/granite-4.0-h-micro": BaseAiTextGeneration; - "@cf/facebook/bart-large-cnn": BaseAiSummarization; - "@cf/llava-hf/llava-1.5-7b-hf": BaseAiImageToText; - "@cf/baai/bge-base-en-v1.5": Base_Ai_Cf_Baai_Bge_Base_En_V1_5; - "@cf/openai/whisper": Base_Ai_Cf_Openai_Whisper; - "@cf/meta/m2m100-1.2b": Base_Ai_Cf_Meta_M2M100_1_2B; - "@cf/baai/bge-small-en-v1.5": Base_Ai_Cf_Baai_Bge_Small_En_V1_5; - "@cf/baai/bge-large-en-v1.5": Base_Ai_Cf_Baai_Bge_Large_En_V1_5; - "@cf/unum/uform-gen2-qwen-500m": Base_Ai_Cf_Unum_Uform_Gen2_Qwen_500M; - "@cf/openai/whisper-tiny-en": Base_Ai_Cf_Openai_Whisper_Tiny_En; - "@cf/openai/whisper-large-v3-turbo": Base_Ai_Cf_Openai_Whisper_Large_V3_Turbo; - "@cf/baai/bge-m3": Base_Ai_Cf_Baai_Bge_M3; - "@cf/black-forest-labs/flux-1-schnell": Base_Ai_Cf_Black_Forest_Labs_Flux_1_Schnell; - "@cf/meta/llama-3.2-11b-vision-instruct": Base_Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct; - "@cf/meta/llama-3.3-70b-instruct-fp8-fast": Base_Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast; - "@cf/meta/llama-guard-3-8b": Base_Ai_Cf_Meta_Llama_Guard_3_8B; - "@cf/baai/bge-reranker-base": Base_Ai_Cf_Baai_Bge_Reranker_Base; - "@cf/qwen/qwen2.5-coder-32b-instruct": Base_Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct; - "@cf/qwen/qwq-32b": Base_Ai_Cf_Qwen_Qwq_32B; - "@cf/mistralai/mistral-small-3.1-24b-instruct": Base_Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct; - "@cf/google/gemma-3-12b-it": Base_Ai_Cf_Google_Gemma_3_12B_It; - "@cf/meta/llama-4-scout-17b-16e-instruct": Base_Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct; - "@cf/qwen/qwen3-30b-a3b-fp8": Base_Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8; - "@cf/deepgram/nova-3": Base_Ai_Cf_Deepgram_Nova_3; - "@cf/qwen/qwen3-embedding-0.6b": Base_Ai_Cf_Qwen_Qwen3_Embedding_0_6B; - "@cf/pipecat-ai/smart-turn-v2": Base_Ai_Cf_Pipecat_Ai_Smart_Turn_V2; - "@cf/openai/gpt-oss-120b": Base_Ai_Cf_Openai_Gpt_Oss_120B; - "@cf/openai/gpt-oss-20b": Base_Ai_Cf_Openai_Gpt_Oss_20B; - "@cf/leonardo/phoenix-1.0": Base_Ai_Cf_Leonardo_Phoenix_1_0; - "@cf/leonardo/lucid-origin": Base_Ai_Cf_Leonardo_Lucid_Origin; - "@cf/deepgram/aura-1": Base_Ai_Cf_Deepgram_Aura_1; - "@cf/ai4bharat/indictrans2-en-indic-1B": Base_Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B; - "@cf/aisingapore/gemma-sea-lion-v4-27b-it": Base_Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It; - "@cf/pfnet/plamo-embedding-1b": Base_Ai_Cf_Pfnet_Plamo_Embedding_1B; - "@cf/deepgram/flux": Base_Ai_Cf_Deepgram_Flux; - "@cf/deepgram/aura-2-en": Base_Ai_Cf_Deepgram_Aura_2_En; - "@cf/deepgram/aura-2-es": Base_Ai_Cf_Deepgram_Aura_2_Es; - "@cf/black-forest-labs/flux-2-dev": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Dev; - "@cf/black-forest-labs/flux-2-klein-4b": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B; - "@cf/black-forest-labs/flux-2-klein-9b": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B; - "@cf/zai-org/glm-4.7-flash": Base_Ai_Cf_Zai_Org_Glm_4_7_Flash; - "@cf/moonshotai/kimi-k2.5": Base_Ai_Cf_Moonshotai_Kimi_K2_5; - "@cf/moonshotai/kimi-k2.6": Base_Ai_Cf_Moonshotai_Kimi_K2_6; - "@cf/nvidia/nemotron-3-120b-a12b": Base_Ai_Cf_Nvidia_Nemotron_3_120B_A12B; - "@cf/google/gemma-4-26b-a4b-it": Base_Ai_Cf_Google_Gemma_4_26B_A4B_IT; -} -type AiOptions = { - /** - * Send requests as an asynchronous batch job, only works for supported models - * https://developers.cloudflare.com/workers-ai/features/batch-api - */ - queueRequest?: boolean; - /** - * Establish websocket connections, only works for supported models - */ - websocket?: boolean; - /** - * Tag your requests to group and view them in Cloudflare dashboard. - * - * Rules: - * Tags must only contain letters, numbers, and the symbols: : - . / @ - * Each tag can have maximum 50 characters. - * Maximum 5 tags are allowed each request. - * Duplicate tags will removed. - */ - tags?: string[]; - gateway?: GatewayOptions; - returnRawResponse?: boolean; - prefix?: string; - extraHeaders?: object; - signal?: AbortSignal; -}; -type AiModelsSearchParams = { - author?: string; - hide_experimental?: boolean; - page?: number; - per_page?: number; - search?: string; - source?: number; - task?: string; -}; -type AiModelsSearchObject = { - id: string; - source: number; - name: string; - description: string; - task: { - id: string; - name: string; - description: string; - }; - tags: string[]; - properties: { - property_id: string; - value: string; - }[]; -}; -type ChatCompletionsBase = ChatCompletionsMessagesInput; -type ChatCompletionsInput = ChatCompletionsMessagesInput; -interface InferenceUpstreamError extends Error { -} -interface AiInternalError extends Error { -} -type AiModelListType = Record; -type AiAsyncBatchResponse = { - request_id: string; -}; -declare abstract class Ai { - aiGatewayLogId: string | null; - gateway(gatewayId: string): AiGateway; - /** - * @deprecated Use the standalone `ai_search_namespaces` or `ai_search` Workers bindings instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ - aiSearch(): AiSearchNamespace; - /** - * @deprecated AutoRAG has been replaced by AI Search. - * Use the standalone `ai_search_namespaces` or `ai_search` Workers bindings instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - * - * @param autoragId Instance ID - */ - autorag(autoragId: string): AutoRAG; - // Batch request - run(model: Name, inputs: { - requests: AiModelList[Name]['inputs'][]; - }, options: AiOptions & { - queueRequest: true; - }): Promise; - // Raw response - run(model: Name, inputs: AiModelList[Name]['inputs'], options: AiOptions & { - returnRawResponse: true; - }): Promise; - // WebSocket - run(model: Name, inputs: AiModelList[Name]['inputs'], options: AiOptions & { - websocket: true; - }): Promise; - // Streaming - run(model: Name, inputs: AiModelList[Name]['inputs'] & { - stream: true; - }, options?: AiOptions): Promise; - // Normal (default) - known model - run(model: Name, inputs: AiModelList[Name]['inputs'], options?: AiOptions): Promise; - // Unknown model (fallback). - // - // The `Exclude<..., keyof AiModelList>` constraint forces TypeScript to - // route any model name that is a literal key of `AiModelList` to one of - // the known-model overloads above (so input/output mismatches surface as - // type errors rather than silently falling back to `Record`). - // Names that aren't in `AiModelList` — e.g. third-party gateway models - // like `"google/nano-banana"` — still hit this overload. - run(model: Model extends keyof AiModelList ? never : Model, inputs: Record, options?: AiOptions): Promise>; - models(params?: AiModelsSearchParams): Promise; - toMarkdown(): ToMarkdownService; - toMarkdown(files: MarkdownDocument[], options?: ConversionRequestOptions): Promise; - toMarkdown(files: MarkdownDocument, options?: ConversionRequestOptions): Promise; -} -type GatewayRetries = { - maxAttempts?: 1 | 2 | 3 | 4 | 5; - retryDelayMs?: number; - backoff?: 'constant' | 'linear' | 'exponential'; -}; -type GatewayOptions = { - id: string; - cacheKey?: string; - cacheTtl?: number; - skipCache?: boolean; - metadata?: Record; - collectLog?: boolean; - eventId?: string; - requestTimeoutMs?: number; - retries?: GatewayRetries; -}; -type UniversalGatewayOptions = Exclude & { - /** - ** @deprecated - */ - id?: string; -}; -type AiGatewayPatchLog = { - score?: number | null; - feedback?: -1 | 1 | null; - metadata?: Record | null; -}; -type AiGatewayLog = { - id: string; - provider: string; - model: string; - model_type?: string; - path: string; - duration: number; - request_type?: string; - request_content_type?: string; - status_code: number; - response_content_type?: string; - success: boolean; - cached: boolean; - tokens_in?: number; - tokens_out?: number; - metadata?: Record; - step?: number; - cost?: number; - custom_cost?: boolean; - request_size: number; - request_head?: string; - request_head_complete: boolean; - response_size: number; - response_head?: string; - response_head_complete: boolean; - created_at: Date; -}; -type AIGatewayProviders = 'workers-ai' | 'anthropic' | 'aws-bedrock' | 'azure-openai' | 'google-vertex-ai' | 'huggingface' | 'openai' | 'perplexity-ai' | 'replicate' | 'groq' | 'cohere' | 'google-ai-studio' | 'mistral' | 'grok' | 'openrouter' | 'deepseek' | 'cerebras' | 'cartesia' | 'elevenlabs' | 'adobe-firefly'; -type AIGatewayHeaders = { - 'cf-aig-metadata': Record | string; - 'cf-aig-custom-cost': { - per_token_in?: number; - per_token_out?: number; - } | { - total_cost?: number; - } | string; - 'cf-aig-cache-ttl': number | string; - 'cf-aig-skip-cache': boolean | string; - 'cf-aig-cache-key': string; - 'cf-aig-event-id': string; - 'cf-aig-request-timeout': number | string; - 'cf-aig-max-attempts': number | string; - 'cf-aig-retry-delay': number | string; - 'cf-aig-backoff': string; - 'cf-aig-collect-log': boolean | string; - Authorization: string; - 'Content-Type': string; - [key: string]: string | number | boolean | object; -}; -type AIGatewayUniversalRequest = { - provider: AIGatewayProviders | string; // eslint-disable-line - endpoint: string; - headers: Partial; - query: unknown; -}; -interface AiGatewayInternalError extends Error { -} -interface AiGatewayLogNotFound extends Error { -} -declare abstract class AiGateway { - patchLog(logId: string, data: AiGatewayPatchLog): Promise; - getLog(logId: string): Promise; - run(data: AIGatewayUniversalRequest | AIGatewayUniversalRequest[], options?: { - gateway?: UniversalGatewayOptions; - extraHeaders?: object; - signal?: AbortSignal; - }): Promise; - getUrl(provider?: AIGatewayProviders | string): Promise; // eslint-disable-line -} -// Copyright (c) 2022-2025 Cloudflare, Inc. -// Licensed under the Apache 2.0 license found in the LICENSE file or at: -// https://opensource.org/licenses/Apache-2.0 -/** - * Artifacts — Git-compatible file storage on Cloudflare Workers. - * - * Provides programmatic access to create, manage, and fork repositories, - * and to issue and revoke scoped access tokens. - */ -/** Information about a repository. */ -interface ArtifactsRepoInfo { - /** Unique repository ID. */ - id: string; - /** Repository name. */ - name: string; - /** Repository description, or null if not set. */ - description: string | null; - /** Default branch name (e.g. "main"). */ - defaultBranch: string; - /** ISO 8601 creation timestamp. */ - createdAt: string; - /** ISO 8601 last-updated timestamp. */ - updatedAt: string; - /** ISO 8601 timestamp of the last push, or null if never pushed. */ - lastPushAt: string | null; - /** Fork source (e.g. "github:owner/repo", "artifacts:namespace/repo"), or null if not a fork. */ - source: string | null; - /** Whether the repository is read-only. */ - readOnly: boolean; - /** HTTPS git remote URL. */ - remote: string; -} -/** Result of creating a repository — includes the initial access token. */ -interface ArtifactsCreateRepoResult { - /** Unique repository ID. */ - id: string; - /** Repository name. */ - name: string; - /** Repository description, or null if not set. */ - description: string | null; - /** Default branch name. */ - defaultBranch: string; - /** HTTPS git remote URL. */ - remote: string; - /** Plaintext access token (only returned at creation time). */ - token: string; - /** ISO 8601 token expiry timestamp. */ - tokenExpiresAt: string; -} -/** Paginated list of repositories. */ -interface ArtifactsRepoListResult { - /** Repositories in this page (without the `remote` field). */ - repos: Omit[]; - /** Total number of repositories in the namespace. */ - total: number; - /** Cursor for the next page, if there are more results. */ - cursor?: string; -} -/** Result of creating an access token. */ -interface ArtifactsCreateTokenResult { - /** Unique token ID. */ - id: string; - /** Plaintext token (only returned at creation time). */ - plaintext: string; - /** Token scope: "read" or "write". */ - scope: 'read' | 'write'; - /** ISO 8601 token expiry timestamp. */ - expiresAt: string; -} -/** Token metadata (no plaintext). */ -interface ArtifactsTokenInfo { - /** Unique token ID. */ - id: string; - /** Token scope: "read" or "write". */ - scope: 'read' | 'write'; - /** Token state: "active", "expired", or "revoked". */ - state: 'active' | 'expired' | 'revoked'; - /** ISO 8601 creation timestamp. */ - createdAt: string; - /** ISO 8601 expiry timestamp. */ - expiresAt: string; -} -/** Paginated list of tokens for a repository. */ -interface ArtifactsTokenListResult { - /** Tokens in this page. */ - tokens: ArtifactsTokenInfo[]; - /** Total number of tokens for the repository. */ - total: number; -} -/** - * Handle for a single repository. Returned by Artifacts.get(). - * - * Methods may throw `ArtifactsError` with code `INTERNAL_ERROR` if an unexpected service error occurs. - */ -interface ArtifactsRepo extends ArtifactsRepoInfo { - /** - * Create an access token for this repo. - * @param scope Token scope: "write" (default) or "read". - * @param ttl Time-to-live in seconds (default 86400, min 60, max 31536000). - * @throws {ArtifactsError} with code `INVALID_TTL` if ttl is out of range. - */ - createToken(scope?: 'write' | 'read', ttl?: number): Promise; - /** List tokens for this repo (metadata only, no plaintext). */ - listTokens(): Promise; - /** - * Revoke a token by plaintext or ID. - * @param tokenOrId Plaintext token or token ID. - * @returns true if revoked, false if not found. - * @throws {ArtifactsError} with code `INVALID_INPUT` if tokenOrId is empty. - */ - revokeToken(tokenOrId: string): Promise; - // ── Fork ── - /** - * Fork this repo to a new repo. - * @param name Target repository name. - * @param opts Optional: description, readOnly flag, defaultBranchOnly (default true). - * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid. - * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the target repo already exists. - * @throws {ArtifactsError} with code `FORK_IN_PROGRESS` if a fork is already running. - */ - fork(name: string, opts?: { - description?: string; - readOnly?: boolean; - defaultBranchOnly?: boolean; - }): Promise; -} -// ── Error types ────────────────────────────────────────────────────────────── -/** - * Error codes returned by Artifacts binding operations. - * - * Each code maps to a numeric code available on `ArtifactsError.numericCode`. - */ -type ArtifactsErrorCode = 'ALREADY_EXISTS' | 'NOT_FOUND' | 'IMPORT_IN_PROGRESS' | 'FORK_IN_PROGRESS' | 'INVALID_INPUT' | 'INVALID_REPO_NAME' | 'INVALID_TTL' | 'INVALID_URL' | 'REMOTE_AUTH_REQUIRED' | 'UPSTREAM_UNAVAILABLE' | 'MEMORY_LIMIT' | 'INTERNAL_ERROR'; -/** - * Error thrown by Artifacts binding operations. - * - * Uses a string `.code` discriminator following the Cloudflare platform - * convention (StreamError, ImagesError, etc.). The `.numericCode` matches - * the REST API `errors[].code` values. - */ -interface ArtifactsError extends Error { - readonly name: 'ArtifactsError'; - /** String error code for programmatic matching. */ - readonly code: ArtifactsErrorCode; - /** Numeric error code matching the REST API. */ - readonly numericCode: number; -} -// ── Binding ────────────────────────────────────────────────────────────────── -/** - * Artifacts binding — namespace-level operations. - * - * Methods may throw `ArtifactsError` with code `INTERNAL_ERROR` if an unexpected service error occurs. - */ -interface Artifacts { - /** - * Create a new repository with an initial access token. - * @param name Repository name (alphanumeric, dots, hyphens, underscores). - * @param opts Optional: readOnly flag, description, default branch name. - * @returns Repo metadata with initial token. - * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid. - * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the repo already exists. - */ - create(name: string, opts?: { - readOnly?: boolean; - description?: string; - setDefaultBranch?: string; - }): Promise; - /** - * Get a handle to an existing repository. - * @param name Repository name. - * @returns Repo handle. - * @throws {ArtifactsError} with code `NOT_FOUND` if the repo does not exist. - * @throws {ArtifactsError} with code `IMPORT_IN_PROGRESS` if the repo is still importing. - * @throws {ArtifactsError} with code `FORK_IN_PROGRESS` if the repo is still forking. - */ - get(name: string): Promise; - /** - * Import a repository from an external git remote. - * @param params Source URL and optional branch/depth, plus target name and options. - * @returns Repo metadata with initial token. - * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if the target name is invalid. - * @throws {ArtifactsError} with code `INVALID_INPUT` if the source URL is not valid HTTPS. - * @throws {ArtifactsError} with code `INVALID_URL` if the source URL does not point to a git repository. - * @throws {ArtifactsError} with code `REMOTE_AUTH_REQUIRED` if the remote requires authentication. - * @throws {ArtifactsError} with code `NOT_FOUND` if the remote repository does not exist. - * @throws {ArtifactsError} with code `UPSTREAM_UNAVAILABLE` if the remote cannot be reached. - * @throws {ArtifactsError} with code `MEMORY_LIMIT` if the import exceeds service memory limits. - * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the target repo already exists. - */ - import(params: { - source: { - url: string; - branch?: string; - depth?: number; - }; - target: { - name: string; - opts?: { - description?: string; - readOnly?: boolean; - }; - }; - }): Promise; - /** - * List repositories with cursor-based pagination. - * @param opts Optional: limit (1–200, default 50), cursor for next page. - */ - list(opts?: { - limit?: number; - cursor?: string; - }): Promise; - /** - * Delete a repository and all associated tokens. - * @param name Repository name. - * @returns true if deleted, false if not found. - * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid. - */ - delete(name: string): Promise; -} -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -interface AutoRAGInternalError extends Error { -} -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -interface AutoRAGNotFoundError extends Error { -} -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -interface AutoRAGUnauthorizedError extends Error { -} -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -interface AutoRAGNameNotSetError extends Error { -} -type ComparisonFilter = { - key: string; - type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte'; - value: string | number | boolean; -}; -type CompoundFilter = { - type: 'and' | 'or'; - filters: ComparisonFilter[]; -}; -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -type AutoRagSearchRequest = { - query: string; - filters?: CompoundFilter | ComparisonFilter; - max_num_results?: number; - ranking_options?: { - ranker?: string; - score_threshold?: number; - }; - reranking?: { - enabled?: boolean; - model?: string; - }; - rewrite_query?: boolean; -}; -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -type AutoRagAiSearchRequest = AutoRagSearchRequest & { - stream?: boolean; - system_prompt?: string; -}; -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -type AutoRagAiSearchRequestStreaming = Omit & { - stream: true; -}; -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -type AutoRagSearchResponse = { - object: 'vector_store.search_results.page'; - search_query: string; - data: { - file_id: string; - filename: string; - score: number; - attributes: Record; - content: { - type: 'text'; - text: string; - }[]; - }[]; - has_more: boolean; - next_page: string | null; -}; -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -type AutoRagListResponse = { - id: string; - enable: boolean; - type: string; - source: string; - vectorize_name: string; - paused: boolean; - status: string; -}[]; -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -type AutoRagAiSearchResponse = AutoRagSearchResponse & { - response: string; -}; -/** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ -declare abstract class AutoRAG { - /** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ - list(): Promise; - /** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ - search(params: AutoRagSearchRequest): Promise; - /** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ - aiSearch(params: AutoRagAiSearchRequestStreaming): Promise; - /** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ - aiSearch(params: AutoRagAiSearchRequest): Promise; - /** - * @deprecated Use the standalone AI Search Workers binding instead. - * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ - */ - aiSearch(params: AutoRagAiSearchRequest): Promise; -} -type BrowserRunLifecycleEvent = 'load' | 'domcontentloaded' | 'networkidle0' | 'networkidle2'; -type BrowserRunResourceType = 'document' | 'stylesheet' | 'image' | 'media' | 'font' | 'script' | 'texttrack' | 'xhr' | 'fetch' | 'prefetch' | 'eventsource' | 'websocket' | 'manifest' | 'signedexchange' | 'ping' | 'cspviolationreport' | 'preflight' | 'other'; -/** Options fields shared by all quick actions. */ -interface BrowserRunBaseOptions { - /** Adds `

        hTmHx; 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 FvU&!kSC7xx?H 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 -<#$$H$FE>8JTsqzS0h8U(-X^b?^K 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�GHC)pgD+83r2>z)E@U1s_W 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⪚jAV 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

        -

        Data Table Query

        -
        ${safePath}
        -
        - -
        -
        -

        Filters

        - -
        -
        - -
        This form is saved in your browser and restored automatically next time you open this table.
        -
        - -
        -

        Aggregation

        -
        -
        - -
        -
        -
        -
        -
        - -
        -
        -
        - - -
        -
        -
        Leave operations unchecked to fetch raw filtered rows.
        -
        - -
        -

        Output

        -
        -
        -
        -
        -
        -
        - -
        -
        -
        -
        -

        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 Z3q3vEJuLra>g_#GMGYkYaAG){{0|weL9YM+ literal 0 HcmV?d00001 diff --git a/packages/pmtiles-server/test/dataTables/params.test.ts b/packages/pmtiles-server/test/dataTables/params.test.ts new file mode 100644 index 000000000..a8c23f2ea --- /dev/null +++ b/packages/pmtiles-server/test/dataTables/params.test.ts @@ -0,0 +1,129 @@ +import { describe, expect, it } from "vitest"; +import { + canonicalQueryString, + parseInList, + parseQueryParams, + QueryError, +} from "../../src/dataTables/params"; + +function parse(qs: string) { + return parseQueryParams(new URLSearchParams(qs)); +} + +describe("parseInList", () => { + it("parses simple lists", () => { + expect(parseInList("a,b,c")).toEqual(["a", "b", "c"]); + }); + + it("trims unquoted items", () => { + expect(parseInList("a , b")).toEqual(["a", "b"]); + }); + + it("supports quoted items containing commas", () => { + expect(parseInList('"Smith, John",UCSB')).toEqual(["Smith, John", "UCSB"]); + }); + + it("supports escaped quotes", () => { + expect(parseInList('"say ""hi""",x')).toEqual(['say "hi"', "x"]); + }); +}); + +describe("parseQueryParams", () => { + it("parses bare values as equality filters", () => { + const q = parse("q.year=2018&q.classcode=PYCHEL"); + expect(q.filters).toEqual([ + { column: "year", op: "eq", value: "2018" }, + { column: "classcode", op: "eq", value: "PYCHEL" }, + ]); + }); + + it("parses comparison operators", () => { + const q = parse("q.count=gte.5&q.depth=lt.10.5"); + expect(q.filters).toEqual([ + { column: "count", op: "gte", value: "5" }, + { column: "depth", op: "lt", value: "10.5" }, + ]); + }); + + it("parses in lists", () => { + const q = parse("q.observer=in.(Chad Burt,Lyal Belquist)"); + expect(q.filters).toEqual([ + { column: "observer", op: "in", values: ["Chad Burt", "Lyal Belquist"] }, + ]); + }); + + it("parses null tests", () => { + const q = parse("q.size=is.null&q.depth=not.null"); + expect(q.filters).toEqual([ + { column: "size", op: "isNull" }, + { column: "depth", op: "notNull" }, + ]); + }); + + it("ANDs repeated filters on the same column", () => { + const q = parse("q.year=gte.2010&q.year=lte.2018"); + expect(q.filters).toHaveLength(2); + }); + + it("parses groupBy, op and column", () => { + const q = parse("groupBy=site,zone&op=mean,count&column=count"); + expect(q.groupBy).toEqual(["site", "zone"]); + expect(q.ops).toEqual(["mean", "count"]); + expect(q.column).toBe("count"); + }); + + it("requires column for non-count aggregations", () => { + expect(() => parse("groupBy=site&op=mean")).toThrow(QueryError); + }); + + it("allows op=count without a column", () => { + const q = parse("groupBy=site&op=count"); + expect(q.column).toBeNull(); + }); + + it("requires op when groupBy is present", () => { + expect(() => parse("groupBy=site")).toThrow(QueryError); + }); + + it("rejects unknown aggregations", () => { + expect(() => parse("op=stddev&column=count")).toThrow(QueryError); + }); + + it("defaults to no limit and accepts explicit limits", () => { + expect(parse("groupBy=site&op=count").limit).toBeNull(); + expect(parse("limit=500").limit).toBe(500); + expect(parse("limit=100000").limit).toBe(100000); + }); + + it("rejects invalid formats, limits and offsets", () => { + expect(() => parse("f=xml")).toThrow(QueryError); + expect(() => parse("limit=0")).toThrow(QueryError); + expect(() => parse("limit=abc")).toThrow(QueryError); + expect(() => parse("offset=-1")).toThrow(QueryError); + }); + + it("parses orderBy with direction", () => { + expect(parse("orderBy=mean:desc").orderBy).toEqual({ + key: "mean", + direction: "desc", + }); + expect(parse("orderBy=site").orderBy).toEqual({ + key: "site", + direction: "asc", + }); + expect(() => parse("orderBy=site:sideways")).toThrow(QueryError); + }); +}); + +describe("canonicalQueryString", () => { + it("orders parameters deterministically and drops f", () => { + const a = canonicalQueryString( + new URLSearchParams("f=json&q.b=2&q.a=1&groupBy=site&op=mean&column=c") + ); + const b = canonicalQueryString( + new URLSearchParams("op=mean&q.a=1&column=c&groupBy=site&q.b=2&f=html") + ); + expect(a).toBe(b); + expect(a).not.toContain("f="); + }); +}); diff --git a/packages/pmtiles-server/test/resource.spec.ts b/packages/pmtiles-server/test/resource.spec.ts index a55b99cc1..e4670348f 100644 --- a/packages/pmtiles-server/test/resource.spec.ts +++ b/packages/pmtiles-server/test/resource.spec.ts @@ -22,6 +22,16 @@ describe("overlay resource classification", () => { "/projects/example/public/11111111-1111-1111-1111-111111111111.fgb", ), ).toMatchObject({ kind: "published", slug: "example" }); + // Data-table assets under the parent layer UUID inherit published ACL. + expect( + classifyResource( + "/projects/example/public/11111111-1111-1111-1111-111111111111/dataTables/22222222-2222-2222-2222-222222222222/query", + ), + ).toMatchObject({ + kind: "published", + slug: "example", + uuid: "11111111-1111-1111-1111-111111111111", + }); expect( classifyResource("/projects/example/subdivided/42-output.fgb"), ).toMatchObject({ kind: "subdivided", slug: "example" }); diff --git a/packages/pmtiles-server/vitest.config.mts b/packages/pmtiles-server/vitest.config.mts index b6c748a17..d677689a7 100644 --- a/packages/pmtiles-server/vitest.config.mts +++ b/packages/pmtiles-server/vitest.config.mts @@ -2,9 +2,30 @@ import { cloudflareTest } from "@cloudflare/vitest-pool-workers"; import { defineConfig } from "vitest/config"; export default defineConfig({ - plugins: [ - cloudflareTest({ - wrangler: { configPath: "./wrangler.toml" }, - }), - ], + test: { + projects: [ + { + test: { + name: "workers", + include: ["test/**/*.spec.ts", "test/**/*.test.ts"], + exclude: ["test/dataTables/engine.test.ts", "test/dataTables/calculations.test.ts"], + }, + plugins: [ + cloudflareTest({ + wrangler: { configPath: "./wrangler.toml" }, + }), + ], + }, + { + test: { + name: "node-engine", + environment: "node", + include: [ + "test/dataTables/engine.test.ts", + "test/dataTables/calculations.test.ts", + ], + }, + }, + ], + }, }); diff --git a/packages/pmtiles-server/wrangler.toml b/packages/pmtiles-server/wrangler.toml index bd07d6c4d..d90674da4 100644 --- a/packages/pmtiles-server/wrangler.toml +++ b/packages/pmtiles-server/wrangler.toml @@ -2,7 +2,8 @@ name = "overlay-data-server" main = "src/index.ts" compatibility_date = "2026-07-14" # Request-scoped timing context for Server-Timing (see src/timing.ts). -compatibility_flags = ["nodejs_als"] +# nodejs_compat covers ALS (timing) and hyparquet's node-lean deps. +compatibility_flags = ["nodejs_compat"] # Workers Caching: serves cache hits without invoking the worker, collapses # concurrent misses, and participates in tiered caching. @@ -33,6 +34,12 @@ type = "worker" [exports.PropertiesBackend.cache] enabled = true +# Data-table /query aggregations are deterministic per path+query string. +[exports.DataTablesBackend] +type = "worker" +[exports.DataTablesBackend.cache] +enabled = true + [vars] # Rollout knobs. Defaults are lax for cutover. AUTH_ACL_ENABLED = "false" From 763b1c4627acd0a646f24dc55d28b7750e212a6a Mon Sep 17 00:00:00 2001 From: Chad Burt Date: Mon, 20 Jul 2026 13:35:57 -0700 Subject: [PATCH 11/32] REmove data-tables-worker as it has been replaced by a backend in pmtiles-server --- lerna.json | 1 - .../src/dataLayers/dataTableQueryApi.ts | 6 +- .../src/dataLayers/useDataTableColumnStats.ts | 2 +- packages/data-tables-worker/.dev.vars | 1 - ...42f34dd046319deebea43729d00000019f38b6a5de | Bin 147394 -> 0 bytes ...a46d1662c07b9c34bc301f4b4d0000019f38b6a561 | Bin 5320 -> 0 bytes ...88302053dccba5fc3f886838f60000019f38b6a614 | Bin 21938 -> 0 bytes ...991a43e3c6921d79557c54a75b0000019f38b6a5d1 | Bin 37673 -> 0 bytes ...894c9cf64a238dd37dec5094980000019f38b6a5c3 | Bin 126917 -> 0 bytes ...0f7af144cc810fc9e0a04531750000019f38b6a5b7 | Bin 4562 -> 0 bytes ...d1d7acffecfc5f40a8f94a262e0000019f38b6a5e5 | Bin 239 -> 0 bytes ...769285748a92730810ad0f8b0a0000019f38b6d73f | Bin 80836 -> 0 bytes ...c73dbb6da779a49cde1537d2990000019f38b6a51a | Bin 524288 -> 0 bytes ...8173daaa6c521629e631dca2d60000019f38b6a54d | Bin 221 -> 0 bytes ...8723078c52a465b89f8f4884d90000019f38b6d70d | Bin 76971 -> 0 bytes ...1baf92d034efbcaaf4336379640ed744ded.sqlite | Bin 24576 -> 0 bytes ...92d034efbcaaf4336379640ed744ded.sqlite-shm | Bin 32768 -> 0 bytes ...92d034efbcaaf4336379640ed744ded.sqlite-wal | 0 .../miniflare-CacheObject/metadata.sqlite | Bin 4096 -> 0 bytes .../miniflare-CacheObject/metadata.sqlite-shm | Bin 32768 -> 0 bytes .../miniflare-CacheObject/metadata.sqlite-wal | Bin 8272 -> 0 bytes .../miniflare-R2BucketObject/metadata.sqlite | Bin 4096 -> 0 bytes .../metadata.sqlite-shm | Bin 32768 -> 0 bytes .../metadata.sqlite-wal | Bin 8272 -> 0 bytes .../middleware-insertion-facade.js | 11 - .../bundle-sWKaAx/middleware-loader.entry.ts | 134 - .../.wrangler/tmp/dev-xNCQ0m/index.js | 6381 ------- .../.wrangler/tmp/dev-xNCQ0m/index.js.map | 8 - packages/data-tables-worker/README.md | 309 - packages/data-tables-worker/package-lock.json | 2597 --- packages/data-tables-worker/package.json | 22 - .../src/engine/asyncBuffer.ts | 164 - .../src/engine/blockReader.ts | 139 - .../data-tables-worker/src/engine/execute.ts | 372 - .../data-tables-worker/src/engine/plan.ts | 404 - packages/data-tables-worker/src/index.ts | 319 - packages/data-tables-worker/src/params.ts | 263 - packages/data-tables-worker/src/ui/html.ts | 498 - .../test/blockReader.test.ts | 107 - .../test/calculations.test.ts | 486 - .../data-tables-worker/test/engine.test.ts | 255 - .../test/fixtures/data.parquet | Bin 1086796 -> 0 bytes .../data-tables-worker/test/params.test.ts | 129 - packages/data-tables-worker/tsconfig.json | 13 - packages/data-tables-worker/vitest.config.mts | 11 - .../worker-configuration.d.ts | 14656 ---------------- packages/data-tables-worker/wrangler.jsonc | 34 - .../pmtiles-server/src/dataTables/ui/html.ts | 2 +- 48 files changed, 5 insertions(+), 27319 deletions(-) delete mode 100644 packages/data-tables-worker/.dev.vars delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/08f6adde00a6bee62f1bc8be1366e64cd8165d42f34dd046319deebea43729d00000019f38b6a5de delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/3a00c07f61487234a6ac16e39ac8e165e93393a46d1662c07b9c34bc301f4b4d0000019f38b6a561 delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/4008aabbcb9b28305a40ab474bad9da0976fb788302053dccba5fc3f886838f60000019f38b6a614 delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/7c50bf6ba95d4d24d6bc53f7deb65a0c133aab991a43e3c6921d79557c54a75b0000019f38b6a5d1 delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/a959f2a7ca613f283c8d520e5d44c614a2bde7894c9cf64a238dd37dec5094980000019f38b6a5c3 delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/b5f89f6ac641704cb0eb92a11ee7754d30367e0f7af144cc810fc9e0a04531750000019f38b6a5b7 delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/c76b7bb4ee3452ef14040a1a7fc87e3dce69fdd1d7acffecfc5f40a8f94a262e0000019f38b6a5e5 delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/d5a12bd9cac93a5da9f608e84a631a949a1e7f769285748a92730810ad0f8b0a0000019f38b6d73f delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e3305727e1ed951890bdbc6332a55a77e410b3c73dbb6da779a49cde1537d2990000019f38b6a51a delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e9fcaadb80eaea680234943181c0156c3dd8ff8173daaa6c521629e631dca2d60000019f38b6a54d delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/fb71a08753cd3f90789711e4894b8a12dd38878723078c52a465b89f8f4884d90000019f38b6d70d delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/9f458c07675338a7426a7b81ac4fb1baf92d034efbcaaf4336379640ed744ded.sqlite delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/9f458c07675338a7426a7b81ac4fb1baf92d034efbcaaf4336379640ed744ded.sqlite-shm delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/9f458c07675338a7426a7b81ac4fb1baf92d034efbcaaf4336379640ed744ded.sqlite-wal delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-shm delete mode 100644 packages/data-tables-worker/.wrangler/state/v3/r2/miniflare-R2BucketObject/metadata.sqlite-wal delete mode 100644 packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-insertion-facade.js delete mode 100644 packages/data-tables-worker/.wrangler/tmp/bundle-sWKaAx/middleware-loader.entry.ts delete mode 100644 packages/data-tables-worker/.wrangler/tmp/dev-xNCQ0m/index.js delete mode 100644 packages/data-tables-worker/.wrangler/tmp/dev-xNCQ0m/index.js.map delete mode 100644 packages/data-tables-worker/README.md delete mode 100644 packages/data-tables-worker/package-lock.json delete mode 100644 packages/data-tables-worker/package.json delete mode 100644 packages/data-tables-worker/src/engine/asyncBuffer.ts delete mode 100644 packages/data-tables-worker/src/engine/blockReader.ts delete mode 100644 packages/data-tables-worker/src/engine/execute.ts delete mode 100644 packages/data-tables-worker/src/engine/plan.ts delete mode 100644 packages/data-tables-worker/src/index.ts delete mode 100644 packages/data-tables-worker/src/params.ts delete mode 100644 packages/data-tables-worker/src/ui/html.ts delete mode 100644 packages/data-tables-worker/test/blockReader.test.ts delete mode 100644 packages/data-tables-worker/test/calculations.test.ts delete mode 100644 packages/data-tables-worker/test/engine.test.ts delete mode 100644 packages/data-tables-worker/test/fixtures/data.parquet delete mode 100644 packages/data-tables-worker/test/params.test.ts delete mode 100644 packages/data-tables-worker/tsconfig.json delete mode 100644 packages/data-tables-worker/vitest.config.mts delete mode 100644 packages/data-tables-worker/worker-configuration.d.ts delete mode 100644 packages/data-tables-worker/wrangler.jsonc diff --git a/lerna.json b/lerna.json index 7b64de7f0..174feea13 100644 --- a/lerna.json +++ b/lerna.json @@ -17,7 +17,6 @@ "packages/fgb-source", "packages/overlay-engine", "packages/sketch-preprocessing-worker", - "packages/data-tables-worker", "packages/overlay-worker", "packages/fragment-worker", "packages/ai-data-analyst", diff --git a/packages/client/src/dataLayers/dataTableQueryApi.ts b/packages/client/src/dataLayers/dataTableQueryApi.ts index 776842b35..6b7a67014 100644 --- a/packages/client/src/dataLayers/dataTableQueryApi.ts +++ b/packages/client/src/dataLayers/dataTableQueryApi.ts @@ -45,8 +45,8 @@ * **JSON response** (aggregated): `{ table, totalRows, rowsScanned, rowsMatched, * rowGroups, timing, groups }`. Raw mode returns `rows` instead of `groups`. * - * Worker implementation: `packages/data-tables-worker/src/params.ts`. - * Extended reference: `packages/data-tables-worker/README.md`. + * Implementation: `packages/pmtiles-server/src/dataTables/params.ts`. + * Extended reference: `packages/pmtiles-server/README.md`. * * @module dataTableQueryApi */ @@ -72,7 +72,7 @@ export const DATA_TABLE_AGGREGATIONS: DataTableAggregation[] = [ /** * Filter operator for structured settings. Matches `FilterOperator` in - * `packages/data-tables-worker/src/params.ts`. + * `packages/pmtiles-server/src/dataTables/params.ts`. * * URL encoding: `isNull` → `q.{col}=is.null`, `notNull` → `q.{col}=not.null`. * There is no `not.in`; use `neq` or multiple filters instead. diff --git a/packages/client/src/dataLayers/useDataTableColumnStats.ts b/packages/client/src/dataLayers/useDataTableColumnStats.ts index 5676f19da..14230517e 100644 --- a/packages/client/src/dataLayers/useDataTableColumnStats.ts +++ b/packages/client/src/dataLayers/useDataTableColumnStats.ts @@ -88,7 +88,7 @@ export function fetchDataTableColumnStats( * `OverlayDataTable`) so admin and end-user forms can present real column * names and types rather than free text. * - * @see packages/data-tables-worker/README.md#column-statsjson + * @see packages/pmtiles-server/README.md */ export function useDataTableColumnStats( columnStatsUrl?: string | null, diff --git a/packages/data-tables-worker/.dev.vars b/packages/data-tables-worker/.dev.vars deleted file mode 100644 index 66de9bf54..000000000 --- a/packages/data-tables-worker/.dev.vars +++ /dev/null @@ -1 +0,0 @@ -DEV=true diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/08f6adde00a6bee62f1bc8be1366e64cd8165d42f34dd046319deebea43729d00000019f38b6a5de b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/08f6adde00a6bee62f1bc8be1366e64cd8165d42f34dd046319deebea43729d00000019f38b6a5de deleted file mode 100644 index 3e6501a108326da6da4a854c9d26c43dc8fc2463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147394 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:X`QQlV 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 W&h_kZ{pbFl=Ks4-`2XibpYUJh3j|OA diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/3a00c07f61487234a6ac16e39ac8e165e93393a46d1662c07b9c34bc301f4b4d0000019f38b6a561 b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/3a00c07f61487234a6ac16e39ac8e165e93393a46d1662c07b9c34bc301f4b4d0000019f38b6a561 deleted file mode 100644 index fc164407ff8111e9015b7bc464d2150a2bc4af1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5320 zcmX9=e^8Tmntwk}K#2tf6onQoShUcktftnrEFf=^m!HY|hBqO>z>$!(Aw-si7(zs( zNLflFWie11ZOS1cMaE$~m*Y6bW36L5uE#K5$8$Z$<6OscI*!LUU8dtYu6JL&f8Hcd zzVm#a=kt6%pXW`8NI0!Z=u6Ti+@=JM<33ADU&B5$l4KC%wODswmMm&s-oRqIVv|WH z*ox(1W09>~vz~?Yl4#;Z-li37k}R!bkwRGzM4Lh2OV#gj5n2r@H>t}tMUsehi6%i5 zWIi^}%0+7gQHf2-l39?AEEmivMUtVkSTx$Sk?VW(yoOf`f=#Q5WGM~BqGWuHeUVHi zLADu8EFO)-bit_MwSp|MpQ<-Gr7=;%i|m2}F~+#{TzU2{Ij%hNS5d}dS@k)$ORI@t z8H}c4ozB9eSslkIiz3wJ7>Fv+9flBhXg zkOiYLBZ%Lp=p<3FnHaJKAx?QB%_yna9im{|lxmCS%SA1(NSB2IK^8=fU{ghU;}WCv z2EHVo@axm0V$o#d*%5wg8TX#^4UXHRE@BVs5XbF~OiVTj7G5?PZOS@? zx%aGzT;`sQ3^A>sv*~$xYcHoVZ{ey7xN094q1wD7Cqie632^fJdE9Qt>m2uf&F?m8 zq!P&{B&_2sHU3Q^Z_o+Gnt`Y&j*DAw5?0B@sG{KwyiH&b+lq}k0XuNDAc^AymOH`{ zzqK%(*XoO9hMG-?RQ@5tCdMf_BR)+tlrz>9>v@}~TF*r$r}1)Oxu9bh3P?^^&sp&M z=n`JXWAD~z&d7fqW#o1EhpZc1w7yuYJ^o)<-~>J~?nYJ;7saS|{7$-2Q_NVZD`uR* zMt(Vq^(w@rZ7SleysX{9=cRF+B`z*5jS+{xav z^;byY4x}n$nM}me$Yw4sRUe@#R&C)_e?Znfc0$ZzkKLcVe=4$mck=P>jQ`~kD&6JeH36Tv^aA1TNB=Xw+uy@~T7d)G+ptWguvj7eMTXiC*{A3TyU^>94Xj2y#7Mb4die&*!dF1AduB6zE z{fLd0C8;##--Q3p?&Vk^;^=C>Gnula6^yo3rr9jN?OLtsn`L%XQ<`xM@lhIG`8QcH zwG82lXyc0Tmve^`8A%1%EENB%`3+9_RbB!(OWD6f7nbXEslVog12>a4DwmU4nHot` zB*c7@u`fG;Q+~UPMT{CrHWV{a36X!wiszJKb`#j63<)`#%)Cw~97xqSMaRTvgczQ2 zu@RQUnn;FRbIQdX{}jz@ zB=OyavZtJSYr==UxbS+F@`JZ(L@|l0i%HGl`1Q5QD6K5*Zi`dpC2{XR;{OsMi*Y|M z`>Sd*L#6rcU6P46NepPCsazJ0?cbZo!rvOvxBFf)FEVqJ`N9vIPVW52rB!ml&n6II zdE-B$IbF?fVvD45qmYrk>Uc@+HyN24wsPjb;nTwr!s}bj-(HV@9u=+O^#*uT{~UKd zdmFdoZ`Ne4!NYw!@IR)EKjyH;Oib*WRiGGI57cbi@yC)R?%WY1?R}w$&w4GQ*qo8c z3F}?TxR`U7W3}bX7;4^1Gc(=@A~TA@^V^eIiAKR#B)#j5|6G~9i4*?1htWtnAlb^w z1wFGMWjc#;mTxAL)ogObCTZRFUn`@v<$7Vgur6IAm5ZhWHeInOe6zyoHWx-?oAQH1 zouDZyxAHY9`C>6cLB|_kRmcjpByb5+A0*6vkeSfYu^}NMVNC+tDt}5|F|UtcKEPs# zdIYW)xD0Aj9E3SSj?AX&H7bQ`?R7+)MwBUX9%~$mJ6JnN$}6<4U-8;aM6V#`F|A*u z4L2xuP!TtU_^Y&Wlr{w^;UaAwp)IqN_?VKuqu2WsZ}cmYr-+-Otq*A1D7_h?lxa%s zpzYV`tstfSNIQO@o!9AYJF!b-GOfJ^c-AyTG%D)X?28(NLKhW8q#4$T`pANa2S|5k z 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 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/4008aabbcb9b28305a40ab474bad9da0976fb788302053dccba5fc3f886838f60000019f38b6a614 b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/4008aabbcb9b28305a40ab474bad9da0976fb788302053dccba5fc3f886838f60000019f38b6a614 deleted file mode 100644 index ffde59037c221d0e21fdad2f7f08c8615d67f647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21938 zcmX7PeP9#y{r~4v?%KQba=jdvBMsM>OOrNDldjF$8e>dzY0{?9mQo59>KMWYo4ANi&{jrHtn08O_e7xyja9 zxp>hwqp4}GGclvlXwEz~&aS235L#gr)D(H%S<`Vn1u=JTW2&k)TZe7{qfeh&CSjk#VMoJp!JotM&q0YEI7Lv-9)-M zVKg~g(bH&6;Dv+mITZIF%O^XT8-xE4M}HxvbEJ{n@gAZ z6Em6`nj5A&>ymA4RPs+VYNw-nTPk_yEP8jPkw`YqZB9DxOyZ`I&T>ziF)QUX8u5~r z_czX-j=5*Iw&I(N*^`Y)qj^TF6Y#V)G}pJyXg1LU>x}jW>?oORo{TQWoL1nl#b^b* zvjTMu$;Je|TAplbXq<~-v#`NNdMSqAh72NVXUwioH8wQ!>_Vl%*_gbufqk?**$Qxh zu*O+!$p+5@Qtgc9<|JLuG$!e@5u-6#>zq|PqpdANfmTBoq-GFc2K`oSR-4fZxSKQJ zwKXTF=jr{GGiD`QQqHE@hUT`ptx3A4ys-f&jiW;&@S#sGZ#CvN&1g@6 za@Nmin}y+x(`kj@$go~ZvTgRP=}Gpm7k5eE)tC+tc6pnO*6GgHq>)H8c(!wKpyl^U z>kRPRENYa`oeeRVJ7fBcdB&ZFUZqDRCj`atRB6+(NLxd5Qa{Dbnm*T4Xjp8R6RgqJ zbvwJ)-!=oJYH0xHCOP8?8<6S*D#4R&sToa}advaPo^($)+Q8olV@^XK;b-U%v6tvc zXDblW+6a!KuaoAEUTs!O1L)CcHkNp1D{V7ov?Uu^ivUJTq?bskSuc@xkh8Q{-gpn z&md%@AFNjksOpl_+LG)~%8iCuSgYBYn4RI=YxHEtAP2dldCK%;vfgM;uG8a{|A+I` zjOOIrCZpL(tgrlTl6A-FEWdTbhCC}{&9-I}^5|dbh76;Bad;Bldn@_kNG{DWNQ^iM zla)nc631kviJ1~7D^|vw1R5e8b4naXvS<#&WSMn_ZeS}IO4u4E9b>21dN7&9Ww8}d zcv+OKlPFnOZlm)R3=^^`%~3d}XVfXNi*0x>WN#d0=QA4(HpkX;a-n1sve2_9QvNxI^r6OV21=PpHoa|cX=t8H&WcO@v(zThDuR7DC3(F-AZ|L{Xoi1ZI zhFTdL!{-oz{jP@28`I9r@?;_XE|)dBkiN|N%pnOVGMucB!*Kd5Y_J?}u#}Dc3EM{u zK8Ftbh3w`@rYvrf(K8w=J5AUx1t4@Ge~84`5H}ig2DX@UxC~$ud|Ctj{YqgGZ; zHO>~Y4^nH_oxpRar^CTo>8<&NoqqN%$zZa^W0ut&ce0mRACWBY(NB}lu|X#jcMYZ7 z@<4*-SUv^%UuU1Ehls>#Y(-y+{@XH6q_l(E5OeZYdY~W#3iYI8be#4vHi7RWQdte5 zRxZsP%Hh&;K(U+8yVNX#fJtpBJfT6;{tHS^zG`qpVnkHYFQ zV+@0e-o74CPe$M27QI_Y$66#Bmxfak$LCvV3l%x9!qeX~632>s1r-G#%~`OP>DfX1 z3EMQn2lW?eDU;Qqe|M}L{OEa(WV40(a~!0cpRI2pqkYw+ms&Z9{MZ&&q=jr9Erh^> z8v?%@anJxWx{zN1py-|K?T|Q6iv1JTG|{O<(o^Ih`$JYUegSuCqpr;S1Jip-{|A;S zDgv@rO+Ng1Z2g^=CNmO8c&g6x#|9M7#}nC|jyA&UMc-9>t+Rln+u zIU#PG$QT?`GO7g0AImnQG?#cYaHet=CLe$lVg~k zWFddhY^6iPKb3&Ca&KUS<4k>?R{&%SxHQ({S)J@6eV!K>h6Sp#>2v17zBoBZUlk^0 z4W-hza5SBwAvf&+>H&l+&8j8;WEhuc!aV5tr~XIQTJo!zF z3A)MisDL5;={?j3L|#bhROAb(#@87Mwwt7ZX0SgMX&2vS&Jmzzx#Vl$_+91@Z)Jz+ zT_t5gHV|+1vUh7+&MZpD{OXpHZ3=FW$DA~W9`meW{3>rX=a{YKQa@g|`&I5VE@mqm zQt$*RfCW%<1GnXiq@6Y~Su6WiaA;@0i^8k~H4!)Pyc`XExi>ATB0M#wTYpE?>Ec%|_X8TjbvuKX^WQ_>{JglCkTX5Z0&pHcL6LdYp@4vYr= ztT2Cs=m_j8b0Jv8*j(}|=^uY1T0r^F@K9 zQ^EOQC}Z_?H(})8n;3yPUhPq!Yqd`(5oiSmyLSBz+64`4(P*3cY%X8VWYLbv>V%1K zXNHK>F~M3zcdpZEGYJY~;*H=-Ic~1EcQlr=$xOU+4`J*R+`uJ$&v4kdowj+#?EmD9 zO0|~rybq<~JL;f0O)ExHYK*5j!{1bF!Y1bR9i6pZ1EiLXb^abglwJG!8TZ(1vWXUU zy*pN)o^93$4+R#oY;xKJfs?Z}&akvGwJ!Fhu4iY%G^cmzwIl}fkz&W49Wk2#>}?2% zmjorN16pZQnUdudH=i2qE_Vu>H;%Kz4PDIUjl;j1_*O>y?$5}nua9T?CmCJIsZvN& zOlQFI9Mkb5*2?;l&yk$j!_2}EyH!Y+YvMq+ryt`!nF)dG9q$g=L=$It8Wl-ppm)Y! zlzQUBPU$+6o=g_ulaR|AMxTDhM7Ho&@=!+ivsMKx{d~JW2v*X_K|UuimpnhZVB|}p zq<P3tffA=L9klwUkPA=wM_OT^(m8jQc$utg1BB| zkLM$Hm*=~rT&yxNMh6WEJ#nLjw~8kOW@B3YlH*?$HX25YdDv1Yn?%X!RSXk-7-p1V zXVcXNBbg?p54H^dj(*H2CjQged)Q5Z`=M1A>ou&kb1^R(_fYH1SIl+h9Ehinc+GW| z9M)MT z=?Pq6yV+gl+lWnU6vucby@6M#$nK(f-sF(H1@lUJuu996FDA%s@KI& zavX!^Kr4NaF1FX@lHOz$)0?2n!v7>wWua4Sms;azi<#cgW{+*#`t>67Fsn7~L3nwQHP9??{O`(!hT81V@a% zm3^;S-5_o@J!-GxZ8l*54nWGXl5pmu@>c#>KAU5%QDWsbt~cQ+Hs{bov`OUhIJcY~ zjIa`V?{L!f{7V^sd~`8M$Zb5AUE4$7W4k<6)t8ChX?k#7MHIn7FMg>0)@F*|qQrZL)b0yLvQ_^o#}R<2AeUWoGk;O_S`R7bMp7!**5w`{|hRMw~)b%D#G4+UNBqAL9 znSj9OVEVFpKun(*9wR+n7fE082aqXaY%zV5C?h)9J9CiyX*L$sof@a!V_W3sod0(Uwcw9Hv}# zk-&^ERA)(KAs=K5#MvgsCbCC4o4CpIoVeUXV)9L%UKTj0_|ZSwcbTCbLpF7p#4d;O z9{DlfL|4;6^CG%h+>`6rCt+X?-zJ{Rwf{a>-jhql%S0m79lo@TtxG<}iW+=*JXG47 zZV{OHsY~)+^Zdi(-Ieyix>MtLEt^GAFq_bfZM2H!vsGk}&0&wRR?i&1P~is8UcIrJ z-UC(is05 z*Zam*+6*JVPZT{?MqbGVx$*8q=dENV#4M>ewx7Lfbc-bdb9!9+BECi1#xDePK= z>rJ`e4&*ZZ2|ZW1v@GEoo5i?>WWlVt#5~brY(Goyra$HYE4v(i?Pv6#T>W8-YEdP5 zO~gK!zCj{oJ^~Hy*iP3f5eK4~INhjZrKN#{%Q8gp;Am5s!Mb!W450|_dMny*9dw6gUSyh5MR_k&?~1wJA>^0k1A3-Z5z*F?Gw2r+z5B8&XApp60V;S4V zTw2}v8(IhYvN;2cB{S;t~EFfFl?taX5V0;03I0|y@i92>VI*&B#W45vY7G={%OyK zGb@Bb#8qP}m`aD|5qeyI+H3_`tw<}S>ki|{AVz=6Yx+Fq$R$r>CG++&aQs-UYar#? zUQZ7bSK7m@j_^-25%-{3unf3e^l7r0{&3)pgdk{cP>$t0f10 zqhuo@!e4nFVj^7f86Aspd0B=&Su*6;uNu`s!t99fLE{>;F*e-6j9t|qkha$!xzyiL zW4=s|^gT!FJiVi*bSJ`y`Fa)U7k9vML99EZF5slWy27{n^#{1am-eHvgXpGm4hmt3S{!`=q z`681#GWxFe!<46WAfbukyPO7H^w42>pp6&l!#3Q2%+s3QDfyVIJ8UujYn<$OirM(N zTx%j}Q8sZ8=k(D&_0Jq}h%-&h>K1W7?~EOcI22Pl=CoItY$3Y=wRLHDh-~uQee?-N z+eV{(g&pSvy1DQJUX-&P7vJ*8)_&z^3+(h5)KMouF7@oGKp`SJf&n@e99y`bJ-(Gue3&T zS;YHIBx2l?Hl*IO8>IoZD`_GrF>F$Q!6TOz;(9sVsHB?eH>uw?kzV~u`e3?OwF<)v z+^}pWM#_VCZ?<~Ar2CWo9P@f1t*QQih^Ac282>im8j8$)5)3o*diq(CWiW&rh!CgI z>A3}IFVXOn#1ZRtbC4p#L$W*{BG}3iA1oyCjw-m!amRWSt>$R`N&OGTw+)HZdt!uo z`pr2Aa_AzC(L~ zB74Ej(Hxsl1<_-3PX%w%0~JvJ4;^(Oi@;6C-i(| z!tTH!A6`oI4tcMnZpkAIy-$GWlVu6Xhir_0_t86unH9yu(BB1Qde@(sEhEGC3Fh+? ztJ3w<=bvA;2QJu8aXCL>FEBT*d>Nec#>A?Z=a&uE9bSpcp6SUk@fDM8*?efQtE*@s zQ+L%qF&RPKExBStE_`^{H~yy^h)m^vS~xnHsk@Aj z@33gkb7QGP(2D!dPjuu9_KV5GbUSn2gIo!W8`W&~!4I*#i*07l(wE7eV->KJGSXuG zaJ(z?&+;`z3v%WDT>ToY7+KG`7Y&GUJM9u}c4pD>^rKqg)o$41#y1+QOyMr}A8;%U zu^zU2i6;Nn!L)A_@qb-4zsosXQ=0F5z4yTs2N5+26d^)~ZLKU@UNP_!7Ssv*4z zDLmX1G$Bl_BX1y4SjQb-;)Rb8GQ zw$PS~bBg(8Q;fTv^UI7q=h=;;3(a}-CCh_isfdW<(*i4dfNA#+zXpckmmj^{(MrzJ z)%SddXuPO^E@#HOk;54vlZ*(`H`$k$Rni=3V;2xi2Q%j&jqsW~r;y9)x?H6LkZ#{B z9+-+G)N1`_WC9$kZkf=3&1^s0nL~D4a>!M_P&%^+MumOK7I6r9l4_W}>02i{*tu+i zwpzZyzRqkuGr9)4<8J=f%=7L1FL@t14qF*ACL`H#w|$veKrTgKl(msFW-ahAeNHlohPtKi@7(UjBI6?2HnToZ z+{v>4rDuWOIN4jEF_CimCRyX@(MOa#;X_EBXM`J#IOPAaGYiYj6>#of7)z0p)(W%6 zY|mk9*zSA{*~U7>b^%Vv!h%BP=4y5k&Ead9;6A#D)^zkpyDxvfa%a+!(GF-6F@a@zt9##(+&6f#UM|65`Pu5}EMJ@G;!V9F_-cXh_e z8q0dYkvEp4_cP#z9L|u((ofs$ds2s2cFngh$)iZ64?x(4U+ehF@?f&4Y&mJ@H_z{= z^?Xitn=f>>vtshmCM&rLSt5B&E2Oi9^2&((8c*L7&R(^waeT)lXxq*f8f(cm$8U4V zsf$Yy7_|E@?HPMa8r+0@EPd+Cvy6(hN6&e|N0M1qjqP=Z>CXm^4Sxnj`Vi9v9<$D6 zD(%!dyoAm*#-tHs-hv%7JM%|g#^KSq(C{j5*UBZG_l*3GDY{AvM=r93nKOoc$Z7w@ z@Un$QqU#63rS6cOFJ$b4$-5nYH$iobRhq4geINg8`f9^u^0quN8NovrdwzT`C&`9g zRv5W~wZKbapON-8K5^+ByOvxYd5j!3i}?$j!NF|EQpB}4IikR8p0sgPTx0Hx5ZjsM zx=TTVIk;~tPR^c@+JovAc624#{mJv()-ye4e#I5-I)1UfvzXg;yuG7r^fN}?GMclp zinBGkp;_{~dYHY9qi2l!$xgVY*&7EEe26Sex4DN$msJ{j&rUkLhJB;+b@$oYjcXP< z^0t1M)~PU92R3aZC};ru?zxbpb>>73VTpU^R`zl16bzhju}9hWKG{t6v4!ReKBr{1Fq8`B(|f;fB?@%*zQ#I4qxqXp z4XteW{>)|KfWo~oG={u9blldFtpd`lLsV>-*Yp6{X4Q+TfBbzmNSQr zFGE&8nH+#cRJX_%tb!p9oDnx$Ie8%2**QMR^EO%RIck*e ziGTZ6PqGRp6Yc(eXA2kO#qO@}!8D!Oxu#^1a6IDQUa~*m$LuxOPWA4wcR@H!(K7J)pJ@Q>~ww*hDe4s#NmQ3!b8{Sf2?f8OJ%L?CdSLKq)S3;UeR4lS+ z44v!p$x9`9nv`)!UXa)v`8kucyZ_9p>^V1a&hrOb!aoIW!OK=FGv&PJ z4+2Ogn=6=?+l_|VakW&y-NduDm*;~qJo3a>%$Zf6ED+riIXnJL-!I5d<%V4Hx%j^9 z%CV8p?YBu^{kg(sC$`~t#-9=CWWmK*4ACj+x0-F{KQXCm>o@?Bi|!j%>DstwXzz2|)Ar~`0KEaD5bRWG-f;r2uq zrT-v%XbrQX8b_B=GHB75MK729p<%D&8e8JpNB_m7g2Q_`+>cC0m?rx3$(Z~PmAHoI zdVbOH1W7rf`HW#vL;1;{!_^p4oAQ~RsWY9z&QwvMxHX??Ovs&M0yArKhm$pQ5=j~UL0bLHe)MwR+6Ui^iS-oi|DnCr-D`y>-;~yHGn`hGVTlm>}e?e$NEA&(R1| zcUZifCt6Kp8LeP;jZHLAtL!srOM({oumcJCeMuOAzuBQH%UqaUW^*Jsy@^WWEe*f+ zCd9XVjpLUREt7vUrBAp2VhTc8WN=ZbpuQy_Kvy5Pi(^y7Uf%c{&V;w09o@;fjh(D& z$&>H2nVaEcUA?g*xR@m8v$t_bai}?*K9ik&>9pqsag8Rf(o|cnSSIk#XKoA3>TI>+ zZiFlkm%HV&6DP)2lpVML4^=!QbKv&$8~QzcKSU(2&lJA*^89Mg4rYF^?`hkT>I01* zuDarROrDU)d3h_x>}#Z=RxResQ-plOVlBTgArGto+z|g2)%sE-52}Z-xno{_J0lMa z{0Awv$v9|R@&aE-Ci7OS59VjsD_lY9Vfb$L?8shn(c&YM<@YQ~(XLBN%JvUfnf(`r zkC8I=w0lW#|Ai#r3GM@0ocZ-1{_&@{pDuEf;Rf*`i3BdJ~(AJWin!AOd?Y~&BS$)azp3pcujDh7+8TrHuKaH zL`G*ggD^ouo$9=}f&}Huxg0E}`VF1zk;gV6N0&x$=h2xN8;$>H zk6dPKE~Y(1$&9n$@56Z7OLc0Ji_N8-4r(Cp((4#WO8O&UV3XN?|GuTItP zlt6-Ws5kIjArajMeoRD%-umd~SL>)~`~0hQ(Z}B^))(n(g|8B>$E~PhL0EO|CQ?;1 z_zE(kKqFDHwt#BTUZ2xiZs6KYeLZ=r&&k$`&I0lgI877ZGP`;;a>KmKb|c}~-v5yW z#M*vVHH#SL*uI(NY=+~ltCkxH`Z;&=v&i6Hh}hK|Y|i-K>2f~C6b`|%a94*?BOwl1 zE`1jc=k0^pp7X;#vaIAT(q+j}5CmdCv2ce#K%HN2i2vKt9BIvE!Jt#hvw#K7!=9yx${Un<748NBsr8MR1{m zDt?pAWWkXh63+$2+ia{Ao)U^9;&y*Ijf+J#Mj2pHxsxU5$b22b(G_|>O>4hIOi+o8 zfOy4XB$$ph;&%%4Zn2OXPmeE9MXOlBHQes|wnco-!ffA+)WrX@lsx3QkG8Qj)GCS` zX?GY_&e;Bjxj=lF<8OnXuw8ujRjK@>zU!@qn3@fzHW$)AgFm5X1M^P5B`&v}T|LS?iq$vBg(O5M;{>WPrC9e#{NsL$xVv>XNYFQZ=C)|w)fo}2V2QKlS#DW z7MKe5!qY(1P71@P`TJIEm$EY?*p?jf;Ys_`rmq9{V(kQh!r zZxPLq6jZW}BdJMu$fQg;xFL~c+R%}OjLsRt%QL^pQJ#}$hjGrN7D_uwO5V|NH=E)P zZeR+KmTn+!(NYX&Z$p;c!WQz2Fj=N_h4O8TLG`&*+85}p4XdZ+Taga#NtKf8mf8L3Ao>^&M>oW#f$$7l~R0 zW9Y^NxyO=6n{E6({^6E$CvXmMjy@09*z@D#UG?0F6@K;9?d)m+pLci0wD|BZiUXHVu!~Vam%K845hwr52{`}1MA~YYp5a!+5Aa9nxOBX? zdUum~w&Gm^w`&+mXs+M6!=05Swur}4LQ19$$!+AJj(r-#pz2HC)~ElHQ=7f&_f4c& zPw-aB|42*!Vw^=6EAoGf#TkC_dlGTcPwC%C$`#?rz`!?{0XMA?hFkh4vmx8&Q+%K6 zkro`(JVIX-kX#rWq0)iDGp?b5iA?sT?`C<*KXo8^;!3;QBpXxtB4z59gzHNC;6may zTZIFIOI{d%kh{3FP;Td8)zk+~&|f<*s#Sb`4eLYJf9J>#%uS?Py@wCE4>Wm|KPKW@ zbMNGbx?RRAULJdBcE8RiL%RN=XFrFpoqrSfWZZ)2uzPqWqdcUWrDD`$gkV2=Lrnp& zgZnnF*({5yzWT$ax~pBR4!=TwECJR;wg-&qAEcDSRf zGRBI|{`3&RTI9%tg3kma+DFrTYz`_-SS@EhGgRBt0Rwz6TC$e zC+C|hJQvssq~V8f_nNha_o?NR`8utxaQoSBW{zR@>Yt*_W-U@+zan>xzeFrXu{?J& zdpc9?h!eKXD;+m7he$U=&>^Vc>3a;ds>x|MUa&IWFZkKy3(w;`YWUS$o?R?;tcm!C z`OM+*)sBXZ2$*g>&p(`*35Q|oc$|DJmsyUkCprpCwv4u;dUx*8(`0VaaqJ3Xnv1A> zN&0)E7S9f{gv}AoExLa1Ffm@{;D(5dSuxzLa4OWDd4lV{Z~^_03?-jYcX3+6bsut~ zM=$5!##R{b*uUh+Q5L3_gMVWGc^(zrJ5mK(&ceZuIOy}qljJJD!_v&;6+kELv*Y7aIOG{=d8JngJ)x@;G_bB#xq@1 zai)xTtMg|xAOXPk@JQNfCA&v_LiK^Bv*t9j`1;Xjm@6yTekL=JInYEq*%NFbd4g)n zqs@0Cq(eQd52r_M7Aw0Rg@%376#)Mx9EM%yHs;NW6*%wrku~{)pjsWdI&_I0 z%(q(VXj|VUoY{#_c{=7m`cOZemEJ&O68OJZ8o3GgQ~epw`{2w@9{DRdDX+;T+mYip zXy*yhgYyZF#%MjsDzNg+aHTa;?3y~wmW~`4%we(|8wJl4@}9nqWPAMNEzcdy0Wpp=qb3dM#jXapNtYV!&)3Jk|vHUs#uKotzDvxt!?3Fk>2-&KBk;e^&AMJbHlRxkm z@+)%=a>{R}Zz^@h;Y&|lHV1`2-5Wm4tK8w4PqINWQ@`8XjB}OS*x3X@C39bR*e{+J z&8WPTPvz=8@<}uE)<@z4dE{|ulBg#R@rLh?nrn^xLkvr71?mHjstqU*X3l;Dm#4|| zdtT&oY&#e?ZHUQomf(yJ?_ijny)lE&Bko~IZspS(8EBmxsTUHQ5`V;{f51U~g1d*= z7=j}l7mx8IF(Sdn?rcGM|IQZqfX{eZmq+KxZ&<`%^P?SPylI>LqQ!A4kJs{Z8s0$Z zMR(|t<};V%FY@?8@eK>Ti*4fXlBY=UDLU?eznb&$jU5|eoKwg%IibsH#YgkFgE=4T zGQ@7u7su|x(Sf^jH+P34Pj#8eLE|(unp2;|exzh&rQzPn&zr0@0yNqN`6UxhL~$y! zBe|Sm)>hn$s=pSIy~|poIHiw~KkvLrj(6@IUd-)&^VH}u=Fx4VcXYl#yqrw;oD;S; ze{>0qc-`K_x$kxCu7C38$H=#L{gdowLz3Uvy=??(e|5U?@X-x?kX%3dKhpJk{drr! z_yzLpVh+d@({jfb`W0y?g%flAUkdz%)vlol$LNnH-juc%%LBdix9Wn-+3}4p`{h1f zfnLiTf4l){sT)5*TJmeee@)e^Nu;C=esO;>Elj?_*Kip(q={coRwhMtswDmmr9-+5 zbELk@8OKm}qW>pzx?uhKKLDXe8rH#KN*H&rAu(G(42ja4$)=T|N0LA8{4cpq|4xqR zG3=cF4~p@gF0c}J(=UYrEMfebX|6Z!AUhkLz-OqOH^dKeQFsnplYCqbOlBJDFTTo( zI2qS)GQt^;Hdng|JKMY*$Km>hd%`L?5(@7StY7Bm%1k32JY~ z*`vy~gnXhm9$1PZjAB>BB%kAmQt>U)D_5EHfu?HDJ^E5|O5B4gGo(0<&w=n|WGcn=~C zBE+ZJVjWL*$`8a*=7Mk(`v1Gl3>?-{I!hn3;M9~1Sy2w0myhyU1z19kqtz!S}K{ ze@YkWmGY+w^VDU8S}n$VWYYELM?XT?1ASZo1ruu+XJQA9oW4s?*#*!ckBTF|ZR+B< z0wZ}%|4x^PqM4lhBl^GoBa%A&Q-$vf44oMqJ=A&n(rPk1_MrHxjhM{7l4R0B+?caL zR0QPVT|*Z?CMo0F;;$Vnfnds!tujI4Vg+;2>)Ki9hWSi*i+)439rt zuyf>RjJs9DKZLZ7VH9y#QTIgdgB*YvQb+VxFa8dW$PRo&eJ-q6fqJVTA-7mySSQO< zHKL8j(?2AeCytc7G4Z|3cV6olF*eb=#dd*g9;t@e(5yaI9A3x!%y*Fj`~%3!=Xf6# zHy5Jz=%D0f0zZ}bbX@24r}gVG88N56BjKWO`x-dLgqn8&53#^!WM@Y%hqv;dEhWD# z`Mc;9p>5;(K<8gLy@k`iB5oQ?d)UQfSae3DbPE59fC)cBH5Boq7K$!6XGFJzHj8c6 zj)kZ{8Y%#2(8xY!Sb`GP`H*ZE*@wmdn3>@g`z#y(tejm4#n2)aO0+xu7=0w&kBV~t z@D77z;=?Q$98Q+1AX4!ga<3?_w^@SB@pifxKB-YcJhYq};!4CRc|^D9LP^|}l)ss0 zZVX-^1cjKSMSe&}K#eTBSRz;ZNWtF%RiK1Evjtk^xU zy(7i1&L6iPpcg#Hkm2dG9xcfoN#Y+qFX`{oE&#<_M`r0|I8sf)n21ws2%IF-hAg;l zY?l|eOxD4e7k?n?yA@<%?LM9NX2!LeB)6`V%8MO||zZx`!T zj<9iL9TPZQe`gLA(^V2`rcbnstIDOUEQCtpe7};2srWAx4w?~UH&j9h^#9Pe(q;Kp z_AA+LYWk+?^pY(`hZ<6mCzcDu`_>KYG2#tXXm_+O$G~KLe46M{`F${p`h7v82)$EGhD-CH`WUPb+r#9L2IPR$T3k z7JI!~v5Y48Yn^ro1mp@!;_xnqI=wrisN5Ed{!o8y?8b}oR19FigpcJ|N zY9Qiw1#B2m?ssF97BKlkfptaIf##x6KtnHQku%^f@&;l>YCtV&4a_e}l!l6mO6^7E zrDa8cqR3GiEIUL4yJ=ZC5GpMXXr<~mxblUiT)A9=A82&!5-aA>ZOlqI?9G>bobQ$l`+v zVZ~2+M)iM-=`!+s#d0!@UF6>LmoL|jEjfW<@(+sDzH0I93NkA1sumac)Rv%7Y7<_> zpSqrdOD8JE^H!W!wf>PZ7nkNwAysxoK|%CfpM0Edj2)sM1vKKx?ja z1yELrW-2#Op@8FBI$(*=nfc%1U$AKGH8O|;+8#PUudx;4-(@i|S-oTOyE!EKQ&O@n z{~RyP1An|bZ9VzoNmc&lp{zi>s=BnSDq5;kf$CM|f$~ysAYSSU_)F&mib{ilrKL*X zAT4bV)RlJQqb;zYG#n@^RRfRE(q0;fl@2SlJ*0lLb7z97Dr0mw3ps|H%V=;OkBC+2dO%J^P}_y0FW#u}MT1g=qlS5{>! zonI9zU0=1fbRq8jRo+s2RSWjy$2LG(^jVHAMA7V3?$XMyuddQLxQ|s;mI?t^mCNtN z)m@b+ofo(lP_={hHb6EHE4zVs32gjM5;!JQ8d2k{P^9)|RNz0p>@Ul>?{jYh)r1KpS-6>h{9sJEsu`~;0WLc?2WDgq)TGC!_pbvPAm58I>7 zfWsM%N8Q+Kq$V2i)p#SZnlP?fq_M`2J(fjQM|ab3I2uMb2Zp)A?a_XU8!h}a#oGln z^CSM6b&;JEUxE5p$!*aG);(OB4CqeSdADljKwMl~V>d%ZOLCiTBU!?2Gv zj);O+GCr^NZ=m6B{{#)8L zum!OrcT|a$MH8`D+!ZZT-lx%WMUAS89IaMtQ4NcKC-w%7u8V=^me*D*O6}>)nh_-& z4Jl>ON+lGHDb-QG;*NUp99Eja=?=7OnQp6;UTS=v6%QNplz)IY%DQm3G7aqr1?MV> z@OPAhK#S5AQ57w+UP(k2D$^nfC2B;Ka?~W28BvH&2rU?%he12xr3bvUY&VWJ{T?!a>;uCXv^6Lu)y4}$~d0dwpf;;Z$bzl+qqvt-vM} zDQ=ANhZiWz01kKtAjL5qK!`S?l_@?@+KX#hvlJ&L5T_qr0#1bm7*rlM?$lKVO2wkDoPz70Baa6(U>7e1wf-^Bt=r%qIM9_0gm>5 z4YK+*VVxjRnG&vbD~?*9QeEp+%4?^6eGS&4Kb{e(p#dGWElLF6v|2EO->qo=I;GMN z^x)owtJ`0#6!|N01;zX}^l<=1Maq(BD**JNg_IyRpncsmJi9VztF=WdYm1`J+DhC< zqSI0*%6!l||?HKgftoLTQXH^*;}G z@%y4t|I-wEi(!urOdg4rW8pBw1#U*vUJGu)j_kGbfT?Q81pFQ7#PAmssQx*PzD|L^ zFf`XR@NEXCK0Gf}ioV9H1AH9>HYG4f1n)D?VQ4j|N8mmVIIsc;mf`m@ymx_s8s-V& z8zcSGzDS4o=Ky4h{74qwS;^bT3}ifv6#-_4$7^QE~+!OQFq+ zHYT6}6K*A*C|82XP;`mXk_00SdcMO z^-4mHK1}Pi#BONGL|eTV+iOiguIuBNt-W5wjQ_uf^LKG1x#BoIvp8@t4B{c0rfHf+ zG)>bqLWo8PQ3z3`>QZ+VgBXrs7=~pzmSq{tVU`Pq<+xxm=2#YUkt1V_14qVz0|$;B zIP#xij*E5kKUBc0x&!Q?LdCQ>yvQKNmu$-dRMGS>vK zUQ0E}kI5Um!ZV)qJ0vgFD;$?^=j=Op-N=pF(PMvov_a15&SvQFF~T^#J*n1$dH1ri ztvu+J#d=!3vKz#zVSBdtYs|5a zXrNwaY_GA)?=I|j5d<>5fpkuvv!ZM%rLCm5jodLprrwSS(dbVRFB?_cwH!E~(xRnm z^wMnfdwGHe5n^|Uf)KWovlaEMU)n2K+AAIKrK%y3#>xs9CqzeSRsI+vXG zZhKnGYxn8m6!$Yp`WsogN?y87ZroD7y>zwgTrZ8wq;o52-Mz#vmf97vafv*-ot#-) zG5@Q`)y>+)&2KNjn_pf^*@I|(i3E6HPbJp%f4{^7|MCJAp7B)jZ9PRq-^k0Jj6$n> zEs0sva=A8G&!jl9Iq{~Dv-u723jUUCE^{a*CZ?YcGZPP~X@}Yz#>%L1ZdQ!rVNSa?vmrKm05^t)`OYZW z46R%Z*D@PYlxfjyAwTV}q#QDKK!sgBZ8q*rHWp?vuFY{gn0UN4#ZZ}J(@RZISM*I& zNZe0)?)#Nwy})(in9`@i!pLxClFu#uzohAqoBXqM8GA|)jN97T+>MQ?Nv;G)BW%eK zJ|7a(BEkj{mSaudnQm+)AMfR7qe9`=redxc6BEXkwXIpRw;ogT`)G(qh>c55BBKiD zC=Q~=UtGwK7nrZc#0`e6%nuP|Df{Kg?6B{GsUwyJYuJ|3e~Qe1Bl)?B)qf)M=NGJr zTANP2HUwK|GL;$tg1#`R3MT6dGw)NA(wBW_u6x${(zMJi`WthnHl|Q}bLJT;aC1vf zmH*n5Y5~kvX0E=E%#xKi>ef_n*sCvDD9s5@;5r-Q&m5^w5h{mD<*0{Ttrm_9=|+}3=E z+=Kb+3r6BH^TSWD>5iZ&z~LELs_?195QJ3h?+Bfp?+K8F-w1QWN2PB3Nxmf`6U8Y% zmPs7ad-9a4RN+g;Bs*WL(ibXYK5=`Z6K#A+Ad|QKhWY8alW)nFTi9hT_S01*cLLi< zTatobsS%bLn%C|Dks7sfTy31D)xLwnQnh}s8s2Y+{T-MP!!2=FQUDwko= z>FZGWy8tqV)-S@nyz{GY@NL+59nS3NWbYO9JM7hgz&}P{bAdW{SYZzWD}-rPfft2)P9SL@DZ21_xrH&P1wrOf4q>d{5MjCM}L%kSjg6o;gRvj$p1Q0)9i-` z+dKydtpgu-gg-=-9^qa+$P=0K2w!|KRB9f;MvOMKsrH{P3RAyf$5$NLIViOXd)0?8 z5GfZ4jnWu!q4IDf@o~r@^OSL6t%^|Ku#`ff^Cv10p7mVoxfuAV#%l1z%%`E}ly*~v z#ow7W+!YnIRY%V!60&7=7Z?Zb%;BZnhJ&=>OVMEl*|mE1quOKr9jE?%6#gCg{{d1> BZh8O! diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/7c50bf6ba95d4d24d6bc53f7deb65a0c133aab991a43e3c6921d79557c54a75b0000019f38b6a5d1 b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/7c50bf6ba95d4d24d6bc53f7deb65a0c133aab991a43e3c6921d79557c54a75b0000019f38b6a5d1 deleted file mode 100644 index 9a55d2510304f0c60aad7282bb4ccf42889acf38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37673 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 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/c76b7bb4ee3452ef14040a1a7fc87e3dce69fdd1d7acffecfc5f40a8f94a262e0000019f38b6a5e5 b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/c76b7bb4ee3452ef14040a1a7fc87e3dce69fdd1d7acffecfc5f40a8f94a262e0000019f38b6a5e5 deleted file mode 100644 index 41ede8e596be2afb7379ff4bd3bf8fa7902c630c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 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

      hTmHx; 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 FvU&!kSC7xx?H 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 -<#$$H$FE>8JTsqzS0h8U(-X^b?^K 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�GHC)pgD+83r2>z)E@U1s_W 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⪚jAV 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 Z3q3vEJuLra>g_#GMGYkYaAG){{0|weL9YM+ literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/test/params.test.ts b/packages/data-tables-worker/test/params.test.ts new file mode 100644 index 000000000..48a929a60 --- /dev/null +++ b/packages/data-tables-worker/test/params.test.ts @@ -0,0 +1,129 @@ +import { describe, expect, it } from "vitest"; +import { + canonicalQueryString, + parseInList, + parseQueryParams, + QueryError, +} from "../src/params"; + +function parse(qs: string) { + return parseQueryParams(new URLSearchParams(qs)); +} + +describe("parseInList", () => { + it("parses simple lists", () => { + expect(parseInList("a,b,c")).toEqual(["a", "b", "c"]); + }); + + it("trims unquoted items", () => { + expect(parseInList("a , b")).toEqual(["a", "b"]); + }); + + it("supports quoted items containing commas", () => { + expect(parseInList('"Smith, John",UCSB')).toEqual(["Smith, John", "UCSB"]); + }); + + it("supports escaped quotes", () => { + expect(parseInList('"say ""hi""",x')).toEqual(['say "hi"', "x"]); + }); +}); + +describe("parseQueryParams", () => { + it("parses bare values as equality filters", () => { + const q = parse("q.year=2018&q.classcode=PYCHEL"); + expect(q.filters).toEqual([ + { column: "year", op: "eq", value: "2018" }, + { column: "classcode", op: "eq", value: "PYCHEL" }, + ]); + }); + + it("parses comparison operators", () => { + const q = parse("q.count=gte.5&q.depth=lt.10.5"); + expect(q.filters).toEqual([ + { column: "count", op: "gte", value: "5" }, + { column: "depth", op: "lt", value: "10.5" }, + ]); + }); + + it("parses in lists", () => { + const q = parse("q.observer=in.(Chad Burt,Lyal Belquist)"); + expect(q.filters).toEqual([ + { column: "observer", op: "in", values: ["Chad Burt", "Lyal Belquist"] }, + ]); + }); + + it("parses null tests", () => { + const q = parse("q.size=is.null&q.depth=not.null"); + expect(q.filters).toEqual([ + { column: "size", op: "isNull" }, + { column: "depth", op: "notNull" }, + ]); + }); + + it("ANDs repeated filters on the same column", () => { + const q = parse("q.year=gte.2010&q.year=lte.2018"); + expect(q.filters).toHaveLength(2); + }); + + it("parses groupBy, op and column", () => { + const q = parse("groupBy=site,zone&op=mean,count&column=count"); + expect(q.groupBy).toEqual(["site", "zone"]); + expect(q.ops).toEqual(["mean", "count"]); + expect(q.column).toBe("count"); + }); + + it("requires column for non-count aggregations", () => { + expect(() => parse("groupBy=site&op=mean")).toThrow(QueryError); + }); + + it("allows op=count without a column", () => { + const q = parse("groupBy=site&op=count"); + expect(q.column).toBeNull(); + }); + + it("requires op when groupBy is present", () => { + expect(() => parse("groupBy=site")).toThrow(QueryError); + }); + + it("rejects unknown aggregations", () => { + expect(() => parse("op=stddev&column=count")).toThrow(QueryError); + }); + + it("defaults to no limit and accepts explicit limits", () => { + expect(parse("groupBy=site&op=count").limit).toBeNull(); + expect(parse("limit=500").limit).toBe(500); + expect(parse("limit=100000").limit).toBe(100000); + }); + + it("rejects invalid formats, limits and offsets", () => { + expect(() => parse("f=xml")).toThrow(QueryError); + expect(() => parse("limit=0")).toThrow(QueryError); + expect(() => parse("limit=abc")).toThrow(QueryError); + expect(() => parse("offset=-1")).toThrow(QueryError); + }); + + it("parses orderBy with direction", () => { + expect(parse("orderBy=mean:desc").orderBy).toEqual({ + key: "mean", + direction: "desc", + }); + expect(parse("orderBy=site").orderBy).toEqual({ + key: "site", + direction: "asc", + }); + expect(() => parse("orderBy=site:sideways")).toThrow(QueryError); + }); +}); + +describe("canonicalQueryString", () => { + it("orders parameters deterministically and drops f", () => { + const a = canonicalQueryString( + new URLSearchParams("f=json&q.b=2&q.a=1&groupBy=site&op=mean&column=c") + ); + const b = canonicalQueryString( + new URLSearchParams("op=mean&q.a=1&column=c&groupBy=site&q.b=2&f=html") + ); + expect(a).toBe(b); + expect(a).not.toContain("f="); + }); +}); diff --git a/packages/data-tables-worker/tsconfig.json b/packages/data-tables-worker/tsconfig.json new file mode 100644 index 000000000..abfe95317 --- /dev/null +++ b/packages/data-tables-worker/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "lib": ["ESNext"], + "types": ["./worker-configuration.d.ts"] + }, + "include": ["src/**/*.ts", "test/**/*.ts"] +} diff --git a/packages/data-tables-worker/vitest.config.mts b/packages/data-tables-worker/vitest.config.mts new file mode 100644 index 000000000..c9184a6cb --- /dev/null +++ b/packages/data-tables-worker/vitest.config.mts @@ -0,0 +1,11 @@ +import { defineConfig } from "vitest/config"; + +// Engine logic (param parsing, planning/pruning, filtering, aggregation) is +// plain TypeScript and is tested directly in Node against the real parquet +// fixture. The thin Cloudflare layer (R2 binding, caches.default) is +// exercised via `wrangler dev`. +export default defineConfig({ + test: { + environment: "node", + }, +}); diff --git a/packages/data-tables-worker/worker-configuration.d.ts b/packages/data-tables-worker/worker-configuration.d.ts new file mode 100644 index 000000000..522db55a0 --- /dev/null +++ b/packages/data-tables-worker/worker-configuration.d.ts @@ -0,0 +1,14656 @@ +/* eslint-disable */ +// Generated by Wrangler by running `wrangler types` (hash: 4fbc21eb347373113694c1873616665e) +// Runtime types generated with workerd@1.20260701.1 2026-07-01 nodejs_compat +interface __BaseEnv_Env { + SSN_TILES: R2Bucket; + DEV: string; +} +declare namespace Cloudflare { + interface Env extends __BaseEnv_Env {} +} +interface Env extends __BaseEnv_Env {} +type StringifyValues> = { + [Binding in keyof EnvType]: EnvType[Binding] extends string ? EnvType[Binding] : string; +}; +declare namespace NodeJS { + interface ProcessEnv extends StringifyValues> {} +} + +// Begin runtime types +/*! ***************************************************************************** +Copyright (c) Cloudflare. All rights reserved. +Copyright (c) Microsoft Corporation. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +/* eslint-disable */ +// noinspection JSUnusedGlobalSymbols +declare var onmessage: never; +/** + * The **`DOMException`** interface represents an abnormal event (called an **exception**) that occurs as a result of calling a method or accessing a property of a web API. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException) + */ +declare class DOMException extends Error { + constructor(message?: string, name?: string); + /** + * The **`message`** read-only property of the a message or description associated with the given error name. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/message) + */ + readonly message: string; + /** + * The **`name`** read-only property of the one of the strings associated with an error name. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/name) + */ + readonly name: string; + /** + * The **`code`** read-only property of the DOMException interface returns one of the legacy error code constants, or `0` if none match. + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/code) + */ + readonly code: number; + static readonly INDEX_SIZE_ERR: number; + static readonly DOMSTRING_SIZE_ERR: number; + static readonly HIERARCHY_REQUEST_ERR: number; + static readonly WRONG_DOCUMENT_ERR: number; + static readonly INVALID_CHARACTER_ERR: number; + static readonly NO_DATA_ALLOWED_ERR: number; + static readonly NO_MODIFICATION_ALLOWED_ERR: number; + static readonly NOT_FOUND_ERR: number; + static readonly NOT_SUPPORTED_ERR: number; + static readonly INUSE_ATTRIBUTE_ERR: number; + static readonly INVALID_STATE_ERR: number; + static readonly SYNTAX_ERR: number; + static readonly INVALID_MODIFICATION_ERR: number; + static readonly NAMESPACE_ERR: number; + static readonly INVALID_ACCESS_ERR: number; + static readonly VALIDATION_ERR: number; + static readonly TYPE_MISMATCH_ERR: number; + static readonly SECURITY_ERR: number; + static readonly NETWORK_ERR: number; + static readonly ABORT_ERR: number; + static readonly URL_MISMATCH_ERR: number; + static readonly QUOTA_EXCEEDED_ERR: number; + static readonly TIMEOUT_ERR: number; + static readonly INVALID_NODE_TYPE_ERR: number; + static readonly DATA_CLONE_ERR: number; + get stack(): any; + set stack(value: any); +} +type WorkerGlobalScopeEventMap = { + fetch: FetchEvent; + scheduled: ScheduledEvent; + queue: QueueEvent; + unhandledrejection: PromiseRejectionEvent; + rejectionhandled: PromiseRejectionEvent; +}; +declare abstract class WorkerGlobalScope extends EventTarget { + EventTarget: typeof EventTarget; +} +/* The **`console`** object provides access to the debugging console (e.g., the Web console in Firefox). * + * The **`console`** object provides access to the debugging console (e.g., the Web console in Firefox). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console) + */ +interface Console { + "assert"(condition?: boolean, ...data: any[]): void; + /** + * The **`console.clear()`** static method clears the console if possible. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/clear_static) + */ + clear(): void; + /** + * The **`console.count()`** static method logs the number of times that this particular call to `count()` has been called. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/count_static) + */ + count(label?: string): void; + /** + * The **`console.countReset()`** static method resets counter used with console/count_static. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/countReset_static) + */ + countReset(label?: string): void; + /** + * The **`console.debug()`** static method outputs a message to the console at the 'debug' log level. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/debug_static) + */ + debug(...data: any[]): void; + /** + * The **`console.dir()`** static method displays a list of the properties of the specified JavaScript object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/dir_static) + */ + dir(item?: any, options?: any): void; + /** + * The **`console.dirxml()`** static method displays an interactive tree of the descendant elements of the specified XML/HTML element. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/dirxml_static) + */ + dirxml(...data: any[]): void; + /** + * The **`console.error()`** static method outputs a message to the console at the 'error' log level. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/error_static) + */ + error(...data: any[]): void; + /** + * The **`console.group()`** static method creates a new inline group in the Web console log, causing any subsequent console messages to be indented by an additional level, until console/groupEnd_static is called. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/group_static) + */ + group(...data: any[]): void; + /** + * The **`console.groupCollapsed()`** static method creates a new inline group in the console. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/groupCollapsed_static) + */ + groupCollapsed(...data: any[]): void; + /** + * The **`console.groupEnd()`** static method exits the current inline group in the console. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/groupEnd_static) + */ + groupEnd(): void; + /** + * The **`console.info()`** static method outputs a message to the console at the 'info' log level. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/info_static) + */ + info(...data: any[]): void; + /** + * The **`console.log()`** static method outputs a message to the console. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/log_static) + */ + log(...data: any[]): void; + /** + * The **`console.table()`** static method displays tabular data as a table. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/table_static) + */ + table(tabularData?: any, properties?: string[]): void; + /** + * The **`console.time()`** static method starts a timer you can use to track how long an operation takes. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/time_static) + */ + time(label?: string): void; + /** + * The **`console.timeEnd()`** static method stops a timer that was previously started by calling console/time_static. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/timeEnd_static) + */ + timeEnd(label?: string): void; + /** + * The **`console.timeLog()`** static method logs the current value of a timer that was previously started by calling console/time_static. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/timeLog_static) + */ + timeLog(label?: string, ...data: any[]): void; + timeStamp(label?: string): void; + /** + * The **`console.trace()`** static method outputs a stack trace to the console. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/trace_static) + */ + trace(...data: any[]): void; + /** + * The **`console.warn()`** static method outputs a warning message to the console at the 'warning' log level. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/warn_static) + */ + warn(...data: any[]): void; +} +declare const console: Console; +type BufferSource = ArrayBufferView | ArrayBuffer; +type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array; +declare namespace WebAssembly { + class CompileError extends Error { + constructor(message?: string); + } + class RuntimeError extends Error { + constructor(message?: string); + } + type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128"; + interface GlobalDescriptor { + value: ValueType; + mutable?: boolean; + } + class Global { + constructor(descriptor: GlobalDescriptor, value?: any); + value: any; + valueOf(): any; + } + type ImportValue = ExportValue | number; + type ModuleImports = Record; + type Imports = Record; + type ExportValue = Function | Global | Memory | Table; + type Exports = Record; + class Instance { + constructor(module: Module, imports?: Imports); + readonly exports: Exports; + } + interface MemoryDescriptor { + initial: number; + maximum?: number; + shared?: boolean; + } + class Memory { + constructor(descriptor: MemoryDescriptor); + readonly buffer: ArrayBuffer; + grow(delta: number): number; + } + type ImportExportKind = "function" | "global" | "memory" | "table"; + interface ModuleExportDescriptor { + kind: ImportExportKind; + name: string; + } + interface ModuleImportDescriptor { + kind: ImportExportKind; + module: string; + name: string; + } + abstract class Module { + static customSections(module: Module, sectionName: string): ArrayBuffer[]; + static exports(module: Module): ModuleExportDescriptor[]; + static imports(module: Module): ModuleImportDescriptor[]; + } + type TableKind = "anyfunc" | "externref"; + interface TableDescriptor { + element: TableKind; + initial: number; + maximum?: number; + } + class Table { + constructor(descriptor: TableDescriptor, value?: any); + readonly length: number; + get(index: number): any; + grow(delta: number, value?: any): number; + set(index: number, value?: any): void; + } + function instantiate(module: Module, imports?: Imports): Promise; + function validate(bytes: BufferSource): boolean; +} +/** + * The **`ServiceWorkerGlobalScope`** interface of the Service Worker API represents the global execution context of a service worker. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope) + */ +interface ServiceWorkerGlobalScope extends WorkerGlobalScope { + DOMException: typeof DOMException; + WorkerGlobalScope: typeof WorkerGlobalScope; + btoa(data: string): string; + atob(data: string): string; + setTimeout(callback: (...args: any[]) => void, msDelay?: number): number; + setTimeout(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; + clearTimeout(timeoutId: number | null): void; + setInterval(callback: (...args: any[]) => void, msDelay?: number): number; + setInterval(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; + clearInterval(timeoutId: number | null): void; + queueMicrotask(task: Function): void; + structuredClone(value: T, options?: StructuredSerializeOptions): T; + reportError(error: any): void; + fetch(input: RequestInfo | URL, init?: RequestInit): Promise; + self: ServiceWorkerGlobalScope; + crypto: Crypto; + caches: CacheStorage; + scheduler: Scheduler; + performance: Performance; + Cloudflare: Cloudflare; + readonly origin: string; + Event: typeof Event; + ExtendableEvent: typeof ExtendableEvent; + CustomEvent: typeof CustomEvent; + PromiseRejectionEvent: typeof PromiseRejectionEvent; + FetchEvent: typeof FetchEvent; + TailEvent: typeof TailEvent; + TraceEvent: typeof TailEvent; + ScheduledEvent: typeof ScheduledEvent; + MessageEvent: typeof MessageEvent; + CloseEvent: typeof CloseEvent; + ReadableStreamDefaultReader: typeof ReadableStreamDefaultReader; + ReadableStreamBYOBReader: typeof ReadableStreamBYOBReader; + ReadableStream: typeof ReadableStream; + WritableStream: typeof WritableStream; + WritableStreamDefaultWriter: typeof WritableStreamDefaultWriter; + TransformStream: typeof TransformStream; + ByteLengthQueuingStrategy: typeof ByteLengthQueuingStrategy; + CountQueuingStrategy: typeof CountQueuingStrategy; + ErrorEvent: typeof ErrorEvent; + MessageChannel: typeof MessageChannel; + MessagePort: typeof MessagePort; + EventSource: typeof EventSource; + ReadableStreamBYOBRequest: typeof ReadableStreamBYOBRequest; + ReadableStreamDefaultController: typeof ReadableStreamDefaultController; + ReadableByteStreamController: typeof ReadableByteStreamController; + WritableStreamDefaultController: typeof WritableStreamDefaultController; + TransformStreamDefaultController: typeof TransformStreamDefaultController; + CompressionStream: typeof CompressionStream; + DecompressionStream: typeof DecompressionStream; + TextEncoderStream: typeof TextEncoderStream; + TextDecoderStream: typeof TextDecoderStream; + Headers: typeof Headers; + Body: typeof Body; + Request: typeof Request; + Response: typeof Response; + WebSocket: typeof WebSocket; + WebSocketPair: typeof WebSocketPair; + WebSocketRequestResponsePair: typeof WebSocketRequestResponsePair; + AbortController: typeof AbortController; + AbortSignal: typeof AbortSignal; + TextDecoder: typeof TextDecoder; + TextEncoder: typeof TextEncoder; + navigator: Navigator; + Navigator: typeof Navigator; + URL: typeof URL; + URLSearchParams: typeof URLSearchParams; + URLPattern: typeof URLPattern; + Blob: typeof Blob; + File: typeof File; + FormData: typeof FormData; + Crypto: typeof Crypto; + SubtleCrypto: typeof SubtleCrypto; + CryptoKey: typeof CryptoKey; + CacheStorage: typeof CacheStorage; + Cache: typeof Cache; + FixedLengthStream: typeof FixedLengthStream; + IdentityTransformStream: typeof IdentityTransformStream; + HTMLRewriter: typeof HTMLRewriter; +} +declare function addEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetAddEventListenerOptions | boolean): void; +declare function removeEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetEventListenerOptions | boolean): void; +/** + * The **`dispatchEvent()`** method of the EventTarget sends an Event to the object, (synchronously) invoking the affected event listeners in the appropriate order. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent) + */ +declare function dispatchEvent(event: WorkerGlobalScopeEventMap[keyof WorkerGlobalScopeEventMap]): boolean; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/btoa) */ +declare function btoa(data: string): string; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/atob) */ +declare function atob(data: string): string; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setTimeout) */ +declare function setTimeout(callback: (...args: any[]) => void, msDelay?: number): number; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setTimeout) */ +declare function setTimeout(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/clearTimeout) */ +declare function clearTimeout(timeoutId: number | null): void; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setInterval) */ +declare function setInterval(callback: (...args: any[]) => void, msDelay?: number): number; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/setInterval) */ +declare function setInterval(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/clearInterval) */ +declare function clearInterval(timeoutId: number | null): void; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/queueMicrotask) */ +declare function queueMicrotask(task: Function): void; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/structuredClone) */ +declare function structuredClone(value: T, options?: StructuredSerializeOptions): T; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/reportError) */ +declare function reportError(error: any): void; +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/fetch) */ +declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise; +declare const self: ServiceWorkerGlobalScope; +/** +* The Web Crypto API provides a set of low-level functions for common cryptographic tasks. +* The Workers runtime implements the full surface of this API, but with some differences in +* the [supported algorithms](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/#supported-algorithms) +* compared to those implemented in most browsers. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/) +*/ +declare const crypto: Crypto; +/** +* The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) +*/ +declare const caches: CacheStorage; +declare const scheduler: Scheduler; +/** +* The Workers runtime supports a subset of the Performance API, used to measure timing and performance, +* as well as timing of subrequests and other operations. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/) +*/ +declare const performance: Performance; +declare const Cloudflare: Cloudflare; +declare const origin: string; +declare const navigator: Navigator; +interface TestController { +} +interface ExecutionContext { + waitUntil(promise: Promise): void; + passThroughOnException(): void; + readonly exports: Cloudflare.Exports; + readonly props: Props; + cache?: CacheContext; + readonly access?: CloudflareAccessContext; + tracing: Tracing; +} +type ExportedHandlerFetchHandler = (request: Request>, env: Env, ctx: ExecutionContext) => Response | Promise; +type ExportedHandlerConnectHandler = (socket: Socket, env: Env, ctx: ExecutionContext) => void | Promise; +type ExportedHandlerTailHandler = (events: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise; +type ExportedHandlerTraceHandler = (traces: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise; +type ExportedHandlerTailStreamHandler = (event: TailStream.TailEvent, env: Env, ctx: ExecutionContext) => TailStream.TailEventHandlerType | Promise; +type ExportedHandlerScheduledHandler = (controller: ScheduledController, env: Env, ctx: ExecutionContext) => void | Promise; +type ExportedHandlerQueueHandler = (batch: MessageBatch, env: Env, ctx: ExecutionContext) => void | Promise; +type ExportedHandlerTestHandler = (controller: TestController, env: Env, ctx: ExecutionContext) => void | Promise; +interface ExportedHandler { + fetch?: ExportedHandlerFetchHandler; + connect?: ExportedHandlerConnectHandler; + tail?: ExportedHandlerTailHandler; + trace?: ExportedHandlerTraceHandler; + tailStream?: ExportedHandlerTailStreamHandler; + scheduled?: ExportedHandlerScheduledHandler; + test?: ExportedHandlerTestHandler; + email?: EmailExportedHandler; + queue?: ExportedHandlerQueueHandler; +} +interface StructuredSerializeOptions { + transfer?: any[]; +} +declare abstract class Navigator { + sendBeacon(url: string, body?: BodyInit): boolean; + readonly userAgent: string; + readonly hardwareConcurrency: number; + readonly platform: string; + readonly language: string; + readonly languages: string[]; +} +interface AlarmInvocationInfo { + readonly isRetry: boolean; + readonly retryCount: number; + readonly scheduledTime: number; +} +interface Cloudflare { + readonly compatibilityFlags: Record; +} +interface CachePurgeError { + code: number; + message: string; +} +interface CachePurgeResult { + success: boolean; + errors: CachePurgeError[]; +} +interface CachePurgeOptions { + tags?: string[]; + pathPrefixes?: string[]; + purgeEverything?: boolean; +} +interface CacheContext { + purge(options: CachePurgeOptions): Promise; +} +interface CloudflareAccessContext { + readonly aud: string; + getIdentity(): Promise; +} +declare abstract class ColoLocalActorNamespace { + get(actorId: string): Fetcher; +} +interface DurableObject { + fetch(request: Request): Response | Promise; + connect?(socket: Socket): void | Promise; + alarm?(alarmInfo?: AlarmInvocationInfo): void | Promise; + webSocketMessage?(ws: WebSocket, message: string | ArrayBuffer): void | Promise; + webSocketClose?(ws: WebSocket, code: number, reason: string, wasClean: boolean): void | Promise; + webSocketError?(ws: WebSocket, error: unknown): void | Promise; +} +type DurableObjectStub = Fetcher & { + readonly id: DurableObjectId; + readonly name?: string; +}; +interface DurableObjectId { + toString(): string; + equals(other: DurableObjectId): boolean; + readonly name?: string; + readonly jurisdiction?: string; +} +declare abstract class DurableObjectNamespace { + newUniqueId(options?: DurableObjectNamespaceNewUniqueIdOptions): DurableObjectId; + idFromName(name: string): DurableObjectId; + idFromString(id: string): DurableObjectId; + get(id: DurableObjectId, options?: DurableObjectNamespaceGetDurableObjectOptions): DurableObjectStub; + getByName(name: string, options?: DurableObjectNamespaceGetDurableObjectOptions): DurableObjectStub; + jurisdiction(jurisdiction: DurableObjectJurisdiction): DurableObjectNamespace; +} +type DurableObjectJurisdiction = "eu" | "fedramp" | "fedramp-high"; +interface DurableObjectNamespaceNewUniqueIdOptions { + jurisdiction?: DurableObjectJurisdiction; +} +type DurableObjectLocationHint = "wnam" | "enam" | "sam" | "weur" | "eeur" | "apac" | "apac-ne" | "apac-se" | "oc" | "afr" | "me"; +type DurableObjectRoutingMode = "primary-only"; +interface DurableObjectNamespaceGetDurableObjectOptions { + locationHint?: DurableObjectLocationHint; + routingMode?: DurableObjectRoutingMode; +} +interface DurableObjectClass<_T extends Rpc.DurableObjectBranded | undefined = undefined> { +} +interface DurableObjectState { + waitUntil(promise: Promise): void; + readonly exports: Cloudflare.Exports; + readonly props: Props; + readonly id: DurableObjectId; + readonly storage: DurableObjectStorage; + container?: Container; + facets: DurableObjectFacets; + blockConcurrencyWhile(callback: () => Promise): Promise; + acceptWebSocket(ws: WebSocket, tags?: string[]): void; + getWebSockets(tag?: string): WebSocket[]; + setWebSocketAutoResponse(maybeReqResp?: WebSocketRequestResponsePair): void; + getWebSocketAutoResponse(): WebSocketRequestResponsePair | null; + getWebSocketAutoResponseTimestamp(ws: WebSocket): Date | null; + setHibernatableWebSocketEventTimeout(timeoutMs?: number): void; + getHibernatableWebSocketEventTimeout(): number | null; + getTags(ws: WebSocket): string[]; + abort(reason?: string): void; +} +interface DurableObjectTransaction { + get(key: string, options?: DurableObjectGetOptions): Promise; + get(keys: string[], options?: DurableObjectGetOptions): Promise>; + list(options?: DurableObjectListOptions): Promise>; + put(key: string, value: T, options?: DurableObjectPutOptions): Promise; + put(entries: Record, options?: DurableObjectPutOptions): Promise; + delete(key: string, options?: DurableObjectPutOptions): Promise; + delete(keys: string[], options?: DurableObjectPutOptions): Promise; + rollback(): void; + getAlarm(options?: DurableObjectGetAlarmOptions): Promise; + setAlarm(scheduledTime: number | Date, options?: DurableObjectSetAlarmOptions): Promise; + deleteAlarm(options?: DurableObjectSetAlarmOptions): Promise; +} +interface DurableObjectStorage { + get(key: string, options?: DurableObjectGetOptions): Promise; + get(keys: string[], options?: DurableObjectGetOptions): Promise>; + list(options?: DurableObjectListOptions): Promise>; + put(key: string, value: T, options?: DurableObjectPutOptions): Promise; + put(entries: Record, options?: DurableObjectPutOptions): Promise; + delete(key: string, options?: DurableObjectPutOptions): Promise; + delete(keys: string[], options?: DurableObjectPutOptions): Promise; + deleteAll(options?: DurableObjectPutOptions): Promise; + transaction(closure: (txn: DurableObjectTransaction) => Promise): Promise; + getAlarm(options?: DurableObjectGetAlarmOptions): Promise; + setAlarm(scheduledTime: number | Date, options?: DurableObjectSetAlarmOptions): Promise; + deleteAlarm(options?: DurableObjectSetAlarmOptions): Promise; + sync(): Promise; + sql: SqlStorage; + kv: SyncKvStorage; + transactionSync(closure: () => T): T; + getCurrentBookmark(): Promise; + getBookmarkForTime(timestamp: number | Date): Promise; + onNextSessionRestoreBookmark(bookmark: string): Promise; +} +interface DurableObjectListOptions { + start?: string; + startAfter?: string; + end?: string; + prefix?: string; + reverse?: boolean; + limit?: number; + allowConcurrency?: boolean; + noCache?: boolean; +} +interface DurableObjectGetOptions { + allowConcurrency?: boolean; + noCache?: boolean; +} +interface DurableObjectGetAlarmOptions { + allowConcurrency?: boolean; +} +interface DurableObjectPutOptions { + allowConcurrency?: boolean; + allowUnconfirmed?: boolean; + noCache?: boolean; +} +interface DurableObjectSetAlarmOptions { + allowConcurrency?: boolean; + allowUnconfirmed?: boolean; +} +declare class WebSocketRequestResponsePair { + constructor(request: string, response: string); + get request(): string; + get response(): string; +} +interface DurableObjectFacets { + get(name: string, getStartupOptions: () => FacetStartupOptions | Promise>): Fetcher; + abort(name: string, reason: any): void; + delete(name: string): void; + clone(src: string, dst: string): void; +} +interface FacetStartupOptions { + id?: DurableObjectId | string; + class: DurableObjectClass; +} +interface AnalyticsEngineDataset { + writeDataPoint(event?: AnalyticsEngineDataPoint): void; +} +interface AnalyticsEngineDataPoint { + indexes?: ((ArrayBuffer | string) | null)[]; + doubles?: number[]; + blobs?: ((ArrayBuffer | string) | null)[]; +} +/** + * The **`Event`** interface represents an event which takes place on an `EventTarget`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event) + */ +declare class Event { + constructor(type: string, init?: EventInit); + /** + * The **`type`** read-only property of the Event interface returns a string containing the event's type. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/type) + */ + get type(): string; + /** + * The **`eventPhase`** read-only property of the being evaluated. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/eventPhase) + */ + get eventPhase(): number; + /** + * The read-only **`composed`** property of the or not the event will propagate across the shadow DOM boundary into the standard DOM. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/composed) + */ + get composed(): boolean; + /** + * The **`bubbles`** read-only property of the Event interface indicates whether the event bubbles up through the DOM tree or not. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/bubbles) + */ + get bubbles(): boolean; + /** + * The **`cancelable`** read-only property of the Event interface indicates whether the event can be canceled, and therefore prevented as if the event never happened. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelable) + */ + get cancelable(): boolean; + /** + * The **`defaultPrevented`** read-only property of the Event interface returns a boolean value indicating whether or not the call to Event.preventDefault() canceled the event. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/defaultPrevented) + */ + get defaultPrevented(): boolean; + /** + * The Event property **`returnValue`** indicates whether the default action for this event has been prevented or not. + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/returnValue) + */ + get returnValue(): boolean; + /** + * The **`currentTarget`** read-only property of the Event interface identifies the element to which the event handler has been attached. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/currentTarget) + */ + get currentTarget(): EventTarget | undefined; + /** + * The read-only **`target`** property of the dispatched. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/target) + */ + get target(): EventTarget | undefined; + /** + * The deprecated **`Event.srcElement`** is an alias for the Event.target property. + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/srcElement) + */ + get srcElement(): EventTarget | undefined; + /** + * The **`timeStamp`** read-only property of the Event interface returns the time (in milliseconds) at which the event was created. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/timeStamp) + */ + get timeStamp(): number; + /** + * The **`isTrusted`** read-only property of the when the event was generated by the user agent (including via user actions and programmatic methods such as HTMLElement.focus()), and `false` when the event was dispatched via The only exception is the `click` event, which initializes the `isTrusted` property to `false` in user agents. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/isTrusted) + */ + get isTrusted(): boolean; + /** + * The **`cancelBubble`** property of the Event interface is deprecated. + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelBubble) + */ + get cancelBubble(): boolean; + /** + * The **`cancelBubble`** property of the Event interface is deprecated. + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelBubble) + */ + set cancelBubble(value: boolean); + /** + * The **`stopImmediatePropagation()`** method of the If several listeners are attached to the same element for the same event type, they are called in the order in which they were added. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/stopImmediatePropagation) + */ + stopImmediatePropagation(): void; + /** + * The **`preventDefault()`** method of the Event interface tells the user agent that if the event does not get explicitly handled, its default action should not be taken as it normally would be. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/preventDefault) + */ + preventDefault(): void; + /** + * The **`stopPropagation()`** method of the Event interface prevents further propagation of the current event in the capturing and bubbling phases. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/stopPropagation) + */ + stopPropagation(): void; + /** + * The **`composedPath()`** method of the Event interface returns the event's path which is an array of the objects on which listeners will be invoked. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/composedPath) + */ + composedPath(): EventTarget[]; + static readonly NONE: number; + static readonly CAPTURING_PHASE: number; + static readonly AT_TARGET: number; + static readonly BUBBLING_PHASE: number; +} +interface EventInit { + bubbles?: boolean; + cancelable?: boolean; + composed?: boolean; +} +type EventListener = (event: EventType) => void; +interface EventListenerObject { + handleEvent(event: EventType): void; +} +type EventListenerOrEventListenerObject = EventListener | EventListenerObject; +/** + * The **`EventTarget`** interface is implemented by objects that can receive events and may have listeners for them. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget) + */ +declare class EventTarget = Record> { + constructor(); + /** + * The **`addEventListener()`** method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetAddEventListenerOptions | boolean): void; + /** + * The **`removeEventListener()`** method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener) + */ + removeEventListener(type: Type, handler: EventListenerOrEventListenerObject, options?: EventTargetEventListenerOptions | boolean): void; + /** + * The **`dispatchEvent()`** method of the EventTarget sends an Event to the object, (synchronously) invoking the affected event listeners in the appropriate order. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent) + */ + dispatchEvent(event: EventMap[keyof EventMap]): boolean; +} +interface EventTargetEventListenerOptions { + capture?: boolean; +} +interface EventTargetAddEventListenerOptions { + capture?: boolean; + passive?: boolean; + once?: boolean; + signal?: AbortSignal; +} +interface EventTargetHandlerObject { + handleEvent: (event: Event) => any | undefined; +} +/** + * The **`AbortController`** interface represents a controller object that allows you to abort one or more Web requests as and when desired. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController) + */ +declare class AbortController { + constructor(); + /** + * The **`signal`** read-only property of the AbortController interface returns an AbortSignal object instance, which can be used to communicate with/abort an asynchronous operation as desired. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController/signal) + */ + get signal(): AbortSignal; + /** + * The **`abort()`** method of the AbortController interface aborts an asynchronous operation before it has completed. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController/abort) + */ + abort(reason?: any): void; +} +/** + * The **`AbortSignal`** interface represents a signal object that allows you to communicate with an asynchronous operation (such as a fetch request) and abort it if required via an AbortController object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal) + */ +declare abstract class AbortSignal extends EventTarget { + /** + * The **`AbortSignal.abort()`** static method returns an AbortSignal that is already set as aborted (and which does not trigger an AbortSignal/abort_event event). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_static) + */ + static abort(reason?: any): AbortSignal; + /** + * The **`AbortSignal.timeout()`** static method returns an AbortSignal that will automatically abort after a specified time. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/timeout_static) + */ + static timeout(delay: number): AbortSignal; + /** + * The **`AbortSignal.any()`** static method takes an iterable of abort signals and returns an AbortSignal. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/any_static) + */ + static any(signals: AbortSignal[]): AbortSignal; + /** + * The **`aborted`** read-only property returns a value that indicates whether the asynchronous operations the signal is communicating with are aborted (`true`) or not (`false`). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/aborted) + */ + get aborted(): boolean; + /** + * The **`reason`** read-only property returns a JavaScript value that indicates the abort reason. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/reason) + */ + get reason(): any; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_event) */ + get onabort(): any | null; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_event) */ + set onabort(value: any | null); + /** + * The **`throwIfAborted()`** method throws the signal's abort AbortSignal.reason if the signal has been aborted; otherwise it does nothing. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/throwIfAborted) + */ + throwIfAborted(): void; +} +interface Scheduler { + wait(delay: number, maybeOptions?: SchedulerWaitOptions): Promise; +} +interface SchedulerWaitOptions { + signal?: AbortSignal; +} +/** + * The **`ExtendableEvent`** interface extends the lifetime of the `install` and `activate` events dispatched on the global scope as part of the service worker lifecycle. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ExtendableEvent) + */ +declare abstract class ExtendableEvent extends Event { + /** + * The **`ExtendableEvent.waitUntil()`** method tells the event dispatcher that work is ongoing. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ExtendableEvent/waitUntil) + */ + waitUntil(promise: Promise): void; +} +/** + * The **`CustomEvent`** interface represents events initialized by an application for any purpose. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent) + */ +declare class CustomEvent extends Event { + constructor(type: string, init?: CustomEventCustomEventInit); + /** + * The read-only **`detail`** property of the CustomEvent interface returns any data passed when initializing the event. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent/detail) + */ + get detail(): T; +} +interface CustomEventCustomEventInit { + bubbles?: boolean; + cancelable?: boolean; + composed?: boolean; + detail?: any; +} +/** + * The **`Blob`** interface represents a blob, which is a file-like object of immutable, raw data; they can be read as text or binary data, or converted into a ReadableStream so its methods can be used for processing the data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob) + */ +declare class Blob { + constructor(bits?: ((ArrayBuffer | ArrayBufferView) | string | Blob)[], options?: BlobOptions); + /** + * The **`size`** read-only property of the Blob interface returns the size of the Blob or File in bytes. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) + */ + get size(): number; + /** + * The **`type`** read-only property of the Blob interface returns the MIME type of the file. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) + */ + get type(): string; + /** + * The **`slice()`** method of the Blob interface creates and returns a new `Blob` object which contains data from a subset of the blob on which it's called. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) + */ + slice(start?: number, end?: number, type?: string): Blob; + /** + * The **`arrayBuffer()`** method of the Blob interface returns a Promise that resolves with the contents of the blob as binary data contained in an ArrayBuffer. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer) + */ + arrayBuffer(): Promise; + /** + * The **`bytes()`** method of the Blob interface returns a Promise that resolves with a Uint8Array containing the contents of the blob as an array of bytes. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/bytes) + */ + bytes(): Promise; + /** + * The **`text()`** method of the string containing the contents of the blob, interpreted as UTF-8. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) + */ + text(): Promise; + /** + * The **`stream()`** method of the Blob interface returns a ReadableStream which upon reading returns the data contained within the `Blob`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/stream) + */ + stream(): ReadableStream; +} +interface BlobOptions { + type?: string; +} +/** + * The **`File`** interface provides information about files and allows JavaScript in a web page to access their content. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File) + */ +declare class File extends Blob { + constructor(bits: ((ArrayBuffer | ArrayBufferView) | string | Blob)[] | undefined, name: string, options?: FileOptions); + /** + * The **`name`** read-only property of the File interface returns the name of the file represented by a File object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) + */ + get name(): string; + /** + * The **`lastModified`** read-only property of the File interface provides the last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) + */ + get lastModified(): number; +} +interface FileOptions { + type?: string; + lastModified?: number; +} +/** +* The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) +*/ +declare abstract class CacheStorage { + /** + * The **`open()`** method of the the Cache object matching the `cacheName`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CacheStorage/open) + */ + open(cacheName: string): Promise; + readonly default: Cache; +} +/** +* The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) +*/ +declare abstract class Cache { + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#delete) */ + delete(request: RequestInfo | URL, options?: CacheQueryOptions): Promise; + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#match) */ + match(request: RequestInfo | URL, options?: CacheQueryOptions): Promise; + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#put) */ + put(request: RequestInfo | URL, response: Response): Promise; +} +interface CacheQueryOptions { + ignoreMethod?: boolean; +} +/** +* The Web Crypto API provides a set of low-level functions for common cryptographic tasks. +* The Workers runtime implements the full surface of this API, but with some differences in +* the [supported algorithms](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/#supported-algorithms) +* compared to those implemented in most browsers. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/) +*/ +declare abstract class Crypto { + /** + * The **`Crypto.subtle`** read-only property returns a cryptographic operations. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/subtle) + */ + get subtle(): SubtleCrypto; + /** + * The **`Crypto.getRandomValues()`** method lets you get cryptographically strong random values. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/getRandomValues) + */ + getRandomValues(buffer: T): T; + /** + * The **`randomUUID()`** method of the Crypto interface is used to generate a v4 UUID using a cryptographically secure random number generator. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/randomUUID) + */ + randomUUID(): string; + DigestStream: typeof DigestStream; +} +/** + * The **`SubtleCrypto`** interface of the Web Crypto API provides a number of low-level cryptographic functions. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto) + */ +declare abstract class SubtleCrypto { + /** + * The **`encrypt()`** method of the SubtleCrypto interface encrypts data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/encrypt) + */ + encrypt(algorithm: string | SubtleCryptoEncryptAlgorithm, key: CryptoKey, plainText: ArrayBuffer | ArrayBufferView): Promise; + /** + * The **`decrypt()`** method of the SubtleCrypto interface decrypts some encrypted data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/decrypt) + */ + decrypt(algorithm: string | SubtleCryptoEncryptAlgorithm, key: CryptoKey, cipherText: ArrayBuffer | ArrayBufferView): Promise; + /** + * The **`sign()`** method of the SubtleCrypto interface generates a digital signature. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/sign) + */ + sign(algorithm: string | SubtleCryptoSignAlgorithm, key: CryptoKey, data: ArrayBuffer | ArrayBufferView): Promise; + /** + * The **`verify()`** method of the SubtleCrypto interface verifies a digital signature. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/verify) + */ + verify(algorithm: string | SubtleCryptoSignAlgorithm, key: CryptoKey, signature: ArrayBuffer | ArrayBufferView, data: ArrayBuffer | ArrayBufferView): Promise; + /** + * The **`digest()`** method of the SubtleCrypto interface generates a _digest_ of the given data, using the specified hash function. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/digest) + */ + digest(algorithm: string | SubtleCryptoHashAlgorithm, data: ArrayBuffer | ArrayBufferView): Promise; + /** + * The **`generateKey()`** method of the SubtleCrypto interface is used to generate a new key (for symmetric algorithms) or key pair (for public-key algorithms). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/generateKey) + */ + generateKey(algorithm: string | SubtleCryptoGenerateKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; + /** + * The **`deriveKey()`** method of the SubtleCrypto interface can be used to derive a secret key from a master key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveKey) + */ + deriveKey(algorithm: string | SubtleCryptoDeriveKeyAlgorithm, baseKey: CryptoKey, derivedKeyAlgorithm: string | SubtleCryptoImportKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; + /** + * The **`deriveBits()`** method of the key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveBits) + */ + deriveBits(algorithm: string | SubtleCryptoDeriveKeyAlgorithm, baseKey: CryptoKey, length?: number | null): Promise; + /** + * The **`importKey()`** method of the SubtleCrypto interface imports a key: that is, it takes as input a key in an external, portable format and gives you a CryptoKey object that you can use in the Web Crypto API. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/importKey) + */ + importKey(format: string, keyData: (ArrayBuffer | ArrayBufferView) | JsonWebKey, algorithm: string | SubtleCryptoImportKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; + /** + * The **`exportKey()`** method of the SubtleCrypto interface exports a key: that is, it takes as input a CryptoKey object and gives you the key in an external, portable format. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/exportKey) + */ + exportKey(format: string, key: CryptoKey): Promise; + /** + * The **`wrapKey()`** method of the SubtleCrypto interface 'wraps' a key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/wrapKey) + */ + wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | SubtleCryptoEncryptAlgorithm): Promise; + /** + * The **`unwrapKey()`** method of the SubtleCrypto interface 'unwraps' a key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/unwrapKey) + */ + unwrapKey(format: string, wrappedKey: ArrayBuffer | ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | SubtleCryptoEncryptAlgorithm, unwrappedKeyAlgorithm: string | SubtleCryptoImportKeyAlgorithm, extractable: boolean, keyUsages: string[]): Promise; + timingSafeEqual(a: ArrayBuffer | ArrayBufferView, b: ArrayBuffer | ArrayBufferView): boolean; +} +/** + * The **`CryptoKey`** interface of the Web Crypto API represents a cryptographic key obtained from one of the SubtleCrypto methods SubtleCrypto.generateKey, SubtleCrypto.deriveKey, SubtleCrypto.importKey, or SubtleCrypto.unwrapKey. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey) + */ +declare abstract class CryptoKey { + /** + * The read-only **`type`** property of the CryptoKey interface indicates which kind of key is represented by the object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/type) + */ + readonly type: string; + /** + * The read-only **`extractable`** property of the CryptoKey interface indicates whether or not the key may be extracted using `SubtleCrypto.exportKey()` or `SubtleCrypto.wrapKey()`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable) + */ + readonly extractable: boolean; + /** + * The read-only **`algorithm`** property of the CryptoKey interface returns an object describing the algorithm for which this key can be used, and any associated extra parameters. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm) + */ + readonly algorithm: CryptoKeyKeyAlgorithm | CryptoKeyAesKeyAlgorithm | CryptoKeyHmacKeyAlgorithm | CryptoKeyRsaKeyAlgorithm | CryptoKeyEllipticKeyAlgorithm | CryptoKeyArbitraryKeyAlgorithm; + /** + * The read-only **`usages`** property of the CryptoKey interface indicates what can be done with the key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/usages) + */ + readonly usages: string[]; +} +interface CryptoKeyPair { + publicKey: CryptoKey; + privateKey: CryptoKey; +} +interface JsonWebKey { + kty: string; + use?: string; + key_ops?: string[]; + alg?: string; + ext?: boolean; + crv?: string; + x?: string; + y?: string; + d?: string; + n?: string; + e?: string; + p?: string; + q?: string; + dp?: string; + dq?: string; + qi?: string; + oth?: RsaOtherPrimesInfo[]; + k?: string; +} +interface RsaOtherPrimesInfo { + r?: string; + d?: string; + t?: string; +} +interface SubtleCryptoDeriveKeyAlgorithm { + name: string; + salt?: (ArrayBuffer | ArrayBufferView); + iterations?: number; + hash?: (string | SubtleCryptoHashAlgorithm); + $public?: CryptoKey; + info?: (ArrayBuffer | ArrayBufferView); +} +interface SubtleCryptoEncryptAlgorithm { + name: string; + iv?: (ArrayBuffer | ArrayBufferView); + additionalData?: (ArrayBuffer | ArrayBufferView); + tagLength?: number; + counter?: (ArrayBuffer | ArrayBufferView); + length?: number; + label?: (ArrayBuffer | ArrayBufferView); +} +interface SubtleCryptoGenerateKeyAlgorithm { + name: string; + hash?: (string | SubtleCryptoHashAlgorithm); + modulusLength?: number; + publicExponent?: (ArrayBuffer | ArrayBufferView); + length?: number; + namedCurve?: string; +} +interface SubtleCryptoHashAlgorithm { + name: string; +} +interface SubtleCryptoImportKeyAlgorithm { + name: string; + hash?: (string | SubtleCryptoHashAlgorithm); + length?: number; + namedCurve?: string; + compressed?: boolean; +} +interface SubtleCryptoSignAlgorithm { + name: string; + hash?: (string | SubtleCryptoHashAlgorithm); + dataLength?: number; + saltLength?: number; +} +interface CryptoKeyKeyAlgorithm { + name: string; +} +interface CryptoKeyAesKeyAlgorithm { + name: string; + length: number; +} +interface CryptoKeyHmacKeyAlgorithm { + name: string; + hash: CryptoKeyKeyAlgorithm; + length: number; +} +interface CryptoKeyRsaKeyAlgorithm { + name: string; + modulusLength: number; + publicExponent: ArrayBuffer | ArrayBufferView; + hash?: CryptoKeyKeyAlgorithm; +} +interface CryptoKeyEllipticKeyAlgorithm { + name: string; + namedCurve: string; +} +interface CryptoKeyArbitraryKeyAlgorithm { + name: string; + hash?: CryptoKeyKeyAlgorithm; + namedCurve?: string; + length?: number; +} +declare class DigestStream extends WritableStream { + constructor(algorithm: string | SubtleCryptoHashAlgorithm); + readonly digest: Promise; + get bytesWritten(): number | bigint; +} +/** + * The **`TextDecoder`** interface represents a decoder for a specific text encoding, such as `UTF-8`, `ISO-8859-2`, `KOI8-R`, `GBK`, etc. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoder) + */ +declare class TextDecoder { + constructor(label?: string, options?: TextDecoderConstructorOptions); + /** + * The **`TextDecoder.decode()`** method returns a string containing text decoded from the buffer passed as a parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoder/decode) + */ + decode(input?: (ArrayBuffer | ArrayBufferView), options?: TextDecoderDecodeOptions): string; + get encoding(): string; + get fatal(): boolean; + get ignoreBOM(): boolean; +} +/** + * The **`TextEncoder`** interface takes a stream of code points as input and emits a stream of UTF-8 bytes. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder) + */ +declare class TextEncoder { + constructor(); + /** + * The **`TextEncoder.encode()`** method takes a string as input, and returns a Global_Objects/Uint8Array containing the text given in parameters encoded with the specific method for that TextEncoder object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder/encode) + */ + encode(input?: string): Uint8Array; + /** + * The **`TextEncoder.encodeInto()`** method takes a string to encode and a destination Uint8Array to put resulting UTF-8 encoded text into, and returns a dictionary object indicating the progress of the encoding. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder/encodeInto) + */ + encodeInto(input: string, buffer: Uint8Array): TextEncoderEncodeIntoResult; + get encoding(): string; +} +interface TextDecoderConstructorOptions { + fatal: boolean; + ignoreBOM: boolean; +} +interface TextDecoderDecodeOptions { + stream: boolean; +} +interface TextEncoderEncodeIntoResult { + read: number; + written: number; +} +/** + * The **`ErrorEvent`** interface represents events providing information related to errors in scripts or in files. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent) + */ +declare class ErrorEvent extends Event { + constructor(type: string, init?: ErrorEventErrorEventInit); + /** + * The **`filename`** read-only property of the ErrorEvent interface returns a string containing the name of the script file in which the error occurred. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/filename) + */ + get filename(): string; + /** + * The **`message`** read-only property of the ErrorEvent interface returns a string containing a human-readable error message describing the problem. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/message) + */ + get message(): string; + /** + * The **`lineno`** read-only property of the ErrorEvent interface returns an integer containing the line number of the script file on which the error occurred. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/lineno) + */ + get lineno(): number; + /** + * The **`colno`** read-only property of the ErrorEvent interface returns an integer containing the column number of the script file on which the error occurred. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/colno) + */ + get colno(): number; + /** + * The **`error`** read-only property of the ErrorEvent interface returns a JavaScript value, such as an Error or DOMException, representing the error associated with this event. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/error) + */ + get error(): any; +} +interface ErrorEventErrorEventInit { + message?: string; + filename?: string; + lineno?: number; + colno?: number; + error?: any; +} +/** + * The **`MessageEvent`** interface represents a message received by a target object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent) + */ +declare class MessageEvent extends Event { + constructor(type: string, initializer: MessageEventInit); + /** + * The **`data`** read-only property of the The data sent by the message emitter; this can be any data type, depending on what originated this event. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/data) + */ + readonly data: any; + /** + * The **`origin`** read-only property of the origin of the message emitter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/origin) + */ + readonly origin: string | null; + /** + * The **`lastEventId`** read-only property of the unique ID for the event. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/lastEventId) + */ + readonly lastEventId: string; + /** + * The **`source`** read-only property of the a WindowProxy, MessagePort, or a `MessageEventSource` (which can be a WindowProxy, message emitter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/source) + */ + readonly source: MessagePort | null; + /** + * The **`ports`** read-only property of the containing all MessagePort objects sent with the message, in order. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/ports) + */ + readonly ports: MessagePort[]; +} +interface MessageEventInit { + data: ArrayBuffer | string; +} +/** + * The **`PromiseRejectionEvent`** interface represents events which are sent to the global script context when JavaScript Promises are rejected. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent) + */ +declare abstract class PromiseRejectionEvent extends Event { + /** + * The PromiseRejectionEvent interface's **`promise`** read-only property indicates the JavaScript rejected. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/promise) + */ + readonly promise: Promise; + /** + * The PromiseRejectionEvent **`reason`** read-only property is any JavaScript value or Object which provides the reason passed into Promise.reject(). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/reason) + */ + readonly reason: any; +} +/** + * The **`FormData`** interface provides a way to construct a set of key/value pairs representing form fields and their values, which can be sent using the Window/fetch, XMLHttpRequest.send() or navigator.sendBeacon() methods. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData) + */ +declare class FormData { + constructor(); + /** + * The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) + */ + append(name: string, value: string | Blob): void; + /** + * The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) + */ + append(name: string, value: string): void; + /** + * The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) + */ + append(name: string, value: Blob, filename?: string): void; + /** + * The **`delete()`** method of the FormData interface deletes a key and its value(s) from a `FormData` object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/delete) + */ + delete(name: string): void; + /** + * The **`get()`** method of the FormData interface returns the first value associated with a given key from within a `FormData` object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/get) + */ + get(name: string): (File | string) | null; + /** + * The **`getAll()`** method of the FormData interface returns all the values associated with a given key from within a `FormData` object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/getAll) + */ + getAll(name: string): (File | string)[]; + /** + * The **`has()`** method of the FormData interface returns whether a `FormData` object contains a certain key. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/has) + */ + has(name: string): boolean; + /** + * The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) + */ + set(name: string, value: string | Blob): void; + /** + * The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) + */ + set(name: string, value: string): void; + /** + * The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) + */ + set(name: string, value: Blob, filename?: string): void; + /* Returns an array of key, value pairs for every entry in the list. */ + entries(): IterableIterator<[ + key: string, + value: File | string + ]>; + /* Returns a list of keys in the list. */ + keys(): IterableIterator; + /* Returns a list of values in the list. */ + values(): IterableIterator<(File | string)>; + forEach(callback: (this: This, value: File | string, key: string, parent: FormData) => void, thisArg?: This): void; + [Symbol.iterator](): IterableIterator<[ + key: string, + value: File | string + ]>; +} +interface ContentOptions { + html?: boolean; +} +declare class HTMLRewriter { + constructor(); + on(selector: string, handlers: HTMLRewriterElementContentHandlers): HTMLRewriter; + onDocument(handlers: HTMLRewriterDocumentContentHandlers): HTMLRewriter; + transform(response: Response): Response; +} +interface HTMLRewriterElementContentHandlers { + element?(element: Element): void | Promise; + comments?(comment: Comment): void | Promise; + text?(element: Text): void | Promise; +} +interface HTMLRewriterDocumentContentHandlers { + doctype?(doctype: Doctype): void | Promise; + comments?(comment: Comment): void | Promise; + text?(text: Text): void | Promise; + end?(end: DocumentEnd): void | Promise; +} +interface Doctype { + readonly name: string | null; + readonly publicId: string | null; + readonly systemId: string | null; +} +interface Element { + tagName: string; + readonly attributes: IterableIterator; + readonly removed: boolean; + readonly namespaceURI: string; + getAttribute(name: string): string | null; + hasAttribute(name: string): boolean; + setAttribute(name: string, value: string): Element; + removeAttribute(name: string): Element; + before(content: string | ReadableStream | Response, options?: ContentOptions): Element; + after(content: string | ReadableStream | Response, options?: ContentOptions): Element; + prepend(content: string | ReadableStream | Response, options?: ContentOptions): Element; + append(content: string | ReadableStream | Response, options?: ContentOptions): Element; + replace(content: string | ReadableStream | Response, options?: ContentOptions): Element; + remove(): Element; + removeAndKeepContent(): Element; + setInnerContent(content: string | ReadableStream | Response, options?: ContentOptions): Element; + onEndTag(handler: (tag: EndTag) => void | Promise): void; +} +interface EndTag { + name: string; + before(content: string | ReadableStream | Response, options?: ContentOptions): EndTag; + after(content: string | ReadableStream | Response, options?: ContentOptions): EndTag; + remove(): EndTag; +} +interface Comment { + text: string; + readonly removed: boolean; + before(content: string, options?: ContentOptions): Comment; + after(content: string, options?: ContentOptions): Comment; + replace(content: string, options?: ContentOptions): Comment; + remove(): Comment; +} +interface Text { + readonly text: string; + readonly lastInTextNode: boolean; + readonly removed: boolean; + before(content: string | ReadableStream | Response, options?: ContentOptions): Text; + after(content: string | ReadableStream | Response, options?: ContentOptions): Text; + replace(content: string | ReadableStream | Response, options?: ContentOptions): Text; + remove(): Text; +} +interface DocumentEnd { + append(content: string, options?: ContentOptions): DocumentEnd; +} +/** + * This is the event type for `fetch` events dispatched on the ServiceWorkerGlobalScope. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent) + */ +declare abstract class FetchEvent extends ExtendableEvent { + /** + * The **`request`** read-only property of the the event handler. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent/request) + */ + readonly request: Request; + /** + * The **`respondWith()`** method of allows you to provide a promise for a Response yourself. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent/respondWith) + */ + respondWith(promise: Response | Promise): void; + passThroughOnException(): void; +} +type HeadersInit = Headers | Iterable> | Record; +/** + * The **`Headers`** interface of the Fetch API allows you to perform various actions on HTTP request and response headers. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers) + */ +declare class Headers { + constructor(init?: HeadersInit); + /** + * The **`get()`** method of the Headers interface returns a byte string of all the values of a header within a `Headers` object with a given name. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/get) + */ + get(name: string): string | null; + getAll(name: string): string[]; + /** + * The **`getSetCookie()`** method of the Headers interface returns an array containing the values of all Set-Cookie headers associated with a response. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/getSetCookie) + */ + getSetCookie(): string[]; + /** + * The **`has()`** method of the Headers interface returns a boolean stating whether a `Headers` object contains a certain header. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/has) + */ + has(name: string): boolean; + /** + * The **`set()`** method of the Headers interface sets a new value for an existing header inside a `Headers` object, or adds the header if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/set) + */ + set(name: string, value: string): void; + /** + * The **`append()`** method of the Headers interface appends a new value onto an existing header inside a `Headers` object, or adds the header if it does not already exist. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/append) + */ + append(name: string, value: string): void; + /** + * The **`delete()`** method of the Headers interface deletes a header from the current `Headers` object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/delete) + */ + delete(name: string): void; + forEach(callback: (this: This, value: string, key: string, parent: Headers) => void, thisArg?: This): void; + /* Returns an iterator allowing to go through all key/value pairs contained in this object. */ + entries(): IterableIterator<[ + key: string, + value: string + ]>; + /* Returns an iterator allowing to go through all keys of the key/value pairs contained in this object. */ + keys(): IterableIterator; + /* Returns an iterator allowing to go through all values of the key/value pairs contained in this object. */ + values(): IterableIterator; + [Symbol.iterator](): IterableIterator<[ + key: string, + value: string + ]>; +} +type BodyInit = ReadableStream | string | ArrayBuffer | ArrayBufferView | Blob | URLSearchParams | FormData | Iterable | AsyncIterable; +declare abstract class Body { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/body) */ + get body(): ReadableStream | null; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bodyUsed) */ + get bodyUsed(): boolean; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer) */ + arrayBuffer(): Promise; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bytes) */ + bytes(): Promise; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/text) */ + text(): Promise; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/json) */ + json(): Promise; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/formData) */ + formData(): Promise; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/blob) */ + blob(): Promise; +} +/** + * The **`Response`** interface of the Fetch API represents the response to a request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response) + */ +declare var Response: { + prototype: Response; + new (body?: BodyInit | null, init?: ResponseInit): Response; + error(): Response; + redirect(url: string, status?: number): Response; + json(any: any, maybeInit?: (ResponseInit | Response)): Response; +}; +/** + * The **`Response`** interface of the Fetch API represents the response to a request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response) + */ +interface Response extends Body { + /** + * The **`clone()`** method of the Response interface creates a clone of a response object, identical in every way, but stored in a different variable. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/clone) + */ + clone(): Response; + /** + * The **`status`** read-only property of the Response interface contains the HTTP status codes of the response. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/status) + */ + status: number; + /** + * The **`statusText`** read-only property of the Response interface contains the status message corresponding to the HTTP status code in Response.status. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/statusText) + */ + statusText: string; + /** + * The **`headers`** read-only property of the with the response. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/headers) + */ + headers: Headers; + /** + * The **`ok`** read-only property of the Response interface contains a Boolean stating whether the response was successful (status in the range 200-299) or not. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/ok) + */ + ok: boolean; + /** + * The **`redirected`** read-only property of the Response interface indicates whether or not the response is the result of a request you made which was redirected. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/redirected) + */ + redirected: boolean; + /** + * The **`url`** read-only property of the Response interface contains the URL of the response. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/url) + */ + url: string; + webSocket: WebSocket | null; + cf: any | undefined; + /** + * The **`type`** read-only property of the Response interface contains the type of the response. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/type) + */ + type: "default" | "error"; +} +interface ResponseInit { + status?: number; + statusText?: string; + headers?: HeadersInit; + cf?: any; + webSocket?: (WebSocket | null); + encodeBody?: "automatic" | "manual"; +} +type RequestInfo> = Request | string; +/** + * The **`Request`** interface of the Fetch API represents a resource request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request) + */ +declare var Request: { + prototype: Request; + new >(input: RequestInfo | URL, init?: RequestInit): Request; +}; +/** + * The **`Request`** interface of the Fetch API represents a resource request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request) + */ +interface Request> extends Body { + /** + * The **`clone()`** method of the Request interface creates a copy of the current `Request` object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/clone) + */ + clone(): Request; + /** + * The **`method`** read-only property of the `POST`, etc.) A String indicating the method of the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/method) + */ + method: string; + /** + * The **`url`** read-only property of the Request interface contains the URL of the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/url) + */ + url: string; + /** + * The **`headers`** read-only property of the with the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/headers) + */ + headers: Headers; + /** + * The **`redirect`** read-only property of the Request interface contains the mode for how redirects are handled. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/redirect) + */ + redirect: string; + fetcher: Fetcher | null; + /** + * The read-only **`signal`** property of the Request interface returns the AbortSignal associated with the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/signal) + */ + signal: AbortSignal; + cf?: Cf; + /** + * The **`integrity`** read-only property of the Request interface contains the subresource integrity value of the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/integrity) + */ + integrity: string; + /** + * The **`keepalive`** read-only property of the Request interface contains the request's `keepalive` setting (`true` or `false`), which indicates whether the browser will keep the associated request alive if the page that initiated it is unloaded before the request is complete. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/keepalive) + */ + keepalive: boolean; + /** + * The **`cache`** read-only property of the Request interface contains the cache mode of the request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/cache) + */ + cache?: "no-store" | "no-cache"; +} +interface RequestInit { + /* A string to set request's method. */ + method?: string; + /* A Headers object, an object literal, or an array of two-item arrays to set request's headers. */ + headers?: HeadersInit; + /* A BodyInit object or null to set request's body. */ + body?: BodyInit | null; + /* A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */ + redirect?: string; + fetcher?: (Fetcher | null); + cf?: Cf; + /* A string indicating how the request will interact with the browser's cache to set request's cache. */ + cache?: "no-store" | "no-cache"; + /* A cryptographic hash of the resource to be fetched by request. Sets request's integrity. */ + integrity?: string; + /* An AbortSignal to set request's signal. */ + signal?: (AbortSignal | null); + encodeResponseBody?: "automatic" | "manual"; +} +type Service Rpc.WorkerEntrypointBranded) | Rpc.WorkerEntrypointBranded | ExportedHandler | undefined = undefined> = T extends new (...args: any[]) => Rpc.WorkerEntrypointBranded ? Fetcher> : T extends Rpc.WorkerEntrypointBranded ? Fetcher : T extends Exclude ? never : Fetcher; +type Fetcher = (T extends Rpc.EntrypointBranded ? Rpc.Provider : unknown) & { + fetch(input: RequestInfo | URL, init?: RequestInit): Promise; + connect(address: SocketAddress | string, options?: SocketOptions): Socket; +}; +interface KVNamespaceListKey { + name: Key; + expiration?: number; + metadata?: Metadata; +} +type KVNamespaceListResult = { + list_complete: false; + keys: KVNamespaceListKey[]; + cursor: string; + cacheStatus: string | null; +} | { + list_complete: true; + keys: KVNamespaceListKey[]; + cacheStatus: string | null; +}; +interface KVNamespace { + get(key: Key, options?: Partial>): Promise; + get(key: Key, type: "text"): Promise; + get(key: Key, type: "json"): Promise; + get(key: Key, type: "arrayBuffer"): Promise; + get(key: Key, type: "stream"): Promise; + get(key: Key, options?: KVNamespaceGetOptions<"text">): Promise; + get(key: Key, options?: KVNamespaceGetOptions<"json">): Promise; + get(key: Key, options?: KVNamespaceGetOptions<"arrayBuffer">): Promise; + get(key: Key, options?: KVNamespaceGetOptions<"stream">): Promise; + get(key: Array, type: "text"): Promise>; + get(key: Array, type: "json"): Promise>; + get(key: Array, options?: Partial>): Promise>; + get(key: Array, options?: KVNamespaceGetOptions<"text">): Promise>; + get(key: Array, options?: KVNamespaceGetOptions<"json">): Promise>; + list(options?: KVNamespaceListOptions): Promise>; + put(key: Key, value: string | ArrayBuffer | ArrayBufferView | ReadableStream, options?: KVNamespacePutOptions): Promise; + getWithMetadata(key: Key, options?: Partial>): Promise>; + getWithMetadata(key: Key, type: "text"): Promise>; + getWithMetadata(key: Key, type: "json"): Promise>; + getWithMetadata(key: Key, type: "arrayBuffer"): Promise>; + getWithMetadata(key: Key, type: "stream"): Promise>; + getWithMetadata(key: Key, options: KVNamespaceGetOptions<"text">): Promise>; + getWithMetadata(key: Key, options: KVNamespaceGetOptions<"json">): Promise>; + getWithMetadata(key: Key, options: KVNamespaceGetOptions<"arrayBuffer">): Promise>; + getWithMetadata(key: Key, options: KVNamespaceGetOptions<"stream">): Promise>; + getWithMetadata(key: Array, type: "text"): Promise>>; + getWithMetadata(key: Array, type: "json"): Promise>>; + getWithMetadata(key: Array, options?: Partial>): Promise>>; + getWithMetadata(key: Array, options?: KVNamespaceGetOptions<"text">): Promise>>; + getWithMetadata(key: Array, options?: KVNamespaceGetOptions<"json">): Promise>>; + delete(key: Key): Promise; +} +interface KVNamespaceListOptions { + limit?: number; + prefix?: (string | null); + cursor?: (string | null); +} +interface KVNamespaceGetOptions { + type: Type; + cacheTtl?: number; +} +interface KVNamespacePutOptions { + expiration?: number; + expirationTtl?: number; + metadata?: (any | null); +} +interface KVNamespaceGetWithMetadataResult { + value: Value | null; + metadata: Metadata | null; + cacheStatus: string | null; +} +type QueueContentType = "text" | "bytes" | "json" | "v8"; +interface Queue { + metrics(): Promise; + send(message: Body, options?: QueueSendOptions): Promise; + sendBatch(messages: Iterable>, options?: QueueSendBatchOptions): Promise; +} +interface QueueSendMetrics { + backlogCount: number; + backlogBytes: number; + oldestMessageTimestamp?: Date; +} +interface QueueSendMetadata { + metrics: QueueSendMetrics; +} +interface QueueSendResponse { + metadata: QueueSendMetadata; +} +interface QueueSendBatchMetrics { + backlogCount: number; + backlogBytes: number; + oldestMessageTimestamp?: Date; +} +interface QueueSendBatchMetadata { + metrics: QueueSendBatchMetrics; +} +interface QueueSendBatchResponse { + metadata: QueueSendBatchMetadata; +} +interface QueueSendOptions { + contentType?: QueueContentType; + delaySeconds?: number; +} +interface QueueSendBatchOptions { + delaySeconds?: number; +} +interface MessageSendRequest { + body: Body; + contentType?: QueueContentType; + delaySeconds?: number; +} +interface QueueMetrics { + backlogCount: number; + backlogBytes: number; + oldestMessageTimestamp?: Date; +} +interface MessageBatchMetrics { + backlogCount: number; + backlogBytes: number; + oldestMessageTimestamp?: Date; +} +interface MessageBatchMetadata { + metrics: MessageBatchMetrics; +} +interface QueueRetryOptions { + delaySeconds?: number; +} +interface Message { + readonly id: string; + readonly timestamp: Date; + readonly body: Body; + readonly attempts: number; + retry(options?: QueueRetryOptions): void; + ack(): void; +} +interface QueueEvent extends ExtendableEvent { + readonly messages: readonly Message[]; + readonly queue: string; + readonly metadata: MessageBatchMetadata; + retryAll(options?: QueueRetryOptions): void; + ackAll(): void; +} +interface MessageBatch { + readonly messages: readonly Message[]; + readonly queue: string; + readonly metadata: MessageBatchMetadata; + retryAll(options?: QueueRetryOptions): void; + ackAll(): void; +} +interface R2Error extends Error { + readonly name: string; + readonly code: number; + readonly message: string; + readonly action: string; + readonly stack: any; +} +interface R2ListOptions { + limit?: number; + prefix?: string; + cursor?: string; + delimiter?: string; + startAfter?: string; + include?: ("httpMetadata" | "customMetadata")[]; +} +interface R2Bucket { + head(key: string): Promise; + get(key: string, options: R2GetOptions & { + onlyIf: R2Conditional | Headers; + }): Promise; + get(key: string, options?: R2GetOptions): Promise; + put(key: string, value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, options?: R2PutOptions & { + onlyIf: R2Conditional | Headers; + }): Promise; + put(key: string, value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, options?: R2PutOptions): Promise; + createMultipartUpload(key: string, options?: R2MultipartOptions): Promise; + resumeMultipartUpload(key: string, uploadId: string): R2MultipartUpload; + delete(keys: string | string[]): Promise; + list(options?: R2ListOptions): Promise; +} +interface R2MultipartUpload { + readonly key: string; + readonly uploadId: string; + uploadPart(partNumber: number, value: ReadableStream | (ArrayBuffer | ArrayBufferView) | string | Blob, options?: R2UploadPartOptions): Promise; + abort(): Promise; + complete(uploadedParts: R2UploadedPart[]): Promise; +} +interface R2UploadedPart { + partNumber: number; + etag: string; +} +declare abstract class R2Object { + readonly key: string; + readonly version: string; + readonly size: number; + readonly etag: string; + readonly httpEtag: string; + readonly checksums: R2Checksums; + readonly uploaded: Date; + readonly httpMetadata?: R2HTTPMetadata; + readonly customMetadata?: Record; + readonly range?: R2Range; + readonly storageClass: string; + readonly ssecKeyMd5?: string; + writeHttpMetadata(headers: Headers): void; +} +interface R2ObjectBody extends R2Object { + get body(): ReadableStream; + get bodyUsed(): boolean; + arrayBuffer(): Promise; + bytes(): Promise; + text(): Promise; + json(): Promise; + blob(): Promise; +} +type R2Range = { + offset: number; + length?: number; +} | { + offset?: number; + length: number; +} | { + suffix: number; +}; +interface R2Conditional { + etagMatches?: string; + etagDoesNotMatch?: string; + uploadedBefore?: Date; + uploadedAfter?: Date; + secondsGranularity?: boolean; +} +interface R2GetOptions { + onlyIf?: (R2Conditional | Headers); + range?: (R2Range | Headers); + ssecKey?: (ArrayBuffer | string); +} +interface R2PutOptions { + onlyIf?: (R2Conditional | Headers); + httpMetadata?: (R2HTTPMetadata | Headers); + customMetadata?: Record; + md5?: ((ArrayBuffer | ArrayBufferView) | string); + sha1?: ((ArrayBuffer | ArrayBufferView) | string); + sha256?: ((ArrayBuffer | ArrayBufferView) | string); + sha384?: ((ArrayBuffer | ArrayBufferView) | string); + sha512?: ((ArrayBuffer | ArrayBufferView) | string); + storageClass?: string; + ssecKey?: (ArrayBuffer | string); +} +interface R2MultipartOptions { + httpMetadata?: (R2HTTPMetadata | Headers); + customMetadata?: Record; + storageClass?: string; + ssecKey?: (ArrayBuffer | string); +} +interface R2Checksums { + readonly md5?: ArrayBuffer; + readonly sha1?: ArrayBuffer; + readonly sha256?: ArrayBuffer; + readonly sha384?: ArrayBuffer; + readonly sha512?: ArrayBuffer; + toJSON(): R2StringChecksums; +} +interface R2StringChecksums { + md5?: string; + sha1?: string; + sha256?: string; + sha384?: string; + sha512?: string; +} +interface R2HTTPMetadata { + contentType?: string; + contentLanguage?: string; + contentDisposition?: string; + contentEncoding?: string; + cacheControl?: string; + cacheExpiry?: Date; +} +type R2Objects = { + objects: R2Object[]; + delimitedPrefixes: string[]; +} & ({ + truncated: true; + cursor: string; +} | { + truncated: false; +}); +interface R2UploadPartOptions { + ssecKey?: (ArrayBuffer | string); +} +declare abstract class ScheduledEvent extends ExtendableEvent { + readonly scheduledTime: number; + readonly cron: string; + noRetry(): void; +} +interface ScheduledController { + readonly scheduledTime: number; + readonly cron: string; + noRetry(): void; +} +interface QueuingStrategy { + highWaterMark?: (number | bigint); + size?: (chunk: T) => number | bigint; +} +interface UnderlyingSink { + type?: string; + start?: (controller: WritableStreamDefaultController) => void | Promise; + write?: (chunk: W, controller: WritableStreamDefaultController) => void | Promise; + abort?: (reason: any) => void | Promise; + close?: () => void | Promise; +} +interface UnderlyingByteSource { + type: "bytes"; + autoAllocateChunkSize?: number; + start?: (controller: ReadableByteStreamController) => void | Promise; + pull?: (controller: ReadableByteStreamController) => void | Promise; + cancel?: (reason: any) => void | Promise; +} +interface UnderlyingSource { + type?: "" | undefined; + start?: (controller: ReadableStreamDefaultController) => void | Promise; + pull?: (controller: ReadableStreamDefaultController) => void | Promise; + cancel?: (reason: any) => void | Promise; + expectedLength?: (number | bigint); +} +interface Transformer { + readableType?: string; + writableType?: string; + start?: (controller: TransformStreamDefaultController) => void | Promise; + transform?: (chunk: I, controller: TransformStreamDefaultController) => void | Promise; + flush?: (controller: TransformStreamDefaultController) => void | Promise; + cancel?: (reason: any) => void | Promise; + expectedLength?: number; +} +interface StreamPipeOptions { + preventAbort?: boolean; + preventCancel?: boolean; + /** + * Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered. + * + * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader. + * + * Errors and closures of the source and destination streams propagate as follows: + * + * An error in this source readable stream will abort destination, unless preventAbort is truthy. The returned promise will be rejected with the source's error, or with any error that occurs during aborting the destination. + * + * An error in destination will cancel this source readable stream, unless preventCancel is truthy. The returned promise will be rejected with the destination's error, or with any error that occurs during canceling the source. + * + * When this source readable stream closes, destination will be closed, unless preventClose is truthy. The returned promise will be fulfilled once this process completes, unless an error is encountered while closing the destination, in which case it will be rejected with that error. + * + * If destination starts out closed or closing, this source readable stream will be canceled, unless preventCancel is true. The returned promise will be rejected with an error indicating piping to a closed stream failed, or with any error that occurs during canceling the source. + * + * The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set. + */ + preventClose?: boolean; + signal?: AbortSignal; +} +type ReadableStreamReadResult = { + done: false; + value: R; +} | { + done: true; + value?: undefined; +}; +/** + * The `ReadableStream` interface of the Streams API represents a readable stream of byte data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream) + */ +interface ReadableStream { + /** + * The **`locked`** read-only property of the ReadableStream interface returns whether or not the readable stream is locked to a reader. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/locked) + */ + get locked(): boolean; + /** + * The **`cancel()`** method of the ReadableStream interface returns a Promise that resolves when the stream is canceled. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/cancel) + */ + cancel(reason?: any): Promise; + /** + * The **`getReader()`** method of the ReadableStream interface creates a reader and locks the stream to it. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/getReader) + */ + getReader(): ReadableStreamDefaultReader; + /** + * The **`getReader()`** method of the ReadableStream interface creates a reader and locks the stream to it. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/getReader) + */ + getReader(options: ReadableStreamGetReaderOptions): ReadableStreamBYOBReader; + /** + * The **`pipeThrough()`** method of the ReadableStream interface provides a chainable way of piping the current stream through a transform stream or any other writable/readable pair. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeThrough) + */ + pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream; + /** + * The **`pipeTo()`** method of the ReadableStream interface pipes the current `ReadableStream` to a given WritableStream and returns a Promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeTo) + */ + pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise; + /** + * The **`tee()`** method of the two-element array containing the two resulting branches as new ReadableStream instances. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/tee) + */ + tee(): [ + ReadableStream, + ReadableStream + ]; + values(options?: ReadableStreamValuesOptions): AsyncIterableIterator; + [Symbol.asyncIterator](options?: ReadableStreamValuesOptions): AsyncIterableIterator; +} +/** + * The `ReadableStream` interface of the Streams API represents a readable stream of byte data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream) + */ +declare const ReadableStream: { + prototype: ReadableStream; + new (underlyingSource: UnderlyingByteSource, strategy?: QueuingStrategy): ReadableStream; + new (underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream; +}; +/** + * The **`ReadableStreamDefaultReader`** interface of the Streams API represents a default reader that can be used to read stream data supplied from a network (such as a fetch request). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader) + */ +declare class ReadableStreamDefaultReader { + constructor(stream: ReadableStream); + get closed(): Promise; + cancel(reason?: any): Promise; + /** + * The **`read()`** method of the ReadableStreamDefaultReader interface returns a Promise providing access to the next chunk in the stream's internal queue. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/read) + */ + read(): Promise>; + /** + * The **`releaseLock()`** method of the ReadableStreamDefaultReader interface releases the reader's lock on the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/releaseLock) + */ + releaseLock(): void; +} +/** + * The `ReadableStreamBYOBReader` interface of the Streams API defines a reader for a ReadableStream that supports zero-copy reading from an underlying byte source. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader) + */ +declare class ReadableStreamBYOBReader { + constructor(stream: ReadableStream); + get closed(): Promise; + cancel(reason?: any): Promise; + /** + * The **`read()`** method of the ReadableStreamBYOBReader interface is used to read data into a view on a user-supplied buffer from an associated readable byte stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read) + */ + read(view: T): Promise>; + /** + * The **`releaseLock()`** method of the ReadableStreamBYOBReader interface releases the reader's lock on the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/releaseLock) + */ + releaseLock(): void; + readAtLeast(minElements: number, view: T): Promise>; +} +interface ReadableStreamBYOBReaderReadableStreamBYOBReaderReadOptions { + min?: number; +} +interface ReadableStreamGetReaderOptions { + /** + * Creates a ReadableStreamBYOBReader and locks the stream to the new reader. + * + * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation. + */ + mode: "byob"; +} +/** + * The **`ReadableStreamBYOBRequest`** interface of the Streams API represents a 'pull request' for data from an underlying source that will made as a zero-copy transfer to a consumer (bypassing the stream's internal queues). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest) + */ +declare abstract class ReadableStreamBYOBRequest { + /** + * The **`view`** getter property of the ReadableStreamBYOBRequest interface returns the current view. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/view) + */ + get view(): Uint8Array | null; + /** + * The **`respond()`** method of the ReadableStreamBYOBRequest interface is used to signal to the associated readable byte stream that the specified number of bytes were written into the ReadableStreamBYOBRequest.view. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respond) + */ + respond(bytesWritten: number): void; + /** + * The **`respondWithNewView()`** method of the ReadableStreamBYOBRequest interface specifies a new view that the consumer of the associated readable byte stream should write to instead of ReadableStreamBYOBRequest.view. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respondWithNewView) + */ + respondWithNewView(view: ArrayBuffer | ArrayBufferView): void; + get atLeast(): number | null; +} +/** + * The **`ReadableStreamDefaultController`** interface of the Streams API represents a controller allowing control of a ReadableStream's state and internal queue. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController) + */ +declare abstract class ReadableStreamDefaultController { + /** + * The **`desiredSize`** read-only property of the required to fill the stream's internal queue. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/desiredSize) + */ + get desiredSize(): number | null; + /** + * The **`close()`** method of the ReadableStreamDefaultController interface closes the associated stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/close) + */ + close(): void; + /** + * The **`enqueue()`** method of the ```js-nolint enqueue(chunk) ``` - `chunk` - : The chunk to enqueue. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/enqueue) + */ + enqueue(chunk?: R): void; + /** + * The **`error()`** method of the with the associated stream to error. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/error) + */ + error(reason: any): void; +} +/** + * The **`ReadableByteStreamController`** interface of the Streams API represents a controller for a readable byte stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController) + */ +declare abstract class ReadableByteStreamController { + /** + * The **`byobRequest`** read-only property of the ReadableByteStreamController interface returns the current BYOB request, or `null` if there are no pending requests. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/byobRequest) + */ + get byobRequest(): ReadableStreamBYOBRequest | null; + /** + * The **`desiredSize`** read-only property of the ReadableByteStreamController interface returns the number of bytes required to fill the stream's internal queue to its 'desired size'. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/desiredSize) + */ + get desiredSize(): number | null; + /** + * The **`close()`** method of the ReadableByteStreamController interface closes the associated stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/close) + */ + close(): void; + /** + * The **`enqueue()`** method of the ReadableByteStreamController interface enqueues a given chunk on the associated readable byte stream (the chunk is copied into the stream's internal queues). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/enqueue) + */ + enqueue(chunk: ArrayBuffer | ArrayBufferView): void; + /** + * The **`error()`** method of the ReadableByteStreamController interface causes any future interactions with the associated stream to error with the specified reason. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/error) + */ + error(reason: any): void; +} +/** + * The **`WritableStreamDefaultController`** interface of the Streams API represents a controller allowing control of a WritableStream's state. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController) + */ +declare abstract class WritableStreamDefaultController { + /** + * The read-only **`signal`** property of the WritableStreamDefaultController interface returns the AbortSignal associated with the controller. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/signal) + */ + get signal(): AbortSignal; + /** + * The **`error()`** method of the with the associated stream to error. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/error) + */ + error(reason?: any): void; +} +/** + * The **`TransformStreamDefaultController`** interface of the Streams API provides methods to manipulate the associated ReadableStream and WritableStream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController) + */ +declare abstract class TransformStreamDefaultController { + /** + * The **`desiredSize`** read-only property of the TransformStreamDefaultController interface returns the desired size to fill the queue of the associated ReadableStream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/desiredSize) + */ + get desiredSize(): number | null; + /** + * The **`enqueue()`** method of the TransformStreamDefaultController interface enqueues the given chunk in the readable side of the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/enqueue) + */ + enqueue(chunk?: O): void; + /** + * The **`error()`** method of the TransformStreamDefaultController interface errors both sides of the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/error) + */ + error(reason: any): void; + /** + * The **`terminate()`** method of the TransformStreamDefaultController interface closes the readable side and errors the writable side of the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/terminate) + */ + terminate(): void; +} +interface ReadableWritablePair { + readable: ReadableStream; + /** + * Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use. + * + * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader. + */ + writable: WritableStream; +} +/** + * The **`WritableStream`** interface of the Streams API provides a standard abstraction for writing streaming data to a destination, known as a sink. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream) + */ +declare class WritableStream { + constructor(underlyingSink?: UnderlyingSink, queuingStrategy?: QueuingStrategy); + /** + * The **`locked`** read-only property of the WritableStream interface returns a boolean indicating whether the `WritableStream` is locked to a writer. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/locked) + */ + get locked(): boolean; + /** + * The **`abort()`** method of the WritableStream interface aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be immediately moved to an error state, with any queued writes discarded. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/abort) + */ + abort(reason?: any): Promise; + /** + * The **`close()`** method of the WritableStream interface closes the associated stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/close) + */ + close(): Promise; + /** + * The **`getWriter()`** method of the WritableStream interface returns a new instance of WritableStreamDefaultWriter and locks the stream to that instance. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/getWriter) + */ + getWriter(): WritableStreamDefaultWriter; +} +/** + * The **`WritableStreamDefaultWriter`** interface of the Streams API is the object returned by WritableStream.getWriter() and once created locks the writer to the `WritableStream` ensuring that no other streams can write to the underlying sink. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter) + */ +declare class WritableStreamDefaultWriter { + constructor(stream: WritableStream); + /** + * The **`closed`** read-only property of the the stream errors or the writer's lock is released. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/closed) + */ + get closed(): Promise; + /** + * The **`ready`** read-only property of the that resolves when the desired size of the stream's internal queue transitions from non-positive to positive, signaling that it is no longer applying backpressure. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/ready) + */ + get ready(): Promise; + /** + * The **`desiredSize`** read-only property of the to fill the stream's internal queue. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/desiredSize) + */ + get desiredSize(): number | null; + /** + * The **`abort()`** method of the the producer can no longer successfully write to the stream and it is to be immediately moved to an error state, with any queued writes discarded. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/abort) + */ + abort(reason?: any): Promise; + /** + * The **`close()`** method of the stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/close) + */ + close(): Promise; + /** + * The **`write()`** method of the operation. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/write) + */ + write(chunk?: W): Promise; + /** + * The **`releaseLock()`** method of the corresponding stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/releaseLock) + */ + releaseLock(): void; +} +/** + * The **`TransformStream`** interface of the Streams API represents a concrete implementation of the pipe chain _transform stream_ concept. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream) + */ +declare class TransformStream { + constructor(transformer?: Transformer, writableStrategy?: QueuingStrategy, readableStrategy?: QueuingStrategy); + /** + * The **`readable`** read-only property of the TransformStream interface returns the ReadableStream instance controlled by this `TransformStream`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream/readable) + */ + get readable(): ReadableStream; + /** + * The **`writable`** read-only property of the TransformStream interface returns the WritableStream instance controlled by this `TransformStream`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream/writable) + */ + get writable(): WritableStream; +} +declare class FixedLengthStream extends IdentityTransformStream { + constructor(expectedLength: number | bigint, queuingStrategy?: IdentityTransformStreamQueuingStrategy); +} +declare class IdentityTransformStream extends TransformStream { + constructor(queuingStrategy?: IdentityTransformStreamQueuingStrategy); +} +interface IdentityTransformStreamQueuingStrategy { + highWaterMark?: (number | bigint); +} +interface ReadableStreamValuesOptions { + preventCancel?: boolean; +} +/** + * The **`CompressionStream`** interface of the Compression Streams API is an API for compressing a stream of data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CompressionStream) + */ +declare class CompressionStream extends TransformStream { + constructor(format: "gzip" | "deflate" | "deflate-raw"); +} +/** + * The **`DecompressionStream`** interface of the Compression Streams API is an API for decompressing a stream of data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DecompressionStream) + */ +declare class DecompressionStream extends TransformStream { + constructor(format: "gzip" | "deflate" | "deflate-raw"); +} +/** + * The **`TextEncoderStream`** interface of the Encoding API converts a stream of strings into bytes in the UTF-8 encoding. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoderStream) + */ +declare class TextEncoderStream extends TransformStream { + constructor(); + get encoding(): string; +} +/** + * The **`TextDecoderStream`** interface of the Encoding API converts a stream of text in a binary encoding, such as UTF-8 etc., to a stream of strings. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoderStream) + */ +declare class TextDecoderStream extends TransformStream { + constructor(label?: string, options?: TextDecoderStreamTextDecoderStreamInit); + get encoding(): string; + get fatal(): boolean; + get ignoreBOM(): boolean; +} +interface TextDecoderStreamTextDecoderStreamInit { + fatal?: boolean; + ignoreBOM?: boolean; +} +/** + * The **`ByteLengthQueuingStrategy`** interface of the Streams API provides a built-in byte length queuing strategy that can be used when constructing streams. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy) + */ +declare class ByteLengthQueuingStrategy implements QueuingStrategy { + constructor(init: QueuingStrategyInit); + /** + * The read-only **`ByteLengthQueuingStrategy.highWaterMark`** property returns the total number of bytes that can be contained in the internal queue before backpressure is applied. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/highWaterMark) + */ + get highWaterMark(): number; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/size) */ + get size(): (chunk?: any) => number; +} +/** + * The **`CountQueuingStrategy`** interface of the Streams API provides a built-in chunk counting queuing strategy that can be used when constructing streams. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy) + */ +declare class CountQueuingStrategy implements QueuingStrategy { + constructor(init: QueuingStrategyInit); + /** + * The read-only **`CountQueuingStrategy.highWaterMark`** property returns the total number of chunks that can be contained in the internal queue before backpressure is applied. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/highWaterMark) + */ + get highWaterMark(): number; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/size) */ + get size(): (chunk?: any) => number; +} +interface QueuingStrategyInit { + /** + * Creates a new ByteLengthQueuingStrategy with the provided high water mark. + * + * Note that the provided high water mark will not be validated ahead of time. Instead, if it is negative, NaN, or not a number, the resulting ByteLengthQueuingStrategy will cause the corresponding stream constructor to throw. + */ + highWaterMark: number; +} +interface TracePreviewInfo { + id: string; + slug: string; + name: string; +} +interface ScriptVersion { + id?: string; + tag?: string; + message?: string; +} +declare abstract class TailEvent extends ExtendableEvent { + readonly events: TraceItem[]; + readonly traces: TraceItem[]; +} +interface TraceItem { + readonly event: (TraceItemFetchEventInfo | TraceItemJsRpcEventInfo | TraceItemConnectEventInfo | TraceItemScheduledEventInfo | TraceItemAlarmEventInfo | TraceItemQueueEventInfo | TraceItemEmailEventInfo | TraceItemTailEventInfo | TraceItemCustomEventInfo | TraceItemHibernatableWebSocketEventInfo) | null; + readonly eventTimestamp: number | null; + readonly logs: TraceLog[]; + readonly exceptions: TraceException[]; + readonly diagnosticsChannelEvents: TraceDiagnosticChannelEvent[]; + readonly scriptName: string | null; + readonly entrypoint?: string; + readonly scriptVersion?: ScriptVersion; + readonly dispatchNamespace?: string; + readonly scriptTags?: string[]; + readonly tailAttributes?: Record; + readonly preview?: TracePreviewInfo; + readonly durableObjectId?: string; + readonly outcome: string; + readonly executionModel: string; + readonly truncated: boolean; + readonly cpuTime: number; + readonly wallTime: number; +} +interface TraceItemAlarmEventInfo { + readonly scheduledTime: Date; +} +interface TraceItemConnectEventInfo { +} +interface TraceItemCustomEventInfo { +} +interface TraceItemScheduledEventInfo { + readonly scheduledTime: number; + readonly cron: string; +} +interface TraceItemQueueEventInfo { + readonly queue: string; + readonly batchSize: number; +} +interface TraceItemEmailEventInfo { + readonly mailFrom: string; + readonly rcptTo: string; + readonly rawSize: number; +} +interface TraceItemTailEventInfo { + readonly consumedEvents: TraceItemTailEventInfoTailItem[]; +} +interface TraceItemTailEventInfoTailItem { + readonly scriptName: string | null; +} +interface TraceItemFetchEventInfo { + readonly response?: TraceItemFetchEventInfoResponse; + readonly request: TraceItemFetchEventInfoRequest; +} +interface TraceItemFetchEventInfoRequest { + readonly cf?: any; + readonly headers: Record; + readonly method: string; + readonly url: string; + getUnredacted(): TraceItemFetchEventInfoRequest; +} +interface TraceItemFetchEventInfoResponse { + readonly status: number; +} +interface TraceItemJsRpcEventInfo { + readonly rpcMethod: string; +} +interface TraceItemHibernatableWebSocketEventInfo { + readonly getWebSocketEvent: TraceItemHibernatableWebSocketEventInfoMessage | TraceItemHibernatableWebSocketEventInfoClose | TraceItemHibernatableWebSocketEventInfoError; +} +interface TraceItemHibernatableWebSocketEventInfoMessage { + readonly webSocketEventType: string; +} +interface TraceItemHibernatableWebSocketEventInfoClose { + readonly webSocketEventType: string; + readonly code: number; + readonly wasClean: boolean; +} +interface TraceItemHibernatableWebSocketEventInfoError { + readonly webSocketEventType: string; +} +interface TraceLog { + readonly timestamp: number; + readonly level: string; + readonly message: any; +} +interface TraceException { + readonly timestamp: number; + readonly message: string; + readonly name: string; + readonly stack?: string; +} +interface TraceDiagnosticChannelEvent { + readonly timestamp: number; + readonly channel: string; + readonly message: any; +} +interface TraceMetrics { + readonly cpuTime: number; + readonly wallTime: number; +} +interface UnsafeTraceMetrics { + fromTrace(item: TraceItem): TraceMetrics; +} +/** + * The **`URL`** interface is used to parse, construct, normalize, and encode URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL) + */ +declare class URL { + constructor(url: string | URL, base?: string | URL); + /** + * The **`origin`** read-only property of the URL interface returns a string containing the Unicode serialization of the origin of the represented URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/origin) + */ + get origin(): string; + /** + * The **`href`** property of the URL interface is a string containing the whole URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/href) + */ + get href(): string; + /** + * The **`href`** property of the URL interface is a string containing the whole URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/href) + */ + set href(value: string); + /** + * The **`protocol`** property of the URL interface is a string containing the protocol or scheme of the URL, including the final `':'`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/protocol) + */ + get protocol(): string; + /** + * The **`protocol`** property of the URL interface is a string containing the protocol or scheme of the URL, including the final `':'`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/protocol) + */ + set protocol(value: string); + /** + * The **`username`** property of the URL interface is a string containing the username component of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/username) + */ + get username(): string; + /** + * The **`username`** property of the URL interface is a string containing the username component of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/username) + */ + set username(value: string); + /** + * The **`password`** property of the URL interface is a string containing the password component of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/password) + */ + get password(): string; + /** + * The **`password`** property of the URL interface is a string containing the password component of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/password) + */ + set password(value: string); + /** + * The **`host`** property of the URL interface is a string containing the host, which is the URL.hostname, and then, if the port of the URL is nonempty, a `':'`, followed by the URL.port of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/host) + */ + get host(): string; + /** + * The **`host`** property of the URL interface is a string containing the host, which is the URL.hostname, and then, if the port of the URL is nonempty, a `':'`, followed by the URL.port of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/host) + */ + set host(value: string); + /** + * The **`hostname`** property of the URL interface is a string containing either the domain name or IP address of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hostname) + */ + get hostname(): string; + /** + * The **`hostname`** property of the URL interface is a string containing either the domain name or IP address of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hostname) + */ + set hostname(value: string); + /** + * The **`port`** property of the URL interface is a string containing the port number of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/port) + */ + get port(): string; + /** + * The **`port`** property of the URL interface is a string containing the port number of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/port) + */ + set port(value: string); + /** + * The **`pathname`** property of the URL interface represents a location in a hierarchical structure. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/pathname) + */ + get pathname(): string; + /** + * The **`pathname`** property of the URL interface represents a location in a hierarchical structure. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/pathname) + */ + set pathname(value: string); + /** + * The **`search`** property of the URL interface is a search string, also called a _query string_, that is a string containing a `'?'` followed by the parameters of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/search) + */ + get search(): string; + /** + * The **`search`** property of the URL interface is a search string, also called a _query string_, that is a string containing a `'?'` followed by the parameters of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/search) + */ + set search(value: string); + /** + * The **`hash`** property of the URL interface is a string containing a `'#'` followed by the fragment identifier of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hash) + */ + get hash(): string; + /** + * The **`hash`** property of the URL interface is a string containing a `'#'` followed by the fragment identifier of the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hash) + */ + set hash(value: string); + /** + * The **`searchParams`** read-only property of the access to the [MISSING: httpmethod('GET')] decoded query arguments contained in the URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/searchParams) + */ + get searchParams(): URLSearchParams; + /** + * The **`toJSON()`** method of the URL interface returns a string containing a serialized version of the URL, although in practice it seems to have the same effect as ```js-nolint toJSON() ``` None. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/toJSON) + */ + toJSON(): string; + /*function toString() { [native code] }*/ + toString(): string; + /** + * The **`URL.canParse()`** static method of the URL interface returns a boolean indicating whether or not an absolute URL, or a relative URL combined with a base URL, are parsable and valid. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/canParse_static) + */ + static canParse(url: string, base?: string): boolean; + /** + * The **`URL.parse()`** static method of the URL interface returns a newly created URL object representing the URL defined by the parameters. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/parse_static) + */ + static parse(url: string, base?: string): URL | null; + /** + * The **`createObjectURL()`** static method of the URL interface creates a string containing a URL representing the object given in the parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/createObjectURL_static) + */ + static createObjectURL(object: File | Blob): string; + /** + * The **`revokeObjectURL()`** static method of the URL interface releases an existing object URL which was previously created by calling Call this method when you've finished using an object URL to let the browser know not to keep the reference to the file any longer. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/revokeObjectURL_static) + */ + static revokeObjectURL(object_url: string): void; +} +/** + * The **`URLSearchParams`** interface defines utility methods to work with the query string of a URL. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams) + */ +declare class URLSearchParams { + constructor(init?: (Iterable> | Record | string)); + /** + * The **`size`** read-only property of the URLSearchParams interface indicates the total number of search parameter entries. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/size) + */ + get size(): number; + /** + * The **`append()`** method of the URLSearchParams interface appends a specified key/value pair as a new search parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/append) + */ + append(name: string, value: string): void; + /** + * The **`delete()`** method of the URLSearchParams interface deletes specified parameters and their associated value(s) from the list of all search parameters. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/delete) + */ + delete(name: string, value?: string): void; + /** + * The **`get()`** method of the URLSearchParams interface returns the first value associated to the given search parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/get) + */ + get(name: string): string | null; + /** + * The **`getAll()`** method of the URLSearchParams interface returns all the values associated with a given search parameter as an array. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/getAll) + */ + getAll(name: string): string[]; + /** + * The **`has()`** method of the URLSearchParams interface returns a boolean value that indicates whether the specified parameter is in the search parameters. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/has) + */ + has(name: string, value?: string): boolean; + /** + * The **`set()`** method of the URLSearchParams interface sets the value associated with a given search parameter to the given value. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/set) + */ + set(name: string, value: string): void; + /** + * The **`URLSearchParams.sort()`** method sorts all key/value pairs contained in this object in place and returns `undefined`. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/sort) + */ + sort(): void; + /* Returns an array of key, value pairs for every entry in the search params. */ + entries(): IterableIterator<[ + key: string, + value: string + ]>; + /* Returns a list of keys in the search params. */ + keys(): IterableIterator; + /* Returns a list of values in the search params. */ + values(): IterableIterator; + forEach(callback: (this: This, value: string, key: string, parent: URLSearchParams) => void, thisArg?: This): void; + /*function toString() { [native code] }*/ + toString(): string; + [Symbol.iterator](): IterableIterator<[ + key: string, + value: string + ]>; +} +declare class URLPattern { + constructor(input?: (string | URLPatternInit), baseURL?: (string | URLPatternOptions), patternOptions?: URLPatternOptions); + get protocol(): string; + get username(): string; + get password(): string; + get hostname(): string; + get port(): string; + get pathname(): string; + get search(): string; + get hash(): string; + get hasRegExpGroups(): boolean; + test(input?: (string | URLPatternInit), baseURL?: string): boolean; + exec(input?: (string | URLPatternInit), baseURL?: string): URLPatternResult | null; +} +interface URLPatternInit { + protocol?: string; + username?: string; + password?: string; + hostname?: string; + port?: string; + pathname?: string; + search?: string; + hash?: string; + baseURL?: string; +} +interface URLPatternComponentResult { + input: string; + groups: Record; +} +interface URLPatternResult { + inputs: (string | URLPatternInit)[]; + protocol: URLPatternComponentResult; + username: URLPatternComponentResult; + password: URLPatternComponentResult; + hostname: URLPatternComponentResult; + port: URLPatternComponentResult; + pathname: URLPatternComponentResult; + search: URLPatternComponentResult; + hash: URLPatternComponentResult; +} +interface URLPatternOptions { + ignoreCase?: boolean; +} +/** + * A `CloseEvent` is sent to clients using WebSockets when the connection is closed. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent) + */ +declare class CloseEvent extends Event { + constructor(type: string, initializer?: CloseEventInit); + /** + * The **`code`** read-only property of the CloseEvent interface returns a WebSocket connection close code indicating the reason the connection was closed. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/code) + */ + readonly code: number; + /** + * The **`reason`** read-only property of the CloseEvent interface returns the WebSocket connection close reason the server gave for closing the connection; that is, a concise human-readable prose explanation for the closure. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/reason) + */ + readonly reason: string; + /** + * The **`wasClean`** read-only property of the CloseEvent interface returns `true` if the connection closed cleanly. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/wasClean) + */ + readonly wasClean: boolean; +} +interface CloseEventInit { + code?: number; + reason?: string; + wasClean?: boolean; +} +type WebSocketEventMap = { + close: CloseEvent; + message: MessageEvent; + open: Event; + error: ErrorEvent; +}; +/** + * The `WebSocket` object provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket) + */ +declare var WebSocket: { + prototype: WebSocket; + new (url: string, protocols?: (string[] | string)): WebSocket; + readonly READY_STATE_CONNECTING: number; + readonly CONNECTING: number; + readonly READY_STATE_OPEN: number; + readonly OPEN: number; + readonly READY_STATE_CLOSING: number; + readonly CLOSING: number; + readonly READY_STATE_CLOSED: number; + readonly CLOSED: number; +}; +/** + * The `WebSocket` object provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket) + */ +interface WebSocket extends EventTarget { + accept(options?: WebSocketAcceptOptions): void; + /** + * The **`WebSocket.send()`** method enqueues the specified data to be transmitted to the server over the WebSocket connection, increasing the value of `bufferedAmount` by the number of bytes needed to contain the data. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/send) + */ + send(message: (ArrayBuffer | ArrayBufferView) | string): void; + /** + * The **`WebSocket.close()`** method closes the already `CLOSED`, this method does nothing. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/close) + */ + close(code?: number, reason?: string): void; + serializeAttachment(attachment: any): void; + deserializeAttachment(): any | null; + /** + * The **`WebSocket.readyState`** read-only property returns the current state of the WebSocket connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/readyState) + */ + readyState: number; + /** + * The **`WebSocket.url`** read-only property returns the absolute URL of the WebSocket as resolved by the constructor. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/url) + */ + url: string | null; + /** + * The **`WebSocket.protocol`** read-only property returns the name of the sub-protocol the server selected; this will be one of the strings specified in the `protocols` parameter when creating the WebSocket object, or the empty string if no connection is established. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/protocol) + */ + protocol: string | null; + /** + * The **`WebSocket.extensions`** read-only property returns the extensions selected by the server. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/extensions) + */ + extensions: string | null; + /** + * The **`WebSocket.binaryType`** property controls the type of binary data being received over the WebSocket connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/binaryType) + */ + binaryType: "blob" | "arraybuffer"; +} +interface WebSocketAcceptOptions { + /** + * When set to `true`, receiving a server-initiated WebSocket Close frame will not + * automatically send a reciprocal Close frame, leaving the connection in a half-open + * state. This is useful for proxying scenarios where you need to coordinate closing + * both sides independently. Defaults to `false` when the + * `no_web_socket_half_open_by_default` compatibility flag is enabled. + */ + allowHalfOpen?: boolean; +} +declare const WebSocketPair: { + new (): { + 0: WebSocket; + 1: WebSocket; + }; +}; +interface SqlStorage { + exec>(query: string, ...bindings: any[]): SqlStorageCursor; + get databaseSize(): number; + Cursor: typeof SqlStorageCursor; + Statement: typeof SqlStorageStatement; +} +declare abstract class SqlStorageStatement { +} +type SqlStorageValue = ArrayBuffer | string | number | null; +declare abstract class SqlStorageCursor> { + next(): { + done?: false; + value: T; + } | { + done: true; + value?: never; + }; + toArray(): T[]; + one(): T; + raw(): IterableIterator; + columnNames: string[]; + get rowsRead(): number; + get rowsWritten(): number; + [Symbol.iterator](): IterableIterator; +} +interface Socket { + get readable(): ReadableStream; + get writable(): WritableStream; + get closed(): Promise; + get opened(): Promise; + get upgraded(): boolean; + get secureTransport(): "on" | "off" | "starttls"; + close(): Promise; + startTls(options?: TlsOptions): Socket; +} +interface SocketOptions { + secureTransport?: string; + allowHalfOpen: boolean; + highWaterMark?: (number | bigint); +} +interface SocketAddress { + hostname: string; + port: number; +} +interface TlsOptions { + expectedServerHostname?: string; +} +interface SocketInfo { + remoteAddress?: string; + localAddress?: string; +} +/** + * The **`EventSource`** interface is web content's interface to server-sent events. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource) + */ +declare class EventSource extends EventTarget { + constructor(url: string, init?: EventSourceEventSourceInit); + /** + * The **`close()`** method of the EventSource interface closes the connection, if one is made, and sets the ```js-nolint close() ``` None. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close) + */ + close(): void; + /** + * The **`url`** read-only property of the URL of the source. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url) + */ + get url(): string; + /** + * The **`withCredentials`** read-only property of the the `EventSource` object was instantiated with CORS credentials set. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials) + */ + get withCredentials(): boolean; + /** + * The **`readyState`** read-only property of the connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState) + */ + get readyState(): number; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ + get onopen(): any | null; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ + set onopen(value: any | null); + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ + get onmessage(): any | null; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ + set onmessage(value: any | null); + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ + get onerror(): any | null; + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ + set onerror(value: any | null); + static readonly CONNECTING: number; + static readonly OPEN: number; + static readonly CLOSED: number; + static from(stream: ReadableStream): EventSource; +} +interface EventSourceEventSourceInit { + withCredentials?: boolean; + fetcher?: Fetcher; +} +interface ExecOutput { + readonly stdout: ArrayBuffer; + readonly stderr: ArrayBuffer; + readonly exitCode: number; +} +interface ContainerExecOptions { + cwd?: string; + env?: Record; + user?: string; + stdin?: ReadableStream | "pipe"; + stdout?: "pipe" | "ignore"; + stderr?: "pipe" | "ignore" | "combined"; +} +interface ExecProcess { + readonly stdin: WritableStream | null; + readonly stdout: ReadableStream | null; + readonly stderr: ReadableStream | null; + readonly pid: number; + readonly exitCode: Promise; + output(): Promise; + kill(signal?: number): void; +} +interface Container { + get running(): boolean; + start(options?: ContainerStartupOptions): void; + monitor(): Promise; + destroy(error?: any): Promise; + signal(signo: number): void; + getTcpPort(port: number): Fetcher; + setInactivityTimeout(durationMs: number | bigint): Promise; + interceptOutboundHttp(addr: string, binding: Fetcher): Promise; + interceptAllOutboundHttp(binding: Fetcher): Promise; + snapshotDirectory(options: ContainerDirectorySnapshotOptions): Promise; + snapshotContainer(options: ContainerSnapshotOptions): Promise; + interceptOutboundHttps(addr: string, binding: Fetcher): Promise; + exec(cmd: string[], options?: ContainerExecOptions): Promise; +} +interface ContainerDirectorySnapshot { + id: string; + size: number; + dir: string; + name?: string; +} +interface ContainerDirectorySnapshotOptions { + dir: string; + name?: string; +} +interface ContainerDirectorySnapshotRestoreParams { + snapshot: ContainerDirectorySnapshot; + mountPoint?: string; +} +interface ContainerSnapshot { + id: string; + size: number; + name?: string; +} +interface ContainerSnapshotOptions { + name?: string; +} +interface ContainerStartupOptions { + entrypoint?: string[]; + enableInternet: boolean; + env?: Record; + labels?: Record; + directorySnapshots?: ContainerDirectorySnapshotRestoreParams[]; + containerSnapshot?: ContainerSnapshot; +} +/** + * The **`MessagePort`** interface of the Channel Messaging API represents one of the two ports of a MessageChannel, allowing messages to be sent from one port and listening out for them arriving at the other. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) + */ +declare abstract class MessagePort extends EventTarget { + /** + * The **`postMessage()`** method of the transfers ownership of objects to other browsing contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort/postMessage) + */ + postMessage(data?: any, options?: (any[] | MessagePortPostMessageOptions)): void; + /** + * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort/close) + */ + close(): void; + /** + * The **`start()`** method of the MessagePort interface starts the sending of messages queued on the port. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort/start) + */ + start(): void; + get onmessage(): any | null; + set onmessage(value: any | null); +} +/** + * The **`MessageChannel`** interface of the Channel Messaging API allows us to create a new message channel and send data through it via its two MessagePort properties. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageChannel) + */ +declare class MessageChannel { + constructor(); + /** + * The **`port1`** read-only property of the the port attached to the context that originated the channel. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageChannel/port1) + */ + readonly port1: MessagePort; + /** + * The **`port2`** read-only property of the the port attached to the context at the other end of the channel, which the message is initially sent to. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageChannel/port2) + */ + readonly port2: MessagePort; +} +interface MessagePortPostMessageOptions { + transfer?: any[]; +} +type LoopbackForExport Rpc.EntrypointBranded) | ExportedHandler | undefined = undefined> = T extends new (...args: any[]) => Rpc.WorkerEntrypointBranded ? LoopbackServiceStub> : T extends new (...args: any[]) => Rpc.DurableObjectBranded ? LoopbackDurableObjectClass> : T extends ExportedHandler ? LoopbackServiceStub : undefined; +type LoopbackServiceStub = Fetcher & (T extends CloudflareWorkersModule.WorkerEntrypoint ? (opts: { + props?: Props; +}) => Fetcher : (opts: { + props?: any; +}) => Fetcher); +type LoopbackDurableObjectClass = DurableObjectClass & (T extends CloudflareWorkersModule.DurableObject ? (opts: { + props?: Props; +}) => DurableObjectClass : (opts: { + props?: any; +}) => DurableObjectClass); +interface LoopbackDurableObjectNamespace extends DurableObjectNamespace { +} +interface LoopbackColoLocalActorNamespace extends ColoLocalActorNamespace { +} +interface SyncKvStorage { + get(key: string): T | undefined; + list(options?: SyncKvListOptions): Iterable<[ + string, + T + ]>; + put(key: string, value: T): void; + delete(key: string): boolean; +} +interface SyncKvListOptions { + start?: string; + startAfter?: string; + end?: string; + prefix?: string; + reverse?: boolean; + limit?: number; +} +interface WorkerStub { + getEntrypoint(name?: string, options?: WorkerStubEntrypointOptions): Fetcher; + getDurableObjectClass(name?: string, options?: WorkerStubEntrypointOptions): DurableObjectClass; +} +interface WorkerStubEntrypointOptions { + props?: any; + limits?: workerdResourceLimits; +} +interface WorkerLoader { + get(name: string | null, getCode: () => WorkerLoaderWorkerCode | Promise): WorkerStub; + load(code: WorkerLoaderWorkerCode): WorkerStub; +} +interface WorkerLoaderModule { + js?: string; + cjs?: string; + text?: string; + data?: ArrayBuffer; + json?: any; + py?: string; + wasm?: ArrayBuffer; +} +interface WorkerLoaderWorkerCode { + compatibilityDate: string; + compatibilityFlags?: string[]; + allowExperimental?: boolean; + limits?: workerdResourceLimits; + mainModule: string; + modules: Record; + env?: any; + globalOutbound?: (Fetcher | null); + tails?: Fetcher[]; + streamingTails?: Fetcher[]; +} +interface workerdResourceLimits { + cpuMs?: number; + subRequests?: number; +} +/** +* The Workers runtime supports a subset of the Performance API, used to measure timing and performance, +* as well as timing of subrequests and other operations. +* +* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/) +*/ +declare abstract class Performance { + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/#performancetimeorigin) */ + get timeOrigin(): number; + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/#performancenow) */ + now(): number; + /** + * The **`toJSON()`** method of the Performance interface is a Serialization; it returns a JSON representation of the Performance object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Performance/toJSON) + */ + toJSON(): object; +} +interface Tracing { + enterSpan(name: string, callback: (span: Span, ...args: A) => T, ...args: A): T; + startActiveSpan(name: string, callback: (span: Span, ...args: A) => T, ...args: A): T; + Span: typeof Span; +} +declare abstract class Span { + get isTraced(): boolean; + setAttribute(key: string, value?: (boolean | number | string)): void; + end(): void; +} +/** + * Represents the identity of a user authenticated via Cloudflare Access. + * This matches the result of calling /cdn-cgi/access/get-identity. + * + * The exact structure of the returned object depends on the identity provider + * configuration for the Access application. The fields below represent commonly + * available properties, but additional provider-specific fields may be present. + */ +interface CloudflareAccessIdentity extends Record { + /** The user's email address, if available from the identity provider. */ + email?: string; + /** The user's display name. */ + name?: string; + /** The user's unique identifier. */ + user_uuid?: string; + /** The Cloudflare account ID. */ + account_id?: string; + /** Login timestamp (Unix epoch seconds). */ + iat?: number; + /** The user's IP address at authentication time. */ + ip?: string; + /** Authentication methods used (e.g., "pwd"). */ + amr?: string[]; + /** Identity provider information. */ + idp?: { + id: string; + type: string; + }; + /** Geographic information about where the user authenticated. */ + geo?: { + country: string; + }; + /** Group memberships from the identity provider. */ + groups?: Array<{ + id: string; + name: string; + email?: string; + }>; + /** Device posture check results, keyed by check ID. */ + devicePosture?: Record; + /** True if the user connected via Cloudflare WARP. */ + is_warp?: boolean; + /** True if the user is authenticated via Cloudflare Gateway. */ + is_gateway?: boolean; +} +// ============================================================================ +// Agent Memory +// +// Public type surface for user Workers binding to an Agent Memory namespace. +// ============================================================================ +/** Memory type — every memory is classified into exactly one. */ +type AgentMemoryMemoryType = "fact" | "event" | "instruction" | "task"; +/** Search intensity for recall. */ +type AgentMemoryThinkingLevel = "low" | "medium" | "high"; +/** Response verbosity for recall. */ +type AgentMemoryResponseLength = "short" | "medium" | "long"; +/** A conversation message passed to ingest(). */ +interface AgentMemoryMessage { + role: "system" | "user" | "assistant"; + content: string; + /** Optional message timestamp. */ + timestamp?: Date; +} +/** Raw memory content passed to remember(). */ +interface AgentMemoryIncomingMemory { + /** Raw memory content. The service classifies and summarizes automatically. */ + content: string; + /** Optional session identifier to associate with this memory. */ + sessionId?: string | null | undefined; +} +/** A stored memory returned from remember(), get(), and delete(). */ +interface AgentMemoryMemory { + /** Memory ID. */ + id: string; + /** Memory type. */ + type: AgentMemoryMemoryType; + /** Text summary. */ + summary: string; + /** Memory text. */ + content: string; + /** Session that created this memory. */ + sessionId: string | null; + /** Memory creation time. */ + createdAt: Date; + /** Memory last-update time. */ + updatedAt: Date; +} +/** Single entry in a list() response. Same shape as Memory minus full content. */ +type AgentMemoryMemoryListEntry = Omit; +/** A scored memory candidate in a recall result. */ +interface AgentMemoryScoredCandidate { + /** Candidate ID. */ + id: string; + /** Text summary. */ + summary: string; + /** Session that created this candidate, when known. */ + sessionId: string | null; + /** Relevance score (higher is better). Comparable only within a single query. */ + score: number; +} +/** Options for the ingest() method. */ +interface AgentMemoryIngestOptions { + /** Session identifier to associate with memories created during ingestion. */ + sessionId?: string | null | undefined; +} +/** Options for the getSummary() method. */ +interface AgentMemoryGetSummaryOptions { + /** Session identifier to retrieve session summary for. */ + sessionId?: string | null | undefined; +} +/** Response from the getSummary() method. */ +interface AgentMemoryGetSummaryResponse { + /** Markdown summary. */ + summary: string; +} +/** + * Options for the recall() method. + * + * `referenceDate` accepts a Date object, an ISO-8601 date string + * (YYYY-MM-DD), or a full ISO-8601 datetime string. When provided, this + * date is used as "today" for resolving relative time references + * ("how many days ago", "last week") instead of the server's wall-clock time. + */ +interface AgentMemoryRecallOptions { + /** Recall intensity: "low" (default), "medium", or "high". */ + thinkingLevel?: AgentMemoryThinkingLevel; + /** Response verbosity: "short", "medium" (default), or "long". */ + responseLength?: AgentMemoryResponseLength; + /** Temporal anchor for date arithmetic. */ + referenceDate?: Date | string; +} +/** Response from the recall() method. */ +interface AgentMemoryRecallResult { + /** Number of memories retrieved. */ + count: number; + /** LLM-generated answer synthesizing the matching memories. */ + answer: string; + /** Matching memories ranked by relevance. */ + candidates: AgentMemoryScoredCandidate[]; +} +/** + * Options for the list() method. + * + * `cursor` is the opaque continuation token returned by the previous page; + * pass it back unchanged to fetch the next page. `sessionId` and `type` + * are exact-match filters; combining them is allowed. + */ +interface AgentMemoryListMemoriesOptions { + /** Maximum number of memories to return. Default 20, max 500. */ + limit?: number; + /** Opaque cursor from a previous page. */ + cursor?: string; + /** Exact-match session filter. */ + sessionId?: string; + /** Exact-match memory-type filter. */ + type?: AgentMemoryMemoryType; +} +/** Response from the list() method. */ +interface AgentMemoryListMemoriesResult { + memories: AgentMemoryMemoryListEntry[]; + /** Continuation cursor; absent when this page exhausted the result set. */ + cursor?: string; +} +/** + * A single Agent Memory profile, scoped to a profile name. + * + * Returned by {@link AgentMemoryNamespace.getProfile}. + */ +declare abstract class AgentMemoryProfile { + /** + * Retrieve a memory by ID. + * + * @param memoryId - ULID of the memory to retrieve. + * @throws if the memory does not exist. + */ + get(memoryId: string): Promise; + /** + * Delete a memory by ID. + * + * Removes the memory and any source messages linked by the memory's + * source message IDs. + * + * @param memoryId - ULID of the memory to delete. + * @throws if the memory does not exist. + */ + delete(memoryId: string): Promise; + /** + * Store a memory in this profile. The content is automatically classified, + * summarized, and indexed. + * + * @param memory - Raw memory content to persist. + */ + remember(memory: AgentMemoryIncomingMemory): Promise; + /** + * Extract memories from a conversation. + * + * @param messages - Conversation messages to extract memories from. + * @param options - Optional ingest options. + */ + ingest(messages: Iterable, options?: AgentMemoryIngestOptions): Promise; + /** + * Get a profile summary. + * + * @param options - Optional getSummary options. + */ + getSummary(options?: AgentMemoryGetSummaryOptions): Promise; + /** + * Recall memories in this profile. + * + * @param query - Recall query matched against memory content and keywords. + * @param options - Optional recall parameters. + * @returns Matching memories with relevance scores and a synthesized answer. + */ + recall(query: string, options?: AgentMemoryRecallOptions): Promise; + /** + * List active memories in this profile. + * + * Returns a paginated, filterable view of stored memories. Superseded + * versions are excluded. Use the returned `cursor` (when present) to + * fetch the next page. + * + * @param options - Optional pagination and filter options. + */ + list(options?: AgentMemoryListMemoriesOptions): Promise; + /** + * Soft-delete every memory and message in this profile that is tagged + * with `sessionId`. + * + * Idempotent: deleting a sessionId that has no rows is a no-op. + * + * @param sessionId - Session to delete. + */ + deleteSession(sessionId: string): Promise; +} +/** + * Namespace-level Agent Memory binding. + * + * Used as the type of an `env.MEMORY`-style binding backed by the Agent + * Memory product. + * + * @example + * ```ts + * export default { + * async fetch(_request: Request, env: Env): Promise { + * const profile = await env.MEMORY.getProfile("wrangler-e2e"); + * const summary = await profile.getSummary(); + * return Response.json(summary); + * }, + * }; + * ``` + */ +declare abstract class AgentMemoryNamespace { + /** + * Get a memory profile by name. Profiles are isolated by namespace and + * addressed by a compound key (namespaceId:profileName). + * + * @param profileName - Profile name (validated against naming rules). + * @returns RPC target for interacting with the profile. + */ + getProfile(profileName: string): Promise; + /** + * Soft-delete a profile and schedule deferred purge. Marks all + * memories and messages as deleted. + * + * @param profileName - Name of the profile to delete. + */ + deleteProfile(profileName: string): Promise; +} +// ============ AI Search Error Interfaces ============ +interface AiSearchInternalError extends Error { +} +interface AiSearchNotFoundError extends Error { +} +// ============ AI Search Common Types ============ +/** A single message in a conversation-style search or chat request. */ +type AiSearchMessage = { + role: 'system' | 'developer' | 'user' | 'assistant' | 'tool'; + content: string | null; +}; +/** + * Common shape for `ai_search_options` used by both single-instance and multi-instance requests. + * Contains retrieval, query rewrite, reranking, and cache sub-options. + */ +type AiSearchOptions = { + retrieval?: { + /** Which retrieval backend to use. Defaults to the instance's configured index_method. */ + retrieval_type?: 'vector' | 'keyword' | 'hybrid'; + /** Fusion method for combining vector + keyword results. */ + fusion_method?: 'max' | 'rrf'; + /** How keyword terms are combined: "and" = all terms must match, "or" = any term matches. */ + keyword_match_mode?: 'and' | 'or'; + /** Minimum similarity score (0-1) for a result to be included. Default 0.4. */ + match_threshold?: number; + /** Maximum number of results to return (1-50). Default 10. */ + max_num_results?: number; + /** Vectorize metadata filters applied to the search. */ + filters?: VectorizeVectorMetadataFilter; + /** Number of surrounding chunks to include for context (0-3). Default 0. */ + context_expansion?: number; + /** If true, return only item metadata without chunk text. */ + metadata_only?: boolean; + /** If true (default), return empty results on retrieval failure instead of throwing. */ + return_on_failure?: boolean; + /** Boost results by metadata field values. Max 3 entries. */ + boost_by?: Array<{ + field: string; + direction?: 'asc' | 'desc' | 'exists' | 'not_exists'; + }>; + [key: string]: unknown; + }; + query_rewrite?: { + enabled?: boolean; + model?: string; + rewrite_prompt?: string; + [key: string]: unknown; + }; + reranking?: { + enabled?: boolean; + model?: string; + /** Match threshold (0-1, default 0.4) */ + match_threshold?: number; + [key: string]: unknown; + }; + cache?: { + enabled?: boolean; + cache_threshold?: 'super_strict_match' | 'close_enough' | 'flexible_friend' | 'anything_goes'; + }; + [key: string]: unknown; +}; +// ============ AI Search Request Types ============ +/** + * Request body for single-instance search. + * Exactly one of `query` or `messages` must be provided. + */ +type AiSearchSearchRequest = { + /** Simple query string. */ + query: string; + messages?: never; + ai_search_options?: AiSearchOptions; +} | { + query?: never; + /** Conversation-style input. At least one user message with non-empty content is required. */ + messages: AiSearchMessage[]; + ai_search_options?: AiSearchOptions; +}; +type AiSearchChatCompletionsRequest = { + messages: AiSearchMessage[]; + model?: string; + stream?: boolean; + ai_search_options?: AiSearchOptions; + [key: string]: unknown; +}; +// ============ AI Search Multi-Instance Types (Namespace-Scoped) ============ +/** `ai_search_options` shape for multi-instance requests — requires `instance_ids`. */ +type AiSearchMultiSearchOptions = AiSearchOptions & { + /** Instance IDs to search across (1-10). */ + instance_ids: string[]; +}; +/** + * Request for searching across multiple instances within a namespace. + * `ai_search_options` is required and must include `instance_ids`. + * Exactly one of `query` or `messages` must be provided. + */ +type AiSearchMultiSearchRequest = { + /** Simple query string. */ + query: string; + messages?: never; + ai_search_options: AiSearchMultiSearchOptions; +} | { + query?: never; + /** Conversation-style input. */ + messages: AiSearchMessage[]; + ai_search_options: AiSearchMultiSearchOptions; +}; +/** A search result chunk tagged with the instance it originated from. */ +type AiSearchMultiSearchChunk = AiSearchSearchResponse['chunks'][number] & { + instance_id: string; +}; +/** Describes a per-instance error during a multi-instance operation. */ +type AiSearchMultiSearchError = { + instance_id: string; + message: string; +}; +/** Response from a multi-instance search, with chunks tagged by instance and optional partial-failure errors. */ +type AiSearchMultiSearchResponse = { + search_query: string; + chunks: AiSearchMultiSearchChunk[]; + errors?: AiSearchMultiSearchError[]; +}; +/** Request for chat completions across multiple instances within a namespace. `ai_search_options` is required and must include `instance_ids`. */ +type AiSearchMultiChatCompletionsRequest = Omit & { + ai_search_options: AiSearchMultiSearchOptions; +}; +/** Response from multi-instance chat completions, with chunks tagged by instance and optional partial-failure errors. */ +type AiSearchMultiChatCompletionsResponse = Omit & { + chunks: AiSearchMultiSearchChunk[]; + errors?: AiSearchMultiSearchError[]; +}; +// ============ AI Search Response Types ============ +type AiSearchSearchResponse = { + search_query: string; + chunks: Array<{ + id: string; + type: string; + /** Match score (0-1) */ + score: number; + text: string; + item: { + timestamp?: number; + key: string; + metadata?: Record; + }; + scoring_details?: { + /** Keyword match score (0-1) */ + keyword_score?: number; + /** Vector similarity score (0-1) */ + vector_score?: number; + /** Keyword rank position */ + keyword_rank?: number; + /** Vector rank position */ + vector_rank?: number; + /** Reranking model score */ + reranking_score?: number; + /** Fusion method used to combine results */ + fusion_method?: 'rrf' | 'max'; + [key: string]: unknown; + }; + }>; +}; +type AiSearchChatCompletionsResponse = { + id?: string; + object?: string; + model?: string; + choices: Array<{ + index?: number; + message: { + role: 'system' | 'developer' | 'user' | 'assistant' | 'tool'; + content: string | null; + [key: string]: unknown; + }; + [key: string]: unknown; + }>; + chunks: AiSearchSearchResponse['chunks']; + [key: string]: unknown; +}; +type AiSearchStatsResponse = { + queued?: number; + running?: number; + completed?: number; + error?: number; + skipped?: number; + outdated?: number; + last_activity?: string; + /** Storage engine statistics. */ + engine?: { + vectorize?: { + vectorsCount: number; + dimensions: number; + }; + r2?: { + payloadSizeBytes: number; + metadataSizeBytes: number; + objectCount: number; + }; + }; +}; +// ============ AI Search Instance Info Types ============ +type AiSearchInstanceInfo = { + id: string; + type?: 'r2' | 'web-crawler' | string; + source?: string; + source_params?: unknown; + paused?: boolean; + status?: string; + namespace?: string; + created_at?: string; + modified_at?: string; + token_id?: string; + ai_gateway_id?: string; + rewrite_query?: boolean; + reranking?: boolean; + embedding_model?: string; + ai_search_model?: string; + rewrite_model?: string; + reranking_model?: string; + /** @deprecated Use index_method instead. */ + hybrid_search_enabled?: boolean; + /** Controls which storage backends are active. */ + index_method?: { + vector?: boolean; + keyword?: boolean; + }; + /** Fusion method for combining vector and keyword results. */ + fusion_method?: 'max' | 'rrf'; + indexing_options?: { + keyword_tokenizer?: 'porter' | 'trigram'; + } | null; + retrieval_options?: { + keyword_match_mode?: 'and' | 'or'; + boost_by?: Array<{ + field: string; + direction?: 'asc' | 'desc' | 'exists' | 'not_exists'; + }>; + } | null; + chunk?: boolean; + chunk_size?: number; + chunk_overlap?: number; + score_threshold?: number; + max_num_results?: number; + cache?: boolean; + cache_threshold?: 'super_strict_match' | 'close_enough' | 'flexible_friend' | 'anything_goes'; + custom_metadata?: Array<{ + field_name: string; + data_type: 'text' | 'number' | 'boolean' | 'datetime'; + }>; + /** Sync interval in seconds. */ + sync_interval?: 3600 | 7200 | 14400 | 21600 | 43200 | 86400; + metadata?: Record; + [key: string]: unknown; +}; +/** Pagination, search, and ordering parameters for listing instances within a namespace. */ +type AiSearchListInstancesParams = { + page?: number; + per_page?: number; + /** Search instances by ID. */ + search?: string; + /** Field to sort by. */ + order_by?: 'created_at'; + /** Sort direction. */ + order_by_direction?: 'asc' | 'desc'; +}; +type AiSearchListResponse = { + result: AiSearchInstanceInfo[]; + result_info?: { + count: number; + page: number; + per_page: number; + total_count: number; + }; +}; +// ============ AI Search Config Types ============ +type AiSearchConfig = { + /** Instance ID (1-32 chars, pattern: ^[a-z0-9_]+(?:-[a-z0-9_]+)*$) */ + id: string; + /** Instance type. Omit to create with built-in storage. */ + type?: 'r2' | 'web-crawler' | string; + /** Source URL (required for web-crawler type). */ + source?: string; + source_params?: unknown; + /** Token ID (UUID format) */ + token_id?: string; + ai_gateway_id?: string; + /** Enable query rewriting (default false) */ + rewrite_query?: boolean; + /** Enable reranking (default false) */ + reranking?: boolean; + embedding_model?: string; + ai_search_model?: string; + rewrite_model?: string; + reranking_model?: string; + /** @deprecated Use index_method instead. */ + hybrid_search_enabled?: boolean; + /** Controls which storage backends are used during indexing. Defaults to vector-only. */ + index_method?: { + vector?: boolean; + keyword?: boolean; + }; + /** Fusion method for combining vector and keyword results. "rrf" = reciprocal rank fusion (default), "max" = maximum score. */ + fusion_method?: 'max' | 'rrf'; + indexing_options?: { + keyword_tokenizer?: 'porter' | 'trigram'; + } | null; + retrieval_options?: { + keyword_match_mode?: 'and' | 'or'; + boost_by?: Array<{ + field: string; + direction?: 'asc' | 'desc' | 'exists' | 'not_exists'; + }>; + } | null; + chunk?: boolean; + chunk_size?: number; + chunk_overlap?: number; + /** Minimum similarity score (0-1) for a result to be included. */ + score_threshold?: number; + max_num_results?: number; + cache?: boolean; + /** Similarity threshold for cache hits. Stricter = fewer cache hits but higher relevance. */ + cache_threshold?: 'super_strict_match' | 'close_enough' | 'flexible_friend' | 'anything_goes'; + custom_metadata?: Array<{ + field_name: string; + data_type: 'text' | 'number' | 'boolean' | 'datetime'; + }>; + namespace?: string; + /** Sync interval in seconds. 3600=1h, 7200=2h, 14400=4h, 21600=6h, 43200=12h, 86400=24h. */ + sync_interval?: 3600 | 7200 | 14400 | 21600 | 43200 | 86400; + metadata?: Record; + [key: string]: unknown; +}; +// ============ AI Search Item Types ============ +type AiSearchItemInfo = { + id: string; + key: string; + status: 'completed' | 'error' | 'skipped' | 'queued' | 'running' | 'outdated'; + next_action?: 'INDEX' | 'DELETE' | null; + error?: string; + checksum?: string; + namespace?: string; + chunks_count?: number | null; + file_size?: number | null; + source_id?: string | null; + last_seen_at?: string; + created_at?: string; + metadata?: Record; + [key: string]: unknown; +}; +type AiSearchItemContentResult = { + body: ReadableStream; + contentType: string; + filename: string; + size: number; +}; +type AiSearchUploadItemOptions = { + metadata?: Record; +}; +type AiSearchListItemsParams = { + page?: number; + per_page?: number; + /** Search items by key name. */ + search?: string; + /** Sort order for results. */ + sort_by?: 'status' | 'modified_at'; + /** Filter items by processing status. */ + status?: 'queued' | 'running' | 'completed' | 'error' | 'skipped' | 'outdated'; + /** Filter items by source (e.g. "builtin" or "web-crawler:https://example.com"). */ + source?: string; + /** JSON-encoded Vectorize filter for metadata filtering. */ + metadata_filter?: string; +}; +type AiSearchListItemsResponse = { + result: AiSearchItemInfo[]; + result_info?: { + count: number; + page: number; + per_page: number; + total_count: number; + }; +}; +// ============ AI Search Item Logs Types ============ +type AiSearchItemLogsParams = { + /** Maximum number of log entries to return (1-100, default 50). */ + limit?: number; + /** Opaque cursor for pagination. Pass the `cursor` value from a previous response. */ + cursor?: string; +}; +type AiSearchItemLog = { + timestamp: string; + action: string; + message: string; + fileKey?: string; + chunkCount?: number; + processingTimeMs?: number; + errorType?: string; +}; +/** Paginated response for item processing logs (cursor-based). */ +type AiSearchItemLogsResponse = { + result: AiSearchItemLog[]; + result_info: { + count: number; + per_page: number; + cursor: string | null; + truncated: boolean; + }; +}; +// ============ AI Search Item Chunks Types ============ +type AiSearchItemChunksParams = { + /** Maximum number of chunks to return (1-100, default 20). */ + limit?: number; + /** Offset into the chunks list (default 0). */ + offset?: number; +}; +/** A single indexed chunk belonging to an item, including its text content and byte range. */ +type AiSearchItemChunk = { + id: string; + text: string; + start_byte: number; + end_byte: number; + item?: { + timestamp?: number; + key: string; + metadata?: Record; + }; +}; +/** Paginated response for item chunks (offset-based). */ +type AiSearchItemChunksResponse = { + result: AiSearchItemChunk[]; + result_info: { + count: number; + total: number; + limit: number; + offset: number; + }; +}; +// ============ AI Search Job Types ============ +type AiSearchJobInfo = { + id: string; + source: 'user' | 'schedule'; + description?: string; + last_seen_at?: string; + started_at?: string; + ended_at?: string; + end_reason?: string; +}; +type AiSearchJobLog = { + id: number; + message: string; + message_type: number; + created_at: number; +}; +type AiSearchCreateJobParams = { + description?: string; +}; +type AiSearchListJobsParams = { + page?: number; + per_page?: number; +}; +type AiSearchListJobsResponse = { + result: AiSearchJobInfo[]; + result_info?: { + count: number; + page: number; + per_page: number; + total_count: number; + }; +}; +type AiSearchJobLogsParams = { + page?: number; + per_page?: number; +}; +type AiSearchJobLogsResponse = { + result: AiSearchJobLog[]; + result_info?: { + count: number; + page: number; + per_page: number; + total_count: number; + }; +}; +// ============ AI Search Sub-Service Classes ============ +/** + * Single item service for an AI Search instance. + * Provides info, download, sync, logs, and chunks operations on a specific item. + */ +declare abstract class AiSearchItem { + /** Get metadata about this item. */ + info(): Promise; + /** + * Download the item's content. + * @returns Object with body stream, content type, filename, and size. + */ + download(): Promise; + /** + * Trigger re-indexing of this item. + * @returns The updated item info. + */ + sync(): Promise; + /** + * Retrieve processing logs for this item (cursor-based pagination). + * @param params Optional pagination parameters (limit, cursor). + * @returns Paginated log entries for this item. + */ + logs(params?: AiSearchItemLogsParams): Promise; + /** + * List indexed chunks for this item (offset-based pagination). + * @param params Optional pagination parameters (limit, offset). + * @returns Paginated chunk entries for this item. + */ + chunks(params?: AiSearchItemChunksParams): Promise; +} +/** + * Items collection service for an AI Search instance. + * Provides list, upload, and access to individual items. + */ +declare abstract class AiSearchItems { + /** List items in this instance. */ + list(params?: AiSearchListItemsParams): Promise; + /** + * Upload a file as an item. Behaves as an upsert: if an item with the same + * filename already exists, it is overwritten and re-indexed. + * @param name Filename for the uploaded item. + * @param content File content as a ReadableStream, Blob, or string. + * @param options Optional metadata to attach to the item. + * @returns The created item info. + */ + upload(name: string, content: ReadableStream | Blob | string, options?: AiSearchUploadItemOptions): Promise; + /** + * Upload a file and poll until processing completes. + * Behaves as an upsert: if an item with the same filename already exists, + * it is overwritten and re-indexed. + * @param name Filename for the uploaded item. + * @param content File content as a ReadableStream, Blob, or string. + * @param options Optional metadata and polling configuration. + * @returns The item info after processing completes (or timeout). + */ + uploadAndPoll(name: string, content: ReadableStream | Blob | string, options?: AiSearchUploadItemOptions & { + /** Polling interval in milliseconds (default 1000). */ + pollIntervalMs?: number; + /** Maximum time to wait in milliseconds (default 30000). */ + timeoutMs?: number; + }): Promise; + /** + * Get an item by ID. + * @param itemId The item identifier. + * @returns Item service for info, download, sync, logs, and chunks operations. + */ + get(itemId: string): AiSearchItem; + /** + * Delete an item from the instance. + * @param itemId The item identifier. + */ + delete(itemId: string): Promise; +} +/** + * Single job service for an AI Search instance. + * Provides info, logs, and cancel operations for a specific job. + */ +declare abstract class AiSearchJob { + /** Get metadata about this job. */ + info(): Promise; + /** Get logs for this job. */ + logs(params?: AiSearchJobLogsParams): Promise; + /** + * Cancel a running job. + * @returns The updated job info. + * @throws AiSearchNotFoundError if the job does not exist. + */ + cancel(): Promise; +} +/** + * Jobs collection service for an AI Search instance. + * Provides list, create, and access to individual jobs. + */ +declare abstract class AiSearchJobs { + /** List jobs for this instance. */ + list(params?: AiSearchListJobsParams): Promise; + /** + * Create a new indexing job. + * @param params Optional job parameters. + * @returns The created job info. + */ + create(params?: AiSearchCreateJobParams): Promise; + /** + * Get a job by ID. + * @param jobId The job identifier. + * @returns Job service for info, logs, and cancel operations. + */ + get(jobId: string): AiSearchJob; +} +// ============ AI Search Binding Classes ============ +/** + * Instance-level AI Search service. + * + * Used as: + * - The return type of `AiSearchNamespace.get(name)` (namespace binding) + * - The type of `env.BLOG_SEARCH` (single instance binding via `ai_search`) + * + * Provides search, chat, update, stats, items, and jobs operations. + * + * @example + * ```ts + * // Via namespace binding + * const instance = env.AI_SEARCH.get("blog"); + * const results = await instance.search({ + * query: "How does caching work?", + * }); + * + * // Via single instance binding + * const results = await env.BLOG_SEARCH.search({ + * messages: [{ role: "user", content: "How does caching work?" }], + * }); + * ``` + */ +declare abstract class AiSearchInstance { + /** + * Search the AI Search instance for relevant chunks. + * @param params Search request with query or messages and optional AI search options. + * @returns Search response with matching chunks and search query. + */ + search(params: AiSearchSearchRequest): Promise; + /** + * Generate chat completions with AI Search context (streaming). + * @param params Chat completions request with stream: true. + * @returns ReadableStream of server-sent events. + */ + chatCompletions(params: AiSearchChatCompletionsRequest & { + stream: true; + }): Promise; + /** + * Generate chat completions with AI Search context. + * @param params Chat completions request. + * @returns Chat completion response with choices and RAG chunks. + */ + chatCompletions(params: AiSearchChatCompletionsRequest): Promise; + /** + * Update the instance configuration. + * @param config Partial configuration to update. + * @returns Updated instance info. + */ + update(config: Partial): Promise; + /** Get metadata about this instance. */ + info(): Promise; + /** + * Get instance statistics (item count, indexing status, etc.). + * @returns Statistics with counts per status, last activity time, and engine details. + */ + stats(): Promise; + /** Items collection — list, upload, and manage items in this instance. */ + get items(): AiSearchItems; + /** Jobs collection — list, create, and inspect indexing jobs. */ + get jobs(): AiSearchJobs; +} +/** + * Namespace-level AI Search service. + * + * Used as the type of `env.AI_SEARCH` (namespace binding via `ai_search_namespaces`). + * Scoped to a single namespace. Provides dynamic instance access, creation, deletion, + * and multi-instance search/chat operations. + * + * @example + * ```ts + * // Access an instance within the namespace + * const blog = env.AI_SEARCH.get("blog"); + * const results = await blog.search({ query: "How does caching work?" }); + * + * // List all instances in the namespace + * const instances = await env.AI_SEARCH.list(); + * + * // Create a new instance with built-in storage + * const tenant = await env.AI_SEARCH.create({ id: "tenant-123" }); + * + * // Upload items into the instance + * await tenant.items.upload("doc.pdf", fileContent); + * + * // Search across multiple instances + * const multi = await env.AI_SEARCH.search({ + * query: "caching", + * ai_search_options: { instance_ids: ["blog", "docs"] }, + * }); + * + * // Delete an instance + * await env.AI_SEARCH.delete("tenant-123"); + * ``` + */ +declare abstract class AiSearchNamespace { + /** + * Get an instance by name within the bound namespace. + * @param name Instance name. + * @returns Instance service for search, chat, update, stats, items, and jobs. + */ + get(name: string): AiSearchInstance; + /** + * List instances in the bound namespace. + * @param params Optional pagination, search, and ordering parameters. + * @returns Array of instance metadata with pagination info. + */ + list(params?: AiSearchListInstancesParams): Promise; + /** + * Create a new instance within the bound namespace. + * @param config Instance configuration. Only `id` is required — omit `type` and `source` to create with built-in storage. + * @returns Instance service for the newly created instance. + * + * @example + * ```ts + * // Create with built-in storage (upload items manually) + * const instance = await env.AI_SEARCH.create({ id: "my-search" }); + * + * // Create with web crawler source + * const instance = await env.AI_SEARCH.create({ + * id: "docs-search", + * type: "web-crawler", + * source: "https://developers.cloudflare.com", + * }); + * ``` + */ + create(config: AiSearchConfig): Promise; + /** + * Delete an instance from the bound namespace. + * @param name Instance name to delete. + */ + delete(name: string): Promise; + /** + * Search across multiple instances within the bound namespace. + * Fans out to the specified instance_ids and merges results. + * @param params Search request with required `ai_search_options.instance_ids`. + * @returns Search response with chunks tagged by instance_id and optional partial-failure errors. + */ + search(params: AiSearchMultiSearchRequest): Promise; + /** + * Generate chat completions across multiple instances within the bound namespace (streaming). + * Fans out to the specified instance_ids, merges context, and generates a response. + * @param params Chat completions request with stream: true and required `ai_search_options.instance_ids`. + * @returns ReadableStream of server-sent events. + */ + chatCompletions(params: AiSearchMultiChatCompletionsRequest & { + stream: true; + }): Promise; + /** + * Generate chat completions across multiple instances within the bound namespace. + * Fans out to the specified instance_ids, merges context, and generates a response. + * @param params Chat completions request with required `ai_search_options.instance_ids`. + * @returns Chat completion response with choices, chunks tagged by instance_id, and optional partial-failure errors. + */ + chatCompletions(params: AiSearchMultiChatCompletionsRequest): Promise; +} +type AiImageClassificationInput = { + image: number[]; +}; +type AiImageClassificationOutput = { + score?: number; + label?: string; +}[]; +declare abstract class BaseAiImageClassification { + inputs: AiImageClassificationInput; + postProcessedOutputs: AiImageClassificationOutput; +} +type AiImageToTextInput = { + image: number[]; + prompt?: string; + max_tokens?: number; + temperature?: number; + top_p?: number; + top_k?: number; + seed?: number; + repetition_penalty?: number; + frequency_penalty?: number; + presence_penalty?: number; + raw?: boolean; + messages?: RoleScopedChatInput[]; +}; +type AiImageToTextOutput = { + description: string; +}; +declare abstract class BaseAiImageToText { + inputs: AiImageToTextInput; + postProcessedOutputs: AiImageToTextOutput; +} +type AiImageTextToTextInput = { + image: string; + prompt?: string; + max_tokens?: number; + temperature?: number; + ignore_eos?: boolean; + top_p?: number; + top_k?: number; + seed?: number; + repetition_penalty?: number; + frequency_penalty?: number; + presence_penalty?: number; + raw?: boolean; + messages?: RoleScopedChatInput[]; +}; +type AiImageTextToTextOutput = { + description: string; +}; +declare abstract class BaseAiImageTextToText { + inputs: AiImageTextToTextInput; + postProcessedOutputs: AiImageTextToTextOutput; +} +type AiMultimodalEmbeddingsInput = { + image: string; + text: string[]; +}; +type AiIMultimodalEmbeddingsOutput = { + data: number[][]; + shape: number[]; +}; +declare abstract class BaseAiMultimodalEmbeddings { + inputs: AiImageTextToTextInput; + postProcessedOutputs: AiImageTextToTextOutput; +} +type AiObjectDetectionInput = { + image: number[]; +}; +type AiObjectDetectionOutput = { + score?: number; + label?: string; +}[]; +declare abstract class BaseAiObjectDetection { + inputs: AiObjectDetectionInput; + postProcessedOutputs: AiObjectDetectionOutput; +} +type AiSentenceSimilarityInput = { + source: string; + sentences: string[]; +}; +type AiSentenceSimilarityOutput = number[]; +declare abstract class BaseAiSentenceSimilarity { + inputs: AiSentenceSimilarityInput; + postProcessedOutputs: AiSentenceSimilarityOutput; +} +type AiAutomaticSpeechRecognitionInput = { + audio: number[]; +}; +type AiAutomaticSpeechRecognitionOutput = { + text?: string; + words?: { + word: string; + start: number; + end: number; + }[]; + vtt?: string; +}; +declare abstract class BaseAiAutomaticSpeechRecognition { + inputs: AiAutomaticSpeechRecognitionInput; + postProcessedOutputs: AiAutomaticSpeechRecognitionOutput; +} +type AiSummarizationInput = { + input_text: string; + max_length?: number; +}; +type AiSummarizationOutput = { + summary: string; +}; +declare abstract class BaseAiSummarization { + inputs: AiSummarizationInput; + postProcessedOutputs: AiSummarizationOutput; +} +type AiTextClassificationInput = { + text: string; +}; +type AiTextClassificationOutput = { + score?: number; + label?: string; +}[]; +declare abstract class BaseAiTextClassification { + inputs: AiTextClassificationInput; + postProcessedOutputs: AiTextClassificationOutput; +} +type AiTextEmbeddingsInput = { + text: string | string[]; +}; +type AiTextEmbeddingsOutput = { + shape: number[]; + data: number[][]; +}; +declare abstract class BaseAiTextEmbeddings { + inputs: AiTextEmbeddingsInput; + postProcessedOutputs: AiTextEmbeddingsOutput; +} +type RoleScopedChatInput = { + role: "user" | "assistant" | "system" | "tool" | (string & NonNullable); + content: string; + name?: string; +}; +type AiTextGenerationToolLegacyInput = { + name: string; + description: string; + parameters?: { + type: "object" | (string & NonNullable); + properties: { + [key: string]: { + type: string; + description?: string; + }; + }; + required: string[]; + }; +}; +type AiTextGenerationToolInput = { + type: "function" | (string & NonNullable); + function: { + name: string; + description: string; + parameters?: { + type: "object" | (string & NonNullable); + properties: { + [key: string]: { + type: string; + description?: string; + }; + }; + required: string[]; + }; + }; +}; +type AiTextGenerationFunctionsInput = { + name: string; + code: string; +}; +type AiTextGenerationResponseFormat = { + type: string; + json_schema?: any; +}; +type AiTextGenerationInput = { + prompt?: string; + raw?: boolean; + stream?: boolean; + max_tokens?: number; + temperature?: number; + top_p?: number; + top_k?: number; + seed?: number; + repetition_penalty?: number; + frequency_penalty?: number; + presence_penalty?: number; + messages?: RoleScopedChatInput[]; + response_format?: AiTextGenerationResponseFormat; + tools?: AiTextGenerationToolInput[] | AiTextGenerationToolLegacyInput[] | (object & NonNullable); + functions?: AiTextGenerationFunctionsInput[]; +}; +type AiTextGenerationToolLegacyOutput = { + name: string; + arguments: unknown; +}; +type AiTextGenerationToolOutput = { + id: string; + type: "function"; + function: { + name: string; + arguments: string; + }; +}; +type UsageTags = { + prompt_tokens: number; + completion_tokens: number; + total_tokens: number; +}; +type AiTextGenerationOutput = { + response?: string; + tool_calls?: AiTextGenerationToolLegacyOutput[] & AiTextGenerationToolOutput[]; + usage?: UsageTags; +}; +declare abstract class BaseAiTextGeneration { + inputs: AiTextGenerationInput; + postProcessedOutputs: AiTextGenerationOutput; +} +type AiTextToSpeechInput = { + prompt: string; + lang?: string; +}; +type AiTextToSpeechOutput = Uint8Array | { + audio: string; +}; +declare abstract class BaseAiTextToSpeech { + inputs: AiTextToSpeechInput; + postProcessedOutputs: AiTextToSpeechOutput; +} +type AiTextToImageInput = { + prompt: string; + negative_prompt?: string; + height?: number; + width?: number; + image?: number[]; + image_b64?: string; + mask?: number[]; + num_steps?: number; + strength?: number; + guidance?: number; + seed?: number; +}; +type AiTextToImageOutput = ReadableStream; +declare abstract class BaseAiTextToImage { + inputs: AiTextToImageInput; + postProcessedOutputs: AiTextToImageOutput; +} +type AiTranslationInput = { + text: string; + target_lang: string; + source_lang?: string; +}; +type AiTranslationOutput = { + translated_text?: string; +}; +declare abstract class BaseAiTranslation { + inputs: AiTranslationInput; + postProcessedOutputs: AiTranslationOutput; +} +/** + * Workers AI support for OpenAI's Chat Completions API + */ +type ChatCompletionContentPartText = { + type: "text"; + text: string; +}; +type ChatCompletionContentPartImage = { + type: "image_url"; + image_url: { + url: string; + detail?: "auto" | "low" | "high"; + }; +}; +type ChatCompletionContentPartInputAudio = { + type: "input_audio"; + input_audio: { + /** Base64 encoded audio data. */ + data: string; + format: "wav" | "mp3"; + }; +}; +type ChatCompletionContentPartFile = { + type: "file"; + file: { + /** Base64 encoded file data. */ + file_data?: string; + /** The ID of an uploaded file. */ + file_id?: string; + filename?: string; + }; +}; +type ChatCompletionContentPartRefusal = { + type: "refusal"; + refusal: string; +}; +type ChatCompletionContentPart = ChatCompletionContentPartText | ChatCompletionContentPartImage | ChatCompletionContentPartInputAudio | ChatCompletionContentPartFile; +type FunctionDefinition = { + name: string; + description?: string; + parameters?: Record; + strict?: boolean | null; +}; +type ChatCompletionFunctionTool = { + type: "function"; + function: FunctionDefinition; +}; +type ChatCompletionCustomToolGrammarFormat = { + type: "grammar"; + grammar: { + definition: string; + syntax: "lark" | "regex"; + }; +}; +type ChatCompletionCustomToolTextFormat = { + type: "text"; +}; +type ChatCompletionCustomToolFormat = ChatCompletionCustomToolTextFormat | ChatCompletionCustomToolGrammarFormat; +type ChatCompletionCustomTool = { + type: "custom"; + custom: { + name: string; + description?: string; + format?: ChatCompletionCustomToolFormat; + }; +}; +type ChatCompletionTool = ChatCompletionFunctionTool | ChatCompletionCustomTool; +type ChatCompletionMessageFunctionToolCall = { + id: string; + type: "function"; + function: { + name: string; + /** JSON-encoded arguments string. */ + arguments: string; + }; +}; +type ChatCompletionMessageCustomToolCall = { + id: string; + type: "custom"; + custom: { + name: string; + input: string; + }; +}; +type ChatCompletionMessageToolCall = ChatCompletionMessageFunctionToolCall | ChatCompletionMessageCustomToolCall; +type ChatCompletionToolChoiceFunction = { + type: "function"; + function: { + name: string; + }; +}; +type ChatCompletionToolChoiceCustom = { + type: "custom"; + custom: { + name: string; + }; +}; +type ChatCompletionToolChoiceAllowedTools = { + type: "allowed_tools"; + allowed_tools: { + mode: "auto" | "required"; + tools: Array>; + }; +}; +type ChatCompletionToolChoiceOption = "none" | "auto" | "required" | ChatCompletionToolChoiceFunction | ChatCompletionToolChoiceCustom | ChatCompletionToolChoiceAllowedTools; +type DeveloperMessage = { + role: "developer"; + content: string | Array<{ + type: "text"; + text: string; + }>; + name?: string; +}; +type SystemMessage = { + role: "system"; + content: string | Array<{ + type: "text"; + text: string; + }>; + name?: string; +}; +/** + * Permissive merged content part used inside UserMessage arrays. + * + * Cabidela has a limitation where anyOf/oneOf with enum-based discrimination + * inside nested array items does not correctly match different branches for + * different array elements, so the schema uses a single merged object. + */ +type UserMessageContentPart = { + type: "text" | "image_url" | "input_audio" | "file"; + text?: string; + image_url?: { + url?: string; + detail?: "auto" | "low" | "high"; + }; + input_audio?: { + data?: string; + format?: "wav" | "mp3"; + }; + file?: { + file_data?: string; + file_id?: string; + filename?: string; + }; +}; +type UserMessage = { + role: "user"; + content: string | Array; + name?: string; +}; +type AssistantMessageContentPart = { + type: "text" | "refusal"; + text?: string; + refusal?: string; +}; +type AssistantMessage = { + role: "assistant"; + content?: string | null | Array; + refusal?: string | null; + name?: string; + audio?: { + id: string; + }; + tool_calls?: Array; + function_call?: { + name: string; + arguments: string; + }; +}; +type ToolMessage = { + role: "tool"; + content: string | Array<{ + type: "text"; + text: string; + }>; + tool_call_id: string; +}; +type FunctionMessage = { + role: "function"; + content: string; + name: string; +}; +type ChatCompletionMessageParam = DeveloperMessage | SystemMessage | UserMessage | AssistantMessage | ToolMessage | FunctionMessage; +type ChatCompletionsResponseFormatText = { + type: "text"; +}; +type ChatCompletionsResponseFormatJSONObject = { + type: "json_object"; +}; +type ResponseFormatJSONSchema = { + type: "json_schema"; + json_schema: { + name: string; + description?: string; + schema?: Record; + strict?: boolean | null; + }; +}; +type ResponseFormat = ChatCompletionsResponseFormatText | ChatCompletionsResponseFormatJSONObject | ResponseFormatJSONSchema; +type ChatCompletionsStreamOptions = { + include_usage?: boolean; + include_obfuscation?: boolean; +}; +type PredictionContent = { + type: "content"; + content: string | Array<{ + type: "text"; + text: string; + }>; +}; +type AudioParams = { + voice: string | { + id: string; + }; + format: "wav" | "aac" | "mp3" | "flac" | "opus" | "pcm16"; +}; +type WebSearchUserLocation = { + type: "approximate"; + approximate: { + city?: string; + country?: string; + region?: string; + timezone?: string; + }; +}; +type WebSearchOptions = { + search_context_size?: "low" | "medium" | "high"; + user_location?: WebSearchUserLocation; +}; +type ChatTemplateKwargs = { + /** Whether to enable reasoning, enabled by default. */ + enable_thinking?: boolean; + /** If false, preserves reasoning context between turns. */ + clear_thinking?: boolean; +}; +/** Shared optional properties used by both Prompt and Messages input branches. */ +type ChatCompletionsCommonOptions = { + model?: string; + audio?: AudioParams; + frequency_penalty?: number | null; + logit_bias?: Record | null; + logprobs?: boolean | null; + top_logprobs?: number | null; + max_tokens?: number | null; + max_completion_tokens?: number | null; + metadata?: Record | null; + modalities?: Array<"text" | "audio"> | null; + n?: number | null; + parallel_tool_calls?: boolean; + prediction?: PredictionContent; + presence_penalty?: number | null; + reasoning_effort?: "low" | "medium" | "high" | null; + chat_template_kwargs?: ChatTemplateKwargs; + response_format?: ResponseFormat; + seed?: number | null; + service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; + stop?: string | Array | null; + store?: boolean | null; + stream?: boolean | null; + stream_options?: ChatCompletionsStreamOptions; + temperature?: number | null; + tool_choice?: ChatCompletionToolChoiceOption; + tools?: Array; + top_p?: number | null; + user?: string; + web_search_options?: WebSearchOptions; + function_call?: "none" | "auto" | { + name: string; + }; + functions?: Array; +}; +type PromptTokensDetails = { + cached_tokens?: number; + audio_tokens?: number; +}; +type CompletionTokensDetails = { + reasoning_tokens?: number; + audio_tokens?: number; + accepted_prediction_tokens?: number; + rejected_prediction_tokens?: number; +}; +type CompletionUsage = { + prompt_tokens: number; + completion_tokens: number; + total_tokens: number; + prompt_tokens_details?: PromptTokensDetails; + completion_tokens_details?: CompletionTokensDetails; +}; +type ChatCompletionTopLogprob = { + token: string; + logprob: number; + bytes: Array | null; +}; +type ChatCompletionTokenLogprob = { + token: string; + logprob: number; + bytes: Array | null; + top_logprobs: Array; +}; +type ChatCompletionAudio = { + id: string; + /** Base64 encoded audio bytes. */ + data: string; + expires_at: number; + transcript: string; +}; +type ChatCompletionUrlCitation = { + type: "url_citation"; + url_citation: { + url: string; + title: string; + start_index: number; + end_index: number; + }; +}; +type ChatCompletionResponseMessage = { + role: "assistant"; + content: string | null; + refusal: string | null; + annotations?: Array; + audio?: ChatCompletionAudio; + tool_calls?: Array; + function_call?: { + name: string; + arguments: string; + } | null; +}; +type ChatCompletionLogprobs = { + content: Array | null; + refusal?: Array | null; +}; +type ChatCompletionChoice = { + index: number; + message: ChatCompletionResponseMessage; + finish_reason: "stop" | "length" | "tool_calls" | "content_filter" | "function_call"; + logprobs: ChatCompletionLogprobs | null; +}; +type ChatCompletionsMessagesInput = { + messages: Array; +} & ChatCompletionsCommonOptions; +type ChatCompletionsOutput = { + id: string; + object: string; + created: number; + model: string; + choices: Array; + usage?: CompletionUsage; + system_fingerprint?: string | null; + service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; +}; +/** + * Workers AI support for OpenAI's Responses API + * Reference: https://github.com/openai/openai-node/blob/master/src/resources/responses/responses.ts + * + * It's a stripped down version from its source. + * It currently supports basic function calling, json mode and accepts images as input. + * + * It does not include types for WebSearch, CodeInterpreter, FileInputs, MCP, CustomTools. + * We plan to add those incrementally as model + platform capabilities evolve. + */ +type ResponsesInput = { + background?: boolean | null; + conversation?: string | ResponseConversationParam | null; + include?: Array | null; + input?: string | ResponseInput; + instructions?: string | null; + max_output_tokens?: number | null; + parallel_tool_calls?: boolean | null; + previous_response_id?: string | null; + prompt_cache_key?: string; + reasoning?: Reasoning | null; + safety_identifier?: string; + service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; + stream?: boolean | null; + stream_options?: StreamOptions | null; + temperature?: number | null; + text?: ResponseTextConfig; + tool_choice?: ToolChoiceOptions | ToolChoiceFunction; + tools?: Array; + top_p?: number | null; + truncation?: "auto" | "disabled" | null; +}; +type ResponsesOutput = { + id?: string; + created_at?: number; + output_text?: string; + error?: ResponseError | null; + incomplete_details?: ResponseIncompleteDetails | null; + instructions?: string | Array | null; + object?: "response"; + output?: Array; + parallel_tool_calls?: boolean; + temperature?: number | null; + tool_choice?: ToolChoiceOptions | ToolChoiceFunction; + tools?: Array; + top_p?: number | null; + max_output_tokens?: number | null; + previous_response_id?: string | null; + prompt?: ResponsePrompt | null; + reasoning?: Reasoning | null; + safety_identifier?: string; + service_tier?: "auto" | "default" | "flex" | "scale" | "priority" | null; + status?: ResponseStatus; + text?: ResponseTextConfig; + truncation?: "auto" | "disabled" | null; + usage?: ResponseUsage; +}; +type EasyInputMessage = { + content: string | ResponseInputMessageContentList; + role: "user" | "assistant" | "system" | "developer"; + type?: "message"; +}; +type ResponsesFunctionTool = { + name: string; + parameters: { + [key: string]: unknown; + } | null; + strict: boolean | null; + type: "function"; + description?: string | null; +}; +type ResponseIncompleteDetails = { + reason?: "max_output_tokens" | "content_filter"; +}; +type ResponsePrompt = { + id: string; + variables?: { + [key: string]: string | ResponseInputText | ResponseInputImage; + } | null; + version?: string | null; +}; +type Reasoning = { + effort?: ReasoningEffort | null; + generate_summary?: "auto" | "concise" | "detailed" | null; + summary?: "auto" | "concise" | "detailed" | null; +}; +type ResponseContent = ResponseInputText | ResponseInputImage | ResponseOutputText | ResponseOutputRefusal | ResponseContentReasoningText; +type ResponseContentReasoningText = { + text: string; + type: "reasoning_text"; +}; +type ResponseConversationParam = { + id: string; +}; +type ResponseCreatedEvent = { + response: Response; + sequence_number: number; + type: "response.created"; +}; +type ResponseCustomToolCallOutput = { + call_id: string; + output: string | Array; + type: "custom_tool_call_output"; + id?: string; +}; +type ResponseError = { + code: "server_error" | "rate_limit_exceeded" | "invalid_prompt" | "vector_store_timeout" | "invalid_image" | "invalid_image_format" | "invalid_base64_image" | "invalid_image_url" | "image_too_large" | "image_too_small" | "image_parse_error" | "image_content_policy_violation" | "invalid_image_mode" | "image_file_too_large" | "unsupported_image_media_type" | "empty_image_file" | "failed_to_download_image" | "image_file_not_found"; + message: string; +}; +type ResponseErrorEvent = { + code: string | null; + message: string; + param: string | null; + sequence_number: number; + type: "error"; +}; +type ResponseFailedEvent = { + response: Response; + sequence_number: number; + type: "response.failed"; +}; +type ResponseFormatText = { + type: "text"; +}; +type ResponseFormatJSONObject = { + type: "json_object"; +}; +type ResponseFormatTextConfig = ResponseFormatText | ResponseFormatTextJSONSchemaConfig | ResponseFormatJSONObject; +type ResponseFormatTextJSONSchemaConfig = { + name: string; + schema: { + [key: string]: unknown; + }; + type: "json_schema"; + description?: string; + strict?: boolean | null; +}; +type ResponseFunctionCallArgumentsDeltaEvent = { + delta: string; + item_id: string; + output_index: number; + sequence_number: number; + type: "response.function_call_arguments.delta"; +}; +type ResponseFunctionCallArgumentsDoneEvent = { + arguments: string; + item_id: string; + name: string; + output_index: number; + sequence_number: number; + type: "response.function_call_arguments.done"; +}; +type ResponseFunctionCallOutputItem = ResponseInputTextContent | ResponseInputImageContent; +type ResponseFunctionCallOutputItemList = Array; +type ResponseFunctionToolCall = { + arguments: string; + call_id: string; + name: string; + type: "function_call"; + id?: string; + status?: "in_progress" | "completed" | "incomplete"; +}; +interface ResponseFunctionToolCallItem extends ResponseFunctionToolCall { + id: string; +} +type ResponseFunctionToolCallOutputItem = { + id: string; + call_id: string; + output: string | Array; + type: "function_call_output"; + status?: "in_progress" | "completed" | "incomplete"; +}; +type ResponseIncludable = "message.input_image.image_url" | "message.output_text.logprobs"; +type ResponseIncompleteEvent = { + response: Response; + sequence_number: number; + type: "response.incomplete"; +}; +type ResponseInput = Array; +type ResponseInputContent = ResponseInputText | ResponseInputImage; +type ResponseInputImage = { + detail: "low" | "high" | "auto"; + type: "input_image"; + /** + * Base64 encoded image + */ + image_url?: string | null; +}; +type ResponseInputImageContent = { + type: "input_image"; + detail?: "low" | "high" | "auto" | null; + /** + * Base64 encoded image + */ + image_url?: string | null; +}; +type ResponseInputItem = EasyInputMessage | ResponseInputItemMessage | ResponseOutputMessage | ResponseFunctionToolCall | ResponseInputItemFunctionCallOutput | ResponseReasoningItem; +type ResponseInputItemFunctionCallOutput = { + call_id: string; + output: string | ResponseFunctionCallOutputItemList; + type: "function_call_output"; + id?: string | null; + status?: "in_progress" | "completed" | "incomplete" | null; +}; +type ResponseInputItemMessage = { + content: ResponseInputMessageContentList; + role: "user" | "system" | "developer"; + status?: "in_progress" | "completed" | "incomplete"; + type?: "message"; +}; +type ResponseInputMessageContentList = Array; +type ResponseInputMessageItem = { + id: string; + content: ResponseInputMessageContentList; + role: "user" | "system" | "developer"; + status?: "in_progress" | "completed" | "incomplete"; + type?: "message"; +}; +type ResponseInputText = { + text: string; + type: "input_text"; +}; +type ResponseInputTextContent = { + text: string; + type: "input_text"; +}; +type ResponseItem = ResponseInputMessageItem | ResponseOutputMessage | ResponseFunctionToolCallItem | ResponseFunctionToolCallOutputItem; +type ResponseOutputItem = ResponseOutputMessage | ResponseFunctionToolCall | ResponseReasoningItem; +type ResponseOutputItemAddedEvent = { + item: ResponseOutputItem; + output_index: number; + sequence_number: number; + type: "response.output_item.added"; +}; +type ResponseOutputItemDoneEvent = { + item: ResponseOutputItem; + output_index: number; + sequence_number: number; + type: "response.output_item.done"; +}; +type ResponseOutputMessage = { + id: string; + content: Array; + role: "assistant"; + status: "in_progress" | "completed" | "incomplete"; + type: "message"; +}; +type ResponseOutputRefusal = { + refusal: string; + type: "refusal"; +}; +type ResponseOutputText = { + text: string; + type: "output_text"; + logprobs?: Array; +}; +type ResponseReasoningItem = { + id: string; + summary: Array; + type: "reasoning"; + content?: Array; + encrypted_content?: string | null; + status?: "in_progress" | "completed" | "incomplete"; +}; +type ResponseReasoningSummaryItem = { + text: string; + type: "summary_text"; +}; +type ResponseReasoningContentItem = { + text: string; + type: "reasoning_text"; +}; +type ResponseReasoningTextDeltaEvent = { + content_index: number; + delta: string; + item_id: string; + output_index: number; + sequence_number: number; + type: "response.reasoning_text.delta"; +}; +type ResponseReasoningTextDoneEvent = { + content_index: number; + item_id: string; + output_index: number; + sequence_number: number; + text: string; + type: "response.reasoning_text.done"; +}; +type ResponseRefusalDeltaEvent = { + content_index: number; + delta: string; + item_id: string; + output_index: number; + sequence_number: number; + type: "response.refusal.delta"; +}; +type ResponseRefusalDoneEvent = { + content_index: number; + item_id: string; + output_index: number; + refusal: string; + sequence_number: number; + type: "response.refusal.done"; +}; +type ResponseStatus = "completed" | "failed" | "in_progress" | "cancelled" | "queued" | "incomplete"; +type ResponseStreamEvent = ResponseCompletedEvent | ResponseCreatedEvent | ResponseErrorEvent | ResponseFunctionCallArgumentsDeltaEvent | ResponseFunctionCallArgumentsDoneEvent | ResponseFailedEvent | ResponseIncompleteEvent | ResponseOutputItemAddedEvent | ResponseOutputItemDoneEvent | ResponseReasoningTextDeltaEvent | ResponseReasoningTextDoneEvent | ResponseRefusalDeltaEvent | ResponseRefusalDoneEvent | ResponseTextDeltaEvent | ResponseTextDoneEvent; +type ResponseCompletedEvent = { + response: Response; + sequence_number: number; + type: "response.completed"; +}; +type ResponseTextConfig = { + format?: ResponseFormatTextConfig; + verbosity?: "low" | "medium" | "high" | null; +}; +type ResponseTextDeltaEvent = { + content_index: number; + delta: string; + item_id: string; + logprobs: Array; + output_index: number; + sequence_number: number; + type: "response.output_text.delta"; +}; +type ResponseTextDoneEvent = { + content_index: number; + item_id: string; + logprobs: Array; + output_index: number; + sequence_number: number; + text: string; + type: "response.output_text.done"; +}; +type Logprob = { + token: string; + logprob: number; + top_logprobs?: Array; +}; +type TopLogprob = { + token?: string; + logprob?: number; +}; +type ResponseUsage = { + input_tokens: number; + output_tokens: number; + total_tokens: number; +}; +type Tool = ResponsesFunctionTool; +type ToolChoiceFunction = { + name: string; + type: "function"; +}; +type ToolChoiceOptions = "none"; +type ReasoningEffort = "minimal" | "low" | "medium" | "high" | null; +type StreamOptions = { + include_obfuscation?: boolean; +}; +/** Marks keys from T that aren't in U as optional never */ +type Without = { + [P in Exclude]?: never; +}; +/** Either T or U, but not both (mutually exclusive) */ +type XOR = (T & Without) | (U & Without); +type Ai_Cf_Baai_Bge_Base_En_V1_5_Input = { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; +} | { + /** + * Batch of the embeddings requests to run using async-queue + */ + requests: { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; + }[]; +}; +type Ai_Cf_Baai_Bge_Base_En_V1_5_Output = { + shape?: number[]; + /** + * Embeddings of the requested text values + */ + data?: number[][]; + /** + * The pooling method used in the embedding process. + */ + pooling?: "mean" | "cls"; +} | Ai_Cf_Baai_Bge_Base_En_V1_5_AsyncResponse; +interface Ai_Cf_Baai_Bge_Base_En_V1_5_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Baai_Bge_Base_En_V1_5 { + inputs: Ai_Cf_Baai_Bge_Base_En_V1_5_Input; + postProcessedOutputs: Ai_Cf_Baai_Bge_Base_En_V1_5_Output; +} +type Ai_Cf_Openai_Whisper_Input = string | { + /** + * An array of integers that represent the audio data constrained to 8-bit unsigned integer values + */ + audio: number[]; +}; +interface Ai_Cf_Openai_Whisper_Output { + /** + * The transcription + */ + text: string; + word_count?: number; + words?: { + word?: string; + /** + * The second this word begins in the recording + */ + start?: number; + /** + * The ending second when the word completes + */ + end?: number; + }[]; + vtt?: string; +} +declare abstract class Base_Ai_Cf_Openai_Whisper { + inputs: Ai_Cf_Openai_Whisper_Input; + postProcessedOutputs: Ai_Cf_Openai_Whisper_Output; +} +type Ai_Cf_Meta_M2M100_1_2B_Input = { + /** + * The text to be translated + */ + text: string; + /** + * The language code of the source text (e.g., 'en' for English). Defaults to 'en' if not specified + */ + source_lang?: string; + /** + * The language code to translate the text into (e.g., 'es' for Spanish) + */ + target_lang: string; +} | { + /** + * Batch of the embeddings requests to run using async-queue + */ + requests: { + /** + * The text to be translated + */ + text: string; + /** + * The language code of the source text (e.g., 'en' for English). Defaults to 'en' if not specified + */ + source_lang?: string; + /** + * The language code to translate the text into (e.g., 'es' for Spanish) + */ + target_lang: string; + }[]; +}; +type Ai_Cf_Meta_M2M100_1_2B_Output = { + /** + * The translated text in the target language + */ + translated_text?: string; +} | Ai_Cf_Meta_M2M100_1_2B_AsyncResponse; +interface Ai_Cf_Meta_M2M100_1_2B_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Meta_M2M100_1_2B { + inputs: Ai_Cf_Meta_M2M100_1_2B_Input; + postProcessedOutputs: Ai_Cf_Meta_M2M100_1_2B_Output; +} +type Ai_Cf_Baai_Bge_Small_En_V1_5_Input = { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; +} | { + /** + * Batch of the embeddings requests to run using async-queue + */ + requests: { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; + }[]; +}; +type Ai_Cf_Baai_Bge_Small_En_V1_5_Output = { + shape?: number[]; + /** + * Embeddings of the requested text values + */ + data?: number[][]; + /** + * The pooling method used in the embedding process. + */ + pooling?: "mean" | "cls"; +} | Ai_Cf_Baai_Bge_Small_En_V1_5_AsyncResponse; +interface Ai_Cf_Baai_Bge_Small_En_V1_5_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Baai_Bge_Small_En_V1_5 { + inputs: Ai_Cf_Baai_Bge_Small_En_V1_5_Input; + postProcessedOutputs: Ai_Cf_Baai_Bge_Small_En_V1_5_Output; +} +type Ai_Cf_Baai_Bge_Large_En_V1_5_Input = { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; +} | { + /** + * Batch of the embeddings requests to run using async-queue + */ + requests: { + text: string | string[]; + /** + * The pooling method used in the embedding process. `cls` pooling will generate more accurate embeddings on larger inputs - however, embeddings created with cls pooling are not compatible with embeddings generated with mean pooling. The default pooling method is `mean` in order for this to not be a breaking change, but we highly suggest using the new `cls` pooling for better accuracy. + */ + pooling?: "mean" | "cls"; + }[]; +}; +type Ai_Cf_Baai_Bge_Large_En_V1_5_Output = { + shape?: number[]; + /** + * Embeddings of the requested text values + */ + data?: number[][]; + /** + * The pooling method used in the embedding process. + */ + pooling?: "mean" | "cls"; +} | Ai_Cf_Baai_Bge_Large_En_V1_5_AsyncResponse; +interface Ai_Cf_Baai_Bge_Large_En_V1_5_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Baai_Bge_Large_En_V1_5 { + inputs: Ai_Cf_Baai_Bge_Large_En_V1_5_Input; + postProcessedOutputs: Ai_Cf_Baai_Bge_Large_En_V1_5_Output; +} +type Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Input = string | { + /** + * The input text prompt for the model to generate a response. + */ + prompt?: string; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * Controls the creativity of the AI's responses by adjusting how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; + image: number[] | (string & NonNullable); + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; +}; +interface Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Output { + description?: string; +} +declare abstract class Base_Ai_Cf_Unum_Uform_Gen2_Qwen_500M { + inputs: Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Input; + postProcessedOutputs: Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Output; +} +type Ai_Cf_Openai_Whisper_Tiny_En_Input = string | { + /** + * An array of integers that represent the audio data constrained to 8-bit unsigned integer values + */ + audio: number[]; +}; +interface Ai_Cf_Openai_Whisper_Tiny_En_Output { + /** + * The transcription + */ + text: string; + word_count?: number; + words?: { + word?: string; + /** + * The second this word begins in the recording + */ + start?: number; + /** + * The ending second when the word completes + */ + end?: number; + }[]; + vtt?: string; +} +declare abstract class Base_Ai_Cf_Openai_Whisper_Tiny_En { + inputs: Ai_Cf_Openai_Whisper_Tiny_En_Input; + postProcessedOutputs: Ai_Cf_Openai_Whisper_Tiny_En_Output; +} +interface Ai_Cf_Openai_Whisper_Large_V3_Turbo_Input { + audio: string | { + body?: object; + contentType?: string; + }; + /** + * Supported tasks are 'translate' or 'transcribe'. + */ + task?: string; + /** + * The language of the audio being transcribed or translated. + */ + language?: string; + /** + * Preprocess the audio with a voice activity detection model. + */ + vad_filter?: boolean; + /** + * A text prompt to help provide context to the model on the contents of the audio. + */ + initial_prompt?: string; + /** + * The prefix appended to the beginning of the output of the transcription and can guide the transcription result. + */ + prefix?: string; + /** + * The number of beams to use in beam search decoding. Higher values may improve accuracy at the cost of speed. + */ + beam_size?: number; + /** + * Whether to condition on previous text during transcription. Setting to false may help prevent hallucination loops. + */ + condition_on_previous_text?: boolean; + /** + * Threshold for detecting no-speech segments. Segments with no-speech probability above this value are skipped. + */ + no_speech_threshold?: number; + /** + * Threshold for filtering out segments with high compression ratio, which often indicate repetitive or hallucinated text. + */ + compression_ratio_threshold?: number; + /** + * Threshold for filtering out segments with low average log probability, indicating low confidence. + */ + log_prob_threshold?: number; + /** + * Optional threshold (in seconds) to skip silent periods that may cause hallucinations. + */ + hallucination_silence_threshold?: number; +} +interface Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output { + transcription_info?: { + /** + * The language of the audio being transcribed or translated. + */ + language?: string; + /** + * The confidence level or probability of the detected language being accurate, represented as a decimal between 0 and 1. + */ + language_probability?: number; + /** + * The total duration of the original audio file, in seconds. + */ + duration?: number; + /** + * The duration of the audio after applying Voice Activity Detection (VAD) to remove silent or irrelevant sections, in seconds. + */ + duration_after_vad?: number; + }; + /** + * The complete transcription of the audio. + */ + text: string; + /** + * The total number of words in the transcription. + */ + word_count?: number; + segments?: { + /** + * The starting time of the segment within the audio, in seconds. + */ + start?: number; + /** + * The ending time of the segment within the audio, in seconds. + */ + end?: number; + /** + * The transcription of the segment. + */ + text?: string; + /** + * The temperature used in the decoding process, controlling randomness in predictions. Lower values result in more deterministic outputs. + */ + temperature?: number; + /** + * The average log probability of the predictions for the words in this segment, indicating overall confidence. + */ + avg_logprob?: number; + /** + * The compression ratio of the input to the output, measuring how much the text was compressed during the transcription process. + */ + compression_ratio?: number; + /** + * The probability that the segment contains no speech, represented as a decimal between 0 and 1. + */ + no_speech_prob?: number; + words?: { + /** + * The individual word transcribed from the audio. + */ + word?: string; + /** + * The starting time of the word within the audio, in seconds. + */ + start?: number; + /** + * The ending time of the word within the audio, in seconds. + */ + end?: number; + }[]; + }[]; + /** + * The transcription in WebVTT format, which includes timing and text information for use in subtitles. + */ + vtt?: string; +} +declare abstract class Base_Ai_Cf_Openai_Whisper_Large_V3_Turbo { + inputs: Ai_Cf_Openai_Whisper_Large_V3_Turbo_Input; + postProcessedOutputs: Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output; +} +type Ai_Cf_Baai_Bge_M3_Input = Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts | Ai_Cf_Baai_Bge_M3_Input_Embedding | { + /** + * Batch of the embeddings requests to run using async-queue + */ + requests: (Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts_1 | Ai_Cf_Baai_Bge_M3_Input_Embedding_1)[]; +}; +interface Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts { + /** + * A query you wish to perform against the provided contexts. If no query is provided the model with respond with embeddings for contexts + */ + query?: string; + /** + * List of provided contexts. Note that the index in this array is important, as the response will refer to it. + */ + contexts: { + /** + * One of the provided context content + */ + text?: string; + }[]; + /** + * When provided with too long context should the model error out or truncate the context to fit? + */ + truncate_inputs?: boolean; +} +interface Ai_Cf_Baai_Bge_M3_Input_Embedding { + text: string | string[]; + /** + * When provided with too long context should the model error out or truncate the context to fit? + */ + truncate_inputs?: boolean; +} +interface Ai_Cf_Baai_Bge_M3_Input_QueryAnd_Contexts_1 { + /** + * A query you wish to perform against the provided contexts. If no query is provided the model with respond with embeddings for contexts + */ + query?: string; + /** + * List of provided contexts. Note that the index in this array is important, as the response will refer to it. + */ + contexts: { + /** + * One of the provided context content + */ + text?: string; + }[]; + /** + * When provided with too long context should the model error out or truncate the context to fit? + */ + truncate_inputs?: boolean; +} +interface Ai_Cf_Baai_Bge_M3_Input_Embedding_1 { + text: string | string[]; + /** + * When provided with too long context should the model error out or truncate the context to fit? + */ + truncate_inputs?: boolean; +} +type Ai_Cf_Baai_Bge_M3_Output = Ai_Cf_Baai_Bge_M3_Output_Query | Ai_Cf_Baai_Bge_M3_Output_EmbeddingFor_Contexts | Ai_Cf_Baai_Bge_M3_Output_Embedding | Ai_Cf_Baai_Bge_M3_AsyncResponse; +interface Ai_Cf_Baai_Bge_M3_Output_Query { + response?: { + /** + * Index of the context in the request + */ + id?: number; + /** + * Score of the context under the index. + */ + score?: number; + }[]; +} +interface Ai_Cf_Baai_Bge_M3_Output_EmbeddingFor_Contexts { + response?: number[][]; + shape?: number[]; + /** + * The pooling method used in the embedding process. + */ + pooling?: "mean" | "cls"; +} +interface Ai_Cf_Baai_Bge_M3_Output_Embedding { + shape?: number[]; + /** + * Embeddings of the requested text values + */ + data?: number[][]; + /** + * The pooling method used in the embedding process. + */ + pooling?: "mean" | "cls"; +} +interface Ai_Cf_Baai_Bge_M3_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Baai_Bge_M3 { + inputs: Ai_Cf_Baai_Bge_M3_Input; + postProcessedOutputs: Ai_Cf_Baai_Bge_M3_Output; +} +interface Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Input { + /** + * A text description of the image you want to generate. + */ + prompt: string; + /** + * The number of diffusion steps; higher values can improve quality but take longer. + */ + steps?: number; +} +interface Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Output { + /** + * The generated image in Base64 format. + */ + image?: string; +} +declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_1_Schnell { + inputs: Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Input; + postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Output; +} +type Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Input = Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Prompt | Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Messages; +interface Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + image?: number[] | (string & NonNullable); + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; +} +interface Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + /** + * The tool call id. If you don't know what to put here you can fall back to 000000001 + */ + tool_call_id?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[] | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }; + }[]; + image?: number[] | (string & NonNullable); + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + /** + * If true, the response will be streamed back incrementally. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Controls the creativity of the AI's responses by adjusting how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +type Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Output = { + /** + * The generated text response from the model + */ + response?: string; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +}; +declare abstract class Base_Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct { + inputs: Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Input; + postProcessedOutputs: Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Output; +} +type Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Input = Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Prompt | Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Messages | Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Async_Batch; +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + content: string | { + /** + * Type of the content (text) + */ + type?: string; + /** + * Text content + */ + text?: string; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_1; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_1 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Async_Batch { + requests?: { + /** + * User-supplied reference. This field will be present in the response as well it can be used to reference the request and response. It's NOT validated to be unique. + */ + external_reference?: string; + /** + * Prompt for the text generation model + */ + prompt?: string; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; + response_format?: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_2; + }[]; +} +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_JSON_Mode_2 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +type Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +} | string | Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_AsyncResponse; +interface Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast { + inputs: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Input; + postProcessedOutputs: Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast_Output; +} +interface Ai_Cf_Meta_Llama_Guard_3_8B_Input { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender must alternate between 'user' and 'assistant'. + */ + role: "user" | "assistant"; + /** + * The content of the message as a string. + */ + content: string; + }[]; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Dictate the output format of the generated response. + */ + response_format?: { + /** + * Set to json_object to process and output generated text as JSON. + */ + type?: string; + }; +} +interface Ai_Cf_Meta_Llama_Guard_3_8B_Output { + response?: string | { + /** + * Whether the conversation is safe or not. + */ + safe?: boolean; + /** + * A list of what hazard categories predicted for the conversation, if the conversation is deemed unsafe. + */ + categories?: string[]; + }; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; +} +declare abstract class Base_Ai_Cf_Meta_Llama_Guard_3_8B { + inputs: Ai_Cf_Meta_Llama_Guard_3_8B_Input; + postProcessedOutputs: Ai_Cf_Meta_Llama_Guard_3_8B_Output; +} +interface Ai_Cf_Baai_Bge_Reranker_Base_Input { + /** + * A query you wish to perform against the provided contexts. + */ + /** + * Number of returned results starting with the best score. + */ + top_k?: number; + /** + * List of provided contexts. Note that the index in this array is important, as the response will refer to it. + */ + contexts: { + /** + * One of the provided context content + */ + text?: string; + }[]; +} +interface Ai_Cf_Baai_Bge_Reranker_Base_Output { + response?: { + /** + * Index of the context in the request + */ + id?: number; + /** + * Score of the context under the index. + */ + score?: number; + }[]; +} +declare abstract class Base_Ai_Cf_Baai_Bge_Reranker_Base { + inputs: Ai_Cf_Baai_Bge_Reranker_Base_Input; + postProcessedOutputs: Ai_Cf_Baai_Bge_Reranker_Base_Output; +} +type Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Input = Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Prompt | Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Messages; +interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + /** + * The content of the message as a string. + */ + content: string; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode_1; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_JSON_Mode_1 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +type Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +}; +declare abstract class Base_Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct { + inputs: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Input; + postProcessedOutputs: Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct_Output; +} +type Ai_Cf_Qwen_Qwq_32B_Input = Ai_Cf_Qwen_Qwq_32B_Prompt | Ai_Cf_Qwen_Qwq_32B_Messages; +interface Ai_Cf_Qwen_Qwq_32B_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * JSON schema that should be fulfilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwq_32B_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + /** + * The tool call id. If you don't know what to put here you can fall back to 000000001 + */ + tool_call_id?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[] | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +type Ai_Cf_Qwen_Qwq_32B_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +}; +declare abstract class Base_Ai_Cf_Qwen_Qwq_32B { + inputs: Ai_Cf_Qwen_Qwq_32B_Input; + postProcessedOutputs: Ai_Cf_Qwen_Qwq_32B_Output; +} +type Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Input = Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Prompt | Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Messages; +interface Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * JSON schema that should be fulfilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + /** + * The tool call id. Must be supplied for tool calls for Mistral-3. If you don't know what to put here you can fall back to 000000001 + */ + tool_call_id?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[] | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +type Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +}; +declare abstract class Base_Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct { + inputs: Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Input; + postProcessedOutputs: Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Output; +} +type Ai_Cf_Google_Gemma_3_12B_It_Input = Ai_Cf_Google_Gemma_3_12B_It_Prompt | Ai_Cf_Google_Gemma_3_12B_It_Messages; +interface Ai_Cf_Google_Gemma_3_12B_It_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Google_Gemma_3_12B_It_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +type Ai_Cf_Google_Gemma_3_12B_It_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + /** + * The name of the tool to be called + */ + name?: string; + }[]; +}; +declare abstract class Base_Ai_Cf_Google_Gemma_3_12B_It { + inputs: Ai_Cf_Google_Gemma_3_12B_It_Input; + postProcessedOutputs: Ai_Cf_Google_Gemma_3_12B_It_Output; +} +type Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Input = Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt | Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages | Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Async_Batch; +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * JSON schema that should be fulfilled for the response. + */ + guided_json?: object; + response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + /** + * The tool call id. If you don't know what to put here you can fall back to 000000001 + */ + tool_call_id?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[] | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Async_Batch { + requests: (Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt_Inner | Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages_Inner)[]; +} +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Prompt_Inner { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * JSON schema that should be fulfilled for the response. + */ + guided_json?: object; + response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages_Inner { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role?: string; + /** + * The tool call id. If you don't know what to put here you can fall back to 000000001 + */ + tool_call_id?: string; + content?: string | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }[] | { + /** + * Type of the content provided + */ + type?: string; + text?: string; + image_url?: { + /** + * image uri with data (e.g. data:image/jpeg;base64,/9j/...). HTTP URL will not be accepted + */ + url?: string; + }; + }; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode; + /** + * JSON schema that should be fufilled for the response. + */ + guided_json?: object; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +type Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Output = { + /** + * The generated text response from the model + */ + response: string; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The tool call id. + */ + id?: string; + /** + * Specifies the type of tool (e.g., 'function'). + */ + type?: string; + /** + * Details of the function tool. + */ + function?: { + /** + * The name of the tool to be called + */ + name?: string; + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object; + }; + }[]; +}; +declare abstract class Base_Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct { + inputs: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Input; + postProcessedOutputs: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Output; +} +type Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Input = Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Async_Batch; +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + content: string | { + /** + * Type of the content (text) + */ + type?: string; + /** + * Text content + */ + text?: string; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_1; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_1 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Async_Batch { + requests: (Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt_1 | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages_1)[]; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Prompt_1 { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_2; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_2 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Messages_1 { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + content: string | { + /** + * Type of the content (text) + */ + type?: string; + /** + * Text content + */ + text?: string; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_3; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_JSON_Mode_3 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +type Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Output = Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Chat_Completion_Response | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Text_Completion_Response | string | Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_AsyncResponse; +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Chat_Completion_Response { + /** + * Unique identifier for the completion + */ + id?: string; + /** + * Object type identifier + */ + object?: "chat.completion"; + /** + * Unix timestamp of when the completion was created + */ + created?: number; + /** + * Model used for the completion + */ + model?: string; + /** + * List of completion choices + */ + choices?: { + /** + * Index of the choice in the list + */ + index?: number; + /** + * The message generated by the model + */ + message?: { + /** + * Role of the message author + */ + role: string; + /** + * The content of the message + */ + content: string; + /** + * Internal reasoning content (if available) + */ + reasoning_content?: string; + /** + * Tool calls made by the assistant + */ + tool_calls?: { + /** + * Unique identifier for the tool call + */ + id: string; + /** + * Type of tool call + */ + type: "function"; + function: { + /** + * Name of the function to call + */ + name: string; + /** + * JSON string of arguments for the function + */ + arguments: string; + }; + }[]; + }; + /** + * Reason why the model stopped generating + */ + finish_reason?: string; + /** + * Stop reason (may be null) + */ + stop_reason?: string | null; + /** + * Log probabilities (if requested) + */ + logprobs?: {} | null; + }[]; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * Log probabilities for the prompt (if requested) + */ + prompt_logprobs?: {} | null; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Text_Completion_Response { + /** + * Unique identifier for the completion + */ + id?: string; + /** + * Object type identifier + */ + object?: "text_completion"; + /** + * Unix timestamp of when the completion was created + */ + created?: number; + /** + * Model used for the completion + */ + model?: string; + /** + * List of completion choices + */ + choices?: { + /** + * Index of the choice in the list + */ + index: number; + /** + * The generated text completion + */ + text: string; + /** + * Reason why the model stopped generating + */ + finish_reason: string; + /** + * Stop reason (may be null) + */ + stop_reason?: string | null; + /** + * Log probabilities (if requested) + */ + logprobs?: {} | null; + /** + * Log probabilities for the prompt (if requested) + */ + prompt_logprobs?: {} | null; + }[]; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; +} +interface Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8 { + inputs: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Input; + postProcessedOutputs: Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8_Output; +} +interface Ai_Cf_Deepgram_Nova_3_Input { + audio: { + body: object; + contentType: string; + }; + /** + * Sets how the model will interpret strings submitted to the custom_topic param. When strict, the model will only return topics submitted using the custom_topic param. When extended, the model will return its own detected topics in addition to those submitted using the custom_topic param. + */ + custom_topic_mode?: "extended" | "strict"; + /** + * Custom topics you want the model to detect within your input audio or text if present Submit up to 100 + */ + custom_topic?: string; + /** + * Sets how the model will interpret intents submitted to the custom_intent param. When strict, the model will only return intents submitted using the custom_intent param. When extended, the model will return its own detected intents in addition those submitted using the custom_intents param + */ + custom_intent_mode?: "extended" | "strict"; + /** + * Custom intents you want the model to detect within your input audio if present + */ + custom_intent?: string; + /** + * Identifies and extracts key entities from content in submitted audio + */ + detect_entities?: boolean; + /** + * Identifies the dominant language spoken in submitted audio + */ + detect_language?: boolean; + /** + * Recognize speaker changes. Each word in the transcript will be assigned a speaker number starting at 0 + */ + diarize?: boolean; + /** + * Identify and extract key entities from content in submitted audio + */ + dictation?: boolean; + /** + * Specify the expected encoding of your submitted audio + */ + encoding?: "linear16" | "flac" | "mulaw" | "amr-nb" | "amr-wb" | "opus" | "speex" | "g729"; + /** + * Arbitrary key-value pairs that are attached to the API response for usage in downstream processing + */ + extra?: string; + /** + * Filler Words can help transcribe interruptions in your audio, like 'uh' and 'um' + */ + filler_words?: boolean; + /** + * Key term prompting can boost or suppress specialized terminology and brands. + */ + keyterm?: string; + /** + * Keywords can boost or suppress specialized terminology and brands. + */ + keywords?: string; + /** + * The BCP-47 language tag that hints at the primary spoken language. Depending on the Model and API endpoint you choose only certain languages are available. + */ + language?: string; + /** + * Spoken measurements will be converted to their corresponding abbreviations. + */ + measurements?: boolean; + /** + * Opts out requests from the Deepgram Model Improvement Program. Refer to our Docs for pricing impacts before setting this to true. https://dpgr.am/deepgram-mip. + */ + mip_opt_out?: boolean; + /** + * Mode of operation for the model representing broad area of topic that will be talked about in the supplied audio + */ + mode?: "general" | "medical" | "finance"; + /** + * Transcribe each audio channel independently. + */ + multichannel?: boolean; + /** + * Numerals converts numbers from written format to numerical format. + */ + numerals?: boolean; + /** + * Splits audio into paragraphs to improve transcript readability. + */ + paragraphs?: boolean; + /** + * Profanity Filter looks for recognized profanity and converts it to the nearest recognized non-profane word or removes it from the transcript completely. + */ + profanity_filter?: boolean; + /** + * Add punctuation and capitalization to the transcript. + */ + punctuate?: boolean; + /** + * Redaction removes sensitive information from your transcripts. + */ + redact?: string; + /** + * Search for terms or phrases in submitted audio and replaces them. + */ + replace?: string; + /** + * Search for terms or phrases in submitted audio. + */ + search?: string; + /** + * Recognizes the sentiment throughout a transcript or text. + */ + sentiment?: boolean; + /** + * Apply formatting to transcript output. When set to true, additional formatting will be applied to transcripts to improve readability. + */ + smart_format?: boolean; + /** + * Detect topics throughout a transcript or text. + */ + topics?: boolean; + /** + * Segments speech into meaningful semantic units. + */ + utterances?: boolean; + /** + * Seconds to wait before detecting a pause between words in submitted audio. + */ + utt_split?: number; + /** + * The number of channels in the submitted audio + */ + channels?: number; + /** + * Specifies whether the streaming endpoint should provide ongoing transcription updates as more audio is received. When set to true, the endpoint sends continuous updates, meaning transcription results may evolve over time. Note: Supported only for webosockets. + */ + interim_results?: boolean; + /** + * Indicates how long model will wait to detect whether a speaker has finished speaking or pauses for a significant period of time. When set to a value, the streaming endpoint immediately finalizes the transcription for the processed time range and returns the transcript with a speech_final parameter set to true. Can also be set to false to disable endpointing + */ + endpointing?: string; + /** + * Indicates that speech has started. You'll begin receiving Speech Started messages upon speech starting. Note: Supported only for webosockets. + */ + vad_events?: boolean; + /** + * Indicates how long model will wait to send an UtteranceEnd message after a word has been transcribed. Use with interim_results. Note: Supported only for webosockets. + */ + utterance_end_ms?: boolean; +} +interface Ai_Cf_Deepgram_Nova_3_Output { + results?: { + channels?: { + alternatives?: { + confidence?: number; + transcript?: string; + words?: { + confidence?: number; + end?: number; + start?: number; + word?: string; + }[]; + }[]; + }[]; + summary?: { + result?: string; + short?: string; + }; + sentiments?: { + segments?: { + text?: string; + start_word?: number; + end_word?: number; + sentiment?: string; + sentiment_score?: number; + }[]; + average?: { + sentiment?: string; + sentiment_score?: number; + }; + }; + }; +} +declare abstract class Base_Ai_Cf_Deepgram_Nova_3 { + inputs: Ai_Cf_Deepgram_Nova_3_Input; + postProcessedOutputs: Ai_Cf_Deepgram_Nova_3_Output; +} +interface Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Input { + queries?: string | string[]; + /** + * Optional instruction for the task + */ + instruction?: string; + documents?: string | string[]; + text?: string | string[]; +} +interface Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Output { + data?: number[][]; + shape?: number[]; +} +declare abstract class Base_Ai_Cf_Qwen_Qwen3_Embedding_0_6B { + inputs: Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Input; + postProcessedOutputs: Ai_Cf_Qwen_Qwen3_Embedding_0_6B_Output; +} +type Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Input = { + /** + * readable stream with audio data and content-type specified for that data + */ + audio: { + body: object; + contentType: string; + }; + /** + * type of data PCM data that's sent to the inference server as raw array + */ + dtype?: "uint8" | "float32" | "float64"; +} | { + /** + * base64 encoded audio data + */ + audio: string; + /** + * type of data PCM data that's sent to the inference server as raw array + */ + dtype?: "uint8" | "float32" | "float64"; +}; +interface Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Output { + /** + * if true, end-of-turn was detected + */ + is_complete?: boolean; + /** + * probability of the end-of-turn detection + */ + probability?: number; +} +declare abstract class Base_Ai_Cf_Pipecat_Ai_Smart_Turn_V2 { + inputs: Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Input; + postProcessedOutputs: Ai_Cf_Pipecat_Ai_Smart_Turn_V2_Output; +} +declare abstract class Base_Ai_Cf_Openai_Gpt_Oss_120B { + inputs: XOR; + postProcessedOutputs: XOR; +} +declare abstract class Base_Ai_Cf_Openai_Gpt_Oss_20B { + inputs: XOR; + postProcessedOutputs: XOR; +} +interface Ai_Cf_Leonardo_Phoenix_1_0_Input { + /** + * A text description of the image you want to generate. + */ + prompt: string; + /** + * Controls how closely the generated image should adhere to the prompt; higher values make the image more aligned with the prompt + */ + guidance?: number; + /** + * Random seed for reproducibility of the image generation + */ + seed?: number; + /** + * The height of the generated image in pixels + */ + height?: number; + /** + * The width of the generated image in pixels + */ + width?: number; + /** + * The number of diffusion steps; higher values can improve quality but take longer + */ + num_steps?: number; + /** + * Specify what to exclude from the generated images + */ + negative_prompt?: string; +} +/** + * The generated image in JPEG format + */ +type Ai_Cf_Leonardo_Phoenix_1_0_Output = string; +declare abstract class Base_Ai_Cf_Leonardo_Phoenix_1_0 { + inputs: Ai_Cf_Leonardo_Phoenix_1_0_Input; + postProcessedOutputs: Ai_Cf_Leonardo_Phoenix_1_0_Output; +} +interface Ai_Cf_Leonardo_Lucid_Origin_Input { + /** + * A text description of the image you want to generate. + */ + prompt: string; + /** + * Controls how closely the generated image should adhere to the prompt; higher values make the image more aligned with the prompt + */ + guidance?: number; + /** + * Random seed for reproducibility of the image generation + */ + seed?: number; + /** + * The height of the generated image in pixels + */ + height?: number; + /** + * The width of the generated image in pixels + */ + width?: number; + /** + * The number of diffusion steps; higher values can improve quality but take longer + */ + num_steps?: number; + /** + * The number of diffusion steps; higher values can improve quality but take longer + */ + steps?: number; +} +interface Ai_Cf_Leonardo_Lucid_Origin_Output { + /** + * The generated image in Base64 format. + */ + image?: string; +} +declare abstract class Base_Ai_Cf_Leonardo_Lucid_Origin { + inputs: Ai_Cf_Leonardo_Lucid_Origin_Input; + postProcessedOutputs: Ai_Cf_Leonardo_Lucid_Origin_Output; +} +interface Ai_Cf_Deepgram_Aura_1_Input { + /** + * Speaker used to produce the audio. + */ + speaker?: "angus" | "asteria" | "arcas" | "orion" | "orpheus" | "athena" | "luna" | "zeus" | "perseus" | "helios" | "hera" | "stella"; + /** + * Encoding of the output audio. + */ + encoding?: "linear16" | "flac" | "mulaw" | "alaw" | "mp3" | "opus" | "aac"; + /** + * Container specifies the file format wrapper for the output audio. The available options depend on the encoding type.. + */ + container?: "none" | "wav" | "ogg"; + /** + * The text content to be converted to speech + */ + text: string; + /** + * Sample Rate specifies the sample rate for the output audio. Based on the encoding, different sample rates are supported. For some encodings, the sample rate is not configurable + */ + sample_rate?: number; + /** + * The bitrate of the audio in bits per second. Choose from predefined ranges or specific values based on the encoding type. + */ + bit_rate?: number; +} +/** + * The generated audio in MP3 format + */ +type Ai_Cf_Deepgram_Aura_1_Output = string; +declare abstract class Base_Ai_Cf_Deepgram_Aura_1 { + inputs: Ai_Cf_Deepgram_Aura_1_Input; + postProcessedOutputs: Ai_Cf_Deepgram_Aura_1_Output; +} +interface Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Input { + /** + * Input text to translate. Can be a single string or a list of strings. + */ + text: string | string[]; + /** + * Target langauge to translate to + */ + target_language: "asm_Beng" | "awa_Deva" | "ben_Beng" | "bho_Deva" | "brx_Deva" | "doi_Deva" | "eng_Latn" | "gom_Deva" | "gon_Deva" | "guj_Gujr" | "hin_Deva" | "hne_Deva" | "kan_Knda" | "kas_Arab" | "kas_Deva" | "kha_Latn" | "lus_Latn" | "mag_Deva" | "mai_Deva" | "mal_Mlym" | "mar_Deva" | "mni_Beng" | "mni_Mtei" | "npi_Deva" | "ory_Orya" | "pan_Guru" | "san_Deva" | "sat_Olck" | "snd_Arab" | "snd_Deva" | "tam_Taml" | "tel_Telu" | "urd_Arab" | "unr_Deva"; +} +interface Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Output { + /** + * Translated texts + */ + translations: string[]; +} +declare abstract class Base_Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B { + inputs: Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Input; + postProcessedOutputs: Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Output; +} +type Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Input = Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Async_Batch; +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + content: string | { + /** + * Type of the content (text) + */ + type?: string; + /** + * Text content + */ + text?: string; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_1; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_1 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Async_Batch { + requests: (Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt_1 | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages_1)[]; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Prompt_1 { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string; + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string; + response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_2; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_2 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Messages_1 { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string; + content: string | { + /** + * Type of the content (text) + */ + type?: string; + /** + * Text content + */ + text?: string; + }[]; + }[]; + functions?: { + name: string; + code: string; + }[]; + /** + * A list of tools available for the assistant to use. + */ + tools?: ({ + /** + * The name of the tool. More descriptive the better. + */ + name: string; + /** + * A brief description of what the tool does. + */ + description: string; + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + } | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string; + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string; + /** + * A brief description of what the function does. + */ + description: string; + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string; + /** + * List of required parameter names. + */ + required?: string[]; + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string; + /** + * A description of the expected parameter. + */ + description: string; + }; + }; + }; + }; + })[]; + response_format?: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_3; + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean; + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean; + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number; + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number; + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number; + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number; + /** + * Random seed for reproducibility of the generation. + */ + seed?: number; + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number; + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number; + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_JSON_Mode_3 { + type?: "json_object" | "json_schema"; + json_schema?: unknown; +} +type Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Output = Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Chat_Completion_Response | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Text_Completion_Response | string | Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_AsyncResponse; +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Chat_Completion_Response { + /** + * Unique identifier for the completion + */ + id?: string; + /** + * Object type identifier + */ + object?: "chat.completion"; + /** + * Unix timestamp of when the completion was created + */ + created?: number; + /** + * Model used for the completion + */ + model?: string; + /** + * List of completion choices + */ + choices?: { + /** + * Index of the choice in the list + */ + index?: number; + /** + * The message generated by the model + */ + message?: { + /** + * Role of the message author + */ + role: string; + /** + * The content of the message + */ + content: string; + /** + * Internal reasoning content (if available) + */ + reasoning_content?: string; + /** + * Tool calls made by the assistant + */ + tool_calls?: { + /** + * Unique identifier for the tool call + */ + id: string; + /** + * Type of tool call + */ + type: "function"; + function: { + /** + * Name of the function to call + */ + name: string; + /** + * JSON string of arguments for the function + */ + arguments: string; + }; + }[]; + }; + /** + * Reason why the model stopped generating + */ + finish_reason?: string; + /** + * Stop reason (may be null) + */ + stop_reason?: string | null; + /** + * Log probabilities (if requested) + */ + logprobs?: {} | null; + }[]; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; + /** + * Log probabilities for the prompt (if requested) + */ + prompt_logprobs?: {} | null; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Text_Completion_Response { + /** + * Unique identifier for the completion + */ + id?: string; + /** + * Object type identifier + */ + object?: "text_completion"; + /** + * Unix timestamp of when the completion was created + */ + created?: number; + /** + * Model used for the completion + */ + model?: string; + /** + * List of completion choices + */ + choices?: { + /** + * Index of the choice in the list + */ + index: number; + /** + * The generated text completion + */ + text: string; + /** + * Reason why the model stopped generating + */ + finish_reason: string; + /** + * Stop reason (may be null) + */ + stop_reason?: string | null; + /** + * Log probabilities (if requested) + */ + logprobs?: {} | null; + /** + * Log probabilities for the prompt (if requested) + */ + prompt_logprobs?: {} | null; + }[]; + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number; + /** + * Total number of tokens in output + */ + completion_tokens?: number; + /** + * Total number of input and output tokens + */ + total_tokens?: number; + }; +} +interface Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_AsyncResponse { + /** + * The async request id that can be used to obtain the results. + */ + request_id?: string; +} +declare abstract class Base_Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It { + inputs: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Input; + postProcessedOutputs: Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It_Output; +} +interface Ai_Cf_Pfnet_Plamo_Embedding_1B_Input { + /** + * Input text to embed. Can be a single string or a list of strings. + */ + text: string | string[]; +} +interface Ai_Cf_Pfnet_Plamo_Embedding_1B_Output { + /** + * Embedding vectors, where each vector is a list of floats. + */ + data: number[][]; + /** + * Shape of the embedding data as [number_of_embeddings, embedding_dimension]. + * + * @minItems 2 + * @maxItems 2 + */ + shape: [ + number, + number + ]; +} +declare abstract class Base_Ai_Cf_Pfnet_Plamo_Embedding_1B { + inputs: Ai_Cf_Pfnet_Plamo_Embedding_1B_Input; + postProcessedOutputs: Ai_Cf_Pfnet_Plamo_Embedding_1B_Output; +} +interface Ai_Cf_Deepgram_Flux_Input { + /** + * Encoding of the audio stream. Currently only supports raw signed little-endian 16-bit PCM. + */ + encoding: "linear16"; + /** + * Sample rate of the audio stream in Hz. + */ + sample_rate: string; + /** + * End-of-turn confidence required to fire an eager end-of-turn event. When set, enables EagerEndOfTurn and TurnResumed events. Valid Values 0.3 - 0.9. + */ + eager_eot_threshold?: string; + /** + * End-of-turn confidence required to finish a turn. Valid Values 0.5 - 0.9. + */ + eot_threshold?: string; + /** + * A turn will be finished when this much time has passed after speech, regardless of EOT confidence. + */ + eot_timeout_ms?: string; + /** + * Keyterm prompting can improve recognition of specialized terminology. Pass multiple keyterm query parameters to boost multiple keyterms. + */ + keyterm?: string; + /** + * Opts out requests from the Deepgram Model Improvement Program. Refer to Deepgram Docs for pricing impacts before setting this to true. https://dpgr.am/deepgram-mip + */ + mip_opt_out?: "true" | "false"; + /** + * Label your requests for the purpose of identification during usage reporting + */ + tag?: string; +} +/** + * Output will be returned as websocket messages. + */ +interface Ai_Cf_Deepgram_Flux_Output { + /** + * The unique identifier of the request (uuid) + */ + request_id?: string; + /** + * Starts at 0 and increments for each message the server sends to the client. + */ + sequence_id?: number; + /** + * The type of event being reported. + */ + event?: "Update" | "StartOfTurn" | "EagerEndOfTurn" | "TurnResumed" | "EndOfTurn"; + /** + * The index of the current turn + */ + turn_index?: number; + /** + * Start time in seconds of the audio range that was transcribed + */ + audio_window_start?: number; + /** + * End time in seconds of the audio range that was transcribed + */ + audio_window_end?: number; + /** + * Text that was said over the course of the current turn + */ + transcript?: string; + /** + * The words in the transcript + */ + words?: { + /** + * The individual punctuated, properly-cased word from the transcript + */ + word: string; + /** + * Confidence that this word was transcribed correctly + */ + confidence: number; + }[]; + /** + * Confidence that no more speech is coming in this turn + */ + end_of_turn_confidence?: number; +} +declare abstract class Base_Ai_Cf_Deepgram_Flux { + inputs: Ai_Cf_Deepgram_Flux_Input; + postProcessedOutputs: Ai_Cf_Deepgram_Flux_Output; +} +interface Ai_Cf_Deepgram_Aura_2_En_Input { + /** + * Speaker used to produce the audio. + */ + speaker?: "amalthea" | "andromeda" | "apollo" | "arcas" | "aries" | "asteria" | "athena" | "atlas" | "aurora" | "callista" | "cora" | "cordelia" | "delia" | "draco" | "electra" | "harmonia" | "helena" | "hera" | "hermes" | "hyperion" | "iris" | "janus" | "juno" | "jupiter" | "luna" | "mars" | "minerva" | "neptune" | "odysseus" | "ophelia" | "orion" | "orpheus" | "pandora" | "phoebe" | "pluto" | "saturn" | "thalia" | "theia" | "vesta" | "zeus"; + /** + * Encoding of the output audio. + */ + encoding?: "linear16" | "flac" | "mulaw" | "alaw" | "mp3" | "opus" | "aac"; + /** + * Container specifies the file format wrapper for the output audio. The available options depend on the encoding type.. + */ + container?: "none" | "wav" | "ogg"; + /** + * The text content to be converted to speech + */ + text: string; + /** + * Sample Rate specifies the sample rate for the output audio. Based on the encoding, different sample rates are supported. For some encodings, the sample rate is not configurable + */ + sample_rate?: number; + /** + * The bitrate of the audio in bits per second. Choose from predefined ranges or specific values based on the encoding type. + */ + bit_rate?: number; +} +/** + * The generated audio in MP3 format + */ +type Ai_Cf_Deepgram_Aura_2_En_Output = string; +declare abstract class Base_Ai_Cf_Deepgram_Aura_2_En { + inputs: Ai_Cf_Deepgram_Aura_2_En_Input; + postProcessedOutputs: Ai_Cf_Deepgram_Aura_2_En_Output; +} +interface Ai_Cf_Deepgram_Aura_2_Es_Input { + /** + * Speaker used to produce the audio. + */ + speaker?: "sirio" | "nestor" | "carina" | "celeste" | "alvaro" | "diana" | "aquila" | "selena" | "estrella" | "javier"; + /** + * Encoding of the output audio. + */ + encoding?: "linear16" | "flac" | "mulaw" | "alaw" | "mp3" | "opus" | "aac"; + /** + * Container specifies the file format wrapper for the output audio. The available options depend on the encoding type.. + */ + container?: "none" | "wav" | "ogg"; + /** + * The text content to be converted to speech + */ + text: string; + /** + * Sample Rate specifies the sample rate for the output audio. Based on the encoding, different sample rates are supported. For some encodings, the sample rate is not configurable + */ + sample_rate?: number; + /** + * The bitrate of the audio in bits per second. Choose from predefined ranges or specific values based on the encoding type. + */ + bit_rate?: number; +} +/** + * The generated audio in MP3 format + */ +type Ai_Cf_Deepgram_Aura_2_Es_Output = string; +declare abstract class Base_Ai_Cf_Deepgram_Aura_2_Es { + inputs: Ai_Cf_Deepgram_Aura_2_Es_Input; + postProcessedOutputs: Ai_Cf_Deepgram_Aura_2_Es_Output; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Input { + multipart: { + body?: object; + contentType?: string; + }; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Output { + /** + * Generated image as Base64 string. + */ + image?: string; +} +declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_2_Dev { + inputs: Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Input; + postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_2_Dev_Output; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Input { + multipart: { + body?: object; + contentType?: string; + }; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Output { + /** + * Generated image as Base64 string. + */ + image?: string; +} +declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B { + inputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Input; + postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B_Output; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Input { + multipart: { + body?: object; + contentType?: string; + }; +} +interface Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Output { + /** + * Generated image as Base64 string. + */ + image?: string; +} +declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B { + inputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Input; + postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B_Output; +} +declare abstract class Base_Ai_Cf_Zai_Org_Glm_4_7_Flash { + inputs: ChatCompletionsInput; + postProcessedOutputs: ChatCompletionsOutput; +} +declare abstract class Base_Ai_Cf_Moonshotai_Kimi_K2_5 { + inputs: ChatCompletionsInput; + postProcessedOutputs: ChatCompletionsOutput; +} +declare abstract class Base_Ai_Cf_Moonshotai_Kimi_K2_6 { + inputs: ChatCompletionsInput; + postProcessedOutputs: ChatCompletionsOutput; +} +declare abstract class Base_Ai_Cf_Nvidia_Nemotron_3_120B_A12B { + inputs: ChatCompletionsInput; + postProcessedOutputs: ChatCompletionsOutput; +} +declare abstract class Base_Ai_Cf_Google_Gemma_4_26B_A4B_IT { + inputs: ChatCompletionsInput; + postProcessedOutputs: ChatCompletionsOutput; +} +interface AiModels { + "@cf/huggingface/distilbert-sst-2-int8": BaseAiTextClassification; + "@cf/stabilityai/stable-diffusion-xl-base-1.0": BaseAiTextToImage; + "@cf/runwayml/stable-diffusion-v1-5-inpainting": BaseAiTextToImage; + "@cf/runwayml/stable-diffusion-v1-5-img2img": BaseAiTextToImage; + "@cf/lykon/dreamshaper-8-lcm": BaseAiTextToImage; + "@cf/bytedance/stable-diffusion-xl-lightning": BaseAiTextToImage; + "@cf/myshell-ai/melotts": BaseAiTextToSpeech; + "@cf/google/embeddinggemma-300m": BaseAiTextEmbeddings; + "@cf/microsoft/resnet-50": BaseAiImageClassification; + "@cf/meta/llama-2-7b-chat-int8": BaseAiTextGeneration; + "@cf/mistral/mistral-7b-instruct-v0.1": BaseAiTextGeneration; + "@cf/meta/llama-2-7b-chat-fp16": BaseAiTextGeneration; + "@hf/thebloke/llama-2-13b-chat-awq": BaseAiTextGeneration; + "@hf/thebloke/mistral-7b-instruct-v0.1-awq": BaseAiTextGeneration; + "@hf/thebloke/zephyr-7b-beta-awq": BaseAiTextGeneration; + "@hf/thebloke/openhermes-2.5-mistral-7b-awq": BaseAiTextGeneration; + "@hf/thebloke/neural-chat-7b-v3-1-awq": BaseAiTextGeneration; + "@hf/thebloke/deepseek-coder-6.7b-base-awq": BaseAiTextGeneration; + "@hf/thebloke/deepseek-coder-6.7b-instruct-awq": BaseAiTextGeneration; + "@cf/deepseek-ai/deepseek-math-7b-instruct": BaseAiTextGeneration; + "@cf/defog/sqlcoder-7b-2": BaseAiTextGeneration; + "@cf/openchat/openchat-3.5-0106": BaseAiTextGeneration; + "@cf/tiiuae/falcon-7b-instruct": BaseAiTextGeneration; + "@cf/thebloke/discolm-german-7b-v1-awq": BaseAiTextGeneration; + "@cf/qwen/qwen1.5-0.5b-chat": BaseAiTextGeneration; + "@cf/qwen/qwen1.5-7b-chat-awq": BaseAiTextGeneration; + "@cf/qwen/qwen1.5-14b-chat-awq": BaseAiTextGeneration; + "@cf/tinyllama/tinyllama-1.1b-chat-v1.0": BaseAiTextGeneration; + "@cf/microsoft/phi-2": BaseAiTextGeneration; + "@cf/qwen/qwen1.5-1.8b-chat": BaseAiTextGeneration; + "@cf/mistral/mistral-7b-instruct-v0.2-lora": BaseAiTextGeneration; + "@hf/nousresearch/hermes-2-pro-mistral-7b": BaseAiTextGeneration; + "@hf/nexusflow/starling-lm-7b-beta": BaseAiTextGeneration; + "@hf/google/gemma-7b-it": BaseAiTextGeneration; + "@cf/meta-llama/llama-2-7b-chat-hf-lora": BaseAiTextGeneration; + "@cf/google/gemma-2b-it-lora": BaseAiTextGeneration; + "@cf/google/gemma-7b-it-lora": BaseAiTextGeneration; + "@hf/mistral/mistral-7b-instruct-v0.2": BaseAiTextGeneration; + "@cf/meta/llama-3-8b-instruct": BaseAiTextGeneration; + "@cf/fblgit/una-cybertron-7b-v2-bf16": BaseAiTextGeneration; + "@cf/meta/llama-3-8b-instruct-awq": BaseAiTextGeneration; + "@cf/meta/llama-3.1-8b-instruct-fp8": BaseAiTextGeneration; + "@cf/meta/llama-3.1-8b-instruct-awq": BaseAiTextGeneration; + "@cf/meta/llama-3.2-3b-instruct": BaseAiTextGeneration; + "@cf/meta/llama-3.2-1b-instruct": BaseAiTextGeneration; + "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b": BaseAiTextGeneration; + "@cf/ibm-granite/granite-4.0-h-micro": BaseAiTextGeneration; + "@cf/facebook/bart-large-cnn": BaseAiSummarization; + "@cf/llava-hf/llava-1.5-7b-hf": BaseAiImageToText; + "@cf/baai/bge-base-en-v1.5": Base_Ai_Cf_Baai_Bge_Base_En_V1_5; + "@cf/openai/whisper": Base_Ai_Cf_Openai_Whisper; + "@cf/meta/m2m100-1.2b": Base_Ai_Cf_Meta_M2M100_1_2B; + "@cf/baai/bge-small-en-v1.5": Base_Ai_Cf_Baai_Bge_Small_En_V1_5; + "@cf/baai/bge-large-en-v1.5": Base_Ai_Cf_Baai_Bge_Large_En_V1_5; + "@cf/unum/uform-gen2-qwen-500m": Base_Ai_Cf_Unum_Uform_Gen2_Qwen_500M; + "@cf/openai/whisper-tiny-en": Base_Ai_Cf_Openai_Whisper_Tiny_En; + "@cf/openai/whisper-large-v3-turbo": Base_Ai_Cf_Openai_Whisper_Large_V3_Turbo; + "@cf/baai/bge-m3": Base_Ai_Cf_Baai_Bge_M3; + "@cf/black-forest-labs/flux-1-schnell": Base_Ai_Cf_Black_Forest_Labs_Flux_1_Schnell; + "@cf/meta/llama-3.2-11b-vision-instruct": Base_Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct; + "@cf/meta/llama-3.3-70b-instruct-fp8-fast": Base_Ai_Cf_Meta_Llama_3_3_70B_Instruct_Fp8_Fast; + "@cf/meta/llama-guard-3-8b": Base_Ai_Cf_Meta_Llama_Guard_3_8B; + "@cf/baai/bge-reranker-base": Base_Ai_Cf_Baai_Bge_Reranker_Base; + "@cf/qwen/qwen2.5-coder-32b-instruct": Base_Ai_Cf_Qwen_Qwen2_5_Coder_32B_Instruct; + "@cf/qwen/qwq-32b": Base_Ai_Cf_Qwen_Qwq_32B; + "@cf/mistralai/mistral-small-3.1-24b-instruct": Base_Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct; + "@cf/google/gemma-3-12b-it": Base_Ai_Cf_Google_Gemma_3_12B_It; + "@cf/meta/llama-4-scout-17b-16e-instruct": Base_Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct; + "@cf/qwen/qwen3-30b-a3b-fp8": Base_Ai_Cf_Qwen_Qwen3_30B_A3B_Fp8; + "@cf/deepgram/nova-3": Base_Ai_Cf_Deepgram_Nova_3; + "@cf/qwen/qwen3-embedding-0.6b": Base_Ai_Cf_Qwen_Qwen3_Embedding_0_6B; + "@cf/pipecat-ai/smart-turn-v2": Base_Ai_Cf_Pipecat_Ai_Smart_Turn_V2; + "@cf/openai/gpt-oss-120b": Base_Ai_Cf_Openai_Gpt_Oss_120B; + "@cf/openai/gpt-oss-20b": Base_Ai_Cf_Openai_Gpt_Oss_20B; + "@cf/leonardo/phoenix-1.0": Base_Ai_Cf_Leonardo_Phoenix_1_0; + "@cf/leonardo/lucid-origin": Base_Ai_Cf_Leonardo_Lucid_Origin; + "@cf/deepgram/aura-1": Base_Ai_Cf_Deepgram_Aura_1; + "@cf/ai4bharat/indictrans2-en-indic-1B": Base_Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B; + "@cf/aisingapore/gemma-sea-lion-v4-27b-it": Base_Ai_Cf_Aisingapore_Gemma_Sea_Lion_V4_27B_It; + "@cf/pfnet/plamo-embedding-1b": Base_Ai_Cf_Pfnet_Plamo_Embedding_1B; + "@cf/deepgram/flux": Base_Ai_Cf_Deepgram_Flux; + "@cf/deepgram/aura-2-en": Base_Ai_Cf_Deepgram_Aura_2_En; + "@cf/deepgram/aura-2-es": Base_Ai_Cf_Deepgram_Aura_2_Es; + "@cf/black-forest-labs/flux-2-dev": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Dev; + "@cf/black-forest-labs/flux-2-klein-4b": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_4B; + "@cf/black-forest-labs/flux-2-klein-9b": Base_Ai_Cf_Black_Forest_Labs_Flux_2_Klein_9B; + "@cf/zai-org/glm-4.7-flash": Base_Ai_Cf_Zai_Org_Glm_4_7_Flash; + "@cf/moonshotai/kimi-k2.5": Base_Ai_Cf_Moonshotai_Kimi_K2_5; + "@cf/moonshotai/kimi-k2.6": Base_Ai_Cf_Moonshotai_Kimi_K2_6; + "@cf/nvidia/nemotron-3-120b-a12b": Base_Ai_Cf_Nvidia_Nemotron_3_120B_A12B; + "@cf/google/gemma-4-26b-a4b-it": Base_Ai_Cf_Google_Gemma_4_26B_A4B_IT; +} +type AiOptions = { + /** + * Send requests as an asynchronous batch job, only works for supported models + * https://developers.cloudflare.com/workers-ai/features/batch-api + */ + queueRequest?: boolean; + /** + * Establish websocket connections, only works for supported models + */ + websocket?: boolean; + /** + * Tag your requests to group and view them in Cloudflare dashboard. + * + * Rules: + * Tags must only contain letters, numbers, and the symbols: : - . / @ + * Each tag can have maximum 50 characters. + * Maximum 5 tags are allowed each request. + * Duplicate tags will removed. + */ + tags?: string[]; + gateway?: GatewayOptions; + returnRawResponse?: boolean; + prefix?: string; + extraHeaders?: object; + signal?: AbortSignal; +}; +type AiModelsSearchParams = { + author?: string; + hide_experimental?: boolean; + page?: number; + per_page?: number; + search?: string; + source?: number; + task?: string; +}; +type AiModelsSearchObject = { + id: string; + source: number; + name: string; + description: string; + task: { + id: string; + name: string; + description: string; + }; + tags: string[]; + properties: { + property_id: string; + value: string; + }[]; +}; +type ChatCompletionsBase = ChatCompletionsMessagesInput; +type ChatCompletionsInput = ChatCompletionsMessagesInput; +interface InferenceUpstreamError extends Error { +} +interface AiInternalError extends Error { +} +type AiModelListType = Record; +type AiAsyncBatchResponse = { + request_id: string; +}; +declare abstract class Ai { + aiGatewayLogId: string | null; + gateway(gatewayId: string): AiGateway; + /** + * @deprecated Use the standalone `ai_search_namespaces` or `ai_search` Workers bindings instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + aiSearch(): AiSearchNamespace; + /** + * @deprecated AutoRAG has been replaced by AI Search. + * Use the standalone `ai_search_namespaces` or `ai_search` Workers bindings instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + * + * @param autoragId Instance ID + */ + autorag(autoragId: string): AutoRAG; + // Batch request + run(model: Name, inputs: { + requests: AiModelList[Name]['inputs'][]; + }, options: AiOptions & { + queueRequest: true; + }): Promise; + // Raw response + run(model: Name, inputs: AiModelList[Name]['inputs'], options: AiOptions & { + returnRawResponse: true; + }): Promise; + // WebSocket + run(model: Name, inputs: AiModelList[Name]['inputs'], options: AiOptions & { + websocket: true; + }): Promise; + // Streaming + run(model: Name, inputs: AiModelList[Name]['inputs'] & { + stream: true; + }, options?: AiOptions): Promise; + // Normal (default) - known model + run(model: Name, inputs: AiModelList[Name]['inputs'], options?: AiOptions): Promise; + // Unknown model (fallback). + // + // The `Exclude<..., keyof AiModelList>` constraint forces TypeScript to + // route any model name that is a literal key of `AiModelList` to one of + // the known-model overloads above (so input/output mismatches surface as + // type errors rather than silently falling back to `Record`). + // Names that aren't in `AiModelList` — e.g. third-party gateway models + // like `"google/nano-banana"` — still hit this overload. + run(model: Model extends keyof AiModelList ? never : Model, inputs: Record, options?: AiOptions): Promise>; + models(params?: AiModelsSearchParams): Promise; + toMarkdown(): ToMarkdownService; + toMarkdown(files: MarkdownDocument[], options?: ConversionRequestOptions): Promise; + toMarkdown(files: MarkdownDocument, options?: ConversionRequestOptions): Promise; +} +type GatewayRetries = { + maxAttempts?: 1 | 2 | 3 | 4 | 5; + retryDelayMs?: number; + backoff?: 'constant' | 'linear' | 'exponential'; +}; +type GatewayOptions = { + id: string; + cacheKey?: string; + cacheTtl?: number; + skipCache?: boolean; + metadata?: Record; + collectLog?: boolean; + eventId?: string; + requestTimeoutMs?: number; + retries?: GatewayRetries; +}; +type UniversalGatewayOptions = Exclude & { + /** + ** @deprecated + */ + id?: string; +}; +type AiGatewayPatchLog = { + score?: number | null; + feedback?: -1 | 1 | null; + metadata?: Record | null; +}; +type AiGatewayLog = { + id: string; + provider: string; + model: string; + model_type?: string; + path: string; + duration: number; + request_type?: string; + request_content_type?: string; + status_code: number; + response_content_type?: string; + success: boolean; + cached: boolean; + tokens_in?: number; + tokens_out?: number; + metadata?: Record; + step?: number; + cost?: number; + custom_cost?: boolean; + request_size: number; + request_head?: string; + request_head_complete: boolean; + response_size: number; + response_head?: string; + response_head_complete: boolean; + created_at: Date; +}; +type AIGatewayProviders = 'workers-ai' | 'anthropic' | 'aws-bedrock' | 'azure-openai' | 'google-vertex-ai' | 'huggingface' | 'openai' | 'perplexity-ai' | 'replicate' | 'groq' | 'cohere' | 'google-ai-studio' | 'mistral' | 'grok' | 'openrouter' | 'deepseek' | 'cerebras' | 'cartesia' | 'elevenlabs' | 'adobe-firefly'; +type AIGatewayHeaders = { + 'cf-aig-metadata': Record | string; + 'cf-aig-custom-cost': { + per_token_in?: number; + per_token_out?: number; + } | { + total_cost?: number; + } | string; + 'cf-aig-cache-ttl': number | string; + 'cf-aig-skip-cache': boolean | string; + 'cf-aig-cache-key': string; + 'cf-aig-event-id': string; + 'cf-aig-request-timeout': number | string; + 'cf-aig-max-attempts': number | string; + 'cf-aig-retry-delay': number | string; + 'cf-aig-backoff': string; + 'cf-aig-collect-log': boolean | string; + Authorization: string; + 'Content-Type': string; + [key: string]: string | number | boolean | object; +}; +type AIGatewayUniversalRequest = { + provider: AIGatewayProviders | string; // eslint-disable-line + endpoint: string; + headers: Partial; + query: unknown; +}; +interface AiGatewayInternalError extends Error { +} +interface AiGatewayLogNotFound extends Error { +} +declare abstract class AiGateway { + patchLog(logId: string, data: AiGatewayPatchLog): Promise; + getLog(logId: string): Promise; + run(data: AIGatewayUniversalRequest | AIGatewayUniversalRequest[], options?: { + gateway?: UniversalGatewayOptions; + extraHeaders?: object; + signal?: AbortSignal; + }): Promise; + getUrl(provider?: AIGatewayProviders | string): Promise; // eslint-disable-line +} +// Copyright (c) 2022-2025 Cloudflare, Inc. +// Licensed under the Apache 2.0 license found in the LICENSE file or at: +// https://opensource.org/licenses/Apache-2.0 +/** + * Artifacts — Git-compatible file storage on Cloudflare Workers. + * + * Provides programmatic access to create, manage, and fork repositories, + * and to issue and revoke scoped access tokens. + */ +/** Information about a repository. */ +interface ArtifactsRepoInfo { + /** Unique repository ID. */ + id: string; + /** Repository name. */ + name: string; + /** Repository description, or null if not set. */ + description: string | null; + /** Default branch name (e.g. "main"). */ + defaultBranch: string; + /** ISO 8601 creation timestamp. */ + createdAt: string; + /** ISO 8601 last-updated timestamp. */ + updatedAt: string; + /** ISO 8601 timestamp of the last push, or null if never pushed. */ + lastPushAt: string | null; + /** Fork source (e.g. "github:owner/repo", "artifacts:namespace/repo"), or null if not a fork. */ + source: string | null; + /** Whether the repository is read-only. */ + readOnly: boolean; + /** HTTPS git remote URL. */ + remote: string; +} +/** Result of creating a repository — includes the initial access token. */ +interface ArtifactsCreateRepoResult { + /** Unique repository ID. */ + id: string; + /** Repository name. */ + name: string; + /** Repository description, or null if not set. */ + description: string | null; + /** Default branch name. */ + defaultBranch: string; + /** HTTPS git remote URL. */ + remote: string; + /** Plaintext access token (only returned at creation time). */ + token: string; + /** ISO 8601 token expiry timestamp. */ + tokenExpiresAt: string; +} +/** Paginated list of repositories. */ +interface ArtifactsRepoListResult { + /** Repositories in this page (without the `remote` field). */ + repos: Omit[]; + /** Total number of repositories in the namespace. */ + total: number; + /** Cursor for the next page, if there are more results. */ + cursor?: string; +} +/** Result of creating an access token. */ +interface ArtifactsCreateTokenResult { + /** Unique token ID. */ + id: string; + /** Plaintext token (only returned at creation time). */ + plaintext: string; + /** Token scope: "read" or "write". */ + scope: 'read' | 'write'; + /** ISO 8601 token expiry timestamp. */ + expiresAt: string; +} +/** Token metadata (no plaintext). */ +interface ArtifactsTokenInfo { + /** Unique token ID. */ + id: string; + /** Token scope: "read" or "write". */ + scope: 'read' | 'write'; + /** Token state: "active", "expired", or "revoked". */ + state: 'active' | 'expired' | 'revoked'; + /** ISO 8601 creation timestamp. */ + createdAt: string; + /** ISO 8601 expiry timestamp. */ + expiresAt: string; +} +/** Paginated list of tokens for a repository. */ +interface ArtifactsTokenListResult { + /** Tokens in this page. */ + tokens: ArtifactsTokenInfo[]; + /** Total number of tokens for the repository. */ + total: number; +} +/** + * Handle for a single repository. Returned by Artifacts.get(). + * + * Methods may throw `ArtifactsError` with code `INTERNAL_ERROR` if an unexpected service error occurs. + */ +interface ArtifactsRepo extends ArtifactsRepoInfo { + /** + * Create an access token for this repo. + * @param scope Token scope: "write" (default) or "read". + * @param ttl Time-to-live in seconds (default 86400, min 60, max 31536000). + * @throws {ArtifactsError} with code `INVALID_TTL` if ttl is out of range. + */ + createToken(scope?: 'write' | 'read', ttl?: number): Promise; + /** List tokens for this repo (metadata only, no plaintext). */ + listTokens(): Promise; + /** + * Revoke a token by plaintext or ID. + * @param tokenOrId Plaintext token or token ID. + * @returns true if revoked, false if not found. + * @throws {ArtifactsError} with code `INVALID_INPUT` if tokenOrId is empty. + */ + revokeToken(tokenOrId: string): Promise; + // ── Fork ── + /** + * Fork this repo to a new repo. + * @param name Target repository name. + * @param opts Optional: description, readOnly flag, defaultBranchOnly (default true). + * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid. + * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the target repo already exists. + * @throws {ArtifactsError} with code `FORK_IN_PROGRESS` if a fork is already running. + */ + fork(name: string, opts?: { + description?: string; + readOnly?: boolean; + defaultBranchOnly?: boolean; + }): Promise; +} +// ── Error types ────────────────────────────────────────────────────────────── +/** + * Error codes returned by Artifacts binding operations. + * + * Each code maps to a numeric code available on `ArtifactsError.numericCode`. + */ +type ArtifactsErrorCode = 'ALREADY_EXISTS' | 'NOT_FOUND' | 'IMPORT_IN_PROGRESS' | 'FORK_IN_PROGRESS' | 'INVALID_INPUT' | 'INVALID_REPO_NAME' | 'INVALID_TTL' | 'INVALID_URL' | 'REMOTE_AUTH_REQUIRED' | 'UPSTREAM_UNAVAILABLE' | 'MEMORY_LIMIT' | 'INTERNAL_ERROR'; +/** + * Error thrown by Artifacts binding operations. + * + * Uses a string `.code` discriminator following the Cloudflare platform + * convention (StreamError, ImagesError, etc.). The `.numericCode` matches + * the REST API `errors[].code` values. + */ +interface ArtifactsError extends Error { + readonly name: 'ArtifactsError'; + /** String error code for programmatic matching. */ + readonly code: ArtifactsErrorCode; + /** Numeric error code matching the REST API. */ + readonly numericCode: number; +} +// ── Binding ────────────────────────────────────────────────────────────────── +/** + * Artifacts binding — namespace-level operations. + * + * Methods may throw `ArtifactsError` with code `INTERNAL_ERROR` if an unexpected service error occurs. + */ +interface Artifacts { + /** + * Create a new repository with an initial access token. + * @param name Repository name (alphanumeric, dots, hyphens, underscores). + * @param opts Optional: readOnly flag, description, default branch name. + * @returns Repo metadata with initial token. + * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid. + * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the repo already exists. + */ + create(name: string, opts?: { + readOnly?: boolean; + description?: string; + setDefaultBranch?: string; + }): Promise; + /** + * Get a handle to an existing repository. + * @param name Repository name. + * @returns Repo handle. + * @throws {ArtifactsError} with code `NOT_FOUND` if the repo does not exist. + * @throws {ArtifactsError} with code `IMPORT_IN_PROGRESS` if the repo is still importing. + * @throws {ArtifactsError} with code `FORK_IN_PROGRESS` if the repo is still forking. + */ + get(name: string): Promise; + /** + * Import a repository from an external git remote. + * @param params Source URL and optional branch/depth, plus target name and options. + * @returns Repo metadata with initial token. + * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if the target name is invalid. + * @throws {ArtifactsError} with code `INVALID_INPUT` if the source URL is not valid HTTPS. + * @throws {ArtifactsError} with code `INVALID_URL` if the source URL does not point to a git repository. + * @throws {ArtifactsError} with code `REMOTE_AUTH_REQUIRED` if the remote requires authentication. + * @throws {ArtifactsError} with code `NOT_FOUND` if the remote repository does not exist. + * @throws {ArtifactsError} with code `UPSTREAM_UNAVAILABLE` if the remote cannot be reached. + * @throws {ArtifactsError} with code `MEMORY_LIMIT` if the import exceeds service memory limits. + * @throws {ArtifactsError} with code `ALREADY_EXISTS` if the target repo already exists. + */ + import(params: { + source: { + url: string; + branch?: string; + depth?: number; + }; + target: { + name: string; + opts?: { + description?: string; + readOnly?: boolean; + }; + }; + }): Promise; + /** + * List repositories with cursor-based pagination. + * @param opts Optional: limit (1–200, default 50), cursor for next page. + */ + list(opts?: { + limit?: number; + cursor?: string; + }): Promise; + /** + * Delete a repository and all associated tokens. + * @param name Repository name. + * @returns true if deleted, false if not found. + * @throws {ArtifactsError} with code `INVALID_REPO_NAME` if name is invalid. + */ + delete(name: string): Promise; +} +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +interface AutoRAGInternalError extends Error { +} +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +interface AutoRAGNotFoundError extends Error { +} +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +interface AutoRAGUnauthorizedError extends Error { +} +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +interface AutoRAGNameNotSetError extends Error { +} +type ComparisonFilter = { + key: string; + type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte'; + value: string | number | boolean; +}; +type CompoundFilter = { + type: 'and' | 'or'; + filters: ComparisonFilter[]; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagSearchRequest = { + query: string; + filters?: CompoundFilter | ComparisonFilter; + max_num_results?: number; + ranking_options?: { + ranker?: string; + score_threshold?: number; + }; + reranking?: { + enabled?: boolean; + model?: string; + }; + rewrite_query?: boolean; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagAiSearchRequest = AutoRagSearchRequest & { + stream?: boolean; + system_prompt?: string; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagAiSearchRequestStreaming = Omit & { + stream: true; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagSearchResponse = { + object: 'vector_store.search_results.page'; + search_query: string; + data: { + file_id: string; + filename: string; + score: number; + attributes: Record; + content: { + type: 'text'; + text: string; + }[]; + }[]; + has_more: boolean; + next_page: string | null; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagListResponse = { + id: string; + enable: boolean; + type: string; + source: string; + vectorize_name: string; + paused: boolean; + status: string; +}[]; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +type AutoRagAiSearchResponse = AutoRagSearchResponse & { + response: string; +}; +/** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ +declare abstract class AutoRAG { + /** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + list(): Promise; + /** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + search(params: AutoRagSearchRequest): Promise; + /** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + aiSearch(params: AutoRagAiSearchRequestStreaming): Promise; + /** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + aiSearch(params: AutoRagAiSearchRequest): Promise; + /** + * @deprecated Use the standalone AI Search Workers binding instead. + * See https://developers.cloudflare.com/ai-search/usage/workers-binding/ + */ + aiSearch(params: AutoRagAiSearchRequest): Promise; +} +type BrowserRunLifecycleEvent = 'load' | 'domcontentloaded' | 'networkidle0' | 'networkidle2'; +type BrowserRunResourceType = 'document' | 'stylesheet' | 'image' | 'media' | 'font' | 'script' | 'texttrack' | 'xhr' | 'fetch' | 'prefetch' | 'eventsource' | 'websocket' | 'manifest' | 'signedexchange' | 'ping' | 'cspviolationreport' | 'preflight' | 'other'; +/** Options fields shared by all quick actions. */ +interface BrowserRunBaseOptions { + /** Adds ` + +`; +} diff --git a/packages/pmtiles-server/src/dataTablesBackend.ts b/packages/pmtiles-server/src/dataTablesBackend.ts new file mode 100644 index 000000000..18b4b00c8 --- /dev/null +++ b/packages/pmtiles-server/src/dataTablesBackend.ts @@ -0,0 +1,229 @@ +import { WorkerEntrypoint } from "cloudflare:workers"; +import { FileMetaData, parquetMetadataAsync } from "hyparquet"; +import { openR2File } from "./dataTables/engine/asyncBuffer"; +import { executeQuery } from "./dataTables/engine/execute"; +import { planQuery } from "./dataTables/engine/plan"; +import { + canonicalQueryString, + parseQueryParams, + QueryError, +} from "./dataTables/params"; +import { queryUiHtml } from "./dataTables/ui/html"; + +/** Browser cache lifetime for query JSON responses. */ +const BROWSER_MAX_AGE = 86400; +/** CDN/edge cache lifetime. Table paths are versioned per uploadId. */ +const EDGE_MAX_AGE = 604800; + +/** Parsed parquet footers are small and immutable per etag. */ +const MAX_METADATA_ENTRIES = 100; +const metadataCache = new Map(); + +/** + * Cached entrypoint: runs hyparquet aggregations over + * `projects/{slug}/public/{uuid}/dataTables/{uploadId}/data.parquet`. + * + * Auth is enforced by the default gateway before this entrypoint is invoked; + * data-table paths classify as `published` under the parent layer UUID. + */ +export class DataTablesBackend extends WorkerEntrypoint { + async fetch(request: Request): Promise { + return handleDataTableQuery(request, this.env); + } +} + +export async function handleDataTableQuery( + request: Request, + env: Env, +): Promise { + if (request.method !== "GET") { + return new Response("Method Not Allowed", { + status: 405, + headers: { Allow: "GET" }, + }); + } + + const url = new URL(request.url); + const pathname = url.pathname; + if (!pathname.endsWith("/query")) { + return jsonError("Not found. Query endpoint is {tablePath}/query", 404); + } + const tablePath = pathname.replace(/^\/+/, "").slice(0, -"/query".length); + if (!tablePath) { + return jsonError("Missing table path", 404); + } + + const requestStart = Date.now(); + const timer = new Timer(requestStart); + + let query; + try { + query = parseQueryParams(url.searchParams); + } catch (error) { + return errorResponse(error); + } + timer.mark("parse"); + + const accept = request.headers.get("accept") || ""; + const wantsHtml = + query.format === "html" || + (query.format === null && accept.includes("text/html")); + if (wantsHtml) { + return new Response(queryUiHtml(tablePath), { + headers: { + "Content-Type": "text/html; charset=utf-8", + "Access-Control-Allow-Origin": "*", + "Cache-Control": "public, max-age=300", + }, + }); + } + + const canonicalQuery = canonicalQueryString(url.searchParams); + const started = Date.now(); + try { + const source = await openR2File({ + bucket: env.TILES_BUCKET, + key: `${tablePath}/data.parquet`, + // Prefer the R2 binding; fall back to public uploads probe inside openR2File. + dev: false, + }); + timer.mark("open"); + if (!source) { + throw new QueryError( + `No data table found at "${tablePath}/data.parquet".`, + 404, + ); + } + + const metadata = await getParquetMetadata(source); + timer.mark("metadata"); + const planned = Date.now(); + const plan = await planQuery(metadata, query, source.buffer); + timer.mark("plan"); + const result = await executeQuery({ + file: source.buffer, + metadata, + query, + plan, + cacheKey: `${tablePath}@${source.etag}`, + }); + timer.mark("execute"); + const finished = Date.now(); + + const body = { + table: tablePath, + totalRows: plan.totalRows, + rowsScanned: result.rowsScanned, + rowsMatched: result.rowsMatched, + rowGroups: { + total: plan.rowGroupsTotal, + scanned: plan.rowGroupsScanned, + }, + timing: { + metadataMs: planned - started, + executeMs: finished - planned, + totalMs: finished - started, + }, + ...(result.groups !== undefined + ? { groups: result.groups } + : { rows: result.rows }), + }; + timer.mark("serialize"); + + const etag = await makeETag(source.etag, canonicalQuery); + return new Response(JSON.stringify(body), { + headers: { + "Content-Type": "application/json; charset=utf-8", + ETag: etag, + "Server-Timing": timer.header(), + Vary: "Accept", + "Access-Control-Allow-Origin": "*", + "Timing-Allow-Origin": "*", + "Cache-Control": `public, max-age=${BROWSER_MAX_AGE}, s-maxage=${EDGE_MAX_AGE}, immutable`, + }, + }); + } catch (error) { + return errorResponse(error); + } +} + +async function getParquetMetadata(source: { + buffer: Parameters[0]; + etag: string; +}): Promise { + const cached = metadataCache.get(source.etag); + if (cached) { + return cached; + } + const metadata = await parquetMetadataAsync(source.buffer); + if (metadataCache.size >= MAX_METADATA_ENTRIES) { + const oldest = metadataCache.keys().next().value; + if (oldest !== undefined) { + metadataCache.delete(oldest); + } + } + metadataCache.set(source.etag, metadata); + return metadata; +} + +async function makeETag(objectEtag: string, canonicalQuery: string) { + const data = new TextEncoder().encode(`${objectEtag}|${canonicalQuery}`); + const digest = await crypto.subtle.digest("SHA-1", data); + const hex = [...new Uint8Array(digest)] + .map((b) => b.toString(16).padStart(2, "0")) + .join(""); + return `"${hex}"`; +} + +class Timer { + private marks: Array<[string, number]> = []; + private last: number; + + constructor(start: number) { + this.last = start; + } + + mark(name: string): void { + const now = Date.now(); + this.marks.push([name, now - this.last]); + this.last = now; + } + + header(): string { + return this.marks.map(([name, dur]) => `${name};dur=${dur}`).join(", "); + } +} + +function errorResponse(error: unknown): Response { + if (error instanceof QueryError) { + return Response.json( + { error: error.message, ...error.details }, + { + status: error.status, + headers: { + "Access-Control-Allow-Origin": "*", + "Cache-Control": "no-store", + }, + }, + ); + } + console.error( + JSON.stringify({ + message: "data table query failed", + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + }), + ); + return jsonError("Internal server error", 500); +} + +function jsonError(message: string, status: number): Response { + return new Response(JSON.stringify({ error: message }), { + status, + headers: { + "Content-Type": "application/json; charset=utf-8", + "Access-Control-Allow-Origin": "*", + "Cache-Control": "no-store", + }, + }); +} diff --git a/packages/pmtiles-server/src/index.ts b/packages/pmtiles-server/src/index.ts index 386cbdcc1..0b4b6f924 100644 --- a/packages/pmtiles-server/src/index.ts +++ b/packages/pmtiles-server/src/index.ts @@ -1,5 +1,6 @@ import { WorkerEntrypoint } from "cloudflare:workers"; import { corsPreflightResponse } from "./auth/cors"; +import { DataTablesBackend } from "./dataTablesBackend"; import { handleClassifiedRequest } from "./gateway"; import { ObjectBackend } from "./objectBackend"; import { PropertiesBackend } from "./propertiesBackend"; @@ -10,18 +11,22 @@ import { } from "./resource"; import { TilesBackend } from "./tilesBackend"; -export { ObjectBackend, PropertiesBackend, TilesBackend }; +export { DataTablesBackend, ObjectBackend, PropertiesBackend, TilesBackend }; /** * Default entrypoint: authorize (using `?ns=` / `?access_token=`), then route - * to TilesBackend, ObjectBackend, or PropertiesBackend. + * to TilesBackend, ObjectBackend, PropertiesBackend, or DataTablesBackend. */ export default class extends WorkerEntrypoint { async fetch(request: Request): Promise { const url = new URL(request.url); if (request.method === "OPTIONS") { - if (url.pathname === "/properties" || url.pathname === "/properties/") { + if ( + url.pathname === "/properties" || + url.pathname === "/properties/" || + isDataTableQueryPath(url.pathname) + ) { return new Response(null, { status: 204, headers: { @@ -39,6 +44,10 @@ export default class extends WorkerEntrypoint { return this.routeProperties(request); } + if (isDataTableQueryPath(url.pathname)) { + return this.routeDataTableQuery(request); + } + const resource = classifyResource(url.pathname); if (!resource) return new Response("Invalid object path", { status: 400 }); // uploads host is always opaque R2; tiles/overlay hosts prefer PMTiles @@ -62,6 +71,41 @@ export default class extends WorkerEntrypoint { ); } + /** + * Overlay data-table aggregations. Paths classify as `published` under the + * parent layer UUID (`…/public/{uuid}/dataTables/{uploadId}/query`), so the + * existing tiles ACL applies. Query string is part of the cache key. + */ + private async routeDataTableQuery(request: Request): Promise { + const url = new URL(request.url); + const resource = classifyResource(url.pathname); + if (!resource) { + return new Response(JSON.stringify({ error: "Invalid object path" }), { + status: 400, + headers: { + "Content-Type": "application/json; charset=utf-8", + "Access-Control-Allow-Origin": "*", + "Cache-Control": "no-store", + }, + }); + } + return handleClassifiedRequest( + request, + this.env, + { + fetch: (req, options) => + this.ctx.exports.DataTablesBackend.fetch(req, options), + }, + resource, + { + ns: aclNamespaceFromRequest(request), + enforce: resourceAclEnabled(this.env, resource), + includeQueryInCacheKey: true, + waitUntil: (p) => this.ctx.waitUntil(p), + }, + ); + } + private async routeProperties(request: Request): Promise { const url = new URL(request.url); const dataset = url.searchParams.get("dataset"); @@ -103,6 +147,14 @@ export default class extends WorkerEntrypoint { } } +/** True for overlay data-table query endpoints (hyparquet aggregation). */ +function isDataTableQueryPath(pathname: string): boolean { + return ( + pathname.endsWith("/query") && + pathname.includes("/dataTables/") + ); +} + const TILE_EXT = "(?:mvt|pbf|png|webp|jpg|jpeg)"; // Same archive-name charset as TilesBackend TILE_ROUTE. const ARCHIVE_NAME = "[0-9a-zA-Z/!\\-_.*'()]+"; diff --git a/packages/pmtiles-server/test/dataTables/blockReader.test.ts b/packages/pmtiles-server/test/dataTables/blockReader.test.ts new file mode 100644 index 000000000..4d98ebea0 --- /dev/null +++ b/packages/pmtiles-server/test/dataTables/blockReader.test.ts @@ -0,0 +1,107 @@ +import { describe, expect, it } from "vitest"; +import { + ByteBudgetCache, + coalesceRuns, + createBlockReader, +} from "../../src/dataTables/engine/blockReader"; + +function makeFile(byteLength: number): Uint8Array { + const data = new Uint8Array(byteLength); + for (let i = 0; i < byteLength; i++) { + data[i] = i % 251; + } + return data; +} + +interface Harness { + read: (start: number, end?: number) => Promise; + fetches: Array<[number, number]>; + memory: ByteBudgetCache; +} + +function makeReader( + file: Uint8Array, + { blockSize = 16, memoryBudget = 1024 * 1024 } = {} +): Harness { + const fetches: Array<[number, number]> = []; + const memory = new ByteBudgetCache(memoryBudget); + const read = createBlockReader({ + byteLength: file.byteLength, + blockSize, + cacheId: "test@etag", + memory, + fetchRange: async (start, end) => { + fetches.push([start, end]); + return file.slice(start, end).buffer; + }, + }); + return { read, fetches, memory }; +} + +describe("coalesceRuns", () => { + it("groups contiguous indices into runs", () => { + expect(coalesceRuns([0, 1, 2, 5, 6, 9])).toEqual([ + [0, 2], + [5, 6], + [9, 9], + ]); + expect(coalesceRuns([])).toEqual([]); + expect(coalesceRuns([3])).toEqual([[3, 3]]); + }); +}); + +describe("ByteBudgetCache", () => { + it("evicts least recently used entries when over budget", () => { + const cache = new ByteBudgetCache(30); + cache.set("a", new ArrayBuffer(10)); + cache.set("b", new ArrayBuffer(10)); + cache.set("c", new ArrayBuffer(10)); + // Touch "a" so "b" becomes the eviction candidate. + cache.get("a"); + cache.set("d", new ArrayBuffer(10)); + expect(cache.get("a")).toBeDefined(); + expect(cache.get("b")).toBeUndefined(); + expect(cache.get("c")).toBeDefined(); + expect(cache.get("d")).toBeDefined(); + expect(cache.totalBytes).toBe(30); + }); +}); + +describe("createBlockReader", () => { + it("returns exact bytes for unaligned ranges", async () => { + const file = makeFile(100); + const { read } = makeReader(file); + const result = new Uint8Array(await read(5, 37)); + expect(result).toEqual(file.slice(5, 37)); + }); + + it("clamps to end of file and handles empty ranges", async () => { + const file = makeFile(50); + const { read } = makeReader(file); + expect(new Uint8Array(await read(40))).toEqual(file.slice(40)); + expect((await read(10, 10)).byteLength).toBe(0); + expect((await read(60, 70)).byteLength).toBe(0); + }); + + it("fetches contiguous missing blocks in a single ranged request", async () => { + const file = makeFile(100); + const { read, fetches } = makeReader(file); + await read(0, 60); // blocks 0-3 + expect(fetches).toEqual([[0, 64]]); + }); + + it("serves overlapping reads from memory without refetching", async () => { + const file = makeFile(100); + const { read, fetches } = makeReader(file); + await read(0, 40); // blocks 0-2 + await read(10, 30); // fully covered + expect(fetches).toHaveLength(1); + await read(20, 90); // needs blocks 1-5; 3-5 missing + expect(fetches).toEqual([ + [0, 48], + [48, 96], + ]); + const result = new Uint8Array(await read(20, 90)); + expect(result).toEqual(file.slice(20, 90)); + }); +}); diff --git a/packages/pmtiles-server/test/dataTables/calculations.test.ts b/packages/pmtiles-server/test/dataTables/calculations.test.ts new file mode 100644 index 000000000..801294654 --- /dev/null +++ b/packages/pmtiles-server/test/dataTables/calculations.test.ts @@ -0,0 +1,486 @@ +import { beforeAll, describe, expect, it } from "vitest"; +import { + AsyncBuffer, + FileMetaData, + asyncBufferFromFile, + parquetMetadataAsync, +} from "hyparquet"; +import { parseQueryParams } from "../../src/dataTables/params"; +import { planQuery } from "../../src/dataTables/engine/plan"; +import { executeQuery, QueryResult } from "../../src/dataTables/engine/execute"; + +/** + * Aggregation-correctness tests for the fixture PISCO kelp-forest swath survey + * (353,253 rows, 3 row groups). These calculations drive thematic maps and + * time-series charts used in a contentious public policy process, so every + * expected value here was computed *independently* with DuckDB against the same + * data.parquet fixture (see the queries in the comment above each test), not by + * trusting the engine's own output. + * + * The two primary product use cases are exercised heavily: + * 1. Thematic map -> groupBy=site, aggregating `count` across surveys. + * 2. Site time series -> fixed site, groupBy=year, one or more classcodes. + * + * Semantics being pinned (verified to match DuckDB / SQL): + * - sum/mean/min/max/median ignore NULL `count` values. + * - `count` WITH an aggregation column = COUNT(col) (non-null values); + * WITHOUT a column = COUNT(*) (matching rows). + * - A group whose values are all NULL yields sum/mean/min/max = null and + * count(col) = 0, while still reporting rowsMatched > 0. + * - count = 0 is a real value (sum stays 0, not null). + */ + +const FIXTURE = "test/dataTables/fixtures/data.parquet"; + +let file: AsyncBuffer; +let metadata: FileMetaData; + +beforeAll(async () => { + file = await asyncBufferFromFile(FIXTURE); + metadata = await parquetMetadataAsync(file); +}); + +async function run(qs: string): Promise { + const query = parseQueryParams(new URLSearchParams(qs)); + const plan = await planQuery(metadata, query, file); + return executeQuery({ file, metadata, query, plan }); +} + +/** Index aggregated groups by the value of a single groupBy column. */ +function byKey(result: QueryResult, key: string): Record { + return Object.fromEntries(result.groups!.map((g: any) => [g[key], g])); +} + +const MEAN_PRECISION = 6; // digits after the decimal point for toBeCloseTo + +// --------------------------------------------------------------------------- +// Whole-table aggregates (no filters, no groupBy) +// --------------------------------------------------------------------------- +describe("whole-table aggregates", () => { + // DuckDB: sum=11283244, min=0, max=13450, count(count)=353234, avg=31.9426895… + it("sum/min/max/mean/count over the entire count column", async () => { + const r = await run("op=sum,min,max,mean,count&column=count"); + const g = r.groups![0] as any; + expect(g.sum).toBe(11283244); + expect(g.min).toBe(0); + expect(g.max).toBe(13450); + expect(g.count).toBe(353234); // non-null values (19 rows have null count) + expect(g.mean).toBeCloseTo(31.942689548571202, MEAN_PRECISION); + expect(r.rowsScanned).toBe(353253); + expect(r.rowsMatched).toBe(353253); + }); + + // COUNT(*) counts matching rows; the 19 null-count rows are included. + it("count without a column is COUNT(*), including null-count rows", async () => { + const r = await run("op=count"); + expect(r.groups).toEqual([{ count: 353253 }]); + }); +}); + +// --------------------------------------------------------------------------- +// NULL handling edge cases +// --------------------------------------------------------------------------- +describe("null handling", () => { + // STRPURAD has 21,014 rows but 10 have a NULL count. + // DuckDB: count(count)=21004, sum=5403907, min=1, max=13450, + // avg=257.2798990668444, median=41. + it("excludes null values from sum/mean/min/max/median/count(col)", async () => { + const r = await run( + "op=sum,min,max,mean,median,count&column=count&q.classcode=STRPURAD" + ); + const g = r.groups![0] as any; + expect(r.rowsMatched).toBe(21014); // rows matched includes the 10 nulls + expect(g.count).toBe(21004); // but count(col) excludes them + expect(g.sum).toBe(5403907); + expect(g.min).toBe(1); + expect(g.max).toBe(13450); + expect(g.median).toBe(41); + expect(g.mean).toBeCloseTo(257.2798990668444, MEAN_PRECISION); + }); + + // NO_ORG is a single row with count = 0 (a real zero, not null). + // DuckDB: count=1, sum=0, min=0, max=0, avg=0. + it("treats count=0 as a real value, not null", async () => { + const r = await run( + "op=sum,min,max,mean,count&column=count&q.classcode=NO_ORG" + ); + expect(r.rowsMatched).toBe(1); + expect(r.groups).toEqual([{ sum: 0, min: 0, max: 0, mean: 0, count: 1 }]); + }); + + // STRPURAD at CASPAR_3 in 2015: 6 rows, every count NULL. + // Aggregates collapse to null; count(col)=0 while rowsMatched=6. + it("all-null group yields null aggregates but non-zero rowsMatched", async () => { + const r = await run( + "op=sum,min,max,mean,count&column=count" + + "&q.classcode=STRPURAD&q.year=2015&q.site=CASPAR_3" + ); + expect(r.rowsMatched).toBe(6); + expect(r.groups).toEqual([ + { sum: null, min: null, max: null, mean: null, count: 0 }, + ]); + }); + + // Same group, COUNT(*) still sees all 6 rows. + it("COUNT(*) counts rows even when every value is null", async () => { + const r = await run( + "op=count&q.classcode=STRPURAD&q.year=2015&q.site=CASPAR_3" + ); + expect(r.groups).toEqual([{ count: 6 }]); + }); +}); + +// --------------------------------------------------------------------------- +// Thematic map: groupBy=site (PRIMARY use case) +// --------------------------------------------------------------------------- +describe("thematic map (groupBy=site)", () => { + // MEGUND in 2004, per site. DuckDB reports 33 sites; spot-checked below. + it("aggregates count per site for one species/year", async () => { + const r = await run( + "groupBy=site&op=sum,mean,min,max,count&column=count" + + "&q.classcode=MEGUND&q.year=2004" + ); + expect(r.groups).toHaveLength(33); + expect(r.rowsMatched).toBe(126); + const s = byKey(r, "site"); + + expect(s["ROCKY_POINT_N"]).toMatchObject({ + sum: 490, + min: 3, + max: 105, + count: 11, + }); + expect(s["ROCKY_POINT_N"].mean).toBeCloseTo(44.54545454545455, MEAN_PRECISION); + + expect(s["SCI_VALLEY_CEN"]).toMatchObject({ sum: 332, count: 3 }); + expect(s["SCI_VALLEY_CEN"].mean).toBeCloseTo(110.66666666666667, MEAN_PRECISION); + + expect(s["ANACAPA_EAST_ISLE_CEN"]).toMatchObject({ + sum: 51, + min: 3, + max: 37, + mean: 17, + count: 3, + }); + + // Grand total across all site sums must equal the ungrouped sum (2031). + const total = r.groups!.reduce((acc: number, g: any) => acc + g.sum, 0); + expect(total).toBe(2031); + }); + + // STRPURAD in 2015, per site: 115 sites, mixing fully-null, partially-null, + // and single-row groups. DuckDB: rows=1139, count(count)=1129. + it("per-site aggregation with null and single-row groups", async () => { + const r = await run( + "groupBy=site&op=sum,mean,min,max,count&column=count" + + "&q.classcode=STRPURAD&q.year=2015" + ); + expect(r.groups).toHaveLength(115); + expect(r.rowsMatched).toBe(1139); + const s = byKey(r, "site"); + + // Fully-null site: aggregates null, count(col)=0. + expect(s["CASPAR_3"]).toEqual({ + site: "CASPAR_3", + sum: null, + mean: null, + min: null, + max: null, + count: 0, + }); + + // Partially-null site: 6 rows, 2 non-null counts (510, 643). + expect(s["TEN_MILE_2"]).toMatchObject({ + sum: 1153, + min: 510, + max: 643, + mean: 576.5, + count: 2, + }); + + // Single-row site. + expect(s["PYRAMID_POINT_1"]).toEqual({ + site: "PYRAMID_POINT_1", + sum: 1, + mean: 1, + min: 1, + max: 1, + count: 1, + }); + + expect(s["ANACAPA_LIGHTHOUSE_REEF_CEN"]).toMatchObject({ + sum: 6490, + min: 820, + max: 3100, + mean: 1622.5, + count: 4, + }); + + // count(col) totals across sites should equal DuckDB's 1129 non-null values. + const nonNull = r.groups!.reduce((acc: number, g: any) => acc + g.count, 0); + expect(nonNull).toBe(1129); + }); + + // Thematic maps often show the top-N sites. PISGIG across all years, + // ordered by total count desc. DuckDB top 5 verified below. + it("orders sites by summed count and paginates (top-N)", async () => { + const r = await run( + "groupBy=site&op=sum,count&column=count&q.classcode=PISGIG" + + "&orderBy=sum:desc&limit=5" + ); + expect(r.groups!.map((g: any) => [g.site, g.sum])).toEqual([ + ["SMI_HARRIS_PT_RESERVE_E", 1884], + ["HOPKINS_DC", 1882], + ["SCI_HAZARDS_CEN", 1454], + ["SCI_PAINTED_CAVE_E", 1438], + ["SCI_HAZARDS_W", 1245], + ]); + }); + + // Top-N by mean (density) rather than total, for the same MEGUND 2004 slice. + it("orders sites by mean count and paginates", async () => { + const r = await run( + "groupBy=site&op=mean,sum,count&column=count" + + "&q.classcode=MEGUND&q.year=2004&orderBy=mean:desc&limit=3" + ); + const sites = r.groups!.map((g: any) => g.site); + expect(sites).toEqual([ + "SCI_VALLEY_CEN", + "ANACAPA_EAST_ISLE_W", + "ROCKY_POINT_N", + ]); + expect((r.groups![0] as any).mean).toBeCloseTo( + 110.66666666666667, + MEAN_PRECISION + ); + expect((r.groups![1] as any).mean).toBeCloseTo(52.5, MEAN_PRECISION); + }); +}); + +// --------------------------------------------------------------------------- +// Site time series: groupBy=year at a fixed site (SECONDARY use case) +// --------------------------------------------------------------------------- +describe("site time series (groupBy=year)", () => { + // MACPYRAD (giant kelp) at HOPKINS_UC, every survey year. DuckDB: 26 years. + it("single-species yearly series at one site", async () => { + const r = await run( + "groupBy=year&op=sum,mean,min,max,count&column=count" + + "&q.classcode=MACPYRAD&q.site=HOPKINS_UC" + ); + expect(r.groups).toHaveLength(26); + const y = byKey(r, "year"); + + expect(y[1999]).toMatchObject({ sum: 74, min: 1, max: 2, count: 63 }); + expect(y[1999].mean).toBeCloseTo(1.1746031746031746, MEAN_PRECISION); + + // 2004: every observation is 1. + expect(y[2004]).toMatchObject({ sum: 27, min: 1, max: 1, mean: 1, count: 27 }); + + expect(y[2024]).toMatchObject({ sum: 84, min: 1, max: 11, count: 32 }); + expect(y[2024].mean).toBeCloseTo(2.625, MEAN_PRECISION); + }); + + // Multi-species series (in-list): purple urchin adults + recruits at + // HOPKINS_UC, 2018-2020..2022. Both classcodes fold into each year's totals. + it("multi-species yearly series at one site", async () => { + const r = await run( + "groupBy=year&op=sum,mean,min,max,count&column=count" + + "&q.classcode=in.(STRPURAD,STRPURREC)&q.site=HOPKINS_UC" + + "&q.year=gte.2018&q.year=lte.2022" + ); + expect(r.groups).toHaveLength(5); + const y = byKey(r, "year"); + + expect(y[2018]).toMatchObject({ sum: 2642, min: 1, max: 471, count: 33 }); + expect(y[2018].mean).toBeCloseTo(80.06060606060606, MEAN_PRECISION); + + // 2020 urchin bloom: STRPURAD 6260 + STRPURREC 819 = 7079. + expect(y[2020]).toMatchObject({ sum: 7079, min: 1, max: 733, count: 52 }); + expect(y[2020].mean).toBeCloseTo(136.1346153846154, MEAN_PRECISION); + + expect(y[2022]).toMatchObject({ sum: 5150, min: 3, max: 617, count: 39 }); + expect(y[2022].mean).toBeCloseTo(132.05128205128204, MEAN_PRECISION); + }); + + // Time series constrained to a temporal window via ANDed range filters. + it("yearly series within an inclusive temporal range", async () => { + const r = await run( + "groupBy=year&op=sum,mean,count&column=count" + + "&q.classcode=KELKEL&q.year=gte.2010&q.year=lte.2015" + ); + expect(r.groups).toHaveLength(6); + const y = byKey(r, "year"); + expect(y[2010]).toMatchObject({ sum: 1709, count: 248 }); + expect(y[2010].mean).toBeCloseTo(6.891129032258065, MEAN_PRECISION); + expect(y[2011]).toMatchObject({ sum: 1595, count: 290, mean: 5.5 }); + expect(y[2015]).toMatchObject({ sum: 889, count: 172 }); + expect(y[2015].mean).toBeCloseTo(5.1686046511627906, MEAN_PRECISION); + }); +}); + +// --------------------------------------------------------------------------- +// Filter operators +// --------------------------------------------------------------------------- +describe("filter operators", () => { + // in-list on the grouped column itself, aggregating per classcode. + it("in-list species, aggregated per classcode", async () => { + const r = await run( + "groupBy=classcode&op=sum,mean,count&column=count" + + "&q.classcode=in.(PYCHEL,PISGIG,PISBRE)" + ); + const c = byKey(r, "classcode"); + expect(c["PISBRE"]).toMatchObject({ sum: 13504, count: 2328 }); + expect(c["PISBRE"].mean).toBeCloseTo(5.8006872852233675, MEAN_PRECISION); + expect(c["PISGIG"]).toMatchObject({ sum: 73413, count: 10623 }); + expect(c["PISGIG"].mean).toBeCloseTo(6.910759672408924, MEAN_PRECISION); + expect(c["PYCHEL"]).toMatchObject({ sum: 9664, count: 3674 }); + expect(c["PYCHEL"].mean).toBeCloseTo(2.6303756124115405, MEAN_PRECISION); + }); + + // neq excludes both the value and nulls; campus has no nulls here. + it("neq filter", async () => { + const r = await run( + "op=sum,count&column=count&q.classcode=HALRUF&q.campus=neq.UCSC" + ); + expect(r.groups).toEqual([{ sum: 5284, count: 1317 }]); + expect(r.rowsMatched).toBe(1317); + }); + + // Exclusive gt/lt bounds: year>2010 & year<2013 selects 2011-2012 only. + it("exclusive numeric bounds (gt/lt)", async () => { + const r = await run( + "op=sum,mean,count&column=count&q.classcode=CRAGIG&q.year=gt.2010&q.year=lt.2013" + ); + const g = r.groups![0] as any; + expect(g.sum).toBe(1294); + expect(g.count).toBe(496); + expect(g.mean).toBeCloseTo(2.6088709677419355, MEAN_PRECISION); + expect(r.rowsMatched).toBe(496); + }); + + // Inclusive range rollup (no groupBy) over a temporal window. + it("inclusive range rollup (gte/lte)", async () => { + const r = await run( + "op=sum,mean,min,max,count&column=count" + + "&q.classcode=KELKEL&q.year=gte.2010&q.year=lte.2015" + ); + const g = r.groups![0] as any; + expect(g).toMatchObject({ sum: 7357, min: 1, max: 113, count: 1299 }); + expect(g.mean).toBeCloseTo(5.663587374903772, MEAN_PRECISION); + expect(r.rowsMatched).toBe(1299); + }); + + // Filter on a floating-point column (depth). Null depths are excluded by + // the comparison, so rowsMatched already reflects non-null depths. + it("filters on a double column (depth)", async () => { + const r = await run( + "op=sum,mean,count&column=count&q.classcode=PANINT&q.depth=gte.10" + ); + const g = r.groups![0] as any; + expect(g.sum).toBe(2688); + expect(g.count).toBe(1211); + expect(g.mean).toBeCloseTo(2.2196531791907512, MEAN_PRECISION); + expect(r.rowsMatched).toBe(1211); + }); +}); + +// --------------------------------------------------------------------------- +// Median +// --------------------------------------------------------------------------- +describe("median", () => { + // Even value count -> average of the two middle values. SARMUT n=80 -> 4.5. + it("interpolates the median for even value counts", async () => { + const r = await run( + "op=median,count,sum,mean,min,max&column=count&q.classcode=SARMUT" + ); + expect(r.groups![0]).toMatchObject({ + median: 4.5, + count: 80, + sum: 3466, + min: 1, + max: 643, + }); + expect((r.groups![0] as any).mean).toBeCloseTo(43.325, MEAN_PRECISION); + }); + + // ACTBRA n=16 -> median 22.5. + it("median for a small even-count group", async () => { + const r = await run( + "op=median,count,sum,max&column=count&q.classcode=ACTBRA" + ); + expect(r.groups![0]).toMatchObject({ + median: 22.5, + count: 16, + sum: 686, + max: 150, + }); + }); + + // Odd value count -> the middle value. PTETES = [1,1,1] -> 1. + it("median for an odd-count group", async () => { + const r = await run("op=median,count&column=count&q.classcode=PTETES"); + expect(r.groups![0]).toEqual({ median: 1, count: 3 }); + }); + + // Median must ignore null values just like the other aggregates. + // STRPURAD has 10 nulls; DuckDB median over the 21004 non-null values = 41. + it("median ignores null values", async () => { + const r = await run("op=median,count&column=count&q.classcode=STRPURAD"); + expect(r.groups![0]).toEqual({ median: 41, count: 21004 }); + }); +}); + +// --------------------------------------------------------------------------- +// Multi-key grouping and empty results +// --------------------------------------------------------------------------- +describe("multi-key grouping and empty results", () => { + // Group by two dimensions at once. DuckDB: 14 distinct campus/zone pairs; + // top 6 by row count verified below. + it("groups by two columns and orders by count", async () => { + const r = await run( + "groupBy=campus,zone&op=count&orderBy=count:desc&limit=6" + ); + expect( + r.groups!.map((g: any) => [g.campus, g.zone, g.count]) + ).toEqual([ + ["UCSC", "MID", 55133], + ["UCSB", "INNER", 52143], + ["UCSC", "OUTER", 51828], + ["UCSB", "OUTER", 51353], + ["UCSC", "INNER", 42793], + ["UCSB", "MID", 30255], + ]); + }); + + it("counts all distinct campus/zone pairs", async () => { + const r = await run("groupBy=campus,zone&op=count"); + expect(r.groups).toHaveLength(14); + }); + + // A species that does not exist matches nothing: no groups, even for a + // grouped thematic-map query. + it("returns no groups for a non-existent species (groupBy=site)", async () => { + const r = await run( + "groupBy=site&op=sum,mean,count&column=count&q.classcode=NOTREAL" + ); + expect(r.groups).toEqual([]); + expect(r.rowsMatched).toBe(0); + }); + + // Same, without groupBy: a global aggregate over zero matches produces no + // group at all (rather than a row of nulls). + it("returns no groups for a global aggregate with zero matches", async () => { + const r = await run("op=sum,mean,count&column=count&q.classcode=NOTREAL"); + expect(r.groups).toEqual([]); + expect(r.rowsMatched).toBe(0); + }); + + // Impossible temporal window. + it("returns no groups when a range filter excludes everything", async () => { + const r = await run( + "groupBy=year&op=sum,count&column=count&q.classcode=KELKEL&q.year=gt.3000" + ); + expect(r.groups).toEqual([]); + expect(r.rowsMatched).toBe(0); + }); +}); diff --git a/packages/pmtiles-server/test/dataTables/engine.test.ts b/packages/pmtiles-server/test/dataTables/engine.test.ts new file mode 100644 index 000000000..74709ea1d --- /dev/null +++ b/packages/pmtiles-server/test/dataTables/engine.test.ts @@ -0,0 +1,255 @@ +import { beforeAll, describe, expect, it } from "vitest"; +import { + AsyncBuffer, + FileMetaData, + asyncBufferFromFile, + parquetMetadataAsync, +} from "hyparquet"; +import { parseQueryParams, QueryError } from "../../src/dataTables/params"; +import { planQuery } from "../../src/dataTables/engine/plan"; +import { executeQuery } from "../../src/dataTables/engine/execute"; + +/** + * Engine tests run directly in Node against a real data table produced by + * the ingestion pipeline (PISCO kelp forest swath surveys, 353,253 rows, + * 3 row groups). Expected values were computed independently with DuckDB / + * a full scan of the file. + */ + +// vitest runs with cwd at the package root +const FIXTURE = "test/dataTables/fixtures/data.parquet"; + +let file: AsyncBuffer; +let metadata: FileMetaData; + +beforeAll(async () => { + file = await asyncBufferFromFile(FIXTURE); + metadata = await parquetMetadataAsync(file); +}); + +async function run(qs: string, useBloomFilters = true) { + const query = parseQueryParams(new URLSearchParams(qs)); + const plan = await planQuery( + metadata, + query, + useBloomFilters ? file : undefined + ); + const result = await executeQuery({ file, metadata, query, plan }); + return { query, plan, result }; +} + +describe("example query", () => { + it("groupBy=site&op=mean,count&column=count&q.year=2018&q.classcode=PYCHEL", async () => { + const { result } = await run( + "groupBy=site&op=mean,count&column=count&q.year=2018&q.classcode=PYCHEL" + ); + expect(result.groups).toHaveLength(3); + const bySite = Object.fromEntries( + result.groups!.map((g: any) => [g.site, g]) + ); + expect(Object.keys(bySite).sort()).toEqual([ + "LITTLE_IRISH_CEN", + "PESCADERO_DC", + "PINOS", + ]); + for (const g of result.groups!) { + expect(g).toMatchObject({ mean: 1, count: 1 }); + } + expect(result.rowsMatched).toBe(3); + }); +}); + +describe("aggregations", () => { + it("computes global sum/min/max/median/mean without groupBy", async () => { + const { result } = await run( + "op=sum,min,max,median,mean,count&column=count&q.year=2018&q.classcode=PYCHEL" + ); + expect(result.groups).toEqual([ + { sum: 3, min: 1, max: 1, median: 1, mean: 1, count: 3 }, + ]); + }); + + it("count without a column counts matching rows", async () => { + const { result } = await run("op=count&q.campus=HSU"); + expect(result.groups).toEqual([{ count: 11515 }]); + }); + + it("orders groups by aggregate value and paginates", async () => { + const { result } = await run( + "groupBy=campus&op=count&orderBy=count:desc&limit=2" + ); + expect(result.groups!.map((g: any) => g.campus)).toEqual(["UCSC", "UCSB"]); + expect(result.groups![0].count).toBe(149754); + }); +}); + +describe("row group pruning", () => { + // Fixture row group stats: + // rg0: 122,880 rows, year [1999,2020], campus [UCSC,UCSC], site_name_old all null + // rg1: 122,880 rows, year [1999,2024], campus [UCSB,UCSC] + // rg2: 107,493 rows, year [2004,2024], campus [HSU,VRG] + it("prunes row groups via string equality statistics", async () => { + const { plan, result } = await run("op=count&q.campus=HSU"); + expect(plan.rowGroupsTotal).toBe(3); + expect(plan.rowGroupsScanned).toBe(1); + expect(result.rowsScanned).toBe(107493); + expect(result.rowsMatched).toBe(11515); + }); + + it("prunes row groups via numeric comparison statistics", async () => { + const { plan } = await run("op=count&q.year=lte.2003"); + expect(plan.rowGroupsScanned).toBe(2); // rg2 min year is 2004 + }); + + it("prunes all-null row groups for not.null filters", async () => { + const { plan } = await run("op=count&q.site_name_old=not.null"); + expect(plan.rowGroupsScanned).toBe(2); // rg0 is 100% null + }); + + it("scans everything when statistics cannot exclude (blooms disabled)", async () => { + const { plan } = await run("op=count&q.classcode=PYCHEL", false); + expect(plan.rowGroupsScanned).toBe(3); + }); + + // 72 of the fixture's 182 species codes occur in only one row group; + // min/max statistics can't prune them (codes span the alphabet in every + // row group) but bloom filters prove absence. + it("prunes row groups via bloom filters for eq on high-cardinality strings", async () => { + // SOLSPP only occurs in rg0 + const { plan, result } = await run("op=count&q.classcode=SOLSPP"); + expect(plan.rowGroupsScanned).toBe(1); + expect(result.rowsScanned).toBe(122880); + expect(result.groups![0].count).toBeGreaterThan(0); + }); + + it("prunes row groups via bloom filters for in lists", async () => { + // SOLSPP is rg0-only, MACPYRJUV is rg1-only; rg2 can be skipped + const { plan } = await run( + "op=count&q.classcode=in.(SOLSPP,MACPYRJUV)" + ); + expect(plan.rowGroupsScanned).toBe(2); + }); + + it("merges contiguous surviving row groups into one read span", async () => { + const { plan } = await run("op=count&q.year=lte.2003"); + expect(plan.spans).toEqual([{ rowStart: 0, rowEnd: 245760 }]); + }); +}); + +describe("filters", () => { + it("equality against strings", async () => { + const { result } = await run("op=count&q.observer=CHAD BURT"); + expect(result.groups).toEqual([{ count: 100 }]); + }); + + it("in lists", async () => { + const { result } = await run( + "op=count&q.observer=in.(CHAD BURT,LYALL BELLQUIST)" + ); + expect(result.groups).toEqual([{ count: 650 }]); // 100 + 550 + }); + + it("numeric comparisons", async () => { + const { result } = await run("q.count=gte.4000"); + expect(result.rowsMatched).toBe(134); + }); + + it("null tests", async () => { + const { result } = await run("op=count&q.size=is.null"); + expect(result.groups).toEqual([{ count: 217323 }]); + }); + + it("ANDed range filters on the same column", async () => { + const { result } = await run( + "op=count&q.year=gte.2010&q.year=lte.2012" + ); + expect(result.groups).toEqual([{ count: 57005 }]); + }); + + it("only reads the columns a query needs", async () => { + const { plan } = await run( + "groupBy=site&op=mean&column=count&q.year=2018" + ); + expect(plan.neededColumns!.sort()).toEqual(["count", "site", "year"]); + }); +}); + +describe("decoded column cache", () => { + it("returns identical results when served from the cache", async () => { + const query = parseQueryParams( + new URLSearchParams( + "groupBy=site&op=count,mean&column=count&q.classcode=PISBRE&q.year=2017" + ) + ); + const plan = await planQuery(metadata, query, file); + const cold = await executeQuery({ + file, + metadata, + query, + plan, + cacheKey: "test-etag", + }); + const warm = await executeQuery({ + file, + metadata, + query, + plan, + cacheKey: "test-etag", + }); + expect(warm).toEqual(cold); + expect(warm.rowsMatched).toBe(62); + }); +}); + +describe("raw row output", () => { + it("returns filtered rows with limit/offset/orderBy", async () => { + const { result } = await run( + "q.count=gte.4000&orderBy=count:desc&limit=3" + ); + expect(result.rows).toHaveLength(3); + expect(result.rows![0].count).toBe(13450); // max count in the table + const counts = result.rows!.map((r: any) => r.count); + expect([...counts].sort((a, b) => b - a)).toEqual(counts); + }); + + it("serializes values as JSON-safe types (no BigInt)", async () => { + const { result } = await run("limit=1"); + const row = result.rows![0]; + expect(typeof row.year).toBe("number"); + expect(typeof row.site).toBe("string"); + expect(() => JSON.stringify(row)).not.toThrow(); + }); +}); + +describe("validation", () => { + it("rejects unknown columns, listing valid ones", async () => { + await expect(run("q.bogus=1")).rejects.toThrow(QueryError); + try { + await run("q.bogus=1"); + } catch (e: any) { + expect(e.details.validColumns.map((c: any) => c.name)).toContain("site"); + } + }); + + it("rejects comparison operators on string columns", async () => { + await expect(run("q.site=gte.A")).rejects.toThrow( + /only supported for numeric/ + ); + }); + + it("rejects non-numeric values for numeric columns", async () => { + await expect(run("q.year=abc")).rejects.toThrow(/Invalid numeric value/); + }); + + it("rejects numeric aggregations of string columns", async () => { + await expect( + run("groupBy=site&op=mean&column=observer") + ).rejects.toThrow(/require a numeric column/); + }); + + it("rejects orderBy keys missing from the output", async () => { + await expect( + run("groupBy=site&op=count&orderBy=depth") + ).rejects.toThrow(/orderBy/); + }); +}); diff --git a/packages/pmtiles-server/test/dataTables/fixtures/data.parquet b/packages/pmtiles-server/test/dataTables/fixtures/data.parquet new file mode 100644 index 0000000000000000000000000000000000000000..32353861d9301f6c64dedb9fa2bdba9814364c6b GIT binary patch literal 1086796 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�q{74u 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∋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%0AA5bWfI@vW2~0Hs)S zsj!m$^zuBWr6#BM(kY+8{2Rcvb0>^op@_TfLpj*K!3&hV4;$0&XhDf~2)qIMTorAK z_&3ppvXE3GjV2{5RQRNTtuvR2?^d+Mq4Js#|&iFW>Bf6;$xv>-Z>fMRzVHc+8pI`<^m(QbzCgG2rsDdYa|6*`i@Vc|tX-<~G zUH_p*M6~->qJCxb(ZiyTI8`c+`^NF*5ZkAm9Hcg#E}e(sb8E30>Pz%ze*mk+iPZ(( zGw7uynlw6xtsF1%Re{-y7X2HbwP1PIK!54n3RsY;8u?1`wl97^pz)Eb7l7u)7t*OB z>^b{V?4MvREwga zl2{_^Y92J^u!i8Wir`t3>Dh>sZ_}+-NcIPYnS^CM@*y<=NL?4T7A-iD)$olj3O0O5{1eM&~%-++F)Jd%k3WypI-}BJd-Lg z{PtqD(Gj96G--M@{k&Wc6w&io@ZM=VoU!3nSC;6=5{X@!{uLlE^s!7i-~x>0^+B*9F^x6MLs$js?Bg35_G;SNcfVGW8WR( z%HgLpx7D4IVM)fIj}FN!JeC2-EhcH<;SAD2w*?THzJhduzBm((&KPS5qZ|w0c)m0B zgV7X2D3;zXV&aKeaNX&PvPkL+aSJ%W%sFl$h(OL#Me8Q0&g5vTcu<)?g#T@rswevf zk+c^%(iIADNLmP{$O`C1+FlA?;H8ckbj&SU8&96352nLwGDaoszF4;%zDsU9A9pL( zB-vH8calg2VdFk{q+Z`pkgXC=YXP1E^+PkUnG|0DH^VJ9D{!D-Hh>!-vuc;U&<72h ztR~DuCy$b|K-C}<7f-93k3jL6q6fjuW5&(->AfINGK$YchVO&)i`y_h0<*n$IC51j zavhAkq~SKOZ{Rsf9#s*s3@x32QCWTn?YxKbz^{d!KieVqMJ@|R69-%lum{-G!<*@M z;0S`I%Q2A(xdFXgFiUh-N?n8WiGto$|ILKl^aX2PYWYqsXYa(f@T!ss(~C`P6~LWGwJ}d?x&jo7ba5rDMXO* z3TY=?m;&;*Bada@2D0un%lZFiK%AkF=n_wXU*|X37zh4Hkw7l+pj5*0-3{O_}({OC#YvGGg4nb<_wywMyp!Q9=6EF z!>vV5KvB|%%v`IOAF7%p`Ll4%kKriS&^@!of4n{$s4X7LCocNeJfXW)XJ{-veoDW7 zzBq(l)ag!G;({|-idIfx#o`}cMFt>U7B5k&294zSZ1dSr%*ifC0Ve2|r6DJnd(2rC z8<~a?N*4_+hK@E0*!Te4o)U9pHMfPl*u0;)?dz~waDj^t~DQii3Z?fgS(ZSyjTu2=e0?}5&Y{kfK0KLbw9%t3daNdlehRQ090j_lv51BznT7bR z<~)>aQnFQsbDZ_kYOupw(VJZ~H;VLAz{)XOmZEkY;sNXo_lVmI&>T5R`3$rqi8&6s z_$1+(jV&wpb@XLg%Yo3lMRT!_YniNmp+3c~`4U|>Q3k2F zV=&`ph}I-AsUP<5_$1yGQ_(5@H?~$GXCrjgI4Ocsi{SiVFa~9SQ)qrMEmZiYaSfF44Hh zt6E_Kk#&WD!N_6{Jfc7=pw$g_CI2nGtOu~CBa?OK(RY?mI~7gH{F`F3y4SjQlD365mVuM!|=0{_SQ+&T%;u3AQn)+!Ge1jl-?{}=(&inJL0t7nF ztjd60dj#>j3hR91|3!7UC;bq8?@^#1!K^KEC^QWEf`M-)c^2NkGF*@dP# z@K8?KWyuB`KI{=ks@1j0&UPAEtHL#J9kMHG%)o_1G3H#Bh=0SIA^but8$akXAYpQf zc#)>ZIh?VsT85yq0|ncX1XL)4NjV zqYL+9Rb0J{8KmOEXs;2TVkhsy##Fl(P_UXP)R!+wt&u>ay+na>c8V7>%j@XVY9-%) zv)B_bJGIw_Ew&P&vX~Aqqc$(M^lRoxKjtQ(}?pbfSh;a>Q? zj%;Lu=C}l!#U!ER?d19rY+>u87j)JYk7nUuuYnFGYRPih#{;4LI4*ipoa#WxQ@EJ2 zT4QF?F>l~8wuweu^ldQSK!=JEZAxIu1HwpJEO7yV)CL{`k}6A#UT6c`NkV7m0lEWc zU;Zs^3ew-_LNG}?3JnmG+GNJY4(dh|0_d~&tLW-gc0f_EOy`7~93K6qCKKMoxy|e@ z+9Tv1G2e<@wXBcsL7kA4L(mt!GC5_nE#UIver*4EV-OzWs&OS0T8=`gV+asBbes_O zi82?z{-jHDI742G|C8+bGyp|`B#n-Lhsr%-fvvHz)_lQ!DDwA`$0hepdcBA0rX#)? zMB$|XhQ#Ax;C44-AC+A~t2`H1c;PM1n)w=ucfiowen!85R3F*{LqkWJ;^{(_&zxY%vDws1RaZ@*2$9;+|Q3_}hwYEMmOH zq*o_x+$g8fjdFOavmNwBZQHlmFOa)JEHOWi{_DpiT1d701+mo)7JwqT7U)HjF;n0L zZGGu3^@?OBb#)aK?_HTTCJbCl2#xP^E z_MmU@+P~)*XsSs^V2C^fX&c{wjjADz^^wq(C-bvKIXn%tEC1m-JgDSmFr#p-HWUZH zHW8cW)V~30$h$FQQjPyz3M=$a-QE}c^SLFcP<*(~)EXtRgv9{iBZyoVa-f#p- z`!ZNAE^Iov0h0M(F)b|RD{0LIw4j_9V__fuFyp2a7`U-&>|rpQ#ayor1YkHIP-sZ* zBlTI{8QoT|5B*W~c~W3s+*{302gg z>@-ppZP3C5Bp1ZDC^BCzWJWw7wingfti>QSnT%mw0^$cvzl?{>t z61%j-fR-H?(XD6g36~4>lL40s0(pvo)zxJ}?vUXYsA# zw=8|IgW zF+)TDDj2WLo)4#Kh#eHkvgm)6XxedCU8Nz$2XX20JLqRFX@3G5H5B@^w0C9}r?p`Z4xmYhR>Z$zey&fz^gNo}17zyhA(pp+i<{06 z7gR$p&>m74yO*AX;GW(rigBqMMaiCRdHL+S6#aO5+rs!-EVVcv+xuwn$LTE`f&-Cl zj(-tApJVVMY)LWMs`Q3|z54q_IhJ^$dx3+EcQIxUi)c`;q<7Es6=NKibc|mMn-C4e z#xlHRxf^_Bc##{lpe!JyF`E_C+FN?P@LZ*udL@DTIl2(ob_abimwt~-=~EXS0BM)r zKL`KuYr*I&pM~X4a<{m4E@L0OQnoSNB_Rv#FSeMirwo1W8OTJRq7}czCAHR@ha?~* z^&R6o;im$mI0TfP;K(DH=;W^p>R%WGFLAta;PZvzfi1yVXCk1M2l%;)W?JG$vx3i6 zkwcT~Y2}QPAqeD9UJoQGILJTMO|faAhz*_S8xE zW!KEl?o{(?6A4N!28r$mDkZ)O)@Oyqz4h4*VA6l6ax0Uh%NE=sfuf2bWKE( zR7$##z5>?NFrd*8gy|YwIWjh#o`7&3CQoGpg2p%je{kYmric+>A?MyoT9-rL4YvUMlY{XvJM^Ueyd`W$jI)F zy~ue6!f3HXzYxeO&%s6#`^fkjR`fv%JMGZAqD8v+eh}887Jc7=?yLSXI_6Q5Z4SCZ zXeE%8x68*PccJw0mOxOVq6L^DzY^(`kp~m(YUfCmRBX|fxwIGkxyoL|u)NzEf8ylb z^Fj2gwb)YNE)G9S?sB9mamf~mKkEV5H#pcB^ah^b1*&IQ>;5x{ZP}f@gEU&C*dKd& zO4j)Mo@&fma~z9gy%c6(S5dZwHIOd!-+6p&?5GN5$|FqyRPA?-XH)b`gQrO@)t>ez z)e@?SaGM^xkUv`j03#24IJ)U|;1%W1+nmi?`6+sa@Yv#u9cHJmX zHlNCw`1|=}`d0)4z#pi*I92D0N>*89i{^~N)_{Im%_AbedE!JB!ePXX3032#=*KNM zBwSC8@OCf>zU6O3q_`VhrJ985Ern4a^n#nUFifIk(YxB5%Vm@`?h-nm=$W$AE3^~i zH#*sX$-{>Y9?;7`eq$*+4B@@~)t=9Q5ZgiRCEKZbNzZin$=AeMEg zo$+iomluqQfh1tXvAJb*ydf=N#w819qkiy5ie${A-^b{45Brt5Q0aWmL8m(q3dDI^ z2ZrrD)M&J09J1w#sYMDZmNQISD<3CR0BEX&6$e9^Jr07 zS!wz$Nu3Jobn(J!i3i4a)ot|f>{iK}PkNNv3;<3Ey2FFYGK?89EswecoN#=_81H~f zXm0^eB15H3lEtVQ!2~_o=Nv1A%uYnW?g5!HIw;L5jX*cW4nU={yPQ>d+GSLe9=p{- z4N5%syT$ zUylasM)maBE|&g69BY=?k-alHDqfbPP)f(Uq%kIsxhajg*3_6ZCpnBVs*k zJc2dntGmEB7x%Z zsy2KWQ&saa@wrK}F4- z!j=-j>7}n0Nzg<8B=Yh1&{SQZ!3)A|4KpCZ@k#X8axX}Sj9rn&5Sv6xs!U>k;g|a0 z9(({~lzpj{fdY=*o5)7(K~{j0vV%HHXj7#*1EA;$tjU6+x1XkfbEs3x78l?ANLJUR zZg6|3)9cH%7x@k5gDF#G?}8Hf->`y777b~xCmB!ugI!8_1(<2>QBOL2pLjEtJbnCO ziG3u#o`NQBrwwyi`ffe$aP}*D*$oE4u#M@Z7cLr9zxMEAyr6teS50plpeb?mu>Wtb zff$O$con@QsJR4)L^H*}Fl%LMS2t(HiXpCAHStE5vd}eKyd}UM%$3d^2i$bA%3Gv z1_5$bftVMj3ry}CP$@qcN<*#%XE2>=8pQK!SpG&eoPdwB8;W?PmeOuGcGH$+r0C2U zzlMLCnuKJ}(;c+chYfF&-JtNqsCI?9M&|Y^Nlp?9g@mEPeT&=YfXln6u1Cpec_7#N zHQKZm-zFo+Po$qisIcjs)#zn(6QS#%K%qMI;`qNn%K^uwn_erRnkL{h^zi%~mc5{Q z2+%8rRZp&$90jx_B>ZZ9JGyiCX}ac8bZPxE&0PhGE9d5ySLbuQM92ZIIS-F%46!k4 zq1)M^43xS$wZ}5dxt5m1M5crOsC)V&G8!@q6C8e=lE5;l7nz(sEp(0elH6L0>B-SP zdbCz=#mj-qK0qQ`0{n+=yXb{CBVS1O3Ys`u8|}w0p=&yL?EtERP|^>sJ$Ro~Gexn* z2KqCMI^|cx!>p)=C7lYon@cV&LDL78@SBp6{z@Ippio7`Rzin3&2=>ngC&u~ALX>r z#9WpwW%Kxi*kysyHU^|9$ttkK?_pQG#5dECY=M{0zFBw+-7b2+#co!jSiN?)KRlL( z@eK@1G(quZc+`lRdMUF@zdUR<0A#IA!^sj38K}N5omiH;KeJ=7C;&Nu{B8xNG#~5- z8x-V_GI945C|&Vf-T;++;45V|>aXC;?Adx0!yJICm0S}zarJ|x?oR={lcO921~XXx4pSG8c@~ zoMO@$2oC+|?Pf=wt!UEqY>1vP)D;ZGrnA)S*^vKV0%sb9?bp)BIghVYE=eZz+cx3d z#aq*NL%w!vfie&LLI%WzjLLp6P2ocM&w5$<33CyT}#7cz*ymh z4}ke6b14cO_4j6u|AQ`4E2b7`iP7AKZLh-CP~pOKF%lfE(5B&hahJ`nSNk1^h|_8j zWHK`be!w-@uEzUCaSR|yXA3%Tog=BM>?k-?HFOYb&O_PYGMsNZySG+$h9w_!^{p~k z5tT3V^Y{x0e5JfcbAA`?o<~1D@1&{E|EYOZEhLs3(A9Z>TuEXA3=Lu&kS6`8LbhdY zSo!%?*6G%wCUL9R?8jxVg|#}UsL%{Ztabc9c0WIhejg13h{7iK(StyShW(7vxi)l% zLZ6(iNDhs<>dh@GD!^Uh+*-wl`_QhXE9gHU^N@D}3e`dwZvnTV|1QMOFRWAim;mfP zi+;CR$;VLQf_628X8>gaot`WWNYpah$3k!$)ad8vSr~n((S;_y!T9ICMc~jlLiEXG zn&6V)T5(>`Qc>mr>mG$p@$@pAse|>eGolAdpeP!fLenot?tJ&hIatSTM@N94uW-{7 z6M!H(E~_n3lXFmiX>bI*whXH@a|PcFgnn`%tar#SiZ}ReN!^gg1IKeBuL% z18p1*qpW5>cKX3X)be*&*0pu!AygJUgi7+=2!sIv%-QW$cp!ez%*z$x2}E|*mHnfF z6Bk@utqmvo!O}aRV~`;~JOBPy79cme?mJbx6~h@dbkxMUq5#dWPn{px#@AqU+rqN| z`Y))%cYbYJlqW{f7lm855u-i=^o6slF=aXqv#XZVn!qL10HD}B@)lFrS+Ulr(q76PI zmA3h@vloAG>D7;Vc+PFUM*0WIo%DT?FQVjY;=*C4)a00T&Ug z{cr|KtMdjp(t-M~b_3ZBr!XI9riO_fbbVzWon zB|S+4-H=vQ`o7XiNVpIBZm3k9U4@Idap+-TZOxmAT&?9pm`7jo>x{OZwkr{Y0Ig zd)vjOh>2{!c%YTuHporAk6<@RLdh*~Y5A4t_RQx_kY89V?lG(dn zUV@PKU2ZbMDO|1BsS+yOx>6b;)soNJPt7&-or?9?xFw5X&LiPmvR?ce^h?PG` z4^IR9oB5z?ZvahW<$vuS@-s^WF-eR-tIx!VaATGISq?XGups zx=Foi{7sf1{lIIQT%3_-%+v){4KP03UQZReB{%?FN(N zOEAs5yud!rrUFoceg&(bXhNWR1RCrR=hw-yRMRCs(o>rwaUkU7MiwL64uS>Ib6#E) zAJ4J2?^uo=sLP_JMf$0-0f;X#*+5b7rb4AFQrD`eQ4@4+H?T5WwyD1|@&@>HjN#h?b(Obp} z+6w6*R1&oMOt9<@(b8&gzZ5!FW0pWqhLS7(CA>ypa)n2GQ^2(2afuf};v+W90GKIW zI>Vfa3VqA8MyKLM;j$~SyQ*T$0@d2k)31|M8OlmyN-(V~Kn#6bb%>{v$B0 z^KJdxIPMg0%swr7;R6aNem@mr0au1acrQ-R?F;ay8-B(k?X`K3dSd0}GH}gR%3Mfa zwZW9^BDp*jMw|L)=ycJHVrz1)<9ufy0lIO^#sO61E5EJyb|rnO+M}lBz3+4flYWW zw4ValG6taxFO_+?U=L_V&UIKIr{~WBz$O7{-kGXL(N{=N!qCPhKpM)0__EK-Z__(d zd=4EESx%qQ6g4sYQtBWYrRDRG`No7SadClW({U#176Pbi(c9o6YGc~jg2D~AS-B=>g2o9hGcCFRdBRXEN|!xQLY;j691 zvaL+3+yMuTlG&&b|BGp8RoeLf)x%Ra!J$4+9ZZ4BYBT5NtcDt*c?c$@l9)7uHg8tc z(>B>#=~)|DA<;>{rZ9fOhILFb|J>?7m*3>p_|bX`c#@7rg}SDSX9BDhD~!QktD6rL zJWxC|=48%2;?AjP9|2+0czuZF?H^rIVJ)J+`A23;dogr-`D zg-(I?x^^3qmsl?-AAyqsF;T#LohR2%75nY6)5 zc?4bd5o^N5JK}c+Gzc8A)rfu`FuD$BgR#mQL?-PSk#GOD~+~e<{&QoXwa!t<-kbzccp$Ug+k-`zN33z zj7;sK&x-6*^qo)`m@+fxNqtQ;G7ZoIyQ`a{NlF4p!hq{0oDhB>w@m4O+Z{Z=LF=ac zD^D6^8Z2Bfr9Ua~i6!W`d`Vf^F}sixY6m0OX*#Se^1}L@^qNhhcsN?t3i(bzbpNoB!=!cpN>U`NaAbyW?W=DR@AHZ$E zUG5Dq{}c9knFX|?0F6aaDg8kmIKnLPU4fsce-{{bGGh?w_>u1TOaO)XMwGs*8eg{= z({Gmf_yONyHkK4su;LbVn4~4Cat@^_-k@j-&ULY`SC_7IU8acM|Zao;pWO5iJ3wk*s?r#u- zg+2)@8vx8L?-9S5rBB;6atTdGV}*J~EOWEs-kvyY>WmVW*qy&Dda)zhMh%7Hu)_C- z5M4bk&6-2=euP!UxEa+)sB%z}u-9XX=yrwuN0vKkS^Q#v|KLtuu1fj5?J9(VysJzR z#$V{Y`R-2_`KzdCHCWGh-JGaD1S04GSMj>Rw3LIwZ8Dn!a>Yku2i=^Om5Rq=;xRyH z@<+7o?3V@+qvBC9p@2UgkYX80eq)s1qiE=VT7~YNWe(y0Qk_HEYTmx_G`&-z%#jV+ zQOUZv2X<)>Uy|yh|DrTnPVdZ)4S5GZ1wkRf`=k_@L5H!2n7_m3@@ExC2#XnF$}y*M za)I5>x8R5k(`T2{FBJ|qrD#UAHuljC)A`KhKps?}IxMQ6xPmUahL6+fcEBWJWuX|> zJTiR+R7-^g+8`~O1IZ(=;jgj0R9X(s#!n{bo_5-$GuGRV_R{GteT^;@tcTvjns}uP z4ww8I?X~}ZB8Z#Zexu3e{=APdDl3O=G%vKN7rNr8(7+w`CrA9TmAH1pT}N?pCp69=BqtYjg4yO{GnK@e`M4 z2^_8w4S(!$cRq6E`Ymx?ZS+pT8shGk_|TfNyX zly=$NUG3erw#)W@=l!QXp8{s)%caqzr3kL7qUjtLr4etll1Mc|8-ycL#IY&?a$_c^o{K`|J=Z4q{=)xn=k zK~&U9S7A{83D+>aFprMf``;EUuCv9$P|J&SPZ8a+^~E(Jn;YGM?f!v7Ils0Cg<33&_ASBOrX-mz zT=*!0JW6Gi8fI+dJp#-d+A%B*dWmDQHQ!1Ghq$`spiCE9Gye#{zl(#uo_8 zkRF@|+@vRZT+htX(nW_%1vBY{7wYBC9Kaj-oNpi;ZU?KQ>w^vbTIS}$wXpWWHb+zD zg^uoACF;u$2l?>^t(m8mpwOoN^n@pF^kIzLGlD+dqPq27y8YqSLMR+Vak-hsrLkOC z#5*g$n$fQs)&(A+1(+?ec~k&tX>)s{!205gxMfoKq-dBv&hUQtB*pF1sI>tyiOkjzGi?muGsb6IbTN-n`8IcTuof7WxxX@`lh_1 zZ6qqL!!B2KYxMU*RHy!HA1@BIue{zyDH2b2Je?CVCrtP7<}@Wggj}F$?O`Cb6qU{$ zL+T}1DFQgPgOmuYIG<;Y1`X5LBebTCdAf>kFKxK;A! zg~dDDei)Ds2O5p3!AKHY&Kls2)!Vk!h1V6!w)|$Md28sqbb4nN+VGEu(-)e4e5-|`G0!YST z145-xocZ+4j@Y(C=JWy@RtImi{vwB-GpcN@PBlYBO!uLEgk~2(#Ktxb<8BjU%VIHm zff5lUCq1_!07val=iajR3qh6Uuz zPC8du%Ib0LTVITtT{fIuCYqe)wu!+G18jy)RaDwB4aGhMxpy)4cSCP(-Ro);z`)5u ziS>5U!?*d0RZw3ofEe&%86yj&YD~B-yBJb4l4!^{MF&L-;LBZj*`^SUX)4pe4G08x zI#zwuiPYTgxVOjFIz@pl2(`(5#2Z%yP*}xGt%V!k16ExGUx@&JN%2h=9x5}}!UbR! zPQJo|xMfmem;}wb7K_p!3N3?CH{2t6e_ks)OTl~~kTDL8J^_SaDW*?!c7$Jv37cXyX3R(V2o7xUQLtZexEDrF zrF+_i9>$amt@2Vzz;Zjynz`d*8 z(;17KiY0E&lsYO+mMyjuDZUM+G0PDoLzX(e>F#DWHZ@x?%mQp4%S(PAJ{A znBD`;@CG_4`O5Ug-!}0X92ou30y(`axHaqP5WO=k5xtOnGpN~pi8RrDvm7DcHdy>b zr*#&wbYBQvhubCWMos*Xhn{Mo#dkWYB4-CyNOapeir*#*9dRyX;=?0qab$jUB}%mD zcWS~n#kHxo{3Kn>!MXbL09g3ZA145ff*pgw?6&3fwW>7vPFYxVAc}y48Nya--vOiu zfnHC7lj}r)u0^I$E^vo2>6T6qL1U?2hzY)%p0^h$MUq5kW;1go$QNk6x#*Kwy|MLN zQKrB{Q8&(BihjY;Rn#}FofnkKrQlxknd4*yp)9V0nSiQ?Qmq|O$w9l! zD?;070VF#>QXZ^IfG!&fvTRZzxH$Djg$V)%!xVqkF9~pNV>dL_=v0fpZl+n&6N;7v zIu+iFJeMlN>ZPJtbiXdf#sV4%28>M-O* zba)^ia;IywlPW?80-|5H;cIRRDdo$8X0NanXGT{yy*iCD?C@1|Y8ct^4?6)F%(BzG zY*&wza=*_zY$F56@^%ViJbR8T_qDoQOHp9igcQ45%V6g*2cdr#(DE!SPQg`^P7jYx zDG<6VCpd(9)g*9NYqG2vQU*V}KQEL1kgj-Y6)lGk(}WqW>kD1C+Hk51!63b!i{;r{ z2-k+FrT78bq`{nW&pcY=*fsZ^u!S(OyC+~~wSZ$ipm~^EZD9a5G>wRct#+A1=g2(m)lX@i3UbmQJ}#gHV{U0P9Jq4aB#h2p*6Q z{aKPL6KGbLT*n6DD>u(m<(*nBG;;*)3($}`mD7cxh+7V6IT@gS^N&iYw#uDm zrxzQ55xiYs$+diJ87gtLNZ_6e%sTn8y*oJlFV-mS8Uj5LIV)&lHYC`ZZ=9&s)5Rqf zr&!EdF{9HkL7k5Rv(~T*H5f76IY_js^jS6!`xG%LbzHV8vY6{5XsFQ z^s>j(0n?JMkR_eVUS2g31JYA&ep4E2>o4?p(bmfOo^C3fAws?RCbf+~$8*$jM($wA zFVVtb=wEDW@$G+wD{XlzUDvQw`S-c>=RtvpnT0-SGuxn{_8p9Zw(WAs(1JFAI<0@_ zDZlibVNwgbseOLqJiIH=6Ja=FCVi*RhSpk&M_tZBt%vqOV%vn%+qKf}DbRulHmL8Q z$5e_r{GMtRa5c0WuC!lpW_ApqrGvP#z@anY*GY!!@gY3HQ)R)~h-E%(U|0-khTzwa zpiv#;D+#jl40~Yvw({E%7bfwu0S9!ZF^52GN-6qdO<~Pno>j&KJ2X>eOTsrWCvjrh zX$H~%6r5h^iIH%*DA7|bA54EA7BSrzVNARs2n5np7csFsu}^e$m!TMSiVgI1Gfl}A zUS@6`Dp!hwcFdP=gaqV>n;)sd+8Q5*MY|oLhoYT!ZzFXKJy*-N9T}H`ckMgV`W^kL z6-1xAZ&TDrWIF@pmTuNWBefM4ovv>VdpzLU=C)&xd^>j4=e~bIFV=k$w&~=naSh1R zhl*parY*qWtu#+xr=n4B!{-HWdJ3$lg;q}zfDxYG?&G)Fg-*c zn0Oyqmx6JYl@HMA@f^`=qk-A3oe$*=2yX*J9rLmf=p{_){Muq{$cqB4J;Y zQXjHa;R6ILk{b=EC!oY!cV-9d>{@R|Ee7E^Ci=qR`aX^1WMQcS1zW5Iy3DLeyYP^= zq+`tsKSBmIzb<}-3ZKR`{D}i^ObE-ND0+$C=F%}OyxC%L#N;`LeP?OnE)2u@o~%4z zMk*@q-rz}-T1!0%&zh)IhlRE$lRm;?l6V1^^Cgr!CJtEiM5>gphO;(L=J_)yWu{-s z52(ple*gjA+RPO+*Wh$o>D7kls2t2`3!n$I0ufbHbZ;Wjp8oFOg3q_xVd4v3DPr`M z2XzdGiAv@uJm?Nubi1bmhg4ZwkI84E-={+MNR>G?J6sotzunWfU*vsw?wO(`-*=sFs#KE2AL0XP#0`=aQoEm0XuJ!? znF1J7vYYBvSUopoE4|Of1!w##JWkIF)RInz?F%K?5S2Jmy~U)TNS))qtl9HKclRkf zqp1(#8UIuxRD(Qd_Ddl>M|c93oG+d3dr`82+<+*V2f(-zOd7zba#pq(6Q)+K|a~mhwUi=j9csItu+BL5>5CXBUd{T zzF{g;`>?@Y30rKLkZf@=>uL$8$zNqte1ZbmJin9XR^d_<`~bN^{1>O?RZ1Gj%tu}z zOBybKzRt4)r$sunBs3XcxWu5=e+8vNj0TJchL^ zx*z>%(+W~$7U%6*PGQigOuowrNZ!^JUM!sRh3H8XwDDQM@2cHQ0-waWlZ;U3MOy%C zX6_CJyRzvl}bcZCy7`es=V;Ej4 zchh_c_)ezfYP8VRI@(jHU{ZSt1JTha_g$N}J6y|NR7xx~-g)|b${QspwonyK$-f(Y z9=pa5PlIy_PLb(@cy+PwYdJ7ddXB1UXjr;liBa=#=%N?Q0Naxmp%NOd0O$-c!L=`fyTCX42u!cK8lqxS zmG5Wpk%|X579qzFg`8Cuzzn78L)5^1J5GN_(;MX6ooxmUo*>1sk0S`k@qOpImRb3O z)Fi}?q%#X&p1;`E4<#jdou9#CN4Xq-(WXAKo+iH7j) zdfHMa!|F?8lA0Tqn4tDM);ayUkg{k)Hs&H#vAXi|; zm3BuLMxw5E-jth|2T$GXF#4Qpt99X$A0y4?4^Hn5z+kH8#&*ZF;` zA;IdbbGS25e@eppRG-HWjmv7ORA6}9x0Mb*-~T%=`va8+w03Y83P4O^#qMj{C)`x# z(}Q$W_SGuLtmt7hd6C0>UWO|!{h0pSI37#K0sBmD83o!Z()PBmHGyW0DskGL)hM;L z-GB;&)5$Evf_>E9WpRn_QNy}bgWA`Pt;~B{&gH_+oXviB%D+lhJ5clfSGPbyXC(`;6n57Lz@ zK3fhIMV-{RjtQLvHa;~Efs@IF&OuD=EL8douYDzbeN_0`_hoo1HI1cbmL)L_ZqM)h#F~dw#WHBZ<+9}f24?G^bQu^<|N}5G^VSkLL(7yi)I(!I~Lc|Pq#$h zpt+;jXt*+oo;v!p1EExc=&y@uY4@~q`;ffXs3HvtcV`4iS5T9R) zUhDMZx2baFqEG+#seJK#Tr<89PAAV8U{K%mXt z&vtODnKj4gkOF#iBr02ZeLledEoqKe+QSk3ewtg#oZt@Ndp_H+u^zCYgP=_XBu4O$G zvlyOCy${ed-_q&soU$`_@)MeC@gFv@`dCb^aHA~~N<$ZR`inbYxFfbP8|;2{fo9qq zy9V9;5=@Pv}Z~52y+>xXSF*!pYiVe_K(R!qmGe<UlBDqRd_?*4bAABJucOG`L1CHLzq(b_2IKUI?otl^!PN7M)ezh*N z!%|!yGFh{FsWilMmN&<>B+O}gOhSGCAo}u{KchY*h@M_B4QWZPB-mtO zGzUe)4(UpoDPxQu1euc#dcPYDMq`C+oDvFX_MNzHK1zYkcdM%uDH@s8O}@BYsBO^M zn8p=(I?M)ePyJOvz%<=kD5NIl6ZU=4kKy%23kv;>MfBlE=7N3)Y;_0`43#;ETynjY zCW?Jja0u9-nGecU^OwAwY8zOWgd=jC@Fg7&)3+l%$g*ZuwK+spwZN!FYkZoYPZr}7OoiXjep06(*-7zbp z@4!HDgT`pu9;iHQf)5@9bjxVkJw_-jGb}T%z28!5X$Rh45DZ$8!=^zw{iZ`OfaEI( zx#(~6$QMF}d5RjQzqI35d#CZf2^>yUu^6=+?k|LH;`tI!$Cvjmd`!VvBTRCA=i&cN zE);@li!?tNHYBB%+>+;C-z;73`Sq2z`Tm}cECi*2Twx`k2qC_nEJe2ts`UmKJne<1b08-|#All(1utofy zV9XF**ISU=k#`a^Ux9Up3&W>nxH!d8k%HsTB=nnJ$TwsfqFA>0^V=eEnD|B}DKz^J zkmq4kBME-)dX=u-N$ECzy}|9N0y`qVmN-}iSwG}p>aD-u(>aLW{Vs2aU34Yx_Qx=2=^y^1j-%b(TIqg$U9a9`Mi7tUgUgh9Bo4#>vog8|{v z+P&EY?J+P?snY=>6sX*9nIPd`K|IUlJvlIqF$X{PZ%9lO7So8!b>Q|fLh_X=> z@D)B)m%yi#4M6L`(zG4>wh~DFgE)2Ep;nVeRJVc${N-3C4Bi4jCqm2fC>dlp*Zu(s zPg#x}QSVMV5FlkJUt%YxlQJcG^$A~QKJo}-Z6nZCW$Drk_s97-E# zjRyuZ;gJ57V4-`KmT1hcb!@ZWGw%pa=kvZJPz&Y_q*w05le`_>_}o)I%E{ds61;r& zY<$;WDnShFg>-XQLoDg3g#c^Y6sEC!nKmuJSrNz->onW54wlr`5clxoK^l@w4)#Aq9KLgyQ4vi(b>B~ZrWOshug|m*#0B-ryWk8LqPD>CX>)5vd>-uVhJ3|gYH&?H+v zE@+v%?q|7NP1WDP!d{OAUk!0L!?^mKYrGw%oSI2KQ@6$W7E*(_c37w`cTs!V0e z`+vr3HW)m;DIVirY?ICDth>J!Wgg(8g!bp3$q0#&K)|5q903slye=@Jm`$Z6E3qCX zPEYv)CW8~l$>@IJf(0ExjHyh$+*aYr#9Rb0e%^>CWEw@{7H?aFVcNn%F>!$-WI|eU zcVdao6>D9*(n-#Tz!7!bMg7|Wxkh>@a2poE zkJAb@1Q7KlB|H7hu<}=I0US?J(Iqu7tC~16>PN%9j^r+EWXS6r^qpt$C-~X?qrSs3^B6%r z)uRgDwz3n@UG#x#4e;H0g3T{}3~G*iB3tb8J4={J=7nTUw#nzd9eo-i|Qv zcB(3wcWN1KmB%3Hlmu9*OqlA2N6ZanH8WwOM*zicPw8}r@36ovC9fY$W4IpAe^d4w zF%Wo;OB$RtGt0psfd?r(j@dZYJpbw<{;PPI(1% zkB={V5>#Qvkr!#TopKvmZ12B5jM4rvG%6P!*5Lpxm>>vg5An&6vsjGJ{GU>_48B$pW~CP07r_RZTJn7i;@UjXJPaT=vkzTEzXkYUM|5uHIhatF zj%3EEG+jYO$5f%5`33?Kh4g)mw-`eTyVz-Hn-llCsz~1v<7GqX=et^&G7S(p}gH(F268^>XumQ_XLmas5 z*84_}zNA8@@M{A`aux2F9k+H1PHhMPb(%Si&dR0wVx!^mB4xh24GT$8hP8WP#qzMx@+OsIB@(z3H^ADmV!T>S8bbI-W)VAONAYD=qH`^+_In>xJ%94Ac1Fa{0jQ zxSb9k$9byp=20~65Fn=t!GG-X{hxt1dMl{QJtj}RO6xgoAK<&lUrui9FJr+^4?i$# zh|p-MVjTvCFt_E18P!yK7yuj^ziw&5>8C?_S`wx0h2tTk&umO`eLfwKm1n5tIC76L zc<+_FFtB@!s!Sf70V%j)u)0OXl=gdM3BNiVv&Gg~6t}tEu~Q}!sCGN2216$uu>&1q zIwW2IEbdfs@O9He!|8f9rq1I7tU+*{sqites$RHRIF~noxhfw7csw`?^tUS<`U8+~cEXUK4JVP)`kB zEd^DBQZqd!=C9Yv1ruEzF3P8rOMRx<_KO%OM6&kRW95i400fC|m#^UTK6E za+NQ%tm(NP>-5r7)m*ofgmggodcw1Nu(l9YPZ|vgKp9Zm7E3V&qgLCIA3}PU_TG)x zetN!lvL_I%z&KE4`vqE2A&PDq`)r9DZ7ti`ZAz|EAaslNX3d%`)y~tw=kb_?Ff&KTX8bP(w%QikpQifx0nL;m@`K~j4&oj^~KICp% zyVImA!Kw4Z^XW#IrZZ!VnWpE6_8@;|Ad-|wEJayvVX;aJzj7ac!4_W$A9&J>S-J1? z1f%wmxBYGN*&^{m5BH0dz}~@G@rw;_v8q4_nind=5JpeP10obwFsE~7(eK%^dXHUul3fMIo@Q$xW_UjdZ_%eMD;+owQgs#83E8$?& zXHO*Y9mP6Ftno56J1G;lZC2$B5OYlB21ll@3 z!6NJ(Q78tZriF;5!AP~6%wt94lq)IVuvRG=ZuYKx+!enmpz5!a+zkDJupT`0D$u&8 zJ|Bo_h+~LFtst4w!W8sexf}@Di)kdSpj2?^*h$-bbXJnw+dxIBiJ(p-EC_UzR0g`O zS^sJ6b~-x;v+k3l_``!7(*xZWjC41}aMa$o>fH9gwKT?AiE)+-9y;_8eL9H-p%kUx z@Zx2-S6k@zA(S?c{*#z9qbazy6E(!2^7w=_mY;W#D$XfM9$~A6-W|^OW(oUQoc?{B zPTmS}v%Fr8C8c>I1}*5)H3_IKRl+#HHA8Y#M6?(raYtcc3dJqUqVi;#H;TV3dCY)^ zT14zPl_f=tDVBQd?q!*Y;<=!fJ{v>wYMPizgCF*_&|#lk2O|W&{xrkj%I86~poQqK zErGs!JX@L~XJD_`LBGH$g0VYkn-v`n^R=Xf`!y;Wh41G-%SzcYX6Wov zH%m7qjFVk&=joy+sg|)4fb(P;)R`Op8PEFTX10z$wu+i(c3u$<(^l|Nhx&u6AR(qP zmg#rhZSS1MSEW&DwiP zX5`v7ffql^yM`(_&Sa}AJJr*)Rxm5|Z9?Pv6kNL3Ph~cH;@hCph#@w|0LzI|GxQfx zZ2j($1j$9us_?k(e8w%xMl24t$h1*nZVAmS6Mx;ne?M4;P`6qXcu8F$lT&o7C#h+q zuoRa=IEAMAk+z0Z7AkxqF&LIb_`cKj*=S?O;^t5WM%wm6Z#4(fzAAn*OfZ?mPtBlr zHn3%uS*;^2i5Ys@%-9dp=*fHzUloH#_sHqf+S@v3kbi+_Jjbu6=`YKDHY)@W8}ZH> zh+dQf>C?41*!BTMb5V}NljN=5d(!3+X-bO>ax)|Okdj_hT5R==g%t|Z8ek56H4h+b zK86YO;t2;j+b*2Hxv$uSKwba$pAKkU8xgFkaNOmT_-{4@X|ePS*M&`<$SKrbC>BY% zi(eg7dgJ`nul8F!T_YIm%iB)+fVP^2?mnGQYk$r}KG^wSg_uq^njBbhQJ@h2Po8`Q zoJ=rK*7bi`Xb*r7oLds@VZeg_An|`uLNcfmza5uhzS{w>6anhPWofkBQzC4+1ipbS z7}+j3BeC48gk5J!0#Q?fMXtx{G>lUwZ!OIp&Ci4}1^mX&KThYz++>*uO2v_MVGXT% z*%6!l)aLFMj^4r=9W?lUyuX7^`anY&C(++?EyGk6J2HIE+!{T*@iVAF{Ye5KG$}dK z-4nh;X4Z6=y~>VHeD6(2@1df zleunDz|OR0?|B|CEHpzF&i(p+1t6GfJ*{oW^9h;7R|rO;tDK7Ht#8oi+F;+Ko)A21 z_pwPPnt3qc7fcrA2vl|&%^3;KyU(t_uT0QPucrF;ti4Zk2l=IwxIQ-TjECI}IB!Mz zTl88lU?VZ6xiUszegEe^2Utj_Y<~LN!ogoC^?k9-DoS~se`y!(?JKqbN&+c^rRPVW z`tm@@Y|ikv#ks#l1nJ0h)|1hz7|hzNh9Qdrd{WzCP*RI0W)}+a=yU0h$w*wxT^s#2 z(P{r>v=9N`vu2>+b$s*F^Sg51L&t*!FY*oJLArR6PUO;@4Ta3C0!5p#@b=74AL3uV zC&7~3b+8g9V_no$O53|>j2DBf6B0mQ_2YCp{h}hgJ-%9_7hEJx zrhAt&+m#>VhrkA*2Pa_~{`{td2KrigA=areCc8{Km(CruGMmJgm>ujQGbL5~D-W2= z13#CSz>`>GlWY7@Abt)I>$;h)6A?8=peuj_ag(g5t#bvw5E`;ax2hNq*X=YPU6P ze|V}*8$vUehOav8Zs4Cu^u5o==-%lp?s{Z6)MsM`3&Yh1Sh@+Go z579*j-HRqx!64`xr$2oE5ctCwmIbwRX^5)DbY}Ln!B}Q%HNLKxB%G(+X`ZP=Z#6|IQO{C0U!nT zi12$Ac7Vy-)fcy63=>M;Bwsjd=bvTLRF5p0RG(hxjn3YjVbR$PD6m+WhvRCKY3_FVV=n&vsm~#64Fp!I+sVpl-V~luB5|XGQq!WN zgn)xx-S}0KO3$ti=fV;>NV{_Key2g7ASG(D0=dwJ zc&Kr^{x5YpMjYclP?(5-VgA|#6!)`gu$#>E%w#cV9e;NP+*}xso8jf& z6zBQtpkZC=f|H?Y-1NxJ>(+t7lXy(YDET&yDN&d;Bhv8aNB*&JuTW+OZEYi?j5c?h zYM67~usm|o#F4O}Q|j-i30tA|6RlR7aKgiQLuXvh2SIvecwiy#ip6K0+&F4dQh|k9 zLWt1Vnao`|4xsRvBiiYk`K}XHD$|qL_;?f?-toCu@XzjIVz?f#gr^R=T{FNW%P6M4 zo4S&IPM&cDKQLo6hQaz`x(+8J8d)Y@OT|P2K!zR+UOOc)a1H>7$8>t+jEpX|ie7k) zI)>2Vgm1Y{fmN%XKa*DA4l?h0%ATPLU8wBss7}%B(BIN2EzP&Btll&`iR-x1b|US& zFP=%lOnNj;G5`jzEV1|%4}c&mf5TatsrsO_uLo=?HnSGfl_JY)aFFO1Tu1luHK}>+ zIOBMBIN&O&qtR)NlhxfvK3RK~^4kpx<{>^=QDl|SX1$Y1h#*rTgnJ9dihrL>iN z$!+9aiMVT{A!g5@V^wZU*KLIhyJ_%z+B%-P#&~Q>Q`j&qXSAeP8MDtYO`#zpsi)8b zHBCg|)umU)!8yj3p=idH_u&zO`GTuPOAfIYMO{9BFPY9e9Psxm$3iXX zr1kXxB0Rn_ML^vx9m!!xoxPIFuG9M?^8SXfL@7t^qT`iNg^1>0r!EDq4dQRyfTTL) zpx_!>*#qw=5Fc~$rl(BzT@?hI!-KR8zU3$Vte(k#n2T%aKgIO-WQgOBr~7{4`z88s zraP9IDK^9{o#R|W3vQsxqa9Dkw&jvYYi{)`M&%U&9{%k@Pq{EdS#JA!9`b}hTGHT8eyVM!~#BxIs$D5;_^ zD{@`vw1-?X=%Jfw%2*{7x2f&4+UXEgUD5OCk^ACqdbWVlheF6{a{9bkGxke3Z)ig* znuPChDwy?09rk*#&K3Tm!w1(xK57_$L_*EgR^{--{?kLZS+Zc6!#A|!q6|rvdXt7w ziZ(_^w##55R8#J-LQk*J%AE#^sXP5N_$uCv z^fxh34fy_K6I5;P!~nHL4=;N5Xc=wEg^em8O8ULb{w z@uhk`tr;iG4_*dWSk_pa$uL}ot9$@Ngh0=|vljOu!1(cENFr2xoL`Zk9kV3`RUK*Y zPMU8MLTaQZb^D6S(`j3U6qXczmCImsK^1Lq<`*2{On2()jfb}JFX&;3&mPI2&cIc= zT8|!tYblm-X}()`{`Rl!=7qxf#CiUp<%+tw>bX|0g5YZXcF~&7!OP!#s*J7s>3w4o zGEAbTd~GdCjb{x@aU}-!?bLROD$-%Wc^_hyTkjTBVW24JgYW3SLkybeeZ~8W3(I!) zak{G#I8=KM%r-r7fZ>5iDt-PYHI1itz?D~fgz))JD=05%-21OQ*!egbc0cyj1#CE_ z^N&20_`SO=g0CF<_sMv1A9bYAkI$D_*y=xBxL+-3-^)ap?V!Ll(NhKD2$44T$!(y= zWNoq+#+X#Sl3Q(Ztzx1b+9JX~@*4C6G&qEGdG{`mmF43s#te3@f zF_Q3GDY^yYhsg5TpZ4K7XS=e8>w~B1GXaXYIsgaI-Z@c^%4YPn zPP3T3kX8JK4hm9p_5K57X%NJn~*rI@%_I0QWOOw%p5jx_;ix?i^-{ zB|LCk^teVhH&TY*ap9?h_CN;`C1^ob>%(+@C-O8bR{=N)k?YF~kXWht`ai;?gF~-d z#ntuk=Ab0RGaft9NY-_iuW#dj-a+*zSTyU8#bNju&?{ZlGDhpdMyAGdPDD+uCi~@U z5~H6M2&(}#Z4&9TJZWclj7r~CnR!xka0+}eC^?gL^*_a4q1odCMvyUOXIm6zQ*^1c z@KSe$?61;JTj1tF!EI&7|C|;b(#`)fzqa}{Ekw+~*2EE@pT(fTys~Ep$s6)%z_S%mXt_SXM4Sc{d z8MO`OFV3KY)vx?ucS@@*Zgn7F2xl8_NOmk(W|@(Z5q=eo(({Q~SX(^YZ%x?PpnPq1<@_;U$Dz$H!Dom32O z;G%6{5J^Krv<>Gso{njQ-(D*~U!t&bIPHQbMsIiHzrSZ=N&2(2b(3E*UqiWOs)NkZ zOOjxY@OuH!v~Fc)-{+K*hXS8(AFV7?ds8=1$@^kK5MdKSK!4S31p%@};79VI!<=D; z);~+!LAyQ@-epRBvl0VEyNWIZJk5*^^t6Ve{K=8hA&_Z1lWDPscBnvX18N-A@BOdP zA<4mHW7m*c+JqaKUYy+-ahsFcp^L%Il@70*S!$ZY16qkE&=$TFuBFC%MO!m951>y^ zG#)N<{2Fd`nSd{tbhPKNj(7q82@d+dJtrYIn^*Gy47s%Vj1=WO&& zx=&|)WV^An1JC0; za3^!aTKuC=sHG+q=p{Hz`D#7us5EoL?E;tU|C^L>^xlvRfbf7TQ4-PNQiPwxs6Wde zie+Y0w28?8Y>LFf`SiaJ+h77_7nPGj5QX7ecDi|RN#xYN-Lv>6(2HB`cs-`O`s@-i| zcw*|>@6EJ)7PWs$vreP2taw0WAZ-*D?mcU99eIMs9F~(xJLb9tmYdXSc5LA4(u9f6 z8`%Jt4!ZMJkanL#cd+J=i8?A!Xb7H;%H=dL$L6CavK>Z`*Dr5+>rl{KhzW*(4ZHfjrRl$aXx{iDKQ zc6Z2PHlN4Wl+@M1pk$#DQ=g~h=`?Wyv+;GrR?v^O#vs13B3c6;2EB4dWZQfvDRq+T zgQwj}4HkHVj|!Jl@!fC_(~|gS#s7~y-jOf~*ED*9XAP|cE2lkem(}&}3JLuo66^3I zhU;Ztnh-64mmC~)teWCYAx9)lu{oGFd7XXr@y;-Ws1Y@@7`)I?@V(f`5R6`7ISeUs--2|J9bR9 zfhYhCC00iWcv07~d51@URb2D5r<*azvUS`yDwOC45C#D}ucmPs1KynPmp znn1jl+n8W=5y_5xLp4eB$umOMS+d)XxlZ1oite5P4?I3;u4heM z_c%ji1mK#Pg;#iF41{y;T7&Klr1V~zAg7Ds-C3P(V;vz8>!}C&wW;sx-Eow4bAmHEBz=5>ybhE zqTd^UZ;#fo4(HG3i|_((LznHEI!b@kHbe;QDzd9UG6<9LrW*GYnt4bYb5lR|6OWE}cLFI3*YTclW_ z&)1J05PiRm7R?eqr@R~GM+dEPQY;__{q){)2Nr5_VR!s#>haQZZvTVc2WR+mcXpq) z(U*h86tUk#1!=Oi08`Fp)|N6ARw#3nl205dOWNe_cTKrFgE8}wsIo{?%Ngx|fVQl_ zJ*{FAP2au&ZPb6Xu|(aTZm$L^jTtGXtp)BIaRi!+|#uuBbw)gPY4vz!68G7m&w13N*D z*V6RKbrxM$*0z}JZk4gK?$gz#e56w*t5IFDgAK4b7vKTWF?wmmiZ5EfN<@u;!aocDm3Jt8`WXw;nZ> zue_fYWYUPtydAO=e6Ge^H%q~(QT zbLpl7B2<%)j8LV%n^q1EJvXV0T84r^bsjU*R}$NJzJaP&K#}~vyo#ky+f(z7ZMm4l z%uF&W5Clkv(v@c1`7ZjOcN=@9S*P0giDnPFY1ZAM2+?Wq2MEPYUK%Tjx}AhV;F_Z>f3)3uwNZQmgtZq3(#q z;0SY|PVtuZMJ=wP*Zfro6Y6r-w3s*P-%0sZAwKpQB+_AgZOF6s!Mc$)uR>?rv{P9UDNFVU0iVi4Um-N{xw4F;FFbodrUIZ$x~VRxF*OjJWKrn3uTZP5kxM;Qk+>Z(qUE5T_*$$alu3eI zOKsl^&+?^3aIIf6pFZ&TcB`?J4b{uGrs^qS2Q|S>oIe5ja4Q_qcrpg|CTD0f-*5Am?WO6zpWk~N$HkN7^v+{6S0x09DS9CT z3}NYrwF-747%vEbSTXIxZrss<5Y_v!!3(*JADO~$of$nQ(Y`*?oWhtCL5|6Dd->rK zx;vSa3HY-cQ?L-mrAJ>8(b^qbMjJ8!NO?|?4Wou6j#L|RoBRbVJ(Ow_j=TuUd{X~@9}^ug6$^}uyn4x=$ZFaTW_e}*OTKVjbpcR=4l zhsvlU6`$h`?&)P(x?O6El4A#c5Q%l1X0{v7<%OliP(6&?L6w_aDZ` z{f!b&Q{oH9`L^QGzZkEWkklMQLO?WxT5ni3jZJ3rx#ID&dc$hIa?~_S=9`DpO)xqK zbLTNP+*SrWE}o5ZT}5hOK=C~r{~6F|^#G)Z`-K38w<`sdPriSPs3GR#YuS1mvs+#Z z0vK{K8M7r^dr`VvmS_}v9B_RM3Wl(nXWycyifG%jvdFhzlp#>eppOSoWv&Z_bca_I z4)g4CjL8{2;zD6jt99n$rU0}1ZrL}zOn`+f6Rw7s*Q&)}9ZzRQ(j6->;D)>C|6=kM zX!ajsuJtT}f)&(DaC~WTk%lRmhImvJ9^1HkMQ4Qn`dBGS=1|+eOjEZwf|}_zjgB<| zx-dBHdx#e0(IOjl9EClOUaSgp&>#z@CLh8HohE5o(soi(8fef^3KS_iQ&NbfXuyIMizHeE6g1qly68>{m3rNv z=+{ftRK?p?t$@4Uos^43aV?6MRs3$N;CjKY=%VXw*Wc6M{;{833h89dIq!Mj=Y8Ji z33s`mr?ENcrmOl0dGFTMQ1;({X9(_H(6JaWA@Iz!JK5XkGtVU6VA{%=+Uy&AOJl=M z;_rt~lS1NqX;l|WoK7yqxDDB`>eDI8U`od8tDqfK z&I9h$rk;fw`18|q83c-jy$0HXCQmnZ3C6~eg&0Z5vI9H3S6%=)QwR}$Mc88uUtn$x z4sAt*+!Y{-oplVb^d0+2C!2_B1-ku+t}}@(o3xwUi`Xu+#0|VY!szWSVGnh|u)403@H5-N4AOy6n*HB2QbT8DTI;>xR1pe`q@` z)Gq$o4d44EPMt|1HArx~cfSSd&o65E%LBY8uthBN4ruKL4-jvDxo!~uQM&~&AN%kH zJv#tX7Tlc$P2>FpR#0R;c*%Pn#a0p&N<0&}&~ z#>kcn?}t}k`-pbSMRZpfN6PWj;miK~^f^23IDUK-Qvnh)TSbS*VBfI@cqnn6m*vZ6 zp1o!vWE6YZO;@pj>r{uOrv7f0r{uyzUy0?8 z;qJeKxb3J71J_`uzO3hpLh-KybaAR{v0u+YV5;A+I1%&?)z$KFblWwtOwI|y8~aQC z|}AIt{Sd&t*@0$xQb7dXUZ81>RsPiF7*}ag4iKyKXL)$nQ)4?)|IZ z9U4JTH^lyMUJyih`juy0qvKWf;3e8C8-*mkeypr%w>uCTZh}_e-)AG}O?2;nz5!&l ztuY$cBxTcMXbxLpTi*WbhGW$+vEWBkW2;*ChH*y|(}r+J&h zg0}|(afqOl;1aMosULG4XbnM&y9ez|9CLui25q3>=hYad^743s+6+Jweq`GKL~Tm& z8d02w2Jl}HnMAl9`)P>ItWOccv2n+{-D))=or6HrY$;uY`fLV%x`gn;e0o;{uMUTO zZW9tS$P7pc4@26?K;>DOEiIi$bV5fO-;CbaLM6KI<&zbnnD!mXW z4DSG6TPntQl?x36=sXD{>hDWG}o&YHqR?x}dsGR6| z`OK1w;*}+ln>jQf@%B_=5$~!|O9Z9gz$-EcA6Q-QAnjSpg|}&uc_3{Cwu8REM>+?p zm{}XCKwv{v1Kl1X?H%toT^q?b3C2?q;sl|SK&#uWqwWEsI~Qf^uc3|~m#V?p4I|@- zrwWgVr69z%T+KcBK2)Ko-QDM}ox4r&RGq`8R60HwAtZPRP1E9(FkZ#;z&Pj5&Bj$3 zI%CZNLd-Fk9E*-tHy2Ed864pMlK#MC9v#tE(_IJIXRoIpr5>}DdfP?lXEJ5(WqiLq~c8l`M1!=KneeNETsVd zacrD$@?vp>kh3o)tEkV7`alM!>K0J_LO_BkL}~rl;ysL0r zac_VDxugziUPovWUm?FfP!NSzJSiD^_`|}Q&~OyLCVn)zJ!)fDpwnbLE=K@_d zm%4{3{;{7nx*-@in7@=(gRd)CE0)%GG>Tk!?2&of;vBKST?$x(#JnPqg$PPtet4k*x_${5hj`8ml z*3KUs0I%<8ifE4X+Cti4VE<%o2=1jgEMNq4k-!qMTS(S)Cuc;+NKNyx-%1UEru203 zg*v?2NDl3!2v&zi0zWnoth4=OVYnJwq0veBbOF5aY^aMRJKXrD9>UZ4331k%ZO0)^ zLL8|Sc6lg5cxMW!gq-XmE1Q<<#8~s}fxEi8-E^_&aQYza+#mKp6{KokQR081+K20lc^n9x&eLW}jUp&?X_ z>&tIIbw}?^ajqmr4*gceTc@(yTrPSm&|NH2HT^Dv>(vsx7PbIXPWr-pic6nFzOJ?F zVCe*|^Zh=$V_U@xn!ZMXQiF8k1?GuRaRh%`3E_PzbTJZwPww`h=f@$$+RqM6_`~bd z@P&CtZ7WWZZdhBDu^I)auWqD|CZ9wxbZJZRqk6BN;Q;e+^GxhdNh z-hZ{I5i%+^{c`t9YoxqR2OcP8TLm>ZX9C8x49?$!UI0h1Zrs={BAdVOyu?ChZ|s0$ znpB5c6olSwFzE0KsBR?ioR%H90LOzTe3lR#Ig^j2a6_dZMlEB*Cyz>Mpt$cIf0gm{ z9yOz3nHK1Wrss_i$KwN!O}x`0o!E6we3nbaHpO=w;hYB^*}flw zTUo4iJ?WdH;%|UEvxt!7Gn@I7f8KrjqN3)t1TUE=oe4r$Le-B{MvZvmnF*Tw2z)Px zIXR45PfybrgqB4bnA0Jk7%Dobd^(p?g6J0$%igEt`GAM}b7zL369+bHJHnLOO0Qdk zqeL(yVUv|vV;_oNywE(nY%v@hXzY85CoW;M0e^L?%OM_qz4%XUg;sfpf=~s$%;ZcW zk3Piv4fFr%aVxpZN`Bo9j$(pG0YG`VsN-`YcyNy|xl3141gG03j-6`)aS{1s?laOG zFwxMa4q>B;hsxzs*>EX6x-9|i!LnfK$OWd~7yoVdRv^S$P!b~~uc|W&-U-IL+Xpz2 z^Wp6HhYRUN!4X#_krFtHMxdfDL=4a*Z1f6z05{9GiYuPd?cHaX^R?*G2k0}j1Ghyg zM*;#*93AkO8WNuu@|ApFr+VZFTKbDdacJP_V0NHxblBYe8N z4iUlSY){c5Cw`Mc3;bl!nq%h`wUEH-p;kzT3vJsS8pmf4YJ%<0QVJF*wqXju7ail@ z1xL2iqT(^lV67$dI;Air>+b2GAMvSyrbl$VRS4rrj^6a+gzv+b&)oPIX&ps4?d`4_TNyorOkas) zSsf;HI^3#Qyp-25uGJ5nNDq=ILGX`Sgj39=*bPt=N$YWiBuwn1tVQ*3WQ(I_jK{9* zyhG(jEZo(v8c|$+4jR<0f)Y1A+##CP^vTf_Dk(D3eR-WtJRPY6`7IelYRc2`l&&}? z(A)x_u+%~rFq6?T2xqrP@K)OBRIF^iZKfg zAZTE%V7`l#>Pvj$DDuy$JnD``uX_F7!#D6V)LJ|;z&FQHXZla*e~kXo=X<y{=9eUX>`os}X@ zZ2FuS(iNzrPRQn~-cMvg)1$~+#@8O4xUhM1-f1o+eRldV)^c)Q;5v-hD0D{Pm&o&< zKK;l(uh~2>ZA`iHBazUzru%K=zo-$aliQjWr$6O+ujvkveN79)ledpEP_N{RNF z6g0@7jGh;DDc+Q*fFl>AlS9Y3&m8=$yYq|+J6;K6EeABJsRSjfe8CsUXbJM#xdz8TV{{Sii7m0wEq?RW@*pm zhxPOl(y)7fQDuM1SP>n)AFJ7k=LgF zI!#Wdpj7Gxjyt5?Ebee?8r?2mW8)+HUihMxKAQYm(O~DL)fRYrP?xq+fLfWSUwq=5 zfzw{1>_w$P#b7o8*)u1X^dyj!vG2v5=b}?zjBa58`$lX)0!5IgwHidM#EdpcpA>QF zvR>J|A_-R|r7bX7~pl*Ml+4DkV20&JV-{~ygYZ^zm)3f3Jzd#U~+`? zx{#`29ty7U@MFtUhEKz-=M&xwSFf6K-%EF0>b_aKP!L{CAaqhahdirahrYUkLeBK# z)R9VIjH6Bk{%v<87BPu`^20a>wEQ3;a|zzIYHd@RKvwuo zLMFp&)__HdA^Dyey~O;0eJ|q{zB|#9SDV6>N5{;0v59DYuvKs57zz%kdW>iE&c0D) zE-I0!L#?z~xahvLtCV;CM5n3wCJ1CD#L5W2Sf>A0$uMii`^OUw> z2|QpPOq6-0J;0)ToJ?&A#eL`Ba%>7_zzAaI5n0FA7@HU4wf)=G2sIRiKI)b&T(x|l z1JjGP#mCx4(@0fpxfyR#^eELYD&p>$`i4A}q$d*?&BudE((#jPi& zcWc!(xKbQS;BRQ!hG-*-#Tck1AwFxDtZ9P;uEPkJZftG>)3{e@O$ojwkGirY5b}`` z%5{z;z3{T)%X{?|+u2%4x`q8xI5vn=EoQCoiY}c-E4PU?F`b%+fM<^Be}KSVka_g( zVioUsi2`cD$^DvN4yqroTe~_M_?(cnAB5G2wcj*bj1l|HYm-iNVVq3WB4fADOz;rs z>H^`B6(4|LgpuBsru*vGOu=_m)%`rajNv4GxHFn+g>nhQT{h7TTOjAHK@)4v5p<$R z`s=FipffUeEbH+EUL{lLiMqec)Cb8d{}hxF{e&K0n|mR>p$067Q*_pw}iMF3g>qIKtKh8E_hqNC*{p=1QXd`oA6$;&$0ff?{Ll2MGJUKA1 z?nd}`qfk&#nuxSD4%DO{q;`5NLS`UAaCP-~_DNMddqv_qGwi>45(OjUj6ChzJo;+H z)pq1S>E+i)0YfN!-xGWTO=bhKmdKBxm?4!UOCs<6P2f{zQg3Cm_nI{ zY|81GdFpK;QuhebA)I=Rv}T9~{H)Af7uJRV9m&0WLmHY1EE$++p;V=(ik7T!=8!|S) zc{{nhjE*J4+Cde=)i4r|tT`nMB|HQlFmIh9NTVqqBzOya2FL8^uNMZo^@BO`6SE+O(TJ(X0UMT)brQg{J~l7}^B*!1AS5SEc?eAQV1saXo8-XfL$d#1(DY0kBq5)_V*~*ydw9pi)Le%JaD4FxSh&i%g__53ApvKdaJ%*ooc`LpiG6NS ztCUUF?r@>R7Jyz8$-L{%O?EL_0vP3uQa))mapzgSm?*hM_p6v;nv8E8;;_ zWJuI8J~=6w%1P*Nih$;l6T(4c1hg00`5mE+bZ^8qh+-jxY8{E36xb^wzOrl)TcNTC zy}Vov3u?bVL(}Wc&;UUL2dNDWNa+h+*bbdj_MA#; zg?|zySBXBnCPfI=n?#_8bGO*KEzNvLfJO?5t0{+1kZRa@-c_U~g}tUAq0C3A)JPnM zM&5IFM)0kRbAvEL)*UWBIbCn@r@Ms8jBT*FdD{O2fDsjr{8;4c%Yg)2C>H@zW$ zCGH~px)gDRk8B@>!%%KLy)`{LT1H$G4+g`}HVV}P!_hLXPlAh3%0!wrOlyJ*Lk?1@jK{B735*#k zS+-L~9%9q7DDk`f3(+14LF{cz(g_@{ZF$q?o0E^f#l*aDk+N?$U4_G9i5uC@BE?U# zhPJ$jep}Tc2tomX-oS=>ayCggh@j>;m)t+x==JBZ=RKrYOBV;W^Sthz2BZNx$-0`> zrdkN##q2H-oxF%q)#=?0QW;{fHcbxk#6kR+))I7ucB7BQ9?0{R(|+7xOW8g7?v+1H zd0nd1ri-}$ITv62@|EYLlhwJO-B19I*p-1KVsWprk9I=fZKbaTNuKE2d~##ax-N-S z!lfBhId;gazyU?npwVZN^muP2uvj#V4EA&$DGDso)l_yX@Rn2;O`L&2TuPlypQPWS z*Zawt_Qis$Jf_{?U2)6ktU8{gi(A{ELrN?p_Y*T7x^r^~P>fx;^rx&#B7JMCmJ4yX z2^iiLEUDF#RJUjQ$@DxDJA`uIKl(h2mJrwR|E`z?pJQYNMT8#^q~+GS9EhZnB#zaY z30(|6;O_6slv9(&XK)J zwK4!}me_Yo&p4ykmRxv9_Og|>)C=JLZcSc(O-21tW7?t?2VbN-IcS-)6$9uTSqs-|R z4P5$|ULk5{cE9Wh{1|lNHShgk^mcld0F<2V%Hy3pdvly3>Il@6{9%baav+xP!NUW} zJvmnJc6no+FmPnx)E0bP*Nt)!38`oFbt1FPUeH4_1}RSLy>#gl=Gau!O%ndJ?+HKN z)<++Hd24>tTcH{r_nN~u0@1)Q)3ta#4}?iWtS2w&+SLwZ)}k+Chri7JHy1aQm2U zz92)|L|E}88Uc$&r;mv%8wF4&8}iOT5OkS=gKpH_TRAPTSSM==g`(;R+^G-1gZ&2S z##9DlWHJ#)zvXf6Ugd*5Y=IhX)%S98$76357M|Ma{Z>+3m=jKy(%%ASLPVX$bRt%> zs)BHQgpx^Dx2E`FXQW$VZIHZIW7I+&0E-EO%pwC;fe?Z63r1?1t_wUPEUs^9*DYcB zE#KXu(pH0$*1Z!r3~C}Z%yW^G^0)OA#grh)cB9IzB|_lNRtURe1}}))_3dy&1|?4~Oumgv ztSH!GA);ez3p=l_msLzl#yU_1IYI=2v!51+ez&2)SZ=8XoKoj`ao^!-WOhi_mo;p? zVW$5?-0a)!wxEbG#b!6E>H+QC9-B4zLV8!@T&eM336urdUrVUq!-jAaA01$CtG-;? zb^ge+U98;89xl;wdtryzQcK@cItdahzuKSO&)zJ-W+44A)RF^NXk4iey>(ks_^LC5 zHYJ7gj}8mX!|X_b>O<~kYFAZ6 zg|@?H7x!yF#it;N69I5iqSudD;F4#FrfmGzlH!>@#Obv%sL++-@kl&taIW?UaX3|q z6t6dj6126DxpdH(i6<$z%dSK$e(g{!$)m{REuQL zd`h&cme9qac_iH=ke)A7%M2{ zSM@b5W?rrDI;MabvSV~@v~|stDS4}5)8fQ1Cx^LbVa0zVU_@mJZ*ENU&={ao{UmWD z`guf62ma|!W5_(Qg>GyIZYak0YWba{k+ihzDq#x`4R2jo%pb@8#K^afdk{tFIg)6S zS-Ff_)B#p5Tj=oy-4aE%Y6?oOH5>$@?QK&NmIHtHALGalss~j!?+Kz?hhx2nEx|N& zfD1V$tj=**W#o?9&l0b%WBtq>Tx1qUee8_@JC+Ak9bjGXg#CLV`Xy$Ka`Gnbs#Ae3 z66$1+>8gdqWAzny4bSpwj%KMB=i03I@S^p1{Y zyT{WWo`iGN+VMPfCN@}J?#>|4K75|v(rF;X+p6|(0Y-1xYaV|bHuD!`BG&2&T8A%o z4f1EH1`XllHB~u-Qy~(?E*?+sRBQsY6A9hu)h)=jz1Q$$>zt*n5llWrY!^zgf)ZZN zvio46SP( z15^s=PSD#U>EF|@u;s;_7-=C6Gmj*8tkDm43B(zR>_?m3Y9tU+%?S*AGLg6!m7Jbd zQq;RhC+f~$#FXBMC@PMnpt*eaGHgMmmOU?Nzqy+*q{!#)OwSF`P|i%Dm44&+O{N>S zlF`K>3fX5>EjI`c82L9sqO3TD$rqYpcNBmy`*+O@!R6UTZLSyY^}A9)5}LjLSEduZ zd0cxc^lgey&PC(aC?|xZW!I1mqa28$a(<#y*QQQuKVNHLum${TyU@QXLcGoGgt&P4 zIf1iiTS3%@#M2Il0-d+3>0M-2)z@x0k?W#0^c|ntsv`)tvz8*B&$8^e{kwBbYP)8U z3u!@}iA6EW*4P*C7m7RV?&m@_aoj!Lnn_9O0F=Ul^U5}^c_`|1^s9mEvF!aiKdb~A z2vo*d!rza?gq+No+>9OTzYErcw$E#f0gR#SuL=o(`NDG`M@w+o;zf@A=+$m04Euv~ z9{=NNaeEHHeqcNJE{1R&k4aw{A{{uyBa~I5xFOY9P4r)53~&`SNnUmEnS7D86}TO0 zTV@Mo<0sUymb)_tJ+yUT4pIj-aJ(*SsR|G$vb2{9Wg_esN0+rC8A|AQr2#5Eu2YUw z$8))IKl`mH*}8_5qj6u(TZALyM!GMY^i)ZmA*>`B$#q^U+pmvx6hTYY5GtSl_u$;e zlvZu}xa3|F{nyb--Mdw_UH+btA+woB8R%e0%$e+G=fm-5DNBppBm@`%WAtj)=H@|7 zRV;6X5M43wFDxv3!5@$0u!q|^d0Srym zwg%Y2;_hE|PERjJ?PCxYoDd_^hDPSNr>J_GtA&@4Lw3h$4J;>Sxq(UdQfx3^oq>uZ zYjMr{29+X=65T0)w!jufi<=c@?yUzL5cF6JUjHto1$ve}kVjcxo!q=lML>NYGM zc9`t3;$(g<8%C|ZV`x!&dls%o>=WOr&XhiwuZ9Y7zl9(IuS9hhA!zB2iPUd~-;Pf& zpoT%Ig-Ynx5Wa^T0c>?>gn=A=QuUuefML}-4^NW$P+c~Lv^~T+*V$QXsLg9e7Nh(G z#cQqDf=251{CS}fNxTIRw{V_O1S-f?`67^;QfCn7&m%VM9vdbd)zV< z*24KAHdqSjK=xgcU(*h)M}h5Qca?x6%ue@=wVfW1G?A*B)K>YkK+X`_APZiuU0EW$ zhJOs&T7cbE8MRAr3zkfsaPwZ!fQl0!jtQzBE`TWRF^;RVOW->@-sHt6Zn}=sS zZ4N1xlUin|?VdOHzeUXRfh@|kOAG_ zeD{}a>}=m))1MRrvx^W#Lv^82NZAOCD+m^Gi3#s`xFcD+X+ELdKQg}<;!)ulZ%led zxskCdm3>pl78Qg>(3yE;|N1u<^*+M-fz7b%s^gfh;n4pTWW(V23(oG?QiR@a-|fKP zw1dTNf-wiwPxr_X5&h#F`P0EbSBd$Jx!R46EA8Hme|lB1*Qb{Mts#XqtWe zT;%T&LzGooj`3B+wq;E!59RgR(emXV;%4EQrMMX!X&oNzuCf;32%@&;X6JhWE~12Y1o)uBpWJm>%?}ZFNaOuTy@GSVp8;bgm9VwRlh`Q{)dCqP98y>I zrXVZ=_v;j}RgT8N7+Q+~Whia^u^{4)s{8aceq8dkAriod*PxVp&>VyNF(sViqE;54 z;!d=9Wb3;Fitb;y*PNe3o~bdp4j;WY@&*l`#7geh(3pXIu019*5?DRVsPxbng{~i8j1tqkgaf17` zL_snJ&W@ccyuM@Lt=SXU(s5Wumgi5v{M1rt|Iic z_;gtNuy@AQpAW>%muH+OzcHTbWU)zO<#fEVEM+;8 z4$&aBU;d0gb+K_0?>L+BB_f*2O^1_j2Z4!WbeuOrJv1%RFm4kkDvrEE12QvT>+&kYz!5QlTYvsCEfMa+ELc*uXj1-a_rC)9@#yLBg7*g~KOQqo@*> zvaI9<1NbK_9*vcKhPh7Z)P+s8;Uy#wqH?Vd+vgsIA3CKGvhg zL)2P^__t8}TF`)iQs=|#64 z%XPWjY`+)|qXr>pAEdo%tJYZHQ|0{a>ewAtro$KsY%P~RY(81q!eAqEE>7ax##slK zICrHBquS6SM0q7^VRs_Mu8G;lyXtKE*}YG07``XFj}X$%n0vI&0QqEaObvmQJ9)il zO@CXU4U;8*jQBE$E(-K!?hl7X98%um%UYeD)?D%)(ME8{l|n9eAzGXfK*~#p@Ly)G zAIrN$LKm$OcYd#3SP3^6QI$JTb+b<=7=%k9(R1+jU};x0 zVeY+;E+k8FoIcNkF--^r9mDaMQP& zwd#9(YguVvjg8C#isP>Gju9x>LMoN;tAg)4w3pwxg=gQKMnv{m#0`&3w1rs`&FM{; zdf&5nQef!d&Ls9@f=HF@cGdvv*ZXE%m(lGd$fYf=hW#y~#td_-Lwlwmve`=AQJCsY zyTT?7X+PA6fSR@MgG?w0Ii4xIb>lm?eUr85iXTbK&LVUcu2cB|An5D?e?)Gx)1|lW zeDYMIch!jYcL_<6_76Yw6516@cX&6{kC>>CR3n!4?LIZ6Jifb;)hkh|DhN0ZxJISL z`D%KffYjX!jfzB5_1gb@x0Ppi6@hld$~*uG{Uu?4?{=$VMr(Ypkf*Zx@o3jsebbW* z{Q#O;P%gtDw%F%c**4G(Jb%j+_eD_UAvMAhKjvtWi|HzR75QHvi^#l3_5OrWm5_5N zph60oq@nzGP{9bgpCHS2mf`R%2x>p#o(Z_gAx!>|zUrnzSds1p44>=@5vbxSK#ImP z=1JIQj0^DcX11){t)k^chSI~4Jz3&d;6ok{^)utkOUJ6%=X9TMxT)B&Y9V_UNicF= zHlrX`LjVd9-tOjGPj2FPlzLs>O9LvJV?*q{B8YUhJ*^< zZ*bGuad^+c6DqHkhsptdrkeA0)!<3YxCs>2cR}2W<8@mH3!5KF8h>he@DaXxPGJrO zPbSDOuteoy`%e=*I3Dp_E z*Ah7bwgf^|iXF!M3F`<1_tow!s@#DZPp=xU_7e-6;K_;T%oFXO)6|$^Krs5nsvx$L zZW2DE!-{dbIRkp7c8-|2H|tT8pk+C8cp)I zoXk~$vTuOY{oY9oQq_t{0;PkbX^p^0vGnvLDs3!N|kX<$nZs+mb`+lTV zW2$rM72wTFSh0&PzW49}S$m<-2U;<-V}qj`z#LazQ@_6 z6{!6wCRJt?Y4@qbpMKE$e36?+2JZ~fH(8{Z1kvEbZ+l7u7%&6EkSIye=>nCiD&Zz% zWN*bLmKYoUn>|(gs#LErkctCV<=O8=*v+L-&e&lC(iLMN)-pX3i4S^fzo4d<+=wdf zzhWBWNu<2~*c_+s%Mwvx&EC4&qo7tT=NIOP12gdKPEoi0`8*lUuQu4^>al4G;hI*u zpN}3g2Zgqzn+JR2KYkvhps#%F$LS4L#&Fhzw>#@(vd)n=Pi4J9m|WBE6llUz)Ns&Fnct2<(r-kizop;m`EmEvh&$T8iR}G|TM-Aqk{Erh1M-#- z_Kgs`zUsfqjas}GGshJDCQ?FI>@-yePPYqcZ&2m2*;`s2(zHeA-ujNW`8U^7qOQqa z?GlNNlz6Y7fH!?}u>z*JgKgD)d){ARu=iluRVw;pcJ8TQ7I_OmQ{rFK_qA5$h2AKy z7*(~p{^^zfX)(CiDf&UQ5?K{0)Rg6_RuNPfRhc{uNJ)L`{r}gz#D#>AqCF11l-Khk z6pt)R$TxU2;DTQ=JA3UUeTK;M9WbDX? zL`F%KZvJ7_zQIc>V$emHr1!PLG@015*CUE3krbOH)6-PcNG{VXD5Gw}wj~$^luc&u zP5{M~q`kFlVrBUE+1n*=%7SrB*CF6N5FfZUr0jE95J_zPs|_4$S^o?jEyk zf{oKhvZ-J5+$p+0$3jSz82Mn3W%J(q;NqA z_1OS4bjo|rl87>0OxGRBv$6TeExh5h^yPk7`qppk)GG!H}I6oEBoFhjlQO!aqQ! zOB=?KBsGiap@nG?I5~w5onL~@osAV?J1X3SCpjnq2vYxrRs=wLtb5WKXHDoR7t^OJlO1PU0z_d&Jn}f^!{fr^V%gMZXY4uDWi;} z#ch@#Dk0l7zCH5nuJ=pV<{S7PK&DlQjq^%ta(PQAMX^kn5S^2X*pF2$nv;JWM}HXW znc7&xN#G1cvzDupZ9uha;c9w9^g?`)qrdWeap|uGL2y$nP@o}AW^PRnf$p2;zC6U< zDKxkv`xjLlkx*oDIMswA$r^L&8D5R z3~Va1C6pj8)k@$_0i7#gx&J{u%x>9M#g^rM|4|c_*qyUO ztp<`osDVh(QO{rtj$oe+iuipmOL*Z6l-&E+&H^%FJ_7;!u!<{;*Z%_MjB0DOGsuqg zKYDCGU;18~7>2tosfL%%&lgXf6Fs-AHFJzkrnWvM5=S zS@xsew(%hXs)oK-;$y6BW}QzT6bNr`Exz=@r|#}Z-;;5Ka2i}VmbsE?@JxfN=*xI@`KWle8M&%DQh>18`vID49BJ%v*naBS{zE? z5a0dqoH2YFB56=r^@DNJao*a)+X5Dk=ig8O;w$?IWoQpho~F(4#t9bq%60e670}zU ziu2lVkyeWA$+F!2?v<&m#TkK>$@UY2I>+Rh9lDn zNW?UiSoqQ0j?BD*N}wrHOz2^YQDW(9IEQZ-wYR^INbh&-g=pq+6w^@w?xOOG&d z6n8P&v=REI`|jIw(z4dlq6)xs1!h!^*p!%+A!0TCwD}$TT-29#UPw>keYb+K?CcE` z`XUEEZ4Motg~FD7d3s2t)Dgt-Br%KK1_k558;~R@y6WTq?w9sevWI7NVl=_xk@V)| zr2`3*VBCzrk0jeOrCm&<3(HwQjAG;KIQCpARC8-oEmR-Or2o3{@JZ8OSVOyz@NA{b zGsTU&5twxM9Sy+dw>KKcGJ7wlVLa^;Hpx3WKKZyGy3k|k(qwk2Cs^6>?%WB}V+o_& z8?83s?VI~w_StEo%b&{G4fbBx?LEI`)yGGT+ENGgvHA!fnxgfd-ZuqccV5Ym!M^cE zt!~$>}!wM!3 z;1v!@hY%PoShj<8uoXy24LkyB6m_98HJIXvzdd(3`yimrnT<6}UN6S5fK?4qa4L@x zLUfpfj=QEu-@>g=3T&Sn$K+a{$U6=RuOa3C^HuBK`0#l)*^kMoA*4RuUtx1q#QQ_t zkL#&}w_H*2?v}TavTN+ua`TtCC68m=brZPF!34tJjao7{nbWp19 zT(hjzCDNZ{b*_W5aCXJb+dNW#PdA3Sx z7aBce3+IglTxeng3Xu01WV)%=8VgGFUc)@bl)t^0O zYEc^qmTwUiJr-&%w8>D4y)8EoC(-jC}m3C2>Ty~cw(IM`73kZV&@0eYyX`Pr1dzjVE4l7b9}it zuid5-Db;!X>ydM3toT4;d5W*x?^DOLRv?#OrN!zJhA zV)ohT2JT&+9-;I5dWTJnhjw8W-#xAm)dkY~Wm$P_FVe zn)~dc@tW@p;?A`{A+~pVr^X`8I)bt!rkT_papofipB@&W7mv(t+L|OHyQK>bg zySeS{9yTCt#M9P5Vw^aGBcS}@43Zl6`*(5M{i$@pB|_g4=FWq(LGA`~r{6#F?B1es z!)CG^GQ>K$0RzmdLvd|G6nd7G=|e%Y+?_gr37HhnN;UVEaK4hwX-=6hBW&I{UB$&+ zRNG+;n(;aVq+&vrlmtkIfXbEiumb_~AVBOYIg&&_q>lw=u5B8LhK%4IKina_9OWCB{RaygsoO zEZX8Tc~UYuh&Q=YMQg>Doj&ckIp%Y*j?dmB7v_%uP&zsVH3hNep#>$j;xux6H8Nv2 zd1S-A!qCawHsNQL?J(d!HHSUZ#L$#A28%8n!s-4Vcjd0m{bp0kDmF5U%`4S*l-0>f z)|ON;_qq%*O_9YL!#gHbe}T4|qCT7NfZA-+dwq{5OeQETHc@<2J~(q0x{nyy$y$Pk zA2BavZ^^Hh>8+48~&20XKNROJm6ZR6M{vi@D&R0#3#`j)^kEm96l+k<+vm9|CA zZod~jC^DZ!p6o4T&v3ZIuh=8)>Q>8AVHV$Ft{D6g_Dfa- zZnLY>$-_R?cDeG&*L^J!$ z2+8E+mZiy;AA))ybIn}MwSw~{)mUKjQRAHVSj{(9kGAF+mHEqA48$GRTi-Zi> zdg{(^B7b9xjP58`t9eQ^8$AW0Ep|(4JyyBj)<7YnN%g!Bdc+UwpmsgOZC-M9|CBb+$nHcupHG z)5%hQA?Dlplv%q1$3p_p_~&tWpYy8u-yZhP1#OjeSFl|grA;4b|EEG+leg0_N%N`_ z>#GhCBk=%#%%wSFeUL6!6Q=>?8Xc$os{tSJSqK(>Y{jH7ZvZ{XREpzborEUXQ$?&l zFX&v=*X^A-V&YPBHljqW54kx^xB?)`ug9f`j<^Iw&2o65#5D(FKTF3+x9S7iii*_8 z78MGbq79xwBz5l}kl`WwXzgoPuACDXW@&}b!q#NIRh=2bgw~-*~%wBeSk#5)mjOP-RXD_)`&UB1W z)?N%o&y7BR7CDLmvOU|h0HFTMrmtCF`SdlVE!w(5v2`TJE|>;#x;l}C@>y{p&L^5+ zCp<97*Cy8C_UOc&;nDlLTUvFhRRjMbRm6VdbI;#yr~j0h8qjNF__LaR-DYcMgwd4c zhkZ*ntf;lx(*_H8ltIbc%5D#-M@9v-PA{6K9b_zunM&HOqdhl8u{5=v-7$-Vw3YL) zmM>HYbmxPuknzI@f$$LBo?afha+A$@p$QLl|6($%{aXVoZaX1dwB=OlV42dXvnw#N z&yRj4qKT)io*M^jy zIT_jAAaEK0R11o=$z?mY)m0Py&F0cWSYtVIlIGrImyh=&?c@f=S|9&alMmDr`FZnC z(`I)f4wIB!;Pn^Qq8WH?B`OY5M}>$ledUsq9jZ+hqh6wu!OoM_0g}i1k-Kb8Zqpt1 z=+FP0%&nu|URk@$i>;|!WWxwH#}wKWax|n5M5=pssNVHEZ&1TowTEwMQJ^M(Ag%G^sMqP`A>H&wl!%=@XP$9*=KZ`uo0Zf&IOxpr4k+k( zL5+gg*W9jMY!=owcR9?w_N1b z^!wWggSESgw2u@?hE2<($y-9TL?xALXY!nO&HgerV=mfreRvCx1ipXs_2+hO<*M1k z6Y42AKN{&d=h`n9EZBGBm+a=sdUV_EK~j!-+~o|~TiLJ|0RGH?+(OW=yfXOCqJ8po zbhISdLerK_n+5@G^xj;UqdgO0vg@|TF8_d5%s-~R21tNsA59+(P?}6v4Y7SlbgJ1+ zGZIrk*OJt*Vd16O0DcSrRh8ItJjfB|di3Ss+tyOX2B$DjiL%!_U)3nXnI;bHje`2@ z^;-)3k34;?K7ZAgtuShD6ju1$4q_?OgX~0wdRxX(HdXt+g!GhNR-nBg8so?Sf`CU! z{_CqOH*Navr+XH_)XIXsJ?%yh!&98Wt)Z|Z^WzJLP~SVdZ{J2IcMMV@_hN^sxwUS8 zCIvKabTjgbmu81>v)=jP%fCE!w^B?y0Kg8g6=wv@weeH3qW`qV3h)^b{qciAgA*!{0wRw1RB|778eRufh#!uaDmZr56bWAMf3JdU>dV z*6In1j-mKv2{uCy?tb@GQMn2%v!&YAMVJ@HUfEO%gfB93du&l#)_aA@9+v2A45(Nh zKemAwk2&5has__rUVp|-BKv42PAgVC{9P2{O?c^)9WSa{S^^|P+muHx7`+Ih%ZWK9 z&Flo@|1l}|1ImNVr&Zm`DoUuVMe~?5pO>0Jq$KMD`;e$6%))htK;LEOhqd3v5qI+K zkT>pAU3pGG|BBXC>5Uch^$(SvH8bKlMfXW}G@vD}w)U~BW{9>?EOe+v@b#%+eI@30 z9&D5!#`E9+^(`6`HP6>|LJkmZ)jDYJ`s=m-=Ccd)kUBdeI_G_Mwy!)yELH9_Usw8V zn|ePGHD3Xnt_yonGM?;#I-1~5Ugvg!Nf~GiqhP}c1yx{+N`N;?F2UoHzd)wn^rt#=a6>u_&a6I$UTM@ zLx1Yf`0^bRVw!`ToJ(h9Y%n2{)!H-V#DQLxqwl$@J?0DO=MHg3eo;I7xQ;Dlgwi|2 zm4pP2;vm9gcc>!J?<)cW$madpO*8nPYzA%ehViHcU-WDD$@R5I0ub|W&HN8ga=?A` z&p2_tC*O8&@MVPw`wxn8_@NcxP>bFZLxWE6==gQTYm2J8#;{5{jf@-t=M&B zkDb#X<_RW3U!bMk+6wwGfS#gw>mBDWZpk*6DWl^R&9Da9EMO2!9f!B&Poe0+Oq`)Y z3IvnXf14Cilo2#yROA~TcCpMd6R<}+D|l7WE-R(?Ht<2K^Qws-0Zw(t>f~zI3HUH% zD`ei$NYvv5Nq{e5q0_?hhs+Yqp9XRQCfe?lblkIB0U%VIPaAk*!8E{7ibZ5Q|cJ`0F?)n~-8L#$O0ohLL{r>;Q)4PDTQJrbP=V(Tn z(QQVSWm%SGjpR$>TM`jM;>3Vp?uJru zye*~O{w=iqThcC##)Ob`OG&o0OWIOAN&-%oi^p+@$FV%;e<$7N=V4-7Gn#YGcfRla zuIHTGF|TlUeh^#5NS#exC=;zE*d&&$%UtvuDdLTdy9K$=1tJlY{g7y>eqfjvBGDzE z={kaV$xR;$`Q*Azgh6g9x>ZNxb&Jl%d1PfKufy4X$BtD;fBsn#*N#i_m5xUL|No!U zXboRuq-qXG8)}Yl;C>_r2|)}n?-xkSUE_f(=i24CR^y7`O5j?GYZb1Zu*h4g_eNgN zhf%2G7kT|s{6j9oy^C>Of=dmH;Vxdk5)WkX=Nep%xSDY-!nGXN3S293t@DdmE+ax9 z9>cC13EsHbeVK?)T5+}G>b~$qjwheS>ptV&U5ih9adoI*@r&l!aAS%qQ8sJZ*lvyMCbFL zb9IS(GrR}amH6Gg+=q2?Yq)Dk7ry!u?)3BIDu0I8uW?(y@xq9%Bm)@gm)#C5fte6S z;G*hAWWe?hd{ToUCqQ}r+rfP5aG;SDV-=`C3 zsvp;tXm%qpFZ{lr^jB@Ha%uY|{}9PsG_)kb@B4}$kD@2$UE#=u4p?{^ug13w48>TI z;WPK4*LPriCZ-~f-}i;TkDm$rd<@rVVxsr`=l}`l(24yZ6j{=bC-#c{gZbwPUUVb6 zF$B8o3m@b6ebwKJ$6aFBWFrV;hL7+sJ%|sD@Lt?V;BrTt;|Cwchx^d0eRx3zFE`ye z_|b7(twjHcPC_m-L^1tMxEAB;z_kQD)qjGbI+xF~_@D)s{Tq=dNz79kf3)FR=05e` zB8h{_d5}AQ4}Q^qw+CN6MocV3?f*0e_vstarsxibH}3W4N&k}l{JtT)ICD3?Z=g&0 zC3dU%6^tGKVQvVIX%$PTP}QU+lXYe= zt|Als!lf#lEf`EjlrBwhBsS5esl|xJsKJP?8mxd7i4`W03d0YXIE6SAYl1XVq=l$^ z1{flPG)WTpJ&CX9sD%4b62mib{KVeSxCbDo0kR0+N#Pl{d?$c=n&6NE86lQT7$aSz zqL}Ck8s}^#=uFXL6o(-Fy)G1a~M5iX2FW0qp-qJ z9uz>E0n(0vxPwokoh0tXF0}3TF^PWs{U^$c@q8NhQs`qGO}Rha{>ShR_i~?YM4ypS zz;ig$0bPk-xB|2p1pWJW-LWR|oQU=VxTFgNL(eQ`s1|yy5Y7|`Q}Dme1PnQ(D>#-C zUBv057n*as{&!L(Ko%cioP~K*LFatNrMQ6)R71v?K_?9~(A{xU5FZm>QEbj+1oMvC zLt>D8Bhffg;o$rc3aZ&Mm;~=qbtn&4K);yo_A5Q5u;*x)1?Nnf4eDQyH3 z&Nv;76GAJbf+RSSy1igD9NfI}i6uRkPD2+;?UO$5z#q}NEZwNoak=I zsBsqI2qh-oNkK4`gmh|Qc%a4*u{i@ACd;@-Yzz~G02O7sU@G`cCN^4g+0o_i(EqWg zCXilY$~tE&hJyB-g3d5t2U97)PD-Iy9LRu4MVlN^T%ij=5LDvkbR9}ONQGeK+rTf7 z_9Ix7W>DXLgQCV+z&Hex)4KG63BGX$Aeb`9>QWOkNijyeTZUL~Ig2fXX!8X=(>Q}* zBJhL>>PK`1{Zm0L^j*LROsa)UBIz8#!VRbuk^`YYBo40+;USr%qu@upl)CduO%Q=Y zv-}`#TNq;(!M;rx9B65RESP={FGIgTAK4`$dPOW11cc=PB8eB?C4of{hSxEM3N=*H zPe=xgM=a7s44G&lH1BrMQa~5?yi9b-x}7!Z91*JJPw(Fx{P!)Q2n47e9@`OLt#K@m(D=dhw+;tgHIE`S{1unUw0 zZ3rj?Wrp4m>`vm!FdlPU(EzJKO28=S2Uh$+V6vj&V7n4f4t!NI-TB7kpAuvqvOhqBo$ogZw z_#Aal4`k9LO_t+5jdbxoC;&_rF^R|E@^}%t29VS>@1Zn@WL%*( z8RVFv57}Ep9D~!cF(lEKsQ)98aAx)}w&yU(*i&?=2tm(Y63Gy#je%Q;HLw}H_68{o z;J8LYUr2!rIW%ukEP(hw>=Es3yk9^QJw&m9c>qX&1Sp$!IU{>fry+o_0%2f7jy|8! z(nK#{fIck{DuDkf2kznwK_@-{vKlz##qmf>G0}Jah>z3pH_Fe3q7b0+vt3Iu!;QEy zplFJS*^%rKVrLy!S`B(@gqUbJo6LbM@L#dM0PG+hdMoCtsuU^zfe+E~w-agn)k>m$ zUnc#B9%y#m$uz`=FfC8a>;_7Ea<0%BKo4Y2@T;+PKV*`c*kdga!%#Gb7MJlh(MEZ* zfa9{ENhndWquE!Bza^=bZ%K_J94ZkL354{XA>vlwz#TUxbR5A7na2w}Iaj7QFcDL< z)fu1#OF$7Mw|)`D8JI2fI!WW+*ZW}i zRe?rf!T@RzbTx#&$G!hU#Ie^pIm<;M+f@)WTi;^=e+(`|3_v-)WlFsSRal?uk7X>kyIs^+Szc~>C2^BKZ_hcuuiHLdgU}U`m^%0>>90U&Wwm+*fWS{15)IbsU&)%26o%R1pUY()ui-XUlT>4m1O4u@w5*9whT1 zh8*Y*hA{+^ePiHGxVtb|vt|T9YH4F{VL}X!Rs$$>>g0Hn8lV)wL?D?vzn5^$vN%mY z|F9GY<}@nr6$oYu;Gt-DbsC(>nG|ZD&@OrlruATC2(v$wy`ChrS2JJ`Msk9uNBdN( z4>F(DK_Q`^o+g9O*YUDNck!m$_eS2u9s7@Vh%;9x0e-208)?35*Po&cy$m zw6mdDN3=WNjNv^VN6wa{XT%65m$S#;NQs02_^=0YO9HqSGSG|s3ZQIl z&tWZ@&1G6H1rm+j7cjU3N0A?a!_VIpV7C(yUu=Yl>-y*VhfcNxEePV`S-t!>tp!ZwkvhjQUe;|2U zReUkxfmqOi-xIrNL@W((M;|D^n&=@6m`A49(t|`Cs7^T)a1M<(a7+|&aNIAjQ%@lJ zYya3rvS{b8V;Y694oUN3d36ZCg}jfsv1DSl93z32uh9e43YpO1W1mA>wYc)1wJy`zzc>7q-_>16h1(h2%^{$P< zoUy4Ttq^0-R*>54cUti+*Din&M#gpRK@r+98*9bpBV?&-=inrXzQ8RP?BfI!0<2G1 zMuNqSKr7fRS_lypoWfA=5$eZlil-zKB@5nTuxBqzF=7^AxpdJdh?D(cr~u->_q{~I z1hmo~?FT$@2D+gfzQ$LCu{(L$kh;Z?V5reQb`}qaNt!rx4yyKi2$&?&@3>=7#||Uw zycwE66ET1#I6R2{FG_!xLlVbFya5y(`=b99D4)rNU<_n{lxbWk(3>c9~{o0kHPH4+th@>@0%V4$a-V{kw!NJR#$8Uci4*OTUG zHV}%_=cx1te~8gx9Ti2KAsa$*Eh%Wq);AElH?)CMKwLHZS_qQbPwRLxO#3@szX#S4 zj18`TtN?-hGHQJO7!qu1O5YGO!?5$fgo#G_ZzQBuhhS{z#V<%Bhz3aY0njYo%0q2o zmvQicC8hl#m^(W5K_mrac0S3dz%8d1N92q6_>5=!H)`KbC^g zBU=T7Nt?o`rbYVMB9Y=M^lZEu-~(lqZH@jkIBDG_)O@Z;$QY+le$Dv~V@gXnp<`CtQr#hJurWd>K<6aa_Z z2yp^*&trgR1GnLSIt(5aOaR$bp*A_!)q=Z(paHfRYqf!%@a1&XQp=m9a1i`H9Ls=n zN$1$VHwzGAA8dHL0KS1be;2sz(`DKzdPwuY=IFhFfhVB6?eZR=!8ZuezKy~k0=q`z z#xjsTs7}&?GZ(UL#pApuLFbDx7<>TmtzVE69k`3Mws?q#u3QIT361?3$B6cokWfm&eKNa%SLrByp&g*Se(p{C!(6N8%tRc_q4$&r0uI8A2?O%T5rh802*! zdvmG_fYxhiT-*~*88Dck%uMM&a4>Cv*V)+1_-E&4vS{r27@Q79)#&R%Dd~s8U(7>3 zzati(kmCM0rIM#j2(pX#kDG8?vC)~gZyy=$9NVF~Q{W*~b9_K|J zr#}dGAvzw=p1^|N7?IxlK>AE@>=|)0iD;tqr(ncq2o@dtDi(GTnVyh5!Lj`STj^gz zJkAvQiv$RdM2`nrUW&l}MrysIxVuxyLnw-z4R$rOhru^KY?2y17C`opXLR5@SU+WW z$M}k@VJ(P=baU}PqY?ViG-Ys7t(d**=>k%W&Nk=6VvxpBwb=(wC9|u-Up^V3%hp&X;V}K>FV;-n( z!ilITk3Wa_x^y5M8YZF0)^9dLcjJHZU067W5aH*>p2xJ&7p0rR^!^B>$)MwA2p&;n z=O057kfd1Bo)cwVkp4B$3eTN*fG;_c8UHu>m-qfjDgdS=t~LT6Ugx9_W!}W8OJQkD zmh#xK2!`3?+Pl2NqVX87=-8E%w}s;OVX3G%HymphYef<9kLWjLm>!ccD#FqcrT?lX zJ>yT8?Dee z-r%xd9hi3af%Qpu;nmS&sFR4+2V-!FaXN0xFGYAJAMHbY#A?eC-}u$z+y!q<^={@X zismEaqcg35j~wv~>awXEdLZJ1t(lXq3~DzJRr+ff`z8#+6B+v#afB>A^tyCY041p3 zs)Bm9ct_BV60>|jdyqKeh*@SO9*nvxf%=&3NK(*?Q2}<6{ufS?9lM%1-b2kk;xi}^ z-i}3)k4<>Lh$1;hmUae1)Mpp8tw6?_fb`9%^i~yedGA+ABURE5s(42pUxyLFfEkn` zVQf>3l@QVymm32lA4OK&$bGU|MSrj`!tk0d@<5F<4%Nc{qloSoEH%@q3B1{m%I=nS4RUi#md-Sa71Te2@OV9L|{;)Xe++nil5`hBhA2=tF<2O zzW@GBnI^Chg95w;vd_U6t3JHJss;L2uop|8eSHs z*`?C&ljLFg+4TFd@jpl92+J5(supLB&I%DUFA~naP(OS|at%(<}1vol~ zZpgv}kAAmiz!c*&7JasAYzIk3HzuWys}@_OOD7qHpRAdzhU_|qbn z%hT3~iO5#P`y;4+?8Zg^MS2)VQehW&rskxr)zUYjP{@QEloF`~2h9vsTwINu!9DcP zM2g-Wl1Ad$mE|iVfH;dTnFiZ^x0R#;WQg;?Zj3%w#cLG_+jPDNCxVw=7a_qIVzEU! zB=d$GeLh&c3^xA**?FlpCan&W=CRKVv`Y_TH?ic8aol$}l13=xVeQji1q+uH>AIk# zSEpd0b(u(mNFN1IjUGXuz!IePD#;0lsWcFDd0Hj5*fL%I{n(9CLe9R&Ta-3EhH$3G z05>2!%EG`;Tbl&86kx=_+tj_e0* zrkQjGA}Z~Vi4zbyuRn!2yEVhO{xK90z)h5%jK-J;i&l-|=fujK0Le>f6{wNjjE=v0 zJ==ou9i81;(9aK)iWGZ09&ng(Os1`L=wV5veDXQpr%dW z#f#y0UlAp0`BMpEPeSnQLow-8lwL-J@|&b9T3a0=)2vH6EDf@>vS;cb0%(NvBbv@R zMiF0_bk}~9p7@dKXxLANi!9_p7NvMt8j&|+)zEUHoh;vtO*MZmW2-Qc9N~(WM>kee z>=#2G*m;JBU-dZgc{g{G#t0@bWNkN~-Zo`<6xUsx6-C;6=vpE^eIvz5~)5J%~t~t0?|*`NH-ya02eUkJW2|p_53w}tR;agEbDdUmCYNk8?TRjxbwfEyL`N7a7>P# zPf9O@3C)g5?R6-DksgUkKTKsT#_MyeJ7-D1sOAl&ycXNd=7d3_BVgt=m~5c(DS{@H zfMmyWFhNoV*!(n?XUoQJ*rOq^V>XcjJRq6-_6{KtPN-cG4-VEH1X}6;S=6|-x-?jW zs?XFzunK)qIQ&L=FRv?Ff5;T+XU3k!K4doVqB?KRurQgqre6<@AI($>g66Zhgi*Z0 zWhUve5k!u1Txu`DS)X0~FdMk?z0wn5sj41}sU?Oro5_%t3NdWGWA(ByEJov2xLW|E z3CmKDq=oDO=T5R(>m-|2`fc_*o&D$d3?k|deH|>@3$%VeAE(-FB>dcEuv-fzGE0nk z9orFlk!A$OeF@~O;1f2j>N8B0rScw{;>rW!Ex|=iEoN7&v z7K+H;?hqCxw8zNh<4*CPADdx@Fv`3{byJp-SrQnVFX$5xQf(IgCwE@f#~zjXLV1(2 zqueXdAG=G0EifjIccj=9Q=R)^vXsA{hs&vw^Fn15dCyAXV`ggQdG@N!v`Rr|+WWip(!S5YgqJ6}X&v7z|_8=HTzpGqS!=&_r8SD#9+QDkynl13w_# z&eMPf)s2)(-v~&{Q(sIXrsSrw!CZhm^iFp;3{_-YbT$+bD%8APiZt|8kRn`=>2u(J zlX;+rCPSTM5A}o)iB17#rO_yOTALH__3X*LZu)lykVucn<}@Ma33;+W(ishUiAZUk zBXo?*lVxp3000svvpiNgxj4*u*!==%dh%&K!k2xYmR!jnoo0 z@Bx3&)HpZ4gl6&sYg#9$2CXzB^IeYgZ#5zET8WeHifxDtBWi53)nxBlgj%#Z-YxXD z!&Q_|8rnW-rz}}DFo(x7sT9!;Lwmd9?ejP66Iq?m}l zpO%{IzV8TP7deGSD(oOv;a~v|5=ZSPlaw0<6C%Csn_`OZINLF<{YMBB)+?dfWUcSLWm#&Na@s|Y=GYhJ=;(~nWfQhnT@ z6FDZs-^Q_Q(jG;E%SDAf1Nn6M>KyV5DY&M_D9pZH(mTm6PaY}6=L9k;lM|G@9-U5; z^YCBb4ZIhRd#2}>DrwvnN{A?=Lwd?>m<8q<*dptkhy z$i_-aEl%z-WU|XNZuJm^%r6( zQ}ayd<$N0>64U_f)d%IfE`r0ENRT&+h>##cM9xt%vxD>?d3I_UeRM^aO8QaX_!t6% zC&#IDag$WtC{=>I)+3d}5gVdh#IXy&^8XacS(JpJd`B-*% z6Hm^pP|t&;GBID_UJ=NNwK?>2ft(V^n*;$GgHiBQjNFfo9GB`O>o*)>k80e=K{~E8 z@(v4osJ?B`*k&2K7slnMwp(SkQx!C))){xI9oZf|+t4*7+xKuE{>6X#@H`tGIbB#| zG3~A5{9D4C%&2JAp>fHctv6={Yl2L5r$-n|oj$Lv-p^RivHAH0eTp5W!>rK1i(AgU zakw~F0pk`V&1P@O=Hx8vAqD5C;LJ?T&yf*lYL**iY*abIw7b`yW~DNG-u;E6-2TES zH&sZREZj9^(OK3l>*I-``wdni&cb(KiNC8JV}%n1iLpAS9z3wjUc6t;UTj^iZ8ll% zIGfbx*U3w7eGe%KpQ#j8VMJ9<&nk*BFHcR4Gr=iDe;z#B;q6t-364xT z4FnN3rC;u%=ZB4gqc2Qwe|~7==q#9Idud{xJn+a=@yuu;KQk%hZZ#HCmSa=retUKA zzMpA_xsTayZs_BS2Ma0d>_vH-b?uwlP0voeeUfgPl+SACj)F(nN&TZjrT8xA>~O$> zY^KQWH=PDxPD(q=ZXZ6!_xI*Yhq+Jg%^y{jjpsx2zZRw@f~VgxXHj*g&6K#KY?U#? z?za|t3hx}1bZJEcct zM_bSrFzmG!d%w))9od5g zV6&#DV47(2=Y+kiFe5nKW?>$%&bBWY3vA*L!p5u?lL{;2O>Tj0>9N>apToB7W*=A! z>}}Wq@0m{N#Q5xl1(ttd8lqHE6!TtV;UJgWCD?~$ODT{Z_7T#n!vHIWf-@P;!eRM0 z!h%y@FxdMj_h7xMIW^UrKcLMS&j@p+;XyWXmK&@*p9SJeR_}>ymdU$+gH2VRwpE*RX3I=M|6$F*S1FW^!fxm>XCJvxayP?%hldqw2earLJ0WA1 zVQCy-YOlfUq6~~!NwssJK6R#KbM}pF_&7ta*u*Sew{Q+RafAt4nZ6;gM@EHyMSilk z$AFqWs znH`y-r{>RbhNHdDnQM2$%RV{7O|UiAU*uO9J3}U4o&%mdbX2h6TYg)>+SFgq>$}0i z#xG~Ln}r4GmBK^28B>lj`RX)=J2bQhtab1H$%7NyZT87Ddnk<=o9MAI;30=Sp$Q}K zeI59j69)y>aFDUCr`YW8gj4KA|c9|Oj(f@W*n^o))V^%Kpl0kDzPrn2H zSCojm;eoINdGQ1U<0PR=r84;w_Y?C-2Pc5ugQ`9&xb74&<} z-wKj!*2;;a^5A{O1P=3jl-mpI?xK9p-fhNY+4@hRvZdFW=7xu@`+LmEXSm_i@Oh(K zvwQdcn{fX&t5&f;=FT5Q7>9w49g|Hd!<9n8(&pF#0w#ZD1{n4Y)p9-d5@Lf(BN>iO zO_bCCNlHWE75EYY8VpFHnCvgoWW>6Ljn6}jXD9H1pjFuP%r<8Cu-&`o>461RpDNf# zOCu(8DrNz`fHqsm!`7K+@_|yXVUyPMUiKP-H77711*<%d1a9=B^ktKiQ{3KJHYI#< zYPD_^;73S9k>(lh+m>}w9nQ^4mp52n1w>9ybJNeLV8j<@reB%nW?ztB+R|&6$C1;#0&&orE8O|O)#|=4KMoec80a2~88nstt7!-P%B_MepKx_axH*}^jA z*cNEUlh(vEZWN|DduDEnVojDxv-BSd+8lj_mAT3SYf$V3He!>hrLwhfbnOooxQ85a zwg4oyX=SPcMG8_Dve#JeI!rWM| zG4q0)QhH&uGz)`{WmFDw_m!!X?oSW)gj~!Sfy+8I2{&M&fC|by{5-{G^Ndv3Ha0%N zRHVD5m6EkbFc$=SmTu=tdI8k4CfMAB0&9TD{rHZ?oriXF3Q`3eV>2X9*sMa%7u*1k zV>lDC_TfC^M%W`{YJzbe7My*|BQsXs-csW`;>&w?dp>t2(BKz5Imws8hhW3-AeuM_SV=o?(sA;U#W-l3R2mIoE~Fl_UK8BaNCGskAizf5OzOPM9*Jwp3{U0=XbLG@zlw~Gw%ye zs@7q7&u-;d0fvLc4NmK?BQOY+be^z>&A$k_wFJ71JE1_gJ7c6rB$UA`}ZsBsTDx=S#%H-+3PiS(xQQkStMWvI@()5O_(Sg_yc z^hxS~Eg|gZ$@xiP+n_mhh_f6-@ojQ`PT$r`j!=Ds{AJlAa58sMyIgoqu%{V2I)_-! zLx{QldY&BKrRd6tZolm+Rc&r|o-&(G&!+b{9oA_ znG_Z{Yhr{{TxC|DHYZ`Oo#A%F;IV&+{@CQ$Q3Q7vt3wAy48dMd%qi&4sZoaNyQxCP z(S9czFDg*CoC6o5#K2t(TxH*nWxX(|>g-(=)ej5X74l(egeZcn9~8`M3i`q)T;*@F z^)kMAjzeHddq+0dIO?9~ss2!!^iHExS|MkDE9kpqYqxBCe4)F4n&nJIg%Uso+X7)T z)Tw-e;P%8dtjEX;N*=DhQ&{3a`uhGDz0!ePOj#&o{H7UncAbAA>RZWqCb z^R>_-Y~+Lxk&TmImowWkp@ddBC0GM?5h3{%VW`{g9M^egry+_Lb zd~nCMp-5_IdVEGJ3$Jmn3p4ttVolRrh0IP1gS%z2r9ygl$z){MU9g~?+c6bVl*=BLyO?9bW5BM7Z8NLYEHEfmy!g(;yj#m$$}_5|3h zV4kVmV=(rRqwk-vHSWwj{H(K=sJiuSg)Dp^7^BKwi_3o6;na)r33VjTCb}yxP27WOG?Z6r zuM1u5!1UOtY)wM_5rvJ&iq1CoWSobF^-78v&mEFm)IOmdZvF@N*a{)Dq%mMaHG z&d}$2HAvVzRn_AYvaS}a#kPrk23#P+5Q9?^j&mWH6|EQRcm&{9+`9#LDq`^w}LT&8YkCw;f~6cc_@s0 zVWH^s{1Z3-iEs?GTd+x`r1th}3xDH!)e1d+P}v8pI{TuMVK!I!olrSXDjx~vBr@P{ zqfGrx*@T~RR0f&)N5DFh+)L^lt*llIh{rpiFE_`?uY?D8sAlD$V$RKDA{Xd8o74N9 z=`n4t_@IDXvg2ZiH9;LAGz1C;Qa=)S+*(H2SIJs+vQ;x|< zECQk7@X--NOB_FmqCb=#T8 zQZdvDXH9a>oUmC|3MX9uKwFJ9T$2h>p(kh6f?;1%Aw!C4!c->bY?AAB3$V2wSavR} z)*%}Cq>wSWgoOi$gv=8Pu@~FLSG8TJaV)6QnCD@AN9nMTDfQ|zliaY~b&{)q&$L>_ zD4_{-@0JlVQ6UzD=frFUN~4S<+(KCsK#UTQ{-kX5ju_4vZm7!?3WOVarCbCjpl-rl z>4Uxu<^K_WC?J6FuhTP@K17}qGT5Qzusep4VGD^>lY33I>7>?U!AhvW*_@|6N@7*- zk#2CdqE$xp$~+xjAjfw>i$I|qh8N9QhlwutnDT9iL_^#`>jk}}VwUwlLGSuTuN+#Ut*amUpEocySObugSy(MLh2-wJs)M^3Z%gjX0i-i03q^d1#h zK{;0%Ia`?B!B!nFAP2~b4gyal7ZG5)3Q&R$+h!E-a1me+e`Z&q063bRMVb6N1=ee* z1sGN(CJX|1$PrLdt{}V&Lt=MDq|Il-t_2es0 z$mqN|S|G#k!yen_lxb;1e^GECo}X}^Di^E$mD*t-98oY;u;N@> z#W^9IdRsOy?DvI#FH9rhVsS%kPR=`@AhldzhZOVdJ-z>M4}vxy{7x_d|MLi-^*hs? zK8ws2JgCgbQwlj#t74^D1(Eo&a7=~%d|Nh4j?O-UgQ;c;y=I9aEr{Tepo4!ae+Ald z$b1?Qk$ZY{Hf(HBGtRRLqUm_Yl*3scC}et8(Mt=Y0ytu@@P~j{3`OcL5GuOr+SCvu zDC5#Jv^szdEg}irT`)#nmG@hvpOsW&ijfI5KZ0=H3F>?RWE_EkFu4plW;}$Hz>H9N z3y7z@Gkd0}$Yfz2B$>6z3#CWMxhceMQ~F^96xcZdu_`!O=MhMlA6IP7-e!%Dx|!;Q zw*U+_ol~~=SC)YTIMsx8`=U~r>31*}QFnEqwsx92b9!kl+5O@IwLTDzaG203H@-8a z?1Rs8K{LLo!0*csgD_5ULIzKpFDl2d+zu8QQ1MyCU7V+#5RN%d$cbLlC!0k~{-1N; zAD4SAR6ZV*ACr3#dLorkwt#Ys=+>IE*U>VvfflDbhvc)USAad`6m0V0s7)Rw@6*9v z$nQs77uyA;#XjM3Y=$#m3tB|rdV^OV;EnTjnWBD?d`%Rw8B=6 z=K^sTm)H zgPufvmA@shD7Lt@kqWhSO?_okLKJP3G}jq1+@#^s}uQT zmA7G0&@1ui;$$cnUm2{rD3$2oBK|%CO0Zx4A_(65PjIsGi(-bEKBgqmit zD%DQWd72iRs^b0--5luqXK_H~zD=JU9nt*>f{c4k(06A%&I&w1Oc zJLSF=-Rss~>JCw;<*HKtKwIYWV59r=y373WmbL~_tH*6mZOV({VZl=uZwofk+9sDO zRH*B?!vAycL<*G1MVq-L-s1ZMo!|tzZW+NNN+!Am`U3 zm;jEaTQjt&sv8s#TI$wy)pb;5&~9y_iA&{VU)%9i6X>R_($-cjM!Q_SvL^eq*c9n& zIhx~>)j|z+RRzDbud7;|!I$JkYkY|-{Z*ufws&=S-TCi`DaUE z>tj8HKAURl;3FvIqkbg;UiNnq-;zv51dVg?_AsT#Hh_ZhmJBEdX2r89e@zDpIoDqm zscYs^wB?rU-?X1(oA~AkeTwpg4(!HSfB>yar2KJ=h*CNGNF-4wM(VYH4bhs~6|^RX zK53$#Hi<$FPpeW?NHlf$+q<*ZiXp z8lqpldoWd>YH6=t)aYwlKF}f7gQ1&KHDCycQ!soof*I=U^CzthV3K5`r&H-7K5$Zd zr>uIw%(=F3qbpgF_{y%JuMYC!?dBu7_J*r4>F8Q?Rrfl#|3Xbi{RKh7RCOdfy<7N1 zQy7($_l}~N;g5WCb@*O)7Dc(Gs?)PB2r~PFJ{i7#6#ap zHH-CC-uBR^yz52q%?%gt%w=yQjVz`&p8YihMS zc%MM^RDFAAgWR_=*kZJ5@k=m7Fbxs>|Ckayyu7xN)?`0V+PzQE*M>#EHwq!abn!B2 zYyz}_dpU@(fTq0d-2;K_+mTeRT^4AdxjvPPM@R-7V7iJ(;>xb*THQ4M8ku8T$$S=dM+K>j0uv-na_{D}(e`D`c%Z(G&qz zx3q^lGuh_{e&@fgAK>E?I@)}TQ4J&1hZ?%C`qZa|V56t@(EoOdsW@aVnG3W>8^*!| zaqpKR7)8oo{24v40U}-= zw|d&GU5|sM_=vYN`&IAf29xzDJ!`}>q6_x%mOy7uqpvB_c@55-rfmb?x zOY^VXM!G8tnk7`&v_`rmneN0gKdm>&Egtf1MY|`FNtZ!g>jcBLxOrz5ec%#>y|;G)r$2gXtTJyXvxZ3uz@V~)HOl#Hr(93Y4a9MsI6-6Ot0I} zb#+jTw@H~5o0eTfgr<70JH2VSs|oDaBCTB8D0<_KfGXfYyW9tr(BFtzfh3PTwpZjK z5#i38yVZd&q?AnG`kt#Uxpj^D#Y^)+%uELk_uG1tuZ~DN#LikE1J@{s@%Fyk%I7vV zae+opq`i6*^`vN181PKfn~HaICAj+A>g7eZH`X*mPMSWtGEtLgst;`nYWLijibI>% zB(Ohpu$gf6R{>0##g^{!yQE|Mj(kfr$aN~v7F>OMAMl1`pWth?f!nT(0{Q{`ZSA4X z^osSj_pGc+;lz$etc#0ONzaQn;$taxeIpPDxSeZht4__E7z%CaC1QB9cikPR}nsvj@`a)`B#Ex)N{p_1h&&mhy)^6{L%(=QNkNNP05tE0YV!j4Smw0K#F?g zAi-1(h#?N)_5$lSEd{CTqom32?E^U104~~}|L;&^BuECnEJFJY z-0Px&<`0##E1Ekn4O}R^I+%(FHkJLPDSFJ`1LYb5BqU*U)N;Ai>!mOFSJe0+ltV$G zDHp7&X&Ml_f~20%K*NwIG(#nK6emOv77-lFH+rE&o1tlZ9%$;0rVeRRjBN@6jhpD! zoi~t}_Nh)NiYjlHYmp}7fBR<2Q{(GME%K~_1p|vP&^`7{XWP1M9iP5)*`2}7T@TZ` zt*OhBRsQzsmBAW}4b$GRvZ;CO`u;#P6ZG`metBHV5FdI*C~TO_rlogk%fDEYl2?2c z_V6858tBr#YEj?nOPW#*X=#zRJLZbC$i=h%{hqpx=3F$CmNR|L-n9J4ilO0P0${1E zQn$-%K0Q)c?yJ2@sBLM_T>KfIkSO21ad3m)hkb{A@lJ0i>SH%;zG29BUHPyGg-^HV zfU6w8dTDS`(!UI~Yh5BXlXTCVXabP>D|C@`YY^sXZ8JpS`M>0F1ZN6!?WqOGR1FlM zmlqN2eFg_VFkbQc6P_BV^=pIvyUNw1sqa&?xrh4K2GQp)>G#*xr4|hZ2Z}_?{syz* zgMhU!>b_1uL*3C90$!g~l&&fxBgh zZ@SIJW!=m?j9)y zv0xTwWs$}*pNEh@NJY*YC$Qwb;dJz4|9fA_XwX1appj4eUZhT}UwdsfA!7FEC9v2w z(Z^wj)G5I`N`_iaZhaH!D@wzGwqkNT zm`N?!6eNo_HTuTR@#$5`p9JCU#M7NHK*t{;Lf_XDLdx%jk^A2HX4rCJ0=G@zwEfzv zgEW2Hbyc2(Pe=+vO(P0`g*qYL5((c8zj2SjOifQZR2 z%91RLaFHLsBfN;`weWg~bfRwxBUnSfkG%wb5P0!YmmfSpu`~QN^J*Ut#!iguTA=}{ANRaD%7yt(|-HXs&LR(8vE<%b4tC?JSa&Ua$m&erlQn#N1q_BnRXmakr(0{G zV%nnB;g(GU-{YI*fyKnr@_D{7A>A0f5s?R&QEl+5)AG%IjWsa#I_0iQmt1W1z@^~p zyDts;;BSUVGr>?2qPGQaYPdPJw63YXrPGrko-4pPk(SuvTZ6$4e|3X&gAZ<5eet^D zt0_Jgx*jYQl)e@bGgmiiqtY*eE1;9ALs$wfuUg&LPvg6TJ+8MP*f=_v@K(=i18vIqj>%`&Pg>;*;&yeJu#h91j$)SOGrn>|5Ra6lmI#*?s7x zSfW0+a$QjRawJvVeW_3@=E%+~id#voR0;Emv~+ct1jpigz*;%jB?+Zb=%|X5YRG$Y zM|*UYFW0H`t%f>ki``D>kx&QMNV8UigTYPvqy)&FYNW~cI>CY|@6M;MJ=O)N_lKq1 zuY&TaZ}0MCQ6!I*@K**~wMD>DSoHp!M6cK%$Fj&sstM|DDZHiTs?_cGZ44r6(3Gog zfaq7nt5=Xlz!xZ)sb0UVtc@K@G-TEM?-eyBSig<}y1)t5?2h_B_&()FHl*guCu{CAe~*Xc>{x$A?pBUv48@cuH5z3e>LGXw&Xy)_4IQ-2lVA_y3TGFZUa z+_nnn3agi^qT3?Tv`l4sXErDOFp4!jKMTb=8*c7f(JVb$(@C3ZJ944$&3!#uQ2Rpk z_DBpSicis^O~DmZ@HI6fAcNPowO1FP$ivKs;{YeI^Jai`OCX(H6@tSbDvqHq-w9>l zt054uWZiA_e_MgH{+ikj7*WfmJF7Fzkt%OALprf`KY=h?E)z`9mpiMXat~&p!<$~T zbUd|!i?kr-0jIet6<>P!*v~?+5UQkSBN;i?J=6#WYL*Vf>8?GBd}|x26Wu^nb>_CU zjcs*&6S%3Sy&L;PCj+b2UC$?>zN%v#Rq~RhH_>ey+oDT?WOcA6)xKhFBa8*&YpfN= zD2C{%^Y*P+-@WF_S}iAC7PU4k?OLL# z9b7ud`@2`t{)oT&Vt-p^(Wa}q9{K+``u4yms_Xx`vopIhJF{nJXLojI-#fFjo9rXW z20|Vr2oqQ!0aP#`8iPbg0)kpmD&nK2ii)qQwQ9AkO)XY@Rc)b1br6-8t8aWpJop z&_C4Cey#Ya_xv=e{&((iy7u75l zE|2eBbEA5=Ww=udsfY*Kh>ZxOtII(jfXwx=Ptdh!jJ*iBv?K*qDVc>E2)meTyINZvFQn+dA(`FEbi3X*f zReVgoF+9?)uq%#cW=G4quYboUgo}M#9C?f$s7oGAuMU`%gk5Z!d}FIG#>cQ30Vt4S zV-IPdd=PPpiZ|xj_hl^xgb~%%xd_&?*Q2?RfdP0kF@YbC?lX~w^7^{it8%;MI2k7g#&|%`_|OA`@k!Q!dtJu0Sr{} zMxQ(|#Z{e9_}uh3AH&5Jq_T1X1ASFZXCl3GmP3}a^T>*Jal@?&#`OMUp;{l903WWa z$oCVOwl%^qPScC+?fWIl&;IDQSyrp)UfV5{N$iiJI%p{|ij z0lo?YIJ8E&|6Fb`d#>#fX{`!ss?L;S6ocMZuFgYS@p|K)gif<2K!$^&zdOpm> zg_Pn~{AIdn`o0-$EgnZg%|-@ioyqMA(eQj=ZSbAN&HMK~hy2}kkun$_+OKRygoK_H zZVrIX>DjR6_-eh0aSB%rRfCn8`!qC!18Z@e5J%%?^-`aZGV{4%FTXZ*vv-|&9AEL2 zjcRZn)3dE}g>_u0ww3;^*Ye?j;_KST$$|8BjIP$Xn6=J&XcLdbL!Owon5DwmCfwJ( ziWg*ARRQSJDGH%SO8L7Y-(xQvjWzPf(cJm#26lR}Q&_52>fd4gh)z_1peh5C3xs$D zlc-r3WpQZ9U8bIn@8ja0kAzOrZu$YAq1M&Nx)%EXvA}7_G=W^xEiRTsEi1Nw80^D3 z4sxkzaXv=!)>;Nv13*`D6TKr_6+`hR!nRaiZpQ=ZCc74;?<*b1R=x3IuYiPFsCj7# z={JVh75DmLzK{~{ZS~*^O^S-rvGamKu4+pd^wnwvGF^buV6am~4luhwzmv!gOSpQY zD7^5o{Wmh~#E!*CJLPdm1f^jp7uBu-6L2fA5NQJdO|Cf5*D9X6pbCr&HDO>WCk}UO z1#W`Q%Ph}FgLW+MiTc%np<|BcyoEHT&rHzKxc4h5c_0s(ZcE(bV!j6I-U};)N{DV# z3ajZLZZ))CQZ9jKv&Y#QKl4)1F9D(ACk<{JhV38!gO44^HmM$ zDO&B)|0q+0R3QAG{r}OxbZLEs->)@_SXH@e8NLnDLVymnTAXO&Sd)tTMjF+$*bfzF z027Q&3U(+H^SDtz`)v0OTwMPl(R=XjpYphB`m)1xp^Biinj{uW&|uI3af3w53!Q27 zUcno+ezp6RS_LF+3_@aobG(L?B@OuuE``*_K{}G8SZW@bS`-6|4wL2sxj#FwfHM=I z%1wGcfu~{hPJSwt!(DV<2-D2K{1^1d_yzPqTovSz9ia!&*c`{R{s6~jPUKP{lPW&<>`wu-hrk0iVW!(Yos%>iE)o}#G?Ls@RRVx4eF)qN=K;0pV>ahgKtCHEJrpvb;$a2KbnakOjj-FKyv&Ig zsAe2c`VxcPDF9`(WK`t1RcO9|rk)iSihcA<3M{#Pe2j&n_h;GPBe8rG`43&5=92V< z>S8Evyk*1m5wyaZvTCN&|;sbX1@-@mWOt z604JVF$oHUR%u+wJtlD6OuvSNODwcg{Sdu|5ddN~H_W!OZ*k_>B=gf%878xPXfRFb zF!II?`A~(6u?@65#fl=;KNEZkjUD4|7q5_bb=H+ZbZTSnLR`5=+Tv0)B&eXbPIP-L z^OqD>$F!}30tN)!3886h85iHYNia;bqN!wY3$cT0-YFN^NhXh!%h9@~hvmn_^_E{h z=+I^0)ajN+x*ew7Q85z%l1hf^sOsZdC%=u%JS0~~hG<<3`WockEvABBX6wr4&%HBH~pqANpv`9w6F&9zS9BEdsW>XT0` z0Nas5LJILl24$Tdwyljd91IY$rLrE*4m6EEc7o68nzshGTr6Jbg7ELfZRAxsXwiE) z14FZBE@i(G(As-Fns{78IUEwHbbPvnOMDiszsX56e`>HaY}h?YFye?CLMX$I5@)G+ z{}Gm;<`B~8dg&h#{4=#9Pk+&xcle?pw?jKYyXr@nkr>#P(vR5Ng^iIsI(Bg0>02dn z{8o08#OIyNJsHU#$WGlPHmmVU`NwR$>PyrxL=*QGI2w93(TvsfoUQOiP3@0fozQ$y ze{oK2|$p8&!>OR*J0Hxhf4;@snE=d$5ZYk5M8 zhLOf>y!AGyn?g8UT({*?mRiI+;4-NF_@CHD4TK5Jy*2Q}P{TPfFw(iEl9c`79`|;o zgOju{wHpo0>tuE{<&YUj;7v_s`r&Sl=fDy0o*FC$-il7$$>{ZIwNM%!q#q?Ep(au| zq8592NB>7Q0w%Fg?x2gL2&8GXxQ@*-p@QqV{*&1s=qyWu`$E4zBm{yw3k-?Dj^&DB zrixp_0T(2EB?}fbPdh_n8jwF;Y1UYv8NLO@$2Z(1UDgXb4D3FyiN9Ned%RQ~Up;Gf zkuBz~M-RS4D!eT42{!c1cI0SP2cIAjY}&-)))7t|FRUzFxgfoft&pH8(@Uxu&W&7u z_FmqFnnPp31+a4jb5NH$=Ki|giY8a;LL>;(ddt|;`E z`J4G@HQU*?5lz8_>5~^!qJB_jJsl$n8I)>88btGU0eLkhg{6LggGso*!7t*xQSpxY zT~&m>hAIFlwQtaEn*JDqtW5t^95p@M(=pJ}I(Xfr4q?=vEz)V4;AMKk+KMN_v{1C# zGBP-B^bEB2k8iz`GZ$Y5wf3&bs{w$c#qN3YsXaKgVDFiGOxoliNcs9b`g(0z#=Aq< zE~N*0^=ZWt_11ujtg}jAlQlO~O5bhO8-397`qr!pB0ojX%Yx6KSJUi2(^td8XVUg! zbq?C<#1m?8(2j-Zp+p358l3&!Q&jMo9(xi^2S0v~i;451e?p-$;y{aaRm#`cmMB&~ z9GG0rMn?}x*x&Ddfj^@cEHa=?-}_tKC*C$!-P!O%~RZdb+HzcP}+p(gR%x~E7ED*!o_sZgIIdGQcvbdZz@@7Xw7CbA@E+djn3g9W-SKu7A4N=?)Q z{WGz{#l#yJ&|_G8@tvQLN?&(DB-1SkArakmrqx2HODSXlB{y5Y2P)BX8r0)LVRb65 zm8!XOZQeb(4_&NmGgQ`N>TvJ2pK|jE17Gfua)}Vw5H-`)Dz2NkV^N||&FITO5r)@Y z>UH2E(dq4A%2Nx~sB1x)QYmXw1e~YhDNhORRrG)qeJ{MxaNu8&vWBPT$BkXh6+2t| z+vYF1>RzWYFxy*m^ML=Wi~zhM0qTlg zh3Wt{2VnZ)as(f<6dq4}naFkKTRM-)hm@H9GYyd(j7mrQ&aIcHVKyxJr;_7C37AePQf2e z6pUPja^pUnbeS?y2i!W`hlW$Qm~E%yVkWF&Ae(ks7xw|jVVf}ISk>0~m*4+07IFWz z=Y|ygR^|G{@SgcB3bC09BoO#mo_~AQpG#V5dkKU%3aaZh}|)@lpaq@3`5=@ZRQP_uuA33FcSRR zXcGDhHMKAqQmaXSuvDjl3CVY6q?q2JD@nnpv*Y(HL<>KRU<;Z+ulZr-(A+ed*a}hk zT-t#$BKFzn5N(U)AP6;hK>`e^13{Yjncu)>@%y<8QFtojp0U*@M*{0JDO-7E*1HR?}e!_zg{svUQ_aqHzPwZbM^ z>8ExH7CjzO|2|nnlJ82yV*_zCa2P5RcS$H#*zvpHFE`Fg$`QoFRftXI{HY(N7LAK zXwvpVP%mSI3}spbuR&KhtThF_QV0ct^Xq2-_vw>?(F-JGR(Jnd{4w1b;8K}a{Zj+- zkf^{!0N0B{7v=@YGj)#%$3R62r}cZJ#$h)LLatLkT4voB2+3L!93KaBgTmt>XNem= z2W#MXf;b`}ua88t8uFIYAQ_}O4|4dy!Xlr6yQAQCMAltbk)xRjbOHHhfYuj=YFQ8$ z`4H@2aPSn$)HU2Ofb<|;rA_6bXc(*O6GZ4tit20lFY|5Q#N_F_E}#`8ggHHC;hf~E zz@G)`= zN@@4Kwr-Z$if~@VFc=Egezu98hzT7LbVb|J9;;a{fWGtj;sp6J=bLg&=%tbw`e^= z|4DKoeJI!m`XJ?t2~qgR91ko}B&jKgc1|VbSKaTAUPZ+!B$88;+{omyf{@V9$#Ln) z3_Dsdbn+M27geNpV8PQx94V1roF$tWR0w5425V;{3fHXHMCW1mePnL* zO({Aqu_=)2p3HL=`(^~@ljX+=^hYJxUVk9d5*F70rGt=+!&rh)0sH8(2IQd+I-#zWD0t%qJgBT$hD6C zW%c`0PND{BG~Y*C67;T`Dkyfr-?{^HMO7MX1N4j1YH0rnJ>A)&O z_Fw|sPaC$<2Ay`=wQ_N|2d3G1m7D{$fYd7lsPttfu_aoqd3_*KAo#|$;MBGC z)qRx&Pvgi)Q)0N@W5bsF++_bys+KL*;g`v4%!!pa)8jSZ>e_cDbbGX<3r0$Wze-Jx z(6?IYbrsesK19hJtxBu7O9T3+8mqx#GA}XPhUVu9l0+ei2FFZ>(3NHzv5`ObJORZ${n3=zKKGl)6{Yb23KS z&Nju|=tX0<3DIl7f*=o2;EA=uG~3}s_QL4btXm{aPV74!4wm-G-6k%XR3Y7^A1jNO zOtnp|lp4O16AxERAoXh3utMc#`k6wTYIGqKko7N~gpHv=L(*qO+3ky5usGFBv7;$p zrsi}{-<)&B62N;>pY?r7l3Lb9x5(^RBygcDkQ-UE;RI<};z`V9KzbtE8gdMfK{ zz`oiI=J`sjvP_vJmjcu}w77Zhw(BW|v8c%D9kDdL$~QVU5(;+q@3>QZguP;&--v}b zr>bSB&Pj+nTA@OKio0W*=^_5 zOlO?FAC$uQ7XMNN+%@-Gf9LWu?PSgtqJCOv$|tG_{AIQYeXce1+w;YAzgnwB(_nCs z&UiBj%b%+7ynE=I4)pRIy&a}2D_oR*Av={gL?4yz)_MAKMS~7KJm}s}=NM}}Fg@Zr z?_0x|;hMO|z${jSozwS?UZpi`qVwpJfa*w{j8ZE`+O7Kc*#svFWUDe4DLT%ELW2eb$@;CQAZ1=y&g6pIX1bBvTb2TCuKS zAudJd>-5?zYpYPw^>P3s`~{+>dGRU`W}2gHVDuFYxz|Q7eNqG;P!rWjZTkA9&^8h6%w%AqVZCqo zdo%QQrNMe9WnQ$Tq%THSbR!Brrxcb-j>nDi9a64uNBtUzUm$@-`j$WVOQ#|f^oQso z{(>A76gI9VRoMK6&%)kLc;4U~Vx^K(t(qu%qZ3y%2E15!mzPs9>Ej z-Dqa%(?M%rABElC3pFnquBLN7%C-q`^>j}i15jT8$FAsKMjHU{dIJ(wg>I15GGeU$ zYOonlRHxitMTDhfc@U7rq>nU^|A3K~TN)g`*&rPoV|oNk9lj?G1@^Rp@Csq9d9WMY zjVYGA=4zWca;AUkQo(SEn!!-fC?R*E?{+pe7txK`nny^9fMA{kG>cySSKUYB!ILvl4*e)7p=5)cc5U|h6OMS)DmgLup7eAk*m@fK@g@kYyUzal<;ZYL z)gUZ#xZ1-55P3qXL3=tk!An^moDbauyC{@W87dn(P-BIZbIph2(IeZiy)XQ=l@pZf z#SK!txRX{zokl&DDJp!JBX8q|nGU2F=XhZG>7gT?4hJcP*8`I}ECDTMRL@aUnxxu| z;l7pEPI^6{L$pxW&W(0SS9>~P$VsK)%Ez%rTFCKn#r?nm$mOwe-n^SQA()7_0Yd&5 zc0Yx#CM!RAo$e&;WEx2wpOWDHqgT@C2)#HBF2Ab>4ZZ0a?a<{RY4T+WHy1sn?z)B0 zl|B|SVm$FGi@5W@|d&HxOdS_nx_^x7T} ziEi(rycQU;MFO4&@C@qP4fcuvuh^48sel#ugUtzrj#0$k1icbrS6H3;M;N-` z%VRhc_?_RA*aXYW>NM>L=`qAeYK_+LlpItt^>o1AmZVeKx#YAH5gtQ1#pAl_7vg#S z9erj5qQkb9UuvQ0l>Nk$eC#PRzAx`QUHOfa7oNdyy7&tjM%n%L6OD?XXF&w-%X>fm zPz|LFbNX2tk|h9&nKK)W<2`N?MO7$T10g>(PVWTpOR|TaA)1KFAwf3f->~`Yhq(l1 z8DT>tL(`uJ3^rFR%9?(4k{%0)o5YM5rfm&FC>s}0G_!*BVE@R066X;C7*pah@dQle zwL}$Jp!P9$WQ_^Z$&7B!&E$=uVdGm?1fK>jz9dvp!U9Xb>{0A~~*PoPAF@z2JdvTX4|PNq{9ps=ta z9kP1Wr_2LBtC!}_SAj-el>b(ESbBUq#U$++?ZxEt1x-I`7M|_o8NF z$#`)>|EZsSf&VXxb7+$l`X4S;eTvv0I8W<4Tq`s<4B_}igPeaSJi1T?JQdrwv!#L@ z(+y+#KDH6UR>h3}MtULesEJJ>9^wu5su15-sA1GWF3&wCJ}o^Snx^ka($i*q^I4oY zdLUHA`uf~Kc5h(0c%r+rbcFi6BkiZ%l653|B89DU(DuIM8@P};>?<{K&{v@u6&6;r zr9jt9d%r{fR%=`ys^by%6Fi^~bK<`d zU=4W(dy~|FWICo8XH631r|G|-#tCT|dz&7!a41XIsEQzX+V%u!`8bF>_Dg; zTq(xzX%2U`7xe`yTMJkb$5#J**5s-5*Cc(GxDwA8)Uiw7>#D4v1XI?KcUYc;V&1f_A%Ef?GpN0(}~>zz+nIrw>gUA}tj&W9DYf zy$3TwJmSHYr|5G@{3CsRp(wM*1dl*qTbc{ka6G#`@b$*t>d*{o?E#el&9#n7EvPg) zOepm^E7`?NWVXBtAmE>fDS}%HV%|0YMrzLajYDc2g>CjD46H^0@4{w08eHv09NI|f zFvdac(2r_%x8VfthbB=A1hKgTCzUQBOKwyfS~&?<%D!2&G3=g8>-#3L&;7B^uCNjRRjIAFC4l81bwYY}B{Cb^BPmHrI1GxRi^7B%FU zk~O_@3_ncJtt1}NA|SmBj0YZ#J_k~Zn{|l8;N}TQG~+WFoLm3&>zovyL==%oYG+NH z%-+*aLJ9onKh;#JcSMgBB0fQeACx{YIm1#S;QGUXE;@D&8r!N)4H)N_u?|NnWrLmn zSGiqlT1}satnWpF1B%bgkyytzCyLThfo3qvSx-qfVHRW$)9t~A;dOwPCfCOkY37A* zvf45TpQ4$JmeT}(ir&GFj^MI(_}3OHw>kGj#3C7nO)u$^U_6#Zd$E1|k75%p+G!8gdD?F`Tq&GJU;5FB{ zRFK^=)OAhq<~7h~jg9tX0oNf9pFo&>ug_<|){}*E%FLU3D9}b<7<6Qgnhhykv@!oh zUP>p=b5M?g{9h}mMOtX=`dedCl$SZvW(|T0zzT135LdkPwM?X@W?S*6F)3cou@o?` z{wG88ryFj)UGwO_8hxlV^s>9q2-<}5iCy0TQgt=zY0Taplo`l0l~|NWW;*A zbi;KSEDlG;kGXq6N?-h2`k}fMQleO`_pam3uFn2#E%28*)YfFZ2VvmLvp+vpUZ6zjd6F`mAN!&PDex1Ynh(Qf@+}OOrl%tfa+^NZ=%-;i zVR2t=cx1~m{KRnl!_9azJ=dwiOB&Fh9vHY>MOk%>?3xVPxy zOMhU61WW7QFJZO&r%tQjP_AET9n;~2`sdHyh7AKRl(dn)kzR}KEQ1srR$QC+z=a2& zZLu2+-kWfG!{Z6aUxv*PRgs>Ibr(G}uZn8aKnr~R(#r{M@+-iN_Z<4Gr16=Sc?O+1 zXE~@VxWK*GTW~otNYg%$bC@i%F)Y}I{;Md!Zk|&8&4$-@Lh%0>d7fs%xgsQAyMh`e zj72)D*%hUj!RXq)J}>I6P1tu~0Fz-88>Fijp<{#3Kl(F`g}MMG)`a7<42uSR72F8s%cC`cx0MRRPxvG*4yfsPVgLrzS(S?R z69fD8H7U-)K(Lx_X!QL?gUmf93?cNBOrO{B7;%(4)^@-c5J&jEgEChsS_)1RFJL_P z^3=neFM6XwhbUE18aVbz%-B)&xk~CFHUfUY^vhLX!5^x0Sp@p+Ux|A%5apg?Biunc zB(r%O%j{4hE+YE#2i-Ax4WDq|w@{lNJ%C3-PI5ot;&}HQ_be3%Y`^;*xzGTK_Yr$X zzdk^V0vbZ+ep}3{2Vpy5r_tXOxlO`*i#mjnXIZVL97N$(^6}6sxOES_8vu&3qpKn1 zo9{xyOZ)Oqv-P<4CLW!u{sn=3?cKaYZH()&~kPyYc`d2NUj~#H3b9i1B z63@u5x{KkJ-4cbg<7)Z=m3}OVr{lQq$1#uo5i?_)SH+82WMHI<5B};w2^WaILAE?8lPky*r&fQbE(971<;_9=#y!@SMZmnyzseso@DM$b}(WdOg+gzH`XQ` zWbAR2CP{3I@RVzPZ)SvDT!>&lOSBi^~1X<6@ zoyc9@c28r+SiiD1h)wjFCLsSfA;6}P9R4?et;JT0LHx%Wu%1I(d8?00F`3o{We1&E z{^r-kKwuRMU^KzW@TNN4>64IcMGRj%pl>LS25GxryjsJV^$7Yo%f+jpquDOw$6i~F zAsU)TVTKTRL5=T|UZuzD>{aeX@!$HOE)GRRzZXY{{UV@o1@TWp#f#BKi#4{7osASE zE)B?|0cjsL*98o4m6aP)rv&;a#M&EKU)g>FBl|+7vsp{y$18OGY5aX`MeA69=+5Xd z2Ky@jr;bJXJPOYWu=T|h2#QoVP5wE@rbI3uC;(IsEAq9pO@n&FN5LX}o8AixPGziH zo-5^HFhgSuG^M5^EAkLM+Z<3N8G`KNN6BXNNL4&e%PV+~&@bc}6!afd0nA>dm%BrA z1hX>gGpYk)Ts)es$S`qGY92mFH!m)Q-dbuG@*L&$ z!c`E`TDG`*r=H2+kU32$gUS3z)yjZLuY z0mE2|+!ngFVOE$M)3-=;&`%GUtlH4wPqN(&h4q5-YT)_^b{)KV)?-tji&r!fmA^Rj z4HUduP3~!-AK)sT`JMisfCggHFasCS6&f|iFze1>U!aIWi$8F@eOD0N{KzcMdFY>5 zJ#O<+c=k0J`v_@d8<&#r8~twS1n@;TM9~{Vn3sZW_j2Ij<9=59)Km_7ZDz;l1X+V0 z=m~GSGU{SeoTEu5yqUqEiu0;jN%oIUI5dCT_!v^f$5w+pZkFiUa4oJSqxHT7FlHhY zrU%3Hs0DzP3rKKkmbQsk;SUc7IA5k^iGbpos1$+akxw%g*MCLUEkazPr;;Ez4PZWe zT!=x1-2My(9!Ltbn4m}s?KWN1 zO1oQC&9oKTX;{a@K%wJ{?ubbqENqCbEvtYNG5Tl`nw*5YA|QkTUEP{{r-Q+l%z$kK z#<#OuQYflHi3dD?;AZfXgH<}tEgesEuR@pS>8vIb77VJ--n*;XAyvEDB-9Tl z%bg%v>82X(#OmiARA6NX^+uWLm|jEeSt{2DCqS$?KDV@#zD^Ergu)YW_Sjx4yeI~M z?12?*y-4)ZFuE&Mi}T>=X`zc{y33WCeWreMGQrKSqL0f&rw?5s(BDPu?JzkL zKC5tc*ynT5#bnv?6zYP77HDqMIasqRS|KxN)3+V#a}#{KBct~9e^m`W2jBPJc|%Cv${y*g{7t)2#QS>YQ$AMSP)X zSeFVYq|;k?rv;CJI>U6u5K4F&skbglsC*8UdRs_bS<^&+u?e=kxQ_vot}&#fr$^66Uc+k_nAD}jdW;g^T>3JO!%OR6o+=kV6B7lmhBrnmz5>0t(m?P zUL>R^`V=z?qt~2nPHdEg5C&#KW1+%)2d48F%z2II7+Y!ep9$%qB8a>X&4R-H>r5|0 z>zx7K3}tuBJ}(iYwOTjoGr+TV4Yk{OM0@Y_(CAuRDf;n#DFFm~W=^R0Oa~hGj}pBY zMPWYs&<$)%0^b2<*`G%~NmE zF>0iSa@mO+66eVq!D~T$Go56kPZ_S+Xq84fQOC>-(g%=!p+Qgv8M)qRPhZ>&d8M3= zbe@b7S(-UYL%?t<(8be^DPS4lKrMDLz3<=bF~RWJQT1K?I29iSA=)bk5Z#M2My~8+~`ss4F-y z(T%EPGbv|U=bpULi`6VsziVSq5Y&y}$<(AfFpEdKHerbv#dHT{GkSKgzk9Jkk5#)< zgeu0JM|j~IHO)d7-F=kxP!3<-ug^PXqeL?~C`N($0BwuYr3J@VQJX*t!U9g-f?8OO z1vy)4*oGVR#{(^+KNB#H{eE0+9&D$+HuiqQqWilTY};`Dc=cP9(8vNLOZ)x`b|pa}XGhuag@f=^RM0W0v^buEi8Y?g+MpL> zT+blNb7o7yt}W#6T8d6j{^5b^Skj0McZ>|qEs#W4rr^>pgbkjIm8!Se(n&v&sx{Fb z9x&i!v|%AA4Z)N@1y`k9OB~;xi@`mWTYLvZxBsS8S*(tbZ^hJQLMf0jyBxGYb3h`Y zL`2kS)@q0f^l3A7U>abCHcO+Ya2Qp*2}K>KXl2kfz>F9%ttR$#;3%Ts2-}Uw-{YAv+hBaay{CFLG?s2rqMuCo$ z8F8teN#(Oa>=?-Tw{@Gm2Ub@jPy5T&MysMMgNzTm>gZymRTt}6F^_Ec=osr}^uj>J z@!}P}=@AWdLT0(!(-?>9Lm2oRf}g)if2#FCs7s(+FFV|UJ;8X9{lp!Ye3d-Qx-<0i zl~RaHZhnpOD5k+MQpvPEQ*Y=|nYJ5!;1Tpdmgfa8s0X>@I$a7b;(gIH!S%;`c|Ig& zdicD4d#wY}7RA2aJkO>25D9ch7KVhFz~(Qq!KTF={B>S%QE+C=GFY`CT?y=5nADnB ztq*FTKR4%O#^aa3qTmxE_nn+K6BjB80;y);-E4ic466Xo(Fb+ZhKOO@#k|eiaQf7I z>>FTh9TWdFRIA#79QGTXlZB5afhI_{28$wC6Ioz3UAJW6@mjGh-Z4X$Fx(grDKW2M0&gW{QPgJsyCE_Sfz zOP6;GHf}C>jH_KfgmFP$rQtuGggjs1!|tSjlAe!{sojj1yir54iXJEUz~cSxFn;ps zA~Zrv;n)4ct^FHj@$^TMZ)05@KHf!p8;{MmZ9RS)o+~JEhdmkpsAk$c4h{r_YJDD$ zywRjjNAV>B*Hr-nB~K~X(!KRm-daQ9oW5-(t3;r-0#3Qx5wsWk0XJ>Mt6ORcHSQ`E z>%1iv{tO#|!&J*G{To~H^=3T9(rgtzcx7rfd({=u$cWG91~#Ap!rsvra6!bPOk+Dh zgZyB*xD181l~h^p6^r0--q$qjrBbVPC;M-N=i@Qn)tlyvPA>1wL*_@vDDq0yOYH}+ zMQ8T9Nuj)j#+OUj)a*KHSAa>N#wUgm3@-zVjE0q8ld}zjT(t1}u~W!g%BGgWlUr|H zis!}h3?&4aag+k~!I|WXT*G6#dc7WCcWfc*HPQJ<>~gF0^%SPa#XRX9?iyU)H%XdL z9GaJBshQOhZWy|r!2grAAfk5PgXaexJB}hZc-giz@8t7dAB?jXX=uRGEWzTdW>@2P z+)_m!QZ6v^0h{;w6jpB?@18fy=J|B1heta&U}Pa39N1x9OUvh@(&APXhkykHJ~s1< z|0`p;%|d?^1)4>+UVz!2XWo*=en+>crQ=H%SWCex${|ZI_!ZZ~l)i)I>6F1;X9|@i zfMti2!aMFM?z?yp_}E9o56$P@^WZY`Mc>P&U_cN{@ZnfDQtt*qNRJ`u$cM`HHEh@Q zqu*dBL|j~}v5a-Kz+*#D*vNwyRbD^nxb$#k}f)kBe-!N9@WtbG(4 z4HsbLa4S?EjHnwDDz11I9^`#VXfk=aFNn8aDuCAB)y7G?ZU;04*;~01-J14aSNOzz zk>l85xG7MM432|^r98jEJs;6J2v$4B<*{Ga%eoZfz1A`nZewP>1abz_-j7v0Thlr~ zkE0ixBGm@E8zmJ?u1&5GkGB3NbwwD%T=5w7)tRZqJQH4@_|F`|BhPqmZp3<)uJWrM zeq`dX%D#kQmUnD}XZai=c-+kwI-A|Qh98bgX!>S9xKzuF636q?3Hl<3PQ+%~aTlTG+H!?Wm3WAsV!G0x}y zWb#0$ljHYnJ^XLve>{4@jjiF#8E4wp*z6e7uHw!SMvL;8SkhhESqDC_-mo55rG1CV=syn}jO?AaT#>~m!Ei(;x=s_taN*pWCq5?681V9E5> z|CRaIrsx9!whA00Yl^`2)Z6-c^u$*9mp=&6>Kt7Y9!)ZferVE~hzii@Oy0qcY(Tqt z!-?~3a367Y5&o^dyDDa2#AEnt$9wrvjd(nrmINS9sLEG8O6mMr7LrXPn`a{FtAlT3XF$%nqXk~F@};8 z5(}74@e$4fuyE*yoyfWy{oe{{wo>IGB9SLTcN(CMXj2mV&86E)rcT2+qZM&eVVv$= zjc#f6IqN1f99LRHQ>&yrUiRnRLb*jeif)g{&ov$I}UI zlRt!B+^Ee7vup8~>o9y#Q(@*uY$XjEbkf#_^8KeEu3umAi9wc$0JMnu3N{F8`aH0X z|EixM<}|bsLizLv{0{V&D96p*PkR$kSH@fo%Pl1JqKd8n?mP^qD?mh*mTqr zrG+{gF4x)Hd%gqLHG3q22HsUrG}{|}>7-0N?U;FgnCb%ym`^^0x{JvjdN?THu^eNe znt*o(R>8{SAQ|arV^!-i`BAk3lc>HMS19A9guW_3qX7WVb_wMnl5ODMz(U3kY-2ZD z0{&pqhz8d`)C}BN1OmP9AkBdU|4q{6OO;gBra9r8p?GOh7n;=bw#Tf|$w0 zDxQsv{(W?ugIY1xMh`DgwVJ;b_sIsFJbEt$;v5n8SSa)XSBk~rrOhQ7TlNa}I!Hzz zsAtrm9^I_}*1?$yG`DI; zb4--yjvmt29D$`PoF$`X%)OX(w_m@4qaiJ1?md&^OQOodN;PvjJC2J7e$BCL4v@70}0dN4|_RqgItIp=~Regs21+L;eg* zOTMF9jEP!jpmhbju*vKIBxfCptBw;(v2OuS)Tm2ipqsy@`BMU9pA{H z=;9*XT|xR3#*csBY=!hYLiCmd`yA)3f7Upzv_Gtt)nYrlYwXArN&|3r`)Zr_yW4PL z!kLLaI;9naBE1x(dt*YWy!T`J=a98VKjwH;gMx2}39!6h#o7d)aF|nl44^-V!~7>F zJ<+uJ;>-VlrfGUQQ0>0w4Yd3a{l}jDM_cTyaZ0`r7+5*e^V}SzAM)XAj@tKNZ$VWa*Q+gTsFExN_Vdk!z<3NSE!)WZ@^W_J4rtsyH$)7 z-ZL8s5>|rE+4Dzmr75|mV{pgfSyt%XaavwSBU2RC1?oMKzM(Dgguqn_jfS6GAwF}u z)G_oHmCNiT(iYIey&Yn-q`QGkwktB&J#Q=RITd?}N2OlLL@_bC&9{=?O>cHK+S9DN zdFIdJdKzy=W4%2;Lv{)D$|)7PU!uPo)0Z^by$_rVhK4<2B*?CTRcjM$r+)`Zhx8ssmOp7NV zc)-?wtYGH znAohBq-)S)ilb8NkHU7t())OfY4!%!7|MLA7l)! z$QHVJsOYHK+TiS+0iV*w{G}A|Ejzvu=KdPN|LP~A4Q!@xWP~MPOl>OMC~A#O1+sNH z+s4J@pJKHp-=pT{kX4O4DGn~@np*8yhwS$Chzn~=CpZA1ckr`1}5 zrx1)f z)%WeWQdQ8Wmv)_jUqftqL>jw-mTZo|VF#bEj)$_I{?RhiSL5KmK?xu#-Rm9W))Df* zM8|yq$ve8YU=a4ZX%k2}77C#MFlUUuIkkk-qXQ{UnHi)>Q%%tLIyNzBvJ%K|hOY2B zQ^W$4zW@67j?+gO$dSmd&)4sikPd(RBg8|AF}J-@)-@Z~Zxl^0bBz9?BJNmiT0Vhf zcEy`2{LmHpm7-hobLgiu908TeP5+Xum%wb$qQ&SIh&4?6#7Qnz|J$dtrwN;}K!x`koV02&^l(6_5Tve>)lLI|?nQ5+U;h)$_%U32l`(RUPf zJ*IP0Z-SGe%Z``QnfmBF?Cz@qd&~%GRf;V(-PT6KAutzXbr?=j5$7+pAra-ohsNHp zFv!_gnU=)srVOzJEto^IpL1E4gwDeB_8DA7e3|1CtxfcIly2*9nHtI?CWg={a=yxT z;-T7fo}a!vUU2<|7stGK-~UA9m7@oNGi2J<&PMgI!oEL)J%NGryKIS3!JcUga|M0L zcDgnoq1|p_zdK7mE`~P5h5G2d95;Q8W%N~G7(%;>VCNXV;{Wx4JqlbiY&&Y2owp-wU1q*?`pSrobVvdqJCyjpQRV5(N@ZHR#{;uGIV-)|Y)tG{`k*xrahC$4O0iS#XS zQEog&&zHm>(Pb6-pIf*CxEm~%SQ!0;%TLai|4DzWh&3eiPUf0`J1TD$TR178qQetP zF_pd1Kv@5sNndq{|BbGf^mi6-#$af9U0^t|QEGsVJ&SP()BH_|O9DWk7Nh8}*i}Cj zj|`Si(F?>Yzh=#m5S{eTtE83TG(RasW2ww`4Zs$kw7!-$*y0MdogVBbZb=|ixT+p0 z==69=4$?0|0f!xD?87wy(_BFk=ji7*v%hl5dD~rW<&by=vf)#Wwe)rZ=O$80{J1>b z&q?B*mLKZiL1JI}y&u5DSho_Iu-@S*eqkF>0rzO)X-Vwp|f_Wcq2e_`l z9xng?DSH#}D5|V){M=Mmsw?Tf-CapnI-R7KBptGogakqeNmnF5SObW=kSGCBQ9u+T zOLu^0N!Yv;!b!aLM%nEjZGk`4%^$g)y-FFPqxR9pBiK)qkstX7@wnK6 zeZ5N^-~=xxxwllAkt5>yL{=_jw|v?1o>){n5OWc@2BG#-?`g6s6>?pLJHy(ttRt4q z;_p_FqoXrtf-zl>C%OlYP>$IHPb2d!GaxH>Wl_wQpZJA}mThEeT!WcznGKKjdYB9B z{QA2XfRaelWVaS977ey_|!Ec%|$4b9}hWM!HK7t-00Z-zZPS25O#zr%h^1Gbf3& z*bi9LeOkzrWLL5kUj~`E|8)9;iIEJr|<9|!$>jx9f_BTGQDe3SI_B-X23ue@K1VpQ~mX2o->8$%-K~iZEztGZh6IP+47Jn1$ zx=JrBCC68?TeKejgWIsgK5%Wp7RDRzVGpW9VXR43%C9jimi&Sy>n4Ae1&P&ZIn0z4 zqwGm$2bH_3L5a$_0JHPwZsfmC7w-p6C7F1O*({-QiYJk04`qwwf~GiDhLjSJ9-C+#kN&Q?jxR1?!}y=3Ql>vs8J?+>n8~s2 zBS^#4Ghn{h@yU(_<|GOEIr03>R@MmFo~d4E7yk;gnC4UmCqhY+tka3qf5m}_>+ATY zGshWof%Ja(58 z=_98N-i=qMIuZMh4U9W60pFdc_aAq{^@h{__dHLcMr1>jNu%27f5f7O8q*58jiV^Dm2`qJ}f6GQ|-!rQN zT9%oAmH`=g+|J99!K0+7DX3@`&kF-=5KkPTW;yKGF(dFekw0}kyID5nPD|n^Qv5rh zNe4<`k5O*$xlckRXi4M;fB^>-LGNu4!lg~mVR1=jGYgKf$Hko_&HkIQK}->`6Cdm} z06jE`!N>(;P*O=EIRc)M=}1)M*CRg2o>je;Ur3Uxh!CG{M-+-PqxLIy3NzPsLv0P{ zr&Qzq4rUjR@e4UXM!3@m8-L3M3|1ydG5*J)O#TfS$+;wp5X0^Vv0aGsgV!Kk5)>YS zAa*CgUeMS~=Cw9f1FE7paVkGtff`)!fCw>e>m4o2d7s&T*?J9F!@YJSKOQ%JlA@|C z%Kw$jCyixcjySTRY_;+kH2AeMc|j5P&9|!nIg3fp8^IAcWU9RxBophvedCow-+KYTG5Bl@T ze8k=HNQu=$&em;+0gR#yM;_G9R1?W1NzAU9+!=WtqiS;;#dZN;+A-pnkSA+hEZKb+ z$&i8l;yC_BJkRp-7vq4mw~Nb9aJ?l^<5?!Nm$7SC?TQ&zbudzD*fk)2S z17A+tU{jt@FcGWz!}l0_r~ak{;UuwuXJ zSY*$WBrQoUg;CsOk8^wh3&+l6WdY|$?11yWe;&Jozu>4X_wOf3oVIm<|D->`*=QDG zk{S!POp(jkU&V@+oor}YJ(;wp19$Uhpoqk=I!Aru7;Y=DPzIt~5wNKI5YLZR1MZRy zV-wYhar{A8F~z$}7DH!B;dhT}d=pz|&40IvY+;h5mO-8*L%`lu2H7KWW-;Hs%PZvLcB9)iZYTdw)LBulshCYX63vk?r zh)a7g9#DmBB58bemizD+W>^0fr{v1wRCO-5P6h(a_TzE>GWQx}v#6I64lk9j;i)#} z<3HFN3oV&Wm#DmKK~!j8IZ0cxc!4T5p*q=Cb#5Bp&?F}+{N98v&v}jLcss|c@%UdW%~$3`=C6VhnFR|pSBuW%r|~TurRk@ zG$A0dyjoeGt|ZD?vt)O3YEv>RY#HmnfY)O_YViQtQCF_m?Ywd%hdz?2 z-f5mx!;d8a*{Sw2t8W>|{)o&xK=T9FKhcz&tbCXl82?!cWOg3RpuqskN31R4X#xH& z4&+abZ~D$?$h^@kLv$q~IM`{9oihoxy$>3h*K7bl0z@?hR_^C1< zg54A=%8bRTF*aWB<(_JIvm{ugczqJ=%Hm}BV8_6wXbzY_MM)Ze&@D&!++kumj8dY9 z<#v#Ngy`ZzfXV8U$?QB^4L#eJHG%zEZsW7!lm`bZ?Wv&tGO-Ffa=zTfjwo|2l=mxU zN_{ek$NBiGdtup2WI%RC8= z)0@RYaqAX@Njd}nHjyTd;Fnx)P86HO0zNCR(I;DvzYCj6d|i;F#!uKGBXl)0FOSy- z`N|-|{3lz)*}R$a5A5O$idU`N@e~3%#T#YAbfeyE7ZVz%iKSPepOVX8(zRsKQD zC+D=>hG)8a?ffqzQ85M<4*u#y_IV4U4*1P(HqOM7a*ir@JBez~m^4X!!OH(J&A*vH zp2_x#V`^nF9v+++xeFp}BWhgmuSa9>zAhBAJSdp#^z88{`-{cN{^$5lW_BD}|0f=Z z*OT#Bz?m{^s&)-Ki107@M!p6ii0WDF2Az4W9^RdX3})pfTfv3nBPdz^J+xQ8s*FGG zRGx&l7Bl@yy85IwXM!D~H!080L~LLbW8>nijge7sf-k+EV%3|~*?ocMdEXQMhwG*_ zUJEoIs|Ee=fL4p*#IKl`h!QZM4j@k&#`@P&kv_)%q9D@N4Gkc*)RbaVnvH4w-2agq z4nf!;1F7=w)Eg2-i~q0eM)i(NIUf5_IUj0Y{OlLG4A9to_E2CnXwDs%HpU;toH^B> zU6}iLt6avW6fA%jZH8en&}Qa*;))06iIH~oNG^Zb-WW7HvtreCKt~eGp!D4upNhl@ z#3Buu)wl^JdvPcKWghY_*WSy^ESU&FQfd>2SBz>vV#XcwnHi5tR+gpA{y{yRraYg> zb{NvNH5(o`@mcXTK6?T4F&J~K7ok6@OYNZjyIGnE^Zikrr@|xVse7wh%0wGWSBBW0 z0{kqC)%agkez1nW>JSGQq0>(!vnk9bC-Of`g2e48c0V3pP{qHU&jPI$ckgO86v#*@ zBm~+%y<8k^FldEYcC#t+(Z`D14tF8!ft15)A7V3MaVI4u1DwBo0%~(0gf($Y-Jbz^ zlboU|K#}9Inh(`1VP8Wb7QWj}G48&}{ELLZkH{QU6!r$993(g%_B+F~fx+&aGZLCq zEiAL=_{9XbZf`xhwnaSAvWefak)5(SxE#-HbKYY=rvJ&sAbhiGK?gk0z+i5phI+-_a;EZBBG1nUl3P4=Y=8Mx$NffbrP$+% zzll9TnXQY(YsfVz9^?oxBlXz?+}&npIUsEWd2M;5ww&U(?1j9cTN_`J=L0Xmeb&m$ zJmMsA(2b8cy<(c75q7w5wW}v&ai9NI@W}2A_1E$2Ri(mgy<1r(tBY-o|AHEAcKhG^ zS=#nGx!qlvTgJ`94pJV0RL+M3SGJT{kQ|xG2Kuno%|KH!la%+&X@6uzD6g}^FdMH* zJ?@2K^FW5fryQ8e-&XmiETbx<2**isT-{Pp^Y7&`(^bi4K@^|4Hc!r_BsJF|-`skx zqbXZ*0{>7(L~LC)vi9lBJpL!t#>&%Dlv{3NFHmyrI~KUMiqw70vJ*@MgbTi`8arF} z9SYxWw!Y0T#9alG3h6P5$V8 zLmsW$GHJB9Ux79{+{Pb|=U)!sTUR5bI$>zRtQs|S0Dooz8w-+od>T(G<5HXfwc}oG z_SQ~kGqC(_gcxEscEqS5Y!D4YY||P4`HyY`u*E8+IaPfPV0G)@e@@P8{iqf)w%t%9UacObY#f<_!KR%1CVF5}1;^%<=^n#KP%)X8#?v3skqS><6XIEKe6_uuPWkv~~pRKDBmJdXvYjF_K##uI^7`g?_7g zP*y?#?Fmz6y82n;%crq5O;x=LBn*?;?^zW)qdb(%cV+R0XWUKRZRs!XQm-rb&yg49 zbYkQGjCspVY&r010!`RBxEk+L9=D5+F#ns)fpqswWL2|XYy9!&=1pgw@$andN0ccx zptnGU8Q_M7dZB5P|gR-MsOsm$zX$ z79y+o{y6pko6>k!%P?`Q8~COU2sQcpRHuemXosA{bG@h2z(y-ZWA~HFcMU`>jWZT^ znb%1D4p_Ai@0MkZlsOO#3}s)6cfp38shpU^q5RlHSJ`UkQ^`eq^(eDZBr;b~M%k4| z9sUh4XcK~AH#l4WWWALyOmuwRbO*R9k9haUkGdOwmVdAGFIAWw&$~W5KwM@=y zvIRaDo7n*Niuh;t9v_sV{2@VG1$ULYGO2K_P28*gL$(g$ug>EOfI!Zxo=!{~0(jd2 z%H>Q9pfU=HTm?V!cWNk3U6RszHjvH3alB-(NliF>jWWW_on+cOd36T_R3*_-JWy=J38m(A&UaSVp! zunqtvY&aC_OlIK+6MZQTB#9tR1`wE2VIxzQIQcsXsDMK#Yn#NS1U9cD=pVsMaw9)` z3!lHV_FMiZd(Q8<^BPp9{Y-64#%^mjKUydbRCjV~vUbe6mz<77BL}{A2;~(<8hK6< z3^hT=a(FDdWxg~`+{DL@RbJ5o55kpztWld2iQ%>1i^Gw(hGG*6P%RbM!1C693KR2$ zz_+rk>80XQw!r;Qvo^_;nW-%ha~gxk0|kefmp5Q61U?{P_A>FN!K1LPhE6a`O!E&; zgr^l@lv9_z3B$tS5(DSmw*7n>!5llhcMs2F`oRqciU zbg~mICmqOl%=4FuTFFjwkImz!Y{`?r3oW;i^w`Jjc6{7y6?gc*Q-6*ZZChg9&O)9v zG)J%wLhq9yvOP@`VU0!(AAiG1d9%M15AY;&Vp1}~i!%6~cS2{kIzM|woXECVA2Sh? zzh^V~hZ@@vI0AI340*4$1{)Qn2Iz23ezzN+o1Wm!$$l4dB_a7-YQD4fTJBB|Q&?VO zM$V08BavsXJ`%4jkvBqxb^243sb!AAP2H?f9w|2zUJvLUpsnT_Nx)J*uTWgbPc`wZ zMLf=IsOF22Hti4{gWmnz$o5ws90-fqtgJ1^)Y1n6Ut)M38O6$!J5mte@=-bnm+v2n zMe!*|`X;y))kJq$u2>EYOKk(9a6FQ3o1SDp@Z70<<0f7iq;@QE-{z}R~wwZIhJegwm zjDUPUtQ!bjZ~!WU3e>HLr03p5?PiRkU7egEKUR0GJ6o1Vi@jKXlvRV7!hiLWUH!$j z?mkp2f)V|7kPI(I{y>VR-k&XhN9mq_7V+;iu|_M(*#V>w#DO=BR+G}07jaFdQnOhG z_?el{9>iO-#m2Q!OC}=cm4h#eKjvI-ax(QH>l_p|O(vJ~^Mm4b>iZLl{{o&+*E@M4 zf@=`^6z|KqUTHG>J(RKKICd@1xa4aB@z%zIZQH)cDRHE@i;G3u;RpP?3-=7;)Sw<8 zsKx9#Am%d;Y7xy2yVxv>S|Z|1V9o!t_8HHzu>@fIg}uO} zKI})+b5t&;frj1yS^T5=u~J}N0%i$WKQ*cc#wF%gx(YnV9wOz!!F2HN@91&L63ONZ4Q-k_8?P?kY{5GzV@(>yq}U^0?xXB|ga zAT-c<@%-8K>_&b%OfKe>H6AQ-@$9IJ}WPY~9fMM}V{>9Y5%}Rb6U!a7@Tvf9w9OKLUb6gJWQV zbBkE-xD{s9Ij@KT_fI)oswyxNPSbf>F)XG1!+|=hm5H*rWc-U(OE#R20K^bc<$=qC ztS)fY<=feM_J#CnOR+cke{6Ab3gDhuY5c6u3IGD zp#a8CbN)!CoJ|GSvmw^_f&y^i9UM8AKc+PrMQ5CQtYU|w$!gv61pi8ALkx*_Ymj}( zY}((&Tikv(NY`Z@#{ZGs_$RB4KRV?2A*~C*D$`Xgd|PhbR)z?c+2yG8neNJ+lgF38 zU@^x#7l}V3q(P`bGGy^kzIUA3)Z|%iww~tAImlcZ&W2DCyVJ0duPR}`h>si6=aosy z)4;=5&kbVFs=0PPT45*Hz3dG(pdcdJ)bT(vH0;Ppy!o!2g{E|qTmy1n7)AhBhIsQ) z&}tDTagLw8#%ENpTQIDv;@}yB$#xC97aIsAa}@H0UGA+3<3X~@8T@V!5jz!Af zQ!qhwY_oW@X^?m-M>qV+G02!%a+mxF?|>F*q*5z?0~S&xo4}`(h?>>Py*YuePw$%A z!ha~7npftQ%al*YuzBK8N^W|c#n<(6ez%z2bObqj@SUp94S?NG{)uAPfL0hUcwM4c zp{GKihY~pF6?rZi8rY_l7NqjD8xPMc-p+GNxIaOe zp!(aJ(#37;8Vi8%GF68e!cet7j*0oqX;n9t!S8FyD!guzSi@UWHQ49Um&LOx_pR}c zaz2-nrWU%f+4ZbP+`dztliU)|yDYP>uN%lF^Exdpdp94E$EWg*8^9J@yOifW2vwsyyv1}CRCHyL-2FANDTcBcWHK4hyDE12F>v%jH zY%M{@HYof7NJYDQqn(u?5*uuRa#ibYW~%$!vADrk0nq_KDrxJx{74~2dIqYtz$^ZO zBmMMdwwh(-e39-?fD0R&zehS^`OlMBjXgtf6uH#pUXW$Z`?%P}C*Gt4Qj}R79@hnp zpsY#N>>9BWNcv{J$m)l|37CW_hZ&p3R+)ulH!K74qfiM7-e6;xh9;TQcR9sM8NT$j zZ*kenYSeSKg4=miF_}`8$v`Dk{ytWHH6ic`vM4CeS%#&~Q4W&by;Pp!yr=2+qPppjoCU2dH^~!4hba30tqhkvC}k`ZC995roC_GFl%hEHyw&D;OLo{; zinR`S&LDWl4nAfK2Jzhyh`LpV0*MjM_APU*6$qykl(FfK8(EV4w&PlMbIU35q+G2}#mSfX;J5ROut&y=6ZnIVqQIT9Iiws9Lgp!ZQk9qDkRxT{ zYpvE9iG-pysbXy}zc*EE;y!NfQL zq-Zruh|)}RrQitmUx>BArO4MnaV@+XpH*iH%$%Z%^@)vQ6LeLz7IN$GT=`2QRRj6%$bpa>?HXe4?cxVu-#5vO z$g)_}7ANdj(qo4XVM#ELy5SUf@M=dSL6| z(S$lZ0&@AoB*|xBHG<>QW^iPzXr!B&Wd+a)kUrvmtIg#^E0QUb<-yPSsvl?}SdWvn zGHi8OvVlwCVy7!%fI;2}Vp0GY3booHKI<5ZF8IHr*uZKlK=jx;%&7A_5QRxZ#YRag zR^d?=H$!OtIUiZF2*|$?V#Fb(x57(V(IlW?Jj%ZawacuZ zf#b<4Gn;d*|9kMh;%^}GUvj1ZL~twS#D4|4k2nN@gGkY0P2zpvkMWyOz%tLDFOLOX z6ijs32R|HxXfXsp1H|f<^(-B7;vtwBJAgqO<3DIO20*B_uzwlu)4+0spvE9kB9m>Tn6;y= zB}mVca^3|QyOLW|AbUVUYo8PIG32-U*)4Eo#WcMlu0VvyPyQ9MO}v3L$7AwM&R>Wc z{SF&yJSD;SZhg3AqA^J?Ct^75EVfk#0mo(p5?$;%vGB2@vekuHApv0{vQ=z`>CYTk zB_|-?QG9OBzY*~fBibC#!P*1}T6VMlFZl?RNpZyGBR9J6zQ8+Lgk6h;`X>KV{%Tgh zl7QR~HPs>(B{5$IoXlH6aXM-rF zC4t?qy$*|8ZI5-HVO7WryjlC0n2B04D~zuhvwwv5gISM&*j?fxXlVdnfr%)|-snvP z+_K5;tUZpdit`cK<$oNCZbqK}33(2CLR@7WzK!A^d(=P!73_7dk+bCo1{ftkP6MYb zv+ixN-1)O%o)QZwzRt~Fk^38`z@55UJJHyxMZt9flUJRdEGGJr5ZneyoxsJLk>@E+ zBC2~0QbcS+?4~597dn_xrw=X7bjPu4ATnJb5E2biTxi53W&}3jS=9PG zhGyNZetYW*4C-8P01zJ8jTNww#=SfryRw+ZpDcij%be{M2VysZC^9UNN!!>;Gy+w* z;8qePV|1I0@|ZXMchHmSu{F6-t+09t$T=UEMa>ZHmv!naGCE z9%^{kK@+vLh5@1VZtOPLKh3}c?1*V{TIatG@P3nX1H->@P7WtBjh-tR@3q>vYe(OR z0BxF5dtL41S`$8vuNyalrIlWQN+z1?q!-1M{+BIW+Q|c#P zi}1u9o0xOg+GUu)(dd*i)t0o|FcaEDR`+k=5RarAu$7U6IW;ijDN1W4pth-BJnlS6A6p z(o(Qk%nDPO@yI!{L{5e;ZkAlt0+la8r}hh^EkD28G*4upjQco|!)v25kDUKm1nc!6K zTSyV1-y0r&%(U+u(=Q5VL$*5(Y3vZwc2RpTotk?{*i#(}e|W&=`;dBuh7X?+)|@Pw zyCfKk1}_Ry-#m(65*xQ(P^w~GVXtKBFAftuSm`^`-{R7u7Xe)wO5NVSzM2+ALPWYw z)Lt}~r-pA2_N`cf@^(yn#JZXNG|Jpl-c}xK4xeOkn;W(->|%@9V=0g9V6jUy$??Or(b}JJjDUQU6d1FQxZw8}yUHLH#ma(l3&!2R(}J9kpUOwPjHBTnoC3v%4`L zMuaMLSK$;iw?7!QMf55hp^z7EJ!g!!4{=&#Gg=VVnu(Ud{~YzuAx3xzMGoNaUV*|V z9Y-puSu=MXkS?W~`_540XiML@Yc76b3!)XQwc6`D73vS76*dZ=6V9=)zSm|(+o-4W zfE3%;Zd()b^qp)$)mx^WV5Xi{8?C&z(zinTsU_{0*Lz`)Y&8AE2gTwoi}+fgoBGHXxV+7T{_0}FU zvTL}nrCT3SYA}=_)540@bYF3uoxE z^-H?hsbQG=kc|%C$I<*n6g~jTtt9G-4fleKjKq^A2J!s_QU*EiXU56gc-RZJAnA)i zc-AmofQ_>OCh~E&a*uR>b8yz9(xQ`A#T3M(ReGor#dQ2qJzFar zq_};S03BqhFAZ~PrNOi8*yhT%1@t$5mgduG`iA;ayHKmpeu8%2M%v`q_nRZfS|Ug3 z*n`1EvFwH5k^17%Ep74)9#d(#9M<{{31_Np(dO_nPt1cJ)A<99%ecO@&)aYN;qeX9$X zb&0NkWqLY=i@NP#yUxz)(mp+8*ZO{3u}yHD2p*YL8R;41F;kaAqVS+f@*irK) zKvlSBv!Ljq>PY{O!l%={|Jg0diNcW_Jx*#z0RDYvrB?Y`tAMQ!qLsP_sgkk zA>Vbf<&wvi*ndD+X^0Gv4SKNHL;YBkA_n2@Y$p1F*rmlw$g~?I=j^_d;w|h8NKhfhO9zKyaOCZO8-K+>E&eAztXytL^5V_1Ey52`udi&YR z&Q47V>zy`xzuwDCQJv{}%lT?sgT6F)>3b0C{uOjpHZ7u-zQxsK(wEZlD}BQ5%?G@8 z6X_?s^ilgoq3^F8$fiC_Bh~ZK{H0jmJN{7Y!M*jXj}T?E^NXZclB~PSe}M zI=^t#cVGAx?%OLgdwPn|#b!FV*%qv}?bDKbj%qFL4S$u|DtzAI!2`p?&)ND|uwgMR zKgu2#%-Vfq9w^a{)Zh>vITHNEcYy8c)NSVeeqCtO@zSJIc$aj&+Z)kCouM_lZi_*O zK`b^1hbw!vXbbJsb$eL9-0t0{pVVzWTp(P+|0}xZ{AJvM^k_Bdy8d|Zaun1mo5t}y`ab5P}q2|6xF+h^Ln=}+OA1`x*>_qbh4i5wkRGP3bpB% z_0@gtSeUQqI>)vs6~m=pJuy^mG7t2Gk9chjeckj(yL6$K&i)$oe5naX7gmPtSQQeZ zCxuJzN$I_dHv9=4Y;IWQwMF_v7DS$EhrQ@vA+uc3qj+dk+OCHp`ekWlv_C`_b#GX^ z(hEs=FoZ5e+1Iwd>WH95S{OPUBDCAv1G?{T=|35w{w}@xO1Bpyq3hM>K_s^R12`iX zsdl5m8q+U(J3`gI=#>t=Tetm+{~K_9BpM2Wdir{`ey#sxZ?LDmH`o`_*_rkaqRj-; z2P@w01JyU5GRVghhpOc$3{(Z#=lqe0L12R5`rsaS?(J*t6Wx_XbY^Cwq4XFLCi z;Cn%8+gurL2Gh-h5bp0qhp!Bebf;mYc6nA}nzgfku!Viz%dD;1OXu{%-CjG^FEeQW zs?_&Tbg73z2ZWf;v~UmlIGoOgBJGmP=zVoW*XI2mTwA})MlJ2OVE<*PGAD$v?lB+! zN?6{b^A91NDvOqFUU6vAh9RD?)h?Y#kbLKlvdib_i}k`ruVksx_$sepwueKN!Qh26 z4TqZP#IOz1r3>E+AI`FwRtaH3?&Ms&3c4HO+tU3;a7*BkEtSvb|*&H9fE+P>~#;V2fK=#|Ain@@Tp2QJ&NlzC|< z^sUf2!KW~78TBu;g`>Y<0ZWBG0IldEMW$njBNIK;^PZ#_D#S*KLbe`oy3`k17QS-% zfKJCcLF}QELf5xaTRY6JhB|VIQM+!VD_7Wqbhpj7?0~mO-&swoI=fj>|2GmM{%@me zhEnJkVc!8yq;qL_Sug$2T@~qnU#izPuyZ!7f{A)++mfT~p%4!q-YnEtOI_7i)ogTr zF`a)#!t#G*F_`QE_5XvJ&TqE)Xm@8XookmO(Tm}$!=Vz2sX*3M7@}-HxraU5)hin84MwHRaepd6x`X|uyMsf+BK_+f={pK=6X-CN+NB3CGFZH z#5~MQXK0@Eq&wX6nP7j$MrRf-BUAq%FNnP3tYC)34K1Ow$AmMVK%YO`vH&Y$@Tc;P z^V(cC?Z`QLjGs#LMYIjV%K7Hv2ab|?pRiGQPWmx8&9>$=G$&+sbR8F{N@|NP3NE$T z+WMQrXS-WEh3K!rdhV;yJUs`P`O<#2J3*S?Ob`Pm%!Yp17rksu%Q0QM5{`zV%R`XH z;TOE&E9GO(;kiBvcdnM~1f@b};r4dvREZ%vE_Uj+U`QY4gN!<*cPIT(2P%!O_kht) zg*v4p*yKd3*XUP5K3$)r_x`BsYxT=E-=%6W&ldfhE?w&MF!-k~hN8OglYT(AeF@1R zMRYH?4#EY!@kW>WqFAh=XY^?Jl3v}W_u9a=?6Tga`?37v(K^F_?Jy+GW9VN**FV>* zd)lkJbp0THyP`wBV(3&<3fC^`!~1nFBpjWkF6eyvl5h+r{!Fi3XGa%%g4&Vcwn$&6 zv>{}p`|Y2N_7A-XvvUDCf3`a}KfLTDLX0&_$!YFHaCvLAE^zblYlSS2FS-W7Uhr}Q=M zu3Zcd4_;dDZCfwBq*py@Y%NIdVWb}x%oN2=20lmZ>rQn_(cWy2EodiwH5T=1Pj*i= zm`ON`nLnh1qbu8@dUM3!`pZ?3=+X%E9ct;U^sTvf31O@{HKEU7UkSl(*!#3x{Fdq8 z3VlCzK#;{$(&qwdL?r@^XtVT17kzHC_4P(VSdD}ey2lk+F9pLkug~1G5WCb1`cbe^ zcQ_2nkNge;SV=L_qe4UU7s1t~gZuiz!RQiigu>5A4d~519$E#h-`AHW1**=M4BVS{Zg5U9O~PH8v4Fn9~ql>SjG?PN&e<%lbQ|o|CqN zcu-X60~>S;T_H~!1W;%godty~qtG(kRj=-HgK{CpF5s$$m?P-=3+2>v3{9#UNcUZSYdVLMr8RqNnqZ+K*Uw~602f~qwh@zv#bdrTXVMhjF({?mW(^BbT zAC;r*b>CS!c8+G;9`2e?J?Eg5gE-wqCmQj5oY2ZQu0jgWdLH z_x7`p2s#+nnrP4~o?WWkECw$9B^o3IC*Pm&G&JV61wZL<*+SaDeGsdgF>lqC* zBwRQk6oKCBamd^?z!Rq3)gB6Zsc%tmGuEFYKMGyd-tc+>86SxoqH4FY;b09 z^c5Os>(YibRINV9ri^$WT*+M@3$Tuxjy)^|uMBMnN?rH)wD}uSM|%z)Vds7)HR#Qh z7_xq~-tkgONF!Nt&um-OiuAJe=4fNjP3_G_Zhu669tdfT9Y9mDiSwO$Ch${xMC zU)P{`*&z%Ge}g?(3wA+S^r5>~rJxS8gI*0vr>^!h#-c~j&F6mmYmBQM<`)h7Lw#9@ zPU-7(X4iWSI;JT5bb4xA|GL#Xd$2iqqnegqI4YPP)DK5GJzeb|RHf0<3s|d9vQNR$ z+T~8^f=>OLZC_6}*~@K@{7$%V*|UARgbh_g^`n9hT+B~NeJ9V+nR9!EGxt>n`>c{( zFQ+eiL-bJR0pVZ>+j>W6m0(`Exr_AXpzeu8zZ3S|TNzxkIDBzGue4!_$3~}TVOk%g#QuGn z5D9hLdj2YPZN_Tz9X0?Sum?1L$_9CE?5qU$UH-fD(^u?5r|?p!sz)zx2rY(DX+uA# z5+ZV6_Z5vD`xa{jxVwEZ^>;!eJO?Ea;z^gnSH7zbhqNoK3$hA(Ekh^6nD;$z3s;|m zz6;YH_1s(KGvwMb!U_mc+_P8c@!ERsmD)lVS~jDT&Cu6cqQ7dwm2ZUeFmmm{ml|yS(m`zPVxZ;*qn);c zx^|KM^q%cWy|O{K^@r%!A6c}QzL5^vFf`tmAbzw&()UWE`_pV|Qhh$|TiHy<-W7Zo zkA=?;^4RruFL;-kyB@ZMVZIDr{0bUX=p6GyImI5>)&rA=x!MO!%`hOPLx(h!aHzh} zZ1uxhCWoNjx3}d?g13IjB1||lV+cNyBBb>_A-VM3LPH-a{{#io1-NFy$8ja38+%?d zKL}DdEUf9e7pqTCH`~zHEo=-)&)Twg?HF$Vk~Kt6GewIYZ#m75g(D}0Mo&ZEqmtfi zK61?wL5OrOiom>N7c>ko#Soc{e|8Gu+trtk+JZz_f$_oz{Dc=)Ecm00E3SSfYBP>s z{psql|9Hb`cm<6&AB`kfmjBP!Z)g1Hg};6KuX9Y;LmMxj@m6oV{U0Y7hyLS*Gkvfq zYcan6Jo3N)H8Ju9(Pra8zuohH|Mj=eza2NuKv2(bhj7*ZI6E9emB01kKYMcZukW|B z|3BY@SC9V3{r>w5-~ap=#8-3{E)aYGSK?0?|NiqSIEdHPo1h$@(bNBWEjMN%8(q74 z1Rs7IC^S3B{(FM(`G36T8jlG6*CFQnuaCIB@g@Af9r^Fy{$D@znp9%m1&= zJqCvRpJViYb=m*lNhKeVeMc;A4d+%^jCC^E`82u`6bHz$V;Gs1Gslc+IN+L=3>SID zCb|v>{}r=r1{tTB?;Jq%%kq7MZKljjhb+;3B=5Tir<@X^GicQeN_+t~U+x>Z3MD0D z#yIKUAh=JB;R5oA>7IAk1)LkPM)TRKd}eyxbYTWfxC3c9M41J7QAW36Vol_`@F6{l z6L(7TjKBpPw&E@oqsjD3%(6W8%Pu2q;2zSd?nfgYxRJ&mcMfyP4hHjUMNT$OM}sWe zMbhN`A2LdNWj=2I%ko!D;_@6fwap)EJcYje_cGyy-RPrbHzRH2Rufaih+`auCoy|W ztY*)U8|7GoEQ9u+Z*wYx(VPuJ!G?dE8CqtaVQ}N0Q_Q;<<^LOgvJc=&gy$!A*Km3k zKmW^y)fiY$MY6=^5^W~!+mD2_7C%tQ4}#i+oEU(&5NkRL(5g*YSM z8l*)0^;+lRuNlY9CMQ7?aX=p*SB497taspe&@>aRph2?P zbYhS^+Jr+zrsQI)-CA$@)P;T;eevK7w0qJW2uCyHxo9iKWIGMOZ^pBna@aJ}ho;%^ zVUraf23gB-PnYSNV%bG+S?@4~i>wV)di6;@8Z>DQ`EYGI#v@N2O`EKzOq&XEAQdO% z;^qO_ZW@;^*V9|YJ19}!PA3Z1m}dI%=oH*4H zdqoI+m`gLQ7_?$*QSlDP!SP}EtNSQCXAzBC=Q52OY+ba@=>AKHD%tngTztxQ^kD)v z8Kaer&ZC}5HoY~;MWtxxCY+arAsZl{GL0*e_tA;**`_eYobDUnXPTLB^-VHUp$yu5 ztQ=$9fH^f|JZ_**t>q@9^3~Izb*IqwpecE9K|Lw5kKUTsHp#UOtr>sNG$;k9j>GIG zPig~j-XcmKUv7G<$eR7w8Y;7HFQ_*S%Ex4WQzmDdKJ{aQ$7Q2&FFLY|4`N%{3Ob5F%m*K9LmroX#JNGi`=4E~aN)wj;F(X({PN2$1LV0QP80+mZhCml znl(AWMRN~*|NZyLXu*x^=3?ZFf`!5BOKzAtb!txVJNg#CWm|*mc3>wH7YN>aS2|u9!S{AuiwnI$S$rSIGlIMK+8qwZXLCn{GlKVo zf5y{GgEh0X5hF%q$uEuAR21y~bv0Vy4n7_NsEVTmtU1uygV}S9c&sG&>K|~-krYhN z!Oh-F0*&Pt*i-X@Ti)`er~iKZ4tiw#j?83V&=I!?{Y%Ojo%vQ-Ft-q&7p51Kf9{*p zW(w!l-CzQo$PK}P!QM;P;K3QeOg$5g&9s_FqHMrg89j>z4A)#AXH6sMjwuG zKJ-Y;|A}Ko*Mo%IXmY#z4=F9rVBEgNyh}7|FOU(6WqE!`q20RR_jzcB_hP>op|QK3dmM6 z`n|{=kD;DeR!C<7)nLjXmbph&d2V?2cx6n*hL>m;eEDPO!jp0L=2~GG=WJ~Ck7K=JoDkYA;M40dYy_4K-0>X& zS6;H?kzEL@rz$l5edB5UacIwXacFEN4(&|9ZJ#!w!R5HuhYlEDb}MN01qBUwNk)54 z`0(iq4{WrPasGZ2?tcSX__m6(ju->#!#6x4l@2wa%dd%e#t8v?zMmxAdM+OJqQGXr zxX+d|Iue8L+sCkb=%HA46MdQkc<9}BH1uy?v~i`1cK;qA=XA)5$Gl#LDDXcz@as=G zMl1hp!joR}GZ@vQSVE0g)esKE;|M`>`4-4U z%H~vv5`wUQ$5ADYFsk67dMb60FODh{Dwk+*0+n+rPb6S-Robb-Nm(lLaH%kfsuaq{ z0%oCXBwx8HTcTTHsXm3E7o^6K4_SP;X9AS~N|;kFidZV}bwe=G;4}h4Nuff8UgMm6 zMuTxfA0gF0({HpbTO|*tqI9arpzKu2$C8;rJ_n^DnhXyLAbo&*97dafRpe4-9{KVqtAMf#DVJ!3g~|t#uZRXaXhsa>7n4t*$zIAG zK!q_h0nJD;T9scyxiN;3G2ccg6ID2fvPFJC5?2T2q=~0kP4eX6_uc*21@C9C_6}5c-P3M5HzJ+fqW%Y zkCX}InMm$>N-d%5 zCQ-v=V|aa2C?8CgKo%Hku0>q{gH90d0=gpq9Z=ax{2IzR4$NuGpSXS=_QX$o)P4` zg^F&as$9y#P(xL#qs%HQEP~ELi3!HwFW@3hT(7OCw@vavgbYBiHS8rt0F~C>kW)S^~qg)6*59QVw2f_Xz zlF18b#{E<>hsJ@tAD}Ft3Lrv1j&2gE+)UZ9I;4;at$8Y`C6ro=U7;~J9teaA8VuZ% z0c5ujA4{3TNNFauf#On-3qdMObRu~gDG@6GY+2w((7+PPUP``YQczFh8LC8Qz0%gHYrEyeJLfKQP)JBDQSBKh3Y5@&y zF$4>&(&@`dg}MuF5{>c9T0x~tD6@#tucgXjsu@9u3lQteZ}%SVAMMuUt1Pc!I0+d@?y_!Y?0Lhx8-VPHXfm|`>@6Bj1;Emz42 zOKtuCBJEwk+p4a#;k9iYTgTQpmSjoR&9Y=mimb@8A}fk4%ZiRH*|IH5M!qC*(%^)| zO)`Xr5JDP4NCF{+kOW#nA*3lu$#7{YZD}bGn3B@amfkPZcKUTXz?A9G>2%so+hMNX z|1M95mP_aVpXbj*$gwOPowN5^?|Rp}*4~G_H&G{cZw8XX7;YhRguEl?4WMrhbdb3+sjQm~tnKtEv7K90Z1GL{EX93weH@!Q!AlW|I~WgIgHses8^ z$JT`(!`;Xt8DWBOWW;V5?IP-8LSb)_7^CIFR-W7huEfkEpkIxonT*HCa-8fzawGa6 zjyR|j!6inY(pA~RMwVUb3h znWS?OwIUU=Ea3=fMkK0GPDh>V$b%S>AWM+K1+rreu92d43eGS+2m;OUUGTU8@`C)s zT;VK>e&Gfh!|cH^3RFr_9zcziWmcLkFyI3Kw=E<0atOw*zug z064>L0b(F{EqII^n{;xXJaA9oPDr^`Quv`rF z5G4RmFnEdVdFt$DbA|sVKo8bZ^eE+ni#%}MB2De0vAyKQQouU4E2o7491(dPya3;Y zYfDqshV9`fw1U#Bs1qX)XDf}HnX|#aI-$?l$*ZIEdUAq@!l&Y-M##C6%qJ<_K*1wS z%fodP!i~qN0)h&54OYL6qPH;cg71ar$$fyLIPF#nA7xYluK+2E&(IjqJ4lfP1@EF@ z8^!PD7>X%IAOIao7bvln@&_1^;xOHvGI%NLpI zqiB|5i>4C32iyNsXf=iQlK)<^Z71~zb8@fk8jT;bAJl{7zHny-bWf;}p7vV(_ePO1LR4Q}n&; z8qOn>`Vi$-QwC_6TKv*2lmq~R+TBS}94BbgR%Ss6aOQEcNfZZ3Th62lP#HsH0r5CP zogXI89*%TLq#pND_ppIAsv`@x*lx?Ojjn_L99sp|fN; zN9NPy0cRLu8vyFgJNN+J3T_a)nYPgLYtY) zJIIWf_)#);kb9i%Dhj)WA&rw8>#pE{$X@TK&KuZSl9=M_X$uBqj?%CPVG)A!>v6 z16_@b9vBD1r^$FDbsnJ|t<(fMca99J$c)EmeumUfkpBsCKEm@AYNz2b@}K9Z3W^K% z6~yB$V3|aoR&vAsk=G!*Il^vb+rmzVTsyIy@>`hSA|vj^$TU$dL6OxE7}!H$8_7jh+o=<L|HU~&~dN8!&drXP1te~R|xWurqp>dR7w9N?JQ9Cy_7U_ zu5E<>o+bBFJTErTFzg^|rq~R_VDxF~Ji&M8xquA?m@;`!u#fonupLexC(m_kmXYn8 z)hdG<4dwLC^1jVX#5p=u?wh!}(p zK#v%?VOj{9UF3yqvSl%= zs$;qsTuBB*A8?`56g*DbM#;Q~jN2JK!Z03O%xQ`qA|*f0q1%bR~vpl+#{>Y{YcXiPUOJK2BjXUqb|}at9N_FyitcW&eWQ zVT!C`1qNc2{T7PfM*cVx`_utW&oQAuiR5YaCh$YN2u26z>Vyz+h&-R;kHau#;Z4|M z3u^%|aUC?Qqb&Gjin#fQjjx5 zlY2Ya;ng0>Iw?0w@u$cWCI2*e>sXJw5-y5l zpiJf`DUSpgDPoo)V3}qbjxgg-Rw;Ij!&qvb!uu!z!<}XIF#aHaC88HX8pvPNO@1Bu zab^!CzQFl#dY%jy$Z|6!dN|zLAmZFd`VMLeQWH8WfH;0q$M_Y)qB>(-jA}+ClVLJ$ zB_qt@C>fDU&o2^X7kMBPARB>ABjGVn8kr$f5gZIq5sa)L!cco>qK zX_zW3XcH?0_%2+{>khhhQXCu8nLhCn?_g+pGJ#ft^=U9LiBs$@PEJwwzr|1>re`Ham zfZUki9NG!Sjg3gB8CDS}!ua4;GOr=y9F;4JnIFKZpDL#*cYtlB3==-h@R=(yzl(q= zfR42@EAd`OSwvc>9mq?*NZ}jEJx87z=aG5Qz6OR&o>y_O6y8g0+bplrK1$$*q14OExD)2 zTc*+-v=4*%;ZV=l6io!h(u`0hB${Fa@JehB1#n-=r+*6n+k2S8AY=BNCJS=$>sU&(J;^?ex8Z5L$eZDW(Q(Qi=cFOG zmL+P)THy^8Tua-=DKbyl^E5WaN)o^oG|Jh)kcL2wg_zJ>q58wV5xOnM*ibqb09@{+1%xSl%1JetRx3r2*g>#FzSU3e21+(k-a)I~`}59 z$p-Blzk(8jWEc1i4P%N?+4Du}#OA^EtW#!@#G{lC|3Au+$G&w@5rN_orBD-xvJfa| ziK4q18o+QNXU^Iw1@#mNjT?WFEe8N+d=J?mNI-`(vLFGGDGn(GC>$ddql9c2&(E-O znux5+`y2&tW#Rz26dwVV2%%`Oz`};vO4)YuKp9%gHek7zC()bdC}&2O%4!Y>2#hv} zqutE2B3mi^EIG&6egIA25uRB}-@suLLK@gm=qpr!!y?g{q4a%RGx0+CK-veYxRY{t z!v`pQhy?}+Y3rabf@p&;ATQZWW9wP!MwSpkpvK_CsiERPyg|wW?f|9mZVKJRsq?f- zb8rn8g;&#@jw<^oisBWh4Q>$BpoQ}o5485LQs*WzUd_r){9YD@-G4^Ih`^YjFS42f z(wD{NhglY55a-8qOcP+4kg^cfI^Ap)@E7DR{ANJ$R?b}};b_Qcq0J*UIB9Hw!U)vC zMU7`G>x(LGL}5h}kAFp(B4}Z&Mp%xym@+soC+~7fK{K$^@Vy+0!*{a`3|<4Y%s3f{ zBF~ch-TVgF*ffeQ_3Rxfj2l+SFC{;25H9m2ir&vq02L7FHDncJqRyjK0M%MWS6#Ch zR-t?VTObVMdjb3FDW2lQ1t|;ik1U2A;W>-a@lx7@iHAlsL>ktYzW&RXpFh&lk$wBY z`^_2s2k8k?Y9loJk437WpAn~S?zWrae&naa1w|<5se~;D4b=62bzn}?L1EF4$v9YsG%$Z%#lhKfIoSP zEYMYUTECA8W1)!|1yUUFUxXe|F&GKZcr}Do@ZT&=;&lj4Me+j{KslkQ=xEa@w(+Kvae#0GVx3=6Bvow$HJEiiiLp z3Pou00Ee3xYGQx_AQCt-kRNhafik!?)LV>Ph0cS9RXN*3($7-m2C^aGc2FM5!EOfj ztM<_D2#q~V3mvox8CxGqjDUL3=gzehLQQ513)qDs+4`9X;+*z*@*}BjT`Z99;*bq# z1Q`{;!F!R*6qa88y2ua%BVM0I4dEy!VGy?SAW=wD?xSRoLjzP?PT$h`=hLZq3Z5_gr_eaqQoSv*0CT5 zvXQV-0;L_X)rFxz~0Z1ZHW9}i4gn%m;kz? zjCI4PssY>2PzJQtMNW-!>~Nu}}z<^#Hd#Bp{RbQe+=9 z0Te&Yn4qm(djZ^rujA@g4AccBRwTq-6z-vH2jw24Jk;WE(QuZA_frKwR;e~gm05~C zMTt`sGf@Fd81@V`5h)736dYqeM^6tDqy)`^Z+x4=3+Q^~&<`5Z3BJ9S1;xGHNZn8} z+s#Z4X)+|)$T6D%2s{O8%4rH8 zr!6oXq(Y}SM+2;ZU*iHZ?UdO}PO!gylttSCzHcwXLmY`c`WQe1@1)QJl(?C}AbpJM zbCDBVM9G;L(58=(dzfMX!^O|qK`qZvBXaf9Od1J+w(n43pAo5An` zNTSCn34sG3{}giy=mp54AWXoAFqiQ~A4>cc#ePWP{n#dzzXF92|NkNHkH`Z?29+mB z7F;&0elOnzR6Hj{J?MtxY#<0vvFo_@0BZpGLRi3zfRuR-QF1-`*HXHHU3?Cj%U_e_ z$Fv98K%P=X%3{_&N>GGTfYM!@ai)`61T07x^Hc+Qhir-(InpdJ?tb#4CkeXbEUSB+!?a+eF;p)i6mF;dR$2fWfvZA| zQfb=}+O&xZezL8hrT~*i2+GLYaBC4%Q$9fjNV=;iwug4s(Zb&>vM}h^-ONv8XlAma zA305#)y&p*TWQA?EVP3h`fuYp4D@4!VFaca8khPO%gD&tfh2o4ZAomQ1muZDZ5TNq zz8f$Ftiw#BZ2@z+Zh*GT(=HS<>uC;=6cGv?7U1MFvyI8%1UHqDU*Zn0LAuG_5^<%2s{_3=@rbt6Pu`M1vW*BuKUD>=WkJ5$t!>Grw{&j zR`rgA>wjffo8C(D-k^Q&!~oy;<(m%#BKIbwCkZ_WTM1IN~JlpqV}H#ZHd#y0dkv3MN(L0Y{r|DC>!j+ z8UU_OgL(tO&}QeJW?dfH!|J^pb5MK@_H!6Si3oJu`xJjQB;eH56g@@>V1jN@7)3yC z=QH39_!Py@MVEYP;aDN1~wQSE@( zPT5IHoTITrlt(=qnfi8$UqRu|PzkLqz@jIaBq!d(#RibmTxBtZEs*9+Y`Mex-#owc z`-A^Azi_;xm;K(<-mtmSNL%xt0<^IQXg`(F}xsPd;KS_x@sBjyF zHgk9b|IavBc*)jtf!+Tk3-fkp$q2FNK)Ic5W{s~k5G?mU#zLRZjJpwzVOoVYHw@{|e(R7g~Fw{ZY@=V~+-x2~v zzM0~SvRZzgqM#u#=OjxcWtcpcV>EG(U+NJ`*qrw5{{OqgoQS4r`i#k z{RvGrGC@OmEQ8*rRaANpWj;gs!<5Cafi*W!3eB&mzK>E24G_&tV8)hFvWNDgehk-J z{76Efxp!0E&n3prBzOIm5bREHe}gl^B2%=VsY}+%9SOLAG}4zUB`?rUQ0bK%e2q6# zCu%uxHMC=1OOb=DZbC(m;M*Uh!UE@Qg$opWmG&KD=gXX-+zuK>F7kI&{wX~qaEZ;7 zf1EoA#^S90rLn;*w2K{7+sHiyxhJTCPgx%3ogLiGQ9I5b4a9^wbW^$(~3)K}nTY>>VVf+Vf5UMoMl}PX&;i_2;Iq)*t2{{I#!-W%~Gw)tX z?xp+@D%CN`Od`(jq1ewUaU-S9u?mGuD1MO%Ga?jdA*^UMS|R_DGEb3;dJ1wx)J;ya zS{b^Jb+TxJt6A<5&hjB=B3VbC9sdOd@l+c-6>^OExgwR20Bj>?4-G#`C8+7()v)#h zgCY=g;bulk_Oq}J71q6hv$1f1 z%^RH};X4SOsR=*r&0)~K50GBuHy8x8P{s~Wa6io<hg*YbUPEJ#(hij5j!@1{ z$ww)QVMe*>1Yay7LvoVh7`8FW+((g%6n~WR`?+g(_XS*H7wcm8hznGClqRoX90Su! zoMzI$8m_gJqUg1MgwyBFhq=cVW{<{=eLXa`nPLdl50m-byylK-ducV-%aFNlq1D$@ za*zsWWXD*AsR9>nWMMM*C{->{1}Fscg;F$1$^96sr8K!f`4Jk1g!CkBK_8Zf_8lPY z!tQ^pqnF++)Y04iyj7NiQ1^pRUh&1_?E|}i{?-G~qql{sU%hhaXj||4XZF11;B8;@ zM=!kn%)7sEYwMEA>D1M){NbRx_CV>*&f;yBKR(dEO-KBr^ZxhYOMm&%RgbNIcJFV0 z_CE)YyrW*H&HRx{`G#EimfN}ZXWxBz>cPr~(%1g%r9W`UMOL}vrRNUTH>&Q`?+;GD zlgf$VeCfrLOILk--BUYXee=OPjpnj{{`+rzWaNZraPM#aaA10??8&6}EyUu5H(kmb z*Yu`?KMd_#2fOa=BI@Lwoe=PhzasmuDe})0`VGZ?OOf9(WrNt zElhk-i$++=paZmnvS<&)k204pk=_?x=M&Wyg}B_mQtXqQ&>}exk5dZmU~5_Yxl150 zw$mi)VF<7*sSu_#(*3=Z1o?nif0QG;6U`puEVvGX7@)7dObLy@yKs_AXrKzH9+gn9 zzJ}swD0Px5$h)R!<2c246Uxrs5Hn@u{kD~)RnNTi>o?@^4gZryT=D1cXmf8@jro;V z-bSz9PPl&m%E3RK1HF?#{>RESwDY(5%Aa^4cTLcY^5AhuGgh)#vwkn7kJ8v4 zS|8#Vp58#owG_F)@hPTIeiID?OYh+7VX#awsB_0D{xq8bWF0?Vv2n{}^df~2qPBA_ z75ZTX<>}pIY$3Cbg$9W4c?6klbS3JWklN50gu+>9(V#bzX7-m*UdSJ{^~`;G%eT%I z-|^sWg^4$h`E(Aqi9eJ}{{EY1hmNT2 z>0SSS58i@Lb9-6tjDSI)MiJxfl^|B4YZ`J9)~rR=)9O2^u!k917z;Wy+H{IzBp6B> z@)9a)ySYpiYT=fL3~Ce|*rm9DpthEOf~E>8ltT~WU9=yavnpkWDR(F3Q2Z#<*!7ft zmC|6CpuA1A4ZPMsWd~(& zDxg;<%I#t3pG<(-oaE+tRvaa+{b!J2qVQJcUQhr+^aP8SaR_fmXrDsyTPOzddX8pK z)2_9QYGZbqbI`VbqY~spG=-|PWfRSzIrc%y{X2DD$C76OOGBlm!Td%Vps_F-kwqWDO(+qk(1|2p*uE5DZe=X>1i`p?w}>ItGx0j0zHkPBsAd zIy(jT&>UoIXk^GCHd6&+^pliD7aa2cQ6AoOmG*s<747_ga?3Zbib7K5q}5nsb%9E! zc_b%0Y4Rh#r?(h?=!l(25|2~tX(of2{frJ_q%XvUG2GhvhIZH7Il&D2=)w7%RGYE|4clIcPTM zEga!rm5r#W6gi$)jHRYr=|E#?#tGqs1tl|m;NR;oPB9b&=7InIL0U$f{}kg85{ z?|$%l&g~H;uwWIfXlf@#pz%QygHVj&La_y11`D(vYWW`W2Duv^IuR@wA4k)w8}-I7 z^WxRL{gjVT`9^MU0r!TjK#qeWAv;E+PyyjAM&T-7Qus8(MCUvU7WiJ6G9ah4j!S=O zq@ZTXY-e9WDGbJug>n2d<7O1<#x*>Q3r}$%%A*QAOQplyhX=JB2_0@QehnpN_?0}= zzkbHKoSw41R9a7yFEEP15aU85Z=rQ6PlpXcBFq}8B8CzEiQOpX$-Rq$=N5Z6?xxAx zIXZJGZx?qDtJhJ}-K0g=g^X{j<-fs_&6_XXW?ee_vDKg4_@;xWcfI!Q^Wz_kzU%+x z;MF&$C2wye*!TL|xyM_wfgAtpKmPTffBKCNuY8AtcUFVnkj3hx+um8&`qdju?o9_M z>;I43_df@y-eP$!dcghTwCMotGE(d~m)qdbD4EQn4-M+-X;!Tw8)$Em%Wx2)RwD=A z!}TXbD69{L--5NGl@(errV7RM&OAl;6Y7Ro(SjT=xR=+KMbIL-i|nveoNa{BD33}B z8vm!bxPYjOkAov6V6x~TI6;LGDjcTCp2cK%Eq9(KuBOP{T%ksXRpQfx?fqhl>JQ>} z@F`yZ4JTv}dK}FjtC%nYjt+=($VhKNlx(Ga&(k!TqPDTgC%Y&GQiX>9wKTkn%BY5& z<`M;D;N(-3i&CzE4J|s!MjE+})+4Q+WvttIl0gVf11YTHxtej0i|cUKFb#u#L$tY{ z#^$+mIE*pEP9-a7+q0BIdJv6JSfYzKQ%J?|v zPTH6+<~CC*MjMl~{^MMELvRFvK{+vr5P6VN6XbuKQcyuKGCLk!zNB?tDx8rl&KDv;eE9$@uRe4cgyw~z7KkG&{jLjW{V zuA2&|VckaA9*QH9K{i2b17AVJJw=689DN}z-GjXqpiV;FL4-lIvkf9*V2NAD#s}IUMip-iH4N|)zF54 zx&n9#igsJL%?U-|5=zNX&VVd?xB(T|hjl`k^DM=~wC2DUpx=Ng^s`!28Q~>Fx>@4A zc)G1mc9yNr)bU56I@;SJ-X)83&n-c^(~CU92# zc47z*94TuRk>53jQx&}V1Y7G`Q|ikk5G zi#VlsqFSvKC0_z3tQA*by4F;*5l#GgXs9?eTE^W@l|}=PMtE{--tn3?GgTDc(71*N z#dt?BRmH%Fbih&@#UyF+33tUip_Oq)lWG_#R;Ig+A&fUgnD~RXBjC!;1HZ3|sTDiCy z7dTWdR;Bppe&hIPzF6LDj^XDD%ywbF?_|^R8?wCjTNV051MzVq)p;2zD^#jHL#Kj97k-4O~76? z%xrOX6oz2Jqjo-EnTFep6gOXA^cc%Ut+qznKtr2f^uu4g)!Ni(WmMc6DHLaM%icBG zba6`ip6{@+h;vqbR~ts~0r4doDc&F0LIv$r%V@beJv}OZs4r_X8y-sb@$mvD}^a-jrU-Nro?@j3HXLqEPIDWagpV6)n^Hf z<9aLJHC32{Z-sa{Hom4@gtr#73eVhQ27I7!?PYG5WMz%FTGnn5(Su)e!wZIsW7EaW znA({s+|E=nU)z4u!7jIV29oAOpCs^!DS zXhgUVR&>*IV!?uE6it_kn_G1glRiuLE%veE@NjLkDE&B5(Q2@ZlDDGG;i&u9%m2n$ zotd7g74HibfhlXet47OH)y+SW&KNPPwb6-}jdL0x;NTKHZc&^H0hDlulbDsE&6gLq zP}Q{3J_LUSMjbwcVd-^G6>$fvMk}V3x~bCHqygud99=0N*nXLYF8@(&!aFAp`tC>! zX`|Elptrgtk83MFkQ##F<-JowrAl!WcH$e#O%%(R4mhJWGg2znrq}rVx}mD*w~uIR z%9t84ryVvCwa z8MIop5_sJ>m9JLE1(tlBz2A%Lm>4SITZB2V(TfiPgn@G6^V;c92_6r$n+1-DR(oZ1 zsERWm{+F>A!9yf9{X(1=z!9K1DYF9GPv)79eZviag) zZoS?=2K(?%O^i;Ld?GT1ud2YYCe{>d(%RSvoX5A(Mby|Xa2!|zE`I<1KtjkTG=8t<<@ zBTVA!-MjTO#W~F#g27;_hYRMD%g(aO?QfkUahHeRf8EGyz+R`8{VHJ|j2 z;#vzXqFh`fDqHI<<(Y|z(J9SJrI&vmsljV&GZXnzwLB+AQl(-AuZ;1tu4bzv(|9i3 zTonePtCly<(U2C@mx|M`*2}B>6YLi_f4Sg$B?2fz*qp)~j~2RRKm5h3<@0dRgPwzz z8vy#X^9K1nVw)HM?u|})@y5!*XADqb>EumzjQa>i@zSOkAYvB3E*D2eiqld`H>DjM zbZdaR+R&&bPDZAy2ylR8{G*9drd%xc)T(PR+ghyz(AK7C?9SEh;`CHcsX9Ko>eC2)maiHYY~yq4MZ>6{bFlVZL~c z9{7I#LEX^I;UOBA_E~_(HLd6yF-*aM)OX27VDMD+(gPs`w23tUdR(UXUWsFz27@S1 z7c2SN4BI32@%q_4&DO6ztczIx=y_wG`KmOH5)a+%5U;GnBY=cfM}PA!dL1j5&NyQegR0eN^CC z>LQ7MqxF6fsSgQHeGL0Q>UK!chASKO4Nm>-qT&6b(V#asn)OPpw zs9`_$ungUX%_y-rO5Pz0F(6611<5_<1X(Aj5x;laahj$^O-AFWzNx7RLK{AC?mq06 zi%X;1?nPcf-p)p?xw+Y3Fo*^`$WszR(hC*OzHSoO1yXoSLbT(Fw9U$22$E7FElYUU z2GMd=35z8*3KA7Xh_fakwMxoWtFZf}UQ-k~YI>in;*E712WjI8Jnl}ctD&OS@`xZu z^%uBwQ9Dk*tSO3LSuj3XuV2?Vr!O_ear0{4nAYc8o)r3^DXXUSF*T--tDg|2(?UOM zs_E|*Y8Y>=>BmfSjS+p`w6}4iDXrJHXi5v7=&WR4!ls8UE#i7=5qM~$;7uv5%WSe$ z5>h~*g;y5TikHo1Gj6awjU^K}v{;2ubY^p93AGEV#{fy9{jyN7Wxif-R_ir$z5MC@ zhX|MdsgIGNv9S@)z1KBb4=NG{%w(4gJa9Uz)!Hl!iZCs=V^2F=j7c;~l0%qUC7aK5xMk=7mGwY0{Qw9m2QJy;c6Ua4Job zL22mz3tW;(-`3V92Na>hKlKhg-C7v%K+4;3+nA+K?W;41`B?okqH*4ytKVjK*Du&7 z>pvy1hpEwM7Xn*U3#CD4x63kip6rB`81VGU1ctCx;_+ycWY}YiT$603<1mpkYov`D z#`O?Z!nLe#(W_eX#V7D!-X2q<)vRw;)%P#e-#LFs(EBUcIF1g@(ys-5bC>xM(Xd1J zjIfXCX6@eA$c0;P;yV@|NhI`Uz0GC8Z;X1) z;SeGG`orW>3@|aAQ#dg#gLo^RhE2la5baKKqrJ@9a#qqSE*D!0eyhRzaL|6MWF*DW zBSn?4(kNFQSotq|g(v%DUAuVS6Qbes!f{HNcDuhWOeJ?*|4ZR`MCem)gHv^DPN&-` zX^FJ>ErphpJ?*?jxPDS+e@3`c`WJ=c38BxrZWf;BL`U2+?7dyI z;|3n8YyY@t`@Ha^d=H7vi07Pe?(!TLjoWe@wLfK)8M=+PC?BAzVKe?du$~u58;jSGsLDu+dfOhy^npUl)!aiNJGW$)2`P z3D@qxo~|#5K)LHjV#%0uZpmH3IqfQROuEv}yel63k#Ia9g7MIm&TWqUp>#0f33Ou|^G5n{VUWbKN4h`c zcDY=AefTSOaonfy=ola_9PZV=#N&a$Vij?O%|2W#9?>piA52|epZqRdg}h(-v~pa! zNtidE=sv3t1R~nIFvTsB0xLqkVmt z5=7!g47xHdKVnu|_dl zVv$Iot4q}D0@%P=I$-Y$_w|LteUbrR)Mru*Fckcjy1Fw;>g)&Hy}cbBy;?`FbQAT0 z=d`-<^|4qi8WaDCN1)?U6i0x1l{j_Cy^`w1&_p8m>)N`4A`S&_kOvGM9eCebD@H~b zVQx_=Co*jM(vUoBbh*N?_g4hAWr16;u_Dsz;Q{>*82kEgHMm)U{XMBqX%hu_0BMer zvVc3=EF^Cv($@zo>5GU4oP7?D{k2G6Go>Wq`>ABZcv=um;5iN2YRqJd?}ql);+@?g zovRC^!Ud!27J6KWqU-7k^ytHpu>2q{AuL+paSk|`O)TTt_H^l8nv}))CSdz!*pTbe zzq~5F)-1f*9r`W|Cx;KCE*29lLZ|Hzzk0d<NqQ#b_%=Prd%)mwJ_+r!d*fSBN9Krp!K+V z#MPojLCYU@9dAoSD^2=DBEc7e(u+x05{b69M8fw`*hIwiY4~|0(ko!(CL0VrCR~6o z-(CZzvJEkLjnrU_wYA~+yt2$H`gtpAx8C2YDHbU!MqphglQ6Z(SBWe1ZJ5rF)fwTs zeI23!xByQ(|GkG_#@MxJ8Ii;UZ<8)pu7L3?vK$wG>$5LU36rk3SF-4P zBawrVV@=d|IHboc`+OD*gt15K{JZp4@y9c| zY?9EjFxap!fm;a2z&nJa)%<0>`LJG+IUkL;Vd(8O_o`;SFeyIifDkY5kuZH|0eJ|GA!jc=E=~ZS8XWqw=f$J1PQ12O z7mdBVQ5TD8@lBXS7dCV^%Z=30{XJlOP->7`KrX3QeV5)guQ&JT zVV`zIRqxfCzo8c&k&eUoaC##=2WEC}@g<~&jR+FqF!s#HE9>vX4#`3}_AR^%aYAW< zzs+DMbGQgRdmBd3^~n~i@J;n>mzrgGzHcMO*vI(bGbtC~=u#U~yY5NJD2n{!gt$^_ z63)Rdzz@4{&XClqi$tVdQcZ>#N(Xraq^|`e@e}zq{!+;#oO)Lvpt_n3;XpVb>ec1= z3L&fiqEfH(GSz&o%A+NY$QIw^*{|Uu4eGfwqvd$@3{mI$IXHvjdD# z&hZv;3&!=h{2@FS{Bc`di|`=JTZ7XSfEiou_OQDbA^)%nS6jE3UNrLThmET89TTi3 z?LqIO`Fn;h|D&%#ZjzdPkBRS_OR{ZLmW;Noa_2{yZ2#J1KGP)dq**WovnWW*;Q%9I z2=EO^i>@X)s|)wYRY|B_imnGxA;+-x+kr&JIspb>SjJ|Mp;n{_cW5)my5jr=nTHL*Rb*n<>k+E}*c7^yLW(ik_{4CgRFeT*6@je&GiUgcF7SaBP-Opd>e3eb_(o4${$l-U{WIkq)bkw#fLy7T?XrXci?Ag zyDtYFmFI@_53Ea($u-O$-L5lt5;VW zq%cOqq%^Z}IBXyTI%xtJ{AH}vkatp4Iw4f~hzO`NE$yIkQbQV4%px~np_Wk}X>w`S zw)Tn$ikS9EMV#%__w@EEDngM14gh-R4=p&v-!7Q@z;9fcAX1T|sHh z*RP9om|M*{*YfNpLgCpZZM41@4|+i=ItNtwuq@hrC}k{Hn+(d&5xt|)9^tUbzny5i z^qSOAT%uhryR@>lTxx?+y7kevw&Wvq8+1Z)*q}tL*jiWo4H(VKCQ0X7G4_i(5!f7& zf&goHv`}qE-2Dq1uroVS;^^pgx@6DhAA{E;PG~(z(FhxJ*hMoZ29B$N*F8N-Bka#D zwYIm(0AlJ9P}*pPXxLCvzi#S$)g%Eezx?xyzxzj$46=9)bl%qNinbeMvuZV9=ei%@ z<6n?qTGW&MIq8#0P5LL`luIaKSgMATI;8cK3=H5>)UUN*MXjyP-F^z6`r1FfDt?N8 zjj(!``g1d;O|Q1J`l1L>(!~bfA>STJFW((lM?Kx|!&r0)5qO^xlKcn<2z;9C7JO+k^zdEUJjp=CvmEGxme&FaOT`TVRY( zZhijXkKrdRhrfjks##Xe6ApF6A-dF~tqx)Pz8U7}(3_WOB7j_?%-?a`0lwJRCtB1G zIz&zVPOBnpceo+qrKKg(pq!NYq{~Gpnjvw!u-GHLy~~y@>lJ9*Ff7Ay_digd^I1FQ zNKv1*JKL<%1!cK*B?iH2YNKV^fV@KLw>C==YmWgR)Wnd`IjrIqkrTH7s|s?1nuG7l ztzzBb1NxXN1_CSD;ZR_5E)(E8?`1oXz%6=XQazL#5DEllNrj3d)bHrkuY*82pEe+) zL?S1J<)DJ3(6+;cRs_Kxj4{nTATN6iA`{j{cOC=>;$$povRJLMS#Ch)l!8q~ zQg|^X5NL%BFPK?Z3oP_pA%yc&$f<Bv@TTO}@xJx!edNCqa;U1JZB;2?t<5-8jSF?S> z;Q0%K`Z4 z66u$P8)MKP>F-Zp1rH2M4~U$6eVdn?n#)f8{v-h|*Di}m;S4+3%e2Lr40{ey$x zkV3M$3f#9y7R3^21f70HOy@mXYeV!3;A=H#u6|x!mC3U@n&fy~zzqb+~+^ zuq(1|Fb6W#BHfEb{bWy__-hdrOT=X&sK=Xq?=^p+2^VeFr=#iqF(9Sn`x)-}K3%k5 z>_7(J5B{kK46`mxf#L?+j74hJ4+a7VUV|*c$Oh4famBAO3sy-E1=K*(U{gTDdp6wT zyNJtBHvEK@YZ`C_+u3m$T~_3~8;u`#+HjVemLFkPx?ZxN)28R(fT-)Bs0pR-gkIL74}mzU$yW zMg&tB0o>9l-XP^ggJGq673&FBM~ z@(T9U9mR=%LYZ5aylavMeV?NN>{F~*AS-vvzO)}j0Gm~B3x?%SNR6^d7YxdZ?9ipt zP#R>b?8AAl2z*EYGNl#(54;E9TEc8I^T^kafudPAkcXV3ZcF~mwVZD@i%90|JP;h zssr_c?gw7&14!UXq$Qxi(naqj=U5CB*=xwTA~mx3lN9hsQD4 zMiI93_kXM|psDMc)S)KvSsKIZxk*U|_8xo@)(&whE2Ojh*gV*$K9<%TUldO+`s)92wDepHXR`SYE^_uZ z=|8|-J|G@4JqPs90$0+D4r-Gv9>{YJgwb1+p7~ z{mtNO1NH%>nFdTAAh1(r)k}e%Bu(S7aM*)Os+yL!x0$w|{TJt-`8{j9gi-ysj&|cE zr0SAOZTA8k2B1(nL?b&?5J9#Ie}+l8v@e~(E!1+_*&S!gXZN1JL7(Z*NcEEK(XApN zHJ|;Ch+6v7Y1pyvc}zi*tn!e+VWdVRM^Vx0Fp8D<1;~NgZ#NH|c{n=tVOC zsa-e%r=$jx)BIt*?IU`K-2$<)Tf!Oz^L<7I&?XL&rhbwW@Qfr|KPrC$`?8&x5yu62 zG}w!{LF`8<(5wj0zkz{b#XF2E1G5v@$3uL3CpbYZoy=+GCtc<*xy&bA>PsF;R=?)D z2+df1-2;WCQSrn545VScka>vfoR_)P0k_a0`v6$q&5qq_63F0S%I$!-tkJmw!kcC?7r_8wH2#KYo)(Z}lK zbJ9n458}F%At{C_tYFqmSBQtKAC;cb4aNXCLVSZuVd6i0HeHA2v-oiRwqXYA4?^ZOHO)D8aiJPLfeftcwr#G3)gnBR|Eu>KaGwL_{E z&L1RjqbOHM0uAjpZzs5xM|^OM#aPc~GX=t4RhJ2<9V!Ull^8s^W30l}^8U|(cl?WW zgKWBcgha`a=CoDJ0K?i~E3HY)nttGiBB$Er(REUn3_JMbF(z-)IY>Ry%YGqV%i&#+ z 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

    hTmHx; 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 FvU&!kSC7xx?H z9vNE^u?}QUj^VLrz$vN*9g?<_Hqt7#kqofq?BlH2eG^|JaRa9>US30Qhp6@~QmHKD zVoxZ585bE^ID`Vo%jX)`RqMn$jU7Vulzfbl2B1AAd>KrQZhSf@!lOslY( zrB*OvzkI!*+`x8Fv&*nG?OYnO8Cs4&_Y-LY&f(onRzi&&;{~XdTiFI1bhSV2&cWdB z<03W#0GaFlmT^VICAJu9$kCnyjJC7xR(>{T6I$wS<+hwW53HHXPt~`2_Kwm{n{#km zjT4}8H&xsGi^3~owwIrMGimEdDZJ;-}b*#YNtnFcHL|UbQ?rgyg6u3fvtlSTT-5dCb?5?r}oTNXnfxU~3 zr3%FC0|L*n?A%iGCs3375iaH&)cy#F?#x_6tgK*3+ji!To?mjz21qU-w#+q#z6c~= zOs9HL!u|qH2yY_hTF~9jt}nTS%_!a@>TPJe_#n9vtn^<~KpTs*cq63N5e5ve%eCAn~AFb5m8JV`49U4P1phQrF2Y(3MT z7Tz(@^8UxEkL>=zpAl&N{4q6HPLztFE3BF9=07)?nbQ}QDuX~Op%lEvT;3RPkOU94 z%Ykp!n9X&y{22S1zHDv64prGFK3zdRFqDrZC5_pXb`B0aBp51`N%X%uwGW z=1?qH4sgFew{&VxIlDty3DFvuhBoY?O$OgUjUG5MI&uvMB2_+hIgKWvQfJatYW$<_ zji;9DYoJ$+E@vWk_XG5}@~FX#VKu|7)RR4eC4(gWId4Blu5V-40=<)%Sj(4Tj>wRKQgX?IM_chMSoFqBu22K*Rtz$^OtLk zcKT}FW@v=Ja^J%wxXh0gRK``7Y04y{Ccb=8i-rlaJHdyw517r#p)O|hqVj#?u9lPrhefuj&YT_pEpkU(>74v8IB584@W@3-79#r#cAYTF|ABPjO$Sf!Y&SK z76+N$hHcgh8Dnnff>_BboBLig3G(fno}|OtsI$bZ8ratPp+U06 zecQ2z8QV^(_SJNq(bKIp@AHB<(SGg?w`e}>7U2r&;Ko0v&zyos7f3Z?{ZvP+L*b!% z@ez~5JFw-XHiT(Y?nXTNt_=YOF)%A^L|pftHK+>$LmyyUNEdn{34BZZg~II52dvvBJ4mC%mO|*OM{f5glBe z*rQUfajns567JHGgm!z6X6!w^+1Sr6&FDxDAyMUD^01}FxL!`tB5-{1>*R0iNUw6C z=TJ|tY}OCWb75xFF~&+r_Xe~3YkGfX8^^p{Lz|-S6G2yD8s*<2T;5~oGh$+9Uha8} zlxYl3&qxr5*6qFqW-o-UtxG}ITfu>fG&d=8e+Xr(T)4Z2q`Dd*GNi)V!;24|0`xs4N=i&eYNLDYI%f**?Jr^t6`B}fQ<$X+{AZpVJ zW_*}ifw?Qlz+eG8YE1NTbPb5*Z5W&f_%WP74a>)=3wSLSI2fXV;zEJLVT`1OeNT7~ zwpQU8xM&Dh1o1I}ea*$uO$sbBWxX4PPLr^#Qfx8`|1b&lW}@Iqwg|thi7|TJM3~P=Q)Y^Zhb@eM-?1Bsffa-!;NR6` z`qEFB?ZZQN>J4YdSM{_|pMP%fK8RpH$K~v}wc60S@>yWctK+Mlof{m;9$AUYebY0e z!gD&ylDXhu7gy05CVSC3J_$0x~@2H~!~{jw|SORoZ@-VIrfy;UZQ8`@PX| z6OQ4ypVo{_VzO^Tkq4DX|JhXnI78)oe)*sS_#lJV>nzOWl{Guo+i z7*_frBA^7%LYS%sl>$t7_)%SenwllA!cdsyjxX|?o?&4R3ubX@Slu)|K=U2gM7ArU z@->zqCcAelw==7jx;L>kmI|y>%neS~Zgb2HYWJOGH;>FWRMKZmcMJ6bG>*@!&Fn#@ z(?9eg5QblN?Cq|0a+;_a&nQcF`in0NripH zlE4u_Mp-j>d#)evVsBy7wB2+q`!cij)W}-!j@$TOGf#H%Z}L8J9CKw%n*?LWZPq0Q zJ!~nm_c~5~eM3%3urJOP?_6 z1Wn%F_cv}|t4BLWcFt@G)ONG%f9Pp|H%0bW+n7X%zE0MpWNt9nm|f*;6T70y25Vzhvb+W%WPWuGb7c*?fR^)3O!xp@K%2TY z8ACb?9B!G2V9{4`_-V8VRhp%{%GA;K7+D0Pj=jj@49ocFBZ3Q`bZZQ;tPXGD)MjtW`Y=J$NK62_YMn>HuXS~28qd}Cl zUD+e_7yXY9eE~*#53>|FX1;}qSgCnv5xqqlH4ek_7VetaT{ZkH7LU%vhE{QVS1#(l zefW2b=OV2cKF8LS)))@Jrv0hrWoxwb((mcduZUUs8pb-1xy}AJ9azU`#9(Hu2l!vp z7xI(HTjKa6C=W~7vt#=?qo`R$i4pUx2~raKW8;C=htHp3*O9k}A0kH#Le)G+cwi!E zDdF6o8I~Y5PuM(y-8tO}VmY-;aY`^ShY#$)%Gr;Nond)9JF=4O`|L?>$Ei)He#LqA z9zWO8UCZq~-q{r#`GS$RkCd-$ke&_SNo}U8kEjubpqN-0@+LLiGb#;8{IbPzx3e=k`&?S;@~`yPx!Q$;Q(c zd-~_om19;3e57V{k$E!*U0{4Ndzk%PzsR*`2m3?x6bPJlvd7r>KHEwTur-DTzPxU> zelQoVqN~4a#x`70JJ6biHd?jyKE4E2eQY7dj3{pxUo+#>vi?)TRx>B|XS%z`Cb-`s z3*E11-y;4%ffKi%QYuV7$Mg>e*Dmt!+TqSLVr8P!f8cb@LOj^F^gEcEPVHG+w?Kb9 z;ontvf0d8fd%VgEs6p=5YO&XFBc5W-@yF7UbM@nmVs1q>NXhcHWQ67PZbyJ@iNpgt>(%$G-HE{6qc zAv2;E2j@G*9>Fo+rL$;za_LP=uVI`c_P0f7`Ic5@^QbVO8-GZ6S0nej93KU&iM$q);kHJh2qXWf6)W5`591M_UBmY-G3G{+Q+2xj+oJ zIQ|WDYSm}+1ecMV9{X|MFUilvdakKre)cXEh> z>@X_V8!U!DGr14g4J0bgTV^=xMlKTjZx(%;E_w24_B#nPop223_)!LxOL%)=4bqdd36wZ}b^aqX2?OlH?;+qgxp zLH;mvV4L_v6@QEg?>Y85=p{Y+&hYO{h4YIHS=Pph`7G<}|2}4A_sYNZrHRKR^!#uC z^9+=H*?ldU^aCemp)(JWs3TiVL$1k5*6c#4v^k)+OO1fa=32FTDnnm_~qDeP$ zs}T^jAAo831!m#ep5NFmc7c8>r++9sz_TwH6JhPZ4q?Dx3?FFuu!~(o+(QAjy6})nnmu&{}=$*)w zGmGqctG!CFY6o6x9t&bws|HgLY*)W$!nu}zD1G9H@JWtJ{PiI>c zHbI8%Pm6yr>iZ#Yb}7;lCrTIDawCM^bVPf@hX2+A^jp5k{-%)z#otWsQ>?$73{@5u zTzD$TZ|I?*%RjUVqmzYRUi&N7gm;}D*@L|-dsx|2Dc)?sDYGSu#qRJzl9|g+@HI%N!eNmE zw)ecM+}`&CX!6QT{db<78+Gqy=7#$owJeGrZ2fT61@}YZxRIO{cW}&sRvgL`6{^I^ z`YO$24!t%m_Af`fLH^65%3>G~qJ!w%<6eFjBlh?I8z#0%SZG`H6kkIo@n*9R)6bAs ze*vb4q1)Kg!~4lOlaEXi-!n;`z2_GN@9)R1sMm%bCqecV*P`(KuVv7l@Bx6uQPuL{ zpMH+t(*D#w@q9 z&yeMiDHB-zUC4i|)e}3W8H6>*I>zaXUC$X0o?ConORZNj-{0G-idn$GAtm~)+Q z&jqIJgC{h|N}E8YxQoPjj&g%%vb;_2I?=xzi)@A|bY< zTVQ^4lHEYIT46ZeRAcaQI=g25tIdcA;^JB*CSRPQ+-$@UoPocA`vOTQ7T{xA9em@X zE8ncAg5}F^)~i2!qgGjnj-DXY1f+Q7ZOq|IFa z2UnC0k@IysnDa~OzQ#h^gu1itC)|%H7ffbh zWO57(TxItt!!VAE_q&A;CJPT+;eSD|(L0er7Oukh5vhNjumkY8C{JblNpDr|o(b5mN8v_^FT+ zb_wrZPuBLB`Ous{O#<2G5lKeSJJIb^=}9^5DD7L(3`J9UxS!2 z=}X~_knl~2-y%48&b#OWf3Nt>)G%x-&^#}6(p$+-;g*Kqe4p}){>uBg82{Ii_l+;Z zB3~(TT*=?(BV}y7!fJ~$C&y@wlF-|wN{wD4+9c9jWyu^ETXF8kvd_WJyL||=8j&7f za_sxW_1V&@hSC3!55$6`d;-$U|Hk2eU{~LjF`$*WX%bPpUg|&MI(dABD!=~GNub<2 zeXF{0-sClg*U9TW6KSmbcaAr?fucOk4N%2zub|7(2kh8Z2ZR7}uasJwyG0U| z4sA@A={9zi!J>1D@CZ=MA#Q>=JC1cGxyHDMjX6ZblUz=(n>}@O) z+t?a@0SYU*u28;%(Wr6@mANF4;rSTj7^I&wTThB*)~;$Ov9;tlEWKkZ#JeWzk9Wpw z@CfkJe<|y^o$i+lGcAyZOhWAfLld>R*X!|nt31QNc8~|Ge~*!hhGw&ktbocHV>g&q z_+vI0X!(t0J;du^pQi8GK)NoXV_Y(hoWILt5#Q^LDrY@{t%1=LZJgY0s-#5=f4hIE z?aT?R1Dv5xLNs>&^!U;i?!;se-KR;bqZIS&~PS>O(@JO~=Q zhuzWmJ9uAM1y!#Yy&`=YEC0+12>)-wY&Aqram!N&`D1j5u31Ig#cwJIOs=2W$)juPSd9PX9`B&ICvL`>$pCU9?F*)V6IB8?$UZ$@e)QXv0Fy1N3PZ~ z)Oc{DV?$vdnetq!l^yy<t#L@Qt{9rhNcSiPV=eqKVwgXBV}$_F!8MgDdPTNInFy)l zm40)B9;T+DV;%OKhclkJBAj+uc9nm%CXuwu&({t&4{hL1ULjgte~0)#9vA@LoFFnh z^G1!big~C_{F_GtN?hdo;I?s5yPh|XLlhyLDiAgv`yRPS=bo9!{m{CNDvp(v!#P!u!20S9%#L+lGoHCAC zn-J&g4Bxiy4qT`gf3c2zq1)Bb(ASHL*CAGTdiCmz~%TI`2^-suH$ zriw8wy;O!h))O7V+#88sSW?A2nI3xw>r^$LJs?i4>TU!RJJPi@l4J$Pwv;jxpx%by z(36O1+>IbHt80$sEwIj~hK#jcwSh}s(WX=MHoc-fU>tbYQY)>46``n1RlbD&`v*gw z(DIoD4GwuFTQ%Y946iTB~42R>`d*6cccU1=F+zw$ZUY}Ua9_A7GZ*fYeW)rz-FVqYnFJ7R^c`$E^{ z(jwB87g}f?;3w?#$;?aSB6}}H;&BrYwfLj4N-~AkkWPpuHO#5E zAWjR+z9N{hTxHfnf~iKZv1%HlJA`{H^bmMX8#*{hHl_y7Sgql3QDl*YnIiP9?qAS= z5e@8&5BHeOWZ$q)A3az&ZRlYZUOM(;=E8Dz8&mp_Iar|G>pR(!n3r zht;DFlbPKBN5ekj1vLJ32n>4-9n9)D>MuuI?M)RhaxZ{zXz-EOPt8KWk;;E%gnBq~ z_q=q``nH}P9N5Dy?D_A$Lq@>t%9{QIIY5I7E)Gi=8F)eZKT#YWtycYad4oVDYI|ZyC;+Pl=WmH!a2X;zL7a-p#SZ>Q_mT= zpN`Ll9n83-VZEOABoDbqtFn5C`Wtz(IK~;!SK{a*WQY7!B{vX%uBb^Hh~b4OWpmvk8<+=Fa$#UpOn^kg;;{ zWQDRxe96GP@saTTO7cT+64jjoc|&%G&$W&GU5Fdm2KWaalk;#8W=?+uk*DDPJumR( zmfeht=98jWrgx-+rs%p6@@o0Vmv?VWat?i^&H-N5EIe4r9V-7=5kYnn zzIyytEFHMI_i;DcD`lsF9MWC^M{_6>*pH;LvL1-H;*&aalO7yxqxg&tE23DH*_~O& zFzXst!|Sh2U~e@yNe<)3u%CBdA;-J-4=v>Oy?%1!apu9DBR6*cVQ3kd?mna6Rs85Y z5b=_=z`0i2_qF`!%Ez#`FZ~DE$Ht6)ZQssenEmDH+P%j%@?mo6*#8(Wt@c-L2jW+Y zvuim3Q|J-9zEUn22Xk04SNHokP@6l>AaTVUwSECB;*G#cRyOHe4KaAI4Ij;)uSHSTcb4})lVqg-JZ#nk@D_~{Z zhLsUcd$1UF5q7p=8H}BEzok>@lcu>w@Dd1uKKSL?_!zz0ESTVXOkoI&4iNa>jIqb0 zooVqzZz`}DP8hY$gibtz$W0C3BE4dxPU$a1-M1@?v61*bc$vY3stwisFtC}<&esXA z=(=8?dYOjp`*rB9DJB({)C}gLrq{FxbGxf&#}A&TUyz@&e^o~HXu?vV$U}M%Xc#I! zohW2^vPb-W3T`e?N5TL9yU0Lbt*5h;Q4>~8$)FiN;cT{qYl6F~?`NUfMPn;cM#YF3 zOtX1r8|8%+F(p~wd-0*ixR6V`_oKj7|kU&AjYuPB}HH5?1SSJwS= zx=<7zONWPXfE9@5JD&VyxFgNHmQ4F9&Ul;f(k z%m>OHO9eR1lvf>9{`qf#WU*6)?+Xl`8W=g;{mS_@WN7qm;ROrP8GLn_jGeepW?qo= zu){kC&wWgC+P8&Y+lgqXar7VU@cm$#HvE>-fY_iybwq#uk&ZIqW4&uh1TTi$k41bY zn>`%S<0muz8F>WDX2UbZG*1qF_EpJi7khY?cGUHOYL{~$wQcD??-o3Wg(yPek5}&* z{srS|7qCOf)-?nt4m13o$eo}AAVcn`^1`{_K@i!Em+;TUELJUFkDaqF%s1vq;uIUP zjiq{iK(>w_t$TI+JEix$t!r4@LT?i~^|=$Y^}Nq;E2+i~ATwX?eNfn1 z1K*=VMlTcixsmTlDZKKiaw#c7=Tvs5ofKkUo?~?IdDr768Tf+i>8jxHRQ$wL_uIO^ z30?u*Hl_4;f66Is98N58(QuEOT}XxmN5a^X!>$NS;YX586*=mS05;8E@$ z+O4rnYKR4bL&%aPXexe9>=ncf7E_ox-boiiCe`YQn})bSt`2c#h+c0jWF%rtmHgJ_oCM5&j3c|k8d9QB%D+hl3! z{c24*cT}EaH2l=I>&!)yGH4$xjj=q9=d^VRAy7>=)2YH2x{@p1Q6b9}-X}LI*Fx{T zF~_f|8Z#fHuel$Gg{RMatgd1>gB?E4D1V?!(J0c=Ms87aNHBuE(&jcabvj9a;Fdp2JfhlB11tCqnSh;Mg*O>K$57o4odB-YT@n zhy#&=)iI65^>=QfLQkU+KGP>Ug;gPASs7F%VXj|FCuQt~!a_5Y?0f`7p!}P@(G#pP zv)_nTUEw;};U(L(E;%N{PAt~Qo@TEbTNX^WJ}eOb?%YtWSHe`Mb7`#3pGmpeaXaXA zwY%s;w_nSZhTo$tql+^wB&9s3baw5RZ?g+thv(l)wb0ksU!cC8`*{Ig1zEZ7e@Mz~ z9ttz@2QO_h*i7Xn+q4>j%|PVdk&5BZzj(S`sEhc*bsnEw=dX48Y_)cuy;k%kYolHj zr%>2xMI^n?f@c=5?2F==wN~=#`K}pWxN`jL22G+PqGDi&F}` zVy(-YES+dkI|s??l~9(a*6NdM{oaJ9)$8}9y-APiwR=J+IanJ;vUwA=h=@^ZK@CPP zSF7{NS4$JUnrBi;6TDVG3c*19!8Po^$uHfvk9J;O%ory?iYfnqSX_#0I!YH)v0Gy~ch-o^Dv9$C~SJ8n@8D zR0(WN=##J4y)X}M)PKe039&gM&41$8pM1SZu!P;8ti4gZ#+QNn2rkjvCcw$!{RaK= zpKTgZ{w4GT$&(Gs$TW6=>%LFFUN^ev1U?hLS1b2Lg|`~Wh`2W@%=5`@VST+t|1>sr zJpqwUkhCYwSg&gT6J^dVu9}Rvo{|KI=()rq@8N~-@@!EUFwtf5G823eY;qUR968Uv z2lJ(mY&O}%UcSl}MmS!9ls048(;~^D*x8y_0h(7eOu$4`WUYF&_=YYF;O3H%+;%nF}w`bha1E7SwL!eU_<@AG_VW} z57plhc#@(Qo%M?YOX`0^18w!4(VY}!qh(Gs9mtGkq|q!3np>){L^5{VTLY2$4m8z< zXV!oKFiQYe5a0{reGrWd;=3ro>O~$Wo;y&Mt6s$WAfEr+0v@x4+R_Z*6QtpZw?sh8B62p$jUKwb4}{xq5Zh--O@E#z?(B;B0jIy|}s> z)Ae%#tI?`XjJ*Xdn}eEN0K5@tIYwQNs}0wu%jyrafmg}^g%dO~AFVE-Qxqct5CCcc z$Mwm`g6mz8*6Zg*R@HB#7}AGJWL=*P_^*#ga`ns5qd6rcJ46Hb(E6i*ZKF33ZcN4& zObVE4dy1|q1#BV|qKnZavU`G=yaZ5nN zy%kL?-8)ckJl=+m`U7*~VLSt-$3cBpJKB!t^8?G#(L{W1UBFa5~f=!vIqToRXWw8bS=j?1bgZd0vs5vg=9s+J~O!qMbJvL)He6*q!}m#h+?sU8ElEpUPFitAQkY22R(HMOZ~)4f#vZc{|{Hnqkdrilk=d zCYw6cR8uN`m?r*Q0(s&$G@ec@QlFIhq`JCnanEY`7_unB#wh##8=aJmFs+U*b>TRlLcU*g>0&stW^9 zg5Bc8i!{C?NS5N}O**bXhQipHTG?D*2OlsOzMEQ1uLz9-``tIIUitlU${$ z$)dVidYGz3X+KSFP{Wc}U68z&O5WrGZ8uG>(n6>&2#gG3^s}hnhqi^$BbO>AgK9dN zOgYt{^arYjBw3XuQH@F#)rQLNNWMzd^-18|vSyqf-~39c&V&?KV^UC!NHH}jMODA# zQoXp3OGRM19qEHowpCIu)xIoC#kD!o-!VAS`uGZI8q!e;%$3sdJETJZi`0>jC0k;H zlupc-rX|vns;N>4K8Zn11^L8~!tpsM)CQciBRSQyUsA1pQB7zzAa!XVT=Akm1=6+Q z&ZbI!yIS;vYOLz2_(qDmX#5_kX8olCSH&0mEvlpiRi_qK7io*tkk+Y2w75D)Tdv-u z&BeV%711A;WL52w0{{W#AUUO^+954Llfs~goVo`y2s2G8#>2RC0W?u58ds$t z3i6gsR@zoNT^m9~-#WD6VpvrDA6cmz` z=EYm3I0{%C@036%Kc!N8e7*#(gK;RvbEVpIQfGXPggL<@x$u=gK2KVL<^X5Vq!fxn z6Vz6upyb0ydvOh_9`w(G@Qs3Q1W7_I0>(j7^%AJ=Dv}yi9mdCq zWC6m;nxsln7A*j3Xl-gz6IDH0V=GaLQR+~w7(hEP+IzLh^3{QLV2FZJyxAq$n{lvS zvsVf=PrG^zHzPmpp{XGO9L;S~0`F|iKnA}{viY-8#1HV`w-Z;FKPq|r5nM51ehc#0 z0V0pINNq<0eMm7Wj1JhYCL8XZC9pMH)JQYJb2mruJE2Z%jv?YYK3qM3p`#h}+nm6C0%#*kn7e_FSqY3d3@?Z!K;bAbbuOw3sB>L>HKvc(sEWBPsNUp%zeF-=sa0L)9zoG#3^HhDA0)BCDu4%yA5=?!#pO2WgCAivw*I_`@ z2n0#|zxz128rUOXpF%rO0|u;w??F6wVgPL@CyaNXFuZdCo+V!GL>(z$Vu^FuFn)fd zJrp0U#)B*dH3qh_=xU}I1~`p|gz(G{S_OrVGZJom=?!WQpRPc5JCZ}4pMHs=QCW~aT3qT; z2o;9Z75F_3y`6@JMAK>XKc0@Oo~$Rc94*Ts%~4y^;DBkDluC!Ba3-cMlG-w1Fm|;Q zZF5Thq~LKSat0v(POoAnBp>N@ii$(1aT;cUN2%%uNi6rzky`!tm#NQ9MB98>4yO1F9LEwe=o(WY5x0Zsp&z`m^0m40)9G(W+wqtu;sJ^_oaz4 zn)V>lUn&hTq@@-8^|m-cgZpTDTdCWTmc{9LrD>`~N{i~fw8fU*2QHcJXz`+Z?P<_; zOA4iRw#X>a-r`6H)zbf%YD3m|izSUAO{*arFGYO$qVEs*M3LI9rw zb*IxH(3VpD%hg0nC>?1Dr=u9nB~mmUM-NKq0-s3L-(po;TNYqsm!&%-ISm3%M9hw{Rhtf`9pTnPM=|lr^ zEmnVNbe^Puh79;fX|VdV9oc<=%i*$?dngL9r(-DEfvW>=)E1BAY4J+A7QfVqJG3d+ z(uzj-(>p2t#Z+HQL`q?NJT2&@>Q9FOcwYNy>y7c@OK?=19 z=^}8+n|o-2l*+rnGxBL^K|Ur;%e{)2+tZ?X>$GG(J}n|G&hIRnX32??HP6Byj7Z)Pe|=}7sm75H1G3A@)rN0 zGVq&i6C_U#94+TT3xI(+NMh04FDC#4f6kx_>wu}4Z+#_-$oZxDIm{?XzFb+@NC^-?9OqOJnXw6t~m8Xjt%XC{NINg^?wR$sZtDFhr-ZEWAGG@f- zmP~p&_{MZUo<}pP6q_ED5OQ4-r`yn(AbRGKbU8utOt&KkN6ksI^q14OiQAS4NsHWUN<{?f-A7 zZMq}lxY{~9@_4|(pslrMI$Ql2A0}52h+je$I~wnpZp{SIgczC-YW3k7%|u&+lB0Ew zbVsX-4lmAl@yy?9%@kXMco)w^kk{90%N(WCEv+c5HH49{Lkh=Gq$IU%yZfAPZiDY&KkX(#$`pv?^m!|4K7IW$;c?BblhWI0Isf zX6&jh0|tSsGhLR@GWTv4e@O5OgT&)rEDH`QKDc(Hfp}bFZ zJ3Kq(q_h@f>%}mM=D@U3gP@Z@Sg~HO;!yT zRFslJDGrnjjlZy5Z7qCPomN<)W(#TDd-IUdJ}&WaAR^{%7g89K$vkx#bP+#V3|5QY z16A`Lz${#Vyr-fOfU-k!VIU#}@V>&bJg_^MUxKds3ZcBeRH+mzKv*iIAqEz1Qt=qj zg(zC^B0*9t*o&Tmujnmw7Qq>d!GfzeM_OG77gL2`F;++y+mRzGB?~Ibj{;s%aNtiV zc(W7T=>!y#;J_*x6IA{AFDC${3z&Rth4pH%=qtp5A~11D>kG+ZxZp3wrEFnGnY5y? zLGl*o6|z#Y=#t`v*5W+e@1TYKR4qO2rGU-4A_|HWVeTkCLLqt-=Rky5j+rxydVzyQ zuPPV88v(RZD#`vOMWJ+!A;$^~S$k1c!^NbUE8c`AIV7p*SJMEXOLY{pnD{WrMSB5a zTrr|Li%uXcM4@7|Fbxt2zAZqlhhk7D$yk2iqP<`%<}gZ$l7xkDrhe#(DrBoDuCPc* zalB0wabJYaT%0d;6jM^LxJXJDMHCxR*A-gTB%q(bsPCc0uV?}B5H}r~VE*7k+G_p_ z)-eg`d6O?+;z$8%qI-r($B~`roy!X!7tOMD`uDJ&-&|3m^K6bJf@onH^X|(#jRX zV_e#Cqv3Al3VleOMM*;z5tzcs>q;F7mwq=S8|m5Q|1at-BD*>|W;g)ceD)T{&DU!9 zb&HxM`o?5$==uVz@amAL^+^$l=1}q}l5Z5&iY?{UIi6M$@Yub@RrxEQn zQ>@z01%uc^!K5;DHkY_A)V*!$H`;Lb8#qod>TRf_zG}%fEA9w;udA~wTf4sDeJ)-9=|LpCqY2FMsK*igK&{LPdrSzws9Cf_P=8Oh(GEL*ZE`qss4tLb+M0d zVSi)S_oL^_*x!UQEd}&=mLuDmZ)?ksSHDbujZIEJGv1u<$T?W+?VqsN)KS+XGQ}BF zgIzdMf&g1lrFJkog(TvR2-@X9JX<^r*TuWeXq^ZC^CSj1+L-Nd+?+!=V#lmZrZ5Yb zIiuL(cg&jMKwRWJ0?+~oATKi+I(PdC;-I%%5X*S>tXZ0prIqSQLif9e*&bsf>Y5aX zJ4)OU^E(4@-N#f1 zQSK!TnaQe^xc4#*b?h8OmvBr?-9@8|2))ei>-jz6vN=ecwJME9C&G1eTY=IPov#48ApRs)NY-YAj(2kGdg1ERoV_)&vA&#<@42D zo}iS4zz2bo?FbJ5CSBPtHg^BPI4hR{5UvgUlFW+V z0A}b94{hbY=e|=P@n7d3d5mcYYaVkI7xhQjDT;zEe%JY<+o2%gZTMTl+6phI64V1$ zRmcy0?r3YD(J`ZWMr(ZSqlkJuOG7Z|cE9i`=g(zY{peQ*;&%I$eN3B1Ek>;!k+X+C zO=y_Q5HZ+aic;QoOZ)MEFC<$Q5+>-N%l+*${y*;CJ-msk?HgSynQ3Q|nU!RkOp~-t zXWFK1N}IOni54iGrfC~!dPq`eITtNj5EKMd`ikt;RL?u9xA}D7;QK^c6f`SJW z1Ru)-2nvX2M1}9p^L_8W_PekB&wK6vb}v?2(qv}VTKDmH-|N2J%|La)mrB6<3-Z{% z@1L8K?dqGIlP8sfXsl3t@>&kmm1kcq6Of=LduD~w3?d5@na7buj3Y;AH=qf~t1*xTTB8%HeAias6A5vl+x++V7+mqRmVs*J@|*{oBO6}{ zoCw9U{f%x92taproj==Mt#}T`gI1`lsZ)Y-Kgt_q$8tkq{-L8#4pnmZjs%Aii~>(( zOHHOz%Iga=mI8hy(6a{vNZCD_Zsc|Ct|@Vw3RxG|Yheb56Gpi~TM93r`Ez(xSOq^2$?yr{v8 zFXzBYkoz?ugsK!js8lu z-t@g5)>kSgr?i=%mz5w8L>1T`z=m~|1%G+(8KGu4ltcGCfxH4m!YX5ZW56jT(+?Z= zO0ZmD5(Vr0cqXct*dPBCei%97_!7KD{?cLB`@I!a9{EIq4jxeX!*Pb?kTdHNX(W25 z6dYPt{u`3-lGg|{cG%A8E8)%+@+AIHD3PkKG5z2>$&`DmoK*;S_(muxRIsTh3T2qS zYr_qTeTVQD6g+ozrwoz%Q(gF3&>{2V$ZCCpF(pYw-H7Xqzrlvg_`;T z(fjK_b_Jmtd!XKl-#7I&`sxC~nr8Y0l&bNZ!{iaaz-0p31$94-a5ngvLt(EfxYvUeLo|)v=gCR<@mHGp_Iz~e8Oro z^fmzc&X=Ee?LfR){s8z62)%Z73m)S#Al$#)4|bk+Pq`V)LnpKnIVBYLW5-jueFx1! zoD22^-yRf)nB4q6c3-&{QF#UBPB2mOa>|PQTfmHFx0FMN(ORhh=L|B#0mQgrk0Eo8 zR3;TV3&?eTP$vaub(6>Xlr|oUx0gq3bH{LBo##H()WRaCb2Sw{&Bk@M7hGXYE!?gd z#z3$ccuN?qQ%aWbLNtd8mauq=GXb0n$0%nEqI0;u&H`VH+`p#L3x+CK{x#k@;31{7 z3^7un4~j_#>U@Q(Cd@@3fQcsL=j6 z-j13{6$?e2E4-it$v&R^V%qUDR{+{x*w2FfC_jaBdJmP@qfut=0SIQ=mjW zs0x4G&|3Q_;k+gup4Z>#4F*J)hBPz$41A<;Y?Q~Yhxbc9;V%YxE>F$}lh6<3IyBP0 zLh|(37+@Z!mr-iEjXe*dAYS0wkFuVFRP3VCM^Veg_+T~I`d~gdzJpU! z{ara}o|jP-Sz|(V^c0fAAg7F3H?A!oOyQ*^!*F=C;TWnTuQ6uHm6MeR9RDyUHdv5! zO@``~$iRS>lby)bkbsvyH&>a0Kk?o{&N(^P;rSl1kc9tX_< zXl?<$9%|%1y?f)q;PZJahC*EkLYBlLx3F8}pNR)190nFtKXOI`U3_54B!%zp9-hV6 z(-;t8p%r|8{uBMsY)L9~WEt$l4k!OyBMF(TM*$(n3UUdOJ)jWoTirc=3u;J2`Gu2_ zJTR*UdEumIH$&EN&H=0$B$@*4ALJdsedx?VEjE<5 zqA*hfj)Qz&Xl96)lSx-Rkz&NbasChky@L&mcLVMRc4@A|2?vRg(`wb&#&Kl0hAM9s z-(uqPa{5U1pkqi;tk9QZByW(^a^?Ws9<*-H2l?<@rMCvmB~JhhD6*L|f_nx$-P_S| z#H>_7=aDLfoQEV(=&Jy&JUqaHp$SZ|uGXRTta;&I1cdQ}*zXllwlIr@L*mHW6J(@e zb>syiFER|~z#4519R!u-mn%qxRh&zXf6vs^m6Jk)ycku7&Vztu>ll#UI2%NndkEA` zOmw}89Vgj{i!#?_;immz1;Iqvk+5j%ah3ygHPFrLV_aYLm@fZZS~wD@J)pG?-+ zgeP%X_?EpR!3_QGB9gJO%2VgGSQ|NHqMC;i!lO1}IFr=HgT(hV)4`Cehb%(&4{=@;>0dg#_&ExV6QBI7h*Ke++70KTnJpm=QS z)Chp$5_ZH24=}yh`3de^SpvWfxX=$Z+|t*(>pafZ2;1kDKC2(64HqstMff;z@;o+ZQbDPMIoRUh{Fg{Ne`OF~CDjAB9Q~Zz-D~aKu z@LQ;sjMgYmprFvj(^UqE%rWQ-B0Xuy$XE%wdw41`rDl)3kCVVT6lNMwZOBUnJ>*lP zki>G?&}OCgPi24*)aUL&-pdwLE5?HO5LRevB@_;TAfd=4K^_IZq0ibf0yRO2P^U;I znic35qm(!IoTmZ-x`q&zO_L`f*K=^jUIU(*Av85SfeHkLRk~30M0Q_~(5=H3wnuI! zXEj|Z@{Hb>nF545&){^_Y@bg03qX4lzcd3h0!DE_-USiDN(GEO>_*Pc8haZ!7sMeJ zJQAv5&7h0CqRA{bNMK_+rJ;2-m7aC-MMB4L0dPe~oHlEB%O$3|!b8TJz(Z~lFEMsI z2Q7X4SjX}V9G4WQGFanq!H(2JgKc|jgz^m<;jEQDy{i(x1ib%IJicZylL0K59dkU+ zn#8|zE2`XO%Axa;L3R#8a=h{W?`i$ zOflo5NxRvun6_q;%{X3hya(n(9=MYQZXbT%)fsio87tce6e@%e=rr`jl^Yq>W3WsuqRUW>K17M{|^qEj*_zMpDG%4Zr9NZ?89o+qz zd;pAEj{>Y+A@%G?0Y?v9Fc1|(ghTNIIu*~!D-*|CH<|1T3Xp{yto-F)DNmK-N`kX6 z6R|zLW6;op{e-nzrvY8N7kcz^H05>MG%;kisiB`-?78PCitN@Jv+`001q|N$S=&wV zX1u&v%rQdOni}|rUnO&d6-AV{mQD`sHrx+4+MzXkEJ0VHdXMC9thJsdjHjZi>mV0t zY=j3WYa^HRS)fd1x*NP+Fz*5GsU*cIRE4LDLy}<=iL!K;wLNmgMJ|e14i`fG519jj z3lgeji{4$`ST51DzSdhiNNF2!;};|e)8nYz0%#rz?6g&c8!3J`o1gVk?*!X!9g@VE z=H8cxRbY+M3;@|_{hgIUS)D*=y?GUWgjrbYdk__ zJgO)E7~%eIZTO@3a&Q%$pvc7jDU_rn*a3n55u}d4>u;)A_U0p}H$%{hM4Lo%QX=}h zimXc^Z!yO=H>UlBg}sb9Vz+u~vX$YaU!wSpmCBQZ$KvEecm)Sdh5T|IS&%{vt=-XG zxZezi7;`7v8s^ZkEss)_9{MKzC|S=DnX!JGg7;89Pun@YQqfowB!}bmRp3ua#HAHu ztSv>3qbszE4;;o?@ZrQB0~$)kaKaW1%1aug74x&~mn{wW?Q*ltmUX&Nm$Ld?y>a{pro@_Gb}iOI~*Br<-lJET9Zxk5&L^oU!QflHS`nZ z9!yvU!m>b|^q^3qYc?i(7{gkszMA}z(6Y>xjN}?HwdI$?4yvvm*L2?>ngp_vOoUVO zOnhT4fW9@s>fTILho2m9pLMqpk1{-RA(ec_A9?8rKd~l4OEpA^B|5FsjKmN1RHj6Z zCGd7Ln8V<@OY&=A8&?5r6A*T@mR%(Q1jj=M7H(E`tPL%+-LUWafCIJV!?Zat)C*0< znp025f?w%@-fB`~JwHl*5sVk_^QnDJz(R(*rSEF4%}Tw)(z~dpnxyN{{ZI1Ll-CU< zx3x^UR86{csP2eMuK-Nt79z#=p=H{@fpp&`zn7eiLQUc$ypY2PNk&vGZnx1KRp1u> zZGv{KZ=}!$?(FuT2MjC=Uz-lhN%q$C49fUgJ>_3}eUybK_SGJ~f8qqMwZxDsA#YoKv7~aI4R0HiBM9l)o&$hb&eMKq#T15 z_dHK2L!pQ^*bZ>Gl__wgDRZg1!AGu`C2u95aly-a_zMt+Y9DneQ!ezEsY@v|5x$wv0-MWfcy5-NsTy)$J( zl3P}G9ksR+ZgyT)et09CD1>DW`|vm6exxi1`G`Mx;$-1~y-T;`>Bt7encMbtKWcrS zLz#yC=3(BdtYJzOS)~(><$!5V-Zw^MX?mQpIj#a8_FkvCd)ix22Hd}IjaDepz* zyH{t(vepsTBHpx7DJx*e4>IM-!j+=Mh>r{J>)9(<_uOf|uxBRO#*%4vJs@nJpd;7y znvQF7N(0CTb`jD{Yf;J5=7eP+$rCzlVV%>-h2~jL%D9MX>L;9%h5k_4kOQCxZW+?( zA@CRQk{FT#E*RiknG)d6S{GF(k;N|kfBFuFw-~kxuwcGMvRW%XWz5ZQm-0~DV zPI!tHCkf#%h1x#A6-(17DL|gGQQ+$wvJ2Mf`EdAAsX2be<3yPgZC;OO1_M5|Bi}h% zMO*b?(ZWK9w5I+-h6Oh4^<+8LH{-_rq>QENYOJx0Xyyy2AfW5vm;WKD;Ppd9JlNy5 zs!~Xs1`FU7)YXv^7Xt!|K>t(^oStqzyAmnnHv^aD%JE&+LroDS>BEG!ZfyKw9W-J% z<>UYp8B4C`!Ne3Dm|xBEP3v}3Z!g?aIl`cS>m;mnMM&?Ii1U@^4HlLcJ?VoDJ-;W=ncz zPEJlFFbN?_aRv)V>+8rzG0-AgSjLbJlrmy5(6y>hB!9PNfb4iw(YCAvOjnItZ;ruWZt`@jv3 z^yQrR3CNI+xIulQtRr=JDzO1ins&T}0(3Pw!$T#wiSkb2v20V4_?jNBQ&bW{^mcI zpgg6A3qWwhW{Ky@BW*e7wQht~#N$)QAhxxR@cOLlFdI)P+Z+*$2UDzb1OiP_60KmN z0m;_}!h4|$y(-_*KNPj2o8RU5%=#0Uu;IB3C~tDVi397;7q<2;6oxuGPl;Xutch<} z@_Ye+E?2;600g**BZa(YuytQHh^B@E;sPF4rAz>G=wCeLuIoK!Z{h-t?!jV_UU*N0 zgMpN%U)K_2`Xi5Z zbS$(-^$9cLA#9NKu=Upjt{#jwGLy5^g6AUu`@Nx6-ez^e;skPg00pgu52uOExny)A ztar;i65zouApJ7ID;S#(NVG0PZ9WWLNKMbWWa#>QnbHWS)sQ z84g@>AL)}PPp2SI;>jc9^2C98s9ZRdtn7BgGJu~6>j$_8bmV=~#JaEYyNhm*c2w@~wR(C4u*HL!5n*({#&sV00 z;Bs9cbrlq*gi?nWba)!Sm_8L=j-2dG@su8=kvTaLIYn}HILj~s^~EEc^N`^qGR8jg zVC@r#lOS>;yk!>SM6q0Ji;5FF$z)EMD)e$n3t7ilw`iN!$fIbB_%s1#=r2fy-lbse ze2r7cGj?jIB51g*ry_eFooj`jx>X+Wq|W{k@+6F-X7`m}CZkz8&NPR7%MFOK z{!7n5CV3R2)Vql~5rRAWK@#T)U)w>-Tr_8;g)g8cQ&q`1 zWGyoYMxD14W%?F?8TE$vv%!&RU25ZbcB(ibhW<><((q<+h`V)^b()s$Bzxm}z8BZ< zPzIp0qbuL~xdmwVt*p!MSQj#YMAzMzs@!zU3}upMGeJ40mLp6oeN4h~fL7l7d*<@4Ojc-YRc-W>%4SO2=o> zP2!yll9?ckObLI(CqkW{spM*cwU;5&&Gt@VcPg#9JVIU%PJ%vOP6;OpJMvTK>xBId zaxuQOif^UoFX2VM7B#UR03*p~Hc;QmY2*iq6uQV?GH_poxut+F!;%s5#+*`t!OsD} zUTES-&}L0%GVWtNqYEEbxgaH{KNR06Al?DwUpo9I{T;m*Rfy*kJteFb+OwU89F#es zMX0ZV@A+F_4~UUpc%6?JEUQhPha3;0Tz-1@1@T!+f|tt8F;tVmyyscu5iY0Lrn8|$ zQM7qhvaRg#f+qS@R`JBXruYy=%KM?gCO?TY3|PPb#79)cVYG(o?&Ddljz-`b zb`ebCb*;VIK80807-I`p&}tqPqeY(E-q^fJ*C?v>}JB% zV5RKJA%AFvmFW@w%P%e5i3n>2S@EPqc`7OgsqjhhMS=ZeP!N+FkZLS$aj_+~+IUC2b-u9V5%PdIv93iw zdEJUrJ=^d|d%d``I!j5!`TS(4`(g1w7)2RBJI4`lFx9KP=>DkmF+4m#uTe1@h{TBUng1q(%NTU+9Qc z4zZ7;Y;eZyGd;niD6LrU6i2h6X+q~fubb@DK)uI^t10lx>vL52@6T8K?66xdNA6;HV0y?XavmVf0V^1Ch5yl6 z9Q-Bk;8#w_6>&k;B)r*>Avej1#zA!udv9KGAp$XwFZ8GuZ=y;i+)g?iOD2#PP2>ee zlyne{6(sAD9aOa7$kZy>8v7yQ>^JWArZK% z28yZ(&nAfJY}Qq=Ho3(>j|Lqo1|(J>ZfF5l*E*5h)scc2ve|*M8ydw`$zYH~K#}cV zsNo&tn-p2_Wb)JWkfKyOn0?V8uv?JR_AHkh*D{v=$NGX+pPyCi_O)2#YrrinHl`|2 zFDPz0l}?PX%x;6QyBv(br!^$WQ8)p4CKkR1EW|k>voh0}hZsQmNPBP3<0}Rcf(mZK0QNnyf$#lc$Jn-yg^{0WdWPiLEhm3f$3?1BRUXfR>UPqhNod2W@=2g$r@KeH~E=4IhmXx;savKFAM}- zh39l+ou2fSSw(D&5wB*0WnC0Y9q0UKaE7$rMZaRW6F%gMphXn>+M4Ujpm@&+--|@Faz$CLzT)o!`yG4Vj-zc>dY$;Sj912kpskT0if8?? z4=MDCX}SoSTT5Py5oeb;-h|N1-9)lAspJ#2H&(o!IBP)aH*CkYdQ`V5BMab{^+(>@cw>$*7JRZ_sm-<{GSjOUFiOMY`>x{xzPVsQzajpG# z+b%7C-{p8AN6Q;L0P~yqnfw>_YSdKhZnfk6Rsp*3#MnSx_rSS3jK+(vn1s9-d9-p9 zxk*QT(wrE&-dT(i?l~;vfCcY5Rct7P0lkH47a7T13{jB(x26B@2k{>m8Pz~%_ z_<%hJc}S1QrilZ!sqI|WpmGDSl$fCDp6PgvJ(jxKVFmJPBHdc+s!Cy{2}-Y6zt`jA z^ve*D0>??5YK_?K9=ZEE|=?DqhWJ}}$+uF`kpQmVRc;xeI6ED*;~Gq@`CkQGRt6exed zx;^g3ZkkJ&{9KIarf`pKoO*|-tHETJ6w0jkm{L5Q4qlnYXIMPFrXbn|p1iXE{XPX5~X4OD_qf1NE`P^tE+<2qEtq3XU2!!djd> zOH5k!Rg^i*fqIu&e}TROTB!K;y9jF5?RoBGsu&Z~ebCxNginax-z0%_5OmnAa z{IxIT#qxW2nKepBBm)?YhX#4usDc882vcGxPi^a3{`ZKqt!)fi?Qw0J!IfLxpI*q7 z!{HM`=?K(`s%;h&i5RtA6kBXJW*+onhkxNVE-Bc}bDzYDn!!BCKAVkm;%E zy+I~xAQ~?T{tSGfb)C4t34k~`16jJ>ia@ou-scgIC!r>&+D8A*w;SPHjNjcTtQS$u zj_a3S2f98L!$mUHL$4v1_(PGr2{l=ZG&Vy9sjv|-BQzDHUGc;f8u3*T5@M3(=t+MQ z<1McduH<7#_9q{Xphtk_-CJl~XM@yFe>gX3IoNpV5HG-gGqpj-j{C^Nat3Uk*S5Bl zY)P&_1CLx>(6;%Oy_wCoBeizJL%_9}aBL0x{qqdy_52 zAW4MZiXxYFXwqE}0amK&Aj7gRoPe+yDowf2rLo2fVHF`LdOo9#RJEH}2eg3EFRs!+ z**~(*EcP{+A*}=0wTAo&erPEvEkXh7DTaeQmf%=BN=OOCg*Fcwj1p4E4nod{QO_0R z40mzO0k5LG2%!KShu5Kc+NePC4YYtaJ<`oKjPUj-lUl~vSPLnJG_o59!i^}eus5nr z;oagAJ~w9+{+d{1BLhx0qagjm2bgmg$Aizlbz$eubfBVOF*#-fmzZhc9^ zKsE$9mcsa&gUWeSMpl%Q9!M#-N<%3y8hXk>QnYH23)02mP(w*7q;3Z4aU1!Vqr4Sl zqYh3Q1R$XufW~1}L zyvLsfdBza>aUf^Q6Roc?1x0S*jtGd1_{UhKgVr(N;IO{{242LIJS%TzuZxx(TY{`a z+wN-F!ycL};lc^RYjDmJPTF`NuY_i(+#)hdkAh+!p(Rxh*-insb%W?RcKMoEUjhhI ze;tGcL^&~ZLd=2{trHXgeA08t3NPh%khb{J_hTZ7(L)qA&G%joq?^|@R=|k^AcYE+ z7kBBc}GGcl076KH7U9k7E11`4G6{fzZ^f3|j?n)Nb19rVaH}EMqo1K;8lqP{|R--_s zO|Z#2$PAVSSuO~gfsoR8A@(@Hs9KOa2ZtZATQ@S+F@mVE+MlB;vcwn7Jsf@28gPf6 z79kIDvA8%6kQNs7*+D^qwkc?UGZ?1D>3d4)6uNlJog&PV3iNuNqJce_9OP^rH1v){mZQJ7= zB5sOD`Q+(Lx*gxL2A~o@PfnBLnbAsxIXNM8z1CMQ?{I}8mipM%1^(wBUj z4cW8d?G4+Yl{I8=dNlAL6{sw1z+qFN7$nL$6`uHssw z9!?n5WZOO~g)qyhv1UIUVyN{D3_V6Z8b}^z%9Nl~;FHo_#c5f2ebc~mHX+lU*Rbis z`b<-MyADotMwy}z`e&%LRzhe5QZVvk;7NpNih(BDI0cSq+7UG3tcCMhTj>;xQ5ooD zq^F}?7*WhsQ_48_xjY&}mm}29Gd!l}>VaI|RVAbhgU_s`9~!g(>a0@>DYlxzh~HO; zkr_^js-QqIn=%RhvlZ@$6_sg&1w&m;jHGs1kE{#4a6SwtJIdr)xSyql##FlqZBM`C z<4RI62X|2H>GBuQbCD{62l!BpJwq_Kp`gUt?Pc&QRfgzf3ax~sdR$T(xdkGn6A;q- z8V#6Hp|81rZUYg7tG6$s5&A^m*Z7ZS4+Z1_9@TfSf@w7G4P zVYiHxI#?iBn5xK=@5W0}ndeK(sK`FFQ9LloYxIe@7cy znXwNbxc^+d9JQB!h)ftyNAZ>~VFGVpY#8dbP=}%yU<#e0m%-KbH&sZHr^9Nab`4%W zZVv(qeBb^myWWBgdoiZUs2-u99`;xM7KnD4GfeT=(nPhRHhqq&43-ZwXuKe{R~mZo zNc(WK&ECpskbWzz4D!Q8(K?)h6I*@^O~iEM`Oc3o$MmYqc8Kc1?lXT%Ik#vZu!JK4 zabLsqsb9-kKhQo}zGxky7Mo4g_EB&N>ir~BN&=QsEf_8DxDNNtxpnW} zy??>DmxGnNm;oxI?!E)I)<2j|zjyEMJq^74uX}&c&>|Be?e?PZGU~jkb}0gKrGCyD zmx2rj(21UXs$l`c$I%)4xaq)P3tL`+wWZLlA%Ci%V=P)K%xA*GEwP4E zK;$>Wg$BMf0Rdwl7}U)~uGo%zdtgl~ls)Ab0XPafgy!3Az#@2K%l&dODjC~~P4CFt zu?K_*hogbP!o8G&X*<#v!-|>UfH<>JUWkn*%#{H>V4f<|%O_x0=a;7-7CZYQG=tr3 z83uR7^eNhm9$}M#-Bn}w1QvUab$6k;!^R`o$fh&x=+(+5HKevFOj$Y8>D|>skHib~ z2%Kd|qXgJDW2J%YX#Tj0LjiX-W2knZ?7QHGz1r4O9S#U`o ztakyYFSpn{kD+#w$HV-8#Z|0s>|WGyVPduk+Y{lXe0Db~lXHMNateD9`p_}~V`m0% zvF%!V_XS|87S1|9(?h5J$Z_M|*b_Yhbf2_!VbuEg52+w`D%(83N4 zk_!LOpl_YO!o~@Do`wpZ@WyqO>(%^1xToI{58-ymxQC>GGRq+JqUQq;ABkh(`9H-I z5aTbxu%jQ~6ceG)Vf;N1sH&g`Z7E!cfrEOsvt1T!pKZZhJyJqYnivWZA|og{dD?N; z_$PF*SLsL=pfw_00s;}bo>+mb^;2OrnB36`IN@FDW>i*3L}$ix_E!OILvScasoWnL@B{Oi>F8sQfnsT9|M&kdN4K_9cr zpdCCcGGET(lHas=NravjU)~hLytlb8%;)L=8*G(tjsGX?^U}j$IvZ5LXAzpNEapIy zhL^S-f@M0y{=rYj*!44zsI}4rBGrj7x-D;`owR7mq}o;CB6hTGK3IM<$Q7VNtjABF z+H$SB$DN6g8TKGYRe@CC>9e@pf=!mphgvK5;j8Zg62W+h{OlKh3_GC*9A(#wx2Zr+cW{$oK9UE zh~Dtdps`az1}vYRrs*bRM|)Q%-5q?m3vKAV!%IB^)f z`jz+$k8+^Z1sq;LQh5gG4DTg+5r{keptoWRw$fG4Ed+^zKBlWWmW%>sV;0Z)hW^EX zlhmS=YhdhEupz#1Dz#Xf$sFAmB?Z|9)sG;RC?UgzlQWZ1oxqx@K6wrq?NPsUD(^}I&QhDOtQ~o%ILDt4DuuN zS7BcOwMDmQWLX@Q0@!K#B|pF_g--#N1I8Xwc)j5r}`DUmv}(TMbVRMs7f^kEBy(#5Yh3Kpxx;=5?XObt?27zpSH)ZVqvjLJ|UQX1$u z(CqY&z}EU3o8(o1^h#YL83u^vBX$JSjx}9>f}E8j{%oR!Y+*4^=fRW7L(se9vsFmN zPh4S>;~ZU-(9RDQK8puq;a9;?jhDkhreM*t*`9?lIjli6T?yRY&i({{K-On8=z41u zc=^=v&!I9#62|mZ;Y_>%vlk));#QcyY^t@wYtROjEaZ77>{g*mhuW1p zrF~$FyXGduVl8_h>B)F|854!p_MDazM+wm z5LzHyCrmp<$=z%MspNZ~LuI+!sc+Qb1*}c5$G5FwU@<+L2>)jJ z#UR-V7n4!zJEg~%J@(_jxs-j+EGGDZEems_EMwXm7FZrwAF4znH-{@@M@~KMi5)W)!*36rK4Kjc`R~Z>yDDSH z>^u#xQKybr;VnnR2~$tgW_-YKI1W=NI^OySQYN=YKGkk0L->6|Rs7`lm9p3=CzPs$ z>E|aOO?d48`R%R-{a^peHK^|${1{4q94Sv+3Psx<|JFj^&A|Wr-@6%D|CDXU)$m0c zEi}$Ro1-5?%9Gc3MJK|yqqdpXPd}A7=Wl#0F~lS-l;$!ljgA>K`Q_E}0`u5~@>Aw1 z$Kdd+hMI3?lPy_eHON$1n2Zots6!<-R07|#5UWG3v5z8`1+iI$Mr6@BZD`mwWXUQ7 zE1jE*lz9LZp}DhHquuwRby;W~gG;xeVxd$)^y9y_(M(cj`fet9q4ep(&EP6)7DSD*qOR^=3F*Cyl~_3^v$cre(2b`dE@e%+`|ef#f?Pp7U$F^hBF(+3vkDo3Sf7P~&m+2qapxc_I1 zQ$N0{^5uW};Kq;gKOf^?QgCL(JYV6thu-rQeKS*C+xOyP_tMnMW5#}5e09~zr6oV? z{A_8z9}lVP`nMn3biDt%Q-Ngzj+~!YS9<6AJa*u^UpIB8zH$2(UD>_EG0V&Dp?tlv zZp>V-f-F<@Ois~W20)yBI1j(x^}ulP4(u)$kkYHVztW*X9rH-0g2_~b8EJ4Vf- zhct~{;u+FB?zw5=u=~5Z&J25~`-?ThAMPX3=Ti3R3IXiCsv@2&H*wB%B?!nEg z$DM22+O_4}`0YE+tefy!kNEsUd;W0`pSb@*6f^1IKbyXubm+G$Uq5`9PCNeyG7Mcm z`KbKt`Y9jfe!2e9Pn6gfrhe8i^o40(wmds>@VSXcM?Ut=tmsjXUtCf(>WM2aJT+>@ z_dAY`dh+I5(W7Vne6nivtluv@HG1})8%Iaax%<-}iS793v~Sz7(6k{GowRntT&?S? z4fAxh(Jk|ZH7>csH0*JC!It~C$_;T-z6w8;IM=*!Ve-nRjh$&5*KSbD?HXGQdW91x<6T2Q+VytGxe2@%d3Jz z+Agnda<;av88-f){n-)IuU%d;zOXQLeAmXOUFWuLS_UVKH$USa*4>pga{Rikwd1y3+p>Q8_t#$D zups06t((`3|GsDad3{pngje6V z`Qe1up1E_U&(7ga({=y5wb561W*LTW-!es!`RPC0c>UW2Z+0E{_sZcnv#u-{ck|%YEw9{sbJub6y9R8PzOz%sb|rw_W;`ZY%ro~-%qXw1C$-N%&VXGZKkp0+7It-SwhB z`Dvd+9hzxh3>m#-+L>VwpPcsPs5$)fuf{I(O+VYUmjC?hga2B&|J;N<7xsVs@Oufb zpMO-{I(B{6sgbW=`2WiS0$4cAG^z#=Loigbc52}}Kj;kvb zb^eHFP~)i^4d+rLxq@{7JAR5yU*Z3TI=0<2D16C_R$;tSg%(rzdvMS( z{rJ-ohHr5b`Z zs_BD8v z0rP(&qo(@ETj2$)x_FX8zwg2L=Oxi9`12#CLI3A+ed{AQL!dlZGdeI-309AWlT+?G z0@{p$YnKR!`JY~Ur^>V&itMFER(dUFE=GfIhyKko=n{;}Fs{J(4#rg&-@y16j9wU@ z!}t=$S1``PI0xfv80UGW|Aj~yKKT0f|NMm6eveJJU{C&U^PP5U>VHj`UXX`=ug593liU_lS7OmD!X z(<77K@IRgO7cj~H!NhN2)9?R%;*Z~Y?ElNex9c>Auy(nY+g8Y*GLb`O-Mb$Bd7oiR zhHzDgZkJ*1F);VJDd>Fl|J&TL>G2wqIWqMzR5ZX~0Fgvf2u>Y9S33r2VMM{;V9+pB zFfeRsgl;2WktdIQ!Ioapm~LtQ+m`O3f8DM6uenhl#Gttbe1}oZSE&!Hsdk2b8+ygZ z;&Uq1-?aKvG*9I%K4; zrl8#hdQt2aI*mS5;cry*bv0VZ;;m7tucGm)DAn%}tw8TmctMnE9j*Qx14@MNs#UjC z>a{d=2s5`-C<#}nD%E$?)E!mS?<&^GoL6bqQrat2^mP?#SJAgIkRV>gsn&4nsnnvV zsD;t&URCtFYP>#LwI5UOs@Z&IsY-iY6@4AkFESBv^(t0v#_A6-wO-AZXtqX2AExNJ zQIRM6mQ~HysTZ--Vmj*ED7HfLH`eZ?qYp>X;0>n?JhQ`0ss?EIm zQWQY;QMaS%r8N3phfnEL2YB_bQPehuK1WbHhqr4~OZDn4YHF)GYI78QK!ZN#@QE1J zMx*+=j#{UVo*PY{g5ZJyFOO0!wyIb1)H-cMB-~P))~ISsr4hckjVVopF|-lJh%f>V zLl46MLx2$jBMycMh6p1TMm*0@36W1xkxv=n6)OyAR2yNR|FDr6ep+BeSj`3_5k@o& zH4Fj+PMi0q|HE7eMc~TF7qD5o!?eip-`MQ1@z;Tx|6()xesoENSK-LQZ=k5fYI+-v z+Np}(tYRSQwT03w!rJv}ZmybtgnX}#KBLloi1jP6VG4B<3u|#qiD7|?eaN^_1@c+H z26N}JumQ)crwt#|;s+{p_Grj5x6`-telOkq{dWCG2>0G|&h!6y&U4Ov4kb;o}QrSkqsuzI?7V_lCBu;kTr{gNwxtpc4dxdPDnb@Z8qye(sre6 zVWv-*d8epvOCKU-j4YMn6*2P)vwt8a-DN39P(x3%lXO$0FUi`;9AhkFkmxQG^HRoG z`hBu~0SHBYlNpFTmSlb+&Kea{_lxp-WWG$Ay`t_m>EB~%2N@q`SsO(APL_0t zq%TRkGNmfLDYZ4-?wFv=V*9ov3AFfJG`4E`S$c!*DrF6d!h4``66=LZWnLobEG2Ii zXAQH|4@kxd7w~zbOiVi}*$yUWosf*5 zkY$(w&lD71o+R^e(oZF&Um@!eQMsC&c844TEaM&-KOjpHyF%h9C2e4-u#O)x?I=q* zDH`sRW^0n}Jn2s`TSH2vQfKSs_nGAjl8?Y%F(qF=Ml9EUgpz>iFv%xLyPZ;sb=~@% z@Qsv(*AI75#sLzqQ)Y#2JEdMC`F%3P|gQ>8HrLk(42p zc9?8ehPl9KZsz6@y32njv9k4ayV zzKt{+NY|yGoPlSXIvfj|rpR!RG!DlkW$b0fQBo!;Z7+c)#?55eO8S0E@3d}XY=DW| zS!SPQ1p~gr>Imj-(00-sp|n;TL}dfnw^34={s5)N?E6V<%B(h(n}^A|RW%t#z<88| zA%c(QCn#%$V;@m%$_19bkA(A-vXOM#$#Mq>Qa#vRG7nPvZps)CEnS%-Ea^*J>n|_Je&yn;VWt<{8pMM~VwW(Xl{61+agv!hSOtXBBOcSJBPtshZtTE7wvDN0? zWcZA%@53Na(s?GIppx9DC?h`-G*c92vC~1;Z!vl6+V!HDzZ7;K2VaX8FZIrQ7 zwA3d}GVw@Ka!Cq`^+%~!+QqbINk78uT`>CEdi^PKTqU7NJV+8;GY$kO%lM38Nj>u{ z*>{rMqdh6=K4zK6ljNzStdB|jgk=tseS&2ocG)QEcCoBt$IT>6lGre_9AQcCQ_2@i zxy1Azlj%z`glUW=FP8)6dt}&5x{oMr8`&lpA|lffGHhg)4tpS_*mNBcp6EEk@YZNg z@^+d9(QKv5l-yxH%a|9!n06TlJn4^6#sskf+}1i%c9CO%o8lVH>1vSp2XXf*_qU)g}6m^Sh61?@wiH{)M80NkYaj|Y=_ARb3IIW#PmN?H(SJ9BI$+C}0WmVB7ZI~i=cbdl*#kaZhn z9i@z3W=s8?$ClshP+E~am1*3U)9NhaPA?FU82QISTO z8l7FC^lL0_Co_J`?48nimU4ob%JoxX=2l9bAbEiHzo z5oZ1b9)sBinemt?d``N}Oy8hB60#g+_Nz3jJavV9lxc>Tu26rE(&{Y!l>1`(et2n0 z`bgA&L3miX&mhtn`>B|T({(6t^aZqCl!}sfiKbCz{+y*Dg4j)&8^ok=YEXBO zWn5*d&)Z1sGLyd`!(CCgS4>}-cAUZN%9mM6hwdurn==k3(K(Sh#G{niO}kj~J~8E@ zXgbNvaEBXN2JpQ=;#rotlkB6EdXMBm(spZxNY|sUv27H2Z5AxdO{UHqs#ukHlcfD( z@(`Of$TNW(FhgyA0 zw-hC=<#gQ>rLnZEKt_g8T9YmmELBU_FMeV{V|k=bt@;?M6_QFLb+tl9hPPD4y#+Om zYOUOmUI;E#Qx|wQWHE{^E-KZ#P<=mXX-3xDD3CnA9JTD0EH=&)GFN5^8jR6ifSX4B zHUAT+(^1-3xd;VN8%tw=aH%WHvlum~Q59D$p{)1jJXw}5BrUd5Z7nWWEGm!TUH!$4 z(bCe!#i;LI-dMWQF34Mxsut)U!mp*Nw9pEO=i|MVIj54Aa($W!uU|z=m(jmsy#Sjq zO7jhZj52!*8keCO*P^Axs4csg9y8wcVVtEVebig2)?+O#LC&eBl;)Og66SdG-xkch zCX`l=l`bnb;5j9>99>me1nJ0A?=P!PTAKd#Plbiw{8Yux_aDrcDLh(ktwdFMykAY; zr>+^(gi_=0pZd3?Cs4r-e=N=U1~y_hKCxt36j=T)!yt{3p&Ye+QH!9lvKnNaDXrgF zNjpveLx?9RSp3 zSXEf!-wUJ9Mavd7qF&lUWYij4evq%S#`g6@&Iqb%E-nY23oB8&;%4A5WjKVTpr=q8 z=`n__krKS;jEY#VN9?HYS{f+E()QAb5cv=XV5s@Juahyui7L#Em8B(Bi{>siXA}m6 zwXzrQDO4|Nti;>uORCf2o3Wvre)zLk8W{(Rf`#K`?~tv)l~~(c#Ec_QLW`I zJnA}VM>#kYWM~XXHfL!JatZ;Rmt_+k!NCYZATn+Gs%G|!7kzV4sMhtnO-s>Y<~8C) zRVa!6NZEWLG=Sfc=k4k-0BHRLwF&c38CTluN8z(Z6pkuEIpLDUu^K^o+KRHJf>;{M22b(9-XSfX)WF(mGh$gj=rj2DGKV%D4usOVc7i)3Y%p+;dq zD#Z(vD5zS!xKR$#D*2mb*hCR5H5lI&=CxvrVNhCTJejc*u>HYa12|Chd*Q-1ywy>h z_yJxy{IeVH)>JQrbL)m=7&c$-Am*S;u~@942nssqUw#QX~bwL%EQ$~T;G@H>(nf;tKOj2wQi*OLgTH& zI+RJDFK-tbrP)rrGPWpIvY=#<#VJd_#NKN8m#*imk3ig_3l~ctkijrhb!lN18RQNF z__lDt>7T#w&y;xg=Q^A$@}%Rm#?=sx;ot)l{ap;{B+>Vw|7KN85-5lZw&kL;0#T?-6& z0XPW`fJn}u8u~^mqeCD$!YnO)*g+(dgBF7QWktyh{k_m zg+xH7g@5{%5Nm11_UcB|dj;oX)l?~zxIUF0rNSFe8qiJYq8yX!wl!M1YFiKU66|M>VG)X~X2#C0>?qXEev2Py68^Uy?@1awXfC|G|fUEb+Ha{J0-1vSqGQ~vz4<5TGgqu zu1Q~rz=DrZ>IP=m&Wv|Sxkzb)42K<>kC7#szMZVQSVohrBXc8iHe|lSvZ9W@*$DSL z?IB08v&$8BET5h4Y?61AHeU{C>!p(971=cp#Du8Zm$M@G8qKQBE>BtcU|Uj?r#^E7 zIS0r!L30jM-dTERzj|OY0{+=2Xl`Bda-kEICHy&c4;SlO-5qR-I1U-dN(JWbE7=5z zNLlry6zbcg*aH*fKSc9(Qs5XpQsqBSzRi@{&w>N&(NPMurDIw>MYiLFqLF(^DK_~G zMaDAB7wvnQd4STwvkPq}$#9jBLNb;sXIWO?1G~swmy`Q&&jWX{ONo-p^j*nY7~4v) zBAA~`BP<*9;EH*khgZ+5^nXFKu99YqpaI%3(p{#MPW@dr*UEQMYAAOng{J6{l1DdF za61J~(WAA&kRvv`(?3YQE}oY=#!UAqtJ4vlU6s}TU|mvk=4w~F|33MeJh`)borMO3 z-^Cz~q5GjT$lB%YBkyifR_4_yMVN%n>9)6;qxf;mF0gl)F>!87KSS1V?l$JXP4Wez zy(D(bIY!>qIrR?@igPQJPtXf4ifo5H#LhA|mQ&NLuYIa^0rjR?^-jO;ZZeBG~`63lr9qo6J{~3vwT(POZhw4? zNrRMqK=e(DbFa|@@00rzq%;^CrJRkF+x74z3ST4LJqWGn??PmYOs6tLY4>T?Nz$x% zu+7sm=P2bJC+|*jrr+FRVS8{iD zSUW&+oAwOND&&VK)%$SKV^_%C`B=f@m1^RuGiNL11|L2~;h1qFW!0F9MJR80PAIK8 zYbTjjBhh8)ORt#SYV;;=Cii=k{3T_d1qSW`%00^FUS_jylcrAP9MnhJm-7_bUS2(Beq5G`p3yK_J#UHUJ@=M03G`H*s&F?F#E+3`^C#hoP zlX>OEPj*Ll(!#A28>L0NsL~$WPETE@s)~~BRCb9LzfX($s#h*KKoy&*reVPZRrXUk zj&AFY=Erd6=qXydk)904F4I$osVWvLnqR)4qwFLte2?aDVKqba+GZcJ(Qmzn>OhjD}eIqRz#6=sDV2zKzP3FRY6O7Pgm% zqBS+KCxbQp^o;?k>#H25r*_l)?X+MoE!s{M+bA|diwmD@uI{J$)+L?a%&p!>4HMM3 zftGKe_&#ddOyAl-&0DE%BYk5RwfLh`>iwokYRsSSTi~7VSx~+xykPmFp2bI~Vmph~ zE=K>8wBRr;+D1+N6b~<+qWK4Dfdf}Tip68JXjEzgnY(;dKYJfj_+(z?gw*R=siN~uF&^( zQNORdeC-q^R^VfxAkoxyfu3`ATUJ@tY-fXkuDqUow0=KrI8M*+rd3~3Z%zMo>YAjD zqttPPZTf;Xe?)(Kml9>q6+U~L4IO6PBWz$7t#5cf)IUZWw$XE|U${%1C0mYA-z0s% zXX}c;X?U@A+X4E)1^RAi`(gUKLu}n8wko&(9If3#{Re2cVeK#te@I=G{gc!+#$Fns z#1=Miibf{s<(@Sow6<_fbZym|4Qw4CIYXlz>tbDJX}GX!Hw~YoSKg!VouaYU;f-v^ zei{f5J9ktK7w&kUMkJmeuBJ84iNI@hyT@ox$%Os2^4&wUx9#RHhP{$Hq*=5!}$PkID6Gq8uSi_x=Yr!clWNX=^g@^*M7#jK4$Mni(Hg%F- zKSPHO(cbW$+;{ly;>qju#-RA-2|93!9cckQYPwstcc_IFhe7j%{5+EE%>v8K1H4isBgI8?vped<3?gV7y_Xw)|l9L-A{ zq8-{bQ#4ZDJ2nG@XYB#%UcJ__%Du)i(6y?4jXyC=UB0#c?!c;oHM`i$w`pBTSMIuk zu3c=XpLX=q;8xl(!G=#zfBF6uFS$Fi2ir%t(A)cHr+4%SjclXdOEh$xRt>XF7peOU zy}X6iRu9#$YF+ygt=Y}Gpk^1?x|?kHJ`J9r(J{8;B=v8h#0eVtfCkDF+h}-_*6yQK zVUS_fR$9A@)?A{O0o7r8xvvX|bz z`)G%)ziJRFQ$M(uj-00f=*h~povTKf+EwdtaBab=6>C?o+DIesQCHva0QF81B&`2^ z8oY+y*^b+QlDhBHn(~4CMC(L&&o#;%pi1vy*0#MJV={1(7|hTc$l8KPQ&$U!oBASOnIev|3#XrpD1}P zw8y>M`9{_55qh&>Pj}BrdOq~VQ8sjyM$3CW{Y8WIyYgS}I^=uRz03W&^H9aBb(6WT zTi-lH{i8JKAJ|BJ=jpi#f{h;CMu{^tFv(yhc7(bI*{We0xlS*`GUjz}rQX(>5%``&et1Wt(ZJW&z+@b$JjdW+U_+aecP#LKRw^J zwr<=rc7Qfjyb*ov6untF(Y|{l?U|slgLE*qAN zvF=M6F6yZrs7PF;=Qh)`p#dLQ`%{>s4eWS7dwG;byhG<{v>ggLv|>l?8b@#5nh&Y} zGOdChoPn_Q4zRVW*Ypndf;@NWP5<7qJxA$hfp?lF3ikBw?%eC#bA;ackk)Nv!#i2m zQF>t~Z5X5VJ;(PPv!&$dBt6^wVAruiuWWBAsJj+rS4-wI!~Prs|gr&_u$NRwde&B-k3m7G?}NG{?`Qh z#d-I(TK{_jEsiA#MKr*KT2@1SLMw}sPbg;9RE^I7m1DbL6mJzZ35Dbra#;wUURHp+ zovetegkDyLXRsbX_3FD&)GkEXWx}g1^>{%qNC7nO5{j_h5Nm@W^uL){6V|C&HzI2` zf}mN5QY~h|6k^2`#vs)~30o-ySh-Nousm0fm+k5RTOM5^yzuLr0V6;`!9#_3Be)Qt zd4&R&k8fcB6vbx=`U&BCKqzDtRF1z_uv(hJ_DDi|FP&pTK5n1Di+BtRJF5jB6=U6! zu-e;%>tS?Pgp5oKcgod^&CD;jf%s0`2Rti*eG!Jqrd**6-zr!W=upQRgym>kLNP#l zRqb{qD-;^oW}pU|sHn9I)vQfupFyo0i+Ld7S(>42E=Z*aCc1}fpujLuzEGe(fi?Ec zO!!D$-ND2aiQQtVV2WS?x>!9K!{O;&_y3(11ReuEA!!I z2k7WwcCe#IrDYTlR)Q`e7Nbt4F4Uou1GtVJ2h?^UKoACB1NiL)je>$7qlSP5R+`#z z*^e;*-)f*l~3tsrzD=Y^ZMXXXN zgGBd%4(PH?=)eV)X*B?_32lOEpOC{o0b4-8d2kx4u|?hO06?}9c-bz1!1$)Jun6Op z0sKPhMHk>yo%-Nv?4iRD%`-Pb7*OR^6p~iL+9A(T5UvPJ2!MYf{FLE)0cfa7auIk{ zkMHQJK;>Q#_lv=W0-+Dj`tfAFkOv__j#8CKh+Pq6Bh138N_pv~3Sg(OoA5v(NE=iQ z2Y$NPMh335VeA4(PZe_t4iMUhPq4k5tOg`XI41wzazFV-nm?%%E17-V$yGb&e2SYd6%R7*B;kF?FO6fX`Ru7IN1piqCj_eyPz6CJFIY4RTB;nW1nr8@xDfR30&=i(?-M#`gM4DpV+2;JBlm*k zXjp|L9BAFo1h8MV4-k{{q>iGJY6TRf8=x&m^C&2CUTxh0A!rq1tP-I5@eO-LZmXsO z(g!siU{LlNz_Lw*s=~ly`woPw1`lJ$H&FL7FUAeCJ8VYRR)c+o>ORsM$ZtNx=p+Lx z3sufk0nBC$hPN73b6bs1RkcDeuRYjE-VKTb0OxX5jlzHrmH`Dw0dgT=gY4FVcB;KD zSM@gxGWyXWHgNQj32I*s7&j9%2MSb;kqcEy93^a~0vUk|G^YpBv;y?418C^HN9dU` zZQ0}joYk;=s(_b(g&tt#2VklSlmW;vt5?+@F2s+!L9)#t08aojAA+d~qhk-45(6`1 zxME@fw6jAzVz^oXbFLb|Tu{n~ma1=2mQgK~1^x<z;{Br?@&jo3{%mas82GCTgwgBu3w5kNc`S|qWNk3TbhZ*+6d<8H>Hjwt9 z_X22TA)au8kbXQJgi@>aKEUjP5BEYW4_9*WY!HOORlwrKbuZxZV0_gzss_;up((@_ zuo-vZsQ;^XFZvCk-*!Bs5-1xl9e6?J0>F*FRl1E{XT2U>*zTsC?rn_+%7+6FL=cSaDL zz|fDoc>vvwPcQoMVH5}W=RiLpw9TKPoD;1=5Eeg1cM92fUezWqo>6(EK8fSQF;*U6 zSFaa=x2jOv0naWJ13-6R6K)jGu)_h|J@~mt zT@4k5-D|@KxT0zU1QT5IkpdX3Vh|*+BAeJI=ukw$A{xjkM&WSk)ZnZ^xR1TIFr~Hl z$(zBV3IeN!m+G@&Ag+c|d4RV_Gzpv)Bfj#1cwVswfI`Oq0 z8Zb$$3XV#3U7Zl)6|5eiZWkzmCdKHY86j#VIsq7VFr!Rt065L814@%8Mq$RA07H~v ze-PX*t3jYsFk>1j)WCK*D1j_-2n5RpnuX9MyJ&?L)Ip9A)xdytAOz?FaDH(GVgPK{ z@ru>VD>eyb;!1=v!fF+EfB@a2orA*wRvt8Bp*%oSi+tq2#{hL$kZ0kA^#PDQ|H z1z4!Yw`DM{tDy~ku|YM~6|52)l5nM+LZT0YRzV`G;72Q9iKFm9ZGf>8rZW$4`o&_f zrxrAg&4iZ?h)SC9bWqGChiDM2pa^sU&o0LZ7S*$80e=+6t7=9W5l11ii^0#;L%vnD zh~a)d8mW^E_^-00>KVPNn9;X-2unL)DHKCsdp&-~09BYuK*T0BV$2rnz=mo7h&L1Z zKw>xUE>}t6QG*LWk4MU8hVY6#LY`QHEm94DvJ$F+xs6x_thxY1GgXLvtPVcTE5<-a zI7ovO2YRlAK-yu`ieZ<+Yz34YapDOAm5V`TAK+_-y9q(w95eh0 zs%(uxOT1z+z*!DU0rra(plB8Jw+*7k{2Sd^zYGWbn7Dx6Tv2;MJrWS`+|? zAcUw5U{`{;`LG=I%qK1f>&o#R(?c+OIY3lrUv;?lRnXo5KUL6YSl8q`^V6)K0xRYf5ecb$-;Vul$Oa7X1Uz=0i_%V$Q6;!z+nLXbYS zQNCCPKB<4vUIC)xahUbq#>VB~b4IP~!k*Z!n`?F&jz}LzL_lYtUm9T@;9wU|33t#U>c0Jh2YA77<7bE|iHq?0`BSDu<5>g8mhttp`%72C;2W`*N`jv{qFi1iwdDw>a~RYP8^k^+RtgS6#}9$_URC{#lu;GYjL@*xHxNI66Y zzrC;yDtdMxWdnNZrw^_C077;1g);;CAv`tE4VW@WZxmKI52%!36g!4@LMYV;P0bc@ z+=~IQ003(Tnk6u%Zjh&NhE#T@;JRwEB7%FtHur)G{QTE{0sBY)|G)mn<*oR>`>Vgd z^V`ES|A)W&^M5?Q{r_w5Utc2ce)XvOIrpnE2t)kWzyBUoefYnxp@`c5?BsvJqCWH0 z-K+oItq*ci4V=}0O#Q479h8k}WF>^v4TcABw@^)!{G;W3{)shqK;Q0$@bh8lJQ4PtnfO!V6DUA5g0{N*x%Y2AC%A`Z|Tg5_V z#Q=2x%K=8mU>nqwoE`G&LC~XmKMq03hUoa26K$f9Y6uSeiVnX`=*fq>exMkDWEVh4 z0uU`#*D)P|Kv*Els+g6-f(Ib^s++KjexTogC#)c&S1bf^Fhhl1D5NrwDvG(-DvAKc10^ko1m}U)ZRi-20|XPrAR7*`gq6lrS43h2>fQ-b z09~NjuJRT4RMoGCZh$|zXjrI*a~2TE1eGs>IY-0OWMUX2rAl_*4UfVno}y=(CV@ zz)h$TV-XmSc`v@<3NUj6Mnt!W2;fyK&{Z)42-UI{BM`2~fK>>2kvl<`QJ@uo@FOOI z_~n7?4g@6@JQEbbAGC5nT2xD{&Qklp<4!oXHsBw`jHpN~fJlY_jvGAj0Pxi?G&b-M zb2HWH0_+fVh#bEW7$cCYMEDwl45-dqrC}Agt0JJr!>ZxQ1*>o{DNI_^Oq{IF*=%5F z8PKw$*L)DJ5*Rh0RT;P*RueD>2(JS|2)wY3NRXf@%q(o98gpXKfaVPd1(!oG%V6^` ze}Fqtvky@aAP-^|fS{@_s1~t9EdW+0d|{9ZwhhQ2WrIGEn_~vJ2RBHjW(q7Irw31Z z@T5Ae3X+N<<~10%2wX3qN--DcL}3rG(s5FKeJW~psB0Z@gKE6yp<-%4L?Ik!jAr2= zwpp5a&Qh66>hHzsZ=B0x7M99p^_v{_KjK`fHhV<<2x9T$@Oow*8~NYwtN(U@KECze z%O6R8VaD$OwL(}7)rhMzN+(1LNe}#O6;x3P!ZQbHe^eD%-p)gO93^M&*})Lk^9hMX}2 z?{OI^BP1&scz*$hvqp^`K~);nve^K61tcdwM;<9cj9Y-LT%myY88Bd$O||$PL?RvT z6W4>dW|B@Xp6?r&K9ebC!6lXro#~FFA7}{dQmy0K|4&3FBubHG*i$hMp9R zZIS9L)$D2>=*IC>HfWZOr>xTQBnP>s1qa>=wn`=sCIPS(77)WDd7O|afB@4fMT00- zhkKY<;J1zDyk*D*L=L^%kd6Kwl2rrVNVOUyy`)1_vLYWNc>x`a05DQhYHCKrgT{)q zk(zaCb~^G+4e~zH)&d*I4XXy@T7d_w6d^k1DFJPejsrgmr90@?S^6Ul=0DOQD{MNj z_vG{nxjEj*%SCE}$c`T`a8gZGSQ^uKguK!}Xpl~mmTM4C<(%+WA>X2A&qKi5E3GJZ z1O8kfnhlDWfV7F+(!H%}jz>)f`e$S%1faZt0rNM=mK)a`prL#2T`F?f{ptc00u^9b zgnjkrJ;>&urJ64)m+nRo+eys^8@N#@UEf#?{3~!DZX7Lq7{v)`hrL5N((kJo@`f}$;lQHiw6U;+MC z$!Tx{dAoGhq-O3NLi`Mb4#u~o^J!%~T_}=P#P>%IlO|rMaY7u9$J^;Zd;(opXdJ-O zk@ySUjE2>j9x}<`98$SJ88g+=rFI>tu1+4u;a;R?G+2je`9|b9`c%kk`L-z=Bo5N} zbzBbTd?)^o@(YPn!0|J|)ABpPmLtc%<*yd%!M}X)5&jBqF6BxZNSjAGO>Y61?DeUU zzmKQU>cnphA@Io4l9ot^rXZTnF~?sM+^3iOJs@)#M@+4KmG#a>&a#^AjBHe zIDlUSH3?GH>DT;f$`hUvLSG5x_+tDe4HgVqeuhu4^xuE4;p>X}P0I>nb5=;rq*C1Jb`m-B;zC=#6!-OUr^JF3KbiXE_ye%0wF1q4LZhH5WE*HsC@Ly?M-^8XIL&OJrIfz3|TvrpHM=m542rj?Q4Q%)sZQ>Gi0gHba zK5`)fGh14fI0^!rl!OebT9mJA=m`I3IkC-9g6GP9R2MlJR^tH+v>^;FMGTO$og3vy z7ax}eMH!dfZV(As+9Dya{*O=pcDjhS%i~|8f55v^zo5q#l<`+m_!W(z8e|Dedu~i= z%7tp_C-FbwoG`5xLXel^5-g`XAdLA-Ciq97Y0G?9j@^K?FJj(e#i+5yFf6u8ls>P) zTCeho3DD0DNs^^X`j+DMzb8K-99;_3ikiK?m{iDU~VH{{)Mc5`QRu*3~fm4>~&*nQz%pbF{c6 z2%8>M)}`Qd5cq|fJ;Orb>A)ZU0`bVB=F%d5QYVB;@A4P5k&A{B=yk}}D93LkPDc6@ zEBQZZVcoQ-ci+n-dDq*k2V7VjQE z3I)69x&i60OjJkqj;|FAxAr3(GAI@ee4J@|i`4?h=%oCd?J#hb($YxA^nU)3R6MJ)+;ypZYpQ;k(M)N^8X-a! znWK7ok(_0mt>;pUoR^hi&LtF_H9l>8EHD?vmCYH(OoY{T5bOfqjWSa?JNX~E)dK6R z15n%akzC6Z&O_DmUvi;Ld7bllx<8Z&?wt1{8(g2nuiiNBx`LC&=IP_Df^BYl4yPYV zvZR&2KhK%*x}2>)thXA^lAX%*_oWon=~*PXB}LNe!7jk}sJ>kPU44U`F=rKJ%PF!& zu8`AFhS?y`G8U68IV4$5(Pv9f%2p|5?w?4P(I#v4Z2>*rxsz>_VO(l#CMQMpA4qe^ zBx|J<$s~PU%Jcm@lQLELxaZxf8sCqR zKCnDwAAHJHl3HNmfQ*9zXQg$-iJ0!e47n`){24 zXk5nxyK+aLa0`Y{xhs6b#?xTw_k0Pnr$}vhL^Qo?5%{eJ=-XY_2qp1f>wu5zh+x=r zg>xMpas?BE1{-1jlxwOVM%8G)AIoZg=qU0ZP=ltv-#=?gUIa`XOF{&SOHEmhU-U%?s0p^4bXy^#Xf z6eUH%V3t-Iq!Ia=z$LHCL}UD@Y*6Q@MLDbacna^)Ajp9|EBzwkboG;!n~Y%kBPRJX z_*Vn;V|CnnVIrk0;2jgj(^!jI^! zB{0(t3Mem|`L9wUAMk&-fZ9H_2)9;=8F0WaKfqxPL#0jpDKq~}PFzCdSFD_p`AS`+ z1`IgQajM-?J)h9UZLWiSr2@~EO<|=Z6>dbMyeISb^odT6lQB(#?$!V|=nPn5A-8f~ z3s&@V(Y)Xa^y33-q>0yL@SO%eq43U($Tr@jk9;0K%zvR53Y8Une4CJ4+L!n+!TCW2 zzOGHjml?QXLY$I^JNt0b*Y*^Cp7Zh)SV{h{8Iy#dkf(f>%5TaDO*RX`^?i_s7YgQv0si?^bnpu< zR~uZl1~ogAi<;vI2#+Q9f*M_BLjinIKslSrUog^jzQN27=v;oPcWsZ1<@`g1>iLP3h@TG`asOPZ zA&5TnTb$D$@c{@hpKId}q$BPPDDS024)8yxy9De}(D3U9?$rr(%3B#XKI93cLvrlA znsY(Ve`DacY_3zh&dgnzk(=@5h^}-wy&eOMjYiNwg*7c5f?~D`y7j#;v?kJs)_X|S zTai>UWRP-Pu9+?1%mmuh4;Sn62$o5dGnd?|zg=vX$+A|~+fcs1_#OE{BbS?uI7mXD zR)+lj2Em8fU5WxZJEZUlOQeAR$}rvI>gA7Q@G{Nx8K}V$8~Btj)Rw*%k0ws>&-6UY z#+hZhXVWBKYva{v5VmYB?6%2v8D%+2FY{~Mb??UBgurz?zJ0u!_ZoOV=Nzn0OL!29 zoUhnSY`~80%I7+8gb>7B*4g3p4p-Dn;e|=l1yWeA>`ylsAW$VO@A1vJI6MAD*b{VwNE z0XLKMkKUPglZ<*DJ)A|dg`8487?6TkW;SZ*r=g^u5mll1AGE5(XDbE=|A}>4Ga%rlC+Vx+KH{d9?#8KB#-fV@u`PX0I^{M>4me*_f z7cxI9^D^U&uJK|_XqvU$l7Tp?46Z1A1rnypZ_)w7#T0(T8gI8m zb$oRS|KV)GeJfe;?KvuVPoIf*CO(XBhD<-}h+FuWme;26n>zl6SqR*^!fhtLFP(y} zpYzXb@vcZ8Kd%D;?rHg{jK~GSdb)~#%faub@eOJ`5B(q0aj%P?L%h#@GS4;934Y$j z;T`{RHVj;`U|+ADzQB_e*l2BzH4&K3b|HbU$PWHnEaED)nfzV~-;jn&n`K1F=Mp`1 z6M{39VHvkfcP6^{KpMK@PBmDCcsMYFaB`dKd^HBjy)`WON*j5x0*m7ztum;GNzY5; z2j%Jg(;+m8rhr5Jy2L@3m&=aCFfWti_qjDYVoH2MXJN5kbnsq1$N7m)<(xv!#7Um& zj2QS2oHsbXX5*j8s7n)qZ z;iX#34YOc6U5ZIuJe}&_{Z;%4E~W5v&OgoIzr(a>{b4JI_0kC3_D4Pc18Z$ZzQs76;K9sDU%U^7Kp{9z+4Z-4ZFc+<9K@}`l6A`m{E~y;)biaH{*l9y zYlvrazs4HI{M3f1@-x?b93K=~zn}luWxygELV-?IXEtZu2u_=E{2bT7V5cJ{<^Pn; z-%sW1+=+pwKja20gzI=#{5Ha21yR{~*YA0eh7akuZ#FMV;pG-wIP5SW@y)%;c!o>k z*n_0JQl4^Sxz4W-a+gk*i+hm=b@>2={JMO7fYVunNAKf7<h1nR??6loy8a zR0{W`@TiT z?>xZ&)6I9K2=-Eq>kvO<)H(;!tJl; z2;Lkg0)P4}vYW55yRMHHBA-#HG~32M7+2_H-uM9TG4gAA*TwOQ>Dvg~xS+Elq(k00 z&o;&}!M-ohci#AJOm9$z4bQCRUufdrjDH6wERjzqWEA2!7QqmI(MTsdtbBNKs;M2`7JDP-J}ISB56&B*IbjL1 zj{_uTnlP@uk{|8UgV@<%TkC+S5=Gm{$(E~Ku8Q7SH5@^}R zQ<9GI=FT=!*2CFKBI(N@#62$qGyx^Do;OuvgYp~R*>@(rOX5N!UUf9r} zGJ%K;1UK?n7H?3-xAEIBN;3bc9>IVimmf$$@by=2{x6yvCwbIvdFUai{*CuB=lNL2 z3lKIbM<3vKQ{eNqIG+A%=&g>Ar6A`13?A=682n%BrC&?%(f|g_JDK`E*(yIpvyjPn1VZDKGoN}(Fotx=Fu?&r zu_)@sTYPe-ShyTr_DaC9bNROnAYf%G|4|Bbho3V>D%G!Tse<43MJ6xGLsWvmsH29hxw;Eo@?R7GC%KD z!?Igm4Abq>+}O;!WL_oH2;Yl?_jsvk-l}0UU9j6GmC&OSIzdVWRm+tsT~Y+6 zL7Bf{%u*UPau7)#z22FGbLt+WuTvjsjK_=`WOzvbsHB6aD@2=C>JJ+?nq{+9AD3)+ z#^D0s)*>~eV|yCbv^LD*W>rj z{`cFLt4*6sW}f47yg%>H`_Z}NMDiK1o}-&pLVk9W#R!vJq{X(Wb9Mm+OOhQt7St6c?G_@6k95a1zUoZ<&|;bVW3s` z$J0JRGu?DWUAn}0t%5e_>AUHo2wknw`6V>PO~(kD=BC#C`OxWajV&HpR!7$+X=a3W z$EiLvHs3g=)R+`Oys<|!jC%4VX&q7RIC536x>%)~K6BF&jh{pJKS(I>4Qdler0B6~VEuX0v+d)^` z>HO%}EtyHEIw``ALda-eZay70UR$K{feGgJ{UJT~Xagv?UrG8qV&~l>N?PkP08ZJ`V`W@BR(?KLW zmDG-UcXf%OUOxocP&G3&iEFh8oeUV+DE?o8HRApHS=Gx$V+rF!LzxS*C#&b`3E;k? zA7Zmkb;VT8MS2~N%NyhC8s~EletSOO%oTuulW{)W9&F*5YVvX3lngj;b4-3aZ)+kY zfr)r0HoZOtE2S3p+C3c5*LnxA!~OWJBhspmssR`o&3lLg`hdZJV5!=`byOcz50H-# zENMh`sCKgmmuQgfuAr>PmwGp;6)xVeoFQn7hiIlfvz|`yQox0CqkA2+BSuRnA+|VQ zp~Eg3Euk(!*E_9m=~+9yE9ia?tuiuC&~ZL`+D>;H#w`kAjIWGQ+Liu^wv{2Cy-1;H zKKfo{CT1TbWIrC-=Oc$7MxnY63*&sd{D=INd_=Y(XKDD5;mkS|`lBooj09lJCUZqS z17jpk z8P3zjJ0C8?y*{NPgmm&6aaTS4*9(Mgedd|mqU_1^qCKsr-oZ(8Uvpj`T4 zI9`)a#df5KD}|%+)N-uOVtPZT+q~rRXigOJ=rmoOt~SANr_}Rdr8eN6i6tsP{D##yD~$_vJ$wk~A>d{axg_^1Eel%z zrkkU%qI1d+Mz@&MrO?49IyOmvgj+gTJx++^t0LSLcDY?nnKyZvOtQcAYOd+rg^C#+ zU1fFBF+LRP=|>~8osYm+REe~G?0O_^57U=1WcKA^f5?EbPc$M49J0|%M&|diG18*= zOGgQCcVM|c2lJUAG)Z)YBuLrwlF`$mc z3@m7Nil~m5UD;}7UwUFxv43_?;yj8U>s+lpEia5T#rDi%}u8Sb78)MD1u=s)-Z-`Vo#~j zqSF;Nnj5gLriL0Sa2qew(~5FTQ=5)i8IMx9I5kS!>~w|O%A~&-dyt$lI#OzVVx3D7 z(^|_lE5q+MZyZxBE1j}-*8Go6gWMa;;{5S8&jh{qyL-IP|4%n|hrYN7K}<)#HM46b zLM@i+ns4<(dCwlvl=%bgJnn&_ApYStCuS#6hO;*X)j-+inQP5~ zs46cFL)Eo!K7>eBP3xaK(64Hq-qifgeoJlk%)wvgTD;w3&F!0u3)!4d*6Zk#ZO&O% zPv?Morq+d*s?FKAcz(wcUNs#T@90nEn9sel=2{DSyXL6)-9Z0>j=rAW zj=9|D=}FCnJ|XULL271yY9_a7sezgO>U)|sXTf}Rxf8mn9hSPrxn#lIt`1&>+wJJ= z>XmI;*Zi4X^3?p_7g}-@YL7j0)J{+DK!1nTW48L|E=b`AtG?Aax370*SA3>(Myfym zL1jT|fj*RfV`u*WKgKhE!4k+D;s!dbIrE{fIoUOv8y=kR0|8w877B$usfDslvU-w9 zXHVbanf-~`&i;0c7LQKt=lGQsuwZMCAJW{_}=^yCiC%DS^WDMa9D>aYX zc(uAn!&&nE387##lfsGTTWraXI3YziyH7sD2?fi!U9!i6H_h$uIcZEwmQ&Cmzt| znh%xD(p;l=S)oouJ)cT-pD@Q$8A{fJTrfaU!J+P4Li87QC zuW{*vNvV4v^-_M<^rt%bu@IU}gWBor!{E(VpVv}7bNb>AryshT zQDsJ7|Jts+LTXoE>SYa^Yepi5-O@jILHvRIoTqxQYw+*+bJeLzmo;Cl@^nJ@v#&qp z#=y6&2f?>gBDu}<7$D=0S!{XRBVZFNGBx5J80#zM!?#4{c?M}AbpM|(F<)1YR$ z6uS>^nUxyesNs%gsjH>-RA#<JqGI2SCzewF8GGg9+=w%#mtSo(cR zYHruM^OTMS?L+^}@4EJ0P3oJWU*w$M(K9P0-{+az*Mlqby&6P5d(=nsU(=aNU5J5C zB^OFo2fve7<-fBx5s*4lyIY+288g1u*$rW2YqUneUP(_*Y|*gN7R1ME)?8~Y1Yq$l zYo_bHI#`yxA%i4y??4Zzuz%jFd*8mk`2SM^dHb27srhA)Kc!2t7%wQ4WSqcUR19EW zQSllQ(N0+|vf0&OxrS4i;mpY41bvj(xbRz1TUabXX zmn9zylH(_s7&HQm(=P*xVaL>rlQdnu!jFpmU3to{&3#4eJe7nEJPZ7xD(D4qiinx`9s(3*4AL zqB9+5(zaD)lxvk*hK4ukxuHKIfCyN+m*e zNd8*aKd?x!$h&kD=@WVY3(9S!N=wHBTT9j@3hQwO`FE1NSREfO8}E;@WI-bJSA@*3 z>!EVbc)X6`O%3Ubs@!2yEki{Dui_r=z%3{0Yn}2$Ce%jfct1-f0z=*#BIos*YMoT( zk+%l`=%;P<=ItTWpe2x?M zSWs90w9b>un7{EPSAH)I-^161HE?l~ydbf+ObZpe!-L!SxhxTX4RkZ7>q`lH-pf?; z2Gx_lZ#jqi9{JW>;W`cmsmRuty@M|;#}0&vDM(1(+6RlAumX+lkyzO9L~5`Ms?#qe zJ{mmW!LASJ)vD1OVIpU9nphGn;2$|TzcUmyb0;#v%t9xA6bg8EMVU%T(YjuiimY_q z=%wj{3KmKxa=3uc&D@P=*O|F3vsjAg4a=CmIMa9AE_I7M!1M;ID79UEg}=s^sFxt= ziE(qRZulR==S!jD>^b;gpfKU%M@c%1uLWPPkuQ?mW-zIwZsZGGZLBzb1v9KWYrn^# zbh&jNkLB0&!tZZVd2U~Bb$*<2es+o2qJT>Qwz%xzeID$aWUy$Lo9WpVo6qI%v~{cU zLZ;xb76{Iq!jKNG;{QzqQ*)$3sjatwr*IBeB`Y-_V_NQomP)1+mDn?HG7s%h_)_GH zD?)F{W+;6Zt7|$M#@+ml&b9Gx2Df>z1M2D|9?2V3L-7Za zu_HEBu=wyNumoRcRZALr(HiZV=y9uY!{g^?D%A<;>Lp0xWhHa9QUgGI{MR>eH;ZN- z;RBgp6UVmR!dp{!(SH!^4s6PA&CKf57knctPhYtIBft`i?R=?e_EM&Qn9GM)S^PgN z;fh!>)@aR=+)DNUzc%wIpJ~owI=_S2LFB`A{~IoZe+pY_8Fyk07dpYYa}OrD7`Yfb zP`qrDl6>q{zBt&YJld42#MJJ5kWJ*jh(?t+51xUXdNDjkg8Zt22j)qB>0k$}%?i<52fAr_C90nNXM6&qzXR#^X+BUiy3 zcX?CSuozO*s4bV1gKQFAg9L;ZRL_$KE7K{nI{$OEH^@Vt5Vj8XSM30Umk6mICYfJJ zA#-qh%K=>&nxZuO)hVO%krx-)tV>xj3>Wh@GE1#TF+t&*YENNGNvN1#s6QwtFftb? zh!c25=H@jl95&+JYTWWDgzg(5m69$fam% zK&$EMhamuY&u7lcA0=m`&(21;wO5Wn0WFDr?MxI} zhx{;SMQ~=Q@b3MP4%$bq(Z6IxSx|vx5x*$HbGoAV_23b^H5zr1H|~Vb0G;S_+u&Tq z9uA8y?D42#cZbto7#%AA5_s~ls@Vf?0rP5hqG;@Q3?8IH2jjsr^9{G?@N`EImoc`X54WG}Vbf=yymdEFQ z&P)P(&|=ZUm*K+Z91Ozo5~7VKFdTzl@-@RRZ+(ovfI#E$TxsuIV3w+LWCTyl95ljX>8H5Yj!>*ddVyr+`)Urd`&5|O_l#D zS~ayBzTc{!uw$P!*J=}bIp7dYx!CQ7L{Kk?$FI0rpNfFy=x!1 z!CBU7+(Scy-WiPTck)U6xpwqDX-774Q=TPF(ZyCxKT7fhM1_NShll^?#Y-~Zii_;& zCRPv#@o=t<4iKH93cmmXo4KOlb7Yb%lsZ>P5tkt%rYk1GxqG zv?04Cxrj=X_&p+_NO30ngOAvBjg?SVLrD&PI#fFHl!ih=VfSjUR8l_XV9n`aMElk2 zZ2+u3>aCLhw^^M?7L4XJD3b*~9vzg$DS|bRox?z8!6Q!OJyK27`ic4IN)ZA4jiUzS z6R1?|2TjXq3%LzXe8SMp=ABZpN`DjbH142_1=h^adfsK;m?;G5DoSoTPqi+P;JRAD zh$*NJWYmz=g{X?gxdE;&K^UMebRwh;)QE?4dG`Mn*nT*qYSqQ8rdJEoFBvPns=qs1 z(EC>UYxU3>MHPc;uMeSCVS~em70HoAj@gs!rX0bq*+cxCkTnFlzGm!wbdR3RYI*!{(52grdKD0(|&* zRy+!7l{byj5;D1BMQpaUPh{r8+yWevgW7eGl01h#({h!TicxUKFO6R!xz)|LJ45gu zzO7rekb9c4>r{Zdb}x%I`MHamCy7Bd(?c%_xsrJk|Bdj(vBoo+F-6e|CGR-%JL`z6 zRX;ZOj$AKU!u&>F%p#MqWO%9gO=D%zB0nut@O%PTX@N(skonj-VuqUzDMN4JT^;mS zpIE0;$d9B4CGBnC75+?R6@L!#me*uz-~M9t2bF)G^+W_JmcY|ykjagk$9YFqMDw; zO2i$u;9mqE6%PsH&o;45kv)TVX7)tf^u8i#t;XXv`D}GsZVM8>$mnINkKe&JwhTt<>mqw2tV;W%Avr|bgj6ujeERU#XusbZmI4vlrSY@9?#xB{4}*>90zjDhj2Sa$ zr|ua3Kd}!*SKDy!et+DKp(RbD9!-gPgD$rcRt@@>#u6w$_wdQV4{TDg+xQd8k})w& zp*Iy)M@}D#sYNIL5$&(#18+T)0jXp(^V8t}cN0MP3#aofDvWhJpW~EZQ%6TC2DyD3QIg`cH z_p5Fkms5tMN(W=oHO^V)kMV-QYA=s3gsnrcUxKF;fAL80aj!^qb-_c}i1Fg+8xdZ< zwz+o*f&YntG#jfzh{z6;?nE?4M@L+o-Zl7eZl02;x1zs!Tu+L1!J)0x8|35ZG(zAw zUL!|9-in`|jnLQL_HVqwoL^ok-``!vP#`|NRE{Ze=mk9(3UF68J);3I_yH`_3FKbea|cYChH6B9(%Xe@ld7u&x0vYd zGd@rQe)DaqxS0D69B+M|4=w3)x3Ms&mW-|jKrqc{@N!%1UOjUz!c;1C=k11?*=QX= z)pLWNyXC7o_xr`~#3N1n^7+I=;t5;Ri-mc-L_z%t#oLB|qyDVFF1OJd(!u1AkD^y? z)ejMzH2x4ZFJ{$kv#=s)k%D5vTHQQ}!d`O%lWLbqsGiTuLmKU3rNMmJ%-~B>S$n1g zv4CaL2SL0ryI~p|HicX#=+{(tfSU)RjZl^R${Ut1l+S>FOvlV)t@$t~-JF>XbVf{^ zQo3Y7<=H>RmN0`}aiD^B*OZ%2C2q2&j-*lg4JyTIvvqp(BfAFZ#7GV6E{amyD0(!m#OzAj__cuAD0(?q z4DlB<1qjpkH*pb0VBjxw%CUGMD;9x>tu^*l7IIFDV-7f!#-Fi||wZU7mKLpS4jO~Ss zJK2YK)1YURSmDrJVtc9DpoSD9s?!12+RKK_>xPvuO zu?fnAc&>Dyzq*bdO}!<>%W|AP zR3r0IdnvbDsT%-*wHHd*00{A;FT2b`w9*#F?*g&HaY6Bohjq}&CG@-BRL#k1da$bH z&!99|(}U;5v1I68z3p|`x-xpEP%wJ(4utiWDOk)1PMmxM96qUC7k`lIb{*8BfGgy4 z&G~$?)b6iEtiX*k?2;O%I&kqB)r2wU-<8s1F1^I6%bdu{dXuJuriP7{X!b2x7*7dY zd4_(7d9&}D0eSuqM=ytJJg>xmqJv%@ViokED^m$Vlw_)WMtU}OpuQ~IpDWlofRR$o zbeZ)@ZIF$e2mgX1a+}uwMj_{idxKNml2uUqqfO;w|I+*c(26JL+r622hP5*OYxe5{ zkBhg3wbGoX-vo$`jPGr9s$aZgV}kDSGOfKD#eU5gh_#o%ppLycaukbWBPRJ4y2Ak! zuQNZ#e<2_(#iChHUY>{f==_jg6?3`G+w*3iH2P6YJyp>F$XoI%>I%b_)kT+Uh^Ecw zEiW#&fh8LPNRwPI5h}+IgVE%gGV<5Bi@8-T8{-l6#l&*U;%IzN_A@hkSE?boGCx5_ zqN2l=YeLYXo-%R{OQ|D3ilXv91p%FUP>Gk#$a&#?Q=2lM@$>2Xa>;E`pDEBD@VUuM z<8C8yAhnw(n3s-AA|4UP_^j#3siOS$>{h8}iuzYxGkQ7QQ?@fQ@-bS$MAt)7VGu;0 z+HkfZzIQMYm|z}b{#|bpi*2d1#7>=00l99xirl+B&D)+Rf+;bM*I*M3UQ&Ot%&i^_ zQafnO>RY!mG3LnKgvp9~n9=qID2NCuOZYQR(5ETq-5u{AxfX2QD%xklB}e5T(2kT5s;>AoZk?R2%3Mi(UcQ+%ifMLnt13hlX;tYD z(j(PR+4v*0G@$xuZbikjD!DXza~yiZe)0kzt0tj>f5lwW5e*-&pc*G%z;OV&mmj5u z#Is)DO-Ex1mK*Ov?`r4M_4mV9E-;t`Xy=?7W0fI0a?X*Ti8)zf&mx_RW8>mPM_bql zd{Eabb#5IJrs1f7|ncMa0hobVtxU8W>D90PGUON&-pK zT-AJ99{-kILUq$)hM8_VP6c1A+5D<{br=-qxA3M`qtX+P?}^rGv)F={^SI;n}=i9CqV6k^%8HMLo5rB8K5@;Y{% zgFjF4qSdjzq_)%*%3Bv|OVyElu()w1K>``@OB_ zB8a}lHHf4_tI3Q8Lm@t${-GwOBATj%YqNng#&M1{?m;p%PNdstt0DGJ;FXqPT&B|g zgl?zVaWUOt+$h95N{e2o^4LKK=lN7{UxWE{yM&G|{wq%oKEaa>^~Gzm+!U^g%m=KX z?f*Q9J-vq+ca^}VQLuulo#ZY%a!LF{EC;{noj{XS(Pt*oP+)nEf1LhPu9E3%iSMKv zaXcl;h5~7&ThsJp!QSiATa3^2=+8m4v&O~j(BV+xgTsgDCndVQmR~}9G&+&6aXWwh z4%z{|=I!RkqYu3MR6|n%Gt)Vy1v8CeiF){2C-!z{-QmT#XKAcTN?PJaA@|db4)1m1 zGsnPLv`yhSD_yPS0EQ9#9SRSeX514nCV(VK70nuA621CEclu8mkF_{{dGHt~iw$4G zT(X-sSBqa9*1y1>f+7_M3Wz95{8wOBKk<8kqdeL|GmNpVtnJ7gd70&41;M3;sP?na zNGSGuJ&%k36V?`anSq*uL%ic0eoj(nQL82|=Jj+*Dg2%BoerR}QLe>O3QXE-r|T$q zw1;=1o3A)M#A*hwMzgPTnrhUviY2AI6v^GGjt0gNesA*LAL09b^s8WPonD{m#xbe1 zyjFe<2^nA}tFhbV)4LTQ8S&QkJ%yRN^cA@q=|4WX8*v6Jif^EMmCoCJ8$PFNYx$w{ z7rf2#?;6Y`Ig%z;WZFE_wnpB$44EIL=vzlc;brf#5N;$bwAQ_v98 zT@v(SUYF+~uD{qG1sZaPP26Hb^~5UO{Ib|?6R3~>%bvP`S92g;>O?ASqOa{RFJCA_ zmjIx+Lu#}eRRS?0J?3582Xjv+dx$E<#W6F(LbTVbSn+o8eJsyKKoPPa)&mSn)vF{C zB3Y%&jnUtjVl=^Nj;9YB#O?WjTCY4ALC^4_q}ku>}1ofh*6JfJ*)#0%l1(QKDb9{e*+ z(vF@4O-=@EP6w$T~TEn&OF2X^n5jA*1h@4lZ>fUM4iIL@VU9+h8y_W z%f)7JbkE#eVnOsmzQc6}6}!+?BIMocIyoOn2#3eI1_p$qsiX!fP-;KC#ZwK)VtZ1b zVFiKW0h}li*rN0FdoriALTwWR3$e&X=86>0Z|(DJx!)q-^CRf0&<B2uRMz*rC3Xc_fR=YOSV9f1?fqr1M1z_9?A(!-jD zM51=4NcFE}x#4mP zwl#CK5)WW%16xmE@jP2$_$*dNk4!Z+0U~OgI|gmQcAl=1q#(ajObMiarvu}Z%F_7e zs<8d@ND1$ArvQ^FSZXl@;P2sMtjac~=wpyxEK6w?n`nnRSJxcFs@!QdU%A(mHtW*3T z1x!=h{l=Lsu|}WbwngSF@U69$1O~&u5aYix4#A^C7nj>~6r$xgFIU3h(#+{ht34Dl zuTHB>+W7+Q^QR_x8+n92sn&aWAay@e%p&;*^A2!ci$ioFDivyah5AI^TKG%6(^Q^* zK4X}ht>~Om#>2=yqu=TgZk?`w!%HH;;EEZ*M;4PN(tAPMc_?+GelE#2^L6^j6F<+K z&I0tzB;##|xxsqE=p|4}ev1HkY42Jt?-$ScvOm!C0o38Q1@3YIs`tTDhLrNtl-xeBMgu_;x=c*{{?XJyA9G3ksm6a;+4o zu|@&-ooeSvW3WRN#-O5Lo{eHZ8b8)Z@$onP&WbYV96mgQ_8Yu>Y&xG!zm(T*;qs+` z&Q?3SKh;=~F|i_dlCiWR(vm)eEyc>jgkWqIV#ItP@j@i^9Q_H+ofQom7)>nCz4S>H z-xgV(Stm~&TMvi3rY#Uj-sNp>Kb!HGd7ou~T9j-kPN+OtLX#9@H+szJ-8i3Y^`ICT zKa48noWVjK%pOt#ESdEHFg?WyCvp-C#M0jUS8kh0W69d@8Gl1T(j#6dHCD|O-8vG+ z3}uGJLa%jk8qyu@up#DI$${7s6=m@np6dG4G6eQ&HT?$C6@Z#ucG2OY*LAfEBB$^Mm)iY% z0qP0MXsR#!HeKdxpU2eG2Chg>Mw$m+#g6j8@xtvAr>N?#w(Zq2SEs-p-!Ztgb^sq! z??xQ-Urmm8Us`1C7rPRvRp!tAvuwQA_{pc2wcX6J#Ak>Fc0NNw^6`o{!gv10*U&fz zW5{G9QS_y(>6UxsDqh*rolkY?d`&(2mjm zqw_gX+WJ~p36u$oY;hk_{&w-#$tjV)g(AOP$$Q&|oaz1MajZEz03}JIzm{63WZJWR zEt9#tH#Z%G7cN#!rti?t0nMg9VcF%|Fs@^zaLzyZas{+QZ*!J_t|JX^qe8!Rf_}8R zP%)a@U1zmSb(y}r{!4S_BBO@%^&`hg;c3CY*)}MdN0=&(u_Rx$AW)6$npOiKmNK8x zJwExae2?w~8!Zz0pVM2o$xoDg-O+<4zsPt|g{}pdF@|^^Z_cg|i|l%uPa8Qxm#gAq zAALmFn*?pyY2qYX+XZ>^eM#mxRukM!z;Z`6q7FKGG!L7lBTw)vgP+-r8Fn;BDB@r0 zo;`5msf1N+9;p4i2)?m2w-k1yE5R28P86rwf%eQso7lR+)2Pihr!7unWm4GUZw4zA z-k6U7*6Np|6a_nO0~rzHx-am!UQnp!wQ`MaD7*{&N=$=;p0!-(cQO zNU3blw;s!Q%MGp8&GDsM_szSNS&8bgKfu%H%Z6t$hj_OJ;~)H}RAO!E`C}{74@6%! z`D4is)F1c?G;I%-v-VzY)(HuWC|YF)Vc$(131s(Y3pp5^s#@ZmG6)-7m53Iy35Yz1RqIAEN1*Y#d9EP za++j=g|2Kt@Qy_74+#JAOF@T|P=gE^U)ovO$VZ~VN4MF`{b-CI3}>dBMrM;J)MYZu zWVnI!G^^BD?&eK&hOaA0WjJ^t^EW)htu-uQoEXWsPt1-}m6rwL=WszU1GCFruz zpf3D2@-%ZjILXTs@*;gQzlhENfGaL8u!mrH)hV5U>g;WFblW|-qwVFHA{f*CXa0I&e2m-{| z-9q%lNy-?M|aRz{c@wt#w8`BHv{+y7?fGM)99Od^Nq^ zZl>d>=5CRuL{px<9dxb7S%nZ`TL@OD6>7 zGx40sxH^Rn^r!Do>-b*d>2}j_wrf*n$LN%K>1x{2qm<2ysWR~Pg$Q()W*`#|6$5h03P_poeMef`f9k83L4WAS7biQ|*8^+b% z!6Qmpp)7C6*9c!Qk4Yb*vj#GsWu|N3>iX%CARCuyF}iI-hY(RN3n(S>+XpIz(KVc?Re4^$stj)kn2QMEO8WlKNk-Y!!v4ZahB&4vuyi*}mh zfq#a&OjpOqhuIu|LHs3>W<;W?6`rLu27!U?O6UX|z#T%Vize zzD`}vmaEv+6_kPa8otE^ z7--}e&|<9fGT%s*s<)XHahJ6n>5JHIFo!Fi`hgrKiyF_g%PW9PrG^Se&{jY829u(5 zY~Da-hxj2V*J0bCeXTy<@pVd=pJQA#1+dle2}$yb-zVrPW{H;i%&Ynxbc{22kqz2* zko#+R%qAZ%?(7_HPG3J<1$%W$85k<9&=-Mpvbc9X)#*}H&)g;;-FQZb$3b|}na`Wo zF?%8)FE>Yr>JsaKF@}J*72B~zx-J~MIQuCSF~oO@xY(7Csgdv(0&-Ee^S7}`g0C2f z8LEda0`Mm?x)?yo0?h9a0GKj5`?KR2lQ;5N!MXnUd}Dbv zWCyM@-WK#Ygp{dl0Sl%UnSW0{omv9k@Zs+yql{*j0SU>J9F}q)S(6V>Pv@m^+xf$M zQ0>cJO0OI0J^b4EGVT+7zC0ICOs%5~U^X5e>!C({?_XF5SX)`}2_zWlhv|E#`L~K? zXid&+jk-c~ZcEal1C8{7>NNaXMRK&AyW;;xdmJTWe?>)Ggr{#zy=rlz*&DcU!#*~i4yoQCom|Bm(Vy6Gkyqs+ z;*(2|g3*%c`IcVSDRis{muonIt*r)xyA}(Azm;Aua|`s%&DSy`eF7rbSk4EcZW-S; z6sJ9%JeOkWNbW&;E$;;HN8X`N5*r-gWVCo$om?(FFz#N4#i8pTApXAbn61< zNQGcasi~abjPId~SBM1((L!nyV&CxU45WM))x981P)R?_MEKt*blUKDoR)*O1T(gYo9r?*? z`H~%egoXF2;1gtJRC4+C>%K|v<t(Y=eY40;k;-E9xFhbsb|}?(PqygrhemBQ(`ek%rt=nPw;uG!%@~7~ zusdHVOXeX7zP}Q*oTe(3UiFE_f&LY?-U~#lt>sb`iU!S1NI*7bZ&m%HKgrj~0lK$G zDz@lm9|dgu-!eBA2h#6|dC=O)trGWDWd38m4zvbr{Ns69ZaeMM=pPYdhc>t$`Om@% zOf>C@Dq6IHY)B-uy{VlS(d!Y8kW=*8(aUR075ayCnO(F6(E`KMkQtyx7d={)eis>I z+A6h*$X*+nX0_58J@h^nt6dF?nBOXw=NU)J(K1>ud_wMP`^j=$W;{P`Xa$cqUCDBn z$Y*8Nr$3bjT4cwf3j-bAgj7H2r`DbCa6E63)fef$Uzv6oET>4z=y7uMyUETH2d z9>4!tdL`a4&Stpne0%B(Xxa3BidDIBQt*M!!JlA?AB!K^M}?~SIkZ7GxI79naJgGA z)7Ps^EPL+O}D4!mEaRF_Gx@VH_9^20^qXnw< z11mL;%GWVPN)>CBe95V*GY7Rod2;A8nFR5IxP z(%|3ih}fDPm|8Q$%1=~14dnJX$LO_N_iEaZq=ST@#c;&o#F;7}#{ z(0@-dk=sfYtMC_QCL!$% ze%u=Un`hTE`U0|bnnfeyNuah3vxZnH?NM5}| z_Je?*SW=G^e9GYPlTF)-_%(Z95A^b5>HeTRo^K4k)DV9&`jTVoyS+n*fuGEodULHQ z^ANTeYAT6BIz4V|Yll~VuY+a;>F){iwe+6gtBdJP5pkMY{CaYFXuCIa#5l2p9)}Vh z-HejYPJi(A#ld&Vd0d}QhunN6{cAFx3$24`E_huJB(Bg;MeRoJ2dS>mO7Sfa#!ko` zoA&{*9d0{3U7f=m#+yFT?SsUW*bgD%#X zu65l(*SIK<4qhG)CLG|ZTxi$t7uUGNMkThkEM3hS57z?*=O+ovMgIt!UTZ2k6a4fc z@u%Zw88@otm%|FAGHy~?JuNJw|9HjaNywLt8G|b5X+y32|5O3Zu|(D29jPGZybSnm z{5|8R@tfzFpVCW5qar+h5k(*yr5c8-Nw=Bn#Ir`;=Z>>mujU-qY&1`-LL?;77C{$y zSi4axc$%(rZGME_L@Xh>Q}k0Sr2F`%az4$ULD438Xt*jlyX_Khwr=>EiraN0wLw(* z$C`P`lDW)f{O*-hE4zqpS39$^w~dwQ<&iS$0Tk^=Hb)j&Bl44A*@Sm5j~#D^ie5oHXFwLR~vm=9sjYnXt0n4%oia1w%Vbf8G`=k5MNEFLzAp&az${u zhYTBqw1z{51RC2+NH`0(gSPwgthQi#bMX0-< z0K=?G^MzCueGTSkU0rumU4hQ&1s#%G;x2XUv?ceY8WZQ!>s6Va+D48)J$*9WR@LyF z7sQwgcpx(X6_Q(M_!L%S^f)v$fLh6!Ftk2?MrOz0o8l}x(~UVLbe1Mi;r|RP?%x$- zcZiB#Xm(L2$cM7)?#@k$-xiwf?Nl*IuF6K*IkjTjdvZe!Z zHS4wt#SLqr@!m8Z6MZW3kH-QWXma-M&2Q)qnA;giK()7x3!c4HztY+uCz-$DMks4> zv`NuXZjPh}MXe6dXsu0RR=Kgm5GgxdKAC%|7U!bGeIn+isPg@#xks?f=$9H-hL(ou zu*I~7fdX?}I(Fb?x-nlde8dANDpEcAigAlqpNs&`EmX=k8~-2hcYLTeBoVE5JXCU<^=pZmZ0=jq{f<6ijtv zZW}z?aeyDe-Lss}%oKSWEPS9_~-QJ8%2-cV*s%$S;~1 z#6R`);|LobkML`$S~r{NGADDG&!JgnchZYSSfs*!Iz|x>xN2t>Fq?5pWolbf!l9uj zc@qD0#l8PFcg1glX6q(AOyeZPP9@?RKq&o`wwK%&29w#VxLyst)up(r)gQz zc)>xerKuALDZQms94%U6%&bt4%lEtZrb3sRH$y+n#FSrVLp<2I(T>n?rX#LE_RCPYmoZ!I4L-(AkuGAF@ZuUUUROv}#6`w>$HG!cn^rkU9TAUM*IFY=@qeaa)g< z!J!46Hn+r>yj&MxnycVyuS}p{&wkh@lLhBui0`~?cJ`%sPj>o-rs;N7;4Hco4p#^lL6{m~!%-oARX8=- z#~`14)|?i2NAaHygH-uTr2oc3=R&O8ovTvtd^^D-;*HK!-vFf4xtx zgk_`)N_e|59O0evjA+`$VoM&z>iS4G>4rXZ#)Vw2^a0dj>Z|ZbUw+PNt?XZCjEVJfE5iU2w z&A$=M4{J9%C^FB|Ts6CQ){Q&XZ_HBYC`5{m%Q{E=UG z*GD>=RqAdLo1Ao;LoQEWXVs-Y7q|OcK2msu|C!9NNKnH=OfF%9M}m7oPoC-GV{5SJ zStNH)(*zE%);KH7kL{El;wqBEwGnKA+$di?ysf>;q27ffNN~8DsEp7hOLiB-5o}<> z*x?cn*uABxgJObayy>X8Z7QEY%OSSpQF-UZ#gl(PH<1=$vw8cw4ElXlMsL_Uy6N5V z{G_g<$9T)x1u(QG3#HEEt*BvkcOD119Fa6pL7S|MeNK1G{M)} zam1Pv0Ej6>5zC9>Y{g${Mw4?YnR=>mhh{wB^R~k{4ZD^A6H_qpT>CGFBU@YIWz$E zdZ3nplGI^FEx-ADB`QG^sILXqBL$T?j)KJ3U&(1O%8{{&9U%y6f2lzIzm(RYIq0_U z={>uKYKEUKE!}mMuBQiJ8?uLM^$?cayIygT-`tM=O{xxRzy&Le`6XdcCt+sWr$n#y zqrSVv2j(jJu*Y=;gIyKKW1AD%XHaffJ)J&qWV#S_zqf=FIy|}KFk)eRnOauJpB(%I zosi`KEz2r`lLYw}iqqZJEpWP>*?(tC=#VgmMEal5YYqP4q2v1KoelhHsO3A1UA5-H z;3cX$Y<``a7r(Y~CjZHt75@o$ZG5iAcksIZN79!EHc{s9zi&Fz&LlH$CzGQ|nx>hg z(X%LM70kAcuuk%Wc4-porj!$70l~c*}a>g;A>Fxw`6CU3IN% zRb0{aTE+ACWPkra+UA(d`@Wy^`8*FOe7i(P#ne{9Cg!U1^69OkkE7D)UQ9oO1PJlW z%9GoNN7K)<@0sd$I0Fj1!N*S7(SFM^r+%lK)RR8e#?;XP7E$RW+F~q>Uym@v0P><| z0y}7Bn;d}SylVp)glU$lxM)52kVbpyLH0|oGta?RRseh(JqOGSEVqz7Z%+M`JTi-N z;wkp%9Iyi9g&oE?{#nnpxx}VUa+bE`<9vm8op^$bkNPsjF8}Zo&ZCThG71c_XiUy9 z(%-6Y7prf8<|`Amdkfe-3O}CXc|K3;4KMf2EC8caR-Ia_3Jor|bA5*uqkR3^GImnd z*0Y~k%%k2jnO&Ku{d=t6cpFrx4=L6@`Al_tIqji)*(Fk}GG4_x6w<)<$jL|8gB^)G zw2#!@T>cYMs5?l3Y~{BDUB*xQS4+xU{*3CcjeWM0rsnnIyjJ?{x^aC z-96ISE9`tLo9X7y9OHGru`2c?1FM3v)(R&4veMNx?%(lYues%4TP$&=4oLJPx|Cne z)v1A9I)@J2JJ|b?p;v&4M4xkojqSIoPtS=bP>Y=xB*lsM`EA3~gsfb3Ohzq%U5P1W zQ>k@BxM{e>>CWXR^Oq$~V>a4jpTN6fE7eo^V~!JuvkYk{gwdjacvI%^S=pCC)_y^B zQ5~HGZ%o{tsWBWHjO4J#UBK_yVS4yWfuD1xekD_*K{C=yzj6$LoggcHZSu49wdI}Y zS@MfmZ*W*I4cY0HBmH!GYI*cMYq*UDW7i}vLJ~%`r->?0C_blnaJH{5|VQS2;7WecW zlV(&jxY%|1?6@R>-l14Cr^@I8z+TmJT#mEZJ*s*#0N9(4l`fz+YT2G6A^Lvo@9LXX zf}5-2+fhkap}yz9kZ7^rj$O-~62Aq|H?V?zrtT_CoTJ`W5MG8o_gsGR-1K_&OmFxv z&PVg5asYrmTU*%bK_GYOi1WrKl!?xnp`REzfI0MZej2mu&Wq%9i#l3Jlh1jRGxZ;SGW;=1SzAtaKIMA@WX?b&tbCnSgTYG! z#mD44c2@*ZM{RrhDHf1pcdBDz@yP-H!OwyS8;Zo>SSy3aq1&g*OjBte!Vf-MWNMVD*znFJo0TEvwjjX1oH_y=L`v4SU|@ zChZJ=Ch51lTn{{WQ?}Z0!*5VE3Z1?qp?!K)`m!+xcm5kX=>0I{u-P*|;nt#78MTOM_Oaj~`)!QVgf=_(#Wt?2!Z zUc)|h>6gXUYU9fGFx@q3qnGM`$ykx%uf*6AHa@_>75U+0_KuC-$+81royKI9`p{z5 zT~+ns%5!5a!<*YK;b!OU*28bLK~%qgS%8ZN`7u;}bm%-t-r&s8VvH9v6GSc-nbwjdNumKe%Q& z;m{Je*z*=u!)L)48q!(u?$_b;ID15kebJUUo9P1oMlFQ$dQZIj`rD+2E> z%Cs&XjjOjRyi2B2clt)HPQgu!qc{7|T~VVJwV|*bK)7k@wng+Ebc~w5wz1SS_OPe1 zr~{$?BaLiu8N06#30vkg>Su^{WQgpH<<46z8I$yo$nNr}=jDg@!4dU!vkeueir9l9 z?)3(#{23Iw)C+6bH&y5v?q3K9cr_G`%BK5DavkH@V@2Yh(Fg5pc-ioe>W{LcQmCV10-8Atr`&WMY z%z2kMn7v4!+Bh|HrRfK?3r3!e_(}XOnqS%IY9(!f_Hbwp#u7z~P>))RMO=`!&QnIKc4{#6a12_fc)x2t-YwGFP1)iwe%nxHG*vFZ6FO`qVnb(_Zy_;g zn5zsUOF7B~2?T&t1%C=QfDYC_H>{W^*zgYEkebUr>Y^fFnIZA10iZiemAWEEfTmp~ zdQDfv*UFz=8?GwRyNbI5c>hqzeEL3xYKAtkHdG?&t=(;bCcK@fYgWnEZ3IMF=)`3W zlezQ}dkFcxUc7 z4qf4jEX3WfT!6O>0wG~$%LJvSArkeqtQ%}n%=I>Jtr(18Ei0FpL8%o)n-N){c>;b3 zuK70o9(GHchU!iD7qo@7JneFAuP$&njtT~9&FsfIrN)I7X1>K7D(o??rhx|mdsA4y zmvqx+SCtuCEm)%ym(o#EE9k|dO9_=s(*GxWKqB$+#uav@J|xz3%2(C4hwCSJv1e*J zBdukI_L`&^^&J4P)kMnZF0fMjKnN73pK_ta#%I{5K^I=AV;5^X{5@*S8=7AefqDdq z@n<9;@@q_yu&AB%YJ0dUq}TYUS-`e4Zo#~y_-jLtH>7uV1;RKdon29EQM$%8A?C%0 zH^h4hp?yW>o(b6P4V@96aXQfs$UnV{i$wKrjk2U!z=|f0#Y(UXY}&o_xPVg=Z=w<8 zAbNvZyi~gltfglf&nY-%Wrp!1ZR56ieoU?OpNDy3UO5@HiiJqk4@j|4$>PKl1Ujy?U3MlO?(D`hjb1Ag!u2-( zfKi~}8-z-<%jiL3Gq~8bMX(z9j;+`?#%083+$n`|V^>b(u-OYpgOOHXq^jz*A3}>F zzP2hncTo)jMMbH{ve1xmpLRb6u98;~!x$1rrJ4qxF_ca37i!M(#n06C#D7s5&cd!s zKIMWXGHT9>@9b(~hh?5m9GB5ZCAC#TSvad@NREtw?h zDMPdkHA?UtHQ2c$w2St|50M}yVjdKd2knN4%~9;I##?D_{CcTfF?)@hxrR<0nHpTU zIhMMIMD+Z_d-!`ujd(C#Kv$-#tHzI3WjLiqYN#IvlU~dPqr4T8lHJV`oSc{#SJs)l zKO7X_)q3e)Q?ms)kJRVdU+6>0VJjrtfmw+7Jfa|V*g{L0Bqnc959yT?LrYo2@R3rAu|aj z(xgmm^f%!)#W39%GL9SnA%XZ#s-*6>7907JIK3enACaj&yu`dr>f#jQ{1AL{J zh19hHp)F9w=dwcuLq{>-62`J?-B5>;FZ3$r9=xR(v0`1q$;;Bdl@Fn_6OR9*)@4L| z#S00{V>7%d-vh%r-R1lqn~r`)ni;na$c0A;5l0dFw27pLJzIkkHr2kM9`?FOzeZAx zjw{RsbX!FFGMP><0*i{x9tbPd*!e&SL`MI>ACHLipInVW|BSVPhI}b*775^<=903# zt$L#r3UoKKT_) z@J14hoeM|qFT+p_b|iD;NjU0NQGm49BnI*9Ol9*OF)Ubb;+iTk{k2q+<-Z!=ugtZE zMuwm^BfG1|nxexIvV^y$_K-?C1*ZDsN8!2E z7x6-aQ8t{y+8%|qNU5maMc6m9u@DOo7lg#ItA(<*rg)9<1>FO})cK?#@uGT2A|d)R z!Yi|y@qW`3ET`C&Is`&+du3I#xg+FOxImNMjSDLg59iP`0KGC&(-|sRp*H9M2%z~1 z&1u;=dNv(D)C(WiYz~R>CrGb&FIN+ZXOniyih69J#o}~0;3)eRtH}pQ&xlV{yy52h zo{-)E=!>^E+}yLgAzB=MQaeY9g~W;m^$wA1Zw4KHMREmBu==YR8uvN01kFYLBXMbb zk5{iK4#3|=FrbLmwGx6qiqOYMFW9wmdC4XtJT#duo;JFb!OMFp3knE6YzCb@lpV0X90wbGm;hN3j6UiI+-9|J%T|LE|cbLToh%M>Xcr+QpX0VY} z_&TAYCBSCXoH*AWHutEu<*9vo^-8}`(U4&4%&^7=y@V#%b7mAkY7$P&7WQ)Hj&ucA z;bT{uGmdYFu8S8FZ|pmH6SrJs^Q2Uv3ubw_7%66lQTh;o&ea*{_$3a*OSg*JB3R3g z9uP-KqFzy>iKAY`SU6>|j66z(_^@D(d9PLgKpgdpClOg%GT?&rO~dc-3pjJVTuoB~ zuns9VVyfa+IA{?#mDZ6{pn|wn{nL`@!aiZAC9T5vc4Cds97CvF6)LHy!GB}rQjM=H z0En#DiiU$Ze3=mSwK7D0^kqDm`e|3bAW@@kElUoT%POyXTueE7O>JzRl zz+a?@NKM+&oD8yn`Q8b@9bL)Umd9UC@u{Ck4~R8pBPvR*BFoto7HzTEiVs-`IfhVj z%$TQL52Dp5?9UV -<#$$H$FE>8JTsqzS0h8U(-X^b?^K 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�GHC)pgD+83r2>z)E@U1s_W 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⪚jAV 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

    $62h3K1#_0g1Phw>fePiYJ%m231 z@21cnRfCvbq7A9smlPCc+$>U}o!uc-7>Zem+T)_PGix*eH;3Ys&?V+{D8yq%LRagz zQf+d^jO2;J%3|7uBQFO+}{$(w$fGDwJp8ShWjtr`wNuMSZZ=`9{1++cU$?EHT5c3*~8Ag*lZ$jEX z_(9|w0J~dyla!B$8F|mv!fER8VRzSnWhZQEwFUEGe2Te7`+sCwHpdR;hq`27qLjQg z8c|a6Ph)>E1XMULIdEd~T^6OL2Rnqz$(G~3uvWmi^IbaETK2O9VX;mw&vd=&mK8e9 zSl1qe!6Sr2TX3nw&GeA$y-42; znwPXa!jpX0vOnXZBbl3#7061=c*z8iIdh)`r|zsFG;@Xs0(yM2fvnTudMv?FJj@u7 zVE`#SZ7r;Z{EE=4n9036o?Au#HtV`7{JK+uBd*FN>*4h&kA`?HfyEc+O$n{^wOO|V zzQLL$^3MUx9Eg|4CsV(YF9x|Zo=y)ANHbxblml`7$Q_Z1D!FGoH;?8Tfq;}(Teu|E z8lm!C#e0a}W1Wj0d5CO-4O{^7`YHQ*mGl&y{I_ zQSD-riRMbWX;rn*VF0a?A~$B2%0DLa8K9zgyr=+)vV;=ybp6j}VeuI#3i9?buEgP_ zj@ES53JTX0=+f)fBC&o+c5am4IGsNN{MLCr6{kW#gB3!$Xy0@ik)*5hZ^VXTddI&_ zT{DHk1DMwofHS_?gB@jCV)gm(JMe=u>0i@@vu;X*4_*TQ7VQ0Tks%UaVl&OgPwn)Z zpWwBh592&ky=2_!>T(L$!tf1dRqeo^IC(Wec*fp+PUVN&4~S`GV&W$tE6s+oIYxGP zJ{PNmgs{g$;YzhS<+>t##zjJ7y=J6*?77BC{B>%z&`Y!U(zqY_((lvJgvh ztBxT0l_1s9sfqGSo;uf_+a$7Fk)>>XN7@ zRC1T8LZKh$>KE_WG9SP^`X*Ml{W|#jana}b6|`w*{R#0z#V%Q7nBXQSp$(n&3<_MB zf@9*$__nHZw83niZk%Q^Vbcs2d=w!eHmFGgvnfb!z{CDL%-|l?mcdV{@51Uue1I6P z9~!eTgiRH-nWA3ZK)!?dt$^k@fD=SuR&lnf{RD%DJjUnV(w|bm3iZ$z_-WhMO)Z+W9dTB|Lqu)cSj37cWB%)LGrh^FO&av5yZ%%HjTqE z0^_6mBlfYDUNv!wO|}R_k)d))c=ZR2`I4hv1&EJN2$@YWlhx?C#j)IDU6{F}7bq zhT7+mn-Nc&9blio$G#`Z+-Wz*(sDH8EaQMWNHqwL-GUqu>|gUHusk!1%2i6qfe?Pq zo+Ah>5#h{?f}9274EJtAoH6^;tYq zU7Lmz=y$vDUM>m2et(#2X~-y{YnE|?hBy4*?s9B=kmxWtzyTqgM*vnuVwkvN&4A+c z;eu$3nyV?RQe`OdOGRvJSPLDAT@FM?I%Q5I0%v>-piI>9Jl^9Ms)Gw9q5ZZW0Axt1XzB9hRk%lm0m)M}7Un1rWK)7YnX z;laBK-6&=bHa#7>QJs`oG|!e2Dj_%}2T#&23-nm!)&3*6J4Lj7tSRba4nJv5)Wza{ zj7VfJ`3Jpi9oV{^jkLa0xh{bR_#aq0>l=D_Ts+Ft6O;Sd^;|i%7(*@=e^-r-(*94qyzcm?dkS&LzyyO z2NzWX$}h1(t9qNbswEysVzVFwdwyM`uC7WQ_tpT-ab|7&VAN1aVVz!rATuEPS` zsMfo*#Aw0;1CUomc%S8;-UgKKEjz-_brkzr8b-(~g1F=K^fO9BsO>Krlqtg6KrzOD^g%^Z85~4ywlj{Z&UGpS}b(b)G_N|Fw7h2ui?fO zuaF6lj6kvGF;G(m5h!$dMG2i7u3!0$6=>!t`ui1d(3Iixbi18xXZOsYTWvZF7r-GQ zPey+%*QJcdc8iZdsCUj0o8IJ@#{wE;ae3oHiiFOY$)!5r^3PNN&bxrE7UA1AoW#Op z{Epsb?_24AfC&wuGs%Xe`i`yy#6Re6K5UU}On9${w)({U1D;f_03ZacR)(V|>RE~Mv8KtA~lr-W!L!gQC=?hHke zZ)+TcUZ@j&;gbGTzC^i!5x+;gO@CyH)xDXl>O}!__+g@Opo?y|(e-5VUCMb>ZlRS9 zxE6}+MnOxd)3NzAe z?FI})0D;;gsGdRBZi|qzFE+YGb~~)D-9DaRcp}Mj$Ic@V;wT&6KBKq!G zukmA>7KtslFHmNtc@jXtA1C!3;BtJGjhWb?86wLst;WXa9askFc*D(|JQPg=isvmx zwmzRcGt10cI7B_Y*c2b=Iv=e^jdE@ZUt)qBxi}2FXm_&%Ik-0AkYYN$5+b9RO z7f6fDU7j1|bt>(tL_R|-0-x@98og!LPFoMW5#5TX8z#CLrJIm=<{{E;q;JZqhTCX^ z{QOMm`~hqL(Pd-7fV;f62=kEnPV)C<+F)2E2H`qu)oce4ZAMGuJ)9g z-|4$5VV4`t$`E&ME25YZof8XQ2z2p_2#T~bYr#>IRTpwN`}gTvi!+#sBDf>v9;$n zvUoX)yr*X)_)~4s5;l?g$>%iGP>d{(ZaY=YWJX^)s^MB#;S0bLMtN(o z6@WVv`V_1=sWC2S>%%5vxGzi)>|BuR$N8y=qJ7GW$*WG9Uj1dZab+5$!gEIYYN~Kk z1AeW-`8YJ)o-uni>+Af0&=0}V199ndOX;UK55&Mob@&Q6;9ck^u>m^`tBxCLVTeU+ z;_)H?vawo33ne95*yux}$Ml|utp)`fmP({ZH|gIoSZW|1U*E!h z3*~Mbe<`EK!^N9GcTO+T16mf*{qQQC)tRng0PI@V)pu1Z`}Oho(Me9?kGq#dKwAf0F4`mT}|{?zFvd8Bv>RQ zE;JxJT3uFaFwuzD$j_|x+<&&>6b)S~9)ETzJ5mP!@r4l}PovYgT}9c?u6<7eXS#?! zmi}*^Rtmr^ooEmbU*V{{7F!lRc_B6q0p4YSiLT|axe&E3EXmF5&l%Z}RQmwSWb$D^ zK&-&9zu)a7%d-k4CuokI++LzDB+F-B@_+60K%||nTr0Ii(bND1`%pdFh8ga1g}V{> zC?WP7{T9d$7Ez$T7AcdYqok6As{!m~4R@c#FU9QPvX>SbMA;+b7Q2LP!VjSov;RoK z5lJ3l7cmi5n*6yvjS~cqi)>qB2nx;G<$ztO-sq;a5n%8m*euC2Mw%C7ye~c|@}&RN zatVAJE;LJ~+JHy;NibfMO;$M!WT{A(qkSv8V=zFBT%G60b+WBmafwGl+j}B>4oY{N z@EKN^E6jU8I#VO&i^ZK2h=sG2o)VVS@{}0|yV!pu%Bdo8rw}koZqQR32}gb_n_;a5 z-9`l-nA;)d?ZqE~9k^|!sBhI7AA5o~#Xk@a#AVYCD=mcDh*YE!3i{j<#x=M3>kDFU z&e=EYB=geiL0;JCbEcO917sNcUy}qR`F2Lol_K>M{0grmQ4(Aetv6|zRqk)4pNFx- zC&ci&3c6v}3?|G=DOBm~*jFzJtvQjLR{jC*d{$LzKfR-44n6%E=eA)2eI+4t>RgGVb^8N`&BLyx zyDNp>z##d$FZP^1C`DLrqD!f7=&~fe0x?z>jFae@*Ra^7vK6R-(h54WE9}<*gqhg9 zAo7_j_j^$!vlU7EPVbm!JkEM9LU#Bz$cmVmdeT2F1sK!sGtvvAxET3ALlG>e>Y}7M zSkj0!+bXkB)`iy%AT*$rFvv&x^~ImuV$v_#En_!DXhXdk$e@-^WHp(dU_sH zSF{0@6*K_nLHZZOItUamn&CpZQ!Zu1NA=Ki8_*2Bx=eJN{ItALSN0ESgX7saWo<4s z>*No7xKj48!2BA236s&Ax!hdmOYK+qKadg%h3-}~aEQ(*JwMa^HPN3^hDZw&bebvH zLYEO8KpT8OC@P22X*}XfW8id+5{~A`W3$_a33zs6C+M&_<^f_3r+vWj+b~D0{<4Jq z<#GWpSi^0V-}DkX^)Vg(+{e_B2CX==f>&NNFA?$Pp&!BpxBcot7_1kqpl6qpX(3kK z)3-?jC*h1KTjDY)xJAj0l|tQR`fdjnm_h7)mWGwm;k^VV%GMHo;qBrS1P}^1wgU_{ z6;h9M+h6#!nAQxXox$RUH;<4#2%Ft#RhG0)wXBD}(ER_E+47PgY|-IL5h}SKLQnF= z`Jl_4Ld!H(?2S1opYx?X6S#HlPRRhihSA;56}4@l-dgSkDH2@%DRro3ahK_?9fw^!ML8MiO)zd4_~gIq@<+jR`Yaxy@R&Tqk$Rl5103)v){oh^AQ?% zSSmnorf&>FXRq;)4Oc5a673d!=gsyr3{#9Fg#+)=2cFI)Y^u!NVPR@+Qm>`{pL8@6 zo5@*=dLV>eC|UbF{pd;m$TS|G#pb(^=w#G$Wi(nxYdx{o)$9D4;!A?>mvqqwM^NDN zI@czpS&j6|6ri^>u|QlsdY%m#TK|=h;>q_)&8LA8G!#hnJ^2}|GF%>FL^TU9fR~AE zV)Ah~hY~APhoJ%ID@u4MIqh(ihF*v;A;c<1b^aOJkzWtciv%HA{AX3;bZIZ6e6xExc!Zp@_p ziH4%%x8}v~yj-pxBwQ?EUqwhA;0XBn30NIGC_q90|Cl<=TDmMRTyE|yIhu=kOFcDd zrH-bO8lPxwRCBLe8ynxD?W_GW%p)MobTm^0qcW#BK$Q@CG&fv}2;{V*_MMk6meAje zli=a6Isj%4P6V8s8>>nJDmizoGmd3zCs;P5TEnR5@uDRrdN*B{*_By`jRhHkQ|7I@ zRO`ke<8M%JfY_{xp{8NN=X2DzrSjvqP68;QomTZaw@E`A;kZVu)yY7DAD!lc!-DAWM+^F5$poqi8O+*W0Z_!pe6oskpygwyBN zX+52m4V0tdiXzha9b!~-J3DL;RbGzJr(j9}Rw`EqiO(yo65$u;&Q|p@39rK!0NtKb zHA&6YB}YQnIgWDm_%b0d$@(>%Q5#IXCA?dx(DwRSdOD4}5#be!y5o-3)_vBoCmhX^ zdh7%f^mqhi`sb7$LHm`qc3_8Qx;{62bKC3j(HfF6tu2FTr*B-GE!})oxE4S+lBBy^ z-6s1P=syRL4#*!V#t%LdF^X%)w%J#w)9f1l7ja3`Hq|Yp;T|C)FPy6ixNZm)_P(Bz zm+^FjFaJbp)2?B~!+o0MpJT+$Rdsx;$}ekQ@?~9{fT`O~zLea93?;cRAk|$ir~DZD zU$%C!i@U9QQ71Rs+}pHtTZ^(gfv>cU7ra)P?@8Eywe$twkjwW$+>i7+AEEk8Rcn6D zwDa=)GCU7kuTZnELFqs{d23$b!VqNp_hplB8rPsgHgn)!^a&w1oDUSc!<*VKMa<;~ z8B}7M)*9DcrE1EU9fAODo@8seje9$Ane%hMBV04>{ZNt{^MjZUD?ij>-14$6?pjTS z2$oiv%7q2j%z{5;w4^h4ya%pE+<4(=E~`;%@pa-pjoT&$XstdV_)*-eVpWus+%M<` z8$)A+knT`FLu;FR8x|%~>s;Ynk@4(K>$~<3zMTKg=K(88^{gRWhX{XOhNK~r+}t=W zBwZhRQ=L-ZpabSUWnG;5O7tD>sGJ&&h0;oA)|UYWE?24A;@bWO8vp#PZDP~5GyDzy zSMGbZc^NF6ZOgfZ=BGn{H#OVFo2BZvZk&x|g278W&Ro#sjH~$vKwx9zT+38ce>zX= zff(~oTicbkjVlek!?+hPRL(AKoGX-mPZ>TEateL670KmR6&jLQh>=C*(wQ>24QeDF70wxjO}^7+v^3^mL1hT(Y&JF?#ZdN zZJ2<#_MgLSqa*gKs+2*oy0`)yLB(a)Lwem_*IFh2qGO-e9KEZRP3y<4XD2$vW4H9` z1pbJ=9UCcYw>S3utY2XRe|pEf=yWZP%Z=aDPv9#KcuE_yzQ4ibY5FsdetmlX;s_lpM_cjxcLsC{JFU*Ke4yueCUtXGss#gZ^T5O zG^lz_a}u!!7Jkn3_hxg))g9b5%GiN@Yd1M${mOS2$?wcY-e;_S2^JHc?fTrsoz%9x zet(A^>`R>DbxHMC#nh^|G75@|>Ejw8i!v^A(T$(t%d9^tCBwqbO2oEz>FX>Z_SSo^ zJ8-(K`hP5)c|cV4{{GK_Gk6Bhyg3|Z4#P0w%rJw)>VQC)nhcwQVrVXiW(pGMMW*O7!{S&3b)jI?MkL;+10Y;cB^}T&-DHMmxjQc<@0%e-tXsm zJ<$JTp$K}iFrrG0`;)nQpm8LAGbha|(|-RDd;8XUDT;SaRcmj~iM{#Bf_rM*qO3M| z>x2xJ{fK!?shDq8%W=G-3(rs<3CY^Zh7rqJ@04dv(Bc8Il@70B^=z`$iyO<2$h?9d zC9s*6&#l;Y7$cVjH9$_{f0Pd^jbWt#SMLz{tXk1G_;1Xa+9QmP_C!MO zh2N@Av^F&rPut1uJ^3_r9}gEg>4q^;!CU#|xw4$DG%p(leEI$Z_=*_G+~svS1=ni% z7;oc{oGawNO&!~)X#e~K?NR~>f#$Ew)IE0c@J40)oz!WVo7qod&%afSRIgqRN#;K! zQ}%GvdLH6Dtz80~B0mSYl(^L1XNuxB*#2~@pMQ(!cAwVCia(J*zn}VJ7ioJWj$Bdc zVA!ze=ZEJ*(Bf^o{r$oa%~L+rSm4aXrWLPY#4&ic?y4@2xnkL+$E#(`)>d?*dpX~y z4$ATxC|Gl5E&o3$I@Hs06DBua{p=yMXR ziF2Z3om}tD*)LFZeq=9SG)gkh6VKyyovT>QPVT)Z&Gc2*_BOYN4^B)ozN=mC+W8QF zxS=&G8u8BB)3UxlUj%WCfRf{R!04_ABACr{4ruh;k=t4O+BNDC*{UyQOe+t;K0u30 zsAyBfP(2nH*uTt)i3I`z`*abFkow<$R3NMFOs`%k`Yo>jGUIclE|53QFrb7_0_83E zlixm;e(%p5%NXuV1+QH3diQe?CddNchJVNfejGNU-7;5fSCwa6F#g2vD&JcDp+0qx z(gGOC{l{O?O=JP8rGN7L0HnLxMrlTu*QpEL(PouS5k}t$Sk>TBQU2T>6O0|YFJ{N3 z1SZ@9ZM6D~B5m8F*+#8FeWu##V3xc=MQScP*7)3f3ftek%Dvwwp&6$(Kr5Z;t;viA z`w-NAo8(h^`0u7gD)y@J3@>FCIYOAh@zcEo0MC8o8@_;-2#D-DIw*<$wGge6{8r0z zW`O%OdRLH^ZIE8}HQ>7wyP{#kl$aqI`IOZw0qO+0&O_Hw-5FJHu(6>%eP{oOh2XdVl=^x{N*-TuS! z`+U(053X}7C93Jm($JI-|4 zmm8~!kMfdZ$&+*j>%MesWau}69wXT#^oE)6t)WT7QRU`WaILbgWTf;qj4lBJMy0#y zTp-txtDE;O%A%t$o8e(|pwBB8JTT1(_jFP1b?`C1*bh3=(<31O1=Lc0ThwDlzt#_g^)tG#*1Bm zJ0+0%Lw2(C#!;a;x7iio6unbj*PA8nt872=57WKYPyS&|>{3Q&Fo~XkB&GcCI8beu zof6ZQaNY{Ku^1quAnAXT4XZ=y6^$#Cpvl|0n2T+s`t8gK>0KQo(LtGWUj^=s>t0D$ z!Z_1*0%{DHPSU+U&QtbCza&t5hU{hM&eu!-ew#s*)w*4X;x@^X4%4$#kM>ZIY-vJtw)Lj` zrB1xvJPtUYmN2?|UR+mqK7WZ^t`$Ehw%+uW&gun4%Z$YoQ>sPBD`%?r8LSrct%_cD zL!YY+lFkNFR0v<&GnZ^HM%(9Uv9$%Y9gfrcQ1bxZdz3ySoF-3A@#trOyeohTQ{DgX z2Mi4qvZH7+|4x;H&dS^ouLlWqC6-H0VSClP3=J6X%C$Liivb$NK5%Hl7 zSRq}4Y?w%@K%HNVXBHkRF@WxA5aEf2#N!ZpDb4g*f5xpS7pj-{>?hj`q5A*)J57&em=;H6npj#?_WAanH{>C6#no*hip){uJoDwO?{JE5ke@w(H*9MSb1 zM&Ykg!#hO5w7neNfLEyeQ#nY(osFicMZ(Rm;BJ3;8IwS%4YXnq-F%b7Sms3yeHaCq zHf{oaQ^!?Q(!@MI|GNb=E*M$$W4uq1_bPf#hv4u|b`jhaU%kP39k8d;=|p*UJ`L1L zO9sh1tC`;W?`@||$F%zn2nWwr?4U(59d70^M2dejG+Mq_k-K)pGE3&+ z4DXG|&Wfd3)#~X7A2hr2LVG{fvX`-8_gPN=6qr8%`S8i3g9~AAFk=-*wJl5C2Z>*) zj_&;AUU{BJ0oA^ijgmNva*iU z^0_0vm?Ra(=Yfk0D${>N9#ES)G_U zpcLe!_#HIA*jf=Z3-TdwrJJwIQB!zBg^I>3q5Q~uc&3m1{XAwJ zG226{leOqCvxn}SqIFw=Fl8J!L@*EXqCAmYQ>2+%W~S8iE@u&`b~DpU!fGC4a&|OL zvgqA=Iy_Np3cC1-Tw5i!ORh%^_xoUacNsOQJ?x5G1^gFm5-EbXYiLIr`TgB_a${ea8gGHE?Cz#}U!?_hspm_31+kEfc zK&lUjTF4ypNnSmB3}Pjs(3`P*>5k&6zL6_E=>)mJ@RZ+Ekz1$r$qW7~tgk7UIx=aY zDI%D8M>_gyGytS601o)reMi+16D%Fo;SGxjVk{+(#h$`8p^`QaXVkiRL&&@b0;qq_ zq^DzOXr5S87(B#_C2oqEKIsQ-X|Z(^`G(QqPLCv@AdiNgK;-a$be>Rm=(|8(+vsM4 zu~~Ga+45hI5fzSD!>qlFyy?U_db>ZLpP&wHI8P(}Att&OLI$4p&o3!;TpJQ^m@=cT zGTrpsM(t@?)#XLHSr2*{8ykm96cfa1qB%&896#W3-gonR>KUlr;J54gS3m%Nwv21n zghrlb#~VKvolGXk9*NViK4y)c?yi{Y-ZpF9SU-r{_23Y|Bb@sVB6atY0*Y*W-HW_2j%&zIQwcEy^&f+OZGk7=4;ZqNb&y? z&R-ZHJ${oCcwtXRYJ&4Dk5P{_^D(Lm`n1`N#q);$W)Yb z+UfEd%+ALfCJ-wi>t}Qwg*tgeLrOo{IG^RpWn9c1YF%aFq#tIevB&r11}e+w+{+@! zeenK&6{qv!Mc^2E|s?{R!yDdbepkG6>MB^l|sABv7T{0w5_zB}sw9P(>Cfi~Z9_$(B zg7j7vh0N!hk_+U)9a?Su&3eURKx-@p@C$M)Hm4Lkrha*}`-(aLh0f)vCm=x?OOr-Y zo{E0Z@G;0PoC```f>6p%-9(awyPQpvw|j)@TJ{_+&Ln^Bw>^35uRMGpAJtR#CeHpY zxhji*#uRC0l(L!jD5D#%pG){gIVeV!VmP=PUr_=FFa5Yi z>gk95_jt6SYh_$O@YLmg^)&mq7T4I+usWOE$F+;?z}St7r++2#4KP0pmV|B7&+VWw zr5F>625{#`QNEfFtEr=q#h6YX4={l6u`N9wZ@K$DdP6Uq*>kR#>PGPQFd}}-!c{4x zgR^uwsZ15yrHjm9RJw~*^07)9`z}RfbC*k8dSU$)nBJBS;l>^eA7fEN6L_%8OIl>~ z1Qwo_rM+g|z`j?GaLEd3eJ$Vig~RoYtbUCLGl&9SqS7d)C-m}*ShsqYOKX5<@MGfS zmr}uN?qw9Te;t=_Q@0?IHVD!@n-pU;{!V*6c!I64ZTZL>cM7?MKPAh|F`Q4oD3I4j z82z~FoiwIEj*TZi3@XVD+E^Xk$dx~hkwQkRJz`Bbrw#=wCetz_1g8LAN}r{%WhEWb z+o|+{mA{am6B;#8dK#$Tuv8;=KAX$;KI6~rD5w9e3y<=Zc@-TUEVfKUNhtqhW@U6o zhEAX$JHG`8cFjcAZ+`|&fz z6w}ogXxC9=o8WGO?J>y26@M;Sk{C%boUcGd)X}OU`dOA9zoq-zD>Q(ofGVj+4Yl8W z)zCRYrT67{x|K3(Ol|Lr@8g)yrcN4R#?WEGlwgCpGX2b>8~Jha={VyM?BVJo=z6SV zb-9D-evBF$d|^Uo>_3KJskCb#g~iqb)UK2!F^k*Ep@VdG71H=X{&sWcgA?`^Ibkjk z)%4OVX{Z@VPo$rSiB%nrf+b^0yOKi{lK|!@i=Zuj*mGCRq$xH?zRCl|!ZB+{n4!QE z=DNlnAVHk~0|rtHtXQ?~etIuiUKWrHxu2po9l$(97kv6`uJk0HX%GKbHl+V}k(Ipb z!&Yfhij+A>J!6d3GKs0*&!kBQB<3__ghOGyI~?;kXORHz`dW(Mg*9irp0LBEPjZFK zH63?!Z;q6%Zdae%a~i00nq9>4zEmcs;5s+94n!@qJD}wYWSpK<99JWVtgG-b%>c7? zv$S=N2>Op)N2^J1hI)}*T=F8Vj=)LGbd|>2$hj-#b7^M`bB%C(PDTb+>qr`J1xU4Z zgFJGRT;`x^jFahu*-W>tVVuO}NJj8b3ma_06iK z|JI?%R?xlmJaV3;%MtXaihQ>7rOzv+kB2emLjC-x?FP3Wwx$>kZ1qw%e>1gRdZCfF zsu&$R3_F&Ww0|i*e<6c)Et6;WhtoQn$gZ?kFv+^n0;0jsoDtBoNtc3yohyrmqD0(M z!sq$;y4I_&L$6hOyc_a)SY$FbTCFw-u*|`S0Y0Ir1CnX2I|GZK*5092EjVz9E-vMs z&z1h3&UHRA3XWIU@v1+$!glI6QQK^Q15Bl($RvP>lWEKp9)Y5EmXA5_ML`GIII=cS zN;;#8?|B8D_8F3aWv5M6X9Fmri=Blbth8YPwzNR`&)t;!{**zQeErS+0}-rZx$|vN z@Q6%MYcR}Aa(^iOVr6F8e`Q+Stw@{a?lJVvK@$Gbr;vZ0^q_@<*yK@P3e2FB{e@Qw zW=QnzMIP15lG`}!cjie83i+<$J@Lju>BUa`JtJo+Aw(SJE8xG^OAT@Q-IY7j_e19t z8jS!PrQSDI2adz+A<{c#hCGb-+{X&o)zqM-hib^Vd(_g+AZiU#*X}&$rF|h-qg$oM z`0^)SJ8EyAM(tEDNhM3)YA93#-I$LorsL}x=^c$CP9PZ^-uN)Jq(sN!`|vmWDf($; zzcMtXYpB~KLLsxUHvC$!YNF_ww)9dYF9>o$htxMrTBD^`Wu{%~W2Ard)z>*N(b=GV zq2#~H!_=#Wt>jz;ADuna^e`w^ZA?ak^9lAAp&iFav!o2?G*bTnDlt-|$UR9Z>Z4u@ z(dLbF>^Rjjz3eBV-E9WqbvPHN*T`y|Yq+syWbc3=@*K@V#c-;Swde?sU887xX&h_a z^eJjBhn!Zs^SUI5gzNN%+_FYv`~2xxnZMK+fmeG%TdjQaxkkyNRn+76)s8?s$?n5V zv4WnAddGNf2>OU%bf0Wp`vWeWvF587&y|&Tp_n$^g8<0U%yfay@22s zE24T0z;TD0s=j%UEMwI9<>)RO>4WY62{-7N{k`)|!8*%=I3wxI%tDI2&sdEGe7FBb z>9_#{&n~Ey`Sv_$jK0$1imba@UKskV*7zTxdT#JdRTyVIE8WZPEy7xV4CH-(>AiZ` zkWNX9cnG0}za!S;Cr`yTK))^)b*h4AryP&SFCGavDg|cYG;|29A5Wj6R?iW*)l0S0$Ay1$#PJ9!i7%CCdWXz3K^8fnivySM+vBoy zORkDg`(DmElhSTdBpBR|inEuILs=)~jN*DmlBm(~1DOPA&Jtz_omwV+I~utTQsn}9 za&S?^f_=J&Ms9UzY*@H7*F;B(h1wqPQQNILJ_O52CoM2SmY>*P^lH>DIw}8zo;HSK zid#qu4Ss!!g9|oq-p6H@6hTCcK-!+A|^APL<7eNW!fwy(t1NfLbLoWL--Ne zC?zR1=86Q#{fD;Wq|T;nMfROfQ77nVes>E16rZb7tB5>eiTPxG#AH81jXY zo=}5-%*MOlzKCNN(%m%f>>fHCkdcDq%Fo#xE&ASNm~va7e&_3oj>y|W6vSN8)mT|V zw%rj7#z=_95`X2ieIwYJ#ciCec=k70DHp?r1f z3A(d8v5jd5p;=!!W?tVYOsR6V={=)lXtX*8)za;7bVbMggDDAp*`(07{VcA)yhEpO z=`ntn?dmg?E+uzbN5}fdoy&?f<5pDLHjG%>(XIK`iYtxD`G^g+3G0i-0}bW{-|2F? z&zlfS`eTSRC{(^g$fZ7^aAv%wqlhkt7`-&{P6H(m3Oydi)X86mfY|2a-i;env|i*J zGajD^U8EONtciEZLoF8L8;qaS6ps1DuTfepx^oz;kt$gHt`azOn&*!(O2C4IZRj3@ zF8~+PS4aWAEwWXR(oNn)^53^JcQAP5Zf3c^#)frYV$z9+y%q+ z^LWcQ5&dm1Vp*=VQ!T`Z7xR0k^5>sjRTMH;ov%~ocoa>c6Ae~_4TI!Zsdl+fUgXA5 zUcoP?+ogQE$q{M}?VZS>@F?m}b);No8pbOZL9(PBpe|&>e(;F@xz!woo}q@RMf@bbKgv^0+788U;mrZsGQ8G^vu) z9(X%J%Q#bDiknXJqnLB!Ydx%!``i&L`G%-8h?qp;`v~>rGJ>bi2<`r*&_lHkhx@-IrKQD_@Ryjcg{a&Ji1~V74kt@Gx)Ha)_(>ld&7E zQdy)LmJvO>-_&R@dp!|j{c6)qgS_gK=}#pJpe3?xpaTbpc^Q zYnppwmfhrI(st5=%Cj4m(woH@7GVY;s2NWf_JM+bWnX*T0Fz3IbyWfZyD;zD8&fX$ zQhZ?O_$X2-*~@(G@-gx$lkqi9HaI~6!hCFGd--^Az;Jj^>>Cw#v^AerRBnmW>EdHu z2h5ML4qqxY>6YMVK})c*cPHyw`<(qW>1uv;f$3&O217G-JiQlnN^Q(vHxQIH_cAbkL}SU3X?B z9fY`ZF8N2*;)ETojn!t>A8UGIvheIL0*anyfX+CSa*YsrAoU9dIbbmi4zrTwy~M*pLB9==TGxtj zHED-PX9qL9e7v8C46SRk$koimQS}7oEjg@_CT?a%OHuu-wLc^xD&U~suJrxXXF7A% z65^$w+hoGUI<=!rujw|>Sr3iH=RMl0gb z_joP}+8a}%%S*p+fbyXeBSS<@+==-Y4HK9yg(mz+ENvi;t#*7Q*wMh$CGiG~qJ1!9 zd)RE6pww;>mK*kdFk!*3&}qLLMJF}f?O^&}Uv{`!hKOtO2s*cdKRoc%l2WcUjh22I z{!z4D>udmwWzGnSuT^#}*uZ7Zehh6q9T~`5GoP|C~bNnKWA!R z+CP}tVCwJ%sL?iE+Vj5VlAaj|xe&5eq?Y}z`^*68maX@FG>Z>C7-eo}l!)u>Xwp_{ z>S;r?7>juBiS+6NMVxaE?Tk>LK$Cy)`^sblXg=T_COzSG0F?%6s*REL^QMF*`; zAN#FTGfZ9dL3B3unR6B?K2|?T7~cBjx#Gn%%9l|{N>Lt8I8-XNf^BKXebY!A*aj$U zcha6{5nK~+0Ot8Ir`Tg6;s$Vxoz^5ILQZ4a6Ag{a*&y}6Xz-72gxC7X`}-p2ddmLV zp78S^X5upe7c=FkX{De2RdKU14DFUr9x^)|G6x;3x4|JJrET6s0Y1xgDdPnRGJG3^ zn00i%lbNMk7i9GTMxbWjq4XEGkCv%`+8+p@HCF<%?>ZrMucH5smw(^ExTGAjco+%d zb<%8=dEGzvq;G}ys!uPysghQ$LL{o>3eH7U)&0ge45RI)vzP2A@WVcoN5{X;8gvh)`5SHNIx3iqrY$KRGZfYc+;Sr=3q3<#4A2ULZcAC^^tPK>A^o|4R>knh zPt_exQVk38mWZQ>V^;6YblD=2HY{?7WlpYDh}9OpT(y6DzxeEkGg7vbCXT%Our z3p4LJsm)8VCUUUHi%z82zt4W4 zQ=Vh{T#15IDm}_kBX&av^}V~raeYZSU-&phW)k@m#TQ7eD=KGGczL7`eFMsj+!PbJ zhL?sU*<)#QSZ$IpUDyC+m*W?8I?!VKMr~<>7KigPs?TJc*^?8Bf!woA`VCrpcj!oEBklFiiUqcY zQYPRdhE0Me6T@hEvc+TLNgm39r`I`%h98ip2NOR`e@1b{iusP2d}EpP@K^ul(JucO zCa^08Wzk1Ld~b8P4vwvb^U!HpP2)qQCpBb}1h~>`sXk1<4$~w=icigm2ZB9ebnLq? zWwi1<*?J$+`x0#ktK?m{+kkIrF+dKF06*HEW!b8}i-hQ2hmBBun`StXeJ@>f9g*&7KvfEo5v@~GmAtt?^K86s!!-WEru^gzu|+y zZTe(_bRZv|GNm*+RGkMnDKcxX2XlQI>7*5hk9Xq4)bV*yXXzAz?xn2xV)c}S&g`Pg zC4a)m>gwFnQK*+M$oRrf@1mDgaJ0}kOw5~|6tYH|cvlr8{kNYr1{&WsO^a*7)+@2? zI_b>_Em+5LebqkQ{}xc}QmI+T!4A06pPL^lkLB@;R|phjq*1%DO{hiLN9%fxanq!U z9MB2*rY(!4%R2h*k*@zzHWI^t3Tj${w6-YH_)9nKB9HdHg90b&1>HW_%=K$&or$qY zQ-is+gJ{!rx-(m}Cv?s@V)`r+N==(w@D4kkEyZ~gZm=qWLXAQX*a@K@1`CZvDOOjd zh|q$b+|XrJNFKsIxx5m-a2oz5DPk%5E>mDKhqK5BQ~ham?`SO-X2s}sdzHc7e@rVZ zPpv)QcRjR|{040TeHX3@BgNX}=_$!qkTiN0twbhj%~@I;u05h?$=q*cO<&HX4?@+x z_H~k~QGhW%t-{P>j}x&U$KGOvJ}INY1k~S{#;uIJ%2wmX`~FVzC;6F<8v!+ zMAR~kQjMgC7w*iS9%gV%f6H@W^s&@#cCu!eVlsMgT0a9)>CuHWMfB)Sn_^CCk^SQO zyqVRNO`?~HJ8GpHdOIDH#mTE$x!}1oul_zncjO`%Kk z!u9KvPtk}i%aK%daBz;D&WxsBGdwQOW^kVv>5F__jhWN=>Mn+=!A}JDoW6-+BEyd? zFe4FXM(c#t9<=xbqq!4X+wAa&IE4B1x6r0&Ex5I4QL97Wv#^KELDjR5Au%^WT_BaM z%X(QlK3Uub-GoY>Kc7p%DB^FT-4sz>T>elQnT|IXX%@)6TT$j7k)1^|6KU^Ex)%VU zxFRbe>;9n$x>^H#4VNy^1EWx^zgbGgCCF-KkikIhCh5Q&aDl>t<07d|ZLIca^LN37 za$qd&Xy7jywepN2CM9&_C}Xk!c#bdaON6K7`!0FGTl7+_)YnAM-ju@p=_OBewJFZ{ z3e9+zyZbNQtx)>7FD2R`)tIu4B$56ZEB9XodIPb2<@Nw&rZhH$c|cFb!45%iz$Qvu zI-kC^KD4=!J|556*MSzy<)qiYErmzZ`Y}QjoDbytfponu@3jjNwW-3!i}yuX=}9|N zorsh{X^Hf02Ky(yH;$f^Ndt-{>nP_~4#NJkrQD8z^8SywjyU@4B+t%UN4h1_wUNYT z(3~(XW3RNbU-*-PWKnPMuJl4;81nesM)9Xe7K|omiUC7I*f-AYDF^Tn!m3kPDk1;J zc@xdqM#zybfN_iWR9=BUd35(j;*ybqgHW*(RtU;#$K2oX*FXGAl#jD=GUvr2t0MxD zK;B*P#dNKco1oV6q#dDA2fTu_eK0ppsc~)_Lqbz z{N$AxEd%jAohfA%7{0wyJ7!+{gy!wN51@Uj^v2-SgDk@Oe2Ce9<@}EF|NBTH@A;_n z)?qQj)CXVb+jJ5vzx0D1>BWO102Uwk$zEf1Q5 z^~Qg(i>$XQJg9!Vgzhx!e-YQZ__XI^rkqe`cY9t`up zAD|dE|3zH>SMVF6NA;tmN9=^%34rkGo0uCM2=`IuBve*GTNLdp1VK`kBe2P{Kpy2F z2roP|A+Tz=XKb;SWdSZP#I+7%ubMrN4d!hfA*<|1pN$GRJMz8=-{7dfTI8PY6`sDs zo6`)*ot~JlX3u@puEO!dfJ=W4nUfwOGrq*<0v>~C&ow%RCk3>hF}{O1)h|}he_4BS zE9%`wwmc$M*q!0}+8E2#r&(S%;L|o~vQk z&3sSr5LHnMM9YPEqCBz*$Mxbpz6JI~c9tGrD=DjL_E`|&btKP#h%RFTtMPc^2W4an zc#IFR{}AHxD>g?QgG=0Iu*z5!Z-3YW^`IiBVg-J^wYc)g0xJv#^|;~?sK<=`^%Q(t z5GK5D*;CUykqn7xeVvc(6oe}kJMz@nqiVeH>aSpCIPFJle@%h9A^TkFj+QmY#^K@g zFcZtLa@aw08aMNUFW`HWykI5U?Ac) zXmM{rj#mszPQeC*54*RgxjYx*tSsM{M8_~a7)+jwfC;nfc`x>|Q8MGDhtMlBx+0Ao zX0?OQa?`^W*d(##X57ldc(oG7Dd6BppaNBC^;=q8{)P=qNWe5jsd)w4Yi`(pSD_#S zLT<*3eaeh*oe`>#O%V{6j7MV(f(L4s+tb*j(0au%HqM5((<2>04p)M@Qw5}~;b<{) zc4W~n>T1talyNKuEuO=J;e1`+J+-a|WyaQ=?-WnD*xk-uhMy29yQ-BtFje^rUtpIN z_4@49_@Y8~zEbwEuuAM_tWdGtT!okQ#*F*MvDHS#Y)mTlo~6fwaSV4_&=q{86|)mM zF;)jnsH;S!(I?)<|31@fW|Kwdj+C_VLxV>Zv|}~9RAOuxF(;uS&476H<=31ig*gcX z!x;OEBH4Hbij>s73tC*v`uYoTXSfQxYp(T-M={hn-Q&Pg#&OYW9g7W!t@+DAkW~L( zGLOV>k-nvZ7`FdPTMPz{odyX4|%>b~$&k+%0$vlAI z$8>w|9j(N3D_Hi3>x?!JUdvixfa^UiE+yjb(|R{BpW0hl5~sDL`>ZLNVrT@oU>Xa% z7+b?}+xN~kbWd$VXCNu$u0kVJg30E3uAROb?Enn0o{qqR>(Tm5vDHBbvZtMi+TL5z zM>$TwRyWh0zqL>PQ!X`7L<;~h||V}$cqO3Rs|{#jr*yGg$l2Zw=c#)YxcEpm=(vM;BG2V2nBk|a zI-5URi1+NODn5CX0|`3CdulH}14I-=(haBDaYG&^vR&NRb?oBaPo^Z}C!(gOf^Jn}oXgIol#!j+|E10?)o;k^s|RVt8i#)v>#x89 zV@wk>Ej4}x_R-ZGL%oxL1Sk$%qe%8VJuBGi9fP#Vx4SI!#`KJt_|FarXqK4vCLA6R|j7VGUR`hZk{vtpCqcnH7OgOcD8 zo75G;6oZuxJw5C`TP%c{Mf%9s3jPWLRwqF3WRcQ&HR>%qt!$0rBekIuJ3ebE;TkJp zNc3WN-NO-YKMJ#+U@j{`T?TjV!{&@u``QteRq&bM+Ix&Q_|@eC%T=19jK1bgpjIH24k#%D(b$Y4}acpO<8SA9^%uuz70$76#IdVTdely zKxm*i39M3XwW0+Cz6uHvQ#?B;9Zwe=GKz;s@owqm0@IyY_5%hK%`oZKcSw@Tmnma6 zAP>v&Uq`(fkA?5$O2?s5HJhiQ07SH6tsVW1z_XVe@UvM2?TDLGP#zS<7$CxQrfabj zWy6S>GhSPE2z{}xTq;$joNlVaQ;Ykai5odZbMuqhFPRi~IbJ&;B5UWrxIOqPvUS~2 z)*T+|2G)l=TD|=X9xivIF&)bZJWY7rJZHf(Bbp7{jjtj8B+tFC`i0G1P*Y`}^K<3t)N17x}i?k>T(kD01UHgJ{A zP%t89%Hd<}^zp9r$nTl;wHX63hAm1tA;tJ{#D?L0-ILk6+Q*=x3#9betM{V+68=1=SVG1rPz3w*`tK$P3{86_c%yH zIEe3C?^cu`Zzj_daV>@V**ZjD+ZOE*FK1`GR=_aTvxr|A&yEs&C1m2oyxU`(@rtl#77XWKGMuz&xvc|}zhKD7_0$h3beChESu=q0`DC*Die zqh9NcdCP_{Fo1e7wD!6%k}pidT?9%rq#~PW%R9ndNiin_NpT ztrx@_(_zE}+gJ3talljY-vQOs4qY&*%&XoduyzbU%EJ6@?4l}ktctjWL{_79Q z_8p}SJuy53d7)KqTuozv(JJ5sv9I@TK&Ia9#{Y=kbOFiF{6NPWR&0y-I89HIe5y=k zO1zCl?`wl`EpS+*U4q(!RCDF!%vC&PI@wH02VWe5_$Xb;?g-;A`VqfC(yrJsa6yXJR#${4$XB5kj};%N zciYo4`tu^c3ivlYqD(wali-ra_?zYOU_bTIzudQ$5N*XI+@cv1lot#QPdf4-sDCc0 z*06oV9Ro21aK4q`Fu$2V`_7E@nsBmy^y}3l?Grh*!f~AWiDs){etcB@R-TAUe@4;Y zqX-N_*DYsZ$oA2@2X-1?(BlCp^S#_`po^*@KnJ1KZN~x?e;W8iZJH_PEsam81ubxYey9C`K0u4 zIeX2@%)pDeeEsxuJ6uJN)PS`kR-3LWlTThbKMntf!&5)ACzq*BN8|&O6?L{@) za5ACNo#NOE>F?O8nnJjF)Jj|&t|*7uW?4I>_=93SE6}KYM;!Ytifk!E6Traeu&t?Ba2Z#$h%hu@874P$MUS=bw;I3At7~BcOubK?4QLs1a2_OyQIVEmiz&=z?J&4R&l#wqq$@CIr=2 z<71U9Fjw+#j}8v!2U(KJPx6u<0ZzH zljzJ8Wsq_~5e+bg37;0&I_t}r>x#IH+17hZ2v9~ai#__lp3Rx&Dn3dQ<9%K! zz-<$+EpXNHnbTOwrqsWfhi8;oF$sh4;}Vmbw8&qLdsP-`3k?*Mm^ItHoIcDac#z3tH9eqnVo>cR*Xx6PcCCF(^)@~Q9J6j;MN&+ zkqXDJ?s%Iu8z9V@rIQT!7GVB#0H4WP0w4U;b9f%eT!>c+4@<=cs*Vd$ZbZxZg0`!r2O%i+J+~+ zUFuR3-q8VyetgAtch*`ytJdz`tZs1M7xSVm>$}6zlU;^mfu^OMb@C6A^Vq}8jx4tt z*`B3{_zCdirXDKkYi*ql1@!@RvPKrT`?=Tf8`hncKJ~-Wy@uZK6{11-Vs98EWy?fx z`l5O$MJZzAOmRw!{Q0`XEp)+;J2;R&=OHg#?a$+k;ohlEA6(^zCVjk;e$({!0UTWV zUBw+)V)QZo%thOse`7kGe@n)R=BH9*rzK*`IlMW=^#B)##fLhL?DHmoLhSyw92^@@G^XsQie_UhN*w>(9EJ5pqsZae%PrUa-OjdlVz5#|kq8&UuX(KOs=94RX8(hT# z`YztiPyq|q3isQ*4;tYXnPFIc(SQsyQ)R#AX}6&U+rbVgX>{nA8LklZnXEI#pXch@ zc?b;z>=~9!KNK6`y1ptHR4(HMo~1zFDh0puM(Qsx(Z+fa9lZXNBc}1!OTSW-3Fur3 z&L!-B%$D<5q=SXf6)E-socAdDLNe#ujX`Z*=qwR^=c^ZN$10b*y;iop#JyM*^FN_` z!0nmF5dxMTKBiq*CLkNRo$3N?Kj3`kcG&QmX=~FRy1efEYM>m2cVQz!ZQ!lQ{Barz z{#t1tDvSi2;-uQIC!%aV(0#6;Xp#XX$9%j&Oqet?P>+RcHV&R=fw|XWve)f33ZaE~ zx;9}49pNwHl&@&i%~87YMK%nDFZl%VjiUq_En-zC<8?&*@^&pgf0^{IhKZMUC^2YT zsKl`1t}i2^fj+kIMDc;{ub;=Aa=Uqy*HVTOw&UCaHazg`%m|3wj04O+>tb$x-JwRK z%RNzz&fxSlHDvMUyU!QsHu;iMh78l`k6wR|(u~t}VvxrH9uBAXA$BkCOzCW0r=2*n zx>!>&&9Ob@>d)$LzT>GX=Y+l=Ypw zs-4-oxl^&2$&xk;9@}-8{TY9$BBiJww>;p%Q>ZP2agpX})W5||iPQOE=F_OqaNHRL zvPyp2g4itbUCoyWlV0^q?*O!<|&47ezo*X5SPp7yp_ffwn#E* z)%gAhjE(c~Oph2>gBnrWFsqy)*zkUo*~so)Wpvr!oAiAa*-i2HcswiVNavs3XRkzLeR2 z!#o?*l|>CI*m6pL-o^2p@q~Q`rTV7}XCwjqroRqPES!Vn%zmJ(9H3S>i*&Fbhp69)K$JtNlYrnp*r@Gi$rO@&i zQ%S!n)w)$3SCQLw0a93R$>?i^AfZLmQVyKu9O;yZ1#6yKInQBqbZ6-V^T&u){xFE& zT0bhIUa?6TNfUXlVn@bD+OH>;qJ39knygZ8=M17l5)eddm7)U-4S(POzt8K|66G*e zrlN_7*F6&OjOb!?zHxOxt(0l)I9csT&gz{*%SDxJTn4&Gv|uirfJS4tuFdOK_o0YP zrU0UjH+fDYhwjz#1?>VYRtl+U<0nWT>w;@sSGhbN$6H*(2>Lu2Gd3_%>Ks-4Xhkid zu~&>X=r_tjMKg~TOw}u(jcX-8;${tDbJ&lxji~T%`ATduHEFbvhA9i6imdU+?Lx-p z9Y@=PAqjT$dOdzG!m3hyLr)W@xd;+-OrKg(JPa!Xbm@F z89npo_8*ehi5~Eb{Wq9xD_r?FdwHCuY$0cgCx5=^Fyl?DM0y^~sOV2M7uZA1Y5?qB z3Gtv(*24EGC~23kc3wLeXtjN$^Gf4L#;PjE<~TvlQbjz(qtz8(%NR^0;~7GKJXv~? z7tstYuBiV(`meu7)MeN<3mBwKz^};=h;znbZWCL38j)o@HsSEOx{P-e$7>}_?!Onf zhCk@HKx9osJaMgKU3-_)PXgEEN5g{{QY=CiK)CdiQjO;a9Bw+m^PSTREi<%b@Wk!k z?v^j;)HoM0eMV7&uZS|0Rv91mWGRMo72fn}5Piv~tQq6?K`|0aa3zy`)}$E@(P3Y% zEG6P(!jHelrCQ+v#tY=TdbYEdheSepOT&53qVn6T)!0)KBAJL- zPlf|j)sh;+_q1ycdl1x3$+^y3t!-R_Y!4D)XlWg2|1BC?sY3H)m`qIZr+PKEt5_U2 z`vqcG$!s;#YRR1b-kM&;5ghnFmE!!w7AfrUD%TfGX~wIT{!qzXcFl#oX?Ca@?I^?q z8^287?nJlt4-lWD(6*dls@kn|^UNjb8maNV-fTWC>wKBhQkld&e$YpIrnsv(r0P8U zDw|k4GLl6J+jtyk?Ob6nEeb$ni3kngjA_Oy&kD}o5pj3`L#qx(6^{0)(Pa2o=VwDn z;@!GNn+@PWM^CV1k*O+FxH{wcVf!{btL^h`$lO3}H=uf=g=5^9%$&<`IE3!=hI#0+ z;%*veXGE|2=gKkjdeDzUBDzWs5qy)x4P1{v#Pl;Kj0Q3NC>nc3TVQ?D!^`v<@A#cb zbZp@}mMGa0#%p$gh*9-{8;Uq&3fcMY2pSb4RZCp)IYj~w?vwP9rv7&@Li5nGaI|^i zs2~lZoBdS(gKsKTWgVZl|1Mf|kA=`W1*BV&bUIW$p2f^#``)0EK8T}O4^D`A7?QM3 z4=jJmrxXOE+5YwLwARq?MAvouRPJ6ys2?x3xR4#H`xmd8%=Q5oAIs)crM`Q>*J$zV zukCtUt@9GGM@dh30ZT?0r3Y|P>)8S9Bzu$MErbE|ZsOPV+b0*o?gvYmeK@y8BaPtI zz|>Y;IWI3Gy4_bac!#gwTclI(-0&nZRWFyQIL~e=xbk_7U}{6b1Ij!sx45J)04+4r zf-vJ}$nPnLv{7H9h&E$~*a~-QpWYI+59gVW8hK{9G+W2lx+1Fgi3mkTv3f2y`eU~=0eTMd9|82 zi;nJ?6eW9K>Fs4W+7PP#0|VW*GxBj+4h+iJ>gtf{{k0xSdHY0Q0ebV?XsB883U~&*uMdmFvlRmE4afYwd$^XhQDF$(*=)p zfrj~!NnoZ?tWNW%1+-iHxZV)p?r=)|R07uSg+*^8 zAABR@ZJeZ@61(}5Vg>!E=20cJW=uc#tkjpQy!2r12e>Bqrllt^ES=eW?eYBHYA*Si z-QQzgdtIMVu3gs;#F|lyEzfa4Ou5LgIeNR){q(|!o5@n3o_{oT2wTGow%zoy;CWEY zezu}NMCa@6LagK;BBIpKxt8$*$9~pbOBVu+QgYA!j$|C*4r3*G@zrbP8PE8l6ho0i z|KqfuN^{s03Z{EPxpQ`a0P(F08y6X z@BRnpS4LNq$?N`k@EicHXfhs;yEv8D(;l63r6tW{y`gda_4f65NAJD{-|8Q}_HWUd zv$yxw^XPXvOxoN3N9l=~Bo-e<6rz+Ph+FIbRV2~NqGhQ5V=1f_5le%MwpbVBT8bWg@t+_Yy>9*+$o z6)%}%IkSvD3E&*FrL7^HZi@T`Z>;4bJN_=I1@5_y7WgKkHpQu}`=R9!2u|Cb>@~Jo zxSiV0JT@~G0UF`8+TH^Qq+yyV*kr`|VO*<Vp>{g~&5vM(j zt)cVN3TcGW(0%ahQRpA4XLk7!XiJEKo~zVG#BIZLy-Szg|3Q^&81te$Q|V4qPeey` z{buPLO8Swn7mbXT&Q6-y6aMbzE-$^69tK!1?CBUAxTX_XtG1$3dJO(Ira`?#-NAa3 zBO%{z?abCa6*!ZFW`^@K69b&NY$@X-|3_AvKYr~}hPQNH>|H3JfjbF@Zf(Don=5;m zC`!V{g?_bOIi6`CWQazkQ=pOSo}rteqKo7Rk!n?YR~zuvt2{~rJMHx6HrZ*3NZ$l< zU92JpIX)>$6!K_bdP$=qrPG1EJ=I#dMXC1m1i_&Xjb@MOMyq+$yYiqQb;BQ^I?MET zwXW3Po$hJt^#!3xZb7HpG8BPHDEw{t@=P7v3{U;lzx|2c&1_)JDivGlWu1T#?hyCv z2m3VBxZnPy!2ZlVOQN#LID|)!$?;HY(}kd9+<;l#${I9FLT8#_R%Y^MkK(m46&B91 zklqfZG!>VaPhZN+Ef8ezd=S5U61G}wAuSpj*jMKt-nxkMu}AEp+W}0E)X$Iqt4fFi|7frJXb{q^g)mRf%UgPwJ{Sh zenq=S)x|*$@TB!106Hf{I0jz{;_A=d9Rk#(nFHZsTL5kL%X(47k~JqRU<%*q!{vzd zp(GqY6o_mlzWa@Hm~3=@(o$}b$ib68algf7OdzGm)qg`FVfJk(m>(Vh4=Uj`AWph4 zC@;lQF=Rm21iB{i1@V5y_q5ZX`coGik9khx`nuC>I8na_9uo_>>5OTrCXnExX*kgb zdcI!^t0>DctNJiS&clKobz{bLl`Q|NQLpP)dN^*eJ;>E%Sl91t*Bw-LPC6K*H4m$a zf=hy?_?3JETZ6jv{ac^h8zl85HVz_jKSbSIo=~!{@b$!0RyQZmQ(v^QkJKMSW_xFr z{3uY7%rVsa!YE{fKlXr-!ms&)Qw?{1K zwYx4eA(Ad8AcZ2rxPn63?Js&5HGAZH;mp?1@66!s1-l>UzrIjbp1bizI$Ivs-vD@Q zgl)>68|Q*Go*t-}Ea|W*|2pkxYC?so#?v8Z`W&f5U%?frl>m^AMOC8Gl|mj+@=s+G zT(~0qw1&%c%HQ&w(HYkUFGF3YaJ;XN)7fMDsS@K9eZ>N7)m8FTvDYr3^7oM+g+Ev# z;zM+eqA*`IZo%`z!fc0_-Ilw$2G&IW(hdXtpybfr*os>Bn=tLi`7Ivj9Pt9^D&|1( zYB3tL8QY{O0=rj4DT|*!Ru-|46edW+V;Q|8$yvmtRwK4F1hW)rli9si`Vqcc^T#*q zVSE=u?q0&KRAW^|3RqE2Kd7OB$eOg1D}eqVN#7pORNeo7CTDau&fc7T*bdv-7~9y8 z`%Ms2RHlOBrN9d!nmUw3&{8wAryha~4V6sId#2MU5ifWlH7l5gg}1z$`dE@uTKUy9 zGas#fuRXv2@{-~>=ks~LU)Q68I-WlqBK!1QsjXTvO!|FX%!M!gW)!NyW#cqqkv>qe zt(Gkc72ylq$kuAbB?X(eJMXg`TLL5=i@`$&bmLubUEw#jx?k{BN|}aTNQ=ZkP`$f1CH2^#HB+d0FHBC zR-Y6B18-;B9licYKh!DO7&SnEAr{LTRht!YwfNP zDyo*cr&@uI^bA^jV>GLZ5<1*XG+yych!J;IcZu?zD}G-aQr(+R_OQ7Eu5UDpyiB{p z=&eU;}tPba7M0BVZACBxyg3~$f=Z5fkxD0fp(twc|W-aBX#%QP1V!{ z1mn~}loc{@?wBf74{WslCtNdI7%L*QK%~op>tTFz(frX4RuGD0(0(siB3qPXxcvZY~p+wa^xn@nkEPv8zNG~?Z*GdyR-SZ3;02_j} zD089hMhvZ_OQS1Vr@1L1}Zxcd5ow zfXWw)haH<#;s*^jSqe2(E-q9zrGDlN$L`yDclYdqXR{LD>p<9{t8Z=vyqPITza5V4 zbg`q|P{hsqsT9_4t^H~sAO?VD&zxC8M%gx&1Y;_k>VW<6Z!+w=WXc+{pt`q+DYm-w zESD=gqq!3-J&aasxcu6A;@hW-!l)vSmK)S8&L!2(13Z!wE*vPb zA#mR(C5%Qd?DGG`!6vk_VLG9*?-9yE3L?XX0L`*LmT!tyz746qZI1Kw40Hy77ST9i$Mv9xlP=WR+-)O#~uQuH28! zu!Gw&brbP;`)%h!=y$!!#H}Wc0oQ)H&QRg$6fEUkWc!R62ga#>79UPZA4j|0Y<;@=Llf3d{OmKTv9#A=m;kBbwrG71q*=#MRwP?v zlD*CbmT< zS_BV*IF8xzfZR?H5Js%L7HW_~?tWEvnwBIwu2G?xyCkpIiMzO7tJw3Q+-lEj2t&qN zvoc*1WyearsO^k7KS>?s^GJ6tZuAwhVgPL2jmJ#^yLj-bV~(!AE(UxsV3_E0jVhPB z?yHJT!W2p0geEevvM;2ZK6Z&xYlWCq%T=Gd3#_=Yl9cj{OZB@j%gQ17j=_LlJQ@7P zB4onxmrTBsstCSSrGCSNZ`bLKzIWWiDL!0n1xVFdjBV}&`ruPzAjhvkl95TgJQH`& z8}tt2c=uASDAvyPRQ2(|`S;Uakt;#u^^hND6{yZ?F5B}U6&M9!&SBLj+`H~=RAq+OWNrvuO2r@G30|VA zBZ;w*B!0i7pg%26g6y9Q2lSVQH3w^td+7@GutM%JtbROb=RAvxM*YfL5)G$#V^3$92iwtraYA5eL z|53IqEG8Z0FB41de#S?9&3aitD8Y7{$_-&>B|J6XQcfzZ&{>~UdJuS8=w-VyOUuNN zrfzonZz${I5SxQ5?#VrjtVW}(3m5E7-E2i#>0JJ{t1l>boa{YG3TX;5$0!%|B2Js@ z6loE|PCvg{F-jd;)j&r(#+vf~Pz3-=r{78XP`*ot+Ov|lozhcE!s_(z6(4w0`(Pqw|T5obbIuA{UNA4ZUl`2o$#W@(_*%+tI6iy|u zfCH1Fw<7q}LpzlKwBMkgMAa@}K@h@4IRZ-J|6ltk%D1%MQi>#mk8CdVs_2ZaqmDL) zh?dm21h{nR+Yq`a0Sd5BX2T5lecY~&VfZF}9mYPg;z%x@cVz9`?)PasI)CLjixqMv z0Dxgj$(YRAB?Rpe6YQ>*@3(xpao2!g8D^PoBKy)Qy!ho7`Y=ZB-Cg<8M62vHnz$qE zdKlK)(m&~7q}F#H?`FgHZ6P2Z99xyvEgP{n9Xx=`~@v~I3l|!Y*=W&R8U*C|46j#qf zzA%{fXt*MPG7j7GazN9>rh=;ol1DKU{(q!R(NqOLW*&p7vc32i07N-OU>}ICheIwD zLt4BC#nzEZ&LX~jCwmbJD!3pLB3QRjK4lFpm#neP;~*uzHdB6&c^C3;{y+m9c!c1S z^Km`dHVv~#IX}{xIPW~M^llHdYia_P6c4rQdlZ?o=v$1cDaJt3rdNJD)VG$m&p;Ba z0k1sPj#w)vvKO(crn2jH?w)54xwJO;#9JZ*o-bO|U9Mx(^}03zco)^9yfll;%9)_* ztB%UBn{XJZ3VSUnh>RV~o$zZ#8DfCWr^FoR(v4(F5+}_~j9`0-dTFRK91gzSF5-Ie za`uTOhCP>Vj`s}FZ1QZYcjj#q#~*Ira<0tRR&cB9gig*g-0syOmkG}dlUz?FC5?x55H1TILK z;BrNxCEQoEyzb;RRV5o?)a>(rEl$k1G*@Y29+^+GHweOJAIIiu1YE(+!f5Iz8-OXo z8{uaBtTuTnlc1AYf71Jz^1a)!oK4V3<5IE3EA8gkJ0Jt}|3cN+fDmygSaGilK@43w zW_jaMSh1UeP26VsCJklS$_}EDDBBwPQJWwI6nzWH6RHf0bRYK2?nrf1I=_r`#0t2r z-4DnoD8u!>*Jvr>k;fl!Ad??eWLu{Nl+I@AXrth{C!p6VI#ou{T zX#tg@9t0{c@le?)&UcCbIor2W8eTpM7qS+)(GtkCvW=ZaJFuseMfE}EiI}E!ZVgB!bt$jvQs4zRT{bFu=Sfzk5tmJ9s7Bulw~Drg zd3M+X4PC*Pu!hhtIu}Turb6gBI-5wBNO?LF!i!5`JVKd`Yr)bdklbD?Rn1}h^j7Rc z#@33dyX3!3{G$~VFLBLeaUwBpl9b@VT6Y0p+qzZt-Ds$W{bcS@G=EiT)rg7U2X4Df z*HY*Q$=Wz=ygcNo1xr;;))%4vScxCdhB(9lp?nw~5AsOd4EEnp{#-wrV^&3p$G8Q% z=xCC)wi=w!{EKJk4?M=A!Hdgy#jo_floA9#U4RR?@cjMao@_!W8z)JdfzFJl58}Yn znCjXZ+J52Y(o!3_!sv-m{|#>lp~HHQmN!q_bwf%z2OJ0(GyZ9w=DZ>ZKyEV{tVx)^ z)ifRl(@51caVNTqCCL6J&LzJimZxQU&upn2UwwiStH%@!rjBJ2;_~@)hU(10__`U7IEU?zRGxh=Um`4RLBFfHOcAwqXM`v4kF6lb4iS zivc4Eo?luQ&k4qz+yr`(CBBnzxRItY_XjZ<0lUlHVr|cPi@Z^Mu7?I>f;G)q!7-K| z$(=#g%pjMw7>AF^}pJ$gyFBJEfjVLU0qt;GxAf)(j?peQZ~cY}jhbN?ue- z+XCD43C&+@OgP1x(5E$Bq^3TsK_|3}F*HhN1;)K<5pXW~F>zODgn{ia2(8Df;E!EO zzSm;ze0B5cxIj!W#tn~9vjt{zbAF6LTZ0>q6q~onrxz>smwD)r=sck_B*47Y&&MQ5 z<1!#Y0>fmr=(Dp)Iw43~LmT>*UJ)OZCl%9VDWcp8m1r7%dY0#X)}rIe7%&)^qRyj z-qJ7!am!{9wF3LxyI zTXSsJL)q$7V^gU?z;Z$A6mGZ8K@Mh8ug1TbKXhUebQO(|Lb_kK&C!?kL7l@}UOyQ-gZtpVrRa21h-lWBYiFNaVsy~8dZnw;kL ztpFaQcruClYHVXAt~GW5j;8^%RuY#zqO zr2@Txg;v#I!fgG*q@rTTx?YZ>52Nki0uhw6*0fR{3r!{9N5^Wbvmv7g^rriAp5aP= zTkUR_-h$<>u=*?dD$3F)@U7o@&uvzd;kZwG^n86c<`&$)N-e{8U(EM<6X)TpXM-K8 zkr=BdFJa&0#J-NXIS?_Tt;rKqQQl1MCx4a_Z_>nxLE6qVx*iHzVDw8glktl_%&`Zv?_+-e89E zItxBM=OaBCLwKL$nH+l%BfunYZ;cOV3ip)fgyRq&G6F?NeRG$2CQbjhcNu3VtzOla zPa0a&1-s{Pk#AmG`;EFmba&e*xqnm*q*Hp+6G&OnZoejvJ4Q#0BECu6Q4yUmKd+8p4FTEqUUwt&P|NJm91-l{3)2-(=xTd%?6x6VX~Fw?fweZ zzn$pv;Cgjt^G_=2qd3S}FUR8401HSbA_7z&8`qt!&CXFlful60CjehOY}^c#s`E-xMk{&?`>xz<<9V~BY@BfLFEx~n6H;k|K zE04qYw4#p5j%0l~t9AHNrMmeLg)c?7VP`gQlIA0}NRS+iRuc-AN*>V7H zIEyvK_7`zRSJyOphkIj$*fIURBD)XuU#g_7>F3L*fr2Ad^)?@$L3Osg=L0!-gKJ+m z{DsVva@IVHuWD`hQ~pGp;{Xp6vqNWm!+_+b}<_r8Fs@;yOnB}M^ZJXwa0dl+p z=H|;cMdX-*5s=bYWvKPW=$G08#&otjl+|14w@{X7vNbxqd+6S?rj!cKy3#*1pk%8L zp8i97DGiTcqe8t)P4T&iWARk6gL-*|G4N^TWpHt-2yuH(Bj?%AUzc=N+HYkD-uuQR zRO~IG+sF`}W|bo{bKa-fdcLiJF6gZ-6LfYM+$_vxw(U&7b~-N*G(+-O(c3CQGwV#d z)|GN1T{l6Bt;E=@;n|#S)j!zptorr*xYU({rpVJJ0r;nTI><^FzB3u<;PjqJ%iq57fH2-UQevSM@!Eb0=y$4ZNpyl7%E(nYMr!R#N)iEsF2 zpVJCt<9l}TUEXTH5l~_zD#yG#@*z=efJL=$%;wxpqqu-&6d44aGptL?pq6W%J=<9% zcy8e-;XB{-=}fLbMC|~Ja!?XOq;JihTaI=dJj*g=*HA9?)=rR_y=dw{Tsz;tNLvP~ zqWCncYB?&axN5Y|rviY@U5rNYf2G;Bns{uDlN=I+N)UFhH*oi$@>v8bfc`ral{S~u z8tj&7RkV9P5Po3^K=&RrSp zo6Tk4J_r?ITQBYr#f1r_C3o2u{SuGR-f-$;;J2FS3@*91oExJg>|?v{drxwba-}|ep7TIq6h63 zv?t#?o|-i*JCUz+J4Omz;c|IJBswIM7245?t;j&p*wo|(i^j;O_R!4Wvx9RE^XE$f_r{(`t_y@+ z^jo?W)(+(CdZthbWE2smfR+20Y995B$gV~MJfb6Xqt*cA-r0G^0UM=3bsRd!q?(^y z51;o^iShg8_5{qY8iga2svNldM|s>z2-ZV1!VSO z)gx_5z3J;HbWoEa-0(P{O)l5uQ9m>HJc|(hF$PGa%~^_fr6v{Tl}IYd72>w7w|xyn z)+;%ts#c13zS@E)8H-#edioiy!p`|6a;=3%DiTf3w#U$sXum?8F(PiCUTvqiDx1el z-)SNA#lkpX1Ush4#t0+~PfVmqT2n)3zfqiJfjR<`8}h{Rt`^xJFCch=C?cn*8b^=( zk%dfVIz50t;<;VQezwac;q<#n2)tz*-1R%uf7I)QmI>PlZ(u^JGOCYvbgWOpOD=Dv zVF}U8Ox{KzsBN3?vK`IrN{EPdyyVswBzn&q*9La;Vox9m=sSy&r9mZb za2%UpxiHV=sDc?z;_ro}zJx5%nvN>9)S}~B# zwFa26Uq$)lMBxb_=TCA2V3j<f~X7g!t`pC_PRU&5m1}s?&M!h?>w1zh1EJe5hN5-P#n&KHWetT8IE@P#c9~m+{4&9QFRk@ zR_t5&ODXKQs-~@hTj8B(Lfc@L2SVh*I(nSQwpty@*2)4zj9}Z)%v5iZ|1UYfFBVX@ zr|EDH@ylzcS9|~FO5~jaq(c)1QhrR#ew2Z2-HqQL9VRag5unV7O|suxl%`~kgk8li zSdRb$L2OPo?U4-l3NG(&qd)tLU}O{If5kX1@*NAQ`&bqm@EB?woyWz80M_fD<8HGB zaCkxVvk&A=!TfkMf;gtrCT-3$E|&*bGYngZ4c@7`>Fpx{-uGOm(F!+!)%HnzOf``L zN-=4^R#Zg?FJYVXygZR|?6v>mbIcw=fIY`I*}F)v-#tye6j%G5%s3ySrTsy2y#|V; zE|Ke1x~cq&vuSlUdp3((=_m+@;KDnW3Qq=$EUg>BJOO||Sdo79~9i`fi`3eEW|=u<5}cRcE`Z^@xrs@EE1U31#p$+T>wY2vQgP%Y=OO`_LgHD~RH=A|{3 zR)_P$O9-O!kcqTT=8tjghX}j;6yy&0ThEXj!=pdwuOyyp^clG%`a(t=rl`DYr?E*; zx2vFFMnXeRxg~-Pw&q=dCTXgSoYsdE*x&jZi9Syf0-rdt%rA#PuCgmju_Og#3@;*b zwRrE*$=6>^i~!@dk^Ty0hnx&?nW=Nf4;eUxO+g|%uXxz4!2*8b)-9z>?7Za zL=VVEY(RQe%W!CZxIze5y!b?hMzh-fQVYAT-s2ItFvmyqx((xGYH#V-WF=)LUWo2a z>Bv#E&(KTRFOH#4>{8;YAw#C9M%m#BsZRTB&60gt3 zF}D`*r}JriHfV*F$LclTny*2reD5(04;3ap*sU8W=9uA3yO69Zq4B8ZTH)_vRrSSV zdNT#R%kAtx8hL{gp=?`s<4+&5NDWGs^4$EnGWT?;6*3r({t4rjk**i`fxfcbD#91l zYG5yhP=!{yS^{cb6R40M601t&%l7)*$`#b_1)?X;$dTB)2(`-bJW^H zTKc52*}~ex#GUm(8&N)cXY|6f7h+hRNyJZWR2w}PM3lsxXLil>CaI7`xKmTK=L{Y^1L(Kf}Q==K=9l23of zb6XW9OX;ZvPC9Q8RayAv%blYs7DeMCR8y6w*H-Mla=U(4hn{7Hn<`t@E}Fk}C~FW@ zef49xB@}5A5I_sj|GL0GVJs7tp3A3yVv*_jnN?^@+sN7&H;WY}TH%c0qEVXA@jbXf zo@!Ws3;n`mqeiUQQry7Kq0%;)UNYM@L`jt`!~35nS7v82x}iikYI-1(*Oz36_~U0W z35JL2-VC@w&Dx~{AHbak%K=Btcy;f{l8`2iH+sp-wB`?UV zyG-Bc4KQntTJvkFg<87OBa1My^anOua^wj1@LJ|n^c}K3g&hbNmOja6EBeqodU?49 zb>&s_jwwfy_?;dqi{Y=Hgc}8NWp>2sSMe<|EZ@v6cmAXE=83KT&P|?Lal(5Y{iugx z9BEh4CIo*h*g6!mk>h#xOo#~|Y4P=7Ea`Dh#g1BUE6PpB_cC~vO?dB!M^5VQOcx%Mb+n6k=$1RWrwl$VZSOJz zfo9b|Opd1*S*k^@RjXx|?B-)SP&%6)8^ zn@g8>0aaxZ9Mt6PDI6-EDt{LyAJdRv1q3Rgo$r|%+(wY?P*u1s-JAdiZ+NNewSCx9 zE-@v-k%9QoVJ50FqEtu1khS+G=4B|)yl)ZQ-R$aYY1V<`F2-6MG~LealP74oG@Vsi zItW$U6y)ZjZSR`h_j%NZ*A$E6o?oWWIU{Wvr<$qUFso+pj~>X+c7@?Ky_fQ|!j3Z5;>s9TL!)aZpv#iyz3#l|yDZUI7hI8{&eG}K=qQ2S7a5$&e?!x71F9mUH&|L&)px|vS8mU#e#O?Vu$*vc$Nn0b z^jQ=dmF4Fm00PC_`Vkswlme_|v(jOrn{eHC+j-ZCS98DnA%6FRBHQZ@?wapgdu3)g zq&HX;pDU(`A-)oTMMssyWXA?NuNNMjA4d%-!X@)c-ArYZotm`VOYSLgzdQIfDrOGn zmrY>3y9o#JX7sWBukm|xyurD2Kt=jUVh+yQ`vu7dmDF+fYIhNctjNgel6oiNrgCYtCyk!90Oir-rBrSn{$9Z% zJgb4IaC#}0ITf~`sv$9YnVy*e_3jFEW0hKBYM;O~NhoR97$pEXf_ znDVDySd>;yd1bOq_8kpq7@>;-lr&FYv?#ZgL0HUi}Pfq=}q5V#Hy)P~ruT@{({w_@xXpI(juJ3h$ zPPzwbO<$VWBj65E#yg}Oa|TU}i*`7|M4&+i+H5aP;V*8awm5FG?W{Xcl_Vc<2*Rpk z?3h(m&M)fDd^jf)hP}$lw1TUpoxZYg`;i%d+4Z=M|0o zj%Z-*$w#;BivFnw1<9Zaev0NCj%L_?`2r7Z%j8mQw?ioFX=d+gXy0k*9LXu`1{oIP zUi!8N>~zS21YP$OHtjhDen{kM9$O!jJHnq*ubx{vA0Z#f?qL$(lil4^M)t-t^s2_X z6h?=mlc(GrRv-XBmCr~L=9&wesK1FeX}sf<9l6MA5Eq_BsMI(vlI?qj{hh<=7-YWp zWT9ZaQ|&cBC!{LNT6`Hi2uLL_7|hBY3u_l`yod_296vXsa`Ap zr%>QL^BHRDg4xb^{}ZU|kkNm$4n1*AiCh~iv)IWH1Wf42g2{v>Od=j4#Ng+eY?ml!>(_Amd@Z(g&l( z4a}tSwwRim?CSyndRaRA91R@973I}qwrMVcA7A+^7FcEJJpr=|EuV%H^uLcLrC zI8`+k&^}V`&^8vE1G)v$mPhA7sq@#Wr_W$FU6iahc&xBOtfpsO!ocb^?C%ur6Pk{W z*q&UXaw8@IC9W8K-o_xkxj$745}wlOr#ixf487TB=F*5y=8m&o4!+Lfk2hdRxrScf zOr3ad$b}b_#26?^fyMCJ-x3^oMOO+f&7o>nPUaTf=P)3au2Bd69;tgEm39N=f=!Mfs=DF^w1#yL~-cIg#l3fVGj)@2j61R4?*gh>ylmJsEa zDOA>nTTBKQXVW*xOzS(}8AJw?ArsGQm5zQEl-r_Vbor@#V-;IvhACp>2pO|IM3r*e z=-S;}s(*y-**LsM-{w+olx&Q&ty3B*G&S(CX1NP!k|J-gNRdIv9ZC#=y-a!2W@tg$ zS(mwbxq6iATGPaLrgpvy%hW-ib9E7P;mXM#+(ov*0%)q?DU$X4!ZmOh2!qo{#=UHj4-BNU zk@SK^f0=8w?di$G%J}qf{`{B93M*ug^o@;vw`0Zr;g!;2VAThrxxN%ULO@1C`&!zs zK(nwYPFOU*i?6M7FqA$5e1Irc+Gz2APSw$xO`VaX_FlW_)>q;7j@+EJ@RR_g_1P%Dayx+ zUS*G20A5w?bnvF!_*}?xJ!2+&Hq)vwq;%9hP36%v*&#GvnX7)9^aEg2xE)|>9uoi`N<)b~wFHS(By8JMj zJ52qexNY(;i6@pSzv*o6hJqLMzfP}BrXg{#CfD<}(NUC^qMpfpPc;)oL?S@EOUj61 zwNXH#j50F=>T&B3U{1-Gv|yAk9A)Qq0ham8 zhtzR0`#6q{TCBzR^6satNpPwZaeJ4!Ym_eLsj*OuHKGMBZ49Xt+7n8*%%<#7g+Q4m zcVzP+P09i*t@VhQWFEj*6xCC8))3VEFWrpQ-i_R=_{{*QulYZqe<04WP}M|vP@3|a zwc{a=n4>>6!m743)+!3n(6W+90mk;TOlHxz)u@r ze_Xc?Z8|y#AYUEh?ix^(?mbG+TIClk;tJE2qx89!8w#o&q>v%@SFV!1(G~en_>(t= z%WrGw#RzT@4Cle$;MFPUyhW)!>5H!7(YyFyE`*XiJ~qa%0wFe?8E!EU%d(f-$p+gT z^XwihX~{@mX+^G!j*gF_&&}+qNcTcRvjs8KDi%J4qWTyPS6niWn_+uJn?7OpE1PEm zU;O&+n`3&;L$y=sG9J6k%+y%F2;F0-KsxjvzXxpL}uLkSx&S7 z{2HuN;znIE(cu_s>nQ+yr@lyXTyxKVQPoi$ZR?%ve;r!u8$T^%euJDv0mo}ECFg%; zvLC@37KbUN8ZM#1=bIsAmYj+XR!X$qFe#%f?76dkKTi3Fm2R_m1NZ|}7mmHMztF)9 z=ad~LxY%cg(v?s+T#VAe10^1#<`xA@s++1N2}R)x{q(w?Wrl%tHeO&$6@GrWj0t22 zjzZ8cZT}UHY(J#D+Lsz4^Um>$bLoR99y7&$CP#>!Gff%AsfG%W_ZKXLBITDfITbio z)`a2SObHWjA{dw+PE-HIQsU^L$d_!Pv1V>s^tVpPA8p?Ny)tE-M-Vt0GYC-;)#v%n zO?mUBhw)d-Jhq$p^j18pz`~|rSGe;l7JBLt(d@0UYk`g zk*+)Vd-0{0sJD(v_2|#sVd6agB)NNckhh$=<^aWM=?yL9c?0Y7)^JZ)bsui6oXe2DtcqqP4Vxoz18m)esVSr@ z=C?N4K*+B0D2k4o#41st8cn0bTkn&knd&f=XCm%vwTbqJbDP)}Z{QU@mA^uX>PCI@ zs65<%Up_t#X}HU^@)z;Hg$mF~)1Uw5ML;ob`YuHO2Dd-&H|{oN#Bm=}L^7@K&e5$Z zIuwF2ICLm=%VIj4aPpd-d|J;x#wdDs3XP8up1(hfdiP@)A^c*QWfcmj)1-9<Da|J%L|eyFN#(Y*~lpiW}5BiUJ(06PS=xmY^V72{zS`6uH>MoubEr3F_do1AyYc7zzge1DZU9 z21^)FF(NxdX*lCYi`3tZbDJrF4zAYNngcF4VUdA;4|X0n>+#hh{BQ^|m}zi{eI|Uv z&qpDGQuj&c6>cvpu~XYn2=iVSY*PeM_oD`fY%ipjh=Ni?gxMZqckO&>O7#W!0N(Cj zUGF1XVQL^1mAyDrwGJV@ht#xEL*azCx@(;Opb~E5MI?$U*zs)c}MxF(>2{Rz_xs-Y7(p~tc z_fQuK+!^!nkC{%#W929WKRj&AP@Uy|aIPEd9U%dhDc(iq5NDlOQ_7vE-*V;FM3(G= z>h(ZeLg=medF25=@f;fdZ*D2`#0V?>Ir3_ka3`~bwKMoHWeq~2kuINVgx~Zuyo|YW zc0YJ+SfN6pq4cdrvGwKE0z0lF-*CPtUfz(%%F^hRhC5+fI|QyL;6t4<6xz4Zb{fXA zdo$H&Z-;m!5$4dZ!#w)>|CHWA0l4N(+~7Cx>juXI`heUo^35hTQc!~8p(LN=PqC#~ zXoCjSTHf3Kq3l*TKj8%3pN3R&1#!qBci9L@%G;jt>dWrMl4|Jqk50;ZksD6q3|zGG z$y5OyK%MW}+2#V2N6cR}5l(jz@#2Sxg$bT15VE07l%1+%KTf1YA#CW=81~o9lRigb zaISZhA^mV;w^jo!ljL(~-*Y!@pT%;!(%;&Ei0jNKs?>=k>G@w#W*X?zjUmV}=+U{7 zEejFSTD>$;62IhzW+|ISLqF4?Uh7LklSZK8^W$!FS)DGrPY5cbyvFL&v^`9X$WsIl zwTxy)p`!pp$irD=u^>K;o}Lvj$#-1fy7i~908^*1N)69Ub6Mz#$%Kux*Gz zI`Hvpvxudzwyx1PdecEs=oa)Q)A#0#^2yN>5Uijs)P1A~TTN+gtF^7fF)oSa-KP2w z+jsyj%D$nhX+mX7E_DrO*-vx3lqiSlBvy|tbVb9)nDgFBy6*Ch=Zmk)dl;YlP}US6 z5BA3a^r?c3D+B3QwJ=8sh#;-6f zE^f@IJ6#qtQq2`@?`~VrUzOUY2Zys&C5tsB-Q(em@=XUHJE39Zx-+^STr`E-4VUIx zl`b9#EZBQVs&qMPX2$`$e@k<5x>DY}R+*_)EdjM{ijkj9QH@Ty@$hkuB~?Kz?XWC` zUh1lfqS?egGODB0{}Kvvx6`2r2(NmD(HJ{lcgEYvmoy=~M*{7KsDrC%Lh9VLnm?7> zFR;x;CY%Ai=6yU>Jr^Gos3cTC5W|B??kbIo6EZHDl(9*yK7uQd!%h6)@7T$%wqNb4EnE(} zH(P9n2^x2zbALwXC$uQrQ0B3oD=(1`i0sWUJ9vW9z2mk-Rj?t0DXrT9ofQ7_{yTIZk7Fl#7xK|hr?cIDoZ-*frAeDN^(6SI6_ zgyB&gaPO@uqx+ORz$#+t-GP~##{m#G5<;2h)8#24rpFLbUZ|T-V@Ku<1S2>WFz-m0 z)PxWh4?X3eb6OGBm$YG%xj9sm1*h9`9SqNMRw=za(btvl@+<8Ng}~hzNuESuh2L?) zq_VcZ37OgU&XVnPVJ0$116Ymy8XKW=;XuncgDD&pylr^_{&*2P9xAm=s9owp1R)K; zpI1%d01B1457~}X2!PhVUHS#%`vdiU{@G5hql7DRLd0J)%GryoPyr3td&N9n{wWpi z_=!)^SRL05;Z${$YjYt1dJf>hDR)0ZWHyXZw)LuK^4_Od#`malis8!C9)=E(lVJ-y zyAVS7qklfkKkI0#p7eu!uhIjj+}lb$Q3(+aWu5ZG4A3{#9!LS31@l?mQ{)I&ZscP= z=0|b1hZ%4$A%yw#mZifrzKG=v3J|t7}zE2P{f8XnMT>tl?A8f{D!Rs zf-gX?35`v|FS;zLA~ zvo-^dZ``f%-UlpYD3WFPva9lPM?hR6uMCrr=rW^#6>7X;{5}(fCtw{oHO4!_wsMdG zpvYn4b?RKm57;YT&V&AKjxs6=0V}y|hM99J1_M823Z7oppa zVSC=-zu&?d7xPEUZ6^(Mg0WyHozPPEOnjU(9HWv<$wv`AW<7_`pYDWn5*7BagNfc$ zSNL{t5!;IWt{+O5J*XSTmA%({oNru@r5j`xdu1>^)fEPG192(0cO*A@74qVxPh-6jw1blTq6(Y67a_r&jG zj?QpeM=^^Id_=}*v8{ON?_7dnf!tQVnT;LCEgiOv-N>gGlc;u<5*tTp%<(yQL;h~e zu9M{QkVyQbFKLjWbdxjB!e5+0#Y}~zX-eaBMs^=(86YAYFPCj zG(Mbr(($ci+yor7Q&FuC=t|zT$;0~bTX%2YhI;w4W4Rf&)?NVGHq{{ztD7s6gu>v(4?sU&a+7(9`_36)#VN3yu9Jft(r6MHa-{CCjRto>f5Wa>@K2eX^8&YPOxt1gZS>X!B@?@=RGVbL-gu>*!o#nmWTcehLRYz~QmH zmIJ;mm6k$8L_}pWY}KP_!8+o=J7T4PqA(Q=11sw2CMq&A=U@>TSrExK7uMPGxgjmRU-SBY>+%Gaz%p&g9m`LV$ zqY3j52{n-UlB)5LrF^|qie7fP@g9weCqdT2+220+l7`0{G&2pkX?LPHtS7|ecl@7C z_{k;UU&F)}%i0f|3n}qAI`iseL%xMhc@J_qUTWT(!fw&Z7nEy}0S+zbzUqIhM_J+S z+9_QkzmP4T%xid`VzY!cWq4Sp&-rH@?s7E+O5-9WY6bEH_?^rTqtXa*$9Oh20DyLI707EW}#%72mgEW(|XEiY!CQ|s*GK%~~I6MPQ;z=}QZ|-1S zr?JtllCDsluVxBosI7!v7%g`1L$=02uN$Okr@SEr?1~)I2y?A!h@Z75&?O0NRkl0Y z2K6-8)u4fImC%uPMEaWEeVh*3-@OE(YDkP?c|{781QXke`l<^TLLnU=?e8@p-<bef9;_LNO^M@9S4`X`3X0b9h8o61{>f=?+(knm;anJ!rdBbWE5=<97a zrt7S!t*k!_7f>Br_lAt_x0@a%^ru1iFQl}QH0HzZTZX>qj`qY>^X}q=D>+rE~I9;{WnBb~d%HFMcV zMNltQb7Thp(Lq=N}vNY*B+i7QijVJ$h=S-nP>578!<0#@-UQHA9 zonNp*>nIc!(I8U+4(w=mTQ))r{&y!k=`^v9v)(RGn~sicr{x&+nK4iPjQcm}K|A{@ zKpsT`@|f4JvboRmdI0M71a-5gFOhYd(qpHGvsYb`a5z!yY?>1mS7a+cj0nQ|me3|9 zB-h>N6;lKkkIa{r7gx~bRGmp06a2xQC}FeW@X08t&rq`&1RO{qCg7rJ_6Fokoi$31=*pWjaCN zcT=#gF`-q=sbtS`{qJD`QyiKR`iZRJm1*(n5RyTD-$wf@=vad0+BirlFj4g^0FRtY zAY65NFllj|WwuhCf{eq}@(QZWqSxL5puop!cc;85&Tj!;PdppMyQjt_U&Gw5hLUD0 zM~p%j;=H;1IYcm(i$)P6_%;*k*=5Na_yLDa*9<6ZdY}S}7LwD0hZlFc76;wppnD`? OqUE1E0$yczg#Q4#=#Dx7 literal 0 HcmV?d00001 diff --git a/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e3305727e1ed951890bdbc6332a55a77e410b3c73dbb6da779a49cde1537d2990000019f38b6a51a b/packages/data-tables-worker/.wrangler/state/v3/cache/default/blobs/e3305727e1ed951890bdbc6332a55a77e410b3c73dbb6da779a49cde1537d2990000019f38b6a51a new file mode 100644 index 0000000000000000000000000000000000000000..537d14ddc8962ae4fb6131d3daa9b4d314d4b8fa GIT binary patch literal 524288 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%0DTP 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.Lhy!AG&)t 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