@carto/ps-react-maps 3.11.10 → 3.11.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +744 -703
- package/dist/index.js.map +1 -1
- package/dist/types/editable/measurement-tools/const.d.ts +10 -0
- package/dist/types/editable/measurement-tools/modes/custom-measurement-area.class.d.ts +3 -1
- package/dist/types/editable/measurement-tools/utils.d.ts +3 -2
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/const.ts","../src/helpers.ts","../src/maps/map-libre.tsx","../src/maps/deck-overlay.tsx","../src/maps/google-maps.tsx","../src/maps/deckgl.tsx","../src/providers/map/const.ts","../../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js","../src/providers/map/store.ts","../src/providers/map/provider.tsx","../src/basemap-controls.tsx","../src/editable/const.ts","../src/editable/lasso-tools/modes/custom-edit-mode.class.tsx","../src/editable/lasso-tools/const.ts","../src/providers/layers/store.ts","../src/editable/custom-editable-geojson-layer.tsx","../src/editable/lasso-tools/layer.tsx","../src/editable/lasso-tools/provider/store.ts","../src/editable/lasso-tools/provider/provider.tsx","../src/editable/lasso-tools/lasso-tools-control.tsx","../src/editable/lasso-tools/util.ts","../src/editable/measurement-tools/utils.ts","../src/editable/measurement-tools/modes/custom-measurement-area.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-buffer.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-distance.class.tsx","../src/editable/measurement-tools/const.ts","../src/use-event-manager.ts","../src/editable/lasso-tools/lasso-tools.tsx","../src/editable/measurement-tools/layer.tsx","../src/editable/measurement-tools/provider/store.ts","../src/editable/measurement-tools/provider/provider.tsx","../src/editable/measurement-tools/use-measurement-tools.tsx","../src/editable/measurement-tools/measurement-tools-control.tsx","../src/editable/measurement-tools/measurement-tools.tsx","../src/use-layers.ts","../src/utils/sort-layers.ts","../src/maps/map.tsx","../../../node_modules/.pnpm/cross-fetch@4.1.0/node_modules/cross-fetch/dist/browser-ponyfill.js","../../services/dist/index.js","../src/providers/sources/store.ts","../src/models/use-filters-merged.tsx","../src/models/use-widget-model.ts","../src/models/utils/get-relevant-headers.tsx","../src/models/use-common-model.ts","../src/models/categories.tsx","../src/models/features.tsx","../src/models/formula.tsx","../src/models/histogram.tsx","../src/models/range.tsx","../src/models/scatter.tsx","../src/models/table.tsx","../src/models/time-series.tsx","../src/providers/sources/const.ts","../src/provider.tsx","../src/use-legend.ts","../src/use-map-screenshot.ts","../src/use-spatial-filter.ts","../src/utils/object-to-html/const.ts","../src/utils/object-to-html/object-to-html.contants.ts","../src/utils/object-to-html/object-to-html.ts","../src/utils/mapping-meridian.ts","../src/zoom-controls.tsx","../src/stats/get-query-stats.ts","../src/stats/get-table-stats.ts","../src/stats/use-stats.tsx"],"sourcesContent":["import type { BasemapKey, BasemapType } from './types'\n\n/**\n * Google Maps basemap types.\n */\nexport const GmapsBasemap = {\n roadmap: 'roadmap',\n satellite: 'satellite',\n hybrid: 'hybrid',\n} as const\n\n/**\n * CARTO basemap names.\n */\nexport const CartoBasemaps = {\n darkMatter: 'darkMatter',\n positron: 'positron',\n voyager: 'voyager',\n} as const\n\nexport const CartoBasemapURL = {\n [CartoBasemaps.positron]:\n 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',\n [CartoBasemaps.voyager]:\n 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',\n [CartoBasemaps.darkMatter]:\n 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',\n}\n\nexport const MapsTypes = {\n maplibre: 'maplibre',\n googleMaps: 'google-maps',\n}\n\nexport const MAPS_BASEMAP: Record<\n BasemapKey,\n {\n url?: string\n dark?: boolean\n type: BasemapType\n }\n> = {\n [CartoBasemaps.positron]: {\n url: CartoBasemapURL[CartoBasemaps.positron],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.voyager]: {\n url: CartoBasemapURL[CartoBasemaps.voyager],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.darkMatter]: {\n url: CartoBasemapURL[CartoBasemaps.darkMatter],\n type: MapsTypes.maplibre,\n dark: true,\n },\n [GmapsBasemap.roadmap]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.satellite]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.hybrid]: {\n type: MapsTypes.googleMaps,\n },\n}\n","import type { Tooltip } from './types'\n\nexport function getCursorDefault({\n isDragging,\n isHovering,\n}: {\n isHovering: boolean\n isDragging: boolean\n}) {\n return isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab'\n}\n\nexport function getTooltipDefault(info: Tooltip) {\n if (!info.html) return null\n\n return {\n html: `<div class='map-tooltip__content'>${info.html}</div>`,\n style: {\n padding: '0',\n background: 'none',\n },\n }\n}\n","import { Map, MapProvider, useMap as useMapLibre } from 'react-map-gl/maplibre'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport DeckGL from '@deck.gl/react'\nimport { useImperativeHandle, useMemo, type RefObject } from 'react'\n\nexport function MapLibre({\n instanceRef,\n overlayRef,\n controller,\n id,\n layers,\n mapStyle,\n parameters,\n getCursor,\n getTooltip,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n mapStyle: string | undefined\n}) {\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n return (\n <MapProvider>\n <div className='deckgl-map'>\n <DeckGL\n controller={controller}\n id={id}\n ref={instanceRef as RefObject<InstanceRef>}\n layers={_layers}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={() =>\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }\n onViewStateChange={onViewStateChange}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n >\n <MapReferences overlayRef={overlayRef} />\n <Map\n reuseMaps={false}\n mapStyle={mapStyle}\n onLoad={() =>\n onLoad({\n type: 'load',\n value: true,\n })\n }\n onRender={() => {\n const $el = document.querySelector('.maplibregl-compact-show')\n $el?.classList.remove('maplibregl-compact-show')\n }}\n />\n </DeckGL>\n </div>\n </MapProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const { default: mapLibre } = useMapLibre()\n\n useImperativeHandle(overlayRef, () => {\n return mapLibre\n }, [mapLibre])\n\n return null\n}\n","import { useMap } from '@vis.gl/react-google-maps'\nimport { useEffect, useImperativeHandle, useMemo } from 'react'\n\nimport {\n GoogleMapsOverlay,\n type GoogleMapsOverlayProps,\n} from '@deck.gl/google-maps'\nimport type { DeckGLComponentProps } from '../types'\n\n/**\n * A very simple implementation of a component that renders a list of deck.gl layers\n * via the GoogleMapsOverlay into the <Map> component containing it.\n */\nexport const DeckGlOverlay = (\n props: GoogleMapsOverlayProps & {\n instanceRef?: DeckGLComponentProps['instanceRef']\n },\n) => {\n // the GoogleMapsOverlay can persist throughout the lifetime of the DeckGlOverlay\n const deck = useMemo(\n () =>\n new GoogleMapsOverlay({\n interleaved: true,\n }),\n [],\n )\n\n // add the overlay to the map once the map is available\n const map = useMap()\n\n useImperativeHandle(\n props.instanceRef,\n () => {\n return deck\n },\n [deck],\n )\n\n useEffect(() => {\n deck.setMap(map)\n\n return () => {\n deck.finalize()\n }\n }, [deck, map])\n\n // whenever the rendered data changes, the layers will be updated\n useEffect(() => {\n deck.setProps(props)\n }, [deck, props])\n\n // no dom rendered by this component\n return null\n}\n","import {\n APIProvider,\n Map,\n useMap,\n type MapCameraChangedEvent,\n} from '@vis.gl/react-google-maps'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport { useCallback, useImperativeHandle, useMemo } from 'react'\nimport { DeckGlOverlay } from './deck-overlay'\nimport type { MapViewState, ViewStateChangeParameters } from '@deck.gl/core'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\nimport type { ControllerOptions } from 'node_modules/@deck.gl/core/dist/controllers/controller'\n\nexport function GoogleMaps({\n id,\n instanceRef,\n basemap,\n layers,\n gmapsProps: { apiKey, APIProviderProps, ..._gmapsProps } = { apiKey: '' },\n overlayRef,\n parameters,\n controller,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n}) {\n const _controller: ControllerOptions = useMemo(() => {\n if (typeof controller === 'boolean') {\n return {\n dragPan: controller,\n doubleClickZoom: controller,\n scrollZoom: controller,\n }\n }\n const _controller = controller as ControllerOptions\n\n return {\n dragPan: _controller?.dragPan ?? true,\n doubleClickZoom: _controller?.doubleClickZoom ?? true,\n scrollZoom: _controller?.scrollZoom ?? true,\n }\n }, [controller])\n\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n const mappingGmapsToDeck = useCallback(\n ({ detail: { center, zoom, heading, tilt } }: MapCameraChangedEvent) => ({\n latitude: center.lat,\n longitude: center.lng,\n zoom: zoom - 1,\n bearing: heading,\n pitch: tilt,\n }),\n [],\n )\n\n const handleViewStateChange = useCallback(\n (newViewState: MapViewState) => {\n const current = instanceRef?.current as GoogleMapsOverlay\n // @ts-expect-error accessing protected props\n const deck = current?._deck as InstanceRef['deck']\n const viewState = {\n // @ts-expect-error accessing protected props\n ...deck?.viewState,\n ...newViewState,\n }\n const _viewState: MapViewState = {\n latitude: viewState.latitude,\n longitude: viewState.longitude,\n zoom: viewState.zoom,\n pitch: viewState.pitch,\n bearing: viewState.bearing,\n // @ts-expect-error - `width` and `height` is not in the types\n width: deck?.width,\n height: deck?.height,\n }\n onViewStateChange?.({\n viewState: _viewState,\n interactionState: {\n isZooming: true,\n },\n } as ViewStateChangeParameters<MapViewState>)\n },\n [instanceRef, onViewStateChange],\n )\n\n return (\n <APIProvider apiKey={apiKey} {...APIProviderProps}>\n <div className='deckgl-map'>\n <Map\n id={id}\n mapTypeId={basemap}\n disableDefaultUI={true}\n {..._gmapsProps}\n center={{\n lat: rest.initialViewState?.latitude ?? 0,\n lng: rest.initialViewState?.longitude ?? 0,\n }}\n zoom={(rest.initialViewState?.zoom ?? 0) + 1}\n tilt={rest.initialViewState?.pitch}\n heading={rest.initialViewState?.bearing}\n onTilesLoaded={() => {\n onLoad({\n type: 'load',\n value: true,\n })\n handleViewStateChange(rest.initialViewState!)\n }}\n onBoundsChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n onZoomChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n scrollwheel={\n typeof _controller.scrollZoom === 'boolean'\n ? _controller.scrollZoom\n : !!_controller.scrollZoom\n }\n gestureHandling={!_controller.dragPan ? 'none' : 'greedy'}\n disableDoubleClickZoom={!_controller.doubleClickZoom}\n >\n <MapReferences id={id} overlayRef={overlayRef} />\n <DeckGlOverlay\n id={id}\n instanceRef={instanceRef}\n layers={_layers}\n onLoad={() => {\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n />\n </Map>\n </div>\n </APIProvider>\n )\n}\n\nfunction MapReferences({\n id,\n overlayRef,\n}: {\n id: DeckGLComponentProps['id']\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const gmaps = useMap(id)!\n\n useImperativeHandle(overlayRef, () => {\n return gmaps\n }, [gmaps])\n\n return null\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { CartoBasemaps, MAPS_BASEMAP, MapsTypes } from '../const'\nimport type { DeckGLComponentProps } from '../types'\nimport { getCursorDefault, getTooltipDefault } from '../helpers'\nimport { MapLibre } from '../maps/map-libre'\nimport { GoogleMaps } from '../maps/google-maps'\n\nexport function DeckGLComponent({\n instanceRef,\n overlayRef,\n basemap = CartoBasemaps.positron,\n controller = true,\n id = 'deck-gl-map',\n layers = [],\n gmapsProps,\n getCursor = getCursorDefault,\n getTooltip = getTooltipDefault,\n onLoad,\n onViewStateChange = () => null,\n ...rest\n}: DeckGLComponentProps) {\n const [isLoaded, setLoaded] = useState([false, false])\n\n const { url: mapStyle, type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const handleLoad = useCallback(\n (e: { type: 'deckgl' | 'load'; value: boolean }) => {\n const index = e.type === 'deckgl' ? 0 : 1\n setLoaded((state) =>\n state.map((loaded, i) => (i === index ? e.value : loaded)),\n )\n },\n [],\n )\n\n useEffect(() => {\n return () => {\n handleLoad({\n type: 'load',\n value: false,\n })\n handleLoad({\n type: 'deckgl',\n value: false,\n })\n }\n }, [handleLoad])\n\n useEffect(() => {\n const isAllLoaded = isLoaded.every((loaded) => loaded)\n onLoad?.(isAllLoaded)\n }, [isLoaded, onLoad])\n\n if (isGmaps) {\n return (\n <GoogleMaps\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n basemap={basemap}\n layers={layers}\n gmapsProps={gmapsProps}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n }\n\n return (\n <MapLibre\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n layers={layers}\n mapStyle={mapStyle}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n}\n","import { FlyToInterpolator, type MapViewState } from '@deck.gl/core'\n\nexport const transitionFlyConfig: Pick<\n MapViewState,\n 'transitionDuration' | 'transitionInterpolator'\n> = {\n transitionDuration: 'auto',\n transitionInterpolator: new FlyToInterpolator({\n curve: 2,\n }),\n}\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { createStore, type StateCreator } from 'zustand'\nimport { WebMercatorViewport, type MapViewState } from '@deck.gl/core'\nimport type {\n CommonSlice,\n MapProviderProps,\n MapStore,\n MapSlice,\n ViewStateSlice,\n AreLayerLoadedSlice,\n SpatialFilterSlice,\n} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { DeckGLComponentProps, InstanceRef } from '../../types'\nimport { MAPS_BASEMAP } from '../../const'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\nimport deepmerge from 'deepmerge'\n\nconst createMapSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id, basemap } = curr\n acc[id] = {\n isLoaded: false,\n basemap,\n instanceRef: {\n current: {} as InstanceRef,\n },\n overlayRef: {\n current: null,\n },\n layers: curr.layers ?? [],\n controller: curr.controller ?? true,\n }\n return acc\n },\n {} as MapSlice['maps'],\n )\n\n return ((set, get) => ({\n maps: defaultProps,\n setBasemap: (id, basemap) =>\n set((state) => {\n const { type: currentType } = MAPS_BASEMAP[state.maps[id]!.basemap]\n const { type: newType } = MAPS_BASEMAP[basemap]\n\n const isLoaded = currentType === newType && !!state.maps[id]?.isLoaded\n\n return {\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n basemap,\n },\n },\n }\n }),\n setLoad: (id, isLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n },\n },\n })),\n getOverlayInstance: (id) => {\n const store = get()\n return store.maps[id]?.overlayRef?.current\n },\n getDeckInstance: (id) => {\n const store = get()\n const current = store.maps[id]?.instanceRef?.current\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (\n // @ts-expect-error accessing protected props\n (current as InstanceRef)?.deck ?? (current as GoogleMapsOverlay)._deck\n )\n },\n getViewState: (id) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n // @ts-expect-error - viewState is not in the types\n return deck?.viewState\n },\n getViewports: (id, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)\n },\n getViewport: (id, index = 0, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)?.[index]\n },\n getBounds: (id, bounds, options) => {\n const store = get()\n if (!store.maps?.[id]?.isLoaded) return\n\n const viewState = store.getViewState(id)\n if (!viewState) return\n\n const viewport = new WebMercatorViewport(viewState)\n\n const newBounds = viewport.fitBounds(bounds, options?.boundsOptions)\n\n return {\n latitude: newBounds.latitude,\n longitude: newBounds.longitude,\n zoom: newBounds.zoom,\n ...options?.viewStateOptions,\n }\n },\n addLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n\n const set = new Set([..._layers, ...layers])\n\n maps[id] = {\n ...maps[id]!,\n layers: [...set],\n }\n return { maps }\n }),\n removeLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n maps[id] = {\n ...maps[id]!,\n layers: _layers.filter((layer) => !layers.includes(layer)),\n }\n return { maps }\n }),\n setController: (id, controller) =>\n set((state) => {\n const currentController = state.maps[id]?.controller ?? {}\n\n const _currentController =\n typeof currentController === 'boolean' ? {} : currentController\n\n const newController =\n !controller || typeof controller === 'boolean'\n ? controller\n : deepmerge<DeckGLComponentProps['controller']>(\n _currentController,\n controller,\n )\n\n return {\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n controller: newController,\n },\n },\n }\n }),\n })) as StateCreator<MapSlice, [], [], MapSlice>\n}\n\nconst createAreLayersLoaded = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id } = curr\n acc[id] = false\n return acc\n },\n {} as AreLayerLoadedSlice['areLayersLoaded'],\n )\n\n return ((set) => ({\n areLayersLoaded: defaultProps,\n setLayersLoad: (id, isLoaded) =>\n set((state) => ({\n areLayersLoaded: {\n ...state.areLayersLoaded,\n [id]: isLoaded,\n },\n })),\n })) as StateCreator<AreLayerLoadedSlice, [], [], AreLayerLoadedSlice>\n}\n\nconst createViewStateSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const initialViewState = curr.initialViewState ?? curr.viewState\n acc.initialViewStates[curr.id] = initialViewState\n acc.viewStates[curr.id] = initialViewState\n acc.viewports[curr.id] = null\n return acc\n },\n {\n viewStates: {} as ViewStateSlice['viewStates'],\n viewports: {} as ViewStateSlice['viewports'],\n initialViewStates: {} as ViewStateSlice['initialViewStates'],\n },\n )\n\n return ((set, get) => ({\n viewports: defaultProps.viewports,\n initialViewStates: defaultProps.initialViewStates,\n updateViewPort: (id) => {\n const store = get() as MapStore\n if (!store.maps[id]?.isLoaded) return\n\n const vp = new WebMercatorViewport(store.viewStates[id]!)\n set((state) => ({\n viewports: {\n ...state.viewports,\n [id]: vp,\n },\n }))\n },\n viewStates: defaultProps.viewStates,\n setViewState: (id, viewState) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id],\n ...viewState,\n },\n },\n })),\n setInitialViewState: (id, viewState) =>\n set((state) => ({\n initialViewStates: {\n ...state.initialViewStates,\n [id]: viewState,\n },\n })),\n setZoom: (id, zoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n zoom,\n },\n },\n })),\n setMinZoom: (id, minZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n minZoom,\n },\n },\n })),\n setMaxZoom: (id, maxZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n maxZoom,\n },\n },\n })),\n })) as StateCreator<ViewStateSlice, [], [], ViewStateSlice>\n}\n\nconst createCommonSlice = ((_, get) => ({\n fitBounds: (id, bounds, options) => {\n const store = get()\n const newViewState = store.getBounds(id, bounds, options)\n\n if (!newViewState) return\n\n store.setViewState(id, newViewState)\n store.updateViewPort(id)\n },\n flyTo: (id, target, options = {}) => {\n const store = get()\n\n const viewStateOptions = {\n ...transitionFlyConfig,\n ...options?.viewStateOptions,\n }\n\n // Merge with current view state and options\n const finalViewState = {\n ...target,\n ...viewStateOptions,\n } as MapViewState\n store.setViewState(id, finalViewState)\n store.updateViewPort(id)\n },\n loadInitialViewState: (id, initialViewState) => {\n const store = get()\n store.setInitialViewState(id, initialViewState)\n store.flyTo(id, initialViewState, {\n viewStateOptions: { transitionDuration: 0 },\n })\n },\n resetViewState: (id: string) => {\n const store = get()\n const initialViewStates = store.initialViewStates\n if (!initialViewStates[id]) return\n store.flyTo(id, initialViewStates[id])\n },\n})) as StateCreator<MapStore, [], [], CommonSlice>\n\nconst createSpatialFilterSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n acc[curr.id] = curr.spatialFilter ?? {} // Initialize every mapId to an empty record\n return acc\n },\n {} as SpatialFilterSlice['spatialFilter'],\n )\n return ((set) => ({\n spatialFilter: defaultProps,\n setSpatialFilter: (mapId, id, value) => {\n set((state) => {\n const spatialFilter = structuredClone(state.spatialFilter)\n if (value === null || value === undefined) {\n if (spatialFilter[mapId]) {\n delete spatialFilter[mapId][id]\n }\n } else {\n spatialFilter[mapId] = {\n ...spatialFilter[mapId],\n [id]: value,\n }\n }\n\n return {\n spatialFilter,\n }\n })\n },\n })) as StateCreator<SpatialFilterSlice, [], [], SpatialFilterSlice>\n}\n\nexport const createMapStore = (initProps: MapProviderProps['values']) => {\n return createStore<MapStore>()((...args) => {\n return {\n ...createMapSlice(initProps)(...args),\n ...createAreLayersLoaded(initProps)(...args),\n ...createViewStateSlice(initProps)(...args),\n ...createSpatialFilterSlice(initProps)(...args),\n ...createCommonSlice(...args),\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMapStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { MapProviderProps, MapStore } from './types'\n\nconst MapContext = createContext<StoreApi<MapStore>>({} as StoreApi<MapStore>)\n\nexport function MapProvider({\n children,\n values,\n}: PropsWithChildren<MapProviderProps>) {\n const [storeRef] = useState(createMapStore(values))\n\n return <MapContext.Provider value={storeRef}>{children}</MapContext.Provider>\n}\n\nexport function useMapStore<T>(selector: (state: MapStore) => T): T {\n const store = useContext(MapContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MapProvider in the tree')\n return useStore(store, selector)\n}\n","import type { BasemapsControlsProps, MapComponentProps } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function BasemapsControls({ children, mapId }: BasemapsControlsProps) {\n const { basemap } = useMapStore((state) => state.maps[mapId]!)\n const setBasemap = useMapStore((state) => state.setBasemap)\n\n return children({\n basemap,\n setBasemap: useCallback(\n (basemap: NonNullable<MapComponentProps['basemap']>) =>\n setBasemap(mapId, basemap),\n [setBasemap, mapId],\n ),\n })\n}\n","export const EditType = {\n addFeature: 'addFeature',\n addTentativePosition: 'addTentativePosition',\n updateTentativeFeature: 'updateTentativeFeature',\n cancel: 'cancelFeature',\n finish: 'finish',\n addPosition: 'addPosition',\n} as const\n","import {\n CompositeMode,\n ModifyMode,\n TranslateMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport { EditType } from '../../../editable/const'\n\nexport class CustomCompositeEditMode extends CompositeMode {\n constructor() {\n super([new TranslateMode(), new ModifyMode()])\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleKeyUp(event, props)\n if (event.key === 'Enter') {\n this.resetClickSequence()\n props.onEdit({\n updatedData: props.data,\n editType: EditType.addFeature,\n editContext: {},\n })\n }\n }\n}\n","import {\n DrawPolygonMode,\n DrawRectangleMode,\n DrawCircleFromCenterMode,\n DrawPolygonByDraggingMode,\n GeoJsonEditMode,\n} from '@deck.gl-community/editable-layers'\nimport type { LassoToolsMode, LassoToolsModes } from '../../types'\nimport { CustomCompositeEditMode } from './modes/custom-edit-mode.class'\nimport type { DefaultLassoToolsProps } from './types'\nimport { DataFilterExtension } from '@deck.gl/extensions'\n\nexport const MAP_LASSO_TOOLS_LAYER_ID = 'lassoLayer'\nexport const MAP_MASK_LAYER_ID = 'maskLayer'\n\nexport const DEFAULT_LASSO_TOOLS_LAYER_PROPS = {\n id: MAP_LASSO_TOOLS_LAYER_ID,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n stroked: true,\n filled: true,\n lineWidthUnits: 'pixels',\n getLineWidth: 2,\n lineWidthMinPixels: 2,\n} as const\n\nexport const DEFAULT_LASSO_TOOLS_COLORS: DefaultLassoToolsProps['styles']['colors'] =\n {\n editing: {\n border: [3, 111, 226, 255],\n fill: [3, 111, 226, 20.4],\n point: [255, 255, 255, 255],\n },\n finished: {\n border: [71, 219, 153, 255],\n fill: [71, 219, 153, 0],\n },\n } as const\n\nexport const DEFAULT_LASSO_TOOLS_PROPS: DefaultLassoToolsProps = {\n styles: {\n colors: {\n editing: DEFAULT_LASSO_TOOLS_COLORS.editing,\n finished: DEFAULT_LASSO_TOOLS_COLORS.finished,\n },\n },\n labels: {\n mask: 'Mask',\n },\n} as const\n\nconst EXTENSION_FILTER = [new DataFilterExtension({ filterSize: 1 })]\n\nexport const DEFAULT_MASK_LAYER_PROPS = {\n id: MAP_MASK_LAYER_ID,\n operation: 'mask',\n pickable: false,\n visible: true,\n extensions: EXTENSION_FILTER,\n filterRange: [1, 1],\n}\n\nexport const DEFAULT_LASSO_TOOLS_MODES: LassoToolsModes<\n LassoToolsMode,\n GeoJsonEditMode\n> = {\n polygon: {\n value: 'polygon',\n mode: DrawPolygonMode,\n },\n rectangle: {\n value: 'rectangle',\n mode: DrawRectangleMode,\n },\n circle: {\n value: 'circle',\n mode: DrawCircleFromCenterMode,\n },\n lasso: {\n value: 'lasso',\n mode: DrawPolygonByDraggingMode,\n },\n edit: {\n value: 'edit',\n mode: CustomCompositeEditMode,\n },\n} as const\n","import { create } from 'zustand'\nimport type { LayerStore } from './types'\nimport type { LayerExtension } from '@deck.gl/core'\n\nexport const useLayerStore = create<LayerStore>((set) => ({\n layers: {},\n setLayer: (id, layer) =>\n set((state) => {\n const layers = { ...state.layers }\n\n if (!layer) {\n delete layers[id]\n return { layers }\n }\n\n const _layer = layers[id] ?? { type: null, props: {} }\n\n const extensions = [\n ...(_layer.props.extensions ?? []),\n ...(layer.props?.extensions ?? []),\n ].reduce((acc, extension) => {\n if (!acc.some((e) => e.equals(extension))) {\n acc.push(extension)\n }\n return acc\n }, [] as LayerExtension[])\n\n const legend =\n !!_layer.legend || !!layer.legend\n ? {\n ..._layer.legend,\n ...layer.legend,\n }\n : undefined\n\n layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._layer.props,\n ...layer.props,\n updateTriggers: {\n ...(_layer.props.updateTriggers ?? {}),\n ...(layer.props?.updateTriggers ?? {}),\n },\n extensions,\n },\n legend,\n }\n\n return { layers }\n }),\n removeLayer: (id) =>\n set((state) => {\n const layers = { ...state.layers }\n delete layers[id]\n return { layers }\n }),\n}))\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport type { UpdateParameters } from '@deck.gl/core'\nimport { EventManager } from 'mjolnir.js'\n\nconst EVENT_TYPES = [\n 'anyclick',\n 'pointermove',\n 'panstart',\n 'panmove',\n 'panend',\n 'keyup',\n]\n\nexport class CustomEditableGeojsonLayer extends EditableGeoJsonLayer {\n declare props: EditableGeoJsonLayer['props'] & {\n eventManager?: EventManager | null\n }\n\n override updateState({\n props,\n oldProps,\n context,\n changeFlags,\n }: UpdateParameters<this>) {\n if (props.eventManager !== oldProps.eventManager) {\n this._removeEventHandlers(props.eventManager)\n this._removeEventHandlers(oldProps.eventManager)\n this._addEventHandlers()\n }\n super.updateState({ props, oldProps, context, changeFlags })\n }\n\n override _addEventHandlers() {\n const eventManager = this._getEventManager()!\n // _editableLayerState is not in the types, but it's a private property that can be accessed\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_TYPES) {\n // error derived from the _editableLayerState. The type is not exists\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.on(eventType as 'anyclick', eventHandler, {\n // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n priority: 100,\n })\n }\n }\n\n override _removeEventHandlers(_eventManager?: EventManager | null) {\n const eventManager = _eventManager ?? this._getEventManager()!\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_TYPES) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.off(eventType as 'anyclick', eventHandler)\n }\n }\n\n _getEventManager() {\n return (\n this.props.eventManager ??\n // @ts-expect-error accessing protected props\n this.context.deck.eventManager\n )\n }\n}\n","import type { LayerType } from '../../types'\nimport { DEFAULT_LASSO_TOOLS_LAYER_PROPS } from './const'\nimport type { LassoToolsLayerProps } from './types'\nimport deepmerge from 'deepmerge'\nimport type { FeatureCollection } from 'geojson'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\n\nexport function getLassoToolsLayer({\n mode,\n ...defaultProps\n}: LassoToolsLayerProps & {}): LayerType {\n const props = getLayerProps(defaultProps)\n\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n mode,\n } as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapLassoToolsLayer component.\n * @param layerProps - The layer props.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n layerProps,\n onEdit,\n getLineColor,\n getFillColor,\n pointColor,\n}: Omit<LassoToolsLayerProps, 'mode'>) {\n const _layerProps = deepmerge(layerProps, {\n modeConfig: {\n // // We force distance due to conversion is addressed at feature getText level\n // formatTooltip: (_distance: number) => {\n // return _distance\n // },\n preventOverlappingLines: true,\n },\n onEdit,\n })\n\n const defaultLayerProps = deepmerge(DEFAULT_LASSO_TOOLS_LAYER_PROPS, {\n getTentativeLineColor: getLineColor,\n getTentativeFillColor: getFillColor,\n getLineColor: getLineColor,\n getFillColor: getFillColor,\n getEditHandlePointColor: pointColor.fill,\n getEditHandlePointOutlineColor: pointColor.outline,\n dataComparator: (data: FeatureCollection, oldData: FeatureCollection) =>\n data.features[0] === oldData.features[0],\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\nimport type { LassoToolsState } from '../types'\nimport { DEFAULT_LASSO_TOOLS_MODES } from '../const'\n\nexport const createLassoToolsStore = (\n initProps: LassoToolsProviderProps['values'],\n) => {\n return createStore<LassoToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n enabled = false,\n mapId,\n modeInstance = new DEFAULT_LASSO_TOOLS_MODES.polygon.mode(),\n modes = DEFAULT_LASSO_TOOLS_MODES,\n modeSelected = DEFAULT_LASSO_TOOLS_MODES.polygon.value,\n values = {},\n } = curr\n acc[mapId] = {\n enabled,\n modeInstance,\n modes,\n modeSelected,\n values,\n }\n return acc\n },\n {} as LassoToolsStore['data'],\n )\n\n return {\n data: defaultProps,\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n enabled,\n visible: enabled,\n },\n },\n }))\n },\n setValue: (mapId, id, value) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n\n const _value =\n values[id] ??\n ({\n type: 'mask',\n } as LassoToolsState['values'][number])\n\n values[id] = {\n ..._value,\n ...value,\n id,\n }\n\n if (!value) {\n delete values[id]\n }\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values,\n },\n },\n }\n })\n },\n setVisibility: (mapId, valueId, visible) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n const _value =\n values[valueId] ?? ({} as LassoToolsState['values'][number])\n _value.properties.visible = visible\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values: {\n ...values,\n [valueId]: _value,\n },\n },\n },\n }\n })\n },\n setModeSelected: (mapId, mode) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeSelected: mode,\n },\n },\n }\n })\n },\n setModeInstance: (mapId, modeInstance) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeInstance,\n },\n },\n }\n })\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createLassoToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\n\nconst LassoToolsContext = createContext<StoreApi<LassoToolsStore>>(\n {} as StoreApi<LassoToolsStore>,\n)\n\nexport function LassoToolsProvider({\n children,\n values,\n}: PropsWithChildren<LassoToolsProviderProps>) {\n const [storeRef] = useState(() => createLassoToolsStore(values))\n\n return (\n <LassoToolsContext.Provider value={storeRef}>\n {children}\n </LassoToolsContext.Provider>\n )\n}\n\nexport function useLassoToolsState<T>(\n selector: (state: LassoToolsStore) => T,\n): T {\n const store = useContext(LassoToolsContext)\n if (!Object.keys(store).length) {\n throw new Error('Missing LassoToolsProvider in the tree')\n }\n return useStore(store, selector)\n}\n","import { useCallback, useEffect, useMemo } from 'react'\nimport type {\n LassoToolsData,\n LassoToolsControlProps,\n LassoToolsState,\n} from './types'\nimport { useLassoToolsState } from './provider/provider'\n\nexport function LassoToolsControls({\n mapId,\n children,\n}: LassoToolsControlProps) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)!\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)!\n const setValue = useLassoToolsState((state) => state.setValue)\n const setVisibility = useLassoToolsState((state) => state.setVisibility)\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )!\n const setModeSelected = useLassoToolsState((state) => state.setModeSelected)\n const modes = useLassoToolsState((state) => state.data[mapId]?.modes)!\n const setModeInstance = useLassoToolsState((state) => state.setModeInstance)\n\n useEffect(() => {\n const data = modes[modeSelected]\n\n if (data && enabled) {\n const Mode = data.mode\n setModeInstance(mapId, new Mode() as LassoToolsState['modeInstance'])\n }\n }, [enabled, mapId, modeSelected, modes, setModeInstance])\n\n const [\n mask,\n // , draw\n ] = useMemo(() => {\n const serialize = (value: LassoToolsData) => ({\n id: value.id,\n visible: value.properties.visible,\n label: value.properties?.label,\n })\n const _values = Object.values(values)\n const mask = _values.filter((value) => value.type === 'mask').map(serialize)\n // const draw = _values.filter((value) => value.type === 'draw').map(serialize)\n return [\n mask,\n // , draw\n ]\n }, [values])\n\n const handleModeSelected = useCallback(\n (mode: LassoToolsState['modeSelected']) => {\n setEnabled(mapId, !!mode)\n setModeSelected(mapId, mode)\n },\n [mapId, setEnabled, setModeSelected],\n )\n\n return children({\n mapId,\n enabled,\n modes,\n modeSelected,\n values: {\n mask,\n // draw,\n },\n setValue: useCallback((id, data) => setValue(mapId, id, data), [mapId, setValue]),\n setEnabled: useCallback(\n (enabled) => setEnabled(mapId, enabled),\n [mapId, setEnabled],\n ),\n setVisibility: useCallback(\n (valueId, visible) => setVisibility(mapId, valueId, visible),\n [mapId, setVisibility],\n ),\n setModeSelected: handleModeSelected,\n })\n}\n","import type { LassoToolsStore } from './provider/types'\n\nexport function getMaskValues({\n values,\n}: {\n values?: LassoToolsStore['data'][number]['values']\n}) {\n return Object.values(values ?? {}).filter((value) => value.type === 'mask')\n}\n","import { formatNumber } from '@carto/ps-utils'\nimport type { Tooltip, Position } from '@deck.gl-community/editable-layers'\nimport configureMeasurements from 'convert-units'\nimport length from 'convert-units/definitions/length'\nimport type { ControllerOptions } from 'node_modules/@deck.gl/core/dist/controllers/controller'\nimport type { ValueOf } from 'type-fest'\nimport type { DeckGLComponentProps } from '../../types'\nimport {\n CONVERSIONS_UNITS,\n INTL_UNITS,\n MapMeasurementUnit,\n MapMeasurementUnitAuto,\n} from './const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from './types'\n\nconst convert = configureMeasurements({\n length,\n})\n\nexport function convertMetersTo(\n distance: number,\n unit: ValueOf<typeof MapMeasurementUnit>,\n) {\n return convert(distance)\n .from(CONVERSIONS_UNITS[MapMeasurementUnit.meter])\n .to(CONVERSIONS_UNITS[unit])\n}\n\nconst DEFAULT_AUTO_SPLIT_NUMBER = 10000\n\nexport function getTextLayerFormattedDistance({\n meters,\n unit,\n locale,\n options: { autoSplitNumber, ...intlOptions } = {\n autoSplitNumber: DEFAULT_AUTO_SPLIT_NUMBER,\n },\n}: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n}) {\n const isMetricSystem = unit === MapMeasurementUnitAuto['m-km']\n const isImperialSystem = unit === MapMeasurementUnitAuto['ft-mi']\n const isAuto = isMetricSystem || isImperialSystem\n\n let _unit\n let _number\n\n if (isAuto) {\n const isSmallDistance =\n meters < (autoSplitNumber ?? DEFAULT_AUTO_SPLIT_NUMBER)\n let convertUnit: ValueOf<typeof MapMeasurementUnit> = isSmallDistance\n ? MapMeasurementUnit.meter\n : MapMeasurementUnit.kilometer\n\n _unit = isSmallDistance ? INTL_UNITS.meter : INTL_UNITS.kilometer\n\n if (isImperialSystem) {\n _unit = isSmallDistance ? INTL_UNITS.feet : INTL_UNITS.mile\n convertUnit = isSmallDistance\n ? MapMeasurementUnit.feet\n : MapMeasurementUnit.mile\n }\n\n _number = convertMetersTo(meters, convertUnit)\n } else {\n _unit = INTL_UNITS[unit]\n _number = convertMetersTo(meters, unit)\n }\n\n return `${formatNumber(_number, locale, {\n style: 'unit',\n unit: _unit,\n unitDisplay: 'short',\n notation: 'standard',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n ...intlOptions,\n })}`\n}\n\nexport function getDeckController(\n controller: DeckGLComponentProps['controller'],\n {\n hasDoubleClickZoom,\n }: {\n hasDoubleClickZoom: boolean\n },\n): ControllerOptions {\n return typeof controller === 'boolean'\n ? { doubleClickZoom: hasDoubleClickZoom }\n : { ...controller, doubleClickZoom: hasDoubleClickZoom }\n}\n\nexport function buildTooltip(\n value: number,\n position: Position,\n modeConfig: EditModeConfig,\n): Tooltip[] {\n if (value > 0) {\n const { formatTooltip, turfOptions } = modeConfig ?? {\n turfOptions: {\n units: 'kilometers',\n },\n }\n\n const units = turfOptions?.units\n\n let text\n if (formatTooltip) {\n text = formatTooltip(value)\n } else {\n text = `${parseFloat(value.toString()).toFixed(2)} ${units}`\n }\n\n const { measurementCallback } = modeConfig as {\n measurementCallback?: (value: number) => void\n }\n\n if (measurementCallback) {\n measurementCallback(value)\n }\n\n return [\n {\n position,\n text,\n },\n ]\n }\n return []\n}\n","import {\n getPickedEditHandle,\n MeasureAreaMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type GuideFeatureCollection,\n type LineString,\n type ModeProps,\n type Point,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport { area, centroid, lineIntersect } from '@turf/turf'\nimport { EditType } from '../../../editable/const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\n\nexport class CustomMeasureAreaMode extends MeasureAreaMode {\n _isMeasuringSessionFinished = false\n area = 0\n tooltips: Tooltip[] = []\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this.area = 0\n }\n\n const { picks } = event\n const clickedEditHandle = getPickedEditHandle(picks)\n const clickSequence = this.getClickSequence()\n\n let positionAdded = false\n if (!clickedEditHandle && !this.allowOverlapping(props)) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event)\n positionAdded = true\n }\n\n this.area = area({\n type: 'Polygon',\n coordinates: [this.getClickSequence()],\n })\n\n if (\n this.isFinalizedEdition(\n clickSequence,\n clickedEditHandle as unknown as {\n properties: { positionIndexes: number[] }\n },\n )\n ) {\n this.finalizeEdition(props)\n } else if (positionAdded) {\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords,\n },\n })\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n const clickSequence = this.getClickSequence()\n if (clickSequence.length > 2) {\n this.finalizeEdition(props)\n } else {\n this.resetEdition(props)\n }\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n const tentativeGuide = this.getTentativeGuide(props)\n if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {\n const position = centroid(tentativeGuide) as FeatureOf<Point>\n this.area = area(tentativeGuide)\n this.tooltips = buildTooltip(\n this.area,\n position.geometry.coordinates as unknown as Position,\n props.modeConfig as EditModeConfig,\n )\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this.area = 0\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n override getTooltips() {\n return this.tooltips\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n clickedEditHandle:\n | { properties: { positionIndexes: number[] } }\n | null\n | undefined,\n ): boolean {\n const { positionIndexes } = clickedEditHandle?.properties ?? {\n positionIndexes: [],\n }\n return (\n clickSequence.length > 2 &&\n clickedEditHandle !== undefined &&\n (positionIndexes[0] === 0 ||\n positionIndexes[0] === clickSequence.length - 1)\n )\n }\n\n allowOverlapping(props: ModeProps<FeatureCollection>) {\n let overlappingLines = false\n const clickSequence = this.getClickSequence()\n if (\n clickSequence.length > 2 &&\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n props.modeConfig?.preventOverlappingLines\n ) {\n const currentLine = {\n type: 'LineString',\n coordinates: [...clickSequence, clickSequence[0]],\n } as LineString\n const otherLines = {\n type: 'LineString',\n coordinates: [...clickSequence.slice(0, clickSequence.length - 1)],\n } as LineString\n const intersectingPoints = lineIntersect(currentLine, otherLines)\n if ((intersectingPoints as FeatureCollection).features.length > 0) {\n overlappingLines = true\n }\n }\n return overlappingLines\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n // They clicked the first or last point (or double-clicked), so complete the polygon\n // Remove the hovered position\n const polygonToAdd: Polygon = {\n type: 'Polygon',\n coordinates: [[...clickSequence, clickSequence[0]!]],\n }\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n polygonToAdd,\n props,\n )\n this._isMeasuringSessionFinished = true\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this.area,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n DrawCircleFromCenterMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type Geometry,\n type GuideFeatureCollection,\n type ModeProps,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport type { ValueOf } from 'type-fest'\nimport { EditType } from '../../../editable/const'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureBufferMode extends DrawCircleFromCenterMode {\n _isMeasuringSessionFinished = false\n _currentArea = 0\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n tooltips: Tooltip[] = []\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this._currentArea = 0\n }\n\n super.handleClick(event, props)\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n this.tooltips = buildTooltip(\n this.areaCircle!,\n this.position,\n props.modeConfig as EditModeConfig,\n )\n }\n\n override checkAndFinishPolygon(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n const tentativeFeature = this.getTentativeGuide(props)\n if (\n this.isFinalizedEdition(\n clickSequence,\n tentativeFeature as { geometry: Geometry },\n )\n ) {\n this.finalizeEdition(props)\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n this.finalizeEdition(props)\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n tentativeFeature: { geometry: Geometry },\n ): boolean {\n return (\n clickSequence.length > 1 &&\n tentativeFeature &&\n tentativeFeature.geometry.type === 'Polygon'\n )\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const tentativeFeature = this.getTentativeGuide(props)\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n tentativeFeature as FeatureOf<Polygon>,\n props,\n )\n this._isMeasuringSessionFinished = true\n props.onUpdateCursor('cell')\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this._currentArea,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this._currentArea = 0\n this.radius = 0\n this.areaCircle = 0\n }\n\n override getTooltips(): Tooltip[] {\n return this.tooltips\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n MeasureDistanceMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport type { BasePointerEvent } from 'node_modules/@deck.gl-community/editable-layers/dist/edit-modes/types'\nimport { EditType } from '../../../editable/const'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { MeasurementToolsTextProps } from '../types'\nimport { getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureDistanceMode extends MeasureDistanceMode {\n override handleClick(\n event: BasePointerEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleClick(event, props)\n\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: EditType.addPosition,\n editContext: {\n distance: this._currentDistance,\n finished: this._isMeasuringSessionFinished,\n positions: this.getClickSequence(),\n },\n })\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (this._isMeasuringSessionFinished) return\n\n event.stopPropagation()\n const { key } = event\n\n const clickSequenceLength = this.getClickSequence().length\n\n let editType: ValueOf<typeof EditType> = EditType.finish\n\n switch (key) {\n case 'Escape':\n props.onEdit({\n updatedData: {\n type: 'FeatureCollection',\n features: [],\n },\n editType: EditType.cancel,\n editContext: {},\n })\n break\n case 'Enter':\n this._isMeasuringSessionFinished = true\n if (clickSequenceLength === 1) {\n this.resetClickSequence()\n editType = EditType.cancel\n }\n // force update drawings\n props.onUpdateCursor('cell')\n props.onEdit({\n updatedData: props.data,\n editType,\n editContext: {\n finished: this._isMeasuringSessionFinished,\n },\n })\n break\n default:\n break\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this._isMeasuringSessionFinished = false\n this._currentTooltips = []\n this._currentDistance = 0\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n })\n }\n}\n","import type { GeoJsonEditMode } from '@deck.gl-community/editable-layers'\nimport type { Color } from '@deck.gl/core'\nimport type { LengthUnits } from 'convert-units/definitions/length'\nimport type {\n MeasurementMode,\n MeasurementModes,\n MeasurementUnit,\n MeasurementUnitOption,\n MeasurementUnits,\n} from '../../types'\nimport type { ValueOf } from 'type-fest'\nimport { CustomMeasureAreaMode } from './modes/custom-measurement-area.class'\nimport { CustomMeasureBufferMode } from './modes/custom-measurement-buffer.class'\nimport { CustomMeasureDistanceMode } from './modes/custom-measurement-distance.class'\nimport type { DefaultMeasureToolProps } from './types'\n\nexport const MAP_MEASURE_LAYER_ID = 'mapMeasureLayer'\n\nexport const DEFAULT_LAYER_PROPS = {\n id: MAP_MEASURE_LAYER_ID,\n pickable: false,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n lineWidthMinPixels: 2,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n _subLayerProps: {\n tooltips: {\n fontFamily: 'Open Sans, Inter, sans-serif',\n fontWeight: 'lighter',\n getSize: 11,\n lineHeight: 1.4545,\n getPixelOffset: [0, 20],\n getTextAnchor: 'middle',\n getAlignmentBaseline: 'center',\n updateTriggers: {},\n },\n guides: {\n getLineWidth: 2,\n },\n },\n} as const\n\nexport const DEFAULT_COLORS: Record<string, Color> = {\n editing: [23, 102, 214, 255],\n finished: [71, 219, 153, 255],\n point: [255, 255, 255, 255],\n} as const\n\nexport const DEFAULT_PROPS: DefaultMeasureToolProps = {\n styles: {\n colors: {\n editing: DEFAULT_COLORS.editing!,\n finished: DEFAULT_COLORS.finished!,\n point: DEFAULT_COLORS.point!,\n },\n },\n} as const\n\nexport const MapMeasurementUnit = {\n kilometer: 'kilometer',\n meter: 'meter',\n centimeter: 'centimeter',\n milimeter: 'milimeter',\n mile: 'mile',\n yard: 'yard',\n feet: 'feet',\n} as const\n\nexport const MapMeasurementUnitAuto = {\n 'm-km': 'm-km',\n 'ft-mi': 'ft-mi',\n ...MapMeasurementUnit,\n} as const\n\nexport const MapMeasurementUnitTurf = {\n meters: 'meters',\n kilometer: 'kilometers',\n mile: 'miles',\n} as const\n\nexport const CONVERSIONS_UNITS: Record<\n ValueOf<typeof MapMeasurementUnit>,\n LengthUnits\n> = {\n [MapMeasurementUnit.kilometer]: 'km',\n [MapMeasurementUnit.meter]: 'm',\n [MapMeasurementUnit.centimeter]: 'cm',\n [MapMeasurementUnit.milimeter]: 'mm',\n [MapMeasurementUnit.mile]: 'mi',\n [MapMeasurementUnit.yard]: 'yd',\n [MapMeasurementUnit.feet]: 'ft',\n} as const\n\nexport const INTL_UNITS: Record<ValueOf<typeof MapMeasurementUnit>, string> = {\n [MapMeasurementUnit.kilometer]: 'kilometer',\n [MapMeasurementUnit.meter]: 'meter',\n [MapMeasurementUnit.centimeter]: 'centimeter',\n [MapMeasurementUnit.milimeter]: 'millimeter',\n [MapMeasurementUnit.mile]: 'mile',\n [MapMeasurementUnit.yard]: 'yard',\n [MapMeasurementUnit.feet]: 'foot',\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES: Record<\n MeasurementUnit,\n MeasurementUnitOption\n> = {\n 'm-km': {\n value: 'm-km',\n system: 'metric',\n },\n kilometer: {\n value: 'kilometer',\n system: 'metric',\n },\n meter: {\n value: 'meter',\n system: 'metric',\n },\n centimeter: {\n value: 'centimeter',\n system: 'metric',\n },\n milimeter: {\n value: 'milimeter',\n system: 'metric',\n },\n 'ft-mi': {\n value: 'ft-mi',\n system: 'imperial',\n },\n mile: {\n value: 'mile',\n system: 'imperial',\n },\n yard: {\n value: 'yard',\n system: 'imperial',\n },\n feet: {\n value: 'feet',\n system: 'imperial',\n },\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const MEASUREMENT_TOOLS_UNITS_AREA: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_MODES: MeasurementModes<\n MeasurementMode,\n GeoJsonEditMode\n> = {\n distance: {\n value: 'distance',\n mode: CustomMeasureDistanceMode,\n },\n buffer: {\n value: 'buffer',\n mode: CustomMeasureBufferMode,\n },\n area: {\n value: 'area',\n mode: CustomMeasureAreaMode,\n },\n} as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_UNITS: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n> = {\n distance: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n buffer: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n area: MEASUREMENT_TOOLS_UNITS_AREA,\n} as const\n","import { useEffect } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport { EventManager } from 'mjolnir.js'\nimport type { Layer } from './providers/layers/types'\nimport { useLayerStore } from './providers/layers/store'\nimport type { LayerProps } from '@deck.gl/core'\n\nexport function useEventManager({\n mapId,\n layerId,\n}: {\n mapId: MapComponentProps['id']\n layerId: NonNullable<Layer['props']['id']>\n}) {\n const basemap = useMapStore((store) => store.maps[mapId]?.basemap)!\n const isLoaded = useMapStore((store) => store.maps[mapId]?.isLoaded)\n const getOverlayInstance = useMapStore((store) => store.getOverlayInstance)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n useEffect(() => {\n let eventManager: EventManager | null = null\n if (isGmaps && isLoaded) {\n const overlayInstance = getOverlayInstance(mapId) as google.maps.Map\n eventManager = new EventManager(overlayInstance.getDiv(), {})\n }\n setLayer(layerId, {\n props: {\n eventManager,\n } as LayerProps & {\n eventManager: EventManager | null\n },\n })\n }, [getOverlayInstance, isGmaps, isLoaded, layerId, mapId, setLayer])\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport type {\n LassoToolsLayerEditProps,\n LassoToolsProps,\n LassoToolsData,\n} from './types'\nimport { getLassoToolsLayer } from './layer'\nimport {\n DEFAULT_MASK_LAYER_PROPS,\n DEFAULT_LASSO_TOOLS_PROPS,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from './const'\nimport { useLassoToolsState } from './provider/provider'\nimport type { FeatureCollection } from 'geojson'\nimport { GeoJsonLayer, type GeoJsonLayerProps } from '@deck.gl/layers'\nimport { MaskExtension } from '@deck.gl/extensions'\nimport { LassoToolsControls } from './lasso-tools-control'\nimport { EditType } from '../const'\nimport { useShallow } from 'zustand/shallow'\nimport { getMaskValues } from './util'\nimport { MAP_MEASURE_LAYER_ID } from '../measurement-tools/const'\nimport type { Layer, LayerProps, PickingInfo } from '@deck.gl/core'\nimport { ViewMode } from '@deck.gl-community/editable-layers'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\n/**\n * LassoTools component provides tools for lasso selection on a map.\n *\n * @param {Object} props - The properties object.\n * @param {ReactNode} props.children - The child components to be rendered.\n * @param {string} props.mapId - The unique identifier for the map.\n * @param {Object} [props.defaultProps] - The default properties for the component.\n * @param {Object} [props.defaultProps.styles] - The default styles for the lasso tools.\n * @param {Object} [props.defaultProps.labels] - The default labels for the lasso tools.\n * @param {Object} [props.layerProps] - The properties for the layer.\n * @param {string} [props.defaultType='mask'] - The default type for the lasso tools.\n *\n * @returns {ReactNode} The rendered children components.\n *\n * @example\n * <LassoTools mapId=\"map1\">\n * <ChildComponent />\n * </LassoTools>\n */\nexport function LassoTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_LASSO_TOOLS_PROPS.styles, labels } = {\n styles: DEFAULT_LASSO_TOOLS_PROPS.styles,\n labels: DEFAULT_LASSO_TOOLS_PROPS.labels,\n },\n layerProps = {},\n defaultType = 'mask',\n}: LassoToolsProps & {\n children?: ReactNode\n}) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)\n const setValue = useLassoToolsState((state) => state.setValue)\n const modeInstance = useLassoToolsState(\n (state) => state.data[mapId]?.modeInstance,\n )!\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n useEventManager({ mapId, layerId: MAP_LASSO_TOOLS_LAYER_ID })\n\n const maskValues = useMemo(() => {\n return getMaskValues({ values })\n }, [values])\n\n const maskFeatureCollection: FeatureCollection = useMemo(() => {\n return {\n type: 'FeatureCollection',\n features: maskValues.map((value) => ({\n type: 'Feature',\n geometry: value.geometry,\n properties: value.properties,\n id: value.id,\n })),\n }\n }, [maskValues])\n\n const maskVisible = useMemo(() => {\n return maskValues\n .filter((value) => value.properties.visible)\n .map((value) => value.id)\n }, [maskValues])\n\n const [data, setData] = useState<FeatureCollection>(maskFeatureCollection)\n const [selectedFeatureIndexes, setSelectedFeatureIndexes] = useState<\n number[]\n >([])\n\n const setDataByValues = useCallback(() => {\n const _data = {\n ...maskFeatureCollection,\n features: maskFeatureCollection.features.filter(\n (feature) => feature.properties?.visible,\n ),\n }\n setData(_data)\n }, [maskFeatureCollection])\n\n useEffect(() => {\n setDataByValues()\n }, [setDataByValues])\n\n const autoIncrement = useRef(maskValues.length)\n\n useEffect(() => {\n addLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n\n return () => {\n removeLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n }\n }, [addLayers, mapId, removeLayers])\n\n const handleCancelEdit = useCallback(() => {\n setDataByValues()\n setSelectedFeatureIndexes([])\n setEnabled(mapId, false)\n }, [mapId, setDataByValues, setEnabled])\n\n const onEdit = useCallback(\n ({ editType, updatedData }: LassoToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n handleCancelEdit()\n return\n }\n\n setData(updatedData)\n\n if (editType === EditType.updateTentativeFeature) {\n return\n }\n\n if (editType === EditType.addFeature) {\n if (modeSelected !== 'edit') {\n autoIncrement.current = autoIncrement.current + 1\n }\n updatedData.features.forEach((feature, index) => {\n feature.properties.label ??= `${labels?.mask} ${autoIncrement.current}`\n feature.properties.index = index\n feature.properties.visible = feature.properties.visible ?? true\n\n const id = (feature.id as string) ?? crypto.randomUUID()\n\n setValue(mapId, id, {\n geometry: feature.geometry,\n properties: feature.properties,\n // visible: true,\n type: defaultType,\n })\n })\n handleCancelEdit()\n }\n },\n [\n defaultType,\n handleCancelEdit,\n labels?.mask,\n mapId,\n modeSelected,\n setValue,\n ],\n )\n\n useEffect(() => {\n const pickable = enabled\n\n const {\n border: guideColorEditing,\n point: pointColorEditing,\n fill: fillColorEditing,\n } = styles.colors.editing\n\n const { border: borderFinished, fill: fillFinished } =\n styles.colors.finished\n\n const layer = getLassoToolsLayer({\n layerProps: {\n ...layerProps.mask,\n pickable,\n data,\n selectedFeatureIndexes,\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n onClick: (e: PickingInfo) => {\n const _e = e as PickingInfo<never, { isGuide: boolean }>\n if (_e.isGuide) {\n return\n }\n setSelectedFeatureIndexes([_e.index])\n },\n },\n getLineColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? guideColorEditing\n : borderFinished,\n getFillColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? fillColorEditing\n : fillFinished,\n pointColor: {\n fill: pointColorEditing,\n outline: guideColorEditing,\n },\n onEdit,\n mode: !pickable ? new ViewMode() : modeInstance,\n })\n\n setLayer(MAP_LASSO_TOOLS_LAYER_ID, layer)\n }, [\n data,\n enabled,\n layerProps.mask,\n maskVisible,\n modeInstance,\n onEdit,\n selectedFeatureIndexes,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n ])\n\n useEffect(() => {\n const props = {\n ...DEFAULT_MASK_LAYER_PROPS,\n data: maskFeatureCollection,\n getFilterValue: (f: LassoToolsData) => Number(maskVisible.includes(f.id)),\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n } as GeoJsonLayerProps\n\n setLayer(DEFAULT_MASK_LAYER_PROPS.id, {\n type: GeoJsonLayer,\n props,\n })\n\n addLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n return () => {\n removeLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n }\n }, [\n addLayers,\n mapId,\n maskFeatureCollection,\n maskVisible,\n removeLayers,\n setLayer,\n ])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable: pickable,\n extensions: [new MaskExtension()],\n maskId:\n !enabled && maskVisible.length ? MAP_MASK_LAYER_ID : undefined,\n } as Partial<GeoJsonLayerProps>,\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, maskVisible.length, setLayer])\n\n return children\n}\n\nLassoTools.Controls = LassoToolsControls\n","import deepmerge from 'deepmerge'\nimport type { LayerType } from '../../types'\nimport { DEFAULT_LAYER_PROPS, MapMeasurementUnitTurf } from './const'\nimport type { MeasurementToolsLayerProps, MeasurementToolsState } from './types'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\n\nexport function getMeasurementToolsLayer({\n mode,\n ...defaultProps\n}: MeasurementToolsLayerProps & {}): LayerType {\n const props = getLayerProps({\n mode,\n ...defaultProps,\n })\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n mode,\n data: [],\n } as unknown as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapMeasurementToolsLayer component.\n * @param layerProps - The layer props.\n * @param locale - The locale.\n * @param unit - The unit.\n * @param onHover - The onHover event handler.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n mode,\n layerProps,\n locale,\n enabled,\n unit,\n onEdit,\n guideColor,\n pointColor,\n textOptions,\n}: MeasurementToolsLayerProps) {\n const _layerProps = deepmerge(layerProps, {\n visible: enabled,\n pickable: enabled,\n modeConfig: {\n // We force distance due to conversion is addressed at feature getText level\n formatTooltip: (_distance: number) => {\n return _distance\n },\n turfOptions: {\n units: MapMeasurementUnitTurf.meters,\n },\n },\n ...(enabled && { onEdit }),\n _subLayerProps: {\n tooltips: {\n outlineColor: [255, 255, 255, 255],\n outlineWidth: 6,\n fontSettings: {\n sdf: true, // needed for the outlineWidth and outlineColor attributes to be effective\n smoothing: 0.2,\n },\n getText: (properties: { text: MeasurementToolsState['distance'] }) => {\n // @ts-expect-error - fix EditGeoJSON methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return mode?.getTooltipText?.({\n meters: properties.text,\n locale,\n unit,\n options: textOptions,\n }) as string\n },\n updateTriggers: {\n getText: [unit, locale, textOptions],\n },\n },\n },\n })\n const defaultLayerProps = deepmerge(DEFAULT_LAYER_PROPS, {\n _subLayerProps: {\n guides: {\n getLineColor: guideColor,\n getFillColor: guideColor.with(3, 20),\n },\n },\n getEditHandlePointColor: pointColor,\n getEditHandlePointOutlineColor: guideColor,\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\nimport {\n DEFAULT_MEASUREMENT_TOOLS_MODES,\n DEFAULT_MEASUREMENT_TOOLS_UNITS,\n MapMeasurementUnitAuto,\n} from '../const'\nimport { CustomMeasureDistanceMode } from '../modes/custom-measurement-distance.class'\n\nexport const createMeasurementToolsStore = (\n initProps: MeasurementToolsProviderProps['values'],\n) => {\n return createStore<MeasurementToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n mapId,\n modeSelected,\n modes = DEFAULT_MEASUREMENT_TOOLS_MODES,\n units = DEFAULT_MEASUREMENT_TOOLS_UNITS,\n distance = 0,\n finished = false,\n locale = 'en',\n positions = [],\n clearLayerOnStart = false,\n unit = MapMeasurementUnitAuto['m-km'],\n enabled = false,\n } = curr\n acc[mapId] = {\n modes,\n units,\n modeSelected,\n distance,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart,\n enabled,\n }\n return acc\n },\n {} as MeasurementToolsStore['measurements'],\n )\n\n return {\n measurements: defaultProps,\n mode: CustomMeasureDistanceMode,\n setModeInstance: (mapId, modeInstance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeInstance,\n },\n },\n }))\n },\n setModeSelected: (mapId, modeSelected) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeSelected,\n },\n },\n }))\n },\n setFinished: (mapId, finished) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n finished,\n },\n },\n }))\n },\n setDistance: (mapId, distance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n distance,\n },\n },\n }))\n },\n setUnit: (mapId, unit) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n unit,\n },\n },\n }))\n },\n setLocale: (mapId, locale) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n locale,\n },\n },\n }))\n },\n setPositions: (mapId, positions) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n positions: [...positions],\n },\n },\n }))\n },\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n enabled,\n },\n },\n }))\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMeasurementToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\n\nconst MeasurementToolsContext = createContext<StoreApi<MeasurementToolsStore>>(\n {} as StoreApi<MeasurementToolsStore>,\n)\n\nexport function MeasurementToolsProvider({\n children,\n values,\n}: PropsWithChildren<MeasurementToolsProviderProps>) {\n const [storeRef] = useState(createMeasurementToolsStore(values))\n\n return (\n <MeasurementToolsContext.Provider value={storeRef}>\n {children}\n </MeasurementToolsContext.Provider>\n )\n}\n\nexport function useMeasurementToolsState<T>(\n selector: (state: MeasurementToolsStore) => T,\n): T {\n const store = useContext(MeasurementToolsContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MeasurementToolsProvider in the tree')\n return useStore(store, selector)\n}\n","import { useCallback } from 'react'\nimport { useMeasurementToolsState } from './provider/provider'\nimport type { MeasurementToolsState } from './types'\n\nexport function useMeasurementTools({ mapId }: { mapId: string }) {\n const modes = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modes,\n )\n\n const units = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.units,\n )\n\n const distance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.distance,\n )\n const _setDistance = useMeasurementToolsState((state) => state.setDistance)\n\n const setDistance = useCallback(\n (distance: number) => _setDistance(mapId, distance),\n [_setDistance, mapId],\n )\n\n const clearLayerOnStart = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.clearLayerOnStart,\n )\n\n const enabled = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.enabled,\n )\n const _setVisibility = useMeasurementToolsState((state) => state.setEnabled)\n\n const setEnabled = useCallback(\n (enabled: MeasurementToolsState['enabled']) =>\n _setVisibility(mapId, enabled),\n [_setVisibility, mapId],\n )\n\n const modeSelected = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeSelected,\n )\n\n const _setModeSelected = useMeasurementToolsState(\n (state) => state.setModeSelected,\n )\n\n const setModeSelected = useCallback(\n (mode: MeasurementToolsState['modeSelected']) => {\n setEnabled(!!mode)\n _setModeSelected(mapId, mode)\n },\n [_setModeSelected, mapId, setEnabled],\n )\n\n const finished = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.finished,\n )\n const _setFinished = useMeasurementToolsState((state) => state.setFinished)\n\n const setFinished = useCallback(\n (finished: MeasurementToolsState['finished']) =>\n _setFinished(mapId, finished),\n [_setFinished, mapId],\n )\n\n const locale = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.locale,\n )\n const _setLocale = useMeasurementToolsState((state) => state.setLocale)\n\n const setLocale = (locale: MeasurementToolsState['locale']) =>\n _setLocale(mapId, locale)\n\n const modeInstance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeInstance,\n )\n\n const _setInstance = useMeasurementToolsState(\n (state) => state.setModeInstance,\n )\n\n const setModeInstance = useCallback(\n (modeInstance: MeasurementToolsState['modeInstance']) =>\n _setInstance(mapId, modeInstance),\n [_setInstance, mapId],\n )\n\n const positions = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.positions,\n )\n const _setPositions = useMeasurementToolsState((state) => state.setPositions)\n\n const setPositions = useCallback(\n (positions: MeasurementToolsState['positions']) =>\n _setPositions(mapId, positions),\n [mapId, _setPositions],\n )\n\n const unit = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.unit,\n )\n const _setUnit = useMeasurementToolsState((state) => state.setUnit)\n\n const setUnit = useCallback(\n (unit: MeasurementToolsState['unit']) => _setUnit(mapId, unit),\n [_setUnit, mapId],\n )\n\n const clearLayer = useCallback(() => {\n modeInstance?.resetClickSequence()\n setPositions([])\n }, [modeInstance, setPositions])\n\n const toggleLayer = useCallback(\n (enabled: boolean) => {\n setEnabled(enabled)\n },\n [setEnabled],\n )\n\n return {\n modes,\n units,\n distance,\n clearLayerOnStart,\n modeSelected,\n enabled,\n finished,\n locale,\n modeInstance,\n positions,\n unit,\n setDistance,\n setModeSelected,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n setModeInstance,\n }\n}\n","import { useCallback, useEffect } from 'react'\nimport type { MeasurementToolsControlProps } from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { getTextLayerFormattedDistance } from './utils'\n\nexport function MeasurementToolsControl({\n mapId,\n textOptions,\n children,\n}: MeasurementToolsControlProps) {\n const {\n modes,\n units,\n distance,\n setDistance,\n clearLayerOnStart,\n modeSelected,\n setModeSelected,\n enabled,\n setEnabled,\n finished,\n setFinished,\n locale,\n setLocale,\n modeInstance,\n setModeInstance,\n positions,\n setPositions,\n unit,\n setUnit,\n clearLayer,\n toggleLayer: _toggleLayer,\n } = useMeasurementTools({ mapId })\n\n useEffect(() => {\n if (modeSelected && modes[modeSelected]) {\n const ModeClass = modes[modeSelected].mode\n setModeInstance(new ModeClass())\n }\n return () => {\n setPositions([])\n }\n }, [modes, modeSelected, setPositions, setModeInstance, setEnabled])\n\n const toggleLayer = useCallback(\n (enable: boolean) => {\n if (enable && (clearLayerOnStart || !finished)) {\n clearLayer()\n }\n _toggleLayer(enable)\n },\n [_toggleLayer, clearLayer, clearLayerOnStart, finished],\n )\n return children({\n mapId,\n distance,\n enabled,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart: !!clearLayerOnStart,\n modeSelected: modeSelected!,\n modes,\n units,\n value: getTextLayerFormattedDistance({\n meters: distance,\n unit,\n locale,\n options: textOptions,\n }),\n modeInstance: modeInstance!,\n setModeSelected,\n setDistance,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n })\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport { DEFAULT_PROPS, MAP_MEASURE_LAYER_ID } from './const'\nimport { EditType } from './../const'\nimport { getMeasurementToolsLayer } from './layer'\nimport { MeasurementToolsControl } from './measurement-tools-control'\nimport type {\n MeasurementToolsLayerEditProps,\n MeasurementToolsProps,\n} from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { useShallow } from 'zustand/shallow'\nimport type { Layer, LayerProps } from '@deck.gl/core'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [MAP_MEASURE_LAYER_ID]\n\nexport function MeasurementTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_PROPS.styles } = {\n styles: DEFAULT_PROPS.styles,\n },\n layerProps,\n textOptions,\n}: MeasurementToolsProps & {\n children?: React.ReactNode\n}) {\n const {\n setDistance,\n clearLayerOnStart,\n enabled,\n finished,\n setFinished,\n locale,\n setPositions,\n unit,\n modeInstance,\n } = useMeasurementTools({ mapId })\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const setController = useMapStore((state) => state.setController)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n useEventManager({ mapId, layerId: MAP_MEASURE_LAYER_ID })\n\n useEffect(() => {\n const previousController = getDeckInstance(mapId)?.props.controller\n\n if (enabled) {\n addLayers(mapId, [MAP_MEASURE_LAYER_ID])\n\n setController(mapId, {\n doubleClickZoom: false,\n })\n }\n\n return () => {\n removeLayers(mapId, [MAP_MEASURE_LAYER_ID])\n setController(mapId, previousController)\n }\n }, [\n addLayers,\n clearLayerOnStart,\n mapId,\n removeLayers,\n enabled,\n getDeckInstance,\n setController,\n ])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable,\n },\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, setLayer])\n\n const onEdit = useCallback(\n ({ editType, editContext }: MeasurementToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n modeInstance!.resetClickSequence()\n return\n }\n\n if (editType === EditType.addPosition) {\n setDistance(editContext.distance)\n }\n\n setFinished(!!editContext.finished)\n\n const positions = editContext.positions\n\n if (positions?.length) {\n setPositions(positions)\n }\n },\n [modeInstance, setDistance, setFinished, setPositions],\n )\n\n useEffect(() => {\n const guideColor = finished ? styles.colors.finished : styles.colors.editing\n const pointColor = finished ? styles.colors.finished : styles.colors.point\n //\n const layer = getMeasurementToolsLayer({\n layerProps: {\n ...layerProps,\n pickable: layerProps?.pickable ?? !finished,\n },\n enabled,\n guideColor,\n pointColor,\n locale,\n onEdit,\n unit,\n mode: modeInstance!,\n textOptions: textOptions,\n })\n\n setLayer(MAP_MEASURE_LAYER_ID, layer)\n }, [\n finished,\n modeInstance,\n layerProps,\n locale,\n onEdit,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n styles.colors.point,\n textOptions,\n unit,\n enabled,\n ])\n\n return children\n}\n\nMeasurementTools.Controls = MeasurementToolsControl\n","import { useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\n\nexport function useLayers({ mapId }: { mapId: MapComponentProps['id'] }) {\n const { layers: layersMap } = useMapStore((state) => state.maps[mapId]!)\n const layers = useLayerStore((state) => state.layers)\n\n const computedLayers = useMemo(() => {\n return layersMap\n .map((layerId) => layers[layerId])\n .filter((layer) => !!layer)\n }, [layers, layersMap])\n\n return computedLayers\n}\n","import { MAP_MEASURE_LAYER_ID } from '../editable/measurement-tools/const'\nimport {\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from '../editable/lasso-tools/const'\nimport type { Layer } from '../providers/layers/types'\n\nconst defaultLastLayerOrder = [\n MAP_MASK_LAYER_ID,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\nexport function sortLayers(layers: Layer[]) {\n const sortedLayers = layers\n .filter((layer) => !defaultLastLayerOrder.includes(layer.props.id!))\n .sort((a, b) => (a.order ?? Infinity) - (b.order ?? Infinity))\n\n const lastLayers = defaultLastLayerOrder\n .map((id) => layers.find((layer) => layer.props.id === id))\n .filter((l) => !!l)\n\n return [...sortedLayers, ...lastLayers]\n}\n","import { useCallback, useMemo, useRef } from 'react'\nimport type {\n Layer,\n MapViewState,\n ViewStateChangeParameters,\n} from '@deck.gl/core'\nimport { DeckGLComponent } from './deckgl'\nimport type { DeckGLComponentProps, MapComponentProps } from '../types'\nimport { useMapStore } from '../providers/map/provider'\nimport { useLayers } from '../use-layers'\nimport { sortLayers } from '../utils/sort-layers'\nimport type { DeckGLProps } from '@deck.gl/react'\n\nconst ZOOM_DEBOUNCE_MS = 200\n\nexport function MapComponent({\n id,\n onLoad,\n onViewStateChange,\n ...props\n}: MapComponentProps) {\n const basemap = useMapStore((state) => state.maps[id]!.basemap)\n const instanceRef = useMapStore((state) => state.maps[id]!.instanceRef)\n const overlayRef = useMapStore((state) => state.maps[id]!.overlayRef)\n const timerRef = useRef<NodeJS.Timeout | null>(null)\n const viewState = useMapStore((state) => state.viewStates[id])\n const controller = useMapStore((state) => state.maps[id]!.controller)\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const setViewState = useMapStore((state) => state.setViewState)\n const setLoad = useMapStore((state) => state.setLoad)\n const setLayersLoad = useMapStore((state) => state.setLayersLoad)\n const updateViewPort = useMapStore((state) => state.updateViewPort)\n\n const layers = useLayers({ mapId: id })\n const computedLayers = useMemo(() => {\n return sortLayers(layers)\n }, [layers])\n\n const handleViewStateChange = useCallback(\n (newViewState: ViewStateChangeParameters<MapViewState>) => {\n const callback = setViewState\n\n if (timerRef.current) {\n clearInterval(timerRef.current)\n }\n timerRef.current = setTimeout(() => {\n updateViewPort(id)\n }, ZOOM_DEBOUNCE_MS)\n\n if (onViewStateChange) {\n onViewStateChange(newViewState, callback)\n return\n }\n\n callback(id, newViewState.viewState)\n },\n [id, onViewStateChange, setViewState, updateViewPort],\n )\n\n const handleLoad = useCallback(\n (value: Parameters<NonNullable<DeckGLComponentProps['onLoad']>>[0]) => {\n setLoad(id, value)\n onLoad?.(value)\n updateViewPort(id)\n },\n [id, onLoad, setLoad, updateViewPort],\n )\n\n const handleAfterRender = useCallback(\n (\n context: Parameters<\n NonNullable<DeckGLComponentProps['onAfterRender']>\n >[0],\n ) => {\n const layers = getDeckInstance(id)?.props.layers\n const areLayersLoaded = !!layers?.every(\n (layer) => (layer as Layer<never>)?.isLoaded,\n )\n setLayersLoad(id, areLayersLoaded)\n props.onAfterRender?.(context)\n },\n [getDeckInstance, id, props, setLayersLoad],\n )\n\n // NOTE: destructuring here to keep the reference to the props object outside of the useCallback\n const _onDragEnd = props.onDragEnd\n const handleDragEnd = useCallback(\n (...args: Parameters<NonNullable<DeckGLProps['onDragEnd']>>) => {\n updateViewPort(id)\n if (_onDragEnd) {\n _onDragEnd(...args)\n }\n },\n [id, updateViewPort, _onDragEnd],\n )\n\n return (\n <DeckGLComponent\n {...props}\n controller={controller}\n id={id}\n layers={computedLayers}\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n basemap={basemap}\n initialViewState={viewState}\n onLoad={handleLoad}\n onViewStateChange={handleViewStateChange}\n onAfterRender={handleAfterRender}\n onDragEnd={handleDragEnd}\n />\n )\n}\n","// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n /* eslint-disable no-prototype-builtins */\n var g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {};\n\n var support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n var encoding = match ? match[1] : 'utf-8';\n reader.readAsText(blob, encoding);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._noBody = true;\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n };\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n try {\n headers.append(key, value);\n } catch (error) {\n console.warn('Response ' + error.message);\n }\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 200, statusText: ''});\n response.ok = false;\n response.status = 0;\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = g.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name));\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value);\n }\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!g.fetch) {\n g.fetch = fetch;\n g.Headers = Headers;\n g.Request = Request;\n g.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","import R from \"cross-fetch\";\nconst h = \"https://gcp-us-east1.api.carto.com\", j = \"v3\", J = \"ps\", g = {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n};\nfunction I(e, n) {\n return Array.isArray(n) ? `${e}=${encodeURIComponent(JSON.stringify(n))}` : n == null || n === \"\" ? \"\" : typeof n == \"object\" ? `${e}=${encodeURIComponent(JSON.stringify(n))}` : `${e}=${encodeURIComponent(n)}`;\n}\nfunction q({\n params: e,\n url: n\n}) {\n if (!e)\n return n;\n const t = Object.entries(e).map(\n ([a, s]) => I(a, s)\n );\n return `${n}?${t.filter(Boolean).join(\"&\")}`;\n}\nfunction w(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nvar A, V;\nfunction C() {\n if (V) return A;\n V = 1;\n var e = function(o) {\n return n(o) && !t(o);\n };\n function n(r) {\n return !!r && typeof r == \"object\";\n }\n function t(r) {\n var o = Object.prototype.toString.call(r);\n return o === \"[object RegExp]\" || o === \"[object Date]\" || l(r);\n }\n var a = typeof Symbol == \"function\" && Symbol.for, s = a ? Symbol.for(\"react.element\") : 60103;\n function l(r) {\n return r.$$typeof === s;\n }\n function u(r) {\n return Array.isArray(r) ? [] : {};\n }\n function i(r, o) {\n return o.clone !== !1 && o.isMergeableObject(r) ? d(u(r), r, o) : r;\n }\n function y(r, o, c) {\n return r.concat(o).map(function(m) {\n return i(m, c);\n });\n }\n function p(r, o) {\n if (!o.customMerge)\n return d;\n var c = o.customMerge(r);\n return typeof c == \"function\" ? c : d;\n }\n function b(r) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(r).filter(function(o) {\n return Object.propertyIsEnumerable.call(r, o);\n }) : [];\n }\n function f(r) {\n return Object.keys(r).concat(b(r));\n }\n function _(r, o) {\n try {\n return o in r;\n } catch {\n return !1;\n }\n }\n function O(r, o) {\n return _(r, o) && !(Object.hasOwnProperty.call(r, o) && Object.propertyIsEnumerable.call(r, o));\n }\n function E(r, o, c) {\n var m = {};\n return c.isMergeableObject(r) && f(r).forEach(function(T) {\n m[T] = i(r[T], c);\n }), f(o).forEach(function(T) {\n O(r, T) || (_(r, T) && c.isMergeableObject(o[T]) ? m[T] = p(T, c)(r[T], o[T], c) : m[T] = i(o[T], c));\n }), m;\n }\n function d(r, o, c) {\n c = c || {}, c.arrayMerge = c.arrayMerge || y, c.isMergeableObject = c.isMergeableObject || e, c.cloneUnlessOtherwiseSpecified = i;\n var m = Array.isArray(o), T = Array.isArray(r), P = m === T;\n return P ? m ? c.arrayMerge(r, o, c) : E(r, o, c) : i(o, c);\n }\n d.all = function(o, c) {\n if (!Array.isArray(o))\n throw new Error(\"first argument should be an array\");\n return o.reduce(function(m, T) {\n return d(m, T, c);\n }, {});\n };\n var U = d;\n return A = U, A;\n}\nvar L = C();\nconst M = /* @__PURE__ */ w(L);\nfunction k(e) {\n return M(\n {\n method: g.get,\n headers: {\n Accept: \"application/json\"\n }\n },\n e\n );\n}\nfunction S(e, n) {\n return M(\n {\n method: g.post,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(n)\n },\n e\n );\n}\nconst B = {\n GET: k,\n POST: S,\n PUT: S,\n PATCH: S,\n DELETE: k\n};\nfunction x({\n body: e,\n accessToken: n,\n method: t,\n ...a\n}) {\n let s = n;\n return s && !s.includes(\"Bearer\") && (s = \"Bearer \" + s), B[t](\n M(\n {\n method: t,\n headers: { ...!!s && { authorization: s } }\n },\n a\n ),\n e\n );\n}\nconst D = 6144;\nasync function $({\n signal: e,\n body: n,\n accessToken: t,\n credentials: a,\n method: s = g.get,\n params: l,\n url: u,\n requestOptions: { getMaxUrlLength: i } = {\n getMaxUrlLength: D\n },\n ...y\n}) {\n let p = q({ url: u, params: l }), b = n, f = s;\n s === g.get && p.length > i && (b = l, f = g.post, p = u);\n const _ = x({\n body: b,\n accessToken: t ?? a?.accessToken,\n method: f,\n ...y\n });\n e && (_.signal = e);\n const O = await R(p, _);\n if (!O.ok) {\n const d = await O.text();\n throw new Error(d);\n }\n return O.status === 204 ? Promise.resolve() : await O.json();\n}\nconst v = {\n running: \"running\",\n pending: \"pending\",\n failure: \"failure\",\n cancelled: \"cancelled\",\n success: \"success\"\n};\nfunction G({\n accessToken: e,\n connection: n,\n credentials: t,\n sources: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/export`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.post,\n body: {\n sources: a\n },\n ...i\n });\n}\nasync function Q({\n accessToken: e,\n connection: n,\n credentials: t,\n query: a,\n metadata: s,\n baseUrl: l = h,\n apiVersion: u = j,\n fetcherOptions: { signal: i, ...y } = {}\n}) {\n const p = e ?? t?.accessToken, b = l ?? t?.apiBaseUrl, f = u ?? t?.apiVersion, _ = `${b}/${f}/sql/${n}/job`;\n return $({\n accessToken: p,\n signal: i,\n url: _,\n method: g.post,\n body: {\n query: a.trim(),\n metadata: s\n },\n ...y\n });\n}\nasync function H({\n url: e,\n accessToken: n,\n credentials: t,\n params: a = {},\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = n ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/lds/${e}`;\n return $({\n signal: u,\n accessToken: y,\n url: f,\n method: g.get,\n params: a,\n ...i\n });\n}\nasync function z({\n accessToken: e,\n connection: n,\n query: t,\n credentials: a,\n params: s = {},\n queryParameters: l,\n method: u = g.get,\n baseUrl: i = h,\n apiVersion: y = j,\n fetcherOptions: { signal: p, ...b } = {}\n}) {\n const f = e ?? a?.accessToken, _ = i ?? a?.apiBaseUrl, O = y ?? a?.apiVersion, E = `${_}/${O}/sql/${n}/query`, d = N(t), U = u !== g.get ? \"body\" : \"params\";\n return $({\n signal: p,\n accessToken: f,\n url: E,\n method: u,\n [U]: {\n q: d,\n ...s,\n queryParameters: l\n },\n ...b\n });\n}\nfunction N(e) {\n return e && e.replace(\n /'([^'\\\\]*(\\\\.[^'\\\\]*)*)'|\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)\"/g,\n (n) => n\n ).replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \").replace(/--.*$/gm, \"\").replace(/\\s+/g, \" \").trim();\n}\nasync function K({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/export/${a}`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.get,\n ...i\n });\n}\nasync function X({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/job/${a}`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.get,\n ...i\n });\n}\nasync function Y({\n accessToken: e,\n connection: n,\n credentials: t,\n metadataFilter: a = void 0,\n createdSince: s = void 0,\n userId: l = void 0,\n baseUrl: u = h,\n apiVersion: i = j,\n fetcherOptions: { signal: y, ...p } = {}\n}) {\n const b = e ?? t?.accessToken, f = u ?? t?.apiBaseUrl, _ = i ?? t?.apiVersion, O = `${f}/${_}/sql/${n}/jobs`;\n return $({\n accessToken: b,\n signal: y,\n url: O,\n method: g.get,\n params: {\n user_id: l,\n created_since: s,\n metadata_filter: a\n },\n ...p\n });\n}\nfunction W({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n metadata: s,\n baseUrl: l = h,\n apiVersion: u = j,\n fetcherOptions: { signal: i, ...y } = {}\n}) {\n const p = e ?? t?.accessToken, b = l ?? t?.apiBaseUrl, f = u ?? t?.apiVersion, _ = `${b}/${f}/sql/${n}/job/${a}`;\n return $({\n accessToken: p,\n signal: i,\n url: _,\n method: g.patch,\n body: {\n metadata: s\n },\n ...y\n });\n}\nexport {\n h as DEFAULT_CARTO_API_URL,\n j as DEFAULT_CARTO_API_VERSION,\n J as DEFAULT_CLIENT_ID,\n g as RequestMethods,\n G as createExport,\n Q as createJob,\n $ as executeFetch,\n H as executeLDS,\n z as executeSQL,\n K as getExport,\n X as getJob,\n v as jobStatus,\n Y as listJobs,\n W as updateJob\n};\n//# sourceMappingURL=index.js.map\n","import { create } from 'zustand'\nimport type {\n AllQuerySource,\n AllRasterSource,\n AllTableSource,\n AllTilesetSource,\n Source,\n SourceStore,\n} from './types'\nimport {\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n DEFAULT_CLIENT_ID,\n} from '@carto/ps-services'\nimport {\n TileFormat,\n WidgetQuerySource,\n WidgetTableSource,\n WidgetTilesetSource,\n WidgetRasterSource,\n addFilter,\n removeFilter,\n type Filters,\n FilterType,\n type SpatialDataType,\n} from '@carto/api-client'\nimport { useMemo } from 'react'\nimport { devtools } from 'zustand/middleware'\n\nexport const useSourceStore = create<SourceStore>()(\n devtools((set, get) => ({\n sources: {},\n filters: {},\n setSource: (id, source) =>\n set(\n (state) => {\n const sources = { ...state.sources }\n\n const widgetClient = sources[id]?.widgets\n if (widgetClient) {\n widgetClient.destroy()\n delete sources[id]!.widgets\n }\n\n if (!source) {\n delete sources[id]\n return { sources }\n }\n\n const previousSource = sources[id]\n const newSource = {\n apiBaseUrl: DEFAULT_CARTO_API_URL,\n clientId: DEFAULT_CLIENT_ID,\n apiVersion: DEFAULT_CARTO_API_VERSION,\n ...previousSource,\n ...source,\n } as Source\n\n const widgets = getWidgetSource({\n source: newSource,\n })\n\n newSource.widgets = widgets\n\n sources[id] = newSource\n\n return { sources }\n },\n undefined,\n 'setSource',\n ),\n removeSource: (id) =>\n set(\n (state) => {\n const sources = { ...state.sources }\n\n const widgetClient = sources[id]?.widgets\n if (widgetClient) {\n widgetClient.destroy()\n delete sources[id]!.widgets\n }\n\n delete sources[id]\n return { sources }\n },\n undefined,\n 'removeSource',\n ),\n setFilters: (id, newFilters) =>\n set(\n (state) => {\n let filters = {} as Filters\n const currentFilters = state.filters[id] ?? {}\n\n if (newFilters.length !== 0) {\n filters = newFilters.reduce((acc, filter) => {\n // important: removeFilter and addFilter preserve the reference to the same object\n if (!('values' in filter) || !filter.values?.length) {\n return removeFilter(acc, filter)\n }\n return addFilter(acc, filter)\n }, currentFilters)\n }\n\n return {\n filters: {\n ...state.filters,\n [id]: { ...filters }, // important: destructuring here to not conservere the reference to the same object\n },\n }\n },\n undefined,\n 'setFilters',\n ),\n removeFilters: (id, column, owner) =>\n set(\n (state) => {\n const currentFilters = state.filters[id] ?? {}\n if (!currentFilters) {\n return state\n }\n\n let filters = {}\n if (column) {\n filters = removeFilter(currentFilters, { column, owner })\n }\n\n return {\n filters: {\n ...state.filters,\n [id]: { ...filters }, // important: destructuring here to not conservere the reference to the same object\n },\n }\n },\n undefined,\n 'removeFilters',\n ),\n invalidateSourcesCache: (ids, { timeout = 500, maxAge = 10 } = {}) => {\n ids.forEach((id) => {\n get().setSource(id, {\n headers: {\n 'Cache-Control': `no-cache, max-age=${maxAge}`,\n },\n })\n })\n\n setTimeout(() => {\n ids.forEach((id) => {\n const source = get().sources[id]\n if (source) {\n delete source.headers\n get().setSource(id, source)\n }\n })\n }, timeout)\n },\n })),\n)\n\n/**\n * Shortcut to grabbing the source from the sources store object\n * @param id - the id of the source you want to grab\n * @returns source object without filters\n */\nexport function useSource(id: string) {\n return useSourceStore((state) => state.sources[id])\n}\n\n/**\n * Shortcut to grabbing the filters from the filters store object\n * @param id - the id of the source the filters are applied to\n * @returns filters object as used in the `@carto/api-client` methods calls\n */\nexport function useFilters(id: string) {\n return useSourceStore((state) => state.filters[id])\n}\n\n/**\n * Returns a source together with its filters, pulling from the separate `sources` and `filters` state objects\n * @param id - the id of the source\n * @returns source object as used in `@carto/api-client`\n */\nexport function useSourceWithFilters(id: string) {\n const source = useSourceStore((state) => state.sources[id])\n const filters = useSourceStore((state) => state.filters[id])\n\n return useMemo(() => {\n if (!source) {\n return undefined\n }\n return {\n ...source,\n filters: filters ?? {},\n }\n }, [source, filters])\n}\n\nexport function getFilterValues(\n filters: Filters | undefined,\n { column, type }: { column: string; type: FilterType },\n) {\n return filters?.[column]?.[type]?.values ?? []\n}\n\nfunction getSpatialDataFallback(source: Source) {\n const [, fallback] = source.type.split('+', 2)\n return {\n spatialDataType: (source.spatialDataType ??\n fallback ??\n 'geo') as SpatialDataType,\n spatialDataColumn: source.spatialDataColumn ?? fallback ?? 'geom',\n }\n}\n\nfunction getWidgetSource({ source }: { source: Source }) {\n const { spatialDataType, spatialDataColumn } = getSpatialDataFallback(source)\n\n const options = {\n query: () => {\n const newSource = source as Source & AllQuerySource\n return new WidgetQuerySource({\n ...newSource,\n accessToken: '',\n sqlQuery: newSource.data,\n spatialDataType,\n spatialDataColumn,\n })\n },\n table: () => {\n const newSource = source as Source & AllTableSource\n return new WidgetTableSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType,\n spatialDataColumn,\n })\n },\n tileset: () => {\n const newSource = source as Source & AllTilesetSource\n return new WidgetTilesetSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n tileFormat: newSource.tileFormat ?? TileFormat.BINARY,\n spatialDataType,\n spatialDataColumn,\n })\n },\n raster: () => {\n const newSource = source as Source & AllRasterSource\n\n if (!newSource.rasterMetadata) {\n return null\n }\n\n return new WidgetRasterSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: 'quadbin',\n spatialDataColumn: 'quadbin',\n rasterMetadata: newSource.rasterMetadata,\n })\n },\n }\n\n const key = source.type.split('+')[0] as keyof typeof options\n const option = options[key]\n\n return option?.() as Source['widgets']\n}\n","import { useFilters } from '../providers/sources/store'\nimport { useMemo } from 'react'\nimport deepmerge from 'deepmerge'\nimport { addFilter, type AddFilterOptions } from '@carto/api-client'\n\nexport function useFiltersMerged(\n sourceId: string,\n additionalFilter?: AddFilterOptions[],\n) {\n const filters = useFilters(sourceId)\n\n return useMemo(() => {\n if (!additionalFilter?.length) return filters\n const computedFilters = additionalFilter.reduce((acc, filter) => {\n return addFilter(acc, filter)\n }, {})\n return deepmerge(filters ?? {}, computedFilters) as typeof filters\n }, [filters, additionalFilter])\n}\n","import { useMemo } from 'react'\nimport { useSource } from '../providers/sources/store'\n\nexport function useWidgetModel(accessToken: string, sourceId: string) {\n const source = useSource(sourceId)\n return useMemo(() => {\n const widgetModel = source?.widgets\n if (!widgetModel || !accessToken) {\n return null\n }\n // eslint-disable-next-line react-hooks/react-compiler\n widgetModel.props.accessToken = accessToken\n return widgetModel\n }, [accessToken, source])\n}\n","const RELEVANT_HEADERS = ['authorization', 'cache-control']\n\nexport function getRelevantHeaders(\n headers: Record<string, string> | undefined,\n) {\n if (!headers || typeof headers !== 'object') {\n return ''\n }\n\n const entries = Object.fromEntries(\n Object.entries(headers).filter(([key]) =>\n RELEVANT_HEADERS.includes(key.toLowerCase()),\n ),\n )\n\n return JSON.stringify(entries)\n}\n","import type { ModelProps } from './types'\nimport { useFiltersMerged } from './use-filters-merged'\nimport { useWidgetModel } from './use-widget-model'\nimport { getRelevantHeaders } from './utils/get-relevant-headers'\n\nexport function useCommonModel<TRequestOptions, TResponse>({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n}: Pick<\n ModelProps<TRequestOptions, TResponse>,\n 'accessToken' | 'sourceId' | 'additionalFilter' | 'widgetProps'\n>) {\n const mergedFilters = useFiltersMerged(sourceId, additionalFilter)\n const widgetModel = useWidgetModel(accessToken, sourceId)\n\n const queryKey = [\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.queryParameters,\n mergedFilters,\n getRelevantHeaders(widgetModel?.props.headers),\n ]\n\n return { mergedFilters, widgetModel, queryKey }\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n CategoryRequestOptions,\n CategoryResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useCategories({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<CategoryRequestOptions, CategoryResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['categories', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getCategories({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function CategoriesModel({\n children,\n ...modelProps\n}: ModelProps<CategoryRequestOptions, CategoryResponse> & {\n children: (props: UseQueryResult<CategoryResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useCategories(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n FeaturesRequestOptions,\n FeaturesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useFeatures({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['features', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getFeatures({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FeaturesModel({\n children,\n ...modelProps\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse> & {\n children: (props: UseQueryResult<FeaturesResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFeatures(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { FormulaRequestOptions, FormulaResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useFormula({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FormulaRequestOptions, FormulaResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['formula', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getFormula({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FormulaModel({\n children,\n ...modelProps\n}: ModelProps<FormulaRequestOptions, FormulaResponse> & {\n children: (props: UseQueryResult<FormulaResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFormula(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n HistogramRequestOptions,\n HistogramResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useHistogram({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<HistogramRequestOptions, HistogramResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['histogram', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getHistogram({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function HistogramModel({\n children,\n ...modelProps\n}: ModelProps<HistogramRequestOptions, HistogramResponse> & {\n children: (props: UseQueryResult<HistogramResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useHistogram(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { RangeRequestOptions, RangeResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useRange({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<RangeRequestOptions, RangeResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['range', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getRange({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function RangeModel({\n children,\n ...modelProps\n}: ModelProps<RangeRequestOptions, RangeResponse> & {\n children: (props: UseQueryResult<RangeResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useRange(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { ScatterRequestOptions, ScatterResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useScatter({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<ScatterRequestOptions, ScatterResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['scatter', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getScatter({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function ScatterModel({\n children,\n ...modelProps\n}: ModelProps<ScatterRequestOptions, ScatterResponse> & {\n children: (props: UseQueryResult<ScatterResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useScatter(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { TableRequestOptions, TableResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useTable({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TableRequestOptions, TableResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['table', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getTable({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TableModel({\n children,\n ...modelProps\n}: ModelProps<TableRequestOptions, TableResponse> & {\n children: (props: UseQueryResult<TableResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useTable(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useTimeSeries({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['timeSeries', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getTimeSeries({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TimeSeriesModel({\n children,\n ...modelProps\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse> & {\n children: (\n props: UseQueryResult<TimeSeriesResponse, Error>,\n ) => React.ReactNode\n}) {\n const queryResult = useTimeSeries(modelProps)\n return children(queryResult)\n}\n","export const clientID = 'ps'\n","import type { PropsWithChildren } from 'react'\nimport type { MapProviderProps } from './providers/map/types'\nimport type { LassoToolsProviderProps } from './editable/lasso-tools/provider/types'\nimport type { MeasurementToolsProviderProps } from './editable/measurement-tools/provider/types'\nimport { MapProvider } from './providers/map/provider'\nimport { LassoToolsProvider } from './editable/lasso-tools/provider/provider'\nimport { MeasurementToolsProvider } from './editable/measurement-tools/provider/provider'\n\ninterface Props {\n maps: MapProviderProps['values']\n lassoTools?: LassoToolsProviderProps['values']\n measureTools?: MeasurementToolsProviderProps['values']\n}\n\nexport function MapsProvider({\n children,\n maps,\n lassoTools = [],\n measureTools = [],\n}: PropsWithChildren<Props>) {\n return (\n <MapProvider values={maps}>\n <LassoToolsProvider values={lassoTools}>\n <MeasurementToolsProvider values={measureTools}>\n {children}\n </MeasurementToolsProvider>\n </LassoToolsProvider>\n </MapProvider>\n )\n}\n","import { useCallback, useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { sortLayers } from './utils/sort-layers'\nimport type { Layer, LayerLegend } from './providers/layers/types'\n\nexport function useLegend<T>(\n layersId: string[],\n callback: (layer: Layer) => T,\n) {\n const layers = useLayerStore((state) => state.layers)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const layersById = useMemo(() => {\n return sortLayers(\n layersId.map((id) => layers[id]).filter((l): l is Layer => !!l?.legend),\n ).toReversed()\n }, [layers, layersId])\n\n const legend = useMemo(() => {\n return layersById.map(callback)\n }, [callback, layersById])\n\n const onChangeVisibility = useCallback(\n ({\n id,\n visible,\n ...legend\n }: {\n id: string\n visible: boolean\n } & Partial<LayerLegend>) => {\n setLayer(id, {\n props: { visible },\n legend,\n })\n },\n [setLayer],\n )\n\n const onChangeRowCollapse = useCallback(\n ({ id, collapsed }: { id: string; collapsed: boolean }) => {\n setLayer(id, {\n legend: {\n collapsed,\n },\n })\n },\n [setLayer],\n )\n\n const onChangeOpacity = useCallback(\n ({ id, opacity }: { id: string; opacity: number }) => {\n setLayer(id, {\n props: { opacity },\n })\n },\n [setLayer],\n )\n\n return {\n legend,\n onChangeVisibility,\n onChangeOpacity,\n onChangeRowCollapse,\n }\n}\n","import { useCallback, useState } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport type { MapRef } from 'react-map-gl/maplibre'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport html2canvas from 'html2canvas'\n\nexport function useMapScreenshot({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const [screenshot, setScreenshot] = useState<string | undefined>(undefined)\n const [isLoading, setIsLoading] = useState(false)\n const [error, setError] = useState<Error | undefined>(undefined)\n\n const basemap = useMapStore((state) => state.maps[mapId]?.basemap)!\n const deckInstanceFn = useMapStore((state) => state.getDeckInstance)\n const overlayInstanceFn = useMapStore((state) => state.getOverlayInstance)\n\n const areLayersLoaded = useMapStore((state) => state.areLayersLoaded[mapId])!\n const isLoaded = useMapStore((state) => state.maps[mapId]?.isLoaded)!\n\n const isAllLoaded = isLoaded && areLayersLoaded\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const _takeScreenshot = useCallback(async () => {\n const deckInstance = deckInstanceFn(mapId)!\n const overlayInstance = overlayInstanceFn(mapId)!\n\n try {\n const canvas = document.createElement('canvas')\n canvas.width = deckInstance.width ?? 0\n canvas.height = deckInstance.height ?? 0\n\n const context = canvas.getContext('2d')\n\n if (isGmaps) {\n const _overlayInstance = overlayInstance as google.maps.Map\n\n if ((_overlayInstance.getRenderingType() as string) !== 'RASTER') {\n throw new Error('Only raster type is supported for Google Maps')\n }\n\n const data = await html2canvas(_overlayInstance.getDiv(), {\n useCORS: true,\n })\n context?.drawImage(data, 0, 0, deckInstance.width, deckInstance.height)\n } else {\n const _overlayInstance = overlayInstance as MapRef\n _overlayInstance.redraw()\n context?.drawImage(\n _overlayInstance.getMap().getCanvas(),\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n }\n\n deckInstance?.redraw('screenshot')\n context?.drawImage(\n deckInstance.getCanvas()!,\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n\n const data = canvas.toDataURL()\n\n setScreenshot(data)\n } catch (err) {\n setError(err as Error)\n\n // eslint-disable-next-line\n console.error(err)\n } finally {\n setIsLoading(false)\n }\n }, [deckInstanceFn, isGmaps, mapId, overlayInstanceFn])\n\n const takeScreenshot = useCallback(() => {\n setError(undefined)\n setIsLoading(true)\n if (!isAllLoaded) return\n\n void _takeScreenshot()\n }, [_takeScreenshot, isAllLoaded])\n\n return {\n takeScreenshot,\n isLoading,\n screenshot,\n error,\n }\n}\n","import { useMemo } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport {\n createViewportSpatialFilter,\n type SpatialFilter,\n} from '@carto/api-client'\nimport { useLassoToolsState } from './editable/lasso-tools/provider/provider'\nimport { getMaskValues } from './editable/lasso-tools/util'\nimport { multiPolygon } from '@turf/turf'\nimport type { Polygon, Position } from 'geojson'\n\nexport function useSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewportSpatialFilter = useViewportSpatialFilter({ mapId })\n\n const lassoToolsSpatialFilter = useLassoToolsSpatialFilter({\n mapId,\n }) as unknown as SpatialFilter | undefined\n\n const staticSpatialFilter = useStaticSpatialFilter({ mapId })\n\n return {\n spatialFilter:\n lassoToolsSpatialFilter ?? staticSpatialFilter ?? viewportSpatialFilter,\n staticSpatialFilter,\n lassoToolsSpatialFilter,\n viewportSpatialFilter,\n }\n}\n\nexport function useViewportSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewport = useMapStore((state) => state.viewports[mapId])\n\n return useMemo(() => {\n if (!viewport) return\n return createViewportSpatialFilter(viewport.getBounds())\n }, [viewport])\n}\n\nexport function useLassoToolsSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const _values = useLassoToolsState((state) => state.data[mapId]?.values)\n\n return useMemo(() => {\n const values = getMaskValues({ values: _values }).filter(\n (value) => value.properties.visible,\n )\n\n if (!values?.length) return\n\n return multiPolygon(\n values.map((value) => (value.geometry as Polygon).coordinates),\n ).geometry\n }, [_values])\n}\n\nexport function useStaticSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}): SpatialFilter | undefined {\n const spatialFilter = useMapStore((state) => state.spatialFilter[mapId])\n\n return useMemo(() => {\n if (!spatialFilter || !Object.keys(spatialFilter).length) return\n\n // Flatten the array to match the expected Position[][][] type\n const coordinates: Position[][][] = Object.values(spatialFilter)\n .filter((value) => value !== null && value !== undefined)\n .flatMap((geom) => {\n // If it's a Polygon, wrap its coordinates in an array to make it compatible with MultiPolygon format\n if (geom.type === 'Polygon') {\n return [geom.coordinates]\n }\n\n // Otherwise, validate or transform `geom` to ensure it matches the expected format\n return geom.coordinates\n })\n\n return multiPolygon(coordinates).geometry\n }, [spatialFilter])\n}\n","export const formatterTypes = {\n currency: 'CURRENCY',\n default: 'DEFAULT',\n number: 'NUMBER',\n} as const\n","import { formatCurrency, formatNumber } from '@carto/ps-utils'\nimport { formatterTypes } from './const'\nimport type { Formatters, Value } from './types'\n\nexport const FORMATTERS: Formatters = {\n [formatterTypes.currency]: {\n type: formatterTypes.currency,\n format: (value: Value, locale: string) => {\n return formatCurrency(value as number, locale)\n },\n },\n [formatterTypes.number]: {\n type: formatterTypes.number,\n format: (value: Value, locale: string) => {\n return formatNumber(value as number, locale)\n },\n },\n [formatterTypes.default]: {\n type: formatterTypes.default,\n format: (value: Value) => {\n return value.toLocaleString()\n },\n },\n}\n","import { formatterTypes } from './const'\nimport { FORMATTERS } from './object-to-html.contants'\nimport type { FieldFormatter, ObjectToHtmlOptions, Value } from './types'\n\n/**\n * Returns a string with the HTML content for an object.\n *\n * @param {ObjectToHtmlOptions} - The options of the formatter.\n *\n * @return {string}\n *\n * @defaultValues\n *\n * | Prop | Value |\n * | --- | --- |\n * | `formatters` | `{}` |\n * | `includeColumns` | `Object.keys(properties)` |\n * | `locale` | `en-US` |\n * | `showColumnName` | `true` |\n * | `title` | `''` |\n * | `getColumnName` | `Function` |\n * | `getFieldHtml` | `Function` |\n * | `getTitle` | `Function` |\n * | `getValue` | `Function` |\n *\n * @example\n * const properties = {\n * name: 'I am a feature',\n * price: 100,\n * }\n *\n * const html = objectToHtml({\n * properties,\n * formatters: {\n * price: 'CURRENCY',\n * },\n * locale: 'es-ES',\n * })\n */\nexport function objectToHtml<T extends Record<string, Value>>({\n properties,\n formatters = {},\n includeColumns = Object.keys(properties),\n locale = 'en-US',\n showColumnName = true,\n title,\n getColumnName = _getColumnName,\n getFieldHtml = _getFieldHtml,\n getTitle = _getTitle,\n getValue = _getValue,\n}: ObjectToHtmlOptions<T>): string {\n const header = title ? getTitle(title) : ''\n\n const propNames = includeColumns\n\n const body = propNames.reduce((acc, cur) => {\n const formatter = formatters[cur]!\n const value = properties[cur]!\n\n const valueTransformed = getValue(value, locale, formatter)\n const columnName = showColumnName ? getColumnName(cur) : ''\n\n return acc + getFieldHtml(columnName, valueTransformed)\n }, '')\n\n return header + body\n}\n\nfunction _getTitle(title: string) {\n return `<h3 style=\"margin: 0\"><strong>${title}</strong></h3></br>`\n}\n\nfunction _getFieldHtml(columnName: string, value: Value) {\n const propHtml = `${columnName}${value}</br>`\n\n return propHtml\n}\n\nfunction _getValue(value: Value, locale: string, formatter?: FieldFormatter) {\n try {\n const format = getFormatterFunction(formatter)\n return format(value, locale)\n } catch {\n return value as string\n }\n}\n\nfunction getFormatterFunction(formatter?: FieldFormatter) {\n if (typeof formatter === 'function') {\n return formatter\n }\n\n const fn =\n (formatter && FORMATTERS[formatter]) ?? FORMATTERS[formatterTypes.default]\n\n return fn.format\n}\n\nfunction _getColumnName(propName: string) {\n return `<strong>${propName}</strong>: `\n}\n","import type { Layer } from '../providers/layers/types'\n\nexport function mappingLegendMeridian<T>(layer: Layer) {\n return {\n collapsed: layer.legend?.collapsed,\n collapsible: layer.legend?.collapsible,\n helperText: layer.legend?.helperText,\n id: layer.props.id,\n legend: layer.legend?.variables,\n maxZoom: layer.legend?.maxZoom,\n minZoom: layer.legend?.minZoom,\n opacity: layer.props.opacity ?? 1,\n showOpacityControl: layer.legend?.opacityControl,\n switchable: layer.legend?.switchable,\n title: layer.name,\n visible: layer.props.visible ?? true,\n } as T\n}\n","import type { ZoomControl } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function ZoomControls({ children, mapId }: ZoomControl) {\n const { zoom, maxZoom, minZoom } = useMapStore(\n (state) => state.viewStates[mapId]!,\n )\n const isLoaded = useMapStore((state) => state.areLayersLoaded[mapId])\n\n const setZoom = useMapStore((state) => state.setZoom)\n const flyTo = useMapStore((state) => state.flyTo)\n const resetViewState = useMapStore((state) => state.resetViewState)\n\n return children({\n zoom,\n maxZoom,\n minZoom,\n isLoading: !isLoaded,\n setZoom: useCallback((zoom) => setZoom(mapId, zoom), [mapId, setZoom]),\n flyTo: useCallback(\n (viewState: Parameters<typeof flyTo>[1]) => flyTo(mapId, viewState),\n [flyTo, mapId],\n ),\n resetViewState: useCallback(\n () => resetViewState(mapId),\n [resetViewState, mapId],\n ),\n })\n}\n","import {\n RequestMethods,\n executeFetch,\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n} from '@carto/ps-services'\nimport type { GetQueryStats } from './types'\nimport type { StatsResponse } from './types'\n\nexport async function getQueryStats<Attribute extends string | number>({\n baseUrl = DEFAULT_CARTO_API_URL,\n connection,\n accessToken,\n query,\n attribute,\n fetcherOptions: { signal, ...other } = {},\n queryParameters,\n params,\n apiVersion = DEFAULT_CARTO_API_VERSION,\n}: GetQueryStats) {\n const statsUrl = `${baseUrl}/${apiVersion}/stats/${connection}/${attribute}`\n\n return executeFetch<StatsResponse<Attribute>>({\n accessToken,\n signal,\n url: statsUrl,\n method: RequestMethods.get,\n params: { q: query, ...queryParameters, ...params },\n ...other,\n })\n}\n","import {\n RequestMethods,\n executeFetch,\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n} from '@carto/ps-services'\nimport type { GetTableStats } from './types'\nimport type { StatsResponse } from './types'\n\nexport async function getTableStats<Attribute extends string | number>({\n baseUrl = DEFAULT_CARTO_API_URL,\n connection,\n accessToken,\n table,\n attribute,\n params,\n fetcherOptions: { signal, ...other } = {},\n apiVersion = DEFAULT_CARTO_API_VERSION,\n}: GetTableStats) {\n const statsUrl = `${baseUrl}/${apiVersion}/stats/${connection}/${table}/${attribute}`\n\n return executeFetch<StatsResponse<Attribute>>({\n accessToken,\n signal,\n url: statsUrl,\n method: RequestMethods.get,\n params: { ...params },\n ...other,\n })\n}\n","import { vectorTilesetSource } from '@carto/api-client'\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query'\nimport { getQueryStats } from './get-query-stats'\nimport { getTableStats } from './get-table-stats'\nimport type { QuerySource, Source } from '../providers/sources/types'\nimport type { Stats, StatsResponse } from './types'\n\nexport function useStats<Attribute extends string | number>({\n source,\n attribute,\n accessToken,\n params,\n fetcherOptions,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: {\n source: Source | undefined\n attribute: Stats['attribute']\n accessToken: Stats['accessToken']\n params?: Stats['params']\n fetcherOptions?: Stats['fetcherOptions']\n useQueryProps?: Omit<\n UseQueryOptions<StatsResponse<Attribute>, Error>,\n 'queryKey' | 'queryFn'\n >\n}) {\n return useQuery<StatsResponse<Attribute>, Error>({\n queryKey: [source, attribute],\n queryFn: () =>\n getQueryFunction<Attribute>({\n source: source!,\n params,\n attribute,\n accessToken: accessToken!,\n fetcherOptions,\n }),\n select(data) {\n return {\n ...data,\n type: data.type.toLowerCase(),\n }\n },\n enabled: !!source && enabled,\n ...useQueryProps,\n })\n}\n\nfunction getQueryFunction<Attribute extends string | number>({\n source,\n params,\n attribute,\n accessToken,\n fetcherOptions,\n}: {\n source: Source\n params?: Stats['params']\n attribute: Stats['attribute']\n accessToken: NonNullable<Stats['accessToken']>\n fetcherOptions?: Stats['fetcherOptions']\n}) {\n if (source.type.startsWith('query')) {\n return getQueryStats<Attribute>({\n connection: source.connectionName,\n baseUrl: source.apiBaseUrl,\n apiVersion: source.apiVersion,\n accessToken,\n params,\n query: source.data,\n queryParameters: (source as QuerySource).queryParameters,\n attribute,\n fetcherOptions,\n })\n }\n if (source.type.startsWith('table')) {\n return getTableStats<Attribute>({\n connection: source.connectionName,\n baseUrl: source.apiBaseUrl,\n apiVersion: source.apiVersion,\n params,\n accessToken,\n table: source.data,\n attribute,\n fetcherOptions,\n })\n }\n if (source.type.startsWith('tileset')) {\n return getStatsFromTileset<Attribute>({\n source,\n accessToken,\n target: source.data,\n attribute,\n })\n }\n\n throw new Error(`Unsupported source type: ${source.type}`)\n}\n\n// Catch Stats from tileset\n\nasync function getStatsFromTileset<Attribute extends string | number>({\n source,\n accessToken,\n target,\n attribute,\n}: {\n source: Source\n accessToken: string\n target: string\n attribute: string\n}) {\n const tileJson = await vectorTilesetSource({\n connectionName: source.connectionName,\n apiBaseUrl: source.apiBaseUrl,\n accessToken: accessToken,\n clientId: source.clientId,\n tableName: target,\n })\n if (!tileJson?.tilestats?.layers?.[0]?.attributes) {\n throw new Error(`${attribute} not found in tileset attributes`)\n }\n\n const tileStatsAttributes = tileJson.tilestats.layers[0].attributes\n const columnStats = tileStatsAttributes.find((p) => p.attribute === attribute)\n\n if (!columnStats) {\n throw new Error(`${attribute} not found in tileset attributes`)\n }\n\n return columnStats as StatsResponse<Attribute>\n}\n"],"names":["GmapsBasemap","roadmap","satellite","hybrid","CartoBasemaps","darkMatter","positron","voyager","CartoBasemapURL","MapsTypes","maplibre","googleMaps","MAPS_BASEMAP","url","type","dark","getCursorDefault","isDragging","isHovering","getTooltipDefault","info","html","style","padding","background","MapLibre","t0","$","_c","controller","getCursor","getTooltip","id","instanceRef","layers","mapStyle","onLoad","onViewStateChange","overlayRef","parameters","rest","t1","t2","filter","_temp","map","_temp2","_layers","t3","t4","value","t5","depthTest","t6","MapReferences","t7","t8","jsx","Map","_temp3","t9","MapProvider","jsxs","DeckGL","classList","document","querySelector","remove","Layer","props","l","default","mapLibre","useMapLibre","DeckGlOverlay","Symbol","for","GoogleMapsOverlay","interleaved","deck","useMap","setMap","finalize","useEffect","setProps","GoogleMaps","basemap","gmapsProps","apiKey","APIProviderProps","_gmapsProps","_controller","useMemo","dragPan","doubleClickZoom","scrollZoom","mappingGmapsToDeck","useCallback","detail","center","zoom","heading","tilt","latitude","lat","longitude","lng","bearing","pitch","handleViewStateChange","newViewState","current","_deck","viewState","_viewState","width","height","interactionState","isZooming","APIProvider","initialViewState","gmaps","DeckGLComponent","undefined","isLoaded","setLoaded","useState","isGmaps","t10","e","index","state","loaded","i","handleLoad","t11","t12","t13","t14","isAllLoaded","every","t15","loaded_0","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","options","deepmerge","defaultArrayMerge","target","source","element","getMergeFunction","key","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","next","deepmerge_1","cjs","createMapSlice","initProps","defaultProps","reduce","acc","curr","set","get","maps","setBasemap","currentType","newType","setLoad","getOverlayInstance","getDeckInstance","getViewState","getViewports","rect","getViewport","getBounds","bounds","store","newBounds","WebMercatorViewport","fitBounds","boundsOptions","viewStateOptions","addLayers","Set","removeLayers","layer","includes","setController","currentController","newController","createAreLayersLoaded","areLayersLoaded","setLayersLoad","createViewStateSlice","initialViewStates","viewStates","viewports","updateViewPort","vp","setViewState","setInitialViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonSlice","_","flyTo","finalViewState","loadInitialViewState","resetViewState","createSpatialFilterSlice","spatialFilter","setSpatialFilter","mapId","structuredClone","createMapStore","createStore","args","MapContext","createContext","children","values","storeRef","useMapStore","selector","useContext","Object","keys","length","Error","useStore","BasemapsControls","basemap_0","state_0","EditType","addFeature","addTentativePosition","updateTentativeFeature","cancel","finish","addPosition","CustomCompositeEditMode","CompositeMode","constructor","TranslateMode","ModifyMode","handleKeyUp","event","resetClickSequence","onEdit","updatedData","data","editType","editContext","MAP_LASSO_TOOLS_LAYER_ID","MAP_MASK_LAYER_ID","DEFAULT_LASSO_TOOLS_LAYER_PROPS","billboard","editHandlePointRadiusUnits","editHandlePointRadiusMinPixels","editHandlePointRadiusMaxPixels","editHandlePointStrokeWidth","getEditHandlePointRadius","stroked","filled","lineWidthUnits","getLineWidth","lineWidthMinPixels","DEFAULT_LASSO_TOOLS_COLORS","editing","border","fill","point","finished","DEFAULT_LASSO_TOOLS_PROPS","styles","colors","labels","mask","EXTENSION_FILTER","DataFilterExtension","filterSize","DEFAULT_MASK_LAYER_PROPS","operation","pickable","visible","extensions","filterRange","DEFAULT_LASSO_TOOLS_MODES","polygon","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayerStore","create","setLayer","_layer","extension","some","equals","push","legend","updateTriggers","removeLayer","EVENT_TYPES","CustomEditableGeojsonLayer","EditableGeoJsonLayer","updateState","oldProps","context","changeFlags","eventManager","_removeEventHandlers","_addEventHandlers","_getEventManager","eventHandler","_editableLayerState","eventType","on","priority","_eventManager","off","getLassoToolsLayer","getLayerProps","layerProps","getLineColor","getFillColor","pointColor","_layerProps","modeConfig","preventOverlappingLines","defaultLayerProps","getTentativeLineColor","getTentativeFillColor","getEditHandlePointColor","getEditHandlePointOutlineColor","outline","dataComparator","oldData","features","createLassoToolsStore","enabled","modeInstance","modes","modeSelected","setEnabled","setValue","_value","setVisibility","valueId","properties","setModeSelected","setModeInstance","LassoToolsContext","LassoToolsProvider","useLassoToolsState","LassoToolsControls","Mode","serialize","label","handleModeSelected","getMaskValues","convert","configureMeasurements","convertMetersTo","distance","unit","from","CONVERSIONS_UNITS","MapMeasurementUnit","meter","to","DEFAULT_AUTO_SPLIT_NUMBER","getTextLayerFormattedDistance","meters","locale","autoSplitNumber","intlOptions","isMetricSystem","MapMeasurementUnitAuto","isImperialSystem","isAuto","_unit","_number","isSmallDistance","convertUnit","kilometer","INTL_UNITS","feet","mile","formatNumber","unitDisplay","notation","minimumFractionDigits","maximumFractionDigits","getDeckController","hasDoubleClickZoom","buildTooltip","position","formatTooltip","turfOptions","units","text","parseFloat","toString","toFixed","measurementCallback","CustomMeasureAreaMode","MeasureAreaMode","_isMeasuringSessionFinished","area","tooltips","resultPolygon","handleClick","picks","clickedEditHandle","getPickedEditHandle","clickSequence","getClickSequence","positionAdded","allowOverlapping","addClickSequence","coordinates","isFinalizedEdition","finalizeEdition","mapCoords","resetEdition","handlePointerMove","tentativeGuide","getTentativeGuide","geometry","centroid","getGuides","getTooltips","positionIndexes","overlappingLines","currentLine","otherLines","slice","intersectingPoints","lineIntersect","polygonToAdd","selectedIndexes","editAction","getAddFeatureOrBooleanPolygonAction","positions","getTooltipText","CustomMeasureBufferMode","_currentArea","areaCircle","checkAndFinishPolygon","tentativeFeature","onUpdateCursor","radius","CustomMeasureDistanceMode","MeasureDistanceMode","_currentDistance","stopPropagation","clickSequenceLength","_currentTooltips","MAP_MEASURE_LAYER_ID","DEFAULT_LAYER_PROPS","_subLayerProps","fontFamily","fontWeight","getSize","lineHeight","getPixelOffset","getTextAnchor","getAlignmentBaseline","guides","DEFAULT_COLORS","DEFAULT_PROPS","centimeter","milimeter","yard","MapMeasurementUnitTurf","MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES","system","MEASUREMENT_TOOLS_UNITS_DISTANCE","MEASUREMENT_TOOLS_UNITS_AREA","DEFAULT_MEASUREMENT_TOOLS_MODES","buffer","DEFAULT_MEASUREMENT_TOOLS_UNITS","useEventManager","layerId","store_0","overlayInstance","getDiv","store_1","EXCEPTED_LAYER_IDS","LassoTools","defaultType","mapLayers","useShallow","mapLayersVisibilityRef","useRef","maskValues","maskFeatureCollection","maskVisible","setData","selectedFeatureIndexes","setSelectedFeatureIndexes","setDataByValues","_data","feature","autoIncrement","handleCancelEdit","forEach","crypto","randomUUID","guideColorEditing","pointColorEditing","fillColorEditing","borderFinished","fillFinished","getFilterValue","onClick","_e","isGuide","d","ViewMode","f","Number","GeoJsonLayer","currentLayer","find","MaskExtension","maskId","Controls","getMeasurementToolsLayer","guideColor","textOptions","_distance","outlineColor","outlineWidth","fontSettings","sdf","smoothing","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_1","_setDistance","distance_0","state_3","state_4","_setVisibility","enabled_0","state_6","_setModeSelected","state_8","_setFinished","_temp4","finished_0","state_10","_setLocale","_temp5","locale_0","state_12","_setInstance","_temp6","modeInstance_0","t16","state_14","_setPositions","_temp7","t17","positions_0","t18","state_16","_setUnit","_temp8","t19","unit_0","t20","clearLayer","t21","enabled_1","toggleLayer","t22","state_17","state_15","state_13","state_11","state_9","state_7","state_5","state_2","MeasurementToolsControl","_toggleLayer","ModeClass","enable","MeasurementTools","previousController","l_0","useLayers","layersMap","defaultLastLayerOrder","sortLayers","sortedLayers","sort","a","b","order","Infinity","lastLayers","ZOOM_DEBOUNCE_MS","MapComponent","timerRef","computedLayers","callback","clearInterval","setTimeout","onAfterRender","handleAfterRender","_onDragEnd","onDragEnd","handleDragEnd","__global__","global","__globalThis__","F","globalThis","exports","g","support","isDataView","obj","viewClasses","isArrayBufferView","normalizeName","name","normalizeValue","iteratorFor","items","iterator","Headers","headers","header","oldValue","thisArg","consumed","body","fileReaderReady","reader","resolve","reject","readBlobAsArrayBuffer","blob","promise","readBlobAsText","match","encoding","readArrayBufferAsText","buf","view","chars","bufferClone","Body","rejected","isConsumed","decode","methods","normalizeMethod","method","upcased","Request","input","ctrl","reParamSearch","reQueryString","form","bytes","split","parseHeaders","rawHeaders","preProcessedHeaders","line","parts","error","Response","bodyInit","response","redirectStatuses","status","message","fetch","init","request","xhr","abortXhr","fixUrl","names","ctx","module","h","j","J","post","useSourceStore","devtools","sources","filters","setSource","widgetClient","widgets","destroy","previousSource","newSource","apiBaseUrl","DEFAULT_CARTO_API_URL","clientId","DEFAULT_CLIENT_ID","apiVersion","DEFAULT_CARTO_API_VERSION","getWidgetSource","removeSource","setFilters","newFilters","currentFilters","removeFilter","addFilter","removeFilters","column","owner","invalidateSourcesCache","ids","timeout","maxAge","useSource","useFilters","useSourceWithFilters","bb0","getFilterValues","getSpatialDataFallback","fallback","spatialDataType","spatialDataColumn","query","WidgetQuerySource","accessToken","sqlQuery","table","WidgetTableSource","tableName","tileset","WidgetTilesetSource","tileFormat","TileFormat","BINARY","raster","rasterMetadata","WidgetRasterSource","option","useFiltersMerged","sourceId","additionalFilter","computedFilters","useWidgetModel","widgetModel","RELEVANT_HEADERS","getRelevantHeaders","entries","fromEntries","toLowerCase","JSON","stringify","useCommonModel","widgetProps","mergedFilters","queryParameters","queryKey","useCategories","useQueryProps","signal","getCategories","queryFn","useQuery","CategoriesModel","modelProps","queryResult","useFeatures","getFeatures","FeaturesModel","useFormula","getFormula","FormulaModel","useHistogram","getHistogram","HistogramModel","useRange","getRange","RangeModel","useScatter","getScatter","ScatterModel","useTable","getTable","TableModel","useTimeSeries","getTimeSeries","TimeSeriesModel","clientID","MapsProvider","lassoTools","measureTools","useLegend","layersId","layersById","toReversed","onChangeVisibility","onChangeRowCollapse","collapsed","onChangeOpacity","opacity","useMapScreenshot","screenshot","setScreenshot","isLoading","setIsLoading","setError","deckInstanceFn","overlayInstanceFn","_takeScreenshot","deckInstance","canvas","createElement","getContext","_overlayInstance","getRenderingType","html2canvas","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","takeScreenshot","useSpatialFilter","viewportSpatialFilter","useViewportSpatialFilter","lassoToolsSpatialFilter","useLassoToolsSpatialFilter","staticSpatialFilter","useStaticSpatialFilter","viewport","createViewportSpatialFilter","_values","multiPolygon","value_0","flatMap","geom","formatterTypes","currency","number","FORMATTERS","format","formatCurrency","toLocaleString","objectToHtml","formatters","includeColumns","showColumnName","title","getColumnName","_getColumnName","getFieldHtml","_getFieldHtml","getTitle","_getTitle","getValue","_getValue","cur","formatter","valueTransformed","columnName","propHtml","getFormatterFunction","propName","mappingLegendMeridian","collapsible","helperText","variables","showOpacityControl","opacityControl","switchable","ZoomControls","zoom_0","getQueryStats","baseUrl","connection","attribute","fetcherOptions","other","params","statsUrl","executeFetch","RequestMethods","q","getTableStats","useStats","getQueryFunction","select","startsWith","connectionName","getStatsFromTileset","tileJson","vectorTilesetSource","tilestats","attributes","columnStats","p"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAKO,MAAMA,KAAe;AAAA,EAC1BC,SAAS;AAAA,EACTC,WAAW;AAAA,EACXC,QAAQ;AACV,GAKaC,IAAgB;AAAA,EAC3BC,YAAY;AAAA,EACZC,UAAU;AAAA,EACVC,SAAS;AACX,GAEaC,KAAkB;AAAA,EAC7B,CAACJ,EAAcE,QAAQ,GACrB;AAAA,EACF,CAACF,EAAcG,OAAO,GACpB;AAAA,EACF,CAACH,EAAcC,UAAU,GACvB;AACJ,GAEaI,KAAY;AAAA,EACvBC,UAAU;AAAA,EACVC,YAAY;AACd,GAEaC,KAOT;AAAA,EACF,CAACR,EAAcE,QAAQ,GAAG;AAAA,IACxBO,KAAKL,GAAgBJ,EAAcE,QAAQ;AAAA,IAC3CQ,MAAML,GAAUC;AAAAA,EAClB;AAAA,EACA,CAACN,EAAcG,OAAO,GAAG;AAAA,IACvBM,KAAKL,GAAgBJ,EAAcG,OAAO;AAAA,IAC1CO,MAAML,GAAUC;AAAAA,EAClB;AAAA,EACA,CAACN,EAAcC,UAAU,GAAG;AAAA,IAC1BQ,KAAKL,GAAgBJ,EAAcC,UAAU;AAAA,IAC7CS,MAAML,GAAUC;AAAAA,IAChBK,MAAM;AAAA,EACR;AAAA,EACA,CAACf,GAAaC,OAAO,GAAG;AAAA,IACtBa,MAAML,GAAUE;AAAAA,EAClB;AAAA,EACA,CAACX,GAAaE,SAAS,GAAG;AAAA,IACxBY,MAAML,GAAUE;AAAAA,EAClB;AAAA,EACA,CAACX,GAAaG,MAAM,GAAG;AAAA,IACrBW,MAAML,GAAUE;AAAAA,EAAAA;AAEpB;AC9DO,SAASK,GAAiB;AAAA,EAC/BC,YAAAA;AAAAA,EACAC,YAAAA;AAIF,GAAG;AACMD,SAAAA,IAAa,aAAaC,IAAa,YAAY;AAC5D;AAEO,SAASC,GAAkBC,GAAe;AAC3C,SAACA,EAAKC,OAEH;AAAA,IACLA,MAAM,qCAAqCD,EAAKC,IAAI;AAAA,IACpDC,OAAO;AAAA,MACLC,SAAS;AAAA,MACTC,YAAY;AAAA,IAAA;AAAA,EAEhB,IARuB;AASzB;ACjBO,SAAAC,GAAAC,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAAC,MAAAA,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC;AAAAb,EAAAA,SAAAD,KAAkB;AAAA,IAAAO,aAAAA;AAAAA,IAAAK,YAAAA;AAAAA,IAAAT,YAAAA;AAAAA,IAAAG,IAAAA;AAAAA,IAAAE,QAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAI,YAAAA;AAAAA,IAAAT,WAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAK,QAAAA;AAAAA,IAAAC,mBAAAA;AAAAA,IAAA,GAAAG;AAAAA,EAAAA,IAAAd,GAgBxBC,OAAAD,GAAAC,OAAAE,GAAAF,OAAAG,GAAAH,OAAAI,GAAAJ,OAAAK,GAAAL,OAAAM,GAAAN,OAAAO,GAAAP,OAAAQ,GAAAR,OAAAS,GAAAT,OAAAU,GAAAV,QAAAW,GAAAX,QAAAY,GAAAZ,QAAAa,MAAAX,IAAAF,EAAA,CAAA,GAAAG,IAAAH,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA,GAAAK,IAAAL,EAAA,CAAA,GAAAM,IAAAN,EAAA,CAAA,GAAAO,IAAAP,EAAA,CAAA,GAAAQ,IAAAR,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,GAAAU,IAAAV,EAAA,CAAA,GAAAW,IAAAX,EAAA,EAAA,GAAAY,IAAAZ,EAAA,EAAA,GAAAa,IAAAb,EAAA,EAAA;AAAAc,MAAAA,GAAAC;AAAAf,EAAAA,UAAAO,KAGKQ,IAAAR,EAAMS,OAAAC,EACoB,EAACC,IAAAC,EACyB,GAACnB,QAAAO,GAAAP,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAFrDe,IAAAA;AAFJ,QAAAK,IAAgBN,GAcHO,IAAAf;AAAqCgB,MAAAA;AAAAtB,EAAAA,UAAAS,KAIlCa,IAAAA,MACNb,EAAM;AAAA,IAAAtB,MACE;AAAA,IAAQoC,OAAA;AAAA,EAAA,CAEf,GAACvB,QAAAS,GAAAT,QAAAsB,KAAAA,IAAAtB,EAAA,EAAA;AAAAwB,MAAAA;AAAAxB,EAAAA,UAAAY,KAGQY,IAAA;AAAA,IAAAC,WAAA;AAAA,IAAA,GAGPb;AAAAA,EAAU,GACdZ,QAAAY,GAAAZ,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA0B,MAAAA;AAAA1B,EAAAA,UAAAW,2BAGAgB,MAA0BhB,YAAAA,EAAc,CAAA,GAAAX,QAAAW,GAAAX,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AAAA4B,MAAAA;AAAA5B,EAAAA,UAAAS,KAI/BmB,IAAAA,MACNnB,EAAM;AAAA,IAAAtB,MACE;AAAA,IAAMoC,OAAA;AAAA,EAAA,CAEb,GAACvB,QAAAS,GAAAT,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAAA6B,MAAAA;AAAA,EAAA7B,EAAAQ,EAAAA,MAAAA,KAAAR,UAAA4B,KAPNC,IAAA,gBAAAC,EAACC,MACY,eACDvB,UAAAA,GACF,QAAAoB,GAME,UAAAI,GAIV,CAAA,GAAAhC,QAAAQ,GAAAR,QAAA4B,GAAA5B,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA;AAAAiC,MAAAA;AAAAjC,SAAAA,UAAAoB,KAAApB,EAAAE,EAAAA,MAAAA,KAAAF,EAAA,EAAA,MAAAG,KAAAH,UAAAI,KAAAJ,EAAAK,EAAAA,MAAAA,KAAAL,EAAAU,EAAAA,MAAAA,KAAAV,EAAA,EAAA,MAAAa,KAAAb,UAAAqB,KAAArB,EAAAsB,EAAAA,MAAAA,KAAAtB,EAAA,EAAA,MAAAwB,KAAAxB,UAAA0B,KAAA1B,EAAA,EAAA,MAAA6B,2BArCPK,MACC,UAsCM,gBAAAJ,EAAA,OAAA,EAtCS,WAAA,cACb,UAAA,gBAAAK,GAACC,IACalC,EAAAA,YAAAA,GACRG,IAAAA,GACC,KAAAgB,GACGD,WACGjB,WAAAA,GACCC,YAAAA,GACJ,QAAAkB,GAMWZ,mBAAAA,GACP,YAAAc,GAIX,GACGX,GAEJa,UAAAA;AAAAA,IAAAA;AAAAA,IACAG;AAAAA,EAAAA,EAcF,CAAA,EACF,CAAA,GACF,GAAc7B,QAAAoB,GAAApB,QAAAE,GAAAF,QAAAG,GAAAH,QAAAI,GAAAJ,QAAAK,GAAAL,QAAAU,GAAAV,QAAAa,GAAAb,QAAAqB,GAAArB,QAAAsB,GAAAtB,QAAAwB,GAAAxB,QAAA0B,GAAA1B,QAAA6B,GAAA7B,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA,GAxCdiC;AAwCc;AAlEX,SAAAD,KAAA;AA6DUK,EADSC,SAAAC,cAAuB,0BAA0B,GAC1DF,UAAAG,OAAmB,yBAAyB;AAAA;AA7DtD,SAAArB,GAAApB,GAAA;AAqBO,QAAA;AAAA,IAAAZ,MAAAsD;AAAAA,IAAAC,OAAAA;AAAAA,EAAAA,IAAA3C;AAA+B0C,SAAAA,IAAAA,EAAOC,CAAK;AAAA;AArBlD,SAAAzB,GAAA0B,GAAA;AAoBkBA,SAAAA,CAAAA,CAAAA,GAACxD;AAAA;AAkD1B,SAAAwC,GAAA5B,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAuB;AAAA,IAAAU,YAAAA;AAAAA,EAAAA,IAAAZ,GAKrB;AAAA,IAAA6C,SAAAC;AAAAA,MAA8BC,GAAY;AAAChC,MAAAA,GAAAC;AAAAf,SAAAA,SAAA6C,KAEX/B,IAAAA,MACvB+B,GACN9B,KAAC8B,CAAQ,GAAC7C,OAAA6C,GAAA7C,OAAAc,GAAAd,OAAAe,MAAAD,IAAAd,EAAA,CAAA,GAAAe,IAAAf,EAAA,CAAA,IAFOW,GAAAA,GAAYG,GAE7BC,CAAU,GAAC;AAAA;ACvET,MAAMgC,KAAgBL,CAAAA,MAAA;AAAA1C,QAAAA,IAAAC,EAAA,CAAA;AAAAF,MAAAA,GAAAe;AAAA,EAAAd,EAAA,CAAA,MAAAgD,OAAAC,IAAA,2BAAA,KAQvBnC,QAAAoC,GAAA;AAAA,IAAAC,aAAA;AAAA,EAAA,CAAA,GAEEnD,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAFFc,IAAAA;AAFJ,QAAAsC,IAAarD,GASbmB,IAAYmC,GAAO;AAACtC,MAAAA,GAAAM;AAAA,EAAArB,EAAA,CAAA,MAAAgD,OAAAC,IAAA,2BAAA,KAIlBlC,IAAAA,MACSqC,GAET/B,KAAC+B,CAAI,GAACpD,OAAAe,GAAAf,OAAAqB,MAAAN,IAAAf,EAAA,CAAA,GAAAqB,IAAArB,EAAA,CAAA,IAJN0C,GAAAA,EAAKpC,aACLS,GAGAM,CACF;AAACC,MAAAA,GAAAE;AAAAxB,EAAAA,SAAAkB,KAESI,IAAAA,OACR8B,EAAIE,OAAQpC,CAAG,GAAC,MAAA;AAGdkC,IAAAA,EAAIG,SAAU;AAAA,EAAC,IAEhB/B,IAAA,CAAC4B,GAAMlC,CAAG,GAAClB,OAAAkB,GAAAlB,OAAAsB,GAAAtB,OAAAwB,MAAAF,IAAAtB,EAAA,CAAA,GAAAwB,IAAAxB,EAAA,CAAA,IANdwD,EAAUlC,GAMPE,CAAW;AAACE,MAAAA,GAAAE;AAAA5B,SAAAA,SAAA0C,KAGLhB,IAAAA,MAAA;AACR0B,IAAAA,EAAIK,SAAUf,CAAK;AAAA,EAAC,GACnBd,IAAA,CAACwB,GAAMV,CAAK,GAAC1C,OAAA0C,GAAA1C,OAAA0B,GAAA1B,OAAA4B,MAAAF,IAAA1B,EAAA,CAAA,GAAA4B,IAAA5B,EAAA,CAAA,IAFhBwD,EAAU9B,GAEPE,CAAa,GAAC;AAAA;ACpCZ,SAAS8B,GAAW;AAAA,EACzBrD,IAAAA;AAAAA,EACAC,aAAAA;AAAAA,EACAqD,SAAAA;AAAAA,EACApD,QAAAA;AAAAA,EACAqD,YAAY;AAAA,IAAEC,QAAAA;AAAAA,IAAQC,kBAAAA;AAAAA,IAAkB,GAAGC;AAAAA,EAAAA,IAAgB;AAAA,IAAEF,QAAQ;AAAA,EAAG;AAAA,EACxElD,YAAAA;AAAAA,EACAC,YAAAA;AAAAA,EACAV,YAAAA;AAAAA,EACAO,QAAAA;AAAAA,EACAC,mBAAAA;AAAAA,EACA,GAAGG;AAGL,GAAG;AACKmD,QAAAA,IAAiCC,GAAQ,MAAM;AAC/C,QAAA,OAAO/D,KAAe;AACjB,aAAA;AAAA,QACLgE,SAAShE;AAAAA,QACTiE,iBAAiBjE;AAAAA,QACjBkE,YAAYlE;AAAAA,MACd;AAEF,UAAM8D,IAAc9D;AAEb,WAAA;AAAA,MACLgE,SAASF,GAAaE,WAAW;AAAA,MACjCC,iBAAiBH,GAAaG,mBAAmB;AAAA,MACjDC,YAAYJ,GAAaI,cAAc;AAAA,IACzC;AAAA,EAAA,GACC,CAAClE,CAAU,CAAC,GAETkB,IAAU6C,GACd,MACE1D,EACGS,OAAQ2B,CAAAA,MAAM,CAAC,CAACA,GAAGxD,IAAI,EACvB+B,IAAI,CAAC;AAAA,IAAE/B,MAAMsD;AAAAA,IAAOC,OAAAA;AAAAA,EAAM,MAAM,IAAID,EAAOC,CAAK,CAAC,GACtD,CAACnC,CAAM,CACT,GAEM8D,IAAqBC,EACzB,CAAC;AAAA,IAAEC,QAAQ;AAAA,MAAEC,QAAAA;AAAAA,MAAQC,MAAAA;AAAAA,MAAMC,SAAAA;AAAAA,MAASC,MAAAA;AAAAA,IAAAA;AAAAA,EAAK,OAAgC;AAAA,IACvEC,UAAUJ,EAAOK;AAAAA,IACjBC,WAAWN,EAAOO;AAAAA,IAClBN,MAAMA,IAAO;AAAA,IACbO,SAASN;AAAAA,IACTO,OAAON;AAAAA,EACT,IACA,CAAA,CACF,GAEMO,IAAwBZ,EAC5B,CAACa,MAA+B;AAG9B,UAAM/B,IAFU9C,GAAa8E,SAEPC,OAChBC,IAAY;AAAA;AAAA,MAEhB,GAAGlC,GAAMkC;AAAAA,MACT,GAAGH;AAAAA,IACL,GACMI,IAA2B;AAAA,MAC/BX,UAAUU,EAAUV;AAAAA,MACpBE,WAAWQ,EAAUR;AAAAA,MACrBL,MAAMa,EAAUb;AAAAA,MAChBQ,OAAOK,EAAUL;AAAAA,MACjBD,SAASM,EAAUN;AAAAA;AAAAA,MAEnBQ,OAAOpC,GAAMoC;AAAAA,MACbC,QAAQrC,GAAMqC;AAAAA,IAChB;AACoB,IAAA/E,IAAA;AAAA,MAClB4E,WAAWC;AAAAA,MACXG,kBAAkB;AAAA,QAChBC,WAAW;AAAA,MAAA;AAAA,IACb,CAC0C;AAAA,EAAA,GAE9C,CAACrF,GAAaI,CAAiB,CACjC;AAEA,2BACGkF,IAAY,EAAA,QAAA/B,GAAoBC,GAAAA,GAC/B,UAAA,gBAAAhC,EAAC,SAAI,WAAU,cACb,UAAC,gBAAAK,GAAAJ,IAAA,EACC,IAAA1B,GACA,WAAWsD,GACX,kBAAkB,IACdI,GAAAA,GACJ,QAAQ;AAAA,IACNc,KAAKhE,EAAKgF,kBAAkBjB,YAAY;AAAA,IACxCG,KAAKlE,EAAKgF,kBAAkBf,aAAa;AAAA,EAAA,GAE3C,OAAOjE,EAAKgF,kBAAkBpB,QAAQ,KAAK,GAC3C,MAAM5D,EAAKgF,kBAAkBZ,OAC7B,SAASpE,EAAKgF,kBAAkBb,SAChC,eAAe,MAAM;AACZ,IAAAvE,EAAA;AAAA,MACLtB,MAAM;AAAA,MACNoC,OAAO;AAAA,IAAA,CACR,GACD2D,EAAsBrE,EAAKgF,gBAAiB;AAAA,EAAA,GAE9C,iBAAkBnD,CAChBwC,MAAAA,EAAsBb,EAAmB3B,CAAK,CAAC,GAEjD,eAAgBA,OACdwC,EAAsBb,EAAmB3B,CAAK,CAAC,GAEjD,aACE,OAAOsB,EAAYI,cAAe,YAC9BJ,EAAYI,aACZ,CAAC,CAACJ,EAAYI,YAEpB,iBAAkBJ,EAAYE,UAAmB,WAAT,QACxC,wBAAwB,CAACF,EAAYG,iBAErC,UAAA;AAAA,IAAC,gBAAArC,EAAAH,IAAA,EAAc,IAAAtB,GAAQ,YAAAM,EAAuB,CAAA;AAAA,sBAC7CoC,IACC,EAAA,IAAA1C,GACA,aAAAC,GACA,QAAQc,GACR,QAAQ,MAAM;AACL,MAAAX,EAAA;AAAA,QACLtB,MAAM;AAAA,QACNoC,OAAO;AAAA,MAAA,CACR;AAAA,OAEH,YAAY;AAAA;AAAA,MAEVE,WAAW;AAAA,MACX,GAAGb;AAAAA,IACL,GACIC,GAAAA,EAAK,CAAA;AAAA,EAAA,EAEb,CAAA,EACF,CAAA,GACF;AAEJ;AAEA,SAAAc,GAAA5B,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAuB;AAAA,IAAAI,IAAAA;AAAAA,IAAAM,YAAAA;AAAAA,EAAAA,IAAAZ,GAOrB+F,IAAczC,GAAOhD,CAAE;AAAES,MAAAA,GAAAC;AAAAf,SAAAA,SAAA8F,KAEOhF,IAAAA,MACvBgF,GACN/E,KAAC+E,CAAK,GAAC9F,OAAA8F,GAAA9F,OAAAc,GAAAd,OAAAe,MAAAD,IAAAd,EAAA,CAAA,GAAAe,IAAAf,EAAA,CAAA,IAFUW,GAAAA,GAAYG,GAE7BC,CAAO,GAAC;AAAA;AC9JN,SAAAgF,GAAAhG,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAA2D,MAAAA,GAAAtD,GAAAG,GAAAE,GAAAE,GAAAC,GAAAC,GAAAM,GAAAC,GAAAE,GAAAE,GAAAE;AAAA5B,EAAAA,SAAAD,KAAyB;AAAA,IAAAO,aAAAA;AAAAA,IAAAK,YAAAA;AAAAA,IAAAgD,SAAA7C;AAAAA,IAAAZ,YAAAa;AAAAA,IAAAV,IAAAgB;AAAAA,IAAAd,QAAAe;AAAAA,IAAAsC,YAAAA;AAAAA,IAAAzD,WAAAqB;AAAAA,IAAApB,YAAAsB;AAAAA,IAAAjB,QAAAA;AAAAA,IAAAC,mBAAAkB;AAAAA,IAAA,GAAAf;AAAAA,EAAAA,IAAAd,GAaTC,OAAAD,GAAAC,OAAA4D,GAAA5D,OAAAM,GAAAN,OAAAS,GAAAT,OAAAW,GAAAX,OAAAa,GAAAb,OAAAc,GAAAd,OAAAe,GAAAf,OAAAqB,GAAArB,OAAAsB,GAAAtB,QAAAwB,GAAAxB,QAAA0B,GAAA1B,QAAA4B,MAAAgC,IAAA5D,EAAA,CAAA,GAAAM,IAAAN,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,GAAAW,IAAAX,EAAA,CAAA,GAAAa,IAAAb,EAAA,CAAA,GAAAc,IAAAd,EAAA,CAAA,GAAAe,IAAAf,EAAA,CAAA,GAAAqB,IAAArB,EAAA,CAAA,GAAAsB,IAAAtB,EAAA,CAAA,GAAAwB,IAAAxB,EAAA,EAAA,GAAA0B,IAAA1B,EAAA,EAAA,GAAA4B,IAAA5B,EAAA,EAAA;AAVrB,QAAA2D,IAAA7C,MAAgCkF,SAAAvH,EAAAE,WAAhCmC,GACAZ,IAAAa,MAAiBiF,cAAjBjF,GACAV,IAAAgB,MAAkB2E,SAAb,gBAAL3E;AAAkBQ,MAAAA;AAAA7B,EAAAA,UAAAsB,KAClBA,IAAAA,MAAW0E,cAAX1E,GAAWtB,QAAAsB,GAAAtB,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA;AAAX,QAAAO,IAAAsB,GAEA1B,IAAAqB,MAA4BwE,SAAA3G,KAA5BmC,GACApB,IAAAsB,MAA8BsE,SAAAxG,KAA9BkC,GAEAhB,IAAAkB,MAA8BoE,SAAA/E,KAA9BW;AAA8BK,MAAAA;AAAA,EAAAjC,EAAA,EAAA,MAAAgD,OAAAC,IAAA,2BAAA,KAGShB,IAAA,CAAA,IAAA,EAAA,GAAcjC,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA;AAArD,QAAA,CAAAiG,GAAAC,CAAA,IAA8BC,GAASlE,CAAc,GAErD;AAAA,IAAA/C,KAAAsB;AAAAA,IAAArB,MAAAA;AAAAA,EAAAA,IAAAF,GAA6C0E,CAAO,GACpDyC,IAAgBjH,MAAIL,GAAAE;AAAyBqH,MAAAA;AAAA,EAAArG,EAAA,EAAA,MAAAgD,OAAAC,IAAA,2BAAA,KAG3CoD,IAAAC,CAAAA,MAAA;AACE,UAAAC,IAAcD,EAACnH,SAAU,WAAgB,IAAA;AAChCqH,IAAAA,EAAAA,CAAAA,MACPA,EAAKtF,IAAA,CAAAuF,GAAAC,MAAqBA,MAAMH,IAAQD,EAAC/E,QAASkF,CAAO,CAC3D;AAAA,EAAC,GACFzG,QAAAqG,KAAAA,IAAArG,EAAA,EAAA;AANH,QAAA2G,IAAmBN;AAQlBO,MAAAA,GAAAC;AAAA,EAAA7G,EAAA,EAAA,MAAAgD,OAAAC,IAAA,2BAAA,KAES2D,IAAAA,MAAA,MAAA;AAEI,IAAAD,EAAA;AAAA,MAAAxH,MACF;AAAA,MAAMoC,OAAA;AAAA,IAAA,CAEb,GACSoF,EAAA;AAAA,MAAAxH,MACF;AAAA,MAAQoC,OAAA;AAAA,IAAA,CAEf;AAAA,EAAC,GAEHsF,KAACF,CAAU,GAAC3G,QAAA4G,GAAA5G,QAAA6G,MAAAD,IAAA5G,EAAA,EAAA,GAAA6G,IAAA7G,EAAA,EAAA,IAXfwD,EAAUoD,GAWPC,CAAY;AAACC,MAAAA,GAAAC;AAKM,MALN/G,EAAAiG,EAAAA,MAAAA,KAAAjG,UAAAS,KAENqG,IAAAA,MAAA;AACRE,UAAAA,IAAoBf,EAAQgB,MAAA9F,EAAyB;AACrDV,IAAAA,IAASuG,CAAW;AAAA,EAAA,GACnBD,IAAA,CAACd,GAAUxF,CAAM,GAACT,QAAAiG,GAAAjG,QAAAS,GAAAT,QAAA8G,GAAA9G,QAAA+G,MAAAD,IAAA9G,EAAA,EAAA,GAAA+G,IAAA/G,EAAA,EAAA,IAHrBwD,EAAUsD,GAGPC,CAAkB,GAEjBX,GAAO;AAAAc,QAAAA;AAAA,WAAAlH,EAAA2D,EAAAA,MAAAA,KAAA3D,EAAA,EAAA,MAAAE,KAAAF,UAAAG,KAAAH,EAAAI,EAAAA,MAAAA,KAAAJ,EAAA,EAAA,MAAA4D,KAAA5D,EAAAK,EAAAA,MAAAA,KAAAL,EAAA,EAAA,MAAAM,KAAAN,UAAAO,KAAAP,EAAAU,EAAAA,MAAAA,KAAAV,EAAA,EAAA,MAAAW,KAAAX,UAAAa,KAEPqG,IAAC,gBAAApF,EAAA4B,IAAA,EACcpD,aAAAA,GACDK,YAAAA,GACAT,YAAAA,GACRG,IAAAA,GACKsD,SAAAA,GACDpD,QAAAA,GACIqD,YAAAA,GACDzD,WAAAA,GACCC,YAAAA,GACJuG,QAAAA,GACWjG,mBAAAA,GACfG,GAAAA,GACJ,GAAAb,QAAA2D,GAAA3D,QAAAE,GAAAF,QAAAG,GAAAH,QAAAI,GAAAJ,QAAA4D,GAAA5D,QAAAK,GAAAL,QAAAM,GAAAN,QAAAO,GAAAP,QAAAU,GAAAV,QAAAW,GAAAX,QAAAa,GAAAb,QAAAkH,KAAAA,IAAAlH,EAAA,EAAA,GAbFkH;AAAAA,EAAAA;AAaEA,MAAAA;AAAA,SAAAlH,EAAAE,EAAAA,MAAAA,KAAAF,UAAAG,KAAAH,EAAA,EAAA,MAAAI,KAAAJ,UAAAK,KAAAL,EAAAM,EAAAA,MAAAA,KAAAN,UAAAO,KAAAP,EAAA,EAAA,MAAAQ,KAAAR,EAAAU,EAAAA,MAAAA,KAAAV,EAAA,EAAA,MAAAW,KAAAX,UAAAa,KAKJqG,IAAC,gBAAApF,EAAAhC,IAAA,EACcQ,aAAAA,GACDK,YAAAA,GACAT,YAAAA,GACRG,IAAAA,GACIE,QAAAA,GACEC,UAAAA,GACCL,WAAAA,GACCC,YAAAA,GACJuG,QAAAA,GACWjG,mBAAAA,GACfG,GAAAA,GACJ,GAAAb,QAAAE,GAAAF,QAAAG,GAAAH,QAAAI,GAAAJ,QAAAK,GAAAL,QAAAM,GAAAN,QAAAO,GAAAP,QAAAQ,GAAAR,QAAAU,GAAAV,QAAAW,GAAAX,QAAAa,GAAAb,QAAAkH,KAAAA,IAAAlH,EAAA,EAAA,GAZFkH;AAYE;AA/EC,SAAA/F,GAAAgG,GAAA;AA2C4CV,SAAAA;AAAM;AA3ClD,SAAAxF,KAAA;AAAA,SAAA;AAAA;ACLA,MAAMmG,KAGT;AAAA,EACFC,oBAAoB;AAAA,EACpBC,wBAAwB,IAAIC,GAAkB;AAAA,IAC5CC,OAAO;AAAA,EACR,CAAA;AACH;;;;;;;;;ACRA,MAAIC,IAAoB,SAA2BlG,GAAO;AACzD,WAAOmG,EAAgBnG,CAAK,KACxB,CAACoG,EAAUpG,CAAK;AAAA,EACpB;AAED,WAASmG,EAAgBnG,GAAO;AAC/B,WAAO,CAAC,CAACA,KAAS,OAAOA,KAAU;AAAA,EACpC;AAEA,WAASoG,EAAUpG,GAAO;AACzB,QAAIqG,IAAc,OAAO,UAAU,SAAS,KAAKrG,CAAK;AAEtD,WAAOqG,MAAgB,qBACnBA,MAAgB,mBAChBC,EAAetG,CAAK;AAAA,EACzB;AAGA,MAAIuG,IAAe,OAAO,UAAW,cAAc,OAAO,KACtDC,IAAqBD,IAAe,OAAO,IAAI,eAAe,IAAI;AAEtE,WAASD,EAAetG,GAAO;AAC9B,WAAOA,EAAM,aAAawG;AAAA,EAC3B;AAEA,WAASC,EAAYC,GAAK;AACzB,WAAO,MAAM,QAAQA,CAAG,IAAI,CAAA,IAAK,CAAA;AAAA,EAClC;AAEA,WAASC,EAA8B3G,GAAO4G,GAAS;AACtD,WAAQA,EAAQ,UAAU,MAASA,EAAQ,kBAAkB5G,CAAK,IAC/D6G,EAAUJ,EAAYzG,CAAK,GAAGA,GAAO4G,CAAO,IAC5C5G;AAAA,EACJ;AAEA,WAAS8G,EAAkBC,GAAQC,GAAQJ,GAAS;AACnD,WAAOG,EAAO,OAAOC,CAAM,EAAE,IAAI,SAASC,GAAS;AAClD,aAAON,EAA8BM,GAASL,CAAO;AAAA,IACrD,CAAA;AAAA,EACF;AAEA,WAASM,EAAiBC,GAAKP,GAAS;AACvC,QAAI,CAACA,EAAQ;AACZ,aAAOC;AAER,QAAIO,IAAcR,EAAQ,YAAYO,CAAG;AACzC,WAAO,OAAOC,KAAgB,aAAaA,IAAcP;AAAA,EAC1D;AAEA,WAASQ,EAAgCN,GAAQ;AAChD,WAAO,OAAO,wBACX,OAAO,sBAAsBA,CAAM,EAAE,OAAO,SAASO,GAAQ;AAC9D,aAAO,OAAO,qBAAqB,KAAKP,GAAQO,CAAM;AAAA,IACtD,CAAA,IACC,CAAA;AAAA,EACJ;AAEA,WAASC,EAAQR,GAAQ;AACxB,WAAO,OAAO,KAAKA,CAAM,EAAE,OAAOM,EAAgCN,CAAM,CAAC;AAAA,EAC1E;AAEA,WAASS,EAAmBC,GAAQC,GAAU;AAC7C,QAAI;AACH,aAAOA,KAAYD;AAAA,IACnB,QAAU;AACV,aAAO;AAAA,IACT;AAAA,EACA;AAGA,WAASE,EAAiBZ,GAAQI,GAAK;AACtC,WAAOK,EAAmBT,GAAQI,CAAG,KACjC,EAAE,OAAO,eAAe,KAAKJ,GAAQI,CAAG,KACvC,OAAO,qBAAqB,KAAKJ,GAAQI,CAAG;AAAA,EAClD;AAEA,WAASS,EAAYb,GAAQC,GAAQJ,GAAS;AAC7C,QAAIiB,IAAc,CAAE;AACpB,WAAIjB,EAAQ,kBAAkBG,CAAM,KACnCQ,EAAQR,CAAM,EAAE,QAAQ,SAASI,GAAK;AACrC,MAAAU,EAAYV,CAAG,IAAIR,EAA8BI,EAAOI,CAAG,GAAGP,CAAO;AAAA,IACxE,CAAG,GAEFW,EAAQP,CAAM,EAAE,QAAQ,SAASG,GAAK;AACrC,MAAIQ,EAAiBZ,GAAQI,CAAG,MAI5BK,EAAmBT,GAAQI,CAAG,KAAKP,EAAQ,kBAAkBI,EAAOG,CAAG,CAAC,IAC3EU,EAAYV,CAAG,IAAID,EAAiBC,GAAKP,CAAO,EAAEG,EAAOI,CAAG,GAAGH,EAAOG,CAAG,GAAGP,CAAO,IAEnFiB,EAAYV,CAAG,IAAIR,EAA8BK,EAAOG,CAAG,GAAGP,CAAO;AAAA,IAExE,CAAE,GACMiB;AAAA,EACR;AAEA,WAAShB,EAAUE,GAAQC,GAAQJ,GAAS;AAC3C,IAAAA,IAAUA,KAAW,CAAE,GACvBA,EAAQ,aAAaA,EAAQ,cAAcE,GAC3CF,EAAQ,oBAAoBA,EAAQ,qBAAqBV,GAGzDU,EAAQ,gCAAgCD;AAExC,QAAImB,IAAgB,MAAM,QAAQd,CAAM,GACpCe,IAAgB,MAAM,QAAQhB,CAAM,GACpCiB,IAA4BF,MAAkBC;AAElD,WAAKC,IAEMF,IACHlB,EAAQ,WAAWG,GAAQC,GAAQJ,CAAO,IAE1CgB,EAAYb,GAAQC,GAAQJ,CAAO,IAJnCD,EAA8BK,GAAQJ,CAAO;AAAA,EAMtD;AAEA,EAAAC,EAAU,MAAM,SAAsBoB,GAAOrB,GAAS;AACrD,QAAI,CAAC,MAAM,QAAQqB,CAAK;AACvB,YAAM,IAAI,MAAM,mCAAmC;AAGpD,WAAOA,EAAM,OAAO,SAASC,GAAMC,GAAM;AACxC,aAAOtB,EAAUqB,GAAMC,GAAMvB,CAAO;AAAA,IACtC,GAAI,CAAE,CAAA;AAAA,EACL;AAED,MAAIwB,IAAcvB;AAElB,SAAAwB,KAAiBD;;;mCCnHXE,KAAiBA,CAACC,MAA0C;AAChE,QAAMC,IAAeD,EAAUE,OAC7B,CAACC,GAAKC,MAAS;AACP,UAAA;AAAA,MAAE7J,IAAAA;AAAAA,MAAIsD,SAAAA;AAAAA,IAAAA,IAAYuG;AACxBD,WAAAA,EAAI5J,CAAE,IAAI;AAAA,MACR4F,UAAU;AAAA,MACVtC,SAAAA;AAAAA,MACArD,aAAa;AAAA,QACX8E,SAAS,CAAA;AAAA,MACX;AAAA,MACAzE,YAAY;AAAA,QACVyE,SAAS;AAAA,MACX;AAAA,MACA7E,QAAQ2J,EAAK3J,UAAU,CAAE;AAAA,MACzBL,YAAYgK,EAAKhK,cAAc;AAAA,IACjC,GACO+J;AAAAA,EACT,GACA,EACF;AAEQ,SAAA,CAACE,GAAKC,OAAS;AAAA,IACrBC,MAAMN;AAAAA,IACNO,YAAYA,CAACjK,GAAIsD,MACfwG,EAAK3D,CAAUA,MAAA;AACP,YAAA;AAAA,QAAErH,MAAMoL;AAAAA,UAAgBtL,GAAauH,EAAM6D,KAAKhK,CAAE,EAAGsD,OAAO,GAC5D;AAAA,QAAExE,MAAMqL;AAAAA,MAAAA,IAAYvL,GAAa0E,CAAO,GAExCsC,IAAWsE,MAAgBC,KAAW,CAAC,CAAChE,EAAM6D,KAAKhK,CAAE,GAAG4F;AAEvD,aAAA;AAAA,QACLoE,MAAM;AAAA,UACJ,GAAG7D,EAAM6D;AAAAA,UACT,CAAChK,CAAE,GAAG;AAAA,YACJ,GAAGmG,EAAM6D,KAAKhK,CAAE;AAAA,YAChB4F,UAAAA;AAAAA,YACAtC,SAAAA;AAAAA,UAAAA;AAAAA,QACF;AAAA,MAEJ;AAAA,IAAA,CACD;AAAA,IACH8G,SAASA,CAACpK,GAAI4F,MACZkE,EAAK3D,CAAWA,OAAA;AAAA,MACd6D,MAAM;AAAA,QACJ,GAAG7D,EAAM6D;AAAAA,QACT,CAAChK,CAAE,GAAG;AAAA,UACJ,GAAGmG,EAAM6D,KAAKhK,CAAE;AAAA,UAChB4F,UAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,IACJyE,oBAAqBrK,CAAOA,MACZ+J,EAAI,EACLC,KAAKhK,CAAE,GAAGM,YAAYyE;AAAAA,IAErCuF,iBAAkBtK,CAAOA,MAAA;AAEvB,YAAM+E,IADQgF,EAAI,EACIC,KAAKhK,CAAE,GAAGC,aAAa8E;AAE7C;AAAA;AAAA,QAEGA,GAAyBhC,QAASgC,EAA8BC;AAAAA;AAAAA,IAErE;AAAA,IACAuF,cAAevK,CAAOA,MACN+J,EAAI,EACCO,gBAAgBtK,CAAE,GAExBiF;AAAAA,IAEfuF,cAAcA,CAACxK,GAAIyK,MACHV,EAAI,EACCO,gBAAgBtK,CAAE,GACxBwK,aAAaC,CAAI;AAAA,IAEhCC,aAAaA,CAAC1K,GAAIkG,IAAQ,GAAGuE,MACbV,EAAI,EACCO,gBAAgBtK,CAAE,GACxBwK,aAAaC,CAAI,IAAIvE,CAAK;AAAA,IAEzCyE,WAAWA,CAAC3K,GAAI4K,GAAQ9C,MAAY;AAClC,YAAM+C,IAAQd,EAAI;AAClB,UAAI,CAACc,EAAMb,OAAOhK,CAAE,GAAG4F,SAAU;AAE3BX,YAAAA,IAAY4F,EAAMN,aAAavK,CAAE;AACvC,UAAI,CAACiF,EAAW;AAIhB,YAAM6F,IAFW,IAAIC,GAAoB9F,CAAS,EAEvB+F,UAAUJ,GAAQ9C,GAASmD,aAAa;AAE5D,aAAA;AAAA,QACL1G,UAAUuG,EAAUvG;AAAAA,QACpBE,WAAWqG,EAAUrG;AAAAA,QACrBL,MAAM0G,EAAU1G;AAAAA,QAChB,GAAG0D,GAASoD;AAAAA,MACd;AAAA,IACF;AAAA,IACAC,WAAWA,CAACnL,GAAIE,MACd4J,EAAK3D,CAAUA,MAAA;AACb,YAAM6D,IAAO;AAAA,QAAE,GAAG7D,EAAM6D;AAAAA,MAAK,GACvBjJ,IAAUiJ,EAAKhK,CAAE,GAAGE,UAAU,CAAE,GAEhC4J,wBAAUsB,IAAI,CAAC,GAAGrK,GAAS,GAAGb,CAAM,CAAC;AAE3C8J,aAAAA,EAAKhK,CAAE,IAAI;AAAA,QACT,GAAGgK,EAAKhK,CAAE;AAAA,QACVE,QAAQ,CAAC,GAAG4J,CAAG;AAAA,MACjB,GACO;AAAA,QAAEE,MAAAA;AAAAA,MAAK;AAAA,IAAA,CACf;AAAA,IACHqB,cAAcA,CAACrL,GAAIE,MACjB4J,EAAK3D,CAAUA,MAAA;AACb,YAAM6D,IAAO;AAAA,QAAE,GAAG7D,EAAM6D;AAAAA,MAAK,GACvBjJ,IAAUiJ,EAAKhK,CAAE,GAAGE,UAAU,CAAE;AACtC8J,aAAAA,EAAKhK,CAAE,IAAI;AAAA,QACT,GAAGgK,EAAKhK,CAAE;AAAA,QACVE,QAAQa,EAAQJ,OAAQ2K,CAAAA,MAAU,CAACpL,EAAOqL,SAASD,CAAK,CAAC;AAAA,MAC3D,GACO;AAAA,QAAEtB,MAAAA;AAAAA,MAAK;AAAA,IAAA,CACf;AAAA,IACHwB,eAAeA,CAACxL,GAAIH,MAClBiK,EAAK3D,CAAUA,MAAA;AACb,YAAMsF,IAAoBtF,EAAM6D,KAAKhK,CAAE,GAAGH,cAAc,CAAC,GAKnD6L,IACJ,CAAC7L,KAAc,OAAOA,KAAe,YACjCA,IACAkI,GALJ,OAAO0D,KAAsB,YAAY,CAAKA,IAAAA,GAOxC5L,CACF;AAEC,aAAA;AAAA,QACLmK,MAAM;AAAA,UACJ,GAAG7D,EAAM6D;AAAAA,UACT,CAAChK,CAAE,GAAG;AAAA,YACJ,GAAGmG,EAAM6D,KAAKhK,CAAE;AAAA,YAChBH,YAAY6L;AAAAA,UAAAA;AAAAA,QACd;AAAA,MAEJ;AAAA,IACD,CAAA;AAAA,EAAA;AAEP,GAEMC,KAAwBA,CAAClC,MAA0C;AACvE,QAAMC,IAAeD,EAAUE,OAC7B,CAACC,GAAKC,MAAS;AACP,UAAA;AAAA,MAAE7J,IAAAA;AAAAA,IAAAA,IAAO6J;AACfD,WAAAA,EAAI5J,CAAE,IAAI,IACH4J;AAAAA,EACT,GACA,EACF;AAEA,SAASE,CAASA,OAAA;AAAA,IAChB8B,iBAAiBlC;AAAAA,IACjBmC,eAAeA,CAAC7L,GAAI4F,MAClBkE,EAAK3D,CAAWA,OAAA;AAAA,MACdyF,iBAAiB;AAAA,QACf,GAAGzF,EAAMyF;AAAAA,QACT,CAAC5L,CAAE,GAAG4F;AAAAA,MAAAA;AAAAA,IACR,EACA;AAAA,EAAA;AAER,GAEMkG,KAAuBA,CAACrC,MAA0C;AACtE,QAAMC,IAAeD,EAAUE,OAC7B,CAACC,GAAKC,MAAS;AACPrE,UAAAA,IAAmBqE,EAAKrE,oBAAoBqE,EAAK5E;AACnD8G,WAAAA,EAAAA,kBAAkBlC,EAAK7J,EAAE,IAAIwF,GAC7BwG,EAAAA,WAAWnC,EAAK7J,EAAE,IAAIwF,GACtByG,EAAAA,UAAUpC,EAAK7J,EAAE,IAAI,MAClB4J;AAAAA,EAAAA,GAET;AAAA,IACEoC,YAAY,CAAC;AAAA,IACbC,WAAW,CAAC;AAAA,IACZF,mBAAmB,CAAA;AAAA,EAAC,CAExB;AAEQ,SAAA,CAACjC,GAAKC,OAAS;AAAA,IACrBkC,WAAWvC,EAAauC;AAAAA,IACxBF,mBAAmBrC,EAAaqC;AAAAA,IAChCG,gBAAiBlM,CAAOA,MAAA;AACtB,YAAM6K,IAAQd,EAAI;AAClB,UAAI,CAACc,EAAMb,KAAKhK,CAAE,GAAG4F,SAAU;AAE/B,YAAMuG,IAAK,IAAIpB,GAAoBF,EAAMmB,WAAWhM,CAAE,CAAE;AACxD8J,MAAAA,EAAK3D,CAAWA,OAAA;AAAA,QACd8F,WAAW;AAAA,UACT,GAAG9F,EAAM8F;AAAAA,UACT,CAACjM,CAAE,GAAGmM;AAAAA,QAAAA;AAAAA,MACR,EACA;AAAA,IACJ;AAAA,IACAH,YAAYtC,EAAasC;AAAAA,IACzBI,cAAcA,CAACpM,GAAIiF,MACjB6E,EAAK3D,CAAWA,OAAA;AAAA,MACd6F,YAAY;AAAA,QACV,GAAG7F,EAAM6F;AAAAA,QACT,CAAChM,CAAE,GAAG;AAAA,UACJ,GAAGmG,EAAM6F,WAAWhM,CAAE;AAAA,UACtB,GAAGiF;AAAAA,QAAAA;AAAAA,MACL;AAAA,IACF,EACA;AAAA,IACJoH,qBAAqBA,CAACrM,GAAIiF,MACxB6E,EAAK3D,CAAWA,OAAA;AAAA,MACd4F,mBAAmB;AAAA,QACjB,GAAG5F,EAAM4F;AAAAA,QACT,CAAC/L,CAAE,GAAGiF;AAAAA,MAAAA;AAAAA,IACR,EACA;AAAA,IACJqH,SAASA,CAACtM,GAAIoE,MACZ0F,EAAK3D,CAAWA,OAAA;AAAA,MACd6F,YAAY;AAAA,QACV,GAAG7F,EAAM6F;AAAAA,QACT,CAAChM,CAAE,GAAG;AAAA,UACJ,GAAGmG,EAAM6F,WAAWhM,CAAE;AAAA,UACtBoE,MAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,IACJmI,YAAYA,CAACvM,GAAIwM,MACf1C,EAAK3D,CAAWA,OAAA;AAAA,MACd6F,YAAY;AAAA,QACV,GAAG7F,EAAM6F;AAAAA,QACT,CAAChM,CAAE,GAAG;AAAA,UACJ,GAAGmG,EAAM6F,WAAWhM,CAAE;AAAA,UACtBwM,SAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,IACJC,YAAYA,CAACzM,GAAI0M,MACf5C,EAAK3D,CAAWA,OAAA;AAAA,MACd6F,YAAY;AAAA,QACV,GAAG7F,EAAM6F;AAAAA,QACT,CAAChM,CAAE,GAAG;AAAA,UACJ,GAAGmG,EAAM6F,WAAWhM,CAAE;AAAA,UACtB0M,SAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EAAA;AAER,GAEMC,KAAqB,CAACC,GAAG7C,OAAS;AAAA,EACtCiB,WAAWA,CAAChL,GAAI4K,GAAQ9C,MAAY;AAClC,UAAM+C,IAAQd,EAAI,GACZjF,IAAe+F,EAAMF,UAAU3K,GAAI4K,GAAQ9C,CAAO;AAExD,IAAKhD,MAECsH,EAAAA,aAAapM,GAAI8E,CAAY,GACnC+F,EAAMqB,eAAelM,CAAE;AAAA,EACzB;AAAA,EACA6M,OAAOA,CAAC7M,GAAIiI,GAAQH,IAAU,CAAA,MAAO;AACnC,UAAM+C,IAAQd,EAAI,GAEZmB,IAAmB;AAAA,MACvB,GAAGnE;AAAAA,MACH,GAAGe,GAASoD;AAAAA,IACd,GAGM4B,IAAiB;AAAA,MACrB,GAAG7E;AAAAA,MACH,GAAGiD;AAAAA,IACL;AACMkB,IAAAA,EAAAA,aAAapM,GAAI8M,CAAc,GACrCjC,EAAMqB,eAAelM,CAAE;AAAA,EACzB;AAAA,EACA+M,sBAAsBA,CAAC/M,GAAIwF,MAAqB;AAC9C,UAAMqF,IAAQd,EAAI;AACZsC,IAAAA,EAAAA,oBAAoBrM,GAAIwF,CAAgB,GACxCqH,EAAAA,MAAM7M,GAAIwF,GAAkB;AAAA,MAChC0F,kBAAkB;AAAA,QAAElE,oBAAoB;AAAA,MAAA;AAAA,IAAE,CAC3C;AAAA,EACH;AAAA,EACAgG,gBAAgBA,CAAChN,MAAe;AAC9B,UAAM6K,IAAQd,EAAI,GACZgC,IAAoBlB,EAAMkB;AAC5B,IAACA,EAAkB/L,CAAE,KACzB6K,EAAMgC,MAAM7M,GAAI+L,EAAkB/L,CAAE,CAAC;AAAA,EAAA;AAEzC,IAEMiN,KAA2BA,CAACxD,MAA0C;AAC1E,QAAMC,IAAeD,EAAUE,OAC7B,CAACC,GAAKC,OACJD,EAAIC,EAAK7J,EAAE,IAAI6J,EAAKqD,iBAAiB,CAAC,GAC/BtD,IAET,EACF;AACA,SAASE,CAASA,OAAA;AAAA,IAChBoD,eAAexD;AAAAA,IACfyD,kBAAkBA,CAACC,GAAOpN,GAAIkB,MAAU;AACtC4I,MAAAA,EAAK3D,CAAUA,MAAA;AACP+G,cAAAA,IAAgBG,gBAAgBlH,EAAM+G,aAAa;AACrDhM,eAAAA,KAAU,OACRgM,EAAcE,CAAK,KACdF,OAAAA,EAAcE,CAAK,EAAEpN,CAAE,IAGhCkN,EAAcE,CAAK,IAAI;AAAA,UACrB,GAAGF,EAAcE,CAAK;AAAA,UACtB,CAACpN,CAAE,GAAGkB;AAAAA,QACR,GAGK;AAAA,UACLgM,eAAAA;AAAAA,QACF;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EACH;AAEJ,GAEaI,KAAiBA,CAAC7D,MACtB8D,GAAAA,EAAwB,IAAIC,OAC1B;AAAA,EACL,GAAGhE,GAAeC,CAAS,EAAE,GAAG+D,CAAI;AAAA,EACpC,GAAG7B,GAAsBlC,CAAS,EAAE,GAAG+D,CAAI;AAAA,EAC3C,GAAG1B,GAAqBrC,CAAS,EAAE,GAAG+D,CAAI;AAAA,EAC1C,GAAGP,GAAyBxD,CAAS,EAAE,GAAG+D,CAAI;AAAA,EAC9C,GAAGb,GAAkB,GAAGa,CAAI;AAC9B,EACD,GCrVGC,KAAaC,GAAkC,EAAwB;AAEtE,SAAA7L,GAAAnC,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAqB;AAAA,IAAA+N,UAAAA;AAAAA,IAAAC,QAAAA;AAAAA,EAAAA,IAAAlO;AAGUe,MAAAA;AAAAd,EAAAA,SAAAiO,KACRnN,IAAA6M,GAAeM,CAAM,GAACjO,OAAAiO,GAAAjO,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAlD,QAAA,CAAAkO,CAAA,IAAmB/H,GAASrF,CAAsB;AAACC,MAAAA;AAAA,SAAAf,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkO,KAE5CnN,sBAAA+M,GAAA,UAAA,EAA4BI,OAAAA,GAAWF,UAAAA,GAAS,GAAsBhO,OAAAgO,GAAAhO,OAAAkO,GAAAlO,OAAAe,KAAAA,IAAAf,EAAA,CAAA,GAAtEe;AAAsE;AAGxE,SAAAoN,EAAAC,GAAA;AACLlD,QAAAA,IAAcmD,GAAAP,EAAqB;AAAC,MAAA,CAC/BQ,OAAAC,KAAYrD,CAAK,EAACsD;AAAAC,UAAAA,IAAAA,MACL,iCAAiC;AAC5CC,SAAAA,GAASxD,GAAOkD,CAAQ;AAAC;ACtB3B,SAAAO,GAAA5O,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAA0B;AAAA,IAAA+N,UAAAA;AAAAA,IAAAP,OAAAA;AAAAA,EAAAA,IAAA1N;AAA0Ce,MAAAA;AAAAd,EAAAA,SAAAyN,KACzCjH,IAAAA,CAAAA,MAAWA,EAAK6D,KAAMoD,CAAK,GAAEzN,OAAAyN,GAAAzN,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAA7D,QAAA;AAAA,IAAA2D,SAAAA;AAAAA,EAAAA,IAAoBwK,EAAYrN,CAA6B,GAC7DwJ,IAAmB6D,EAAAlN,EAAuC;AAACF,MAAAA;AAAA,EAAAf,EAAAyN,CAAAA,MAAAA,KAAAzN,SAAAsK,KAKvDsE,IAAAA,CAAAA,MACEtE,EAAWmD,GAAO9J,CAAO,GAAC3D,OAAAyN,GAAAzN,OAAAsK,GAAAtK,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAFlB,QAAAqB,IAAAN;AAIXO,MAAAA;AAAAtB,SAAAA,EAAA2D,CAAAA,MAAAA,KAAA3D,SAAAgO,KAAAhO,EAAA,CAAA,MAAAqB,KANIC,IAAA0M,EAAQ;AAAA,IAAArK,SAAAA;AAAAA,IAAA2G,YAEDjJ;AAAAA,EAAAA,CAKb,GAACrB,OAAA2D,GAAA3D,OAAAgO,GAAAhO,OAAAqB,GAAArB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA,GAPKsB;AAOL;AAXG,SAAAL,GAAA4N,GAAA;AAAA,SAEqCrI,EAAK8D;AAAA;ACN1C,MAAMwE,IAAW;AAAA,EACtBC,YAAY;AAAA,EACZC,sBAAsB;AAAA,EACtBC,wBAAwB;AAAA,EACxBC,QAAQ;AAAA,EACRC,QAAQ;AAAA,EACRC,aAAa;AACf;ACEO,MAAMC,WAAgCC,GAAc;AAAA,EACzDC,cAAc;AACZ,UAAM,CAAC,IAAIC,MAAiB,IAAIC,GAAY,CAAA,CAAC;AAAA,EAAA;AAAA,EAGtCC,YACPC,GACAjN,GACM;AACAgN,UAAAA,YAAYC,GAAOjN,CAAK,GAC1BiN,EAAMjH,QAAQ,YAChB,KAAKkH,mBAAmB,GACxBlN,EAAMmN,OAAO;AAAA,MACXC,aAAapN,EAAMqN;AAAAA,MACnBC,UAAUlB,EAASC;AAAAA,MACnBkB,aAAa,CAAA;AAAA,IAAC,CACf;AAAA,EACH;AAEJ;AChBO,MAAMC,KAA2B,cAC3BC,KAAoB,aAEpBC,KAAkC;AAAA,EAC7C/P,IAAI6P;AAAAA,EACJG,WAAW;AAAA,EACXC,4BAA4B;AAAA,EAC5BC,gCAAgC;AAAA,EAChCC,gCAAgC;AAAA,EAChCC,4BAA4B;AAAA,EAC5BC,0BAA0B;AAAA,EAC1BC,SAAS;AAAA,EACTC,QAAQ;AAAA,EACRC,gBAAgB;AAAA,EAChBC,cAAc;AAAA,EACdC,oBAAoB;AACtB,GAEaC,KACX;AAAA,EACEC,SAAS;AAAA,IACPC,QAAQ,CAAC,GAAG,KAAK,KAAK,GAAG;AAAA,IACzBC,MAAM,CAAC,GAAG,KAAK,KAAK,IAAI;AAAA,IACxBC,OAAO,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,EAC5B;AAAA,EACAC,UAAU;AAAA,IACRH,QAAQ,CAAC,IAAI,KAAK,KAAK,GAAG;AAAA,IAC1BC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;AAAA,EAAA;AAE1B,GAEWG,KAAoD;AAAA,EAC/DC,QAAQ;AAAA,IACNC,QAAQ;AAAA,MACNP,SAASD,GAA2BC;AAAAA,MACpCI,UAAUL,GAA2BK;AAAAA,IAAAA;AAAAA,EAEzC;AAAA,EACAI,QAAQ;AAAA,IACNC,MAAM;AAAA,EAAA;AAEV,GAEMC,KAAmB,CAAC,IAAIC,GAAoB;AAAA,EAAEC,YAAY;AAAE,CAAC,CAAC,GAEvDC,KAA2B;AAAA,EACtCzR,IAAI8P;AAAAA,EACJ4B,WAAW;AAAA,EACXC,UAAU;AAAA,EACVC,SAAS;AAAA,EACTC,YAAYP;AAAAA,EACZQ,aAAa,CAAC,GAAG,CAAC;AACpB,GAEaC,KAGT;AAAA,EACFC,SAAS;AAAA,IACP9Q,OAAO;AAAA,IACP+Q,MAAMC;AAAAA,EACR;AAAA,EACAC,WAAW;AAAA,IACTjR,OAAO;AAAA,IACP+Q,MAAMG;AAAAA,EACR;AAAA,EACAC,QAAQ;AAAA,IACNnR,OAAO;AAAA,IACP+Q,MAAMK;AAAAA,EACR;AAAA,EACAC,OAAO;AAAA,IACLrR,OAAO;AAAA,IACP+Q,MAAMO;AAAAA,EACR;AAAA,EACAC,MAAM;AAAA,IACJvR,OAAO;AAAA,IACP+Q,MAAMjD;AAAAA,EAAAA;AAEV,GCtFa0D,KAAgBC,GAAoB7I,CAASA,OAAA;AAAA,EACxD5J,QAAQ,CAAC;AAAA,EACT0S,UAAUA,CAAC5S,GAAIsL,MACbxB,EAAK3D,CAAUA,MAAA;AACb,UAAMjG,IAAS;AAAA,MAAE,GAAGiG,EAAMjG;AAAAA,IAAO;AAEjC,QAAI,CAACoL;AACH,oBAAOpL,EAAOF,CAAE,GACT;AAAA,QAAEE,QAAAA;AAAAA,MAAO;AAGZ2S,UAAAA,IAAS3S,EAAOF,CAAE,KAAK;AAAA,MAAElB,MAAM;AAAA,MAAMuD,OAAO,CAAA;AAAA,IAAG,GAE/CwP,IAAa,CACjB,GAAIgB,EAAOxQ,MAAMwP,cAAc,CAAA,GAC/B,GAAIvG,EAAMjJ,OAAOwP,cAAc,CAAG,CAAA,EAClClI,OAAO,CAACC,GAAKkJ,OACRlJ,EAAImJ,KAAM9M,CAAAA,MAAMA,EAAE+M,OAAOF,CAAS,CAAC,KACtClJ,EAAIqJ,KAAKH,CAAS,GAEblJ,IACN,EAAsB,GAEnBsJ,IACFL,EAAOK,UAAY5H,EAAM4H,SACvB;AAAA,MACE,GAAGL,EAAOK;AAAAA,MACV,GAAG5H,EAAM4H;AAAAA,IAAAA,IAEXvN;AAENzF,WAAAA,EAAOF,CAAE,IAAI;AAAA,MACX,GAAG6S;AAAAA,MACH,GAAGvH;AAAAA,MACHjJ,OAAO;AAAA,QACLrC,IAAAA;AAAAA,QACA,GAAG6S,EAAOxQ;AAAAA,QACV,GAAGiJ,EAAMjJ;AAAAA,QACT8Q,gBAAgB;AAAA,UACd,GAAIN,EAAOxQ,MAAM8Q,kBAAkB,CAAC;AAAA,UACpC,GAAI7H,EAAMjJ,OAAO8Q,kBAAkB,CAAA;AAAA,QACrC;AAAA,QACAtB,YAAAA;AAAAA,MACF;AAAA,MACAqB,QAAAA;AAAAA,IACF,GAEO;AAAA,MAAEhT,QAAAA;AAAAA,IAAO;AAAA,EAAA,CACjB;AAAA,EACHkT,aAAcpT,CACZ8J,MAAAA,EAAK3D,CAAUA,MAAA;AACb,UAAMjG,IAAS;AAAA,MAAE,GAAGiG,EAAMjG;AAAAA,IAAO;AACjC,kBAAOA,EAAOF,CAAE,GACT;AAAA,MAAEE,QAAAA;AAAAA,IAAO;AAAA,EACjB,CAAA;AACL,EAAE,GCvDImT,KAAc,CAClB,YACA,eACA,YACA,WACA,UACA,OAAO;AAGF,MAAMC,WAAmCC,GAAqB;AAAA,EAK1DC,YAAY;AAAA,IACnBnR,OAAAA;AAAAA,IACAoR,UAAAA;AAAAA,IACAC,SAAAA;AAAAA,IACAC,aAAAA;AAAAA,EAAAA,GACyB;AACrBtR,IAAAA,EAAMuR,iBAAiBH,EAASG,iBAC7BC,KAAAA,qBAAqBxR,EAAMuR,YAAY,GACvCC,KAAAA,qBAAqBJ,EAASG,YAAY,GAC/C,KAAKE,kBAAkB,IAEzB,MAAMN,YAAY;AAAA,MAAEnR,OAAAA;AAAAA,MAAOoR,UAAAA;AAAAA,MAAUC,SAAAA;AAAAA,MAASC,aAAAA;AAAAA,IAAAA,CAAa;AAAA,EAAA;AAAA,EAGpDG,oBAAoB;AACrBF,UAAAA,IAAe,KAAKG,iBAAiB,GAGrC;AAAA,MAAEC,cAAAA;AAAAA,IAAAA,IAAiB,KAAK7N,MAAM8N;AAEpC,eAAWC,KAAab;AAGTc,MAAAA,EAAAA,GAAGD,GAAyBF,GAAc;AAAA;AAAA,QAErDI,UAAU;AAAA,MAAA,CACX;AAAA,EACH;AAAA,EAGOP,qBAAqBQ,GAAqC;AAC3DT,UAAAA,IAAeS,KAAiB,KAAKN,iBAAiB,GAEtD;AAAA,MAAEC,cAAAA;AAAAA,IAAAA,IAAiB,KAAK7N,MAAM8N;AAEpC,eAAWC,KAAab;AAETiB,MAAAA,EAAAA,IAAIJ,GAAyBF,CAAY;AAAA,EACxD;AAAA,EAGFD,mBAAmB;AACjB,WACE,KAAK1R,MAAMuR;AAAAA,IAEX,KAAKF,QAAQ3Q,KAAK6Q;AAAAA,EAAAA;AAGxB;AC1DO,SAASW,GAAmB;AAAA,EACjCtC,MAAAA;AAAAA,EACA,GAAGvI;AACsB,GAAc;AACjCrH,QAAAA,IAAQmS,GAAc9K,CAAY;AAEjC,SAAA;AAAA,IACL5K,MAAMwU;AAAAA,IACNjR,OAAO;AAAA,MACL,GAAGA;AAAAA,MACH4P,MAAAA;AAAAA,IAAAA;AAAAA,EAEJ;AACF;AASA,SAASuC,GAAc;AAAA,EACrBC,YAAAA;AAAAA,EACAjF,QAAAA;AAAAA,EACAkF,cAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,YAAAA;AACkC,GAAG;AAC/BC,QAAAA,IAAc9M,GAAU0M,GAAY;AAAA,IACxCK,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,MAKVC,yBAAyB;AAAA,IAC3B;AAAA,IACAvF,QAAAA;AAAAA,EAAAA,CACD,GAEKwF,IAAoBjN,GAAUgI,IAAiC;AAAA,IACnEkF,uBAAuBP;AAAAA,IACvBQ,uBAAuBP;AAAAA,IACvBD,cAAAA;AAAAA,IACAC,cAAAA;AAAAA,IACAQ,yBAAyBP,EAAW9D;AAAAA,IACpCsE,gCAAgCR,EAAWS;AAAAA,IAC3CC,gBAAgBA,CAAC5F,GAAyB6F,MACxC7F,EAAK8F,SAAS,CAAC,MAAMD,EAAQC,SAAS,CAAC;AAAA,EAAA,CAC1C;AAGMnT,SADO0F,GAAUiN,GAAmBH,CAAW;AAExD;ACxDaY,MAAAA,KAAwBA,CACnChM,MAEO8D,GAAAA,EAAgCzD,CAAQA,OAuBtC;AAAA,EACL4F,MAvBmBjG,EAAUE,OAC7B,CAACC,GAAKC,MAAS;AACP,UAAA;AAAA,MACJ6L,SAAAA,IAAU;AAAA,MACVtI,OAAAA;AAAAA,MACAuI,cAAAA,IAAe,IAAI5D,GAA0BC,QAAQC,KAAK;AAAA,MAC1D2D,OAAAA,IAAQ7D;AAAAA,MACR8D,cAAAA,IAAe9D,GAA0BC,QAAQ9Q;AAAAA,MACjD0M,QAAAA,IAAS,CAAA;AAAA,IAAC,IACR/D;AACJD,WAAAA,EAAIwD,CAAK,IAAI;AAAA,MACXsI,SAAAA;AAAAA,MACAC,cAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAC,cAAAA;AAAAA,MACAjI,QAAAA;AAAAA,IACF,GACOhE;AAAAA,EACT,GACA,EACF;AAAA,EAIEkM,YAAYA,CAAC1I,GAAOsI,MAAY;AAC9B5L,IAAAA,EAAK3D,CAAWA,OAAA;AAAA,MACduJ,MAAM;AAAA,QACJ,GAAGvJ,EAAMuJ;AAAAA,QACT,CAACtC,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMuJ,KAAKtC,CAAK;AAAA,UACnBsI,SAAAA;AAAAA,UACA9D,SAAS8D;AAAAA,QAAAA;AAAAA,MACX;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAK,UAAUA,CAAC3I,GAAOpN,GAAIkB,MAAU;AAC9B4I,IAAAA,EAAK3D,CAAUA,MAAA;AACb,YAAMyH,IAAS;AAAA,QAAE,GAAGzH,EAAMuJ,KAAKtC,CAAK,EAAGQ;AAAAA,MAAO,GAExCoI,IACJpI,EAAO5N,CAAE,KACR;AAAA,QACClB,MAAM;AAAA,MACR;AAEF8O,aAAAA,EAAO5N,CAAE,IAAI;AAAA,QACX,GAAGgW;AAAAA,QACH,GAAG9U;AAAAA,QACHlB,IAAAA;AAAAA,MACF,GAEKkB,KACH,OAAO0M,EAAO5N,CAAE,GAGX;AAAA,QACL0P,MAAM;AAAA,UACJ,GAAGvJ,EAAMuJ;AAAAA,UACT,CAACtC,CAAK,GAAG;AAAA,YACP,GAAGjH,EAAMuJ,KAAKtC,CAAK;AAAA,YACnBQ,QAAAA;AAAAA,UAAAA;AAAAA,QACF;AAAA,MAEJ;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EACAqI,eAAeA,CAAC7I,GAAO8I,GAAStE,MAAY;AAC1C9H,IAAAA,EAAK3D,CAAUA,MAAA;AACb,YAAMyH,IAAS;AAAA,QAAE,GAAGzH,EAAMuJ,KAAKtC,CAAK,EAAGQ;AAAAA,MAAO,GACxCoI,IACJpI,EAAOsI,CAAO,KAAM,CAAC;AACvBF,aAAAA,EAAOG,WAAWvE,UAAUA,GAErB;AAAA,QACLlC,MAAM;AAAA,UACJ,GAAGvJ,EAAMuJ;AAAAA,UACT,CAACtC,CAAK,GAAG;AAAA,YACP,GAAGjH,EAAMuJ,KAAKtC,CAAK;AAAA,YACnBQ,QAAQ;AAAA,cACN,GAAGA;AAAAA,cACH,CAACsI,CAAO,GAAGF;AAAAA,YAAAA;AAAAA,UACb;AAAA,QACF;AAAA,MAEJ;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EACAI,iBAAiBA,CAAChJ,GAAO6E,MAAS;AAChCnI,IAAAA,EAAK3D,CAAUA,OACN;AAAA,MACLuJ,MAAM;AAAA,QACJ,GAAGvJ,EAAMuJ;AAAAA,QACT,CAACtC,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMuJ,KAAKtC,CAAK;AAAA,UACnByI,cAAc5D;AAAAA,QAAAA;AAAAA,MAChB;AAAA,IAEJ,EACD;AAAA,EACH;AAAA,EACAoE,iBAAiBA,CAACjJ,GAAOuI,MAAiB;AACxC7L,IAAAA,EAAK3D,CAAUA,OACN;AAAA,MACLuJ,MAAM;AAAA,QACJ,GAAGvJ,EAAMuJ;AAAAA,QACT,CAACtC,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMuJ,KAAKtC,CAAK;AAAA,UACnBuI,cAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IAEJ,EACD;AAAA,EAAA;AAEL,EACD,GCjHGW,KAAoB5I,GACxB,EACF;AAEO,SAAA6I,GAAA7W,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAA4B;AAAA,IAAA+N,UAAAA;AAAAA,IAAAC,QAAAA;AAAAA,EAAAA,IAAAlO;AAGUe,MAAAA;AAAAd,EAAAA,SAAAiO,KACfnN,IAAAA,MAAMgV,GAAsB7H,CAAM,GAACjO,OAAAiO,GAAAjO,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAA/D,QAAA,CAAAkO,CAAA,IAAmB/H,GAASrF,CAAmC;AAACC,MAAAA;AAAA,SAAAf,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkO,KAG9DnN,sBAAA4V,GAAA,UAAA,EAAmCzI,OAAAA,GAChCF,UAAAA,GACH,GAA6BhO,OAAAgO,GAAAhO,OAAAkO,GAAAlO,OAAAe,KAAAA,IAAAf,EAAA,CAAA,GAF7Be;AAE6B;AAI1B,SAAA8V,EAAAzI,GAAA;AAGLlD,QAAAA,IAAcmD,GAAAsI,EAA4B;AAAC,MAAA,CACtCrI,OAAAC,KAAYrD,CAAK,EAACsD;AAAAC,UAAAA,IAAAA,MACL,wCAAwC;AAEnDC,SAAAA,GAASxD,GAAOkD,CAAQ;AAAC;AC3B3B,SAAS0I,GAAmB;AAAA,EACjCrJ,OAAAA;AAAAA,EACAO,UAAAA;AACsB,GAAG;AACzB,QAAM+H,IAAUc,EAAoBrQ,CAAAA,MAAUA,EAAMuJ,KAAKtC,CAAK,GAAGsI,OAAO,GAClEI,IAAaU,EAAoBrQ,CAAUA,MAAAA,EAAM2P,UAAU,GAC3DlI,IAAS4I,EAAoBrQ,CAAAA,MAAUA,EAAMuJ,KAAKtC,CAAK,GAAGQ,MAAM,GAChEmI,IAAWS,EAAoBrQ,CAAUA,MAAAA,EAAM4P,QAAQ,GACvDE,IAAgBO,EAAoBrQ,CAAUA,MAAAA,EAAM8P,aAAa,GACjEJ,IAAeW,EAClBrQ,CAAAA,MAAUA,EAAMuJ,KAAKtC,CAAK,GAAGyI,YAChC,GACMO,IAAkBI,EAAoBrQ,CAAUA,MAAAA,EAAMiQ,eAAe,GACrER,IAAQY,EAAoBrQ,CAAAA,MAAUA,EAAMuJ,KAAKtC,CAAK,GAAGwI,KAAK,GAC9DS,IAAkBG,EAAoBrQ,CAAUA,MAAAA,EAAMkQ,eAAe;AAE3ElT,EAAAA,EAAU,MAAM;AACRuM,UAAAA,IAAOkG,EAAMC,CAAY;AAE/B,QAAInG,KAAQgG,GAAS;AACnB,YAAMgB,IAAOhH,EAAKuC;AACF7E,MAAAA,EAAAA,GAAO,IAAIsJ,GAAyC;AAAA,IAAA;AAAA,EACtE,GACC,CAAChB,GAAStI,GAAOyI,GAAcD,GAAOS,CAAe,CAAC;AAEnD,QAAA;AAAA,IACJhF;AAAAA;AAAAA,EACA,IACEzN,GAAQ,MAAM;AACV+S,UAAAA,IAAYA,CAACzV,OAA2B;AAAA,MAC5ClB,IAAIkB,EAAMlB;AAAAA,MACV4R,SAAS1Q,EAAMiV,WAAWvE;AAAAA,MAC1BgF,OAAO1V,EAAMiV,YAAYS;AAAAA,IAAAA;AAKpB,WAAA;AAAA,MAHS3I,OAAOL,OAAOA,CAAM,EACfjN,OAAQO,CAAAA,MAAUA,EAAMpC,SAAS,MAAM,EAAE+B,IAAI8V,CAAS;AAAA;AAAA,IAIzE;AAAA,EAAA,GAED,CAAC/I,CAAM,CAAC,GAELiJ,IAAqB5S,EACzB,CAACgO,MAA0C;AAC9B7E,IAAAA,EAAAA,GAAO,CAAC,CAAC6E,CAAI,GACxBmE,EAAgBhJ,GAAO6E,CAAI;AAAA,EAE7B,GAAA,CAAC7E,GAAO0I,GAAYM,CAAe,CACrC;AAEA,SAAOzI,EAAS;AAAA,IACdP,OAAAA;AAAAA,IACAsI,SAAAA;AAAAA,IACAE,OAAAA;AAAAA,IACAC,cAAAA;AAAAA,IACAjI,QAAQ;AAAA,MACNyD,MAAAA;AAAAA;AAAAA,IAEF;AAAA,IACA0E,UAAU9R,EAAY,CAACjE,GAAI0P,MAASqG,EAAS3I,GAAOpN,GAAI0P,CAAI,GAAG,CAACtC,GAAO2I,CAAQ,CAAC;AAAA,IAChFD,YAAY7R,EACTyR,CAAAA,MAAYI,EAAW1I,GAAOsI,CAAO,GACtC,CAACtI,GAAO0I,CAAU,CACpB;AAAA,IACAG,eAAehS,EACb,CAACiS,GAAStE,MAAYqE,EAAc7I,GAAO8I,GAAStE,CAAO,GAC3D,CAACxE,GAAO6I,CAAa,CACvB;AAAA,IACAG,iBAAiBS;AAAAA,EAAAA,CAClB;AACH;AC7EO,SAASC,GAAc;AAAA,EAC5BlJ,QAAAA;AAGF,GAAG;AACMK,SAAAA,OAAOL,OAAOA,KAAU,EAAE,EAAEjN,OAAQO,CAAAA,MAAUA,EAAMpC,SAAS,MAAM;AAC5E;ACOA,MAAMiY,KAAUC,GAAsB;AAAA,EACpC7I,QAAAA;AACF,CAAC;AAEe8I,SAAAA,GACdC,GACAC,GACA;AACA,SAAOJ,GAAQG,CAAQ,EACpBE,KAAKC,GAAkBC,EAAmBC,KAAK,CAAC,EAChDC,GAAGH,GAAkBF,CAAI,CAAC;AAC/B;AAEA,MAAMM,KAA4B;AAE3B,SAASC,GAA8B;AAAA,EAC5CC,QAAAA;AAAAA,EACAR,MAAAA;AAAAA,EACAS,QAAAA;AAAAA,EACA9P,SAAS;AAAA,IAAE+P,iBAAAA;AAAAA,IAAiB,GAAGC;AAAAA,EAAAA,IAAgB;AAAA,IAC7CD,iBAAiBJ;AAAAA,EAAAA;AAOrB,GAAG;AACKM,QAAAA,IAAiBZ,MAASa,GAAuB,MAAM,GACvDC,IAAmBd,MAASa,GAAuB,OAAO,GAC1DE,IAASH,KAAkBE;AAE7BE,MAAAA,GACAC;AAEJ,MAAIF,GAAQ;AACJG,UAAAA,IACJV,KAAUE,KAAmBJ;AAC/B,QAAIa,IAAkDD,IAClDf,EAAmBC,QACnBD,EAAmBiB;AAEfF,IAAAA,IAAAA,IAAkBG,GAAWjB,QAAQiB,GAAWD,WAEpDN,MACMI,IAAAA,IAAkBG,GAAWC,OAAOD,GAAWE,MACzCL,IAAAA,IACVf,EAAmBmB,OACnBnB,EAAmBoB,OAGfzB,IAAAA,GAAgBU,GAAQW,CAAW;AAAA,EAAA;AAE7CH,IAAAA,IAAQK,GAAWrB,CAAI,GACbF,IAAAA,GAAgBU,GAAQR,CAAI;AAGjC,SAAA,GAAGwB,GAAaP,GAASR,GAAQ;AAAA,IACtCtY,OAAO;AAAA,IACP6X,MAAMgB;AAAAA,IACNS,aAAa;AAAA,IACbC,UAAU;AAAA,IACVC,uBAAuB;AAAA,IACvBC,uBAAuB;AAAA,IACvB,GAAGjB;AAAAA,EACJ,CAAA,CAAC;AACJ;AAEO,SAASkB,GACdnZ,GACA;AAAA,EACEoZ,oBAAAA;AAGF,GACmB;AACZ,SAAA,OAAOpZ,KAAe,YACzB;AAAA,IAAEiE,iBAAiBmV;AAAAA,EAAAA,IACnB;AAAA,IAAE,GAAGpZ;AAAAA,IAAYiE,iBAAiBmV;AAAAA,EAAmB;AAC3D;AAEgBC,SAAAA,GACdhY,GACAiY,GACArE,GACW;AACX,MAAI5T,IAAQ,GAAG;AACP,UAAA;AAAA,MAAEkY,eAAAA;AAAAA,MAAeC,aAAAA;AAAAA,QAAgBvE,KAAc;AAAA,MACnDuE,aAAa;AAAA,QACXC,OAAO;AAAA,MAAA;AAAA,IAEX,GAEMA,IAAQD,GAAaC;AAEvBC,QAAAA;AACJ,IAAIH,IACFG,IAAOH,EAAclY,CAAK,IAEnBqY,IAAA,GAAGC,WAAWtY,EAAMuY,SAAS,CAAC,EAAEC,QAAQ,CAAC,CAAC,IAAIJ,CAAK;AAGtD,UAAA;AAAA,MAAEK,qBAAAA;AAAAA,IAAAA,IAAwB7E;AAIhC,WAAI6E,KACFA,EAAoBzY,CAAK,GAGpB,CACL;AAAA,MACEiY,UAAAA;AAAAA,MACAI,MAAAA;AAAAA,IAAAA,CACD;AAAA,EAAA;AAGL,SAAO,CAAE;AACX;AC/GO,MAAMK,WAA8BC,GAAgB;AAAA,EACzDC,8BAA8B;AAAA,EAC9BC,OAAO;AAAA,EACPC,WAAsB,CAAE;AAAA,EACxBC,gBAAmC;AAAA,IACjCnb,MAAM;AAAA,IACN0W,UAAU,CAAA;AAAA,EACZ;AAAA,EAES0E,YAAY5K,GAAmBjN,GAAqC;AAE3E,IAAI,KAAKyX,gCACP,KAAKA,8BAA8B,IACnC,KAAKvK,mBAAmB,GACxB,KAAKwK,OAAO;AAGR,UAAA;AAAA,MAAEI,OAAAA;AAAAA,IAAAA,IAAU7K,GACZ8K,IAAoBC,GAAoBF,CAAK,GAC7CG,IAAgB,KAAKC,iBAAiB;AAE5C,QAAIC,IAAgB;AACpB,IAAI,CAACJ,KAAqB,CAAC,KAAKK,iBAAiBpY,CAAK,MAEpD,KAAKqY,iBAAiBpL,CAAK,GACXkL,IAAA,KAGlB,KAAKT,OAAOA,GAAK;AAAA,MACfjb,MAAM;AAAA,MACN6b,aAAa,CAAC,KAAKJ,iBAAkB,CAAA;AAAA,IAAA,CACtC,GAGC,KAAKK,mBACHN,GACAF,CAGF,IAEA,KAAKS,gBAAgBxY,CAAK,IACjBmY,KACTnY,EAAMmN,OAAO;AAAA;AAAA,MAEXC,aAAapN,EAAMqN;AAAAA,MACnBC,UAAU;AAAA,MACVC,aAAa;AAAA,QACXuJ,UAAU7J,EAAMwL;AAAAA,MAAAA;AAAAA,IAClB,CACD;AAAA,EACH;AAAA,EAGOzL,YACPC,GACAjN,GACA;AACIiN,IAAAA,EAAMjH,QAAQ,UACM,KAAKkS,iBAAiB,EAC1BpM,SAAS,IACzB,KAAK0M,gBAAgBxY,CAAK,IAE1B,KAAK0Y,aAAa1Y,CAAK,IAEhBiN,EAAMjH,QAAQ,YACvB,KAAK0S,aAAa1Y,CAAK;AAAA,EACzB;AAAA,EAGO2Y,kBACP1L,GACAjN,GACM;AACN,QAAI,KAAKyX;AACP;AAEIkB,UAAAA,kBAAkB1L,GAAOjN,CAAK;AAC9B4Y,UAAAA,IAAiB,KAAKC,kBAAkB7Y,CAAK;AACnD,QAAI4Y,KAAkBA,EAAeE,SAASrc,SAAS,WAAW;AAC1Dqa,YAAAA,IAAWiC,GAASH,CAAc;AACnClB,WAAAA,OAAOA,GAAKkB,CAAc,GAC1BjB,KAAAA,WAAWd,GACd,KAAKa,MACLZ,EAASgC,SAASR,aAClBtY,EAAMyS,UACR;AAAA,IAAA;AAAA,EACF;AAAA,EAGOvF,qBAAqB;AAC5B,UAAMA,mBAAmB,GACzB,KAAKyK,WAAW,CAAE,GAClB,KAAKF,8BAA8B,IACnC,KAAKC,OAAO;AAAA,EAAA;AAAA,EAGLsB,UACPhZ,GACwB;AACxB,WAAI,KAAKyX,8BACA,KAAKG,gBAEL,MAAMoB,UAAUhZ,CAAK;AAAA,EAC9B;AAAA,EAGOiZ,cAAc;AACrB,WAAO,KAAKtB;AAAAA,EAAAA;AAAAA,EAGdY,mBACEN,GACAF,GAIS;AACH,UAAA;AAAA,MAAEmB,iBAAAA;AAAAA,IAAAA,IAAoBnB,GAAmBjE,cAAc;AAAA,MAC3DoF,iBAAiB,CAAA;AAAA,IACnB;AACA,WACEjB,EAAcnM,SAAS,KACvBiM,MAAsBzU,WACrB4V,EAAgB,CAAC,MAAM,KACtBA,EAAgB,CAAC,MAAMjB,EAAcnM,SAAS;AAAA,EAAA;AAAA,EAIpDsM,iBAAiBpY,GAAqC;AACpD,QAAImZ,IAAmB;AACjBlB,UAAAA,IAAgB,KAAKC,iBAAiB;AAC5C,QACED,EAAcnM,SAAS;AAAA,IAEvB9L,EAAMyS,YAAYC,yBAClB;AACA,YAAM0G,IAAc;AAAA,QAClB3c,MAAM;AAAA,QACN6b,aAAa,CAAC,GAAGL,GAAeA,EAAc,CAAC,CAAC;AAAA,MAClD,GACMoB,IAAa;AAAA,QACjB5c,MAAM;AAAA,QACN6b,aAAa,CAAC,GAAGL,EAAcqB,MAAM,GAAGrB,EAAcnM,SAAS,CAAC,CAAC;AAAA,MACnE;AAEKyN,MADsBC,GAAcJ,GAAaC,CAAU,EAClBlG,SAASrH,SAAS,MAC3CqN,IAAA;AAAA,IACrB;AAEKA,WAAAA;AAAAA,EAAAA;AAAAA,EAGTX,gBAAgBxY,GAAqC;AAC7CiY,UAAAA,IAAgB,KAAKC,iBAAiB,GAGtCuB,IAAwB;AAAA,MAC5Bhd,MAAM;AAAA,MACN6b,aAAa,CAAC,CAAC,GAAGL,GAAeA,EAAc,CAAC,CAAE,CAAC;AAAA,IACrD;AACAjY,IAAAA,EAAM0Z,kBAAkB,CAAE,GAC1B1Z,EAAMqN,OAAO;AAAA,MACX5Q,MAAM;AAAA,MACN0W,UAAU,CAAA;AAAA,IACZ;AACA,UAAMwG,IAAa,KAAKC,oCACtBH,GACAzZ,CACF;AACA,SAAKyX,8BAA8B,IAC/BkC,MACF,KAAK/B,gBAAgB+B,EAAWvM,aAChCpN,EAAMmN,OAAO;AAAA,MACX,GAAGwM;AAAAA,MACHrM,UAAUlB,EAASM;AAAAA,MACnBa,aAAa;AAAA,QACX,GAAIoM,EAAWpM;AAAAA,QACfsH,UAAU,KAAK6C;AAAAA,QACfmC,WAAW,KAAK3B,iBAAiB;AAAA,QACjCvJ,UAAU,KAAK8I;AAAAA,MAAAA;AAAAA,IACjB,CACD;AAAA,EACH;AAAA,EAGFiB,aAAa1Y,GAAqC;AAChD,SAAKkN,mBAAmB,GACxBlN,EAAMmN,OAAO;AAAA;AAAA,MAEXC,aAAapN,EAAMqN;AAAAA,MACnBC,UAAU;AAAA,MACVC,aAAa,CAAA;AAAA,IAAC,CACf;AAAA,EAAA;AAAA,EAGHuM,eAAe;AAAA,IACbxE,QAAAA;AAAAA,IACAC,QAAAA;AAAAA,IACAT,MAAAA;AAAAA,IACArP,SAAAA;AAAAA,EAAAA,GAMS;AACT,WACE4P,GAA8B;AAAA,MAC5BC,QAAAA;AAAAA,MACAC,QAAAA;AAAAA,MACAT,MAAAA;AAAAA,MACArP,SAAAA;AAAAA,IACD,CAAA,IAAI;AAAA,EAAA;AAGX;AC3NO,MAAMsU,WAAgC9J,GAAyB;AAAA,EACpEwH,8BAA8B;AAAA,EAC9BuC,eAAe;AAAA,EACfpC,gBAAmC;AAAA,IACjCnb,MAAM;AAAA,IACN0W,UAAU,CAAA;AAAA,EACZ;AAAA,EACAwE,WAAsB,CAAE;AAAA,EAEfE,YAAY5K,GAAmBjN,GAAqC;AAE3E,IAAI,KAAKyX,gCACP,KAAKA,8BAA8B,IACnC,KAAKvK,mBAAmB,GACxB,KAAK8M,eAAe,IAGhBnC,MAAAA,YAAY5K,GAAOjN,CAAK;AAAA,EAAA;AAAA,EAGvB2Y,kBACP1L,GACAjN,GACM;AACN,IAAI,KAAKyX,gCAGHkB,MAAAA,kBAAkB1L,GAAOjN,CAAK,GACpC,KAAK2X,WAAWd,GACd,KAAKoD,YACL,KAAKnD,UACL9W,EAAMyS,UACR;AAAA,EAAA;AAAA,EAGOyH,sBAAsBla,GAAqC;AAC5DiY,UAAAA,IAAgB,KAAKC,iBAAiB,GACtCiC,IAAmB,KAAKtB,kBAAkB7Y,CAAK;AACrD,IACE,KAAKuY,mBACHN,GACAkC,CACF,KAEA,KAAK3B,gBAAgBxY,CAAK;AAAA,EAC5B;AAAA,EAGOgN,YACPC,GACAjN,GACA;AACIiN,IAAAA,EAAMjH,QAAQ,UAChB,KAAKwS,gBAAgBxY,CAAK,IACjBiN,EAAMjH,QAAQ,YACvB,KAAK0S,aAAa1Y,CAAK;AAAA,EACzB;AAAA,EAGOgZ,UACPhZ,GACwB;AACxB,WAAI,KAAKyX,8BACA,KAAKG,gBAEL,MAAMoB,UAAUhZ,CAAK;AAAA,EAC9B;AAAA,EAGFuY,mBACEN,GACAkC,GACS;AACT,WACElC,EAAcnM,SAAS,KACvBqO,KACAA,EAAiBrB,SAASrc,SAAS;AAAA,EAAA;AAAA,EAIvC+b,gBAAgBxY,GAAqC;AAC7Cma,UAAAA,IAAmB,KAAKtB,kBAAkB7Y,CAAK;AACrDA,IAAAA,EAAM0Z,kBAAkB,CAAE,GAC1B1Z,EAAMqN,OAAO;AAAA,MACX5Q,MAAM;AAAA,MACN0W,UAAU,CAAA;AAAA,IACZ;AAEA,UAAMwG,IAAa,KAAKC,oCACtBO,GACAna,CACF;AACA,SAAKyX,8BAA8B,IACnCzX,EAAMoa,eAAe,MAAM,GACvBT,MACF,KAAK/B,gBAAgB+B,EAAWvM,aAChCpN,EAAMmN,OAAO;AAAA,MACX,GAAGwM;AAAAA,MACHrM,UAAUlB,EAASM;AAAAA,MACnBa,aAAa;AAAA,QACX,GAAIoM,EAAWpM;AAAAA,QACfsH,UAAU,KAAKmF;AAAAA,QACfH,WAAW,KAAK3B,iBAAiB;AAAA,QACjCvJ,UAAU,KAAK8I;AAAAA,MAAAA;AAAAA,IACjB,CACD;AAAA,EACH;AAAA,EAGFiB,aAAa1Y,GAAqC;AAChD,SAAKkN,mBAAmB,GACxBlN,EAAMmN,OAAO;AAAA;AAAA,MAEXC,aAAapN,EAAMqN;AAAAA,MACnBC,UAAU;AAAA,MACVC,aAAa,CAAA;AAAA,IAAC,CACf;AAAA,EAAA;AAAA,EAGML,qBAAqB;AAC5B,UAAMA,mBAAmB,GACzB,KAAKyK,WAAW,CAAE,GAClB,KAAKF,8BAA8B,IACnC,KAAKuC,eAAe,GACpB,KAAKK,SAAS,GACd,KAAKJ,aAAa;AAAA,EAAA;AAAA,EAGXhB,cAAyB;AAChC,WAAO,KAAKtB;AAAAA,EAAAA;AAAAA,EAGdmC,eAAe;AAAA,IACbxE,QAAAA;AAAAA,IACAC,QAAAA;AAAAA,IACAT,MAAAA;AAAAA,IACArP,SAAAA;AAAAA,EAAAA,GAMS;AACT,WACE4P,GAA8B;AAAA,MAC5BC,QAAAA;AAAAA,MACAC,QAAAA;AAAAA,MACAT,MAAAA;AAAAA,MACArP,SAAAA;AAAAA,IACD,CAAA,IAAI;AAAA,EAAA;AAGX;AC/JO,MAAM6U,WAAkCC,GAAoB;AAAA,EACxD1C,YACP5K,GACAjN,GACM;AACA6X,UAAAA,YAAY5K,GAAOjN,CAAK,GAE9BA,EAAMmN,OAAO;AAAA;AAAA,MAEXC,aAAapN,EAAMqN;AAAAA,MACnBC,UAAUlB,EAASM;AAAAA,MACnBa,aAAa;AAAA,QACXsH,UAAU,KAAK2F;AAAAA,QACf7L,UAAU,KAAK8I;AAAAA,QACfoC,WAAW,KAAK3B,iBAAiB;AAAA,MAAA;AAAA,IACnC,CACD;AAAA,EAAA;AAAA,EAGMlL,YACPC,GACAjN,GACA;AACA,QAAI,KAAKyX,4BAA6B;AAEtCxK,IAAAA,EAAMwN,gBAAgB;AAChB,UAAA;AAAA,MAAEzU,KAAAA;AAAAA,IAAAA,IAAQiH,GAEVyN,IAAsB,KAAKxC,iBAAAA,EAAmBpM;AAEpD,QAAIwB,IAAqClB,EAASK;AAElD,YAAQzG,GAAG;AAAA,MACT,KAAK;AACHhG,QAAAA,EAAMmN,OAAO;AAAA,UACXC,aAAa;AAAA,YACX3Q,MAAM;AAAA,YACN0W,UAAU,CAAA;AAAA,UACZ;AAAA,UACA7F,UAAUlB,EAASI;AAAAA,UACnBe,aAAa,CAAA;AAAA,QAAC,CACf;AACD;AAAA,MACF,KAAK;AACH,aAAKkK,8BAA8B,IAC/BiD,MAAwB,MAC1B,KAAKxN,mBAAmB,GACxBI,IAAWlB,EAASI,SAGtBxM,EAAMoa,eAAe,MAAM,GAC3Bpa,EAAMmN,OAAO;AAAA,UACXC,aAAapN,EAAMqN;AAAAA,UACnBC,UAAAA;AAAAA,UACAC,aAAa;AAAA,YACXoB,UAAU,KAAK8I;AAAAA,UAAAA;AAAAA,QACjB,CACD;AACD;AAAA,IAEA;AAAA,EACJ;AAAA,EAGOvK,qBAAqB;AAC5B,UAAMA,mBAAmB,GACzB,KAAKuK,8BAA8B,IACnC,KAAKkD,mBAAmB,CAAE,GAC1B,KAAKH,mBAAmB;AAAA,EAAA;AAAA,EAG1BV,eAAe;AAAA,IACbxE,QAAAA;AAAAA,IACAC,QAAAA;AAAAA,IACAT,MAAAA;AAAAA,IACArP,SAAAA;AAAAA,EAAAA,GAMS;AACT,WAAO4P,GAA8B;AAAA,MACnCC,QAAAA;AAAAA,MACAC,QAAAA;AAAAA,MACAT,MAAAA;AAAAA,MACArP,SAAAA;AAAAA,IAAAA,CACD;AAAA,EAAA;AAEL;ACrFO,MAAMmV,KAAuB,mBAEvBC,KAAsB;AAAA,EACjCld,IAAIid;AAAAA,EACJtL,UAAU;AAAA,EACV3B,WAAW;AAAA,EACXC,4BAA4B;AAAA,EAC5BC,gCAAgC;AAAA,EAChCC,gCAAgC;AAAA,EAChCO,oBAAoB;AAAA,EACpBN,4BAA4B;AAAA,EAC5BC,0BAA0B;AAAA,EAC1B8M,gBAAgB;AAAA,IACdnD,UAAU;AAAA,MACRoD,YAAY;AAAA,MACZC,YAAY;AAAA,MACZC,SAAS;AAAA,MACTC,YAAY;AAAA,MACZC,gBAAgB,CAAC,GAAG,EAAE;AAAA,MACtBC,eAAe;AAAA,MACfC,sBAAsB;AAAA,MACtBvK,gBAAgB,CAAA;AAAA,IAClB;AAAA,IACAwK,QAAQ;AAAA,MACNlN,cAAc;AAAA,IAAA;AAAA,EAChB;AAEJ,GAEamN,KAAwC;AAAA,EACnDhN,SAAS,CAAC,IAAI,KAAK,KAAK,GAAG;AAAA,EAC3BI,UAAU,CAAC,IAAI,KAAK,KAAK,GAAG;AAAA,EAC5BD,OAAO,CAAC,KAAK,KAAK,KAAK,GAAG;AAC5B,GAEa8M,KAAyC;AAAA,EACpD3M,QAAQ;AAAA,IACNC,QAAQ;AAAA,MACNP,SAASgN,GAAehN;AAAAA,MACxBI,UAAU4M,GAAe5M;AAAAA,MACzBD,OAAO6M,GAAe7M;AAAAA,IAAAA;AAAAA,EACxB;AAEJ,GAEauG,IAAqB;AAAA,EAChCiB,WAAW;AAAA,EACXhB,OAAO;AAAA,EACPuG,YAAY;AAAA,EACZC,WAAW;AAAA,EACXrF,MAAM;AAAA,EACNsF,MAAM;AAAA,EACNvF,MAAM;AACR,GAEaT,KAAyB;AAAA,EACpC,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,GAAGV;AACL,GAEa2G,KAAyB;AAAA,EACpCtG,QAAQ;AAAA,EACRY,WAAW;AAAA,EACXG,MAAM;AACR,GAEarB,KAGT;AAAA,EACF,CAACC,EAAmBiB,SAAS,GAAG;AAAA,EAChC,CAACjB,EAAmBC,KAAK,GAAG;AAAA,EAC5B,CAACD,EAAmBwG,UAAU,GAAG;AAAA,EACjC,CAACxG,EAAmByG,SAAS,GAAG;AAAA,EAChC,CAACzG,EAAmBoB,IAAI,GAAG;AAAA,EAC3B,CAACpB,EAAmB0G,IAAI,GAAG;AAAA,EAC3B,CAAC1G,EAAmBmB,IAAI,GAAG;AAC7B,GAEaD,KAAiE;AAAA,EAC5E,CAAClB,EAAmBiB,SAAS,GAAG;AAAA,EAChC,CAACjB,EAAmBC,KAAK,GAAG;AAAA,EAC5B,CAACD,EAAmBwG,UAAU,GAAG;AAAA,EACjC,CAACxG,EAAmByG,SAAS,GAAG;AAAA,EAChC,CAACzG,EAAmBoB,IAAI,GAAG;AAAA,EAC3B,CAACpB,EAAmB0G,IAAI,GAAG;AAAA,EAC3B,CAAC1G,EAAmBmB,IAAI,GAAG;AAC7B,GAEayF,IAGT;AAAA,EACF,QAAQ;AAAA,IACNhd,OAAO;AAAA,IACPid,QAAQ;AAAA,EACV;AAAA,EACA5F,WAAW;AAAA,IACTrX,OAAO;AAAA,IACPid,QAAQ;AAAA,EACV;AAAA,EACA5G,OAAO;AAAA,IACLrW,OAAO;AAAA,IACPid,QAAQ;AAAA,EACV;AAAA,EACAL,YAAY;AAAA,IACV5c,OAAO;AAAA,IACPid,QAAQ;AAAA,EACV;AAAA,EACAJ,WAAW;AAAA,IACT7c,OAAO;AAAA,IACPid,QAAQ;AAAA,EACV;AAAA,EACA,SAAS;AAAA,IACPjd,OAAO;AAAA,IACPid,QAAQ;AAAA,EACV;AAAA,EACAzF,MAAM;AAAA,IACJxX,OAAO;AAAA,IACPid,QAAQ;AAAA,EACV;AAAA,EACAH,MAAM;AAAA,IACJ9c,OAAO;AAAA,IACPid,QAAQ;AAAA,EACV;AAAA,EACA1F,MAAM;AAAA,IACJvX,OAAO;AAAA,IACPid,QAAQ;AAAA,EAAA;AAEZ,GAEaC,KAGe,CAC1BF,EAAwC,MAAM,GAC9CA,EAAwC3F,WACxC2F,EAAwC3G,OACxC2G,EAAwC,OAAO,GAC/CA,EAAwCxF,MACxCwF,EAAwCzF,IAAI,GAGjC4F,KAGe,CAC1BH,EAAwC,MAAM,GAC9CA,EAAwC3F,WACxC2F,EAAwC3G,OACxC2G,EAAwC,OAAO,GAC/CA,EAAwCxF,MACxCwF,EAAwCzF,IAAI,GAGjC6F,KAGT;AAAA,EACFpH,UAAU;AAAA,IACRhW,OAAO;AAAA,IACP+Q,MAAM0K;AAAAA,EACR;AAAA,EACA4B,QAAQ;AAAA,IACNrd,OAAO;AAAA,IACP+Q,MAAMmK;AAAAA,EACR;AAAA,EACArC,MAAM;AAAA,IACJ7Y,OAAO;AAAA,IACP+Q,MAAM2H;AAAAA,EAAAA;AAEV,GAEa4E,KAGT;AAAA,EACFtH,UAAUkH;AAAAA,EACVG,QAAQH;AAAAA,EACRrE,MAAMsE;AACR;AC5LO,SAAAI,GAAA/e,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAyB;AAAA,IAAAwN,OAAAA;AAAAA,IAAAsR,SAAAA;AAAAA,EAAAA,IAAAhf;AAM/Be,MAAAA;AAAAd,EAAAA,SAAAyN,KAC6B3M,IAAAoK,CAAWA,MAAAA,EAAKb,KAAMoD,CAAK,GAAA9J,SAAU3D,OAAAyN,GAAAzN,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAjE2D,QAAAA,IAAgBwK,EAAYrN,CAAqC;AAAEC,MAAAA;AAAAf,EAAAA,SAAAyN,KACtC1M,IAAAie,CAAW9T,MAAAA,EAAKb,KAAMoD,CAAK,GAAAxH,UAAWjG,OAAAyN,GAAAzN,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAnEiG,QAAAA,IAAiBkI,EAAYpN,CAAsC,GACnE2J,IAA2ByD,EAAAlN,EAA+C,GAC1EgS,IAAiBF,GAAA5R,EAAuC,GAExD;AAAA,IAAAhC,MAAAA;AAAAA,EAAAA,IAAAF,GAA8B0E,CAAO,GACrCyC,IAAgBjH,MAAIL,GAAAE;AAAyBqC,MAAAA,GAAAC;AAAAtB,EAAAA,SAAA0K,KAAA1K,EAAAoG,CAAAA,MAAAA,KAAApG,EAAAiG,CAAAA,MAAAA,KAAAjG,EAAA,CAAA,MAAA+e,KAAA/e,SAAAyN,KAAAzN,EAAA,CAAA,MAAAiT,KAEnC5R,IAAAA,MAAA;AACR,QAAA4S,IAAA;AAA4C,QACxC7N,KAAWH,GAAQ;AACrBgZ,YAAAA,IAAwBvU,EAAmB+C,CAAK;AAChDwG,MAAAA,IAAAA,IAAAA,GAAgCgL,EAAeC,OAAQ,GAAC,CAAA,CAAA;AAAA,IAAA;AAE1DjM,IAAAA,EAAS8L,GAAO;AAAA,MAAArc,OAAA;AAAA,QAAAuR,cAAAA;AAAAA,MAAAA;AAAAA,IAAA,CAMf;AAAA,EAAC,GACD3S,IAAA,CAACoJ,GAAoBtE,GAASH,GAAU8Y,GAAStR,GAAOwF,CAAQ,GAACjT,OAAA0K,GAAA1K,OAAAoG,GAAApG,OAAAiG,GAAAjG,OAAA+e,GAAA/e,OAAAyN,GAAAzN,OAAAiT,GAAAjT,QAAAqB,GAAArB,QAAAsB,MAAAD,IAAArB,EAAA,EAAA,GAAAsB,IAAAtB,EAAA,EAAA,IAbpEwD,EAAUnC,GAaPC,CAAiE;AAAC;AA5BhE,SAAAH,GAAAqF,GAAA;AAAA,SAUqCA,EAAKyM;AAAA;AAV1C,SAAAhS,GAAAke,GAAA;AAAA,SAS6CjU,EAAKR;AAAA;ACiBzD,MAAM0U,KAAqB,CACzBlP,IACAC,IACAmN,EAAoB;AAsBf,SAAS+B,GAAW;AAAA,EACzBrR,UAAAA;AAAAA,EACAP,OAAAA;AAAAA,EACA1D,cAAc;AAAA,IAAEwH,QAAAA,IAASD,GAA0BC;AAAAA,IAAQE,QAAAA;AAAAA,EAAAA,IAAW;AAAA,IACpEF,QAAQD,GAA0BC;AAAAA,IAClCE,QAAQH,GAA0BG;AAAAA,EACpC;AAAA,EACAqD,YAAAA,IAAa,CAAC;AAAA,EACdwK,aAAAA,IAAc;AAGhB,GAAG;AACD,QAAMvJ,IAAUc,EAAoBrQ,CAAAA,MAAUA,EAAMuJ,KAAKtC,CAAK,GAAGsI,OAAO,GAClEI,IAAaU,EAAoBrQ,CAAUA,MAAAA,EAAM2P,UAAU,GAC3DlI,IAAS4I,EAAoBrQ,CAAAA,MAAUA,EAAMuJ,KAAKtC,CAAK,GAAGQ,MAAM,GAChEmI,IAAWS,EAAoBrQ,CAAUA,MAAAA,EAAM4P,QAAQ,GACvDJ,IAAea,EAClBrQ,CAAAA,MAAUA,EAAMuJ,KAAKtC,CAAK,GAAGuI,YAChC,GACME,IAAeW,EAClBrQ,CAAAA,MAAUA,EAAMuJ,KAAKtC,CAAK,GAAGyI,YAChC,GAEMjD,IAAWF,GAAevM,CAAUA,MAAAA,EAAMyM,QAAQ,GAClDzH,IAAY2C,EAAa3H,CAAUA,MAAAA,EAAMgF,SAAS,GAClDE,IAAeyC,EAAa3H,CAAUA,MAAAA,EAAMkF,YAAY,GACxD6T,IAAYpR,EAChBqR,GAAYhZ,CACVA,MAAAA,EAAM6D,KAAKoD,CAAK,GAAGlN,OAAOS,OAAQ2B,OAAM,CAACyc,GAAmBxT,SAASjJ,CAAC,CAAC,CACzE,CACF,GACMgI,IAAkBwD,EAAa3H,CAAUA,MAAAA,EAAMmE,eAAe,GAC9D8U,IAAyBC,GAAgC,EAAE;AAEjD,EAAAZ,GAAA;AAAA,IAAErR,OAAAA;AAAAA,IAAOsR,SAAS7O;AAAAA,EAAAA,CAA0B;AAEtDyP,QAAAA,IAAa1b,GAAQ,MAClBkT,GAAc;AAAA,IAAElJ,QAAAA;AAAAA,EAAAA,CAAQ,GAC9B,CAACA,CAAM,CAAC,GAEL2R,IAA2C3b,GAAQ,OAChD;AAAA,IACL9E,MAAM;AAAA,IACN0W,UAAU8J,EAAWze,IAAKK,CAAWA,OAAA;AAAA,MACnCpC,MAAM;AAAA,MACNqc,UAAUja,EAAMia;AAAAA,MAChBhF,YAAYjV,EAAMiV;AAAAA,MAClBnW,IAAIkB,EAAMlB;AAAAA,IAAAA,EACV;AAAA,EACJ,IACC,CAACsf,CAAU,CAAC,GAETE,IAAc5b,GAAQ,MACnB0b,EACJ3e,OAAQO,CAAAA,MAAUA,EAAMiV,WAAWvE,OAAO,EAC1C/Q,IAAKK,CAAUA,MAAAA,EAAMlB,EAAE,GACzB,CAACsf,CAAU,CAAC,GAET,CAAC5P,GAAM+P,CAAO,IAAI3Z,GAA4ByZ,CAAqB,GACnE,CAACG,GAAwBC,CAAyB,IAAI7Z,GAE1D,CAAA,CAAE,GAEE8Z,IAAkB3b,EAAY,MAAM;AACxC,UAAM4b,IAAQ;AAAA,MACZ,GAAGN;AAAAA,MACH/J,UAAU+J,EAAsB/J,SAAS7U,OACtCmf,CAAYA,MAAAA,EAAQ3J,YAAYvE,OACnC;AAAA,IACF;AACA6N,IAAAA,EAAQI,CAAK;AAAA,EAAA,GACZ,CAACN,CAAqB,CAAC;AAE1Bpc,EAAAA,EAAU,MAAM;AACE,IAAAyc,EAAA;AAAA,EAAA,GACf,CAACA,CAAe,CAAC;AAEdG,QAAAA,IAAgBV,GAAOC,EAAWnR,MAAM;AAE9ChL,EAAAA,EAAU,OACEiK,EAAAA,GAAO,CAACyC,EAAwB,CAAC,GAEpC,MAAM;AACEzC,IAAAA,EAAAA,GAAO,CAACyC,EAAwB,CAAC;AAAA,EAChD,IACC,CAAC1E,GAAWiC,GAAO/B,CAAY,CAAC;AAE7B2U,QAAAA,IAAmB/b,EAAY,MAAM;AACzB,IAAA2b,EAAA,GAChBD,EAA0B,CAAA,CAAE,GAC5B7J,EAAW1I,GAAO,EAAK;AAAA,EACtB,GAAA,CAACA,GAAOwS,GAAiB9J,CAAU,CAAC,GAEjCtG,IAASvL,EACb,CAAC;AAAA,IAAE0L,UAAAA;AAAAA,IAAUF,aAAAA;AAAAA,EAAAA,MAA4C;AACnDE,QAAAA,MAAalB,EAASI,QAAQ;AACf,MAAAmR,EAAA;AACjB;AAAA,IAAA;AAKErQ,IAFJ8P,EAAQhQ,CAAW,GAEfE,MAAalB,EAASG,0BAItBe,MAAalB,EAASC,eACpBmH,MAAiB,WACL9Q,EAAAA,UAAUgb,EAAchb,UAAU,IAElD0K,EAAY+F,SAASyK,QAAQ,CAACH,GAAS5Z,MAAU;AAC/C4Z,MAAAA,EAAQ3J,WAAWS,UAAU,GAAGxF,GAAQC,IAAI,IAAI0O,EAAchb,OAAO,IACrE+a,EAAQ3J,WAAWjQ,QAAQA,GAC3B4Z,EAAQ3J,WAAWvE,UAAUkO,EAAQ3J,WAAWvE,WAAW;AAE3D,YAAM5R,IAAM8f,EAAQ9f,MAAiBkgB,OAAOC,WAAW;AAEvDpK,MAAAA,EAAS3I,GAAOpN,GAAI;AAAA,QAClBmb,UAAU2E,EAAQ3E;AAAAA,QAClBhF,YAAY2J,EAAQ3J;AAAAA;AAAAA,QAEpBrX,MAAMmgB;AAAAA,MAAAA,CACP;AAAA,IAAA,CACF,GACgBe,EAAA;AAAA,EACnB,GAEF,CACEf,GACAe,GACA5O,GAAQC,MACRjE,GACAyI,GACAE,CAAQ,CAEZ;AAEA5S,SAAAA,EAAU,MAAM;AACd,UAAMwO,IAAW+D,GAEX;AAAA,MACJ7E,QAAQuP;AAAAA,MACRrP,OAAOsP;AAAAA,MACPvP,MAAMwP;AAAAA,IAAAA,IACJpP,EAAOC,OAAOP,SAEZ;AAAA,MAAEC,QAAQ0P;AAAAA,MAAgBzP,MAAM0P;AAAAA,IAAAA,IACpCtP,EAAOC,OAAOH,UAEV1F,IAAQiJ,GAAmB;AAAA,MAC/BE,YAAY;AAAA,QACV,GAAGA,EAAWpD;AAAAA,QACdM,UAAAA;AAAAA,QACAjC,MAAAA;AAAAA,QACAgQ,wBAAAA;AAAAA,QACAvM,gBAAgB;AAAA,UACdsN,gBAAgBjB;AAAAA,QAClB;AAAA,QACAkB,SAASA,CAACza,MAAmB;AAC3B,gBAAM0a,IAAK1a;AACX,UAAI0a,EAAGC,WAGmBjB,EAAA,CAACgB,EAAGza,KAAK,CAAC;AAAA,QAAA;AAAA,MAExC;AAAA,MACAwO,cAAcA,CAACmM,MACbnB,EAAuB,CAAC,MAAMmB,EAAE1K,WAAWjQ,QACvCka,IACAG;AAAAA,MACN5L,cAAcA,CAACkM,MACbnB,EAAuB,CAAC,MAAMmB,EAAE1K,WAAWjQ,QACvCoa,IACAE;AAAAA,MACN5L,YAAY;AAAA,QACV9D,MAAMuP;AAAAA,QACNhL,SAAS+K;AAAAA,MACX;AAAA,MACA5Q,QAAAA;AAAAA,MACAyC,MAAON,IAA4BgE,IAAjB,IAAImL;IAAanL,CACpC;AAED/C,IAAAA,EAAS/C,IAA0BvE,CAAK;AAAA,EAAA,GACvC,CACDoE,GACAgG,GACAjB,EAAWpD,MACXmO,GACA7J,GACAnG,GACAkQ,GACA9M,GACA1B,EAAOC,OAAOP,SACdM,EAAOC,OAAOH,QAAQ,CACvB,GAED7N,EAAU,MAAM;AACd,UAAMd,IAAQ;AAAA,MACZ,GAAGoP;AAAAA,MACH/B,MAAM6P;AAAAA,MACNkB,gBAAgBA,CAACM,MAAsBC,OAAOxB,EAAYjU,SAASwV,EAAE/gB,EAAE,CAAC;AAAA,MACxEmT,gBAAgB;AAAA,QACdsN,gBAAgBjB;AAAAA,MAAAA;AAAAA,IAEpB;AAEA5M,WAAAA,EAASnB,GAAyBzR,IAAI;AAAA,MACpClB,MAAMmiB;AAAAA,MACN5e,OAAAA;AAAAA,IAAAA,CACD,GAED8I,EAAUiC,GAAO,CAACqE,GAAyBzR,EAAE,CAAC,GACvC,MAAM;AACXqL,MAAAA,EAAa+B,GAAO,CAACqE,GAAyBzR,EAAE,CAAC;AAAA,IACnD;AAAA,EAAA,GACC,CACDmL,GACAiC,GACAmS,GACAC,GACAnU,GACAuH,CAAQ,CACT,GAEDzP,EAAU,MAAM;AACd+b,IAAAA,GAAWe,QAASvB,CAAYA,MAAA;AACxBwC,YAAAA,IAAe5W,EAAgB8C,CAAK,GAAG/K,MAAMnC,OAAOihB,KACvD7e,CAAOA,MAAAA,EAAwBD,MAAMrC,OAAO0e,CAC/C;AAEA,MAAIhJ,MACF0J,EAAuBra,QAAQ2Z,CAAO,IAAIwC,GAAc7e,MAAMsP;AAG1DA,YAAAA,IACJ,CAAC+D,MACA0J,EAAuBra,QAAQ2Z,CAAO,KACrCwC,GAAc7e,MAAMsP;AAExBiB,MAAAA,EAAS8L,GAAS;AAAA,QAChBrc,OAAO;AAAA,UACLsP,UAAUA;AAAAA,UACVE,YAAY,CAAC,IAAIuP,IAAe;AAAA,UAChCC,QACE,CAAC3L,KAAW8J,EAAYrR,SAAS2B,KAAoBnK;AAAAA,QAAAA;AAAAA,MACzD,CACD;AAAA,IAAA,CACF;AAAA,EAAA,GACA,CAAC+P,GAASpL,GAAiB8C,GAAO8R,GAAWM,EAAYrR,QAAQyE,CAAQ,CAAC,GAEtEjF;AACT;AAEAqR,GAAWsC,WAAW7K;AClTf,SAAS8K,GAAyB;AAAA,EACvCtP,MAAAA;AAAAA,EACA,GAAGvI;AAC4B,GAAc;AAC7C,QAAMrH,IAAQmS,GAAc;AAAA,IAC1BvC,MAAAA;AAAAA,IACA,GAAGvI;AAAAA,EAAAA,CACJ;AACM,SAAA;AAAA,IACL5K,MAAMwU;AAAAA,IACNjR,OAAO;AAAA,MACL,GAAGA;AAAAA,MACH4P,MAAAA;AAAAA,MACAvC,MAAM,CAAA;AAAA,IAAA;AAAA,EAEV;AACF;AAYA,SAAS8E,GAAc;AAAA,EACrBvC,MAAAA;AAAAA,EACAwC,YAAAA;AAAAA,EACAmD,QAAAA;AAAAA,EACAlC,SAAAA;AAAAA,EACAyB,MAAAA;AAAAA,EACA3H,QAAAA;AAAAA,EACAgS,YAAAA;AAAAA,EACA5M,YAAAA;AAAAA,EACA6M,aAAAA;AAC0B,GAAG;AACvB5M,QAAAA,IAAc9M,GAAU0M,GAAY;AAAA,IACxC7C,SAAS8D;AAAAA,IACT/D,UAAU+D;AAAAA,IACVZ,YAAY;AAAA;AAAA,MAEVsE,eAAeA,CAACsI,MACPA;AAAAA,MAETrI,aAAa;AAAA,QACXC,OAAO2E,GAAuBtG;AAAAA,MAAAA;AAAAA,IAElC;AAAA,IACA,GAAIjC,KAAW;AAAA,MAAElG,QAAAA;AAAAA,IAAO;AAAA,IACxB2N,gBAAgB;AAAA,MACdnD,UAAU;AAAA,QACR2H,cAAc,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,QACjCC,cAAc;AAAA,QACdC,cAAc;AAAA,UACZC,KAAK;AAAA;AAAA,UACLC,WAAW;AAAA,QACb;AAAA,QACAC,SAASA,CAAC7L,MAGDlE,GAAMkK,iBAAiB;AAAA,UAC5BxE,QAAQxB,EAAWoD;AAAAA,UACnB3B,QAAAA;AAAAA,UACAT,MAAAA;AAAAA,UACArP,SAAS2Z;AAAAA,QAAAA,CACV;AAAA,QAEHtO,gBAAgB;AAAA,UACd6O,SAAS,CAAC7K,GAAMS,GAAQ6J,CAAW;AAAA,QAAA;AAAA,MACrC;AAAA,IACF;AAAA,EACF,CACD,GACKzM,IAAoBjN,GAAUmV,IAAqB;AAAA,IACvDC,gBAAgB;AAAA,MACdQ,QAAQ;AAAA,QACNjJ,cAAc8M;AAAAA,QACd7M,cAAc6M,EAAWS,KAAK,GAAG,EAAE;AAAA,MAAA;AAAA,IAEvC;AAAA,IACA9M,yBAAyBP;AAAAA,IACzBQ,gCAAgCoM;AAAAA,EAAAA,CACjC;AAGMnf,SADO0F,GAAUiN,GAAmBH,CAAW;AAExD;ACpFaqN,MAAAA,KAA8BA,CACzCzY,MAEO8D,GAAAA,EAAsCzD,CAAQA,OAiC5C;AAAA,EACLqY,cAjCmB1Y,EAAUE,OAC7B,CAACC,GAAKC,MAAS;AACP,UAAA;AAAA,MACJuD,OAAAA;AAAAA,MACAyI,cAAAA;AAAAA,MACAD,OAAAA,IAAQ0I;AAAAA,MACRhF,OAAAA,IAAQkF;AAAAA,MACRtH,UAAAA,IAAW;AAAA,MACXlG,UAAAA,IAAW;AAAA,MACX4G,QAAAA,IAAS;AAAA,MACTsE,WAAAA,IAAY,CAAE;AAAA,MACdkG,mBAAAA,IAAoB;AAAA,MACpBjL,MAAAA,IAAOa,GAAuB,MAAM;AAAA,MACpCtC,SAAAA,IAAU;AAAA,IAAA,IACR7L;AACJD,WAAAA,EAAIwD,CAAK,IAAI;AAAA,MACXwI,OAAAA;AAAAA,MACA0D,OAAAA;AAAAA,MACAzD,cAAAA;AAAAA,MACAqB,UAAAA;AAAAA,MACAlG,UAAAA;AAAAA,MACA4G,QAAAA;AAAAA,MACAsE,WAAAA;AAAAA,MACA/E,MAAAA;AAAAA,MACAiL,mBAAAA;AAAAA,MACA1M,SAAAA;AAAAA,IACF,GACO9L;AAAAA,EACT,GACA,EACF;AAAA,EAIEqI,MAAM0K;AAAAA,EACNtG,iBAAiBA,CAACjJ,GAAOuI,MAAiB;AACxC7L,IAAAA,EAAK3D,CAAWA,OAAA;AAAA,MACdgc,cAAc;AAAA,QACZ,GAAGhc,EAAMgc;AAAAA,QACT,CAAC/U,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMgc,aAAa/U,CAAK;AAAA,UAC3BuI,cAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAS,iBAAiBA,CAAChJ,GAAOyI,MAAiB;AACxC/L,IAAAA,EAAK3D,CAAWA,OAAA;AAAA,MACdgc,cAAc;AAAA,QACZ,GAAGhc,EAAMgc;AAAAA,QACT,CAAC/U,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMgc,aAAa/U,CAAK;AAAA,UAC3ByI,cAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAwM,aAAaA,CAACjV,GAAO4D,MAAa;AAChClH,IAAAA,EAAK3D,CAAWA,OAAA;AAAA,MACdgc,cAAc;AAAA,QACZ,GAAGhc,EAAMgc;AAAAA,QACT,CAAC/U,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMgc,aAAa/U,CAAK;AAAA,UAC3B4D,UAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAsR,aAAaA,CAAClV,GAAO8J,MAAa;AAChCpN,IAAAA,EAAK3D,CAAWA,OAAA;AAAA,MACdgc,cAAc;AAAA,QACZ,GAAGhc,EAAMgc;AAAAA,QACT,CAAC/U,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMgc,aAAa/U,CAAK;AAAA,UAC3B8J,UAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAqL,SAASA,CAACnV,GAAO+J,MAAS;AACxBrN,IAAAA,EAAK3D,CAAWA,OAAA;AAAA,MACdgc,cAAc;AAAA,QACZ,GAAGhc,EAAMgc;AAAAA,QACT,CAAC/U,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMgc,aAAa/U,CAAK;AAAA,UAC3B+J,MAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAqL,WAAWA,CAACpV,GAAOwK,MAAW;AAC5B9N,IAAAA,EAAK3D,CAAWA,OAAA;AAAA,MACdgc,cAAc;AAAA,QACZ,GAAGhc,EAAMgc;AAAAA,QACT,CAAC/U,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMgc,aAAa/U,CAAK;AAAA,UAC3BwK,QAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACA6K,cAAcA,CAACrV,GAAO8O,MAAc;AAClCpS,IAAAA,EAAK3D,CAAWA,OAAA;AAAA,MACdgc,cAAc;AAAA,QACZ,GAAGhc,EAAMgc;AAAAA,QACT,CAAC/U,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMgc,aAAa/U,CAAK;AAAA,UAC3B8O,WAAW,CAAC,GAAGA,CAAS;AAAA,QAAA;AAAA,MAC1B;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACApG,YAAYA,CAAC1I,GAAOsI,MAAY;AAC9B5L,IAAAA,EAAK3D,CAAWA,OAAA;AAAA,MACdgc,cAAc;AAAA,QACZ,GAAGhc,EAAMgc;AAAAA,QACT,CAAC/U,CAAK,GAAG;AAAA,UACP,GAAGjH,EAAMgc,aAAa/U,CAAK;AAAA,UAC3BsI,SAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EAAA;AAEN,EACD,GC9HGgN,KAA0BhV,GAC9B,EACF;AAEO,SAAAiV,GAAAjjB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAkC;AAAA,IAAA+N,UAAAA;AAAAA,IAAAC,QAAAA;AAAAA,EAAAA,IAAAlO;AAGUe,MAAAA;AAAAd,EAAAA,SAAAiO,KACrBnN,IAAAyhB,GAA4BtU,CAAM,GAACjO,OAAAiO,GAAAjO,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAA/D,QAAA,CAAAkO,CAAA,IAAmB/H,GAASrF,CAAmC;AAACC,MAAAA;AAAA,SAAAf,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkO,KAG9DnN,sBAAAgiB,GAAA,UAAA,EAAyC7U,OAAAA,GACtCF,UAAAA,GACH,GAAmChO,OAAAgO,GAAAhO,OAAAkO,GAAAlO,OAAAe,KAAAA,IAAAf,EAAA,CAAA,GAFnCe;AAEmC;AAIhC,SAAAkiB,EAAA7U,GAAA;AAGLlD,QAAAA,IAAcmD,GAAA0U,EAAkC;AAAC,MAAA,CAC5CzU,OAAAC,KAAYrD,CAAK,EAACsD;AAAAC,UAAAA,IAAAA,MACL,8CAA8C;AACzDC,SAAAA,GAASxD,GAAOkD,CAAQ;AAAC;ACjC3B,SAAA8U,GAAAnjB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAA6B;AAAA,IAAAwN,OAAAA;AAAAA,EAAAA,IAAA1N;AAA4Be,MAAAA;AAAAd,EAAAA,SAAAyN,KAE5D3M,IAAA0F,CAAWA,MAAAA,EAAKgc,aAAc/U,CAAK,EAAAwI,OAAQjW,OAAAyN,GAAAzN,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAD7CiW,QAAAA,IAAcgN,EACZniB,CACF;AAACC,MAAAA;AAAAf,EAAAA,SAAAyN,KAGC1M,IAAA8N,CAAWrI,MAAAA,EAAKgc,aAAc/U,CAAK,EAAAkM,OAAQ3Z,OAAAyN,GAAAzN,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAD7C2Z,QAAAA,IAAcsJ,EACZliB,CACF;AAACM,MAAAA;AAAArB,EAAAA,SAAAyN,KAGCpM,IAAA8hB,CAAW3c,MAAAA,EAAKgc,aAAc/U,CAAK,EAAA8J,UAAWvX,OAAAyN,GAAAzN,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AADhDuX,QAAAA,IAAiB0L,EACf5hB,CACF,GACA+hB,IAAqBH,EAAAhiB,EAAqD;AAACK,MAAAA;AAAA,EAAAtB,EAAAojB,CAAAA,MAAAA,KAAApjB,SAAAyN,KAGzE4V,IAAAA,CAAAA,MAAsBD,EAAa3V,GAAO8J,CAAQ,GAACvX,OAAAojB,GAAApjB,OAAAyN,GAAAzN,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AADrD,QAAA2iB,IAAoBrhB;AAGnBE,MAAAA;AAAAxB,EAAAA,SAAAyN,KAGCjM,IAAA8hB,CAAW9c,MAAAA,EAAKgc,aAAc/U,CAAK,EAAAgV,mBAAoBziB,OAAAyN,GAAAzN,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AADzDyiB,QAAAA,IAA0BQ,EACxBzhB,CACF;AAACE,MAAAA;AAAA1B,EAAAA,UAAAyN,KAGC/L,IAAA6hB,CAAW/c,MAAAA,EAAKgc,aAAc/U,CAAK,EAAAsI,SAAU/V,QAAAyN,GAAAzN,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AAD/C+V,QAAAA,IAAgBkN,EACdvhB,CACF,GACA8hB,IAAuBP,EAAA9hB,EAAoD;AAACS,MAAAA;AAAA,EAAA5B,EAAAwjB,EAAAA,MAAAA,KAAAxjB,UAAAyN,KAG1EgW,IAAAA,CAAAA,MACED,EAAe/V,GAAOsI,CAAO,GAAC/V,QAAAwjB,GAAAxjB,QAAAyN,GAAAzN,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAFlC,QAAAmW,IAAmBvU;AAIlBC,MAAAA;AAAA7B,EAAAA,UAAAyN,KAGC5L,IAAA6hB,CAAWld,MAAAA,EAAKgc,aAAc/U,CAAK,EAAAyI,cAAelW,QAAAyN,GAAAzN,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA;AADpDkW,QAAAA,IAAqB+M,EACnBphB,CACF,GAEA8hB,IAAyBV,EAAAjhB,EAEzB;AAACC,MAAAA;AAAAjC,EAAAA,EAAA2jB,EAAAA,MAAAA,KAAA3jB,UAAAyN,KAAAzN,EAAA,EAAA,MAAAmW,KAGClU,IAAAqQ,CAAAA,MAAA;AACY,IAAA6D,EAAA,CAAA,CAAG7D,CAAI,GACjBqR,EAAiBlW,GAAO6E,CAAI;AAAA,EAAC,GAC9BtS,QAAA2jB,GAAA3jB,QAAAyN,GAAAzN,QAAAmW,GAAAnW,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA;AAJH,QAAAyW,IAAwBxU;AAMvBoE,MAAAA;AAAArG,EAAAA,UAAAyN,KAGCpH,IAAAud,CAAWpd,MAAAA,EAAKgc,aAAc/U,CAAK,EAAA4D,UAAWrR,QAAAyN,GAAAzN,QAAAqG,KAAAA,IAAArG,EAAA,EAAA;AADhDqR,QAAAA,IAAiB4R,EACf5c,CACF,GACAwd,IAAqBZ,EAAAa,EAAqD;AAACld,MAAAA;AAAA,EAAA5G,EAAA6jB,EAAAA,MAAAA,KAAA7jB,UAAAyN,KAGzEsW,IAAAA,CAAAA,MACEF,EAAapW,GAAO4D,CAAQ,GAACrR,QAAA6jB,GAAA7jB,QAAAyN,GAAAzN,QAAA4G,KAAAA,IAAA5G,EAAA,EAAA;AAFjC,QAAA0iB,IAAoB9b;AAInBC,MAAAA;AAAA7G,EAAAA,UAAAyN,KAGC5G,IAAAmd,CAAWxd,MAAAA,EAAKgc,aAAc/U,CAAK,EAAAwK,QAASjY,QAAAyN,GAAAzN,QAAA6G,KAAAA,IAAA7G,EAAA,EAAA;AAD9CiY,QAAAA,IAAegL,EACbpc,CACF,GACAod,IAAmBhB,EAAAiB,EAAmD;AAACpd,MAAAA;AAAA,EAAA9G,EAAAikB,EAAAA,MAAAA,KAAAjkB,UAAAyN,KAErD0W,IAAAA,CAAAA,MAChBF,EAAWxW,GAAOwK,CAAM,GAACjY,QAAAikB,GAAAjkB,QAAAyN,GAAAzN,QAAA8G,KAAAA,IAAA9G,EAAA,EAAA;AAD3B,QAAA6iB,IAAkB/b;AACSC,MAAAA;AAAA/G,EAAAA,UAAAyN,KAGzB1G,IAAAqd,CAAW5d,MAAAA,EAAKgc,aAAc/U,CAAK,EAAAuI,cAAehW,QAAAyN,GAAAzN,QAAA+G,KAAAA,IAAA/G,EAAA,EAAA;AADpDgW,QAAAA,IAAqBiN,EACnBlc,CACF,GAEAsd,IAAqBpB,EAAAqB,EAErB;AAACpd,MAAAA;AAAA,EAAAlH,EAAAqkB,EAAAA,MAAAA,KAAArkB,UAAAyN,KAGC8W,IAAAA,CAAAA,MACEF,EAAa5W,GAAOuI,CAAY,GAAChW,QAAAqkB,GAAArkB,QAAAyN,GAAAzN,QAAAkH,KAAAA,IAAAlH,EAAA,EAAA;AAFrC,QAAA0W,IAAwBxP;AAIvBsd,MAAAA;AAAAxkB,EAAAA,UAAAyN,KAGC+W,IAAAC,CAAWje,MAAAA,EAAKgc,aAAc/U,CAAK,EAAA8O,WAAYvc,QAAAyN,GAAAzN,QAAAwkB,KAAAA,IAAAxkB,EAAA,EAAA;AADjDuc,QAAAA,IAAkB0G,EAChBuB,CACF,GACAE,IAAsBzB,EAAA0B,EAAsD;AAACC,MAAAA;AAAA,EAAA5kB,EAAA0kB,EAAAA,MAAAA,KAAA1kB,UAAAyN,KAG3EoX,KAAAA,CAAAA,MACEH,EAAcjX,GAAO8O,CAAS,GAACvc,QAAA0kB,GAAA1kB,QAAAyN,GAAAzN,QAAA4kB,MAAAA,KAAA5kB,EAAA,EAAA;AAFnC,QAAA8iB,KAAqB8B;AAIpBE,MAAAA;AAAA9kB,EAAAA,UAAAyN,KAGCqX,KAAAC,CAAWve,MAAAA,EAAKgc,aAAc/U,CAAK,EAAA+J,MAAOxX,QAAAyN,GAAAzN,QAAA8kB,MAAAA,KAAA9kB,EAAA,EAAA;AAD5CwX,QAAAA,KAAayL,EACX6B,EACF,GACAE,KAAiB/B,EAAAgC,EAAiD;AAACC,MAAAA;AAAA,EAAAllB,EAAAglB,EAAAA,MAAAA,MAAAhlB,UAAAyN,KAGjE0X,KAAAA,CAAAA,MAAyCH,GAASvX,GAAO+J,CAAI,GAACxX,QAAAglB,IAAAhlB,QAAAyN,GAAAzN,QAAAklB,MAAAA,KAAAllB,EAAA,EAAA;AADhE,QAAA4iB,KAAgBsC;AAGfE,MAAAA;AAAA,EAAAplB,EAAAgW,EAAAA,MAAAA,KAAAhW,UAAA8iB,MAE8BsC,KAAAA,MAAA;AAC7BpP,IAAAA,GAAYpG,mBAAA,GACZkT,KAAe;AAAA,EAAC,GACjB9iB,QAAAgW,GAAAhW,QAAA8iB,IAAA9iB,QAAAolB,MAAAA,KAAAplB,EAAA,EAAA;AAHD,QAAAqlB,KAAmBD;AAGaE,MAAAA;AAAAtlB,EAAAA,UAAAmW,KAG9BmP,KAAAC,CAAAA,MAAA;AACEpP,IAAAA,EAAWJ,CAAO;AAAA,EAAC,GACpB/V,QAAAmW,GAAAnW,QAAAslB,MAAAA,KAAAtlB,EAAA,EAAA;AAHH,QAAAwlB,KAAoBF;AAKnBG,MAAAA;AAAA,SAAAzlB,EAAAqlB,EAAAA,MAAAA,MAAArlB,UAAAyiB,KAAAziB,EAAA,EAAA,MAAAuX,KAAAvX,UAAA+V,KAAA/V,EAAAqR,EAAAA,MAAAA,KAAArR,UAAAiY,KAAAjY,EAAAgW,EAAAA,MAAAA,KAAAhW,EAAA,EAAA,MAAAkW,KAAAlW,EAAAiW,EAAAA,MAAAA,KAAAjW,EAAA,EAAA,MAAAuc,KAAAvc,EAAA2iB,EAAAA,MAAAA,KAAA3iB,EAAA,EAAA,MAAAmW,KAAAnW,EAAA0iB,EAAAA,MAAAA,KAAA1iB,UAAA6iB,KAAA7iB,EAAA0W,EAAAA,MAAAA,KAAA1W,EAAA,EAAA,MAAAyW,KAAAzW,EAAA8iB,EAAAA,MAAAA,MAAA9iB,EAAA,EAAA,MAAA4iB,MAAA5iB,EAAAwlB,EAAAA,MAAAA,MAAAxlB,EAAA,EAAA,MAAAwX,MAAAxX,UAAA2Z,KAEM8L,KAAA;AAAA,IAAAxP,OAAAA;AAAAA,IAAA0D,OAAAA;AAAAA,IAAApC,UAAAA;AAAAA,IAAAkL,mBAAAA;AAAAA,IAAAvM,cAAAA;AAAAA,IAAAH,SAAAA;AAAAA,IAAA1E,UAAAA;AAAAA,IAAA4G,QAAAA;AAAAA,IAAAjC,cAAAA;AAAAA,IAAAuG,WAAAA;AAAAA,IAAA/E,MAAAA;AAAAA,IAAAmL,aAAAA;AAAAA,IAAAlM,iBAAAA;AAAAA,IAAAiM,aAAAA;AAAAA,IAAAG,WAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAF,SAAAA;AAAAA,IAAAzM,YAAAA;AAAAA,IAAAqP,aAAAA;AAAAA,IAAAH,YAAAA;AAAAA,IAAA3O,iBAAAA;AAAAA,EAAA,GAsBN1W,QAAAqlB,IAAArlB,QAAAyiB,GAAAziB,QAAAuX,GAAAvX,QAAA+V,GAAA/V,QAAAqR,GAAArR,QAAAiY,GAAAjY,QAAAgW,GAAAhW,QAAAkW,GAAAlW,QAAAiW,GAAAjW,QAAAuc,GAAAvc,QAAA2iB,GAAA3iB,QAAAmW,GAAAnW,QAAA0iB,GAAA1iB,QAAA6iB,GAAA7iB,QAAA0W,GAAA1W,QAAAyW,GAAAzW,QAAA8iB,IAAA9iB,QAAA4iB,IAAA5iB,QAAAwlB,IAAAxlB,QAAAwX,IAAAxX,QAAA2Z,GAAA3Z,QAAAylB,MAAAA,KAAAzlB,EAAA,EAAA,GAtBMylB;AAsBN;AA1II,SAAAR,GAAAS,GAAA;AAAA,SAiGgDlf,EAAKoc;AAAA;AAjGrD,SAAA+B,GAAAgB,GAAA;AAAA,SAsFqDnf,EAAKsc;AAAA;AAtF1D,SAAAwB,GAAAsB,GAAA;AAAA,SA0EQpf,EAAKkQ;AAAA;AA1Eb,SAAAwN,GAAA2B,GAAA;AAAA,SAgEkDrf,EAAKqc;AAAA;AAhEvD,SAAAiB,GAAAgC,GAAA;AAAA,SAqDoDtf,EAAKkc;AAAA;AArDzD,SAAA1gB,GAAA+jB,GAAA;AAAA,SAuCQvf,EAAKiQ;AAAA;AAvCb,SAAAtV,GAAA6kB,GAAA;AAAA,SA0BsDxf,EAAK2P;AAAA;AA1B3D,SAAAlV,GAAAglB,GAAA;AAAA,SAYoDzf,EAAKmc;AAAA;ACXzD,SAAAuD,GAAAnmB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAiC;AAAA,IAAAwN,OAAAA;AAAAA,IAAAqU,aAAAA;AAAAA,IAAA9T,UAAAA;AAAAA,EAAAA,IAAAjO;AAITe,MAAAA;AAAAd,EAAAA,SAAAyN,KAuBL3M,IAAA;AAAA,IAAA2M,OAAAA;AAAAA,EAAA,GAASzN,OAAAyN,GAAAzN,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAtBjC,QAAA;AAAA,IAAAiW,OAAAA;AAAAA,IAAA0D,OAAAA;AAAAA,IAAApC,UAAAA;AAAAA,IAAAoL,aAAAA;AAAAA,IAAAF,mBAAAA;AAAAA,IAAAvM,cAAAA;AAAAA,IAAAO,iBAAAA;AAAAA,IAAAV,SAAAA;AAAAA,IAAAI,YAAAA;AAAAA,IAAA9E,UAAAA;AAAAA,IAAAqR,aAAAA;AAAAA,IAAAzK,QAAAA;AAAAA,IAAA4K,WAAAA;AAAAA,IAAA7M,cAAAA;AAAAA,IAAAU,iBAAAA;AAAAA,IAAA6F,WAAAA;AAAAA,IAAAuG,cAAAA;AAAAA,IAAAtL,MAAAA;AAAAA,IAAAoL,SAAAA;AAAAA,IAAAyC,YAAAA;AAAAA,IAAAG,aAAAW;AAAAA,EAAAA,IAsBIjD,GAAoBpiB,CAAS;AAACC,MAAAA;AAAA,EAAAf,EAAA,CAAA,MAAAkW,KAAAlW,EAAAiW,CAAAA,MAAAA,KAAAjW,EAAA0W,CAAAA,MAAAA,KAAA1W,SAAA8iB,KAExB/hB,IAAAA,MAAA;AACJmV,QAAAA,KAAgBD,EAAMC,CAAY,GAAC;AACrCkQ,YAAAA,IAAkBnQ,EAAMC,CAAY,EAAA5D;AACrB,MAAAoE,EAAA,IAAK0P,GAAW;AAAA,IAAA;AAAC,WAAA,MAAA;AAGhCtD,MAAAA,IAAe;AAAA,IAAC;AAAA,EAAA,GAEnB9iB,OAAAkW,GAAAlW,OAAAiW,GAAAjW,OAAA0W,GAAA1W,OAAA8iB,GAAA9iB,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAAqB,MAAAA;AAAA,EAAArB,EAAAkW,CAAAA,MAAAA,KAAAlW,EAAA,CAAA,MAAAiW,KAAAjW,EAAAmW,CAAAA,MAAAA,KAAAnW,EAAA,EAAA,MAAA0W,KAAA1W,UAAA8iB,KAAEzhB,IAAA,CAAC4U,GAAOC,GAAc4M,GAAcpM,GAAiBP,CAAU,GAACnW,OAAAkW,GAAAlW,OAAAiW,GAAAjW,OAAAmW,GAAAnW,QAAA0W,GAAA1W,QAAA8iB,GAAA9iB,QAAAqB,KAAAA,IAAArB,EAAA,EAAA,GARnEwD,EAAUzC,GAQPM,CAAgE;AAACC,MAAAA;AAAA,EAAAtB,EAAA,EAAA,MAAAmmB,KAAAnmB,EAAAqlB,EAAAA,MAAAA,KAAArlB,EAAAyiB,EAAAA,MAAAA,KAAAziB,UAAAqR,KAGlE/P,IAAA+kB,CAAAA,MAAA;AACMA,IAAAA,MAAW5D,KAAiB,CAAKpR,MACxBgU,EAAA,GAEbc,EAAaE,CAAM;AAAA,EAAC,GACrBrmB,QAAAmmB,GAAAnmB,QAAAqlB,GAAArlB,QAAAyiB,GAAAziB,QAAAqR,GAAArR,QAAAsB,KAAAA,IAAAtB,EAAA,EAAA;AANH,QAAAwlB,IAAoBlkB,GAiBCE,MAAEihB;AAAiB/gB,MAAAA;AAAA,SAAA1B,EAAAgO,EAAAA,MAAAA,KAAAhO,EAAA,EAAA,MAAAqlB,KAAArlB,UAAAuX,KAAAvX,EAAA+V,EAAAA,MAAAA,KAAA/V,EAAA,EAAA,MAAAqR,KAAArR,UAAAiY,KAAAjY,EAAAyN,EAAAA,MAAAA,KAAAzN,EAAA,EAAA,MAAAgW,KAAAhW,UAAAkW,KAAAlW,EAAAiW,EAAAA,MAAAA,KAAAjW,EAAA,EAAA,MAAAuc,KAAAvc,EAAA2iB,EAAAA,MAAAA,KAAA3iB,EAAA,EAAA,MAAAmW,KAAAnW,UAAA0iB,KAAA1iB,EAAA6iB,EAAAA,MAAAA,KAAA7iB,EAAA,EAAA,MAAAyW,KAAAzW,UAAA8iB,KAAA9iB,EAAA4iB,EAAAA,MAAAA,KAAA5iB,EAAA,EAAA,MAAAwB,KAAAxB,UAAA8hB,KAAA9hB,EAAAwlB,EAAAA,MAAAA,KAAAxlB,EAAA,EAAA,MAAAwX,KAAAxX,UAAA2Z,KARjCjY,IAAAsM,EAAQ;AAAA,IAAAP,OAAAA;AAAAA,IAAA8J,UAAAA;AAAAA,IAAAxB,SAAAA;AAAAA,IAAA1E,UAAAA;AAAAA,IAAA4G,QAAAA;AAAAA,IAAAsE,WAAAA;AAAAA,IAAA/E,MAAAA;AAAAA,IAAAiL,mBAQMjhB;AAAAA,IAAmB0U,cAAAA;AAAAA,IAAAD,OAAAA;AAAAA,IAAA0D,OAAAA;AAAAA,IAAApY,OAI/BwW,GAAA;AAAA,MAAAC,QACGT;AAAAA,MAAQC,MAAAA;AAAAA,MAAAS,QAAAA;AAAAA,MAAA9P,SAGP2Z;AAAAA,IAAAA,CACV;AAAA,IAAC9L,cAAAA;AAAAA,IAAAS,iBAAAA;AAAAA,IAAAkM,aAAAA;AAAAA,IAAAD,aAAAA;AAAAA,IAAAG,WAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAF,SAAAA;AAAAA,IAAAzM,YAAAA;AAAAA,IAAAqP,aAAAA;AAAAA,IAAAH,YAAAA;AAAAA,EAAAA,CAWH,GAACrlB,QAAAgO,GAAAhO,QAAAqlB,GAAArlB,QAAAuX,GAAAvX,QAAA+V,GAAA/V,QAAAqR,GAAArR,QAAAiY,GAAAjY,QAAAyN,GAAAzN,QAAAgW,GAAAhW,QAAAkW,GAAAlW,QAAAiW,GAAAjW,QAAAuc,GAAAvc,QAAA2iB,GAAA3iB,QAAAmW,GAAAnW,QAAA0iB,GAAA1iB,QAAA6iB,GAAA7iB,QAAAyW,GAAAzW,QAAA8iB,GAAA9iB,QAAA4iB,GAAA5iB,QAAAwB,GAAAxB,QAAA8hB,GAAA9hB,QAAAwlB,GAAAxlB,QAAAwX,GAAAxX,QAAA2Z,GAAA3Z,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA,GA5BK0B;AA4BL;ACjEJ,MAAM0d,KAAqB,CAAC9B,EAAoB;AAEzC,SAAAgJ,GAAAvmB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAA0B;AAAA,IAAA+N,UAAAA;AAAAA,IAAAP,OAAAA;AAAAA,IAAA1D,cAAAjJ;AAAAA,IAAAgU,YAAAA;AAAAA,IAAAgN,aAAAA;AAAAA,EAAAA,IAAA/hB;AAUhCgB,MAAAA;AAAAf,EAAAA,SAAAc,KAPeC,IAAAD,MAEbkF,SAAA;AAAA,IAAAuL,QAAA2M,GAAA3M;AAAAA,EAAAA,IAFazQ,GAEbd,OAAAc,GAAAd,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAFa,QAAA;AAAA,IAAAuR,QAAAlQ;AAAAA,EAAAA,IAAAN,GAAEwQ,IAAAlQ,MAA6B2E,SAAAkY,GAAA3M,SAA7BlQ;AAA6BC,MAAAA;AAAAtB,EAAAA,SAAAyN,KAkBrBnM,IAAA;AAAA,IAAAmM,OAAAA;AAAAA,EAAA,GAASzN,OAAAyN,GAAAzN,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AAVjC,QAAA;AAAA,IAAA2iB,aAAAA;AAAAA,IAAAF,mBAAAA;AAAAA,IAAA1M,SAAAA;AAAAA,IAAA1E,UAAAA;AAAAA,IAAAqR,aAAAA;AAAAA,IAAAzK,QAAAA;AAAAA,IAAA6K,cAAAA;AAAAA,IAAAtL,MAAAA;AAAAA,IAAAxB,cAAAA;AAAAA,EAAAA,IAUIkN,GAAoB5hB,CAAS,GAEjC2R,IAAiBF,GAAA9R,EAAuC,GACxD4K,IAAsBsC,EAAAhN,EAA0C,GAChEqK,IAAkB2C,EAAAnM,EAAsC,GACxD0J,IAAqByC,EAAA2V,EAAyC;AAACtiB,MAAAA;AAAAxB,EAAAA,SAAAyN,KAElDjM,IAAA8hB,OACT9c,EAAK6D,KAAMoD,CAAK,GAAAlN,OAAAS,OAAAkjB,EAAA,GAAwDlkB,OAAAyN,GAAAzN,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AAF5E,QAAAuf,IAAkBpR,EAChBqR,GAAWhe,CAEX,CACF,GACAmJ,IAAwBwD,EAAAmW,EAA4C;AAAC5iB,MAAAA;AAAA,EAAA1B,EAAA,CAAA,MAAAgD,OAAAC,IAAA,2BAAA,KACNvB,IAAA,CAAA,GAAE1B,OAAA0B,KAAAA,IAAA1B,EAAA,CAAA;AAAjEyf,QAAAA,IAA+BC,GAAgChe,CAAE;AAACE,MAAAA;AAAA5B,EAAAA,SAAAyN,KAElD7L,IAAA;AAAA,IAAA6L,OAAAA;AAAAA,IAAAsR,SAAAzB;AAAAA,EAAA,GAAwCtd,OAAAyN,GAAAzN,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA,GAAxD8e,GAAgBld,CAAwC;AAACC,MAAAA;AAAA7B,EAAAA,SAAAwL,KAAAxL,EAAA+V,EAAAA,MAAAA,KAAA/V,EAAA2K,EAAAA,MAAAA,KAAA3K,EAAA,EAAA,MAAAyN,KAAAzN,UAAA0L,KAAA1L,EAAA,EAAA,MAAA6L,KAE/ChK,IAAAA,MAAA;AACR,UAAA0kB,IAA2B5b,EAAgB8C,CAAK,GAAC/K,MAAAxC;AAAkB,WAE/D6V,MACQtI,EAAAA,GAAK6P,CAAAA,EAAA,CAAwB,GAEvCzR,EAAc4B,GAAK;AAAA,MAAAtJ,iBAAA;AAAA,IAAA,CAElB,IAAC,MAAA;AAIWsJ,MAAAA,EAAAA,GAAK6P,CAAAA,EAAA,CAAwB,GAC1CzR,EAAc4B,GAAO8Y,CAAkB;AAAA,IAAC;AAAA,EAAA,GAE3CvmB,OAAAwL,GAAAxL,QAAA+V,GAAA/V,QAAA2K,GAAA3K,QAAAyN,GAAAzN,QAAA0L,GAAA1L,QAAA6L,GAAA7L,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA;AAAAiC,MAAAA;AAAAjC,EAAAA,EAAAwL,EAAAA,MAAAA,KAAAxL,EAAAyiB,EAAAA,MAAAA,KAAAziB,EAAA+V,EAAAA,MAAAA,KAAA/V,UAAA2K,KAAA3K,EAAA,EAAA,MAAAyN,KAAAzN,EAAA,EAAA,MAAA0L,KAAA1L,EAAA,EAAA,MAAA6L,KAAE5J,IACDuJ,CAAAA,GACAiX,GACAhV,GACA/B,GACAqK,GACApL,GACAkB,CAAa,GACd7L,QAAAwL,GAAAxL,QAAAyiB,GAAAziB,QAAA+V,GAAA/V,QAAA2K,GAAA3K,QAAAyN,GAAAzN,QAAA0L,GAAA1L,QAAA6L,GAAA7L,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA,GAvBDwD,EAAU3B,GAePI,CAQF;AAACoE,MAAAA,GAAAO;AAAA,EAAA5G,EAAA+V,EAAAA,MAAAA,KAAA/V,EAAA,EAAA,MAAA2K,KAAA3K,EAAAyN,EAAAA,MAAAA,KAAAzN,EAAA,EAAA,MAAAuf,KAAAvf,UAAAiT,KAEQ5M,IAAAA,MAAA;AACRkZ,IAAAA,GAASe,QAAAvB,CAAAA,MAAA;AACPwC,YAAAA,IAAqB5W,EAAgB8C,CAAK,GAAC/K,MAAAnC,OAAAihB,KAAAgF,CACjC7jB,MAAAA,EAAsBD,MAAArC,OAAe0e,CAAO;AAChC,MAElBhJ,MACF0J,EAAsBra,QAAS2Z,CAAO,IAAIwC,GAAY7e,MAAAsP;AAGxDA,YAAAA,IACE,CAAC+D,MACA0J,EAAsBra,QAAS2Z,CAAO,KACrCwC,GAAY7e,MAAAsP;AAEhBiB,MAAAA,EAAS8L,GAAO;AAAA,QAAArc,OAAA;AAAA,UAAAsP,UAAAA;AAAAA,QAAAA;AAAAA,MAAA,CAIf;AAAA,IAAA,CAAC;AAAA,EAAA,GAEHpL,IAAA,CAACmP,GAASpL,GAAiB8C,GAAO8R,GAAWtM,CAAQ,GAACjT,QAAA+V,GAAA/V,QAAA2K,GAAA3K,QAAAyN,GAAAzN,QAAAuf,GAAAvf,QAAAiT,GAAAjT,QAAAqG,GAAArG,QAAA4G,MAAAP,IAAArG,EAAA,EAAA,GAAA4G,IAAA5G,EAAA,EAAA,IArBzDwD,EAAU6C,GAqBPO,CAAsD;AAACC,MAAAA;AAAA,EAAA7G,EAAA,EAAA,MAAAgW,KAAAhW,EAAA2iB,EAAAA,MAAAA,KAAA3iB,EAAA0iB,EAAAA,MAAAA,KAAA1iB,UAAA8iB,KAGxDjc,IAAAC,CAAAA,MAAA;AAAC,UAAA;AAAA,MAAAkJ,UAAAA;AAAAA,MAAAC,aAAAA;AAAAA,IAAAA,IAAAnJ;AACKkJ,QAAAA,MAAQlB,EAAAI,QAAoB;AAC9B8G,MAAAA,EAAYpG,mBAAqB;AAAC;AAAA,IAAA;AAIhCI,IAAAA,MAAQlB,EAAAM,eACVuT,EAAY1S,EAAWsH,QAAS,GAGpBtH,EAAAA,CAAAA,CAAAA,EAAWoB,QAAS;AAElC,UAAAkL,IAAkBtM,EAAWsM;AAAU,IAEnCA,GAAS/N,UACXsU,EAAavG,CAAS;AAAA,EAAC,GAE1Bvc,QAAAgW,GAAAhW,QAAA2iB,GAAA3iB,QAAA0iB,GAAA1iB,QAAA8iB,GAAA9iB,QAAA6G,KAAAA,IAAA7G,EAAA,EAAA;AAlBH,QAAA6P,IAAehJ;AAoBdC,MAAAA,GAAAC;AAAA/G,SAAAA,EAAA+V,EAAAA,MAAAA,KAAA/V,EAAAqR,EAAAA,MAAAA,KAAArR,EAAA8U,EAAAA,MAAAA,KAAA9U,EAAAiY,EAAAA,MAAAA,KAAAjY,EAAAgW,EAAAA,MAAAA,KAAAhW,EAAA6P,EAAAA,MAAAA,KAAA7P,EAAAiT,EAAAA,MAAAA,KAAAjT,UAAAuR,EAAAC,OAAAP,WAAAjR,EAAA,EAAA,MAAAuR,EAAAC,OAAAH,YAAArR,EAAA,EAAA,MAAAuR,EAAAC,OAAAJ,SAAApR,EAAA,EAAA,MAAA8hB,KAAA9hB,EAAA,EAAA,MAAAwX,KAES1Q,IAAAA,MAAA;AACR,UAAA+a,IAAmBxQ,IAAWE,EAAMC,OAAAH,WAAmBE,EAAMC,OAAAP,SAC7DgE,IAAmB5D,IAAWE,EAAMC,OAAAH,WAAmBE,EAAMC,OAAAJ,OAE7DzF,IAAciW,GAAA;AAAA,MAAA9M,YAAA;AAAA,QAAA,GAEPA;AAAAA,QAAU9C,UACH8C,GAAU9C,YAAeX,CAAAA;AAAAA,MAAQ;AAAA,MAAA0E,SAAAA;AAAAA,MAAA8L,YAAAA;AAAAA,MAAA5M,YAAAA;AAAAA,MAAAgD,QAAAA;AAAAA,MAAApI,QAAAA;AAAAA,MAAA2H,MAAAA;AAAAA,MAAAlF,MAQvC0D;AAAAA,MAAY8L,aAAAA;AAAAA,IAAAA,CAEnB;AAED7O,IAAAA,EAAQqK,IAAuB3R,CAAK;AAAA,EAAC,GACpC5E,IACDsK,CAAAA,GACA2E,GACAlB,GACAmD,GACApI,GACAoD,GACA1B,EAAMC,OAAAP,SACNM,EAAMC,OAAAH,UACNE,EAAMC,OAAAJ,OACN0Q,GACAtK,GACAzB,CAAO,GACR/V,QAAA+V,GAAA/V,QAAAqR,GAAArR,QAAA8U,GAAA9U,QAAAiY,GAAAjY,QAAAgW,GAAAhW,QAAA6P,GAAA7P,QAAAiT,GAAA1B,EAAAA,EAAAA,IAAAA,EAAAC,OAAAP,SAAAM,EAAAA,EAAAA,IAAAA,EAAAC,OAAAH,UAAAE,EAAAA,EAAAA,IAAAA,EAAAC,OAAAJ,OAAApR,QAAA8hB,GAAA9hB,QAAAwX,GAAAxX,QAAA8G,GAAA9G,QAAA+G,MAAAD,IAAA9G,EAAA,EAAA,GAAA+G,IAAA/G,EAAA,EAAA,IAjCDwD,EAAUsD,GAoBPC,CAaF,GAEMiH;AAAQ;AA9IV,SAAAsW,GAAAf,GAAA;AAAA,SAgC0C/c,EAAKmE;AAAA;AAhC/C,SAAAuZ,GAAAvhB,GAAA;AAAA,SAAA,CA6BwCyc,GAAAxT,SAA4BjJ,CAAC;AAAC;AA7BtE,SAAAmhB,GAAAmC,GAAA;AAAA,SA0BuCzf,EAAKkF;AAAA;AA1B5C,SAAA1J,GAAAmhB,GAAA;AAAA,SAyBoC3c,EAAKgF;AAAA;AAzBzC,SAAArK,GAAA0N,GAAA;AAAA,SAwBwCrI,EAAKqF;AAAA;AAxB7C,SAAA5K,GAAAuF,GAAA;AAAA,SAuBqCA,EAAKyM;AAAA;AA0HjDqT,GAAiB3E,WAAWuE;AC9JrB,SAAAO,GAAA1mB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAmB;AAAA,IAAAwN,OAAAA;AAAAA,EAAAA,IAAA1N;AAA6Ce,MAAAA;AAAAd,EAAAA,SAAAyN,KAC3BjH,IAAAA,CAAAA,MAAWA,EAAK6D,KAAMoD,CAAK,GAAEzN,OAAAyN,GAAAzN,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAvE,QAAA;AAAA,IAAAO,QAAAmmB;AAAAA,EAAAA,IAA8BvY,EAAYrN,CAA6B,GACvEP,IAAewS,GAAA9R,EAAqC;AAACF,MAAAA,GAAAM;AAAA,MAAArB,EAAAO,CAAAA,MAAAA,KAAAP,SAAA0mB,GAAA;AAAAplB,QAAAA;AAAAtB,IAAAA,SAAAO,KAI5Cwe,IAAAA,CAAAA,MAAaxe,EAAOwe,CAAO,GAAC/e,OAAAO,GAAAP,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA,GAD5BqB,IAAAqlB,EAASxlB,IACTI,CAA4B,EAACN,OAAAG,EACR,GAACnB,OAAAO,GAAAP,OAAA0mB,GAAA1mB,OAAAqB;AAAAA,EAAAA;AAAAA,IAAAA,IAAArB,EAAA,CAAA;AAFtBqB,SAAAA,IAAAA,GADcN;AAMF;AAVhB,SAAAI,GAAAwK,GAAA;AAAA,SAAA,CAAA,CAOoBA;AAAK;AAPzB,SAAA1K,GAAA4N,GAAA;AAAA,SAEmCrI,EAAKjG;AAAA;ACA/C,MAAMomB,KAAwB,CAC5BxW,IACAD,IACAoN,EAAoB;AAGf,SAASsJ,GAAWrmB,GAAiB;AACpCsmB,QAAAA,IAAetmB,EAClBS,OAAQ2K,CAAAA,MAAU,CAACgb,GAAsB/a,SAASD,EAAMjJ,MAAMrC,EAAG,CAAC,EAClEymB,KAAK,CAACC,GAAGC,OAAOD,EAAEE,SAASC,UAAaF,EAAEC,SAASC,MAAS,GAEzDC,IAAaR,GAChBzlB,IAAKb,CAAOE,MAAAA,EAAOihB,KAAM7V,CAAUA,MAAAA,EAAMjJ,MAAMrC,OAAOA,CAAE,CAAC,EACzDW,OAAQ2B,CAAMA,MAAA,CAAC,CAACA,CAAC;AAEpB,SAAO,CAAC,GAAGkkB,GAAc,GAAGM,CAAU;AACxC;ACVA,MAAMC,KAAmB;AAElB,SAAAC,GAAAtnB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAAI,MAAAA,GAAAI,GAAAC,GAAAgC;AAAA1C,EAAAA,SAAAD,KAAsB;AAAA,IAAAM,IAAAA;AAAAA,IAAAI,QAAAA;AAAAA,IAAAC,mBAAAA;AAAAA,IAAA,GAAAgC;AAAAA,EAAAA,IAAA3C,GAKTC,OAAAD,GAAAC,OAAAK,GAAAL,OAAAS,GAAAT,OAAAU,GAAAV,OAAA0C,MAAArC,IAAAL,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,GAAAU,IAAAV,EAAA,CAAA,GAAA0C,IAAA1C,EAAA,CAAA;AAAAc,MAAAA;AAAAd,EAAAA,SAAAK,KACUS,IAAA0F,CAAWA,MAAAA,EAAK6D,KAAMhK,CAAE,EAAAsD,SAAU3D,OAAAK,GAAAL,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAA9D2D,QAAAA,IAAgBwK,EAAYrN,CAAkC;AAACC,MAAAA;AAAAf,EAAAA,SAAAK,KAC/BU,IAAA8N,CAAWrI,MAAAA,EAAK6D,KAAMhK,CAAE,EAAAC,aAAcN,OAAAK,GAAAL,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAtEM,QAAAA,IAAoB6N,EAAYpN,CAAsC;AAACM,MAAAA;AAAArB,EAAAA,SAAAK,KACxCgB,IAAA8hB,CAAW3c,MAAAA,EAAK6D,KAAMhK,CAAE,EAAAM,YAAaX,OAAAK,GAAAL,QAAAqB,KAAAA,IAAArB,EAAA,EAAA;AAApEW,QAAAA,IAAmBwN,EAAY9M,CAAqC,GACpEimB,IAAiB5H,GAAA,IAAkC;AAACpe,MAAAA;AAAAtB,EAAAA,UAAAK,KACtB4lB,IAAAA,CAAAA,MAAWzf,EAAK6F,WAAYhM,CAAE,GAACL,QAAAK,GAAAL,QAAAsB,KAAAA,IAAAtB,EAAA,EAAA;AAA7DsF,QAAAA,IAAkB6I,EAAY7M,CAA+B;AAACE,MAAAA;AAAAxB,EAAAA,UAAAK,KAC/BmB,IAAA8hB,CAAW9c,MAAAA,EAAK6D,KAAMhK,CAAE,EAAAH,YAAaF,QAAAK,GAAAL,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAApEE,QAAAA,IAAmBiO,EAAY3M,CAAqC,GACpEmJ,IAAwBwD,EAAAlN,EAA4C,GACpEwL,IAAqB0B,EAAAhN,EAAyC,GAC9DsJ,IAAgB0D,EAAAnM,EAAoC,GACpDkK,IAAsBiC,EAAA2V,EAA0C,GAChEvX,IAAuB4B,EAAA+V,EAA2C;AAACxiB,MAAAA;AAAA1B,EAAAA,UAAAK,KAE1CqB,IAAA;AAAA,IAAA+L,OAASpN;AAAAA,EAAE,GAAEL,QAAAK,GAAAL,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AAAtCO,QAAAA,IAAekmB,GAAU/kB,CAAa;AAACE,MAAAA,GAAAC;AAAA7B,EAAAA,UAAAO,KAE9BsB,IAAA+kB,GAAWrmB,CAAM,GAACP,QAAAO,GAAAP,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAAlB6B,IAAAA;AADT,QAAA0lB,IAAuB3lB;AAEXK,MAAAA;AAAA,EAAAjC,EAAA,EAAA,MAAAK,KAAAL,EAAAU,EAAAA,MAAAA,KAAAV,EAAAyM,EAAAA,MAAAA,KAAAzM,UAAAuM,KAGVtK,IAAAkD,CAAAA,MAAA;AACE,UAAAqiB,IAAiB/a;AAOG,QALhB6a,EAAQliB,WACVqiB,cAAcH,EAAQliB,OAAQ,GAExBA,EAAAA,UAAWsiB,WAAA,MAAA;AACjBnb,MAAAA,EAAelM,CAAE;AAAA,OAAC+mB,EACD,GAEf1mB,GAAiB;AACnBA,MAAAA,EAAkByE,GAAcqiB,CAAQ;AAAC;AAAA,IAAA;AAIlCnnB,IAAAA,EAAAA,GAAI8E,EAAYG,SAAU;AAAA,EAAC,GACrCtF,QAAAK,GAAAL,QAAAU,GAAAV,QAAAyM,GAAAzM,QAAAuM,GAAAvM,QAAAiC,KAAAA,IAAAjC,EAAA,EAAA;AAjBH,QAAAkF,IAA8BjD;AAmB7BoE,MAAAA;AAAA,EAAArG,EAAA,EAAA,MAAAK,KAAAL,EAAAS,EAAAA,MAAAA,KAAAT,EAAAyK,EAAAA,MAAAA,KAAAzK,UAAAuM,KAGClG,IAAA9E,CAAAA,MAAA;AACEkJ,IAAAA,EAAQpK,GAAIkB,CAAK,GACjBd,IAASc,CAAK,GACdgL,EAAelM,CAAE;AAAA,EAAC,GACnBL,QAAAK,GAAAL,QAAAS,GAAAT,QAAAyK,GAAAzK,QAAAuM,GAAAvM,QAAAqG,KAAAA,IAAArG,EAAA,EAAA;AALH,QAAA2G,IAAmBN;AAOlBO,MAAAA;AAAA,EAAA5G,EAAA,EAAA,MAAA2K,KAAA3K,EAAAK,EAAAA,MAAAA,KAAAL,EAAA0C,EAAAA,MAAAA,KAAA1C,UAAAkM,KAGCtF,IAAAmN,CAAAA,MAAA;AAME,UAAA9H,IAA0B1L,CAAAA,CADXoK,EAAgBtK,CAAE,GAACqC,MAAAnC,QACF0G,MAAAqd,EAAA;AAGhCpY,IAAAA,EAAc7L,GAAI4L,CAAe,GACjCvJ,EAAKilB,gBAAiB5T,CAAO;AAAA,EAAA,GAC9B/T,QAAA2K,GAAA3K,QAAAK,GAAAL,QAAA0C,GAAA1C,QAAAkM,GAAAlM,QAAA4G,KAAAA,IAAA5G,EAAA,EAAA;AAZH,QAAA4nB,IAA0BhhB,GAiB1BihB,IAAmBnlB,EAAKolB;AAAUjhB,MAAAA;AAAA7G,EAAAA,EAAA6nB,EAAAA,MAAAA,KAAA7nB,UAAAK,KAAAL,EAAA,EAAA,MAAAuM,KAEhC1F,IAAAA,IAAAC,MAAA;AAAC,UAAA+G,IAAA/G;AACCyF,IAAAA,EAAelM,CAAE,GACbwnB,KACFA,EAAU,GAAIha,CAAI;AAAA,EAAC,GAEtB7N,QAAA6nB,GAAA7nB,QAAAK,GAAAL,QAAAuM,GAAAvM,QAAA6G,KAAAA,IAAA7G,EAAA,EAAA;AANH,QAAA+nB,IAAsBlhB;AAQrBC,MAAAA;AAAA9G,SAAAA,UAAA2D,KAAA3D,EAAAunB,EAAAA,MAAAA,KAAAvnB,EAAA,EAAA,MAAAE,KAAAF,UAAA4nB,KAAA5nB,EAAA+nB,EAAAA,MAAAA,KAAA/nB,EAAA2G,EAAAA,MAAAA,KAAA3G,EAAA,EAAA,MAAAkF,KAAAlF,UAAAK,KAAAL,EAAAM,EAAAA,MAAAA,KAAAN,EAAA,EAAA,MAAAW,KAAAX,UAAA0C,KAAA1C,EAAA,EAAA,MAAAsF,KAGCwB,IAAA,gBAAAhF,EAACiE,MAAe,GACVrD,GACQxC,YAAAA,GACRG,IAAAA,GACIknB,QAAaA,GACRjnB,aAAAA,GACDK,YAAAA,GACHgD,SAAAA,GACS2B,kBAAQA,GAClBqB,QAAAA,GACWzB,mBAAoBA,GACxB0iB,eAAAA,GACJG,WAAYA,GACvB,GAAA/nB,QAAA2D,GAAA3D,QAAAunB,GAAAvnB,QAAAE,GAAAF,QAAA4nB,GAAA5nB,QAAA+nB,GAAA/nB,QAAA2G,GAAA3G,QAAAkF,GAAAlF,QAAAK,GAAAL,QAAAM,GAAAN,QAAAW,GAAAX,QAAA0C,GAAA1C,QAAAsF,GAAAtF,QAAA8G,KAAAA,IAAA9G,EAAA,EAAA,GAbF8G;AAaE;AA/FC,SAAAwd,GAAA3Y,GAAA;AAAA,SA6DaA,GAAqB1F;AAAA;AA7DlC,SAAAie,GAAAN,GAAA;AAAA,SAgByCpd,EAAK+F;AAAA;AAhB9C,SAAAuX,GAAAiC,GAAA;AAAA,SAewCvf,EAAK0F;AAAA;AAf7C,SAAAlK,GAAA0hB,GAAA;AAAA,SAckCld,EAAKiE;AAAA;AAdvC,SAAAtJ,GAAA6kB,GAAA;AAAA,SAauCxf,EAAKiG;AAAA;AAb5C,SAAAxL,GAAAsiB,GAAA;AAAA,SAY0C/c,EAAKmE;AAAA;;;;AC1BtD,QAAIqd,IACH,OAAO,aAAe,OAAe,cACrC,OAAO,OAAS,OAAe,QAC/B,OAAOC,KAAW,OAAeA,IAE9BC,IAAkB,WAAY;AAClC,eAASC,IAAI;AACb,aAAK,QAAQ,IACb,KAAK,eAAeH,EAAW;AAAA,MAC/B;AACA,aAAAG,EAAE,YAAYH,GACP,IAAIG,EAAG;AAAA,IACd,EAAI;AAGJ,KAAC,SAASC,GAAY;AAEL,OAAC,SAAUC,GAAS;AAGnC,YAAIC,IACD,OAAOF,IAAe,OAAeA,KACrC,OAAO,OAAS,OAAe;AAAA,QAE/B,OAAOH,KAAW,OAAeA,MAClC,CAAE,GAEAM,IAAU;AAAA,UACZ,cAAc,qBAAqBD;AAAA,UACnC,UAAU,YAAYA,KAAK,cAAc;AAAA,UACzC,MACE,gBAAgBA,KAChB,UAAUA,KACT,WAAW;AACV,gBAAI;AACF,yBAAI,KAAM,GACH;AAAA,YACR,QAAW;AACV,qBAAO;AAAA,YACjB;AAAA,UACA,EAAU;AAAA,UACN,UAAU,cAAcA;AAAA,UACxB,aAAa,iBAAiBA;AAAA,QAC/B;AAED,iBAASE,EAAWC,GAAK;AACvB,iBAAOA,KAAO,SAAS,UAAU,cAAcA,CAAG;AAAA,QACtD;AAEE,YAAIF,EAAQ;AACV,cAAIG,IAAc;AAAA,YAChB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD,GAEGC,IACF,YAAY,UACZ,SAASF,GAAK;AACZ,mBAAOA,KAAOC,EAAY,QAAQ,OAAO,UAAU,SAAS,KAAKD,CAAG,CAAC,IAAI;AAAA,UAC1E;AAGL,iBAASG,EAAcC,GAAM;AAI3B,cAHI,OAAOA,KAAS,aAClBA,IAAO,OAAOA,CAAI,IAEhB,6BAA6B,KAAKA,CAAI,KAAKA,MAAS;AACtD,kBAAM,IAAI,UAAU,8CAA8CA,IAAO,GAAG;AAE9E,iBAAOA,EAAK,YAAW;AAAA,QAC3B;AAEE,iBAASC,EAAevnB,GAAO;AAC7B,iBAAI,OAAOA,KAAU,aACnBA,IAAQ,OAAOA,CAAK,IAEfA;AAAA,QACX;AAGE,iBAASwnB,EAAYC,GAAO;AAC1B,cAAIC,IAAW;AAAA,YACb,MAAM,WAAW;AACf,kBAAI1nB,IAAQynB,EAAM,MAAO;AACzB,qBAAO,EAAC,MAAMznB,MAAU,QAAW,OAAOA,EAAK;AAAA,YACvD;AAAA,UACK;AAED,iBAAIgnB,EAAQ,aACVU,EAAS,OAAO,QAAQ,IAAI,WAAW;AACrC,mBAAOA;AAAA,UACR,IAGIA;AAAA,QACX;AAEE,iBAASC,EAAQC,GAAS;AACxB,eAAK,MAAM,CAAE,GAETA,aAAmBD,IACrBC,EAAQ,QAAQ,SAAS5nB,GAAOsnB,GAAM;AACpC,iBAAK,OAAOA,GAAMtnB,CAAK;AAAA,UACxB,GAAE,IAAI,IACE,MAAM,QAAQ4nB,CAAO,IAC9BA,EAAQ,QAAQ,SAASC,GAAQ;AAC/B,gBAAIA,EAAO,UAAU;AACnB,oBAAM,IAAI,UAAU,wEAAwEA,EAAO,MAAM;AAE3G,iBAAK,OAAOA,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC;AAAA,UACjC,GAAE,IAAI,IACED,KACT,OAAO,oBAAoBA,CAAO,EAAE,QAAQ,SAASN,GAAM;AACzD,iBAAK,OAAOA,GAAMM,EAAQN,CAAI,CAAC;AAAA,UAChC,GAAE,IAAI;AAAA,QAEb;AAEE,QAAAK,EAAQ,UAAU,SAAS,SAASL,GAAMtnB,GAAO;AAC/C,UAAAsnB,IAAOD,EAAcC,CAAI,GACzBtnB,IAAQunB,EAAevnB,CAAK;AAC5B,cAAI8nB,IAAW,KAAK,IAAIR,CAAI;AAC5B,eAAK,IAAIA,CAAI,IAAIQ,IAAWA,IAAW,OAAO9nB,IAAQA;AAAA,QACvD,GAED2nB,EAAQ,UAAU,SAAY,SAASL,GAAM;AAC3C,iBAAO,KAAK,IAAID,EAAcC,CAAI,CAAC;AAAA,QACpC,GAEDK,EAAQ,UAAU,MAAM,SAASL,GAAM;AACrC,iBAAAA,IAAOD,EAAcC,CAAI,GAClB,KAAK,IAAIA,CAAI,IAAI,KAAK,IAAIA,CAAI,IAAI;AAAA,QAC1C,GAEDK,EAAQ,UAAU,MAAM,SAASL,GAAM;AACrC,iBAAO,KAAK,IAAI,eAAeD,EAAcC,CAAI,CAAC;AAAA,QACnD,GAEDK,EAAQ,UAAU,MAAM,SAASL,GAAMtnB,GAAO;AAC5C,eAAK,IAAIqnB,EAAcC,CAAI,CAAC,IAAIC,EAAevnB,CAAK;AAAA,QACrD,GAED2nB,EAAQ,UAAU,UAAU,SAAS1B,GAAU8B,GAAS;AACtD,mBAAST,KAAQ,KAAK;AACpB,YAAI,KAAK,IAAI,eAAeA,CAAI,KAC9BrB,EAAS,KAAK8B,GAAS,KAAK,IAAIT,CAAI,GAAGA,GAAM,IAAI;AAAA,QAGtD,GAEDK,EAAQ,UAAU,OAAO,WAAW;AAClC,cAAIF,IAAQ,CAAE;AACd,sBAAK,QAAQ,SAASznB,GAAOsnB,GAAM;AACjC,YAAAG,EAAM,KAAKH,CAAI;AAAA,UACrB,CAAK,GACME,EAAYC,CAAK;AAAA,QACzB,GAEDE,EAAQ,UAAU,SAAS,WAAW;AACpC,cAAIF,IAAQ,CAAE;AACd,sBAAK,QAAQ,SAASznB,GAAO;AAC3B,YAAAynB,EAAM,KAAKznB,CAAK;AAAA,UACtB,CAAK,GACMwnB,EAAYC,CAAK;AAAA,QACzB,GAEDE,EAAQ,UAAU,UAAU,WAAW;AACrC,cAAIF,IAAQ,CAAE;AACd,sBAAK,QAAQ,SAASznB,GAAOsnB,GAAM;AACjC,YAAAG,EAAM,KAAK,CAACH,GAAMtnB,CAAK,CAAC;AAAA,UAC9B,CAAK,GACMwnB,EAAYC,CAAK;AAAA,QACzB,GAEGT,EAAQ,aACVW,EAAQ,UAAU,OAAO,QAAQ,IAAIA,EAAQ,UAAU;AAGzD,iBAASK,EAASC,GAAM;AACtB,cAAI,CAAAA,EAAK,SACT;AAAA,gBAAIA,EAAK;AACP,qBAAO,QAAQ,OAAO,IAAI,UAAU,cAAc,CAAC;AAErD,YAAAA,EAAK,WAAW;AAAA;AAAA,QACpB;AAEE,iBAASC,EAAgBC,GAAQ;AAC/B,iBAAO,IAAI,QAAQ,SAASC,GAASC,GAAQ;AAC3C,YAAAF,EAAO,SAAS,WAAW;AACzB,cAAAC,EAAQD,EAAO,MAAM;AAAA,YACtB,GACDA,EAAO,UAAU,WAAW;AAC1B,cAAAE,EAAOF,EAAO,KAAK;AAAA,YACpB;AAAA,UACF,CAAA;AAAA,QACL;AAEE,iBAASG,EAAsBC,GAAM;AACnC,cAAIJ,IAAS,IAAI,WAAY,GACzBK,IAAUN,EAAgBC,CAAM;AACpC,iBAAAA,EAAO,kBAAkBI,CAAI,GACtBC;AAAA,QACX;AAEE,iBAASC,EAAeF,GAAM;AAC5B,cAAIJ,IAAS,IAAI,WAAY,GACzBK,IAAUN,EAAgBC,CAAM,GAChCO,IAAQ,2BAA2B,KAAKH,EAAK,IAAI,GACjDI,IAAWD,IAAQA,EAAM,CAAC,IAAI;AAClC,iBAAAP,EAAO,WAAWI,GAAMI,CAAQ,GACzBH;AAAA,QACX;AAEE,iBAASI,EAAsBC,GAAK;AAIlC,mBAHIC,IAAO,IAAI,WAAWD,CAAG,GACzBE,IAAQ,IAAI,MAAMD,EAAK,MAAM,GAExB3jB,IAAI,GAAGA,IAAI2jB,EAAK,QAAQ3jB;AAC/B,YAAA4jB,EAAM5jB,CAAC,IAAI,OAAO,aAAa2jB,EAAK3jB,CAAC,CAAC;AAExC,iBAAO4jB,EAAM,KAAK,EAAE;AAAA,QACxB;AAEE,iBAASC,EAAYH,GAAK;AACxB,cAAIA,EAAI;AACN,mBAAOA,EAAI,MAAM,CAAC;AAElB,cAAIC,IAAO,IAAI,WAAWD,EAAI,UAAU;AACxC,iBAAAC,EAAK,IAAI,IAAI,WAAWD,CAAG,CAAC,GACrBC,EAAK;AAAA,QAElB;AAEE,iBAASG,IAAO;AACd,sBAAK,WAAW,IAEhB,KAAK,YAAY,SAAShB,GAAM;AAY9B,iBAAK,WAAW,KAAK,UACrB,KAAK,YAAYA,GACZA,IAGM,OAAOA,KAAS,WACzB,KAAK,YAAYA,IACRjB,EAAQ,QAAQ,KAAK,UAAU,cAAciB,CAAI,IAC1D,KAAK,YAAYA,IACRjB,EAAQ,YAAY,SAAS,UAAU,cAAciB,CAAI,IAClE,KAAK,gBAAgBA,IACZjB,EAAQ,gBAAgB,gBAAgB,UAAU,cAAciB,CAAI,IAC7E,KAAK,YAAYA,EAAK,SAAU,IACvBjB,EAAQ,eAAeA,EAAQ,QAAQC,EAAWgB,CAAI,KAC/D,KAAK,mBAAmBe,EAAYf,EAAK,MAAM,GAE/C,KAAK,YAAY,IAAI,KAAK,CAAC,KAAK,gBAAgB,CAAC,KACxCjB,EAAQ,gBAAgB,YAAY,UAAU,cAAciB,CAAI,KAAKb,EAAkBa,CAAI,KACpG,KAAK,mBAAmBe,EAAYf,CAAI,IAExC,KAAK,YAAYA,IAAO,OAAO,UAAU,SAAS,KAAKA,CAAI,KAjB3D,KAAK,UAAU,IACf,KAAK,YAAY,KAmBd,KAAK,QAAQ,IAAI,cAAc,MAC9B,OAAOA,KAAS,WAClB,KAAK,QAAQ,IAAI,gBAAgB,0BAA0B,IAClD,KAAK,aAAa,KAAK,UAAU,OAC1C,KAAK,QAAQ,IAAI,gBAAgB,KAAK,UAAU,IAAI,IAC3CjB,EAAQ,gBAAgB,gBAAgB,UAAU,cAAciB,CAAI,KAC7E,KAAK,QAAQ,IAAI,gBAAgB,iDAAiD;AAAA,UAGvF,GAEGjB,EAAQ,SACV,KAAK,OAAO,WAAW;AACrB,gBAAIkC,IAAWlB,EAAS,IAAI;AAC5B,gBAAIkB;AACF,qBAAOA;AAGT,gBAAI,KAAK;AACP,qBAAO,QAAQ,QAAQ,KAAK,SAAS;AAChC,gBAAI,KAAK;AACd,qBAAO,QAAQ,QAAQ,IAAI,KAAK,CAAC,KAAK,gBAAgB,CAAC,CAAC;AACnD,gBAAI,KAAK;AACd,oBAAM,IAAI,MAAM,sCAAsC;AAEtD,mBAAO,QAAQ,QAAQ,IAAI,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;AAAA,UAEpD,IAGH,KAAK,cAAc,WAAW;AAC5B,gBAAI,KAAK,kBAAkB;AACzB,kBAAIC,IAAanB,EAAS,IAAI;AAC9B,qBAAImB,MAEO,YAAY,OAAO,KAAK,gBAAgB,IAC1C,QAAQ;AAAA,gBACb,KAAK,iBAAiB,OAAO;AAAA,kBAC3B,KAAK,iBAAiB;AAAA,kBACtB,KAAK,iBAAiB,aAAa,KAAK,iBAAiB;AAAA,gBACvE;AAAA,cACA,IAEiB,QAAQ,QAAQ,KAAK,gBAAgB;AAAA,YAEtD,OAAa;AAAA,kBAAInC,EAAQ;AACjB,uBAAO,KAAK,OAAO,KAAKsB,CAAqB;AAE7C,oBAAM,IAAI,MAAM,+BAA+B;AAAA;AAAA,UAElD,GAED,KAAK,OAAO,WAAW;AACrB,gBAAIY,IAAWlB,EAAS,IAAI;AAC5B,gBAAIkB;AACF,qBAAOA;AAGT,gBAAI,KAAK;AACP,qBAAOT,EAAe,KAAK,SAAS;AAC/B,gBAAI,KAAK;AACd,qBAAO,QAAQ,QAAQG,EAAsB,KAAK,gBAAgB,CAAC;AAC9D,gBAAI,KAAK;AACd,oBAAM,IAAI,MAAM,sCAAsC;AAEtD,mBAAO,QAAQ,QAAQ,KAAK,SAAS;AAAA,UAExC,GAEG5B,EAAQ,aACV,KAAK,WAAW,WAAW;AACzB,mBAAO,KAAK,OAAO,KAAKoC,CAAM;AAAA,UAC/B,IAGH,KAAK,OAAO,WAAW;AACrB,mBAAO,KAAK,KAAI,EAAG,KAAK,KAAK,KAAK;AAAA,UACnC,GAEM;AAAA,QACX;AAGE,YAAIC,IAAU,CAAC,WAAW,UAAU,OAAO,QAAQ,WAAW,SAAS,QAAQ,OAAO,OAAO;AAE7F,iBAASC,EAAgBC,GAAQ;AAC/B,cAAIC,IAAUD,EAAO,YAAa;AAClC,iBAAOF,EAAQ,QAAQG,CAAO,IAAI,KAAKA,IAAUD;AAAA,QACrD;AAEE,iBAASE,EAAQC,GAAO9iB,GAAS;AAC/B,cAAI,EAAE,gBAAgB6iB;AACpB,kBAAM,IAAI,UAAU,4FAA4F;AAGlH,UAAA7iB,IAAUA,KAAW,CAAE;AACvB,cAAIqhB,IAAOrhB,EAAQ;AAEnB,cAAI8iB,aAAiBD,GAAS;AAC5B,gBAAIC,EAAM;AACR,oBAAM,IAAI,UAAU,cAAc;AAEpC,iBAAK,MAAMA,EAAM,KACjB,KAAK,cAAcA,EAAM,aACpB9iB,EAAQ,YACX,KAAK,UAAU,IAAI+gB,EAAQ+B,EAAM,OAAO,IAE1C,KAAK,SAASA,EAAM,QACpB,KAAK,OAAOA,EAAM,MAClB,KAAK,SAASA,EAAM,QAChB,CAACzB,KAAQyB,EAAM,aAAa,SAC9BzB,IAAOyB,EAAM,WACbA,EAAM,WAAW;AAAA,UAEzB;AACM,iBAAK,MAAM,OAAOA,CAAK;AAiBzB,cAdA,KAAK,cAAc9iB,EAAQ,eAAe,KAAK,eAAe,gBAC1DA,EAAQ,WAAW,CAAC,KAAK,aAC3B,KAAK,UAAU,IAAI+gB,EAAQ/gB,EAAQ,OAAO,IAE5C,KAAK,SAAS0iB,EAAgB1iB,EAAQ,UAAU,KAAK,UAAU,KAAK,GACpE,KAAK,OAAOA,EAAQ,QAAQ,KAAK,QAAQ,MACzC,KAAK,SAASA,EAAQ,UAAU,KAAK,UAAW,WAAY;AAC1D,gBAAI,qBAAqBmgB,GAAG;AAC1B,kBAAI4C,IAAO,IAAI,gBAAiB;AAChC,qBAAOA,EAAK;AAAA,YACpB;AAAA,UACA,KACI,KAAK,WAAW,OAEX,KAAK,WAAW,SAAS,KAAK,WAAW,WAAW1B;AACvD,kBAAM,IAAI,UAAU,2CAA2C;AAIjE,cAFA,KAAK,UAAUA,CAAI,IAEf,KAAK,WAAW,SAAS,KAAK,WAAW,YACvCrhB,EAAQ,UAAU,cAAcA,EAAQ,UAAU,aAAY;AAEhE,gBAAIgjB,IAAgB;AACpB,gBAAIA,EAAc,KAAK,KAAK,GAAG;AAE7B,mBAAK,MAAM,KAAK,IAAI,QAAQA,GAAe,UAAS,oBAAI,QAAO,SAAS;AAAA,iBACnE;AAEL,kBAAIC,IAAgB;AACpB,mBAAK,QAAQA,EAAc,KAAK,KAAK,GAAG,IAAI,MAAM,OAAO,QAAO,oBAAI,KAAI,GAAG,QAAS;AAAA,YAC9F;AAAA,UACA;AAAA,QAEA;AAEE,QAAAJ,EAAQ,UAAU,QAAQ,WAAW;AACnC,iBAAO,IAAIA,EAAQ,MAAM,EAAC,MAAM,KAAK,UAAS,CAAC;AAAA,QAChD;AAED,iBAASL,EAAOnB,GAAM;AACpB,cAAI6B,IAAO,IAAI,SAAU;AACzB,iBAAA7B,EACG,KAAI,EACJ,MAAM,GAAG,EACT,QAAQ,SAAS8B,GAAO;AACvB,gBAAIA,GAAO;AACT,kBAAIC,IAAQD,EAAM,MAAM,GAAG,GACvBzC,IAAO0C,EAAM,MAAO,EAAC,QAAQ,OAAO,GAAG,GACvChqB,IAAQgqB,EAAM,KAAK,GAAG,EAAE,QAAQ,OAAO,GAAG;AAC9C,cAAAF,EAAK,OAAO,mBAAmBxC,CAAI,GAAG,mBAAmBtnB,CAAK,CAAC;AAAA,YACzE;AAAA,UACA,CAAO,GACI8pB;AAAA,QACX;AAEE,iBAASG,EAAaC,GAAY;AAChC,cAAItC,IAAU,IAAID,EAAS,GAGvBwC,IAAsBD,EAAW,QAAQ,gBAAgB,GAAG;AAIhE,iBAAAC,EACG,MAAM,IAAI,EACV,IAAI,SAAStC,GAAQ;AACpB,mBAAOA,EAAO,QAAQ;AAAA,CAAI,MAAM,IAAIA,EAAO,OAAO,GAAGA,EAAO,MAAM,IAAIA;AAAA,UACvE,CAAA,EACA,QAAQ,SAASuC,GAAM;AACtB,gBAAIC,IAAQD,EAAK,MAAM,GAAG,GACtBjjB,IAAMkjB,EAAM,MAAK,EAAG,KAAM;AAC9B,gBAAIljB,GAAK;AACP,kBAAInH,IAAQqqB,EAAM,KAAK,GAAG,EAAE,KAAM;AAClC,kBAAI;AACF,gBAAAzC,EAAQ,OAAOzgB,GAAKnH,CAAK;AAAA,cAC1B,SAAQsqB,GAAO;AACd,wBAAQ,KAAK,cAAcA,EAAM,OAAO;AAAA,cACpD;AAAA,YACA;AAAA,UACA,CAAO,GACI1C;AAAA,QACX;AAEE,QAAAqB,EAAK,KAAKQ,EAAQ,SAAS;AAE3B,iBAASc,EAASC,GAAU5jB,GAAS;AACnC,cAAI,EAAE,gBAAgB2jB;AACpB,kBAAM,IAAI,UAAU,4FAA4F;AAQlH,cANK3jB,MACHA,IAAU,CAAE,IAGd,KAAK,OAAO,WACZ,KAAK,SAASA,EAAQ,WAAW,SAAY,MAAMA,EAAQ,QACvD,KAAK,SAAS,OAAO,KAAK,SAAS;AACrC,kBAAM,IAAI,WAAW,0FAA0F;AAEjH,eAAK,KAAK,KAAK,UAAU,OAAO,KAAK,SAAS,KAC9C,KAAK,aAAaA,EAAQ,eAAe,SAAY,KAAK,KAAKA,EAAQ,YACvE,KAAK,UAAU,IAAI+gB,EAAQ/gB,EAAQ,OAAO,GAC1C,KAAK,MAAMA,EAAQ,OAAO,IAC1B,KAAK,UAAU4jB,CAAQ;AAAA,QAC3B;AAEE,QAAAvB,EAAK,KAAKsB,EAAS,SAAS,GAE5BA,EAAS,UAAU,QAAQ,WAAW;AACpC,iBAAO,IAAIA,EAAS,KAAK,WAAW;AAAA,YAClC,QAAQ,KAAK;AAAA,YACb,YAAY,KAAK;AAAA,YACjB,SAAS,IAAI5C,EAAQ,KAAK,OAAO;AAAA,YACjC,KAAK,KAAK;AAAA,UACX,CAAA;AAAA,QACF,GAED4C,EAAS,QAAQ,WAAW;AAC1B,cAAIE,IAAW,IAAIF,EAAS,MAAM,EAAC,QAAQ,KAAK,YAAY,GAAE,CAAC;AAC/D,iBAAAE,EAAS,KAAK,IACdA,EAAS,SAAS,GAClBA,EAAS,OAAO,SACTA;AAAA,QACR;AAED,YAAIC,IAAmB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;AAE/C,QAAAH,EAAS,WAAW,SAAS5sB,GAAKgtB,GAAQ;AACxC,cAAID,EAAiB,QAAQC,CAAM,MAAM;AACvC,kBAAM,IAAI,WAAW,qBAAqB;AAG5C,iBAAO,IAAIJ,EAAS,MAAM,EAAC,QAAQI,GAAQ,SAAS,EAAC,UAAUhtB,EAAG,EAAC,CAAC;AAAA,QACrE,GAEDmpB,EAAQ,eAAeC,EAAE;AACzB,YAAI;AACF,cAAID,EAAQ,aAAc;AAAA,QAC3B,QAAa;AACZ,UAAAA,EAAQ,eAAe,SAAS8D,GAAStD,GAAM;AAC7C,iBAAK,UAAUsD,GACf,KAAK,OAAOtD;AACZ,gBAAIgD,IAAQ,MAAMM,CAAO;AACzB,iBAAK,QAAQN,EAAM;AAAA,UACpB,GACDxD,EAAQ,aAAa,YAAY,OAAO,OAAO,MAAM,SAAS,GAC9DA,EAAQ,aAAa,UAAU,cAAcA,EAAQ;AAAA,QACzD;AAEE,iBAAS+D,EAAMnB,GAAOoB,GAAM;AAC1B,iBAAO,IAAI,QAAQ,SAAS1C,GAASC,GAAQ;AAC3C,gBAAI0C,IAAU,IAAItB,EAAQC,GAAOoB,CAAI;AAErC,gBAAIC,EAAQ,UAAUA,EAAQ,OAAO;AACnC,qBAAO1C,EAAO,IAAIvB,EAAQ,aAAa,WAAW,YAAY,CAAC;AAGjE,gBAAIkE,IAAM,IAAI,eAAgB;AAE9B,qBAASC,IAAW;AAClB,cAAAD,EAAI,MAAO;AAAA,YACnB;AAEM,YAAAA,EAAI,SAAS,WAAW;AACtB,kBAAIpkB,IAAU;AAAA,gBACZ,YAAYokB,EAAI;AAAA,gBAChB,SAASf,EAAae,EAAI,sBAAuB,KAAI,EAAE;AAAA,cACxD;AAGD,cAAID,EAAQ,IAAI,QAAQ,SAAS,MAAM,MAAMC,EAAI,SAAS,OAAOA,EAAI,SAAS,OAC5EpkB,EAAQ,SAAS,MAEjBA,EAAQ,SAASokB,EAAI,QAEvBpkB,EAAQ,MAAM,iBAAiBokB,IAAMA,EAAI,cAAcpkB,EAAQ,QAAQ,IAAI,eAAe;AAC1F,kBAAIqhB,IAAO,cAAc+C,IAAMA,EAAI,WAAWA,EAAI;AAClD,yBAAW,WAAW;AACpB,gBAAA5C,EAAQ,IAAImC,EAAStC,GAAMrhB,CAAO,CAAC;AAAA,cACpC,GAAE,CAAC;AAAA,YACL,GAEDokB,EAAI,UAAU,WAAW;AACvB,yBAAW,WAAW;AACpB,gBAAA3C,EAAO,IAAI,UAAU,wBAAwB,CAAC;AAAA,cAC/C,GAAE,CAAC;AAAA,YACL,GAED2C,EAAI,YAAY,WAAW;AACzB,yBAAW,WAAW;AACpB,gBAAA3C,EAAO,IAAI,UAAU,2BAA2B,CAAC;AAAA,cAClD,GAAE,CAAC;AAAA,YACL,GAED2C,EAAI,UAAU,WAAW;AACvB,yBAAW,WAAW;AACpB,gBAAA3C,EAAO,IAAIvB,EAAQ,aAAa,WAAW,YAAY,CAAC;AAAA,cACzD,GAAE,CAAC;AAAA,YACL;AAED,qBAASoE,EAAOvtB,GAAK;AACnB,kBAAI;AACF,uBAAOA,MAAQ,MAAMopB,EAAE,SAAS,OAAOA,EAAE,SAAS,OAAOppB;AAAA,cAC1D,QAAW;AACV,uBAAOA;AAAA,cACjB;AAAA,YACA;AAoBM,gBAlBAqtB,EAAI,KAAKD,EAAQ,QAAQG,EAAOH,EAAQ,GAAG,GAAG,EAAI,GAE9CA,EAAQ,gBAAgB,YAC1BC,EAAI,kBAAkB,KACbD,EAAQ,gBAAgB,WACjCC,EAAI,kBAAkB,KAGpB,kBAAkBA,MAChBhE,EAAQ,OACVgE,EAAI,eAAe,SAEnBhE,EAAQ,gBAERgE,EAAI,eAAe,iBAInBF,KAAQ,OAAOA,EAAK,WAAY,YAAY,EAAEA,EAAK,mBAAmBnD,KAAYZ,EAAE,WAAW+D,EAAK,mBAAmB/D,EAAE,UAAW;AACtI,kBAAIoE,IAAQ,CAAE;AACd,qBAAO,oBAAoBL,EAAK,OAAO,EAAE,QAAQ,SAASxD,GAAM;AAC9D,gBAAA6D,EAAM,KAAK9D,EAAcC,CAAI,CAAC,GAC9B0D,EAAI,iBAAiB1D,GAAMC,EAAeuD,EAAK,QAAQxD,CAAI,CAAC,CAAC;AAAA,cACvE,CAAS,GACDyD,EAAQ,QAAQ,QAAQ,SAAS/qB,GAAOsnB,GAAM;AAC5C,gBAAI6D,EAAM,QAAQ7D,CAAI,MAAM,MAC1B0D,EAAI,iBAAiB1D,GAAMtnB,CAAK;AAAA,cAE5C,CAAS;AAAA,YACT;AACQ,cAAA+qB,EAAQ,QAAQ,QAAQ,SAAS/qB,GAAOsnB,GAAM;AAC5C,gBAAA0D,EAAI,iBAAiB1D,GAAMtnB,CAAK;AAAA,cAC1C,CAAS;AAGH,YAAI+qB,EAAQ,WACVA,EAAQ,OAAO,iBAAiB,SAASE,CAAQ,GAEjDD,EAAI,qBAAqB,WAAW;AAElC,cAAIA,EAAI,eAAe,KACrBD,EAAQ,OAAO,oBAAoB,SAASE,CAAQ;AAAA,YAEvD,IAGHD,EAAI,KAAK,OAAOD,EAAQ,YAAc,MAAc,OAAOA,EAAQ,SAAS;AAAA,UAC7E,CAAA;AAAA,QACL;AAEE,eAAAF,EAAM,WAAW,IAEZ9D,EAAE,UACLA,EAAE,QAAQ8D,GACV9D,EAAE,UAAUY,GACZZ,EAAE,UAAU0C,GACZ1C,EAAE,WAAWwD,IAGfzD,EAAQ,UAAUa,GAClBb,EAAQ,UAAU2C,GAClB3C,EAAQ,WAAWyD,GACnBzD,EAAQ,QAAQ+D,GAET/D;AAAA,SAEN,CAAE,CAAA;AAAA,IACJ,GAAEH,CAAc,GAEjBA,EAAe,MAAM,WAAW,IAChC,OAAOA,EAAe,MAAM;AAE5B,QAAIyE,IAAM3E,EAAW,QAAQA,IAAaE;AAC1C,IAAAG,IAAUsE,EAAI,OACdtE,EAAkB,UAAAsE,EAAI,OACtBtE,EAAgB,QAAAsE,EAAI,OACpBtE,EAAA,UAAkBsE,EAAI,SACtBtE,EAAA,UAAkBsE,EAAI,SACtBtE,EAAA,WAAmBsE,EAAI,UACvBC,EAAiB,UAAAvE;AAAA;;;mCC3qBJwE,KAAwB,sCACxBC,KAA4B,MAC5BC,KAAoB,MAEpBzE,KAAiB;AAAA,EAC5Ble,KAAK;AAAA,EACL4iB,MAAM;AAIR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACmBO,MAAMC,KAAiBja,GAAoB,EAChDka,GAAS,CAAC/iB,GAAKC,OAAS;AAAA,EACtB+iB,SAAS,CAAC;AAAA,EACVC,SAAS,CAAC;AAAA,EACVC,WAAWA,CAAChtB,GAAIkI,MACd4B,EACG3D,CAAUA,MAAA;AACT,UAAM2mB,IAAU;AAAA,MAAE,GAAG3mB,EAAM2mB;AAAAA,IAAQ,GAE7BG,IAAeH,EAAQ9sB,CAAE,GAAGktB;AAMlC,QALID,MACFA,EAAaE,QAAQ,GACdL,OAAAA,EAAQ9sB,CAAE,EAAGktB,UAGlB,CAAChlB;AACH,oBAAO4kB,EAAQ9sB,CAAE,GACV;AAAA,QAAE8sB,SAAAA;AAAAA,MAAQ;AAGbM,UAAAA,IAAiBN,EAAQ9sB,CAAE,GAC3BqtB,IAAY;AAAA,MAChBC,YAAYC;AAAAA,MACZC,UAAUC;AAAAA,MACVC,YAAYC;AAAAA,MACZ,GAAGP;AAAAA,MACH,GAAGllB;AAAAA,IACL,GAEMglB,IAAUU,GAAgB;AAAA,MAC9B1lB,QAAQmlB;AAAAA,IAAAA,CACT;AAEDA,WAAAA,EAAUH,UAAUA,GAEpBJ,EAAQ9sB,CAAE,IAAIqtB,GAEP;AAAA,MAAEP,SAAAA;AAAAA,IAAQ;AAAA,EAAA,GAEnBnnB,QACA,WACF;AAAA,EACFkoB,cAAe7tB,CACb8J,MAAAA,EACG3D,CAAUA,MAAA;AACT,UAAM2mB,IAAU;AAAA,MAAE,GAAG3mB,EAAM2mB;AAAAA,IAAQ,GAE7BG,IAAeH,EAAQ9sB,CAAE,GAAGktB;AAClC,WAAID,MACFA,EAAaE,QAAQ,GACdL,OAAAA,EAAQ9sB,CAAE,EAAGktB,UAGtB,OAAOJ,EAAQ9sB,CAAE,GACV;AAAA,MAAE8sB,SAAAA;AAAAA,IAAQ;AAAA,EAAA,GAEnBnnB,QACA,cACF;AAAA,EACFmoB,YAAYA,CAAC9tB,GAAI+tB,MACfjkB,EACG3D,CAAUA,MAAA;AACT,QAAI4mB,IAAU,CAAC;AACf,UAAMiB,IAAiB7nB,EAAM4mB,QAAQ/sB,CAAE,KAAK,CAAC;AAEzC+tB,WAAAA,EAAW5f,WAAW,MACxB4e,IAAUgB,EAAWpkB,OAAO,CAACC,GAAKjJ,MAE5B,EAAE,YAAYA,MAAW,CAACA,EAAOiN,QAAQO,SACpC8f,GAAarkB,GAAKjJ,CAAM,IAE1ButB,GAAUtkB,GAAKjJ,CAAM,GAC3BqtB,CAAc,IAGZ;AAAA,MACLjB,SAAS;AAAA,QACP,GAAG5mB,EAAM4mB;AAAAA,QACT,CAAC/sB,CAAE,GAAG;AAAA,UAAE,GAAG+sB;AAAAA,QAAAA;AAAAA;AAAAA,MAAQ;AAAA,IAEvB;AAAA,EAAA,GAEFpnB,QACA,YACF;AAAA,EACFwoB,eAAeA,CAACnuB,GAAIouB,GAAQC,MAC1BvkB,EACG3D,CAAUA,MAAA;AACT,UAAM6nB,IAAiB7nB,EAAM4mB,QAAQ/sB,CAAE,KAAK,CAAC;AAC7C,QAAI,CAACguB;AACI7nB,aAAAA;AAGT,QAAI4mB,IAAU,CAAC;AACf,WAAIqB,MACFrB,IAAUkB,GAAaD,GAAgB;AAAA,MAAEI,QAAAA;AAAAA,MAAQC,OAAAA;AAAAA,IAAAA,CAAO,IAGnD;AAAA,MACLtB,SAAS;AAAA,QACP,GAAG5mB,EAAM4mB;AAAAA,QACT,CAAC/sB,CAAE,GAAG;AAAA,UAAE,GAAG+sB;AAAAA,QAAAA;AAAAA;AAAAA,MAAQ;AAAA,IAEvB;AAAA,EAAA,GAEFpnB,QACA,eACF;AAAA,EACF2oB,wBAAwBA,CAACC,GAAK;AAAA,IAAEC,SAAAA,IAAU;AAAA,IAAKC,QAAAA,IAAS;AAAA,EAAG,IAAI,OAAO;AACpEF,IAAAA,EAAItO,QAASjgB,CAAOA,MAAA;AACd,MAAA+J,EAAA,EAAEijB,UAAUhtB,GAAI;AAAA,QAClB8oB,SAAS;AAAA,UACP,iBAAiB,qBAAqB2F,CAAM;AAAA,QAAA;AAAA,MAC9C,CACD;AAAA,IAAA,CACF,GAEDpH,WAAW,MAAM;AACfkH,MAAAA,EAAItO,QAASjgB,CAAOA,MAAA;AAClB,cAAMkI,IAAS6B,IAAM+iB,QAAQ9sB,CAAE;AAC/B,QAAIkI,MACF,OAAOA,EAAO4gB,SACV/e,IAAEijB,UAAUhtB,GAAIkI,CAAM;AAAA,MAC5B,CACD;AAAA,OACAsmB,CAAO;AAAA,EAAA;AAEd,EAAE,CACJ;AAOO,SAAAE,GAAA1uB,GAAA;AAAAL,QAAAA,IAAAC,EAAA,CAAA;AAAAF,MAAAA;AAAAC,SAAAA,SAAAK,KACiBmG,IAAAA,CAAAA,MAAWA,EAAK2mB,QAAS9sB,CAAE,GAACL,OAAAK,GAAAL,OAAAD,KAAAA,IAAAC,EAAA,CAAA,GAA3CitB,GAAeltB,CAA4B;AAAC;AAQ9C,SAAAivB,GAAA3uB,GAAA;AAAAL,QAAAA,IAAAC,EAAA,CAAA;AAAAF,MAAAA;AAAAC,SAAAA,SAAAK,KACiBmG,IAAAA,CAAAA,MAAWA,EAAK4mB,QAAS/sB,CAAE,GAACL,OAAAK,GAAAL,OAAAD,KAAAA,IAAAC,EAAA,CAAA,GAA3CitB,GAAeltB,CAA4B;AAAC;AAQ9C,SAAAkvB,GAAA5uB,GAAA;AAAAL,QAAAA,IAAAC,EAAA,CAAA;AAAAF,MAAAA;AAAAC,EAAAA,SAAAK,KACyBmG,IAAAA,CAAAA,MAAWA,EAAK2mB,QAAS9sB,CAAE,GAACL,OAAAK,GAAAL,OAAAD,KAAAA,IAAAC,EAAA,CAAA;AAA1DuI,QAAAA,IAAe0kB,GAAeltB,CAA4B;AAACe,MAAAA;AAAAd,EAAAA,SAAAK,KAC5BwO,IAAAA,CAAAA,MAAWrI,EAAK4mB,QAAS/sB,CAAE,GAACL,OAAAK,GAAAL,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAA3DotB,QAAAA,IAAgBH,GAAensB,CAA4B;AAACC,MAAAA;AAAA,EAAAmuB,GAAA;AAAA,QAAA,CAGrD3mB,GAAM;AACTvC,MAAAA,IAAAA;AAAgBkpB,YAAAA;AAAAA,IAAAA;AAAA7tB,QAAAA;AAAArB,IAAAA,SAAAotB,KAIP/rB,IAAA+rB,KAAa,CAAA,GAAAptB,OAAAotB,GAAAptB,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAAAsB,QAAAA;AAAA,IAAAtB,EAAAuI,CAAAA,MAAAA,KAAAvI,SAAAqB,KAFjBC,IAAA;AAAA,MAAA,GACFiH;AAAAA,MAAM6kB,SACA/rB;AAAAA,IAAa,GACvBrB,OAAAuI,GAAAvI,OAAAqB,GAAArB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA,GAHMsB,IAAAA;AAAAA,EAAAA;AAJFP,SAAAA;AAQc;AAGhB,SAASouB,GACd/B,GACA;AAAA,EAAEqB,QAAAA;AAAAA,EAAQtvB,MAAAA;AAA2C,GACrD;AACA,SAAOiuB,IAAUqB,CAAM,IAAItvB,CAAI,GAAG8O,UAAU,CAAE;AAChD;AAEA,SAASmhB,GAAuB7mB,GAAgB;AACxC,QAAA,CAAA,EAAG8mB,CAAQ,IAAI9mB,EAAOpJ,KAAKosB,MAAM,KAAK,CAAC;AACtC,SAAA;AAAA,IACL+D,iBAAkB/mB,EAAO+mB,mBACvBD,KACA;AAAA,IACFE,mBAAmBhnB,EAAOgnB,qBAAqBF,KAAY;AAAA,EAC7D;AACF;AAEA,SAASpB,GAAgB;AAAA,EAAE1lB,QAAAA;AAA2B,GAAG;AACjD,QAAA;AAAA,IAAE+mB,iBAAAA;AAAAA,IAAiBC,mBAAAA;AAAAA,EAAAA,IAAsBH,GAAuB7mB,CAAM,GAEtEJ,IAAU;AAAA,IACdqnB,OAAOA,MAAM;AACX,YAAM9B,IAAYnlB;AAClB,aAAO,IAAIknB,GAAkB;AAAA,QAC3B,GAAG/B;AAAAA,QACHgC,aAAa;AAAA,QACbC,UAAUjC,EAAU3d;AAAAA,QACpBuf,iBAAAA;AAAAA,QACAC,mBAAAA;AAAAA,MAAAA,CACD;AAAA,IACH;AAAA,IACAK,OAAOA,MAAM;AACX,YAAMlC,IAAYnlB;AAClB,aAAO,IAAIsnB,GAAkB;AAAA,QAC3B,GAAGnC;AAAAA,QACHgC,aAAa;AAAA,QACbI,WAAWpC,EAAU3d;AAAAA,QACrBuf,iBAAAA;AAAAA,QACAC,mBAAAA;AAAAA,MAAAA,CACD;AAAA,IACH;AAAA,IACAQ,SAASA,MAAM;AACb,YAAMrC,IAAYnlB;AAClB,aAAO,IAAIynB,GAAoB;AAAA,QAC7B,GAAGtC;AAAAA,QACHgC,aAAa;AAAA,QACbI,WAAWpC,EAAU3d;AAAAA,QACrBkgB,YAAYvC,EAAUuC,cAAcC,GAAWC;AAAAA,QAC/Cb,iBAAAA;AAAAA,QACAC,mBAAAA;AAAAA,MAAAA,CACD;AAAA,IACH;AAAA,IACAa,QAAQA,MAAM;AACZ,YAAM1C,IAAYnlB;AAEd,aAACmlB,EAAU2C,iBAIR,IAAIC,GAAmB;AAAA,QAC5B,GAAG5C;AAAAA,QACHgC,aAAa;AAAA,QACbI,WAAWpC,EAAU3d;AAAAA,QACrBuf,iBAAiB;AAAA,QACjBC,mBAAmB;AAAA,QACnBc,gBAAgB3C,EAAU2C;AAAAA,MAAAA,CAC3B,IAVQ;AAAA,IAUR;AAAA,EAEL,GAEM3nB,IAAMH,EAAOpJ,KAAKosB,MAAM,GAAG,EAAE,CAAC,GAC9BgF,IAASpoB,EAAQO,CAAG;AAE1B,SAAO6nB,IAAS;AAClB;AC1QOC,SAAAA,GAAAC,GAAAC,GAAA;AAAA1wB,QAAAA,IAAAC,EAAA,CAAA,GAILmtB,IAAgB4B,GAAWyB,CAAQ;AAAC1wB,MAAAA;AAAA,EAAAmvB,GAAA;AAG7BwB,QAAAA,CAAAA,GAAgBliB,QAAA;AAAiB4e,MAAAA,IAAAA;AAAO8B,YAAAA;AAAAA,IAAAA;AAAApuB,QAAAA;AAAA,QAAAd,EAAA0wB,CAAAA,MAAAA,KAAA1wB,SAAAotB,GAAA;AAC7C,YAAAuD,IAAwBD,EAAgB1mB,OAAA/I,MAEnC;AAACF,UAAAA;AAAAf,MAAAA,SAAAotB,KACWrsB,IAAAqsB,KAAa,CAAA,GAAAptB,OAAAotB,GAAAptB,OAAAe,KAAAA,IAAAf,EAAA,CAAA,GAAvBoI,IAAAA,GAAUrH,GAAe4vB,CAAe,GAAC3wB,OAAA0wB,GAAA1wB,OAAAotB,GAAAptB,OAAAc;AAAAA,IAAAA;AAAAA,MAAAA,IAAAd,EAAA,CAAA;AAAzCc,IAAAA,IAAAA;AAAAA,EAAAA;AALFf,SAAAA;AAMwB;AAZ1B,SAAAkB,GAAAgJ,GAAAjJ,GAAA;AASMutB,SAAAA,GAAUtkB,GAAKjJ,CAAM;AAAC;ACXnB4vB,SAAAA,GAAelB,GAAqBe,GAAkB;AAC9DloB,QAAAA,IAASwmB,GAAU0B,CAAQ;AACjC,SAAOxsB,GAAQ,MAAM;AACnB,UAAM4sB,IAActoB,GAAQglB;AACxB,WAAA,CAACsD,KAAe,CAACnB,IACZ,QAGTmB,EAAYnuB,MAAMgtB,cAAcA,GACzBmB;AAAAA,EAAAA,GACN,CAACnB,GAAannB,CAAM,CAAC;AAC1B;ACdA,MAAMuoB,KAAmB,CAAC,iBAAiB,eAAe;AAEnD,SAASC,GACd5H,GACA;AACA,MAAI,CAACA,KAAW,OAAOA,KAAY;AAC1B,WAAA;AAGT,QAAM6H,IAAU1iB,OAAO2iB,YACrB3iB,OAAO0iB,QAAQ7H,CAAO,EAAEnoB,OAAO,CAAC,CAAC0H,CAAG,MAClCooB,GAAiBllB,SAASlD,EAAIwoB,YAAa,CAAA,CAC7C,CACF;AAEOC,SAAAA,KAAKC,UAAUJ,CAAO;AAC/B;ACXO,SAAAK,GAAAtxB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAoD;AAAA,IAAAyvB,aAAAA;AAAAA,IAAAe,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,IAAAZ,kBAAAA;AAAAA,EAAAA,IAAA3wB,GASzDwxB,IAAsBf,GAAiBC,GAAUC,CAAgB,GACjEG,IAAoBD,GAAelB,GAAae,CAAQ,GAMtD3vB,IAAA+vB,GAAWnuB,MAAA8uB,iBAEQzwB,IAAA8vB,GAAWnuB,MAAAymB;AAAe9nB,MAAAA;AAAArB,EAAAA,SAAAe,KAA7CM,IAAA0vB,GAAmBhwB,CAA0B,GAACf,OAAAe,GAAAf,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAAAsB,MAAAA;AAAAtB,EAAAA,SAAA0vB,KAAA1vB,EAAAuxB,CAAAA,MAAAA,KAAAvxB,EAAAywB,CAAAA,MAAAA,KAAAzwB,EAAA,CAAA,MAAAc,KAAAd,SAAAqB,KAAArB,EAAA,CAAA,MAAAsxB,KAN/BhwB,IAAA,CACfmvB,GACAf,GACA4B,GACAxwB,GACAywB,GACAlwB,CAA8C,GAC/CrB,OAAA0vB,GAAA1vB,OAAAuxB,GAAAvxB,OAAAywB,GAAAzwB,OAAAc,GAAAd,OAAAqB,GAAArB,OAAAsxB,GAAAtxB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AAPD,QAAAyxB,IAAiBnwB;AAOhBE,MAAAA;AAAAxB,SAAAA,EAAAuxB,CAAAA,MAAAA,KAAAvxB,UAAAyxB,KAAAzxB,EAAA,EAAA,MAAA6wB,KAEMrvB,IAAA;AAAA,IAAA+vB,eAAAA;AAAAA,IAAAV,aAAAA;AAAAA,IAAAY,UAAAA;AAAAA,EAAA,GAAwCzxB,OAAAuxB,GAAAvxB,QAAAyxB,GAAAzxB,QAAA6wB,GAAA7wB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA,GAAxCwB;AAAwC;AClB1C,SAAAkwB,GAAA3xB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAuB;AAAA,IAAAyvB,aAAAA;AAAAA,IAAAe,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,IAAAZ,kBAAAA;AAAAA,IAAAiB,eAAA7wB;AAAAA,EAAAA,IAAAf;AAMyBgB,MAAAA;AAAAf,EAAAA,SAAAc,KADtCA,IAAAA,MAAyCkF,cAAzClF,GAAyCd,OAAAc,GAAAd,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAAqB,MAAAA,GAAAswB;AAAA3xB,EAAAA,SAAAe,KAAzC;AAAA,IAAAgV,SAAA1U;AAAAA,IAAA,GAAAswB;AAAAA,EAAAA,IAAA5wB,GAAyCf,OAAAe,GAAAf,OAAAqB,GAAArB,OAAA2xB,MAAAtwB,IAAArB,EAAA,CAAA,GAAA2xB,IAAA3xB,EAAA,CAAA;AAAvC+V,QAAAA,IAAA1U,MAAc2E,cAAd3E;AAAcC,MAAAA;AAAA,EAAAtB,EAAA,CAAA,MAAA0vB,KAAA1vB,EAAA0wB,CAAAA,MAAAA,KAAA1wB,EAAAywB,CAAAA,MAAAA,KAAAzwB,SAAAsxB,KAEiChwB,IAAA;AAAA,IAAAouB,aAAAA;AAAAA,IAAAgB,kBAAAA;AAAAA,IAAAD,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,EAAA,GAK/DtxB,OAAA0vB,GAAA1vB,OAAA0wB,GAAA1wB,OAAAywB,GAAAzwB,OAAAsxB,GAAAtxB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AALD,QAAA;AAAA,IAAAuxB,eAAAA;AAAAA,IAAAE,UAAAA;AAAAA,IAAAZ,aAAAA;AAAAA,EAAAA,IAAiDQ,GAAe/vB,CAK/D;AAACE,MAAAA;AAAAxB,EAAAA,UAAAyxB,KAGUjwB,IAAA,CAAC,cAAY,GAAKiwB,CAAQ,GAACzxB,QAAAyxB,GAAAzxB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA0B,MAAAA;AAAA1B,EAAAA,EAAAuxB,EAAAA,MAAAA,KAAAvxB,UAAA6wB,KAAA7wB,EAAA,EAAA,MAAAsxB,KAC5B5vB,IAAAE,CAAAA,MAAA;AAAC,UAAA;AAAA,MAAAgwB,QAAAA;AAAAA,IAAAA,IAAAhwB;AAAU,WAClBivB,EAAWgB,cAAA;AAAA,MAAA,GACNP;AAAAA,MAAWlE,SACLmE;AAAAA,MAAaK,QAAAA;AAAAA,IAAAA,CAEvB;AAAA,EAAC,GAAA5xB,QAAAuxB,GAAAvxB,QAAA6wB,GAAA7wB,QAAAsxB,GAAAtxB,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AACK4B,QAAAA,IAAA,CAAA,CAAEivB,KAAe9a;AAAOlU,MAAAA;AAAA,SAAA7B,EAAA,EAAA,MAAAwB,KAAAxB,EAAA0B,EAAAA,MAAAA,KAAA1B,EAAA4B,EAAAA,MAAAA,KAAA5B,UAAA2xB,KARnB9vB,IAAA;AAAA,IAAA4vB,UACJjwB;AAAAA,IAA2BswB,SAC5BpwB;AAAAA,IAKLqU,SACKnU;AAAAA,IAAwB,GAC9B+vB;AAAAA,EAAa,GACjB3xB,QAAAwB,GAAAxB,QAAA0B,GAAA1B,QAAA4B,GAAA5B,QAAA2xB,GAAA3xB,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAVM+xB,GAASlwB,CAUf;AAAC;AAGG,SAAAmwB,GAAAjyB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAA+N,MAAAA,GAAAikB;AAAAjyB,EAAAA,SAAAD,KAAyB;AAAA,IAAAiO,UAAAA;AAAAA,IAAA,GAAAikB;AAAAA,EAAAA,IAAAlyB,GAK/BC,OAAAD,GAAAC,OAAAgO,GAAAhO,OAAAiyB,MAAAjkB,IAAAhO,EAAA,CAAA,GAAAiyB,IAAAjyB,EAAA,CAAA;AACCkyB,QAAAA,IAAoBR,GAAcO,CAAU;AAACnxB,MAAAA;AAAA,SAAAd,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkyB,KACtCpxB,IAAAkN,EAASkkB,CAAW,GAAClyB,OAAAgO,GAAAhO,OAAAkyB,GAAAlyB,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAArBc;AAAqB;AClCvB,SAAAqxB,GAAApyB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAqB;AAAA,IAAAyvB,aAAAA;AAAAA,IAAAe,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,IAAAZ,kBAAAA;AAAAA,IAAAiB,eAAA7wB;AAAAA,EAAAA,IAAAf;AAM2BgB,MAAAA;AAAAf,EAAAA,SAAAc,KADtCA,IAAAA,MAAyCkF,cAAzClF,GAAyCd,OAAAc,GAAAd,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAAqB,MAAAA,GAAAswB;AAAA3xB,EAAAA,SAAAe,KAAzC;AAAA,IAAAgV,SAAA1U;AAAAA,IAAA,GAAAswB;AAAAA,EAAAA,IAAA5wB,GAAyCf,OAAAe,GAAAf,OAAAqB,GAAArB,OAAA2xB,MAAAtwB,IAAArB,EAAA,CAAA,GAAA2xB,IAAA3xB,EAAA,CAAA;AAAvC+V,QAAAA,IAAA1U,MAAc2E,cAAd3E;AAAcC,MAAAA;AAAA,EAAAtB,EAAA,CAAA,MAAA0vB,KAAA1vB,EAAA0wB,CAAAA,MAAAA,KAAA1wB,EAAAywB,CAAAA,MAAAA,KAAAzwB,SAAAsxB,KAEiChwB,IAAA;AAAA,IAAAouB,aAAAA;AAAAA,IAAAgB,kBAAAA;AAAAA,IAAAD,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,EAAA,GAK/DtxB,OAAA0vB,GAAA1vB,OAAA0wB,GAAA1wB,OAAAywB,GAAAzwB,OAAAsxB,GAAAtxB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AALD,QAAA;AAAA,IAAAuxB,eAAAA;AAAAA,IAAAE,UAAAA;AAAAA,IAAAZ,aAAAA;AAAAA,EAAAA,IAAiDQ,GAAe/vB,CAK/D;AAACE,MAAAA;AAAAxB,EAAAA,UAAAyxB,KAGUjwB,IAAA,CAAC,YAAU,GAAKiwB,CAAQ,GAACzxB,QAAAyxB,GAAAzxB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA0B,MAAAA;AAAA1B,EAAAA,EAAAuxB,EAAAA,MAAAA,KAAAvxB,UAAA6wB,KAAA7wB,EAAA,EAAA,MAAAsxB,KAC1B5vB,IAAAE,CAAAA,MAAA;AAAC,UAAA;AAAA,MAAAgwB,QAAAA;AAAAA,IAAAA,IAAAhwB;AAAU,WAClBivB,EAAWuB,YAAA;AAAA,MAAA,GACNd;AAAAA,MAAWlE,SACLmE;AAAAA,MAAaK,QAAAA;AAAAA,IAAAA,CAEvB;AAAA,EAAC,GAAA5xB,QAAAuxB,GAAAvxB,QAAA6wB,GAAA7wB,QAAAsxB,GAAAtxB,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AACK4B,QAAAA,IAAA,CAAA,CAAEivB,KAAe9a;AAAOlU,MAAAA;AAAA,SAAA7B,EAAA,EAAA,MAAAwB,KAAAxB,EAAA0B,EAAAA,MAAAA,KAAA1B,EAAA4B,EAAAA,MAAAA,KAAA5B,UAAA2xB,KARnB9vB,IAAA;AAAA,IAAA4vB,UACJjwB;AAAAA,IAAyBswB,SAC1BpwB;AAAAA,IAKLqU,SACKnU;AAAAA,IAAwB,GAC9B+vB;AAAAA,EAAa,GACjB3xB,QAAAwB,GAAAxB,QAAA0B,GAAA1B,QAAA4B,GAAA5B,QAAA2xB,GAAA3xB,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAVM+xB,GAASlwB,CAUf;AAAC;AAGG,SAAAwwB,GAAAtyB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAA+N,MAAAA,GAAAikB;AAAAjyB,EAAAA,SAAAD,KAAuB;AAAA,IAAAiO,UAAAA;AAAAA,IAAA,GAAAikB;AAAAA,EAAAA,IAAAlyB,GAK7BC,OAAAD,GAAAC,OAAAgO,GAAAhO,OAAAiyB,MAAAjkB,IAAAhO,EAAA,CAAA,GAAAiyB,IAAAjyB,EAAA,CAAA;AACCkyB,QAAAA,IAAoBC,GAAYF,CAAU;AAACnxB,MAAAA;AAAA,SAAAd,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkyB,KACpCpxB,IAAAkN,EAASkkB,CAAW,GAAClyB,OAAAgO,GAAAhO,OAAAkyB,GAAAlyB,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAArBc;AAAqB;ACrCvB,SAAAwxB,GAAAvyB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAoB;AAAA,IAAAyvB,aAAAA;AAAAA,IAAAe,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,IAAAZ,kBAAAA;AAAAA,IAAAiB,eAAA7wB;AAAAA,EAAAA,IAAAf;AAM0BgB,MAAAA;AAAAf,EAAAA,SAAAc,KADpCA,IAAAA,MAAyCkF,cAAzClF,GAAyCd,OAAAc,GAAAd,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAAqB,MAAAA,GAAAswB;AAAA3xB,EAAAA,SAAAe,KAAzC;AAAA,IAAAgV,SAAA1U;AAAAA,IAAA,GAAAswB;AAAAA,EAAAA,IAAA5wB,GAAyCf,OAAAe,GAAAf,OAAAqB,GAAArB,OAAA2xB,MAAAtwB,IAAArB,EAAA,CAAA,GAAA2xB,IAAA3xB,EAAA,CAAA;AAAvC+V,QAAAA,IAAA1U,MAAc2E,cAAd3E;AAAcC,MAAAA;AAAA,EAAAtB,EAAA,CAAA,MAAA0vB,KAAA1vB,EAAA0wB,CAAAA,MAAAA,KAAA1wB,EAAAywB,CAAAA,MAAAA,KAAAzwB,SAAAsxB,KAEiChwB,IAAA;AAAA,IAAAouB,aAAAA;AAAAA,IAAAgB,kBAAAA;AAAAA,IAAAD,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,EAAA,GAK/DtxB,OAAA0vB,GAAA1vB,OAAA0wB,GAAA1wB,OAAAywB,GAAAzwB,OAAAsxB,GAAAtxB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AALD,QAAA;AAAA,IAAAuxB,eAAAA;AAAAA,IAAAE,UAAAA;AAAAA,IAAAZ,aAAAA;AAAAA,EAAAA,IAAiDQ,GAAe/vB,CAK/D;AAACE,MAAAA;AAAAxB,EAAAA,UAAAyxB,KAGUjwB,IAAA,CAAC,WAAS,GAAKiwB,CAAQ,GAACzxB,QAAAyxB,GAAAzxB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA0B,MAAAA;AAAA1B,EAAAA,EAAAuxB,EAAAA,MAAAA,KAAAvxB,UAAA6wB,KAAA7wB,EAAA,EAAA,MAAAsxB,KACzB5vB,IAAAE,CAAAA,MAAA;AAAC,UAAA;AAAA,MAAAgwB,QAAAA;AAAAA,IAAAA,IAAAhwB;AAAU,WAClBivB,EAAW0B,WAAA;AAAA,MAAA,GACNjB;AAAAA,MAAWlE,SACLmE;AAAAA,MAAaK,QAAAA;AAAAA,IAAAA,CAEvB;AAAA,EAAC,GAAA5xB,QAAAuxB,GAAAvxB,QAAA6wB,GAAA7wB,QAAAsxB,GAAAtxB,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AACK4B,QAAAA,IAAA,CAAA,CAAEivB,KAAe9a;AAAOlU,MAAAA;AAAA,SAAA7B,EAAA,EAAA,MAAAwB,KAAAxB,EAAA0B,EAAAA,MAAAA,KAAA1B,EAAA4B,EAAAA,MAAAA,KAAA5B,UAAA2xB,KARnB9vB,IAAA;AAAA,IAAA4vB,UACJjwB;AAAAA,IAAwBswB,SACzBpwB;AAAAA,IAKLqU,SACKnU;AAAAA,IAAwB,GAC9B+vB;AAAAA,EAAa,GACjB3xB,QAAAwB,GAAAxB,QAAA0B,GAAA1B,QAAA4B,GAAA5B,QAAA2xB,GAAA3xB,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAVM+xB,GAASlwB,CAUf;AAAC;AAGG,SAAA2wB,GAAAzyB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAA+N,MAAAA,GAAAikB;AAAAjyB,EAAAA,SAAAD,KAAsB;AAAA,IAAAiO,UAAAA;AAAAA,IAAA,GAAAikB;AAAAA,EAAAA,IAAAlyB,GAK5BC,OAAAD,GAAAC,OAAAgO,GAAAhO,OAAAiyB,MAAAjkB,IAAAhO,EAAA,CAAA,GAAAiyB,IAAAjyB,EAAA,CAAA;AACCkyB,QAAAA,IAAoBI,GAAWL,CAAU;AAACnxB,MAAAA;AAAA,SAAAd,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkyB,KACnCpxB,IAAAkN,EAASkkB,CAAW,GAAClyB,OAAAgO,GAAAhO,OAAAkyB,GAAAlyB,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAArBc;AAAqB;AC/BvB,SAAA2xB,GAAA1yB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAAyvB,aAAAA;AAAAA,IAAAe,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,IAAAZ,kBAAAA;AAAAA,IAAAiB,eAAA7wB;AAAAA,EAAAA,IAAAf;AAM4BgB,MAAAA;AAAAf,EAAAA,SAAAc,KADxCA,IAAAA,MAAyCkF,cAAzClF,GAAyCd,OAAAc,GAAAd,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAAqB,MAAAA,GAAAswB;AAAA3xB,EAAAA,SAAAe,KAAzC;AAAA,IAAAgV,SAAA1U;AAAAA,IAAA,GAAAswB;AAAAA,EAAAA,IAAA5wB,GAAyCf,OAAAe,GAAAf,OAAAqB,GAAArB,OAAA2xB,MAAAtwB,IAAArB,EAAA,CAAA,GAAA2xB,IAAA3xB,EAAA,CAAA;AAAvC+V,QAAAA,IAAA1U,MAAc2E,cAAd3E;AAAcC,MAAAA;AAAA,EAAAtB,EAAA,CAAA,MAAA0vB,KAAA1vB,EAAA0wB,CAAAA,MAAAA,KAAA1wB,EAAAywB,CAAAA,MAAAA,KAAAzwB,SAAAsxB,KAEiChwB,IAAA;AAAA,IAAAouB,aAAAA;AAAAA,IAAAgB,kBAAAA;AAAAA,IAAAD,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,EAAA,GAK/DtxB,OAAA0vB,GAAA1vB,OAAA0wB,GAAA1wB,OAAAywB,GAAAzwB,OAAAsxB,GAAAtxB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AALD,QAAA;AAAA,IAAAuxB,eAAAA;AAAAA,IAAAE,UAAAA;AAAAA,IAAAZ,aAAAA;AAAAA,EAAAA,IAAiDQ,GAAe/vB,CAK/D;AAACE,MAAAA;AAAAxB,EAAAA,UAAAyxB,KAGUjwB,IAAA,CAAC,aAAW,GAAKiwB,CAAQ,GAACzxB,QAAAyxB,GAAAzxB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA0B,MAAAA;AAAA1B,EAAAA,EAAAuxB,EAAAA,MAAAA,KAAAvxB,UAAA6wB,KAAA7wB,EAAA,EAAA,MAAAsxB,KAC3B5vB,IAAAE,CAAAA,MAAA;AAAC,UAAA;AAAA,MAAAgwB,QAAAA;AAAAA,IAAAA,IAAAhwB;AAAU,WAClBivB,EAAW6B,aAAA;AAAA,MAAA,GACNpB;AAAAA,MAAWlE,SACLmE;AAAAA,MAAaK,QAAAA;AAAAA,IAAAA,CAEvB;AAAA,EAAC,GAAA5xB,QAAAuxB,GAAAvxB,QAAA6wB,GAAA7wB,QAAAsxB,GAAAtxB,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AACK4B,QAAAA,IAAA,CAAA,CAAEivB,KAAe9a;AAAOlU,MAAAA;AAAA,SAAA7B,EAAA,EAAA,MAAAwB,KAAAxB,EAAA0B,EAAAA,MAAAA,KAAA1B,EAAA4B,EAAAA,MAAAA,KAAA5B,UAAA2xB,KARnB9vB,IAAA;AAAA,IAAA4vB,UACJjwB;AAAAA,IAA0BswB,SAC3BpwB;AAAAA,IAKLqU,SACKnU;AAAAA,IAAwB,GAC9B+vB;AAAAA,EAAa,GACjB3xB,QAAAwB,GAAAxB,QAAA0B,GAAA1B,QAAA4B,GAAA5B,QAAA2xB,GAAA3xB,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAVM+xB,GAASlwB,CAUf;AAAC;AAGG,SAAA8wB,GAAA5yB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAA+N,MAAAA,GAAAikB;AAAAjyB,EAAAA,SAAAD,KAAwB;AAAA,IAAAiO,UAAAA;AAAAA,IAAA,GAAAikB;AAAAA,EAAAA,IAAAlyB,GAK9BC,OAAAD,GAAAC,OAAAgO,GAAAhO,OAAAiyB,MAAAjkB,IAAAhO,EAAA,CAAA,GAAAiyB,IAAAjyB,EAAA,CAAA;AACCkyB,QAAAA,IAAoBO,GAAaR,CAAU;AAACnxB,MAAAA;AAAA,SAAAd,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkyB,KACrCpxB,IAAAkN,EAASkkB,CAAW,GAAClyB,OAAAgO,GAAAhO,OAAAkyB,GAAAlyB,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAArBc;AAAqB;ACrCvB,SAAA8xB,GAAA7yB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAkB;AAAA,IAAAyvB,aAAAA;AAAAA,IAAAe,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,IAAAZ,kBAAAA;AAAAA,IAAAiB,eAAA7wB;AAAAA,EAAAA,IAAAf;AAMwBgB,MAAAA;AAAAf,EAAAA,SAAAc,KADhCA,IAAAA,MAAyCkF,cAAzClF,GAAyCd,OAAAc,GAAAd,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAAqB,MAAAA,GAAAswB;AAAA3xB,EAAAA,SAAAe,KAAzC;AAAA,IAAAgV,SAAA1U;AAAAA,IAAA,GAAAswB;AAAAA,EAAAA,IAAA5wB,GAAyCf,OAAAe,GAAAf,OAAAqB,GAAArB,OAAA2xB,MAAAtwB,IAAArB,EAAA,CAAA,GAAA2xB,IAAA3xB,EAAA,CAAA;AAAvC+V,QAAAA,IAAA1U,MAAc2E,cAAd3E;AAAcC,MAAAA;AAAA,EAAAtB,EAAA,CAAA,MAAA0vB,KAAA1vB,EAAA0wB,CAAAA,MAAAA,KAAA1wB,EAAAywB,CAAAA,MAAAA,KAAAzwB,SAAAsxB,KAEiChwB,IAAA;AAAA,IAAAouB,aAAAA;AAAAA,IAAAgB,kBAAAA;AAAAA,IAAAD,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,EAAA,GAK/DtxB,OAAA0vB,GAAA1vB,OAAA0wB,GAAA1wB,OAAAywB,GAAAzwB,OAAAsxB,GAAAtxB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AALD,QAAA;AAAA,IAAAuxB,eAAAA;AAAAA,IAAAE,UAAAA;AAAAA,IAAAZ,aAAAA;AAAAA,EAAAA,IAAiDQ,GAAe/vB,CAK/D;AAACE,MAAAA;AAAAxB,EAAAA,UAAAyxB,KAGUjwB,IAAA,CAAC,SAAO,GAAKiwB,CAAQ,GAACzxB,QAAAyxB,GAAAzxB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA0B,MAAAA;AAAA1B,EAAAA,EAAAuxB,EAAAA,MAAAA,KAAAvxB,UAAA6wB,KAAA7wB,EAAA,EAAA,MAAAsxB,KACvB5vB,IAAAE,CAAAA,MAAA;AAAC,UAAA;AAAA,MAAAgwB,QAAAA;AAAAA,IAAAA,IAAAhwB;AAAU,WAClBivB,EAAWgC,SAAA;AAAA,MAAA,GACNvB;AAAAA,MAAWlE,SACLmE;AAAAA,MAAaK,QAAAA;AAAAA,IAAAA,CAEvB;AAAA,EAAC,GAAA5xB,QAAAuxB,GAAAvxB,QAAA6wB,GAAA7wB,QAAAsxB,GAAAtxB,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AACK4B,QAAAA,IAAA,CAAA,CAAEivB,KAAe9a;AAAOlU,MAAAA;AAAA,SAAA7B,EAAA,EAAA,MAAAwB,KAAAxB,EAAA0B,EAAAA,MAAAA,KAAA1B,EAAA4B,EAAAA,MAAAA,KAAA5B,UAAA2xB,KARnB9vB,IAAA;AAAA,IAAA4vB,UACJjwB;AAAAA,IAAsBswB,SACvBpwB;AAAAA,IAKLqU,SACKnU;AAAAA,IAAwB,GAC9B+vB;AAAAA,EAAa,GACjB3xB,QAAAwB,GAAAxB,QAAA0B,GAAA1B,QAAA4B,GAAA5B,QAAA2xB,GAAA3xB,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAVM+xB,GAASlwB,CAUf;AAAC;AAGG,SAAAixB,GAAA/yB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAA+N,MAAAA,GAAAikB;AAAAjyB,EAAAA,SAAAD,KAAoB;AAAA,IAAAiO,UAAAA;AAAAA,IAAA,GAAAikB;AAAAA,EAAAA,IAAAlyB,GAK1BC,OAAAD,GAAAC,OAAAgO,GAAAhO,OAAAiyB,MAAAjkB,IAAAhO,EAAA,CAAA,GAAAiyB,IAAAjyB,EAAA,CAAA;AACCkyB,QAAAA,IAAoBU,GAASX,CAAU;AAACnxB,MAAAA;AAAA,SAAAd,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkyB,KACjCpxB,IAAAkN,EAASkkB,CAAW,GAAClyB,OAAAgO,GAAAhO,OAAAkyB,GAAAlyB,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAArBc;AAAqB;AClCvB,SAAAiyB,GAAAhzB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAoB;AAAA,IAAAyvB,aAAAA;AAAAA,IAAAe,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,IAAAZ,kBAAAA;AAAAA,IAAAiB,eAAA7wB;AAAAA,EAAAA,IAAAf;AAM0BgB,MAAAA;AAAAf,EAAAA,SAAAc,KADpCA,IAAAA,MAAyCkF,cAAzClF,GAAyCd,OAAAc,GAAAd,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAAqB,MAAAA,GAAAswB;AAAA3xB,EAAAA,SAAAe,KAAzC;AAAA,IAAAgV,SAAA1U;AAAAA,IAAA,GAAAswB;AAAAA,EAAAA,IAAA5wB,GAAyCf,OAAAe,GAAAf,OAAAqB,GAAArB,OAAA2xB,MAAAtwB,IAAArB,EAAA,CAAA,GAAA2xB,IAAA3xB,EAAA,CAAA;AAAvC+V,QAAAA,IAAA1U,MAAc2E,cAAd3E;AAAcC,MAAAA;AAAA,EAAAtB,EAAA,CAAA,MAAA0vB,KAAA1vB,EAAA0wB,CAAAA,MAAAA,KAAA1wB,EAAAywB,CAAAA,MAAAA,KAAAzwB,SAAAsxB,KAEiChwB,IAAA;AAAA,IAAAouB,aAAAA;AAAAA,IAAAgB,kBAAAA;AAAAA,IAAAD,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,EAAA,GAK/DtxB,OAAA0vB,GAAA1vB,OAAA0wB,GAAA1wB,OAAAywB,GAAAzwB,OAAAsxB,GAAAtxB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AALD,QAAA;AAAA,IAAAuxB,eAAAA;AAAAA,IAAAE,UAAAA;AAAAA,IAAAZ,aAAAA;AAAAA,EAAAA,IAAiDQ,GAAe/vB,CAK/D;AAACE,MAAAA;AAAAxB,EAAAA,UAAAyxB,KAGUjwB,IAAA,CAAC,WAAS,GAAKiwB,CAAQ,GAACzxB,QAAAyxB,GAAAzxB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA0B,MAAAA;AAAA1B,EAAAA,EAAAuxB,EAAAA,MAAAA,KAAAvxB,UAAA6wB,KAAA7wB,EAAA,EAAA,MAAAsxB,KACzB5vB,IAAAE,CAAAA,MAAA;AAAC,UAAA;AAAA,MAAAgwB,QAAAA;AAAAA,IAAAA,IAAAhwB;AAAU,WAClBivB,EAAWmC,WAAA;AAAA,MAAA,GACN1B;AAAAA,MAAWlE,SACLmE;AAAAA,MAAaK,QAAAA;AAAAA,IAAAA,CAEvB;AAAA,EAAC,GAAA5xB,QAAAuxB,GAAAvxB,QAAA6wB,GAAA7wB,QAAAsxB,GAAAtxB,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AACK4B,QAAAA,IAAA,CAAA,CAAEivB,KAAe9a;AAAOlU,MAAAA;AAAA,SAAA7B,EAAA,EAAA,MAAAwB,KAAAxB,EAAA0B,EAAAA,MAAAA,KAAA1B,EAAA4B,EAAAA,MAAAA,KAAA5B,UAAA2xB,KARnB9vB,IAAA;AAAA,IAAA4vB,UACJjwB;AAAAA,IAAwBswB,SACzBpwB;AAAAA,IAKLqU,SACKnU;AAAAA,IAAwB,GAC9B+vB;AAAAA,EAAa,GACjB3xB,QAAAwB,GAAAxB,QAAA0B,GAAA1B,QAAA4B,GAAA5B,QAAA2xB,GAAA3xB,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAVM+xB,GAASlwB,CAUf;AAAC;AAGG,SAAAoxB,GAAAlzB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAA+N,MAAAA,GAAAikB;AAAAjyB,EAAAA,SAAAD,KAAsB;AAAA,IAAAiO,UAAAA;AAAAA,IAAA,GAAAikB;AAAAA,EAAAA,IAAAlyB,GAK5BC,OAAAD,GAAAC,OAAAgO,GAAAhO,OAAAiyB,MAAAjkB,IAAAhO,EAAA,CAAA,GAAAiyB,IAAAjyB,EAAA,CAAA;AACCkyB,QAAAA,IAAoBa,GAAWd,CAAU;AAACnxB,MAAAA;AAAA,SAAAd,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkyB,KACnCpxB,IAAAkN,EAASkkB,CAAW,GAAClyB,OAAAgO,GAAAhO,OAAAkyB,GAAAlyB,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAArBc;AAAqB;AClCvB,SAAAoyB,GAAAnzB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAkB;AAAA,IAAAyvB,aAAAA;AAAAA,IAAAe,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,IAAAZ,kBAAAA;AAAAA,IAAAiB,eAAA7wB;AAAAA,EAAAA,IAAAf;AAMwBgB,MAAAA;AAAAf,EAAAA,SAAAc,KADhCA,IAAAA,MAAyCkF,cAAzClF,GAAyCd,OAAAc,GAAAd,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAAqB,MAAAA,GAAAswB;AAAA3xB,EAAAA,SAAAe,KAAzC;AAAA,IAAAgV,SAAA1U;AAAAA,IAAA,GAAAswB;AAAAA,EAAAA,IAAA5wB,GAAyCf,OAAAe,GAAAf,OAAAqB,GAAArB,OAAA2xB,MAAAtwB,IAAArB,EAAA,CAAA,GAAA2xB,IAAA3xB,EAAA,CAAA;AAAvC+V,QAAAA,IAAA1U,MAAc2E,cAAd3E;AAAcC,MAAAA;AAAA,EAAAtB,EAAA,CAAA,MAAA0vB,KAAA1vB,EAAA0wB,CAAAA,MAAAA,KAAA1wB,EAAAywB,CAAAA,MAAAA,KAAAzwB,SAAAsxB,KAEiChwB,IAAA;AAAA,IAAAouB,aAAAA;AAAAA,IAAAgB,kBAAAA;AAAAA,IAAAD,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,EAAA,GAK/DtxB,OAAA0vB,GAAA1vB,OAAA0wB,GAAA1wB,OAAAywB,GAAAzwB,OAAAsxB,GAAAtxB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AALD,QAAA;AAAA,IAAAuxB,eAAAA;AAAAA,IAAAE,UAAAA;AAAAA,IAAAZ,aAAAA;AAAAA,EAAAA,IAAiDQ,GAAe/vB,CAK/D;AAACE,MAAAA;AAAAxB,EAAAA,UAAAyxB,KAGUjwB,IAAA,CAAC,SAAO,GAAKiwB,CAAQ,GAACzxB,QAAAyxB,GAAAzxB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA0B,MAAAA;AAAA1B,EAAAA,EAAAuxB,EAAAA,MAAAA,KAAAvxB,UAAA6wB,KAAA7wB,EAAA,EAAA,MAAAsxB,KACvB5vB,IAAAE,CAAAA,MAAA;AAAC,UAAA;AAAA,MAAAgwB,QAAAA;AAAAA,IAAAA,IAAAhwB;AAAU,WAClBivB,EAAWsC,SAAA;AAAA,MAAA,GACN7B;AAAAA,MAAWlE,SACLmE;AAAAA,MAAaK,QAAAA;AAAAA,IAAAA,CAEvB;AAAA,EAAC,GAAA5xB,QAAAuxB,GAAAvxB,QAAA6wB,GAAA7wB,QAAAsxB,GAAAtxB,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AACK4B,QAAAA,IAAA,CAAA,CAAEivB,KAAe9a;AAAOlU,MAAAA;AAAA,SAAA7B,EAAA,EAAA,MAAAwB,KAAAxB,EAAA0B,EAAAA,MAAAA,KAAA1B,EAAA4B,EAAAA,MAAAA,KAAA5B,UAAA2xB,KARnB9vB,IAAA;AAAA,IAAA4vB,UACJjwB;AAAAA,IAAsBswB,SACvBpwB;AAAAA,IAKLqU,SACKnU;AAAAA,IAAwB,GAC9B+vB;AAAAA,EAAa,GACjB3xB,QAAAwB,GAAAxB,QAAA0B,GAAA1B,QAAA4B,GAAA5B,QAAA2xB,GAAA3xB,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAVM+xB,GAASlwB,CAUf;AAAC;AAGG,SAAAuxB,GAAArzB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAA+N,MAAAA,GAAAikB;AAAAjyB,EAAAA,SAAAD,KAAoB;AAAA,IAAAiO,UAAAA;AAAAA,IAAA,GAAAikB;AAAAA,EAAAA,IAAAlyB,GAK1BC,OAAAD,GAAAC,OAAAgO,GAAAhO,OAAAiyB,MAAAjkB,IAAAhO,EAAA,CAAA,GAAAiyB,IAAAjyB,EAAA,CAAA;AACCkyB,QAAAA,IAAoBgB,GAASjB,CAAU;AAACnxB,MAAAA;AAAA,SAAAd,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkyB,KACjCpxB,IAAAkN,EAASkkB,CAAW,GAAClyB,OAAAgO,GAAAhO,OAAAkyB,GAAAlyB,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAArBc;AAAqB;AC/BvB,SAAAuyB,GAAAtzB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAuB;AAAA,IAAAyvB,aAAAA;AAAAA,IAAAe,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,IAAAZ,kBAAAA;AAAAA,IAAAiB,eAAA7wB;AAAAA,EAAAA,IAAAf;AAM6BgB,MAAAA;AAAAf,EAAAA,SAAAc,KAD1CA,IAAAA,MAAyCkF,cAAzClF,GAAyCd,OAAAc,GAAAd,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAAqB,MAAAA,GAAAswB;AAAA3xB,EAAAA,SAAAe,KAAzC;AAAA,IAAAgV,SAAA1U;AAAAA,IAAA,GAAAswB;AAAAA,EAAAA,IAAA5wB,GAAyCf,OAAAe,GAAAf,OAAAqB,GAAArB,OAAA2xB,MAAAtwB,IAAArB,EAAA,CAAA,GAAA2xB,IAAA3xB,EAAA,CAAA;AAAvC+V,QAAAA,IAAA1U,MAAc2E,cAAd3E;AAAcC,MAAAA;AAAA,EAAAtB,EAAA,CAAA,MAAA0vB,KAAA1vB,EAAA0wB,CAAAA,MAAAA,KAAA1wB,EAAAywB,CAAAA,MAAAA,KAAAzwB,SAAAsxB,KAEiChwB,IAAA;AAAA,IAAAouB,aAAAA;AAAAA,IAAAgB,kBAAAA;AAAAA,IAAAD,UAAAA;AAAAA,IAAAa,aAAAA;AAAAA,EAAA,GAK/DtxB,OAAA0vB,GAAA1vB,OAAA0wB,GAAA1wB,OAAAywB,GAAAzwB,OAAAsxB,GAAAtxB,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AALD,QAAA;AAAA,IAAAuxB,eAAAA;AAAAA,IAAAE,UAAAA;AAAAA,IAAAZ,aAAAA;AAAAA,EAAAA,IAAiDQ,GAAe/vB,CAK/D;AAACE,MAAAA;AAAAxB,EAAAA,UAAAyxB,KAGUjwB,IAAA,CAAC,cAAY,GAAKiwB,CAAQ,GAACzxB,QAAAyxB,GAAAzxB,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA0B,MAAAA;AAAA1B,EAAAA,EAAAuxB,EAAAA,MAAAA,KAAAvxB,UAAA6wB,KAAA7wB,EAAA,EAAA,MAAAsxB,KAC5B5vB,IAAAE,CAAAA,MAAA;AAAC,UAAA;AAAA,MAAAgwB,QAAAA;AAAAA,IAAAA,IAAAhwB;AAAU,WAClBivB,EAAWyC,cAAA;AAAA,MAAA,GACNhC;AAAAA,MAAWlE,SACLmE;AAAAA,MAAaK,QAAAA;AAAAA,IAAAA,CAEvB;AAAA,EAAC,GAAA5xB,QAAAuxB,GAAAvxB,QAAA6wB,GAAA7wB,QAAAsxB,GAAAtxB,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AACK4B,QAAAA,IAAA,CAAA,CAAEivB,KAAe9a;AAAOlU,MAAAA;AAAA,SAAA7B,EAAA,EAAA,MAAAwB,KAAAxB,EAAA0B,EAAAA,MAAAA,KAAA1B,EAAA4B,EAAAA,MAAAA,KAAA5B,UAAA2xB,KARnB9vB,IAAA;AAAA,IAAA4vB,UACJjwB;AAAAA,IAA2BswB,SAC5BpwB;AAAAA,IAKLqU,SACKnU;AAAAA,IAAwB,GAC9B+vB;AAAAA,EAAa,GACjB3xB,QAAAwB,GAAAxB,QAAA0B,GAAA1B,QAAA4B,GAAA5B,QAAA2xB,GAAA3xB,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA,GAVM+xB,GAASlwB,CAUf;AAAC;AAGG,SAAA0xB,GAAAxzB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAA+N,MAAAA,GAAAikB;AAAAjyB,EAAAA,SAAAD,KAAyB;AAAA,IAAAiO,UAAAA;AAAAA,IAAA,GAAAikB;AAAAA,EAAAA,IAAAlyB,GAO/BC,OAAAD,GAAAC,OAAAgO,GAAAhO,OAAAiyB,MAAAjkB,IAAAhO,EAAA,CAAA,GAAAiyB,IAAAjyB,EAAA,CAAA;AACCkyB,QAAAA,IAAoBmB,GAAcpB,CAAU;AAACnxB,MAAAA;AAAA,SAAAd,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAAkyB,KACtCpxB,IAAAkN,EAASkkB,CAAW,GAAClyB,OAAAgO,GAAAhO,OAAAkyB,GAAAlyB,OAAAc,KAAAA,IAAAd,EAAA,CAAA,GAArBc;AAAqB;AC5CvB,MAAM0yB,KAAW;ACcjB,SAAAC,GAAA1zB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAA+N,UAAAA;AAAAA,IAAA3D,MAAAA;AAAAA,IAAAqpB,YAAA5yB;AAAAA,IAAA6yB,cAAA5yB;AAAAA,EAAAA,IAAAhB;AAKFsB,MAAAA;AAAArB,EAAAA,SAAAc,KAFzBA,IAAAA,MAAekF,cAAflF,GAAed,OAAAc,GAAAd,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAAf,QAAA0zB,IAAAryB;AAAeC,MAAAA;AAAAtB,EAAAA,SAAAe,KACfA,IAAAA,MAAiBiF,cAAjBjF,GAAiBf,OAAAe,GAAAf,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AAAjB,QAAA2zB,IAAAryB;AAAiBE,MAAAA;AAAA,EAAAxB,EAAAgO,CAAAA,MAAAA,KAAAhO,SAAA2zB,KAKXnyB,IAAC,gBAAAM,EAAAkhB,IAAA,EAAiC2Q,QAAAA,GACxB,UAAA3lB,GACV,GAA2BhO,OAAAgO,GAAAhO,OAAA2zB,GAAA3zB,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AAAA0B,MAAAA;AAAA,EAAA1B,EAAA0zB,CAAAA,MAAAA,KAAA1zB,SAAAwB,KAH7BE,IAAC,gBAAAI,EAAA8U,IAAA,EAA2B8c,QAAAA,GAC1BlyB,UAGFA,GAAA,GAAqBxB,OAAA0zB,GAAA1zB,OAAAwB,GAAAxB,OAAA0B,KAAAA,IAAA1B,EAAA,CAAA;AAAA4B,MAAAA;AAAA,SAAA5B,EAAAqK,EAAAA,MAAAA,KAAArK,UAAA0B,KALvBE,IAAC,gBAAAE,EAAAI,IAAA,EAAoBmI,QAAAA,GACnB3I,UAKFA,GAAA,GAAc1B,QAAAqK,GAAArK,QAAA0B,GAAA1B,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA,GANd4B;AAMc;ACtBFgyB,SAAAA,GACdC,GACArM,GACA;AACA,QAAMjnB,IAASwS,GAAevM,CAAUA,MAAAA,EAAMjG,MAAM,GAC9C0S,IAAWF,GAAevM,CAAUA,MAAAA,EAAMyM,QAAQ,GAElD6gB,IAAa7vB,GAAQ,MAClB2iB,GACLiN,EAAS3yB,IAAKb,CAAOE,MAAAA,EAAOF,CAAE,CAAC,EAAEW,OAAO,CAAC2B,MAAkB,CAAC,CAACA,GAAG4Q,MAAM,CACxE,EAAEwgB,WAAW,GACZ,CAACxzB,GAAQszB,CAAQ,CAAC,GAEftgB,IAAStP,GAAQ,MACd6vB,EAAW5yB,IAAIsmB,CAAQ,GAC7B,CAACA,GAAUsM,CAAU,CAAC,GAEnBE,IAAqB1vB,EACzB,CAAC;AAAA,IACCjE,IAAAA;AAAAA,IACA4R,SAAAA;AAAAA,IACA,GAAGsB;AAAAA,EAAAA,MAIwB;AAC3BN,IAAAA,EAAS5S,GAAI;AAAA,MACXqC,OAAO;AAAA,QAAEuP,SAAAA;AAAAA,MAAQ;AAAA,MACjBsB,QAAAA;AAAAA,IAAAA,CACD;AAAA,EAAA,GAEH,CAACN,CAAQ,CACX,GAEMghB,IAAsB3vB,EAC1B,CAAC;AAAA,IAAEjE,IAAAA;AAAAA,IAAI6zB,WAAAA;AAAAA,EAAAA,MAAoD;AACzDjhB,IAAAA,EAAS5S,GAAI;AAAA,MACXkT,QAAQ;AAAA,QACN2gB,WAAAA;AAAAA,MAAAA;AAAAA,IACF,CACD;AAAA,EAAA,GAEH,CAACjhB,CAAQ,CACX,GAEMkhB,IAAkB7vB,EACtB,CAAC;AAAA,IAAEjE,IAAAA;AAAAA,IAAI+zB,SAAAA;AAAAA,EAAAA,MAA+C;AACpDnhB,IAAAA,EAAS5S,GAAI;AAAA,MACXqC,OAAO;AAAA,QAAE0xB,SAAAA;AAAAA,MAAAA;AAAAA,IAAQ,CAClB;AAAA,EAAA,GAEH,CAACnhB,CAAQ,CACX;AAEO,SAAA;AAAA,IACLM,QAAAA;AAAAA,IACAygB,oBAAAA;AAAAA,IACAG,iBAAAA;AAAAA,IACAF,qBAAAA;AAAAA,EACF;AACF;AC1DO,SAASI,GAAiB;AAAA,EAC/B5mB,OAAAA;AAGF,GAAG;AACD,QAAM,CAAC6mB,GAAYC,CAAa,IAAIpuB,GAA6BH,MAAS,GACpE,CAACwuB,GAAWC,CAAY,IAAItuB,GAAS,EAAK,GAC1C,CAAC0lB,GAAO6I,CAAQ,IAAIvuB,GAA4BH,MAAS,GAEzDrC,IAAUwK,EAAa3H,CAAAA,MAAUA,EAAM6D,KAAKoD,CAAK,GAAG9J,OAAO,GAC3DgxB,IAAiBxmB,EAAa3H,CAAUA,MAAAA,EAAMmE,eAAe,GAC7DiqB,IAAoBzmB,EAAa3H,CAAUA,MAAAA,EAAMkE,kBAAkB,GAEnEuB,IAAkBkC,EAAa3H,CAAAA,MAAUA,EAAMyF,gBAAgBwB,CAAK,CAAC,GAGrEzG,IAFWmH,EAAa3H,CAAAA,MAAUA,EAAM6D,KAAKoD,CAAK,GAAGxH,QAAQ,KAEnCgG,GAE1B;AAAA,IAAE9M,MAAAA;AAAAA,EAAAA,IAASF,GAAa0E,CAAO,GAC/ByC,IAAUjH,MAASL,GAAUE,YAE7B61B,IAAkBvwB,EAAY,YAAY;AACxCwwB,UAAAA,IAAeH,EAAelnB,CAAK,GACnCwR,IAAkB2V,EAAkBnnB,CAAK;AAE3C,QAAA;AACIsnB,YAAAA,IAASzyB,SAAS0yB,cAAc,QAAQ;AACvCxvB,MAAAA,EAAAA,QAAQsvB,EAAatvB,SAAS,GAC9BC,EAAAA,SAASqvB,EAAarvB,UAAU;AAEjCsO,YAAAA,IAAUghB,EAAOE,WAAW,IAAI;AAEtC,UAAI7uB,GAAS;AACX,cAAM8uB,IAAmBjW;AAEpBiW,YAAAA,EAAiBC,iBAAiB,MAAiB;AAChD,gBAAA,IAAI1mB,MAAM,+CAA+C;AAGjE,cAAMsB,IAAO,MAAMqlB,GAAYF,EAAiBhW,UAAU;AAAA,UACxDmW,SAAS;AAAA,QAAA,CACV;AACDthB,QAAAA,GAASuhB,UAAUvlB,GAAM,GAAG,GAAG+kB,EAAatvB,OAAOsvB,EAAarvB,MAAM;AAAA,MAAA,OACjE;AACL,cAAMyvB,IAAmBjW;AACzBiW,QAAAA,EAAiBK,OAAO,GACfD,GAAAA,UACPJ,EAAiBM,OAASC,EAAAA,UAAAA,GAC1B,GACA,GACAX,EAAatvB,OACbsvB,EAAarvB,MACf;AAAA,MAAA;AAGFqvB,MAAAA,GAAcS,OAAO,YAAY,GACxBD,GAAAA,UACPR,EAAaW,aACb,GACA,GACAX,EAAatvB,OACbsvB,EAAarvB,MACf;AAEMsK,YAAAA,IAAOglB,EAAOW,UAAU;AAE9BnB,MAAAA,EAAcxkB,CAAI;AAAA,aACX4lB,GAAK;AACZjB,MAAAA,EAASiB,CAAY,GAGrBC,QAAQ/J,MAAM8J,CAAG;AAAA,IAAA,UACT;AACRlB,MAAAA,EAAa,EAAK;AAAA,IAAA;AAAA,KAEnB,CAACE,GAAgBvuB,GAASqH,GAAOmnB,CAAiB,CAAC;AAU/C,SAAA;AAAA,IACLiB,gBATqBvxB,EAAY,MAAM;AAGvC,MAFAowB,EAAS1uB,MAAS,GAClByuB,EAAa,EAAI,GACZztB,KAEA6tB,EAAgB;AAAA,IAAA,GACpB,CAACA,GAAiB7tB,CAAW,CAAC;AAAA,IAI/BwtB,WAAAA;AAAAA,IACAF,YAAAA;AAAAA,IACAzI,OAAAA;AAAAA,EACF;AACF;ACtFO,SAAAiK,GAAA/1B,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAA0B;AAAA,IAAAwN,OAAAA;AAAAA,EAAAA,IAAA1N;AAIhCe,MAAAA;AAAAd,EAAAA,SAAAyN,KACwD3M,IAAA;AAAA,IAAA2M,OAAAA;AAAAA,EAAA,GAASzN,OAAAyN,GAAAzN,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAhE+1B,QAAAA,IAA8BC,GAAyBl1B,CAAS;AAACC,MAAAA;AAAAf,EAAAA,SAAAyN,KAEN1M,IAAA;AAAA,IAAA0M,OAAAA;AAAAA,EAAA,GAE1DzN,OAAAyN,GAAAzN,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAFDi2B,QAAAA,IAAgCC,GAA2Bn1B,CAE1D;AAAyCM,MAAAA;AAAArB,EAAAA,SAAAyN,KAESpM,IAAA;AAAA,IAAAoM,OAAAA;AAAAA,EAAA,GAASzN,OAAAyN,GAAAzN,OAAAqB,KAAAA,IAAArB,EAAA,CAAA;AAA5Dm2B,QAAAA,IAA4BC,GAAuB/0B,CAAS,GAIxDC,IAAA20B,KAA2BE,KAAuBJ;AAAqBv0B,MAAAA;AAAA,SAAAxB,EAAA,CAAA,MAAAi2B,KAAAj2B,EAAAm2B,CAAAA,MAAAA,KAAAn2B,EAAAsB,CAAAA,MAAAA,KAAAtB,SAAA+1B,KAFpEv0B,IAAA;AAAA,IAAA+L,eAEHjM;AAAAA,IAAuE60B,qBAAAA;AAAAA,IAAAF,yBAAAA;AAAAA,IAAAF,uBAAAA;AAAAA,EAAA,GAI1E/1B,OAAAi2B,GAAAj2B,OAAAm2B,GAAAn2B,OAAAsB,GAAAtB,OAAA+1B,GAAA/1B,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA,GANMwB;AAMN;AAGI,SAAAw0B,GAAAj2B,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAkC;AAAA,IAAAwN,OAAAA;AAAAA,EAAAA,IAAA1N;AAIxCe,MAAAA;AAAAd,EAAAA,SAAAyN,KAC8BjH,IAAAA,CAAAA,MAAWA,EAAK8F,UAAWmB,CAAK,GAACzN,OAAAyN,GAAAzN,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAA9Dq2B,QAAAA,IAAiBloB,EAAYrN,CAAiC;AAACC,MAAAA;AAAA,EAAAmuB,GAAA;AAAA,QAAA,CAGxDmH,GAAQ;AAAErwB,MAAAA,IAAAA;AAAMkpB,YAAAA;AAAAA,IAAAA;AAAA7tB,QAAAA;AAAArB,IAAAA,SAAAq2B,KACdC,IAAAA,GAA4BD,EAAQrrB,WAAY,GAAChL,OAAAq2B,GAAAr2B,OAAAqB,KAAAA,IAAArB,EAAA,CAAA,GAAjDqB,IAAAA;AAAAA,EAAAA;AAFFN,SAAAA;AAGO;AAGT,SAAAm1B,GAAAn2B,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAoC;AAAA,IAAAwN,OAAAA;AAAAA,EAAAA,IAAA1N;AAI1Ce,MAAAA;AAAAd,EAAAA,SAAAyN,KACoC3M,IAAA0F,CAAWA,MAAAA,EAAKuJ,KAAMtC,CAAK,GAAAQ,QAASjO,OAAAyN,GAAAzN,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAvEu2B,QAAAA,IAAgB1f,EAAmB/V,CAAoC;AAACC,MAAAA;AAAA,EAAAmuB,GAAA;AAAA7tB,QAAAA;AAAArB,QAAAA,SAAAu2B,GAAA;AAGtE,YAAAtoB,IAAekJ,GAAA;AAAA,QAAAlJ,QAAwBsoB;AAAAA,MAAAA,CAAS,EAACv1B,OAAAC,EAEjD;AAEKgN,UAAAA,CAAAA,GAAMO,QAAA;AAAUxI,QAAAA,IAAAA;AAAMkpB,cAAAA;AAAAA,MAAAA;AAEpB7tB,MAAAA,IAAAm1B,GACLvoB,EAAM/M,IAAAC,EAAuD,CAC/D,GAACnB,OAAAu2B,GAAAv2B,OAAAqB,GAAArB,OAAAe;AAAAA,IAAAA;AAAAM,MAAAA,IAAArB,EAAA,CAAA,GAAAe,IAAAf,EAAA,CAAA;AAFDe,IAAAA,IAAOM,EAENma;AAAAA,EAAAA;AATIza,SAAAA;AAUM;AAjBR,SAAAI,GAAAs1B,GAAA;AAAA,SAesBl1B,EAAKia,SAAoBR;AAAA;AAf/C,SAAA/Z,GAAAM,GAAA;AAAA,SASUA,EAAKiV,WAAAvE;AAAA;AAWf,SAAAmkB,GAAAr2B,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAgC;AAAA,IAAAwN,OAAAA;AAAAA,EAAAA,IAAA1N;AAItCe,MAAAA;AAAAd,EAAAA,SAAAyN,KACmCjH,IAAAA,CAAAA,MAAWA,EAAK+G,cAAeE,CAAK,GAACzN,OAAAyN,GAAAzN,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AAAvEuN,QAAAA,IAAsBY,EAAYrN,CAAqC;AAACC,MAAAA;AAAA,EAAAmuB,GAAA;AAAA,QAGlE,CAAC3hB,KAAa,CAAKe,OAAAC,KAAYhB,CAAa,EAACiB,QAAO;AAAExI,MAAAA,IAAAA;AAAMkpB,YAAAA;AAAAA,IAAAA;AAAA7tB,QAAAA;AAAArB,QAAAA,SAAAuN,GAAA;AAGhEyN,YAAAA,IAAoC1M,OAAAL,OAAcV,CAAa,EAACvM,OAAAgB,EACN,EAAC00B,QAAA5S,EASxD;AAEIziB,MAAAA,IAAAm1B,GAAaxb,CAAW,GAAChb,OAAAuN,GAAAvN,OAAAqB;AAAAA,IAAAA;AAAAA,MAAAA,IAAArB,EAAA,CAAA;AAAhCe,IAAAA,IAAOM,EAAyBma;AAAAA,EAAAA;AAhB3Bza,SAAAA;AAiBY;AAxBd,SAAA+iB,GAAA6S,GAAA;AAeKA,SAAAA,EAAIx3B,SAAU,YACRw3B,CAAAA,EAAI3b,WAAA,IAIP2b,EAAI3b;AAAA;AApBZ,SAAAhZ,GAAAT,GAAA;AAYkBA,SAAAA,KAAK;AAAgC;AC/EvD,MAAMq1B,KAAiB;AAAA,EAC5BC,UAAU;AAAA,EACVj0B,SAAS;AAAA,EACTk0B,QAAQ;AACV,GCAaC,KAAyB;AAAA,EACpC,CAACH,GAAeC,QAAQ,GAAG;AAAA,IACzB13B,MAAMy3B,GAAeC;AAAAA,IACrBG,QAAQA,CAACz1B,GAAc0W,MACdgf,GAAe11B,GAAiB0W,CAAM;AAAA,EAEjD;AAAA,EACA,CAAC2e,GAAeE,MAAM,GAAG;AAAA,IACvB33B,MAAMy3B,GAAeE;AAAAA,IACrBE,QAAQA,CAACz1B,GAAc0W,MACde,GAAazX,GAAiB0W,CAAM;AAAA,EAE/C;AAAA,EACA,CAAC2e,GAAeh0B,OAAO,GAAG;AAAA,IACxBzD,MAAMy3B,GAAeh0B;AAAAA,IACrBo0B,QAAQA,CAACz1B,MACAA,EAAM21B,eAAe;AAAA,EAC9B;AAEJ;ACgBO,SAASC,GAA8C;AAAA,EAC5D3gB,YAAAA;AAAAA,EACA4gB,YAAAA,IAAa,CAAC;AAAA,EACdC,gBAAAA,IAAiB/oB,OAAOC,KAAKiI,CAAU;AAAA,EACvCyB,QAAAA,IAAS;AAAA,EACTqf,gBAAAA,IAAiB;AAAA,EACjBC,OAAAA;AAAAA,EACAC,eAAAA,IAAgBC;AAAAA,EAChBC,cAAAA,IAAeC;AAAAA,EACfC,UAAAA,IAAWC;AAAAA,EACXC,UAAAA,IAAWC;AACW,GAAW;AACjC,QAAM3O,IAASmO,IAAQK,EAASL,CAAK,IAAI,IAInC/N,IAFY6N,EAEKrtB,OAAO,CAACC,GAAK+tB,MAAQ;AACpCC,UAAAA,IAAYb,EAAWY,CAAG,GAC1Bz2B,IAAQiV,EAAWwhB,CAAG,GAEtBE,IAAmBJ,EAASv2B,GAAO0W,GAAQggB,CAAS,GACpDE,IAAab,IAAiBE,EAAcQ,CAAG,IAAI;AAElD/tB,WAAAA,IAAMytB,EAAaS,GAAYD,CAAgB;AAAA,KACrD,EAAE;AAEL,SAAO9O,IAASI;AAClB;AAEA,SAASqO,GAAUN,GAAe;AAChC,SAAO,iCAAiCA,CAAK;AAC/C;AAEA,SAASI,GAAcQ,GAAoB52B,GAAc;AAGhD62B,SAFU,GAAGD,CAAU,GAAG52B,CAAK;AAGxC;AAEA,SAASw2B,GAAUx2B,GAAc0W,GAAgBggB,GAA4B;AACvE,MAAA;AAEKjB,WADQqB,GAAqBJ,CAAS,EAC/B12B,GAAO0W,CAAM;AAAA,EAAA,QACrB;AACC1W,WAAAA;AAAAA,EAAAA;AAEX;AAEA,SAAS82B,GAAqBJ,GAA4B;AACpD,SAAA,OAAOA,KAAc,aAChBA,MAINA,KAAalB,GAAWkB,CAAS,MAAMlB,GAAWH,GAAeh0B,OAAO,GAEjEo0B;AACZ;AAEA,SAASS,GAAea,GAAkB;AACxC,SAAO,WAAWA,CAAQ;AAC5B;AClGO,SAASC,GAAyB5sB,GAAc;AAC9C,SAAA;AAAA,IACLuoB,WAAWvoB,EAAM4H,QAAQ2gB;AAAAA,IACzBsE,aAAa7sB,EAAM4H,QAAQilB;AAAAA,IAC3BC,YAAY9sB,EAAM4H,QAAQklB;AAAAA,IAC1Bp4B,IAAIsL,EAAMjJ,MAAMrC;AAAAA,IAChBkT,QAAQ5H,EAAM4H,QAAQmlB;AAAAA,IACtB3rB,SAASpB,EAAM4H,QAAQxG;AAAAA,IACvBF,SAASlB,EAAM4H,QAAQ1G;AAAAA,IACvBunB,SAASzoB,EAAMjJ,MAAM0xB,WAAW;AAAA,IAChCuE,oBAAoBhtB,EAAM4H,QAAQqlB;AAAAA,IAClCC,YAAYltB,EAAM4H,QAAQslB;AAAAA,IAC1BtB,OAAO5rB,EAAMkd;AAAAA,IACb5W,SAAStG,EAAMjJ,MAAMuP,WAAW;AAAA,EAClC;AACF;ACbO,SAAA6mB,GAAA/4B,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAA+N,UAAAA;AAAAA,IAAAP,OAAAA;AAAAA,EAAAA,IAAA1N;AAAgCe,MAAAA;AAAAd,EAAAA,SAAAyN,KAEzDjH,IAAAA,CAAAA,MAAWA,EAAK6F,WAAYoB,CAAK,GAAEzN,OAAAyN,GAAAzN,OAAAc,KAAAA,IAAAd,EAAA,CAAA;AADrC,QAAA;AAAA,IAAAyE,MAAAA;AAAAA,IAAAsI,SAAAA;AAAAA,IAAAF,SAAAA;AAAAA,EAAAA,IAAmCsB,EACjCrN,CACF;AAACC,MAAAA;AAAAf,EAAAA,SAAAyN,KAC4BoB,IAAAA,CAAAA,MAAWrI,EAAKyF,gBAAiBwB,CAAK,GAACzN,OAAAyN,GAAAzN,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAApEiG,QAAAA,IAAiBkI,EAAYpN,CAAuC,GAEpE4L,IAAgBwB,EAAAlN,EAAoC,GACpDiM,IAAciB,EAAAhN,EAAkC,GAChDkM,IAAuBc,EAAAnM,EAA2C,GAMrDX,KAAC4E;AAAQ3E,MAAAA;AAAA,EAAAtB,EAAAyN,CAAAA,MAAAA,KAAAzN,SAAA2M,KACCosB,IAAAA,CAAAA,MAAUpsB,EAAQc,GAAOhJ,CAAI,GAACzE,OAAAyN,GAAAzN,OAAA2M,GAAA3M,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AAA1C,QAAAwB,IAAAF;AAA6DI,MAAAA;AAAA,EAAA1B,EAAAkN,CAAAA,MAAAA,KAAAlN,SAAAyN,KAEpEnI,IAAAA,CAAAA,MAA4C4H,EAAMO,GAAOnI,CAAS,GAACtF,OAAAkN,GAAAlN,OAAAyN,GAAAzN,OAAA0B,KAAAA,IAAA1B,EAAA,CAAA;AAD9D,QAAA4B,IAAAF;AAGNG,MAAAA;AAAA,EAAA7B,EAAAyN,EAAAA,MAAAA,KAAAzN,UAAAqN,KAECxL,IAAAA,MAAMwL,EAAeI,CAAK,GAACzN,QAAAyN,GAAAzN,QAAAqN,GAAArN,QAAA6B,KAAAA,IAAA7B,EAAA,EAAA;AADb,QAAAiC,IAAAJ;AAGfwE,MAAAA;AAAA,SAAArG,EAAA,EAAA,MAAAgO,KAAAhO,EAAA,EAAA,MAAA+M,KAAA/M,EAAA,EAAA,MAAA6M,KAAA7M,EAAAqB,EAAAA,MAAAA,KAAArB,EAAAwB,EAAAA,MAAAA,KAAAxB,EAAA4B,EAAAA,MAAAA,KAAA5B,EAAAiC,EAAAA,MAAAA,KAAAjC,UAAAyE,KAbI4B,IAAA2H,EAAQ;AAAA,IAAAvJ,MAAAA;AAAAA,IAAAsI,SAAAA;AAAAA,IAAAF,SAAAA;AAAAA,IAAA2nB,WAIFnzB;AAAAA,IAASsL,SACXnL;AAAAA,IAA6D0L,OAC/DtL;AAAAA,IAGNyL,gBACepL;AAAAA,EAAAA,CAIjB,GAACjC,QAAAgO,GAAAhO,QAAA+M,GAAA/M,QAAA6M,GAAA7M,QAAAqB,GAAArB,QAAAwB,GAAAxB,QAAA4B,GAAA5B,QAAAiC,GAAAjC,QAAAyE,GAAAzE,QAAAqG,KAAAA,IAAArG,EAAA,EAAA,GAdKqG;AAcL;AAxBG,SAAArE,GAAAshB,GAAA;AAAA,SAQyC9c,EAAK6G;AAAA;AAR9C,SAAAlM,GAAA8kB,GAAA;AAAA,SAOgCzf,EAAK0G;AAAA;AAPrC,SAAAjM,GAAAkiB,GAAA;AAAA,SAMkC3c,EAAKmG;AAAA;ACD9C,eAAsBqsB,GAAiD;AAAA,EACrEC,SAAAA,IAAUrL;AAAAA,EACVsL,YAAAA;AAAAA,EACAxJ,aAAAA;AAAAA,EACAF,OAAAA;AAAAA,EACA2J,WAAAA;AAAAA,EACAC,gBAAgB;AAAA,IAAExH,QAAAA;AAAAA,IAAQ,GAAGyH;AAAAA,EAAAA,IAAU,CAAC;AAAA,EACxC7H,iBAAAA;AAAAA,EACA8H,QAAAA;AAAAA,EACAvL,YAAAA,IAAaC;AACA,GAAG;AACVuL,QAAAA,IAAW,GAAGN,CAAO,IAAIlL,CAAU,UAAUmL,CAAU,IAAIC,CAAS;AAE1E,SAAOK,GAAuC;AAAA,IAC5C9J,aAAAA;AAAAA,IACAkC,QAAAA;AAAAA,IACA1yB,KAAKq6B;AAAAA,IACLzO,QAAQ2O,GAAervB;AAAAA,IACvBkvB,QAAQ;AAAA,MAAEI,GAAGlK;AAAAA,MAAO,GAAGgC;AAAAA,MAAiB,GAAG8H;AAAAA,IAAO;AAAA,IAClD,GAAGD;AAAAA,EAAAA,CACJ;AACH;ACrBA,eAAsBM,GAAiD;AAAA,EACrEV,SAAAA,IAAUrL;AAAAA,EACVsL,YAAAA;AAAAA,EACAxJ,aAAAA;AAAAA,EACAE,OAAAA;AAAAA,EACAuJ,WAAAA;AAAAA,EACAG,QAAAA;AAAAA,EACAF,gBAAgB;AAAA,IAAExH,QAAAA;AAAAA,IAAQ,GAAGyH;AAAAA,EAAAA,IAAU,CAAC;AAAA,EACxCtL,YAAAA,IAAaC;AACA,GAAG;AACVuL,QAAAA,IAAW,GAAGN,CAAO,IAAIlL,CAAU,UAAUmL,CAAU,IAAItJ,CAAK,IAAIuJ,CAAS;AAEnF,SAAOK,GAAuC;AAAA,IAC5C9J,aAAAA;AAAAA,IACAkC,QAAAA;AAAAA,IACA1yB,KAAKq6B;AAAAA,IACLzO,QAAQ2O,GAAervB;AAAAA,IACvBkvB,QAAQ;AAAA,MAAE,GAAGA;AAAAA,IAAO;AAAA,IACpB,GAAGD;AAAAA,EAAAA,CACJ;AACH;ACtBO,SAAAO,GAAA75B,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAqD;AAAA,IAAAsI,QAAAA;AAAAA,IAAA4wB,WAAAA;AAAAA,IAAAzJ,aAAAA;AAAAA,IAAA4J,QAAAA;AAAAA,IAAAF,gBAAAA;AAAAA,IAAAzH,eAAA7wB;AAAAA,EAAAA,IAAAf;AAiB3DgB,MAAAA;AAAAf,EAAAA,SAAAc,KAXgBA,IAAAA,MAAyCkF,cAAzClF,GAAyCd,OAAAc,GAAAd,OAAAe,KAAAA,IAAAf,EAAA,CAAA;AAAAqB,MAAAA,GAAAswB;AAAA3xB,EAAAA,SAAAe,KAAzC;AAAA,IAAAgV,SAAA1U;AAAAA,IAAA,GAAAswB;AAAAA,EAAAA,IAAA5wB,GAAyCf,OAAAe,GAAAf,OAAAqB,GAAArB,OAAA2xB,MAAAtwB,IAAArB,EAAA,CAAA,GAAA2xB,IAAA3xB,EAAA,CAAA;AAAvC+V,QAAAA,IAAA1U,MAAc2E,cAAd3E;AAAcC,MAAAA;AAAA,EAAAtB,EAAAm5B,CAAAA,MAAAA,KAAAn5B,SAAAuI,KAanBjH,IAAA,CAACiH,GAAQ4wB,CAAS,GAACn5B,OAAAm5B,GAAAn5B,OAAAuI,GAAAvI,OAAAsB,KAAAA,IAAAtB,EAAA,CAAA;AAAAwB,MAAAA;AAAA,EAAAxB,EAAA0vB,CAAAA,MAAAA,KAAA1vB,EAAA,CAAA,MAAAm5B,KAAAn5B,EAAAo5B,EAAAA,MAAAA,KAAAp5B,EAAA,EAAA,MAAAs5B,KAAAt5B,UAAAuI,KACpB/G,IAAAA,MACPq4B,GAAA;AAAA,IAAAtxB,QAAAA;AAAAA,IAAA+wB,QAAAA;AAAAA,IAAAH,WAAAA;AAAAA,IAAAzJ,aAAAA;AAAAA,IAAA0J,gBAAAA;AAAAA,EAAAA,CAMC,GAACp5B,OAAA0vB,GAAA1vB,OAAAm5B,GAAAn5B,QAAAo5B,GAAAp5B,QAAAs5B,GAAAt5B,QAAAuI,GAAAvI,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAAA0B,MAAAA;AAAA,SAAA1B,EAAA+V,EAAAA,MAAAA,KAAA/V,EAAA,EAAA,MAAAuI,KAAAvI,EAAAsB,EAAAA,MAAAA,KAAAtB,EAAA,EAAA,MAAAwB,KAAAxB,UAAA2xB,KAT2CjwB,IAAA;AAAA,IAAA+vB,UACrCnwB;AAAAA,IAAmBwwB,SACpBtwB;AAAAA,IAOLs4B,OAAA/pB,GAAA;AAAA,aAAA;AAAA,QAAA,GAGGA;AAAAA,QAAI5Q,MACD4Q,EAAI5Q,KAAA+xB,YAAkB;AAAA,MAAC;AAAA,IAAA;AAAA,IAAAnb,SAGxB,CAAA,CAAExN,KAAUwN;AAAAA,IAAO,GACzB4b;AAAAA,EAAa,GACjB3xB,QAAA+V,GAAA/V,QAAAuI,GAAAvI,QAAAsB,GAAAtB,QAAAwB,GAAAxB,QAAA2xB,GAAA3xB,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA,GAlBM+xB,GAA0CrwB,CAkBhD;AAAC;AAGJ,SAASm4B,GAAoD;AAAA,EAC3DtxB,QAAAA;AAAAA,EACA+wB,QAAAA;AAAAA,EACAH,WAAAA;AAAAA,EACAzJ,aAAAA;AAAAA,EACA0J,gBAAAA;AAOF,GAAG;AACD,MAAI7wB,EAAOpJ,KAAK46B,WAAW,OAAO;AAChC,WAAOf,GAAyB;AAAA,MAC9BE,YAAY3wB,EAAOyxB;AAAAA,MACnBf,SAAS1wB,EAAOolB;AAAAA,MAChBI,YAAYxlB,EAAOwlB;AAAAA,MACnB2B,aAAAA;AAAAA,MACA4J,QAAAA;AAAAA,MACA9J,OAAOjnB,EAAOwH;AAAAA,MACdyhB,iBAAkBjpB,EAAuBipB;AAAAA,MACzC2H,WAAAA;AAAAA,MACAC,gBAAAA;AAAAA,IAAAA,CACD;AAEH,MAAI7wB,EAAOpJ,KAAK46B,WAAW,OAAO;AAChC,WAAOJ,GAAyB;AAAA,MAC9BT,YAAY3wB,EAAOyxB;AAAAA,MACnBf,SAAS1wB,EAAOolB;AAAAA,MAChBI,YAAYxlB,EAAOwlB;AAAAA,MACnBuL,QAAAA;AAAAA,MACA5J,aAAAA;AAAAA,MACAE,OAAOrnB,EAAOwH;AAAAA,MACdopB,WAAAA;AAAAA,MACAC,gBAAAA;AAAAA,IAAAA,CACD;AAEH,MAAI7wB,EAAOpJ,KAAK46B,WAAW,SAAS;AAClC,WAAOE,GAA+B;AAAA,MACpC1xB,QAAAA;AAAAA,MACAmnB,aAAAA;AAAAA,MACApnB,QAAQC,EAAOwH;AAAAA,MACfopB,WAAAA;AAAAA,IAAAA,CACD;AAGH,QAAM,IAAI1qB,MAAM,4BAA4BlG,EAAOpJ,IAAI,EAAE;AAC3D;AAIA,eAAe86B,GAAuD;AAAA,EACpE1xB,QAAAA;AAAAA,EACAmnB,aAAAA;AAAAA,EACApnB,QAAAA;AAAAA,EACA6wB,WAAAA;AAMF,GAAG;AACKe,QAAAA,IAAW,MAAMC,GAAoB;AAAA,IACzCH,gBAAgBzxB,EAAOyxB;AAAAA,IACvBrM,YAAYplB,EAAOolB;AAAAA,IACnB+B,aAAAA;AAAAA,IACA7B,UAAUtlB,EAAOslB;AAAAA,IACjBiC,WAAWxnB;AAAAA,EAAAA,CACZ;AACD,MAAI,CAAC4xB,GAAUE,WAAW75B,SAAS,CAAC,GAAG85B;AACrC,UAAM,IAAI5rB,MAAM,GAAG0qB,CAAS,kCAAkC;AAIhE,QAAMmB,IADsBJ,EAASE,UAAU75B,OAAO,CAAC,EAAE85B,WACjB7Y,KAAM+Y,CAAMA,MAAAA,EAAEpB,cAAcA,CAAS;AAE7E,MAAI,CAACmB;AACH,UAAM,IAAI7rB,MAAM,GAAG0qB,CAAS,kCAAkC;AAGzDmB,SAAAA;AACT;","x_google_ignoreList":[7,37]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/const.ts","../src/helpers.ts","../src/maps/map-libre.tsx","../src/maps/deck-overlay.tsx","../src/maps/google-maps.tsx","../src/maps/deckgl.tsx","../src/providers/map/const.ts","../../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js","../src/providers/map/store.ts","../src/providers/map/provider.tsx","../src/basemap-controls.tsx","../src/editable/const.ts","../src/editable/lasso-tools/modes/custom-edit-mode.class.tsx","../src/editable/lasso-tools/const.ts","../src/providers/layers/store.ts","../src/editable/custom-editable-geojson-layer.tsx","../src/editable/lasso-tools/layer.tsx","../src/editable/lasso-tools/provider/store.ts","../src/editable/lasso-tools/provider/provider.tsx","../src/editable/lasso-tools/lasso-tools-control.tsx","../src/editable/lasso-tools/util.ts","../src/editable/measurement-tools/utils.ts","../src/editable/measurement-tools/modes/custom-measurement-area.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-buffer.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-distance.class.tsx","../src/editable/measurement-tools/const.ts","../src/use-event-manager.ts","../src/editable/lasso-tools/lasso-tools.tsx","../src/editable/measurement-tools/layer.tsx","../src/editable/measurement-tools/provider/store.ts","../src/editable/measurement-tools/provider/provider.tsx","../src/editable/measurement-tools/use-measurement-tools.tsx","../src/editable/measurement-tools/measurement-tools-control.tsx","../src/editable/measurement-tools/measurement-tools.tsx","../src/use-layers.ts","../src/utils/sort-layers.ts","../src/maps/map.tsx","../../../node_modules/.pnpm/cross-fetch@4.1.0/node_modules/cross-fetch/dist/browser-ponyfill.js","../../services/dist/index.js","../src/providers/sources/store.ts","../src/models/use-filters-merged.tsx","../src/models/use-widget-model.ts","../src/models/utils/get-relevant-headers.tsx","../src/models/use-common-model.ts","../src/models/categories.tsx","../src/models/features.tsx","../src/models/formula.tsx","../src/models/histogram.tsx","../src/models/range.tsx","../src/models/scatter.tsx","../src/models/table.tsx","../src/models/time-series.tsx","../src/providers/sources/const.ts","../src/provider.tsx","../src/use-legend.ts","../src/use-map-screenshot.ts","../src/use-spatial-filter.ts","../src/utils/object-to-html/const.ts","../src/utils/object-to-html/object-to-html.contants.ts","../src/utils/object-to-html/object-to-html.ts","../src/utils/mapping-meridian.ts","../src/zoom-controls.tsx","../src/stats/get-query-stats.ts","../src/stats/get-table-stats.ts","../src/stats/use-stats.tsx"],"sourcesContent":["import type { BasemapKey, BasemapType } from './types'\n\n/**\n * Google Maps basemap types.\n */\nexport const GmapsBasemap = {\n roadmap: 'roadmap',\n satellite: 'satellite',\n hybrid: 'hybrid',\n} as const\n\n/**\n * CARTO basemap names.\n */\nexport const CartoBasemaps = {\n darkMatter: 'darkMatter',\n positron: 'positron',\n voyager: 'voyager',\n} as const\n\nexport const CartoBasemapURL = {\n [CartoBasemaps.positron]:\n 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',\n [CartoBasemaps.voyager]:\n 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',\n [CartoBasemaps.darkMatter]:\n 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',\n}\n\nexport const MapsTypes = {\n maplibre: 'maplibre',\n googleMaps: 'google-maps',\n}\n\nexport const MAPS_BASEMAP: Record<\n BasemapKey,\n {\n url?: string\n dark?: boolean\n type: BasemapType\n }\n> = {\n [CartoBasemaps.positron]: {\n url: CartoBasemapURL[CartoBasemaps.positron],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.voyager]: {\n url: CartoBasemapURL[CartoBasemaps.voyager],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.darkMatter]: {\n url: CartoBasemapURL[CartoBasemaps.darkMatter],\n type: MapsTypes.maplibre,\n dark: true,\n },\n [GmapsBasemap.roadmap]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.satellite]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.hybrid]: {\n type: MapsTypes.googleMaps,\n },\n}\n","import type { Tooltip } from './types'\n\nexport function getCursorDefault({\n isDragging,\n isHovering,\n}: {\n isHovering: boolean\n isDragging: boolean\n}) {\n return isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab'\n}\n\nexport function getTooltipDefault(info: Tooltip) {\n if (!info.html) return null\n\n return {\n html: `<div class='map-tooltip__content'>${info.html}</div>`,\n style: {\n padding: '0',\n background: 'none',\n },\n }\n}\n","import { Map, MapProvider, useMap as useMapLibre } from 'react-map-gl/maplibre'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport DeckGL from '@deck.gl/react'\nimport { useImperativeHandle, useMemo, type RefObject } from 'react'\n\nexport function MapLibre({\n instanceRef,\n overlayRef,\n controller,\n id,\n layers,\n mapStyle,\n parameters,\n getCursor,\n getTooltip,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n mapStyle: string | undefined\n}) {\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n return (\n <MapProvider>\n <div className='deckgl-map'>\n <DeckGL\n controller={controller}\n id={id}\n ref={instanceRef as RefObject<InstanceRef>}\n layers={_layers}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={() =>\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }\n onViewStateChange={onViewStateChange}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n >\n <MapReferences overlayRef={overlayRef} />\n <Map\n reuseMaps={false}\n mapStyle={mapStyle}\n onLoad={() =>\n onLoad({\n type: 'load',\n value: true,\n })\n }\n onRender={() => {\n const $el = document.querySelector('.maplibregl-compact-show')\n $el?.classList.remove('maplibregl-compact-show')\n }}\n />\n </DeckGL>\n </div>\n </MapProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const { default: mapLibre } = useMapLibre()\n\n useImperativeHandle(overlayRef, () => {\n return mapLibre\n }, [mapLibre])\n\n return null\n}\n","import { useMap } from '@vis.gl/react-google-maps'\nimport { useEffect, useImperativeHandle, useMemo } from 'react'\n\nimport {\n GoogleMapsOverlay,\n type GoogleMapsOverlayProps,\n} from '@deck.gl/google-maps'\nimport type { DeckGLComponentProps } from '../types'\n\n/**\n * A very simple implementation of a component that renders a list of deck.gl layers\n * via the GoogleMapsOverlay into the <Map> component containing it.\n */\nexport const DeckGlOverlay = (\n props: GoogleMapsOverlayProps & {\n instanceRef?: DeckGLComponentProps['instanceRef']\n },\n) => {\n // the GoogleMapsOverlay can persist throughout the lifetime of the DeckGlOverlay\n const deck = useMemo(\n () =>\n new GoogleMapsOverlay({\n interleaved: true,\n }),\n [],\n )\n\n // add the overlay to the map once the map is available\n const map = useMap()\n\n useImperativeHandle(\n props.instanceRef,\n () => {\n return deck\n },\n [deck],\n )\n\n useEffect(() => {\n deck.setMap(map)\n\n return () => {\n deck.finalize()\n }\n }, [deck, map])\n\n // whenever the rendered data changes, the layers will be updated\n useEffect(() => {\n deck.setProps(props)\n }, [deck, props])\n\n // no dom rendered by this component\n return null\n}\n","import {\n APIProvider,\n Map,\n useMap,\n type MapCameraChangedEvent,\n} from '@vis.gl/react-google-maps'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport { useCallback, useImperativeHandle, useMemo } from 'react'\nimport { DeckGlOverlay } from './deck-overlay'\nimport type { MapViewState, ViewStateChangeParameters } from '@deck.gl/core'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\nimport type { ControllerOptions } from 'node_modules/@deck.gl/core/dist/controllers/controller'\n\nexport function GoogleMaps({\n id,\n instanceRef,\n basemap,\n layers,\n gmapsProps: { apiKey, APIProviderProps, ..._gmapsProps } = { apiKey: '' },\n overlayRef,\n parameters,\n controller,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n}) {\n const _controller: ControllerOptions = useMemo(() => {\n if (typeof controller === 'boolean') {\n return {\n dragPan: controller,\n doubleClickZoom: controller,\n scrollZoom: controller,\n }\n }\n const _controller = controller as ControllerOptions\n\n return {\n dragPan: _controller?.dragPan ?? true,\n doubleClickZoom: _controller?.doubleClickZoom ?? true,\n scrollZoom: _controller?.scrollZoom ?? true,\n }\n }, [controller])\n\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n const mappingGmapsToDeck = useCallback(\n ({ detail: { center, zoom, heading, tilt } }: MapCameraChangedEvent) => ({\n latitude: center.lat,\n longitude: center.lng,\n zoom: zoom - 1,\n bearing: heading,\n pitch: tilt,\n }),\n [],\n )\n\n const handleViewStateChange = useCallback(\n (newViewState: MapViewState) => {\n const current = instanceRef?.current as GoogleMapsOverlay\n // @ts-expect-error accessing protected props\n const deck = current?._deck as InstanceRef['deck']\n const viewState = {\n // @ts-expect-error accessing protected props\n ...deck?.viewState,\n ...newViewState,\n }\n const _viewState: MapViewState = {\n latitude: viewState.latitude,\n longitude: viewState.longitude,\n zoom: viewState.zoom,\n pitch: viewState.pitch,\n bearing: viewState.bearing,\n // @ts-expect-error - `width` and `height` is not in the types\n width: deck?.width,\n height: deck?.height,\n }\n onViewStateChange?.({\n viewState: _viewState,\n interactionState: {\n isZooming: true,\n },\n } as ViewStateChangeParameters<MapViewState>)\n },\n [instanceRef, onViewStateChange],\n )\n\n return (\n <APIProvider apiKey={apiKey} {...APIProviderProps}>\n <div className='deckgl-map'>\n <Map\n id={id}\n mapTypeId={basemap}\n disableDefaultUI={true}\n {..._gmapsProps}\n center={{\n lat: rest.initialViewState?.latitude ?? 0,\n lng: rest.initialViewState?.longitude ?? 0,\n }}\n zoom={(rest.initialViewState?.zoom ?? 0) + 1}\n tilt={rest.initialViewState?.pitch}\n heading={rest.initialViewState?.bearing}\n onTilesLoaded={() => {\n onLoad({\n type: 'load',\n value: true,\n })\n handleViewStateChange(rest.initialViewState!)\n }}\n onBoundsChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n onZoomChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n scrollwheel={\n typeof _controller.scrollZoom === 'boolean'\n ? _controller.scrollZoom\n : !!_controller.scrollZoom\n }\n gestureHandling={!_controller.dragPan ? 'none' : 'greedy'}\n disableDoubleClickZoom={!_controller.doubleClickZoom}\n >\n <MapReferences id={id} overlayRef={overlayRef} />\n <DeckGlOverlay\n id={id}\n instanceRef={instanceRef}\n layers={_layers}\n onLoad={() => {\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n />\n </Map>\n </div>\n </APIProvider>\n )\n}\n\nfunction MapReferences({\n id,\n overlayRef,\n}: {\n id: DeckGLComponentProps['id']\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const gmaps = useMap(id)!\n\n useImperativeHandle(overlayRef, () => {\n return gmaps\n }, [gmaps])\n\n return null\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { CartoBasemaps, MAPS_BASEMAP, MapsTypes } from '../const'\nimport type { DeckGLComponentProps } from '../types'\nimport { getCursorDefault, getTooltipDefault } from '../helpers'\nimport { MapLibre } from '../maps/map-libre'\nimport { GoogleMaps } from '../maps/google-maps'\n\nexport function DeckGLComponent({\n instanceRef,\n overlayRef,\n basemap = CartoBasemaps.positron,\n controller = true,\n id = 'deck-gl-map',\n layers = [],\n gmapsProps,\n getCursor = getCursorDefault,\n getTooltip = getTooltipDefault,\n onLoad,\n onViewStateChange = () => null,\n ...rest\n}: DeckGLComponentProps) {\n const [isLoaded, setLoaded] = useState([false, false])\n\n const { url: mapStyle, type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const handleLoad = useCallback(\n (e: { type: 'deckgl' | 'load'; value: boolean }) => {\n const index = e.type === 'deckgl' ? 0 : 1\n setLoaded((state) =>\n state.map((loaded, i) => (i === index ? e.value : loaded)),\n )\n },\n [],\n )\n\n useEffect(() => {\n return () => {\n handleLoad({\n type: 'load',\n value: false,\n })\n handleLoad({\n type: 'deckgl',\n value: false,\n })\n }\n }, [handleLoad])\n\n useEffect(() => {\n const isAllLoaded = isLoaded.every((loaded) => loaded)\n onLoad?.(isAllLoaded)\n }, [isLoaded, onLoad])\n\n if (isGmaps) {\n return (\n <GoogleMaps\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n basemap={basemap}\n layers={layers}\n gmapsProps={gmapsProps}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n }\n\n return (\n <MapLibre\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n layers={layers}\n mapStyle={mapStyle}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n}\n","import { FlyToInterpolator, type MapViewState } from '@deck.gl/core'\n\nexport const transitionFlyConfig: Pick<\n MapViewState,\n 'transitionDuration' | 'transitionInterpolator'\n> = {\n transitionDuration: 'auto',\n transitionInterpolator: new FlyToInterpolator({\n curve: 2,\n }),\n}\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { createStore, type StateCreator } from 'zustand'\nimport { WebMercatorViewport, type MapViewState } from '@deck.gl/core'\nimport type {\n CommonSlice,\n MapProviderProps,\n MapStore,\n MapSlice,\n ViewStateSlice,\n AreLayerLoadedSlice,\n SpatialFilterSlice,\n} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { DeckGLComponentProps, InstanceRef } from '../../types'\nimport { MAPS_BASEMAP } from '../../const'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\nimport deepmerge from 'deepmerge'\n\nconst createMapSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id, basemap } = curr\n acc[id] = {\n isLoaded: false,\n basemap,\n instanceRef: {\n current: {} as InstanceRef,\n },\n overlayRef: {\n current: null,\n },\n layers: curr.layers ?? [],\n controller: curr.controller ?? true,\n }\n return acc\n },\n {} as MapSlice['maps'],\n )\n\n return ((set, get) => ({\n maps: defaultProps,\n setBasemap: (id, basemap) =>\n set((state) => {\n const { type: currentType } = MAPS_BASEMAP[state.maps[id]!.basemap]\n const { type: newType } = MAPS_BASEMAP[basemap]\n\n const isLoaded = currentType === newType && !!state.maps[id]?.isLoaded\n\n return {\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n basemap,\n },\n },\n }\n }),\n setLoad: (id, isLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n },\n },\n })),\n getOverlayInstance: (id) => {\n const store = get()\n return store.maps[id]?.overlayRef?.current\n },\n getDeckInstance: (id) => {\n const store = get()\n const current = store.maps[id]?.instanceRef?.current\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (\n // @ts-expect-error accessing protected props\n (current as InstanceRef)?.deck ?? (current as GoogleMapsOverlay)._deck\n )\n },\n getViewState: (id) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n // @ts-expect-error - viewState is not in the types\n return deck?.viewState\n },\n getViewports: (id, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)\n },\n getViewport: (id, index = 0, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)?.[index]\n },\n getBounds: (id, bounds, options) => {\n const store = get()\n if (!store.maps?.[id]?.isLoaded) return\n\n const viewState = store.getViewState(id)\n if (!viewState) return\n\n const viewport = new WebMercatorViewport(viewState)\n\n const newBounds = viewport.fitBounds(bounds, options?.boundsOptions)\n\n return {\n latitude: newBounds.latitude,\n longitude: newBounds.longitude,\n zoom: newBounds.zoom,\n ...options?.viewStateOptions,\n }\n },\n addLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n\n const set = new Set([..._layers, ...layers])\n\n maps[id] = {\n ...maps[id]!,\n layers: [...set],\n }\n return { maps }\n }),\n removeLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n maps[id] = {\n ...maps[id]!,\n layers: _layers.filter((layer) => !layers.includes(layer)),\n }\n return { maps }\n }),\n setController: (id, controller) =>\n set((state) => {\n const currentController = state.maps[id]?.controller ?? {}\n\n const _currentController =\n typeof currentController === 'boolean' ? {} : currentController\n\n const newController =\n !controller || typeof controller === 'boolean'\n ? controller\n : deepmerge<DeckGLComponentProps['controller']>(\n _currentController,\n controller,\n )\n\n return {\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n controller: newController,\n },\n },\n }\n }),\n })) as StateCreator<MapSlice, [], [], MapSlice>\n}\n\nconst createAreLayersLoaded = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id } = curr\n acc[id] = false\n return acc\n },\n {} as AreLayerLoadedSlice['areLayersLoaded'],\n )\n\n return ((set) => ({\n areLayersLoaded: defaultProps,\n setLayersLoad: (id, isLoaded) =>\n set((state) => ({\n areLayersLoaded: {\n ...state.areLayersLoaded,\n [id]: isLoaded,\n },\n })),\n })) as StateCreator<AreLayerLoadedSlice, [], [], AreLayerLoadedSlice>\n}\n\nconst createViewStateSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const initialViewState = curr.initialViewState ?? curr.viewState\n acc.initialViewStates[curr.id] = initialViewState\n acc.viewStates[curr.id] = initialViewState\n acc.viewports[curr.id] = null\n return acc\n },\n {\n viewStates: {} as ViewStateSlice['viewStates'],\n viewports: {} as ViewStateSlice['viewports'],\n initialViewStates: {} as ViewStateSlice['initialViewStates'],\n },\n )\n\n return ((set, get) => ({\n viewports: defaultProps.viewports,\n initialViewStates: defaultProps.initialViewStates,\n updateViewPort: (id) => {\n const store = get() as MapStore\n if (!store.maps[id]?.isLoaded) return\n\n const vp = new WebMercatorViewport(store.viewStates[id]!)\n set((state) => ({\n viewports: {\n ...state.viewports,\n [id]: vp,\n },\n }))\n },\n viewStates: defaultProps.viewStates,\n setViewState: (id, viewState) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id],\n ...viewState,\n },\n },\n })),\n setInitialViewState: (id, viewState) =>\n set((state) => ({\n initialViewStates: {\n ...state.initialViewStates,\n [id]: viewState,\n },\n })),\n setZoom: (id, zoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n zoom,\n },\n },\n })),\n setMinZoom: (id, minZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n minZoom,\n },\n },\n })),\n setMaxZoom: (id, maxZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n maxZoom,\n },\n },\n })),\n })) as StateCreator<ViewStateSlice, [], [], ViewStateSlice>\n}\n\nconst createCommonSlice = ((_, get) => ({\n fitBounds: (id, bounds, options) => {\n const store = get()\n const newViewState = store.getBounds(id, bounds, options)\n\n if (!newViewState) return\n\n store.setViewState(id, newViewState)\n store.updateViewPort(id)\n },\n flyTo: (id, target, options = {}) => {\n const store = get()\n\n const viewStateOptions = {\n ...transitionFlyConfig,\n ...options?.viewStateOptions,\n }\n\n // Merge with current view state and options\n const finalViewState = {\n ...target,\n ...viewStateOptions,\n } as MapViewState\n store.setViewState(id, finalViewState)\n store.updateViewPort(id)\n },\n loadInitialViewState: (id, initialViewState) => {\n const store = get()\n store.setInitialViewState(id, initialViewState)\n store.flyTo(id, initialViewState, {\n viewStateOptions: { transitionDuration: 0 },\n })\n },\n resetViewState: (id: string) => {\n const store = get()\n const initialViewStates = store.initialViewStates\n if (!initialViewStates[id]) return\n store.flyTo(id, initialViewStates[id])\n },\n})) as StateCreator<MapStore, [], [], CommonSlice>\n\nconst createSpatialFilterSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n acc[curr.id] = curr.spatialFilter ?? {} // Initialize every mapId to an empty record\n return acc\n },\n {} as SpatialFilterSlice['spatialFilter'],\n )\n return ((set) => ({\n spatialFilter: defaultProps,\n setSpatialFilter: (mapId, id, value) => {\n set((state) => {\n const spatialFilter = structuredClone(state.spatialFilter)\n if (value === null || value === undefined) {\n if (spatialFilter[mapId]) {\n delete spatialFilter[mapId][id]\n }\n } else {\n spatialFilter[mapId] = {\n ...spatialFilter[mapId],\n [id]: value,\n }\n }\n\n return {\n spatialFilter,\n }\n })\n },\n })) as StateCreator<SpatialFilterSlice, [], [], SpatialFilterSlice>\n}\n\nexport const createMapStore = (initProps: MapProviderProps['values']) => {\n return createStore<MapStore>()((...args) => {\n return {\n ...createMapSlice(initProps)(...args),\n ...createAreLayersLoaded(initProps)(...args),\n ...createViewStateSlice(initProps)(...args),\n ...createSpatialFilterSlice(initProps)(...args),\n ...createCommonSlice(...args),\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMapStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { MapProviderProps, MapStore } from './types'\n\nconst MapContext = createContext<StoreApi<MapStore>>({} as StoreApi<MapStore>)\n\nexport function MapProvider({\n children,\n values,\n}: PropsWithChildren<MapProviderProps>) {\n const [storeRef] = useState(createMapStore(values))\n\n return <MapContext.Provider value={storeRef}>{children}</MapContext.Provider>\n}\n\nexport function useMapStore<T>(selector: (state: MapStore) => T): T {\n const store = useContext(MapContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MapProvider in the tree')\n return useStore(store, selector)\n}\n","import type { BasemapsControlsProps, MapComponentProps } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function BasemapsControls({ children, mapId }: BasemapsControlsProps) {\n const { basemap } = useMapStore((state) => state.maps[mapId]!)\n const setBasemap = useMapStore((state) => state.setBasemap)\n\n return children({\n basemap,\n setBasemap: useCallback(\n (basemap: NonNullable<MapComponentProps['basemap']>) =>\n setBasemap(mapId, basemap),\n [setBasemap, mapId],\n ),\n })\n}\n","export const EditType = {\n addFeature: 'addFeature',\n addTentativePosition: 'addTentativePosition',\n updateTentativeFeature: 'updateTentativeFeature',\n cancel: 'cancelFeature',\n finish: 'finish',\n addPosition: 'addPosition',\n} as const\n","import {\n CompositeMode,\n ModifyMode,\n TranslateMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport { EditType } from '../../../editable/const'\n\nexport class CustomCompositeEditMode extends CompositeMode {\n constructor() {\n super([new TranslateMode(), new ModifyMode()])\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleKeyUp(event, props)\n if (event.key === 'Enter') {\n this.resetClickSequence()\n props.onEdit({\n updatedData: props.data,\n editType: EditType.addFeature,\n editContext: {},\n })\n }\n }\n}\n","import {\n DrawPolygonMode,\n DrawRectangleMode,\n DrawCircleFromCenterMode,\n DrawPolygonByDraggingMode,\n GeoJsonEditMode,\n} from '@deck.gl-community/editable-layers'\nimport type { LassoToolsMode, LassoToolsModes } from '../../types'\nimport { CustomCompositeEditMode } from './modes/custom-edit-mode.class'\nimport type { DefaultLassoToolsProps } from './types'\nimport { DataFilterExtension } from '@deck.gl/extensions'\n\nexport const MAP_LASSO_TOOLS_LAYER_ID = 'lassoLayer'\nexport const MAP_MASK_LAYER_ID = 'maskLayer'\n\nexport const DEFAULT_LASSO_TOOLS_LAYER_PROPS = {\n id: MAP_LASSO_TOOLS_LAYER_ID,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n stroked: true,\n filled: true,\n lineWidthUnits: 'pixels',\n getLineWidth: 2,\n lineWidthMinPixels: 2,\n} as const\n\nexport const DEFAULT_LASSO_TOOLS_COLORS: DefaultLassoToolsProps['styles']['colors'] =\n {\n editing: {\n border: [3, 111, 226, 255],\n fill: [3, 111, 226, 20.4],\n point: [255, 255, 255, 255],\n },\n finished: {\n border: [71, 219, 153, 255],\n fill: [71, 219, 153, 0],\n },\n } as const\n\nexport const DEFAULT_LASSO_TOOLS_PROPS: DefaultLassoToolsProps = {\n styles: {\n colors: {\n editing: DEFAULT_LASSO_TOOLS_COLORS.editing,\n finished: DEFAULT_LASSO_TOOLS_COLORS.finished,\n },\n },\n labels: {\n mask: 'Mask',\n },\n} as const\n\nconst EXTENSION_FILTER = [new DataFilterExtension({ filterSize: 1 })]\n\nexport const DEFAULT_MASK_LAYER_PROPS = {\n id: MAP_MASK_LAYER_ID,\n operation: 'mask',\n pickable: false,\n visible: true,\n extensions: EXTENSION_FILTER,\n filterRange: [1, 1],\n}\n\nexport const DEFAULT_LASSO_TOOLS_MODES: LassoToolsModes<\n LassoToolsMode,\n GeoJsonEditMode\n> = {\n polygon: {\n value: 'polygon',\n mode: DrawPolygonMode,\n },\n rectangle: {\n value: 'rectangle',\n mode: DrawRectangleMode,\n },\n circle: {\n value: 'circle',\n mode: DrawCircleFromCenterMode,\n },\n lasso: {\n value: 'lasso',\n mode: DrawPolygonByDraggingMode,\n },\n edit: {\n value: 'edit',\n mode: CustomCompositeEditMode,\n },\n} as const\n","import { create } from 'zustand'\nimport type { LayerStore } from './types'\nimport type { LayerExtension } from '@deck.gl/core'\n\nexport const useLayerStore = create<LayerStore>((set) => ({\n layers: {},\n setLayer: (id, layer) =>\n set((state) => {\n const layers = { ...state.layers }\n\n if (!layer) {\n delete layers[id]\n return { layers }\n }\n\n const _layer = layers[id] ?? { type: null, props: {} }\n\n const extensions = [\n ...(_layer.props.extensions ?? []),\n ...(layer.props?.extensions ?? []),\n ].reduce((acc, extension) => {\n if (!acc.some((e) => e.equals(extension))) {\n acc.push(extension)\n }\n return acc\n }, [] as LayerExtension[])\n\n const legend =\n !!_layer.legend || !!layer.legend\n ? {\n ..._layer.legend,\n ...layer.legend,\n }\n : undefined\n\n layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._layer.props,\n ...layer.props,\n updateTriggers: {\n ...(_layer.props.updateTriggers ?? {}),\n ...(layer.props?.updateTriggers ?? {}),\n },\n extensions,\n },\n legend,\n }\n\n return { layers }\n }),\n removeLayer: (id) =>\n set((state) => {\n const layers = { ...state.layers }\n delete layers[id]\n return { layers }\n }),\n}))\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport type { UpdateParameters } from '@deck.gl/core'\nimport { EventManager } from 'mjolnir.js'\n\nconst EVENT_TYPES = [\n 'anyclick',\n 'pointermove',\n 'panstart',\n 'panmove',\n 'panend',\n 'keyup',\n]\n\nexport class CustomEditableGeojsonLayer extends EditableGeoJsonLayer {\n declare props: EditableGeoJsonLayer['props'] & {\n eventManager?: EventManager | null\n }\n\n override updateState({\n props,\n oldProps,\n context,\n changeFlags,\n }: UpdateParameters<this>) {\n if (props.eventManager !== oldProps.eventManager) {\n this._removeEventHandlers(props.eventManager)\n this._removeEventHandlers(oldProps.eventManager)\n this._addEventHandlers()\n }\n super.updateState({ props, oldProps, context, changeFlags })\n }\n\n override _addEventHandlers() {\n const eventManager = this._getEventManager()!\n // _editableLayerState is not in the types, but it's a private property that can be accessed\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_TYPES) {\n // error derived from the _editableLayerState. The type is not exists\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.on(eventType as 'anyclick', eventHandler, {\n // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n priority: 100,\n })\n }\n }\n\n override _removeEventHandlers(_eventManager?: EventManager | null) {\n const eventManager = _eventManager ?? this._getEventManager()!\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_TYPES) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.off(eventType as 'anyclick', eventHandler)\n }\n }\n\n _getEventManager() {\n return (\n this.props.eventManager ??\n // @ts-expect-error accessing protected props\n this.context.deck.eventManager\n )\n }\n}\n","import type { LayerType } from '../../types'\nimport { DEFAULT_LASSO_TOOLS_LAYER_PROPS } from './const'\nimport type { LassoToolsLayerProps } from './types'\nimport deepmerge from 'deepmerge'\nimport type { FeatureCollection } from 'geojson'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\n\nexport function getLassoToolsLayer({\n mode,\n ...defaultProps\n}: LassoToolsLayerProps & {}): LayerType {\n const props = getLayerProps(defaultProps)\n\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n mode,\n } as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapLassoToolsLayer component.\n * @param layerProps - The layer props.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n layerProps,\n onEdit,\n getLineColor,\n getFillColor,\n pointColor,\n}: Omit<LassoToolsLayerProps, 'mode'>) {\n const _layerProps = deepmerge(layerProps, {\n modeConfig: {\n // // We force distance due to conversion is addressed at feature getText level\n // formatTooltip: (_distance: number) => {\n // return _distance\n // },\n preventOverlappingLines: true,\n },\n onEdit,\n })\n\n const defaultLayerProps = deepmerge(DEFAULT_LASSO_TOOLS_LAYER_PROPS, {\n getTentativeLineColor: getLineColor,\n getTentativeFillColor: getFillColor,\n getLineColor: getLineColor,\n getFillColor: getFillColor,\n getEditHandlePointColor: pointColor.fill,\n getEditHandlePointOutlineColor: pointColor.outline,\n dataComparator: (data: FeatureCollection, oldData: FeatureCollection) =>\n data.features[0] === oldData.features[0],\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\nimport type { LassoToolsState } from '../types'\nimport { DEFAULT_LASSO_TOOLS_MODES } from '../const'\n\nexport const createLassoToolsStore = (\n initProps: LassoToolsProviderProps['values'],\n) => {\n return createStore<LassoToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n enabled = false,\n mapId,\n modeInstance = new DEFAULT_LASSO_TOOLS_MODES.polygon.mode(),\n modes = DEFAULT_LASSO_TOOLS_MODES,\n modeSelected = DEFAULT_LASSO_TOOLS_MODES.polygon.value,\n values = {},\n } = curr\n acc[mapId] = {\n enabled,\n modeInstance,\n modes,\n modeSelected,\n values,\n }\n return acc\n },\n {} as LassoToolsStore['data'],\n )\n\n return {\n data: defaultProps,\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n enabled,\n visible: enabled,\n },\n },\n }))\n },\n setValue: (mapId, id, value) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n\n const _value =\n values[id] ??\n ({\n type: 'mask',\n } as LassoToolsState['values'][number])\n\n values[id] = {\n ..._value,\n ...value,\n id,\n }\n\n if (!value) {\n delete values[id]\n }\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values,\n },\n },\n }\n })\n },\n setVisibility: (mapId, valueId, visible) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n const _value =\n values[valueId] ?? ({} as LassoToolsState['values'][number])\n _value.properties.visible = visible\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values: {\n ...values,\n [valueId]: _value,\n },\n },\n },\n }\n })\n },\n setModeSelected: (mapId, mode) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeSelected: mode,\n },\n },\n }\n })\n },\n setModeInstance: (mapId, modeInstance) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeInstance,\n },\n },\n }\n })\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createLassoToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\n\nconst LassoToolsContext = createContext<StoreApi<LassoToolsStore>>(\n {} as StoreApi<LassoToolsStore>,\n)\n\nexport function LassoToolsProvider({\n children,\n values,\n}: PropsWithChildren<LassoToolsProviderProps>) {\n const [storeRef] = useState(() => createLassoToolsStore(values))\n\n return (\n <LassoToolsContext.Provider value={storeRef}>\n {children}\n </LassoToolsContext.Provider>\n )\n}\n\nexport function useLassoToolsState<T>(\n selector: (state: LassoToolsStore) => T,\n): T {\n const store = useContext(LassoToolsContext)\n if (!Object.keys(store).length) {\n throw new Error('Missing LassoToolsProvider in the tree')\n }\n return useStore(store, selector)\n}\n","import { useCallback, useEffect, useMemo } from 'react'\nimport type {\n LassoToolsData,\n LassoToolsControlProps,\n LassoToolsState,\n} from './types'\nimport { useLassoToolsState } from './provider/provider'\n\nexport function LassoToolsControls({\n mapId,\n children,\n}: LassoToolsControlProps) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)!\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)!\n const setValue = useLassoToolsState((state) => state.setValue)\n const setVisibility = useLassoToolsState((state) => state.setVisibility)\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )!\n const setModeSelected = useLassoToolsState((state) => state.setModeSelected)\n const modes = useLassoToolsState((state) => state.data[mapId]?.modes)!\n const setModeInstance = useLassoToolsState((state) => state.setModeInstance)\n\n useEffect(() => {\n const data = modes[modeSelected]\n\n if (data && enabled) {\n const Mode = data.mode\n setModeInstance(mapId, new Mode() as LassoToolsState['modeInstance'])\n }\n }, [enabled, mapId, modeSelected, modes, setModeInstance])\n\n const [\n mask,\n // , draw\n ] = useMemo(() => {\n const serialize = (value: LassoToolsData) => ({\n id: value.id,\n visible: value.properties.visible,\n label: value.properties?.label,\n })\n const _values = Object.values(values)\n const mask = _values.filter((value) => value.type === 'mask').map(serialize)\n // const draw = _values.filter((value) => value.type === 'draw').map(serialize)\n return [\n mask,\n // , draw\n ]\n }, [values])\n\n const handleModeSelected = useCallback(\n (mode: LassoToolsState['modeSelected']) => {\n setEnabled(mapId, !!mode)\n setModeSelected(mapId, mode)\n },\n [mapId, setEnabled, setModeSelected],\n )\n\n return children({\n mapId,\n enabled,\n modes,\n modeSelected,\n values: {\n mask,\n // draw,\n },\n setValue: useCallback((id, data) => setValue(mapId, id, data), [mapId, setValue]),\n setEnabled: useCallback(\n (enabled) => setEnabled(mapId, enabled),\n [mapId, setEnabled],\n ),\n setVisibility: useCallback(\n (valueId, visible) => setVisibility(mapId, valueId, visible),\n [mapId, setVisibility],\n ),\n setModeSelected: handleModeSelected,\n })\n}\n","import type { LassoToolsStore } from './provider/types'\n\nexport function getMaskValues({\n values,\n}: {\n values?: LassoToolsStore['data'][number]['values']\n}) {\n return Object.values(values ?? {}).filter((value) => value.type === 'mask')\n}\n","import { formatNumber } from '@carto/ps-utils'\nimport type { Tooltip, Position } from '@deck.gl-community/editable-layers'\nimport configureMeasurements from 'convert-units'\nimport length, { type LengthUnits } from 'convert-units/definitions/length'\nimport type { ControllerOptions } from 'node_modules/@deck.gl/core/dist/controllers/controller'\nimport type { ValueOf } from 'type-fest'\nimport type { DeckGLComponentProps } from '../../types'\nimport {\n CONVERSIONS_UNITS,\n CONVERSIONS_UNITS_AREA,\n CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA,\n INTL_UNITS,\n MapMeasurementUnit,\n MapMeasurementUnitAuto,\n} from './const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from './types'\nimport type { AreaUnits } from 'convert-units/definitions/area'\nimport area from 'convert-units/definitions/area'\n\nconst convert = configureMeasurements({\n length,\n})\n\nconst convertArea = configureMeasurements({\n area,\n})\n\nfunction validateUnitForAreaConversion(\n unit: string,\n): asserts unit is keyof typeof CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA {\n if (!(unit in CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA)) {\n const validUnits = Object.keys(CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA)\n throw new Error(\n `Unit \"${unit}\" cannot be converted to area. Valid units are: ${validUnits.join(', ')}`,\n )\n }\n}\n\nexport function convertMetersTo(\n distance: number,\n unit: ValueOf<typeof MapMeasurementUnit>,\n dimension: 'length' | 'area',\n) {\n switch (dimension) {\n case 'length': {\n const unitFrom: LengthUnits = CONVERSIONS_UNITS[MapMeasurementUnit.meter]\n const unitTo: LengthUnits = CONVERSIONS_UNITS[unit]\n\n return convert(distance).from(unitFrom).to(unitTo)\n }\n case 'area': {\n validateUnitForAreaConversion(unit)\n const unitFrom: AreaUnits =\n CONVERSIONS_UNITS_AREA[\n CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA[MapMeasurementUnit.meter]\n ]\n const unitTo: AreaUnits =\n CONVERSIONS_UNITS_AREA[CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA[unit]]\n\n return convertArea(distance).from(unitFrom).to(unitTo)\n }\n default: {\n throw new Error(\n `Invalid dimension: ${dimension as string}, valid dimensions are: length, area`,\n )\n }\n }\n}\n\nconst DEFAULT_AUTO_SPLIT_NUMBER = 10000\n\nexport function getTextLayerFormattedDistance({\n meters,\n unit,\n locale,\n options: { autoSplitNumber, ...intlOptions } = {\n autoSplitNumber: DEFAULT_AUTO_SPLIT_NUMBER,\n },\n dimension = 'length',\n}: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n dimension?: 'length' | 'area'\n}) {\n const isMetricSystem = unit === MapMeasurementUnitAuto['m-km']\n const isImperialSystem = unit === MapMeasurementUnitAuto['ft-mi']\n const isAuto = isMetricSystem || isImperialSystem\n\n let _unit\n let _number\n\n if (isAuto) {\n const isSmallDistance =\n meters < (autoSplitNumber ?? DEFAULT_AUTO_SPLIT_NUMBER)\n let convertUnit: ValueOf<typeof MapMeasurementUnit> = isSmallDistance\n ? MapMeasurementUnit.meter\n : MapMeasurementUnit.kilometer\n\n _unit = isSmallDistance ? INTL_UNITS.meter : INTL_UNITS.kilometer\n\n if (isImperialSystem) {\n _unit = isSmallDistance ? INTL_UNITS.feet : INTL_UNITS.mile\n convertUnit = isSmallDistance\n ? MapMeasurementUnit.feet\n : MapMeasurementUnit.mile\n }\n\n _number = convertMetersTo(meters, convertUnit, dimension)\n } else {\n _unit = INTL_UNITS[unit]\n _number = convertMetersTo(meters, unit, dimension)\n }\n\n return `${formatNumber(_number, locale, {\n style: 'unit',\n unit: _unit,\n unitDisplay: 'short',\n notation: 'standard',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n ...intlOptions,\n })}`\n}\n\nexport function getDeckController(\n controller: DeckGLComponentProps['controller'],\n {\n hasDoubleClickZoom,\n }: {\n hasDoubleClickZoom: boolean\n },\n): ControllerOptions {\n return typeof controller === 'boolean'\n ? { doubleClickZoom: hasDoubleClickZoom }\n : { ...controller, doubleClickZoom: hasDoubleClickZoom }\n}\n\nexport function buildTooltip(\n value: number,\n position: Position,\n modeConfig: EditModeConfig,\n): Tooltip[] {\n if (value > 0) {\n const { formatTooltip, turfOptions } = modeConfig ?? {\n turfOptions: {\n units: 'kilometers',\n },\n }\n\n const units = turfOptions?.units\n\n let text\n if (formatTooltip) {\n text = formatTooltip(value)\n } else {\n text = `${parseFloat(value.toString()).toFixed(2)} ${units}`\n }\n\n const { measurementCallback } = modeConfig as {\n measurementCallback?: (value: number) => void\n }\n\n if (measurementCallback) {\n measurementCallback(value)\n }\n\n return [\n {\n position,\n text,\n },\n ]\n }\n return []\n}\n","import {\n getPickedEditHandle,\n MeasureAreaMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type GuideFeatureCollection,\n type LineString,\n type ModeProps,\n type Point,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport { area, centroid, lineIntersect } from '@turf/turf'\nimport { EditType } from '../../../editable/const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { TentativeFeature } from 'node_modules/@deck.gl-community/editable-layers/dist/edit-modes/types'\n\nexport class CustomMeasureAreaMode extends MeasureAreaMode {\n _isMeasuringSessionFinished = false\n area = 0\n tooltips: Tooltip[] = []\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this.area = 0\n }\n\n const { picks } = event\n const clickedEditHandle = getPickedEditHandle(picks)\n const clickSequence = this.getClickSequence()\n\n let positionAdded = false\n if (!clickedEditHandle && !this.allowOverlapping(props)) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event)\n positionAdded = true\n }\n\n const latestClickSequence = this.getClickSequence()\n const polygonCoordinates = [...latestClickSequence, latestClickSequence[0]!]\n this.area = area({\n type: 'Polygon',\n coordinates: [polygonCoordinates],\n })\n\n if (\n this.isFinalizedEdition(\n clickSequence,\n clickedEditHandle as unknown as {\n properties: { positionIndexes: number[] }\n },\n )\n ) {\n this.finalizeEdition(props)\n } else if (positionAdded) {\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords,\n },\n })\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n const clickSequence = this.getClickSequence()\n if (clickSequence.length > 2) {\n this.finalizeEdition(props)\n } else {\n this.resetEdition(props)\n }\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n updateTooltip(\n polygon: Polygon | TentativeFeature,\n props: ModeProps<FeatureCollection>,\n ): void {\n const position = centroid(polygon) as FeatureOf<Point>\n this.area = area(polygon)\n this.tooltips = buildTooltip(\n this.area,\n position.geometry.coordinates as unknown as Position,\n props.modeConfig as EditModeConfig,\n )\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n const tentativeGuide = this.getTentativeGuide(props)\n if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {\n this.updateTooltip(tentativeGuide, props)\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this.area = 0\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n override getTooltips() {\n return this.tooltips\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n clickedEditHandle:\n | { properties: { positionIndexes: number[] } }\n | null\n | undefined,\n ): boolean {\n const { positionIndexes } = clickedEditHandle?.properties ?? {\n positionIndexes: [],\n }\n return (\n clickSequence.length > 2 &&\n clickedEditHandle !== undefined &&\n (positionIndexes[0] === 0 ||\n positionIndexes[0] === clickSequence.length - 1)\n )\n }\n\n allowOverlapping(props: ModeProps<FeatureCollection>) {\n let overlappingLines = false\n const clickSequence = this.getClickSequence()\n if (\n clickSequence.length > 2 &&\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n props.modeConfig?.preventOverlappingLines\n ) {\n const currentLine = {\n type: 'LineString',\n coordinates: [...clickSequence, clickSequence[0]],\n } as LineString\n const otherLines = {\n type: 'LineString',\n coordinates: [...clickSequence.slice(0, clickSequence.length - 1)],\n } as LineString\n const intersectingPoints = lineIntersect(currentLine, otherLines)\n if ((intersectingPoints as FeatureCollection).features.length > 0) {\n overlappingLines = true\n }\n }\n return overlappingLines\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n // They clicked the first or last point (or double-clicked), so complete the polygon\n // Remove the hovered position\n const polygonToAdd: Polygon = {\n type: 'Polygon',\n coordinates: [[...clickSequence, clickSequence[0]!]],\n }\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n polygonToAdd,\n props,\n )\n this._isMeasuringSessionFinished = true\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this.area,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n // Update the tooltip with the final area\n this.updateTooltip(polygonToAdd, props)\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n dimension: 'area',\n }) + '2'\n )\n }\n}\n","import {\n DrawCircleFromCenterMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type Geometry,\n type GuideFeatureCollection,\n type ModeProps,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport type { ValueOf } from 'type-fest'\nimport { EditType } from '../../../editable/const'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureBufferMode extends DrawCircleFromCenterMode {\n _isMeasuringSessionFinished = false\n _currentArea = 0\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n tooltips: Tooltip[] = []\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this._currentArea = 0\n }\n\n super.handleClick(event, props)\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n this.tooltips = buildTooltip(\n this.areaCircle!,\n this.position,\n props.modeConfig as EditModeConfig,\n )\n }\n\n override checkAndFinishPolygon(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n const tentativeFeature = this.getTentativeGuide(props)\n if (\n this.isFinalizedEdition(\n clickSequence,\n tentativeFeature as { geometry: Geometry },\n )\n ) {\n this.finalizeEdition(props)\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n this.finalizeEdition(props)\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n tentativeFeature: { geometry: Geometry },\n ): boolean {\n return (\n clickSequence.length > 1 &&\n tentativeFeature &&\n tentativeFeature.geometry.type === 'Polygon'\n )\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const tentativeFeature = this.getTentativeGuide(props)\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n tentativeFeature as FeatureOf<Polygon>,\n props,\n )\n this._isMeasuringSessionFinished = true\n props.onUpdateCursor('cell')\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this._currentArea,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this._currentArea = 0\n this.radius = 0\n this.areaCircle = 0\n }\n\n override getTooltips(): Tooltip[] {\n return this.tooltips\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n MeasureDistanceMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport type { BasePointerEvent } from 'node_modules/@deck.gl-community/editable-layers/dist/edit-modes/types'\nimport { EditType } from '../../../editable/const'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { MeasurementToolsTextProps } from '../types'\nimport { getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureDistanceMode extends MeasureDistanceMode {\n override handleClick(\n event: BasePointerEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleClick(event, props)\n\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: EditType.addPosition,\n editContext: {\n distance: this._currentDistance,\n finished: this._isMeasuringSessionFinished,\n positions: this.getClickSequence(),\n },\n })\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (this._isMeasuringSessionFinished) return\n\n event.stopPropagation()\n const { key } = event\n\n const clickSequenceLength = this.getClickSequence().length\n\n let editType: ValueOf<typeof EditType> = EditType.finish\n\n switch (key) {\n case 'Escape':\n props.onEdit({\n updatedData: {\n type: 'FeatureCollection',\n features: [],\n },\n editType: EditType.cancel,\n editContext: {},\n })\n break\n case 'Enter':\n this._isMeasuringSessionFinished = true\n if (clickSequenceLength === 1) {\n this.resetClickSequence()\n editType = EditType.cancel\n }\n // force update drawings\n props.onUpdateCursor('cell')\n props.onEdit({\n updatedData: props.data,\n editType,\n editContext: {\n finished: this._isMeasuringSessionFinished,\n },\n })\n break\n default:\n break\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this._isMeasuringSessionFinished = false\n this._currentTooltips = []\n this._currentDistance = 0\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n })\n }\n}\n","import type { GeoJsonEditMode } from '@deck.gl-community/editable-layers'\nimport type { Color } from '@deck.gl/core'\nimport type { LengthUnits } from 'convert-units/definitions/length'\nimport type {\n MeasurementMode,\n MeasurementModes,\n MeasurementUnit,\n MeasurementUnitOption,\n MeasurementUnits,\n} from '../../types'\nimport type { ValueOf } from 'type-fest'\nimport { CustomMeasureAreaMode } from './modes/custom-measurement-area.class'\nimport { CustomMeasureBufferMode } from './modes/custom-measurement-buffer.class'\nimport { CustomMeasureDistanceMode } from './modes/custom-measurement-distance.class'\nimport type { DefaultMeasureToolProps } from './types'\nimport type { AreaUnits } from 'convert-units/definitions/area'\n\nexport const MAP_MEASURE_LAYER_ID = 'mapMeasureLayer'\n\nexport const DEFAULT_LAYER_PROPS = {\n id: MAP_MEASURE_LAYER_ID,\n pickable: false,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n lineWidthMinPixels: 2,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n _subLayerProps: {\n tooltips: {\n fontFamily: 'Open Sans, Inter, sans-serif',\n fontWeight: 'lighter',\n getSize: 11,\n lineHeight: 1.4545,\n getPixelOffset: [0, 20],\n getTextAnchor: 'middle',\n getAlignmentBaseline: 'center',\n updateTriggers: {},\n },\n guides: {\n getLineWidth: 2,\n },\n },\n} as const\n\nexport const DEFAULT_COLORS: Record<string, Color> = {\n editing: [23, 102, 214, 255],\n finished: [71, 219, 153, 255],\n point: [255, 255, 255, 255],\n} as const\n\nexport const DEFAULT_PROPS: DefaultMeasureToolProps = {\n styles: {\n colors: {\n editing: DEFAULT_COLORS.editing!,\n finished: DEFAULT_COLORS.finished!,\n point: DEFAULT_COLORS.point!,\n },\n },\n} as const\n\nexport const MapMeasurementUnit = {\n kilometer: 'kilometer',\n meter: 'meter',\n centimeter: 'centimeter',\n milimeter: 'milimeter',\n mile: 'mile',\n yard: 'yard',\n feet: 'feet',\n} as const\n\nexport const MapMeasurementUnitArea = {\n squareMeter: 'squareMeter',\n squareKilometer: 'squareKilometer',\n squareMile: 'squareMile',\n squareFeet: 'squareFeet',\n} as const\n\nexport const MapMeasurementUnitAuto = {\n 'm-km': 'm-km',\n 'ft-mi': 'ft-mi',\n ...MapMeasurementUnit,\n} as const\n\nexport const MapMeasurementUnitTurf = {\n meters: 'meters',\n kilometer: 'kilometers',\n mile: 'miles',\n} as const\n\nexport type MapMeasurementUnitAreaValue = Pick<\n typeof MapMeasurementUnit,\n 'kilometer' | 'meter' | 'mile' | 'feet'\n>\n\nexport const CONVERSIONS_UNITS: Record<\n ValueOf<typeof MapMeasurementUnit>,\n LengthUnits\n> = {\n [MapMeasurementUnit.kilometer]: 'km',\n [MapMeasurementUnit.meter]: 'm',\n [MapMeasurementUnit.centimeter]: 'cm',\n [MapMeasurementUnit.milimeter]: 'mm',\n [MapMeasurementUnit.mile]: 'mi',\n [MapMeasurementUnit.yard]: 'yd',\n [MapMeasurementUnit.feet]: 'ft',\n} as const\n\nexport const CONVERSIONS_UNITS_AREA: Record<\n ValueOf<typeof MapMeasurementUnitArea>,\n AreaUnits\n> = {\n [MapMeasurementUnitArea.squareMeter]: 'm2',\n [MapMeasurementUnitArea.squareKilometer]: 'km2',\n [MapMeasurementUnitArea.squareMile]: 'mi2',\n [MapMeasurementUnitArea.squareFeet]: 'ft2',\n} as const\n\nexport const CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA: Record<\n keyof MapMeasurementUnitAreaValue,\n ValueOf<typeof MapMeasurementUnitArea>\n> = {\n [MapMeasurementUnit.meter]: MapMeasurementUnitArea.squareMeter,\n [MapMeasurementUnit.kilometer]: MapMeasurementUnitArea.squareKilometer,\n [MapMeasurementUnit.mile]: MapMeasurementUnitArea.squareMile,\n [MapMeasurementUnit.feet]: MapMeasurementUnitArea.squareFeet,\n} as const\n\nexport const INTL_UNITS: Record<ValueOf<typeof MapMeasurementUnit>, string> = {\n [MapMeasurementUnit.kilometer]: 'kilometer',\n [MapMeasurementUnit.meter]: 'meter',\n [MapMeasurementUnit.centimeter]: 'centimeter',\n [MapMeasurementUnit.milimeter]: 'millimeter',\n [MapMeasurementUnit.mile]: 'mile',\n [MapMeasurementUnit.yard]: 'yard',\n [MapMeasurementUnit.feet]: 'foot',\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES: Record<\n MeasurementUnit,\n MeasurementUnitOption\n> = {\n 'm-km': {\n value: 'm-km',\n system: 'metric',\n },\n kilometer: {\n value: 'kilometer',\n system: 'metric',\n },\n meter: {\n value: 'meter',\n system: 'metric',\n },\n centimeter: {\n value: 'centimeter',\n system: 'metric',\n },\n milimeter: {\n value: 'milimeter',\n system: 'metric',\n },\n 'ft-mi': {\n value: 'ft-mi',\n system: 'imperial',\n },\n mile: {\n value: 'mile',\n system: 'imperial',\n },\n yard: {\n value: 'yard',\n system: 'imperial',\n },\n feet: {\n value: 'feet',\n system: 'imperial',\n },\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const MEASUREMENT_TOOLS_UNITS_AREA: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_MODES: MeasurementModes<\n MeasurementMode,\n GeoJsonEditMode\n> = {\n distance: {\n value: 'distance',\n mode: CustomMeasureDistanceMode,\n },\n buffer: {\n value: 'buffer',\n mode: CustomMeasureBufferMode,\n },\n area: {\n value: 'area',\n mode: CustomMeasureAreaMode,\n },\n} as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_UNITS: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n> = {\n distance: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n buffer: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n area: MEASUREMENT_TOOLS_UNITS_AREA,\n} as const\n","import { useEffect } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport { EventManager } from 'mjolnir.js'\nimport type { Layer } from './providers/layers/types'\nimport { useLayerStore } from './providers/layers/store'\nimport type { LayerProps } from '@deck.gl/core'\n\nexport function useEventManager({\n mapId,\n layerId,\n}: {\n mapId: MapComponentProps['id']\n layerId: NonNullable<Layer['props']['id']>\n}) {\n const basemap = useMapStore((store) => store.maps[mapId]?.basemap)!\n const isLoaded = useMapStore((store) => store.maps[mapId]?.isLoaded)\n const getOverlayInstance = useMapStore((store) => store.getOverlayInstance)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n useEffect(() => {\n let eventManager: EventManager | null = null\n if (isGmaps && isLoaded) {\n const overlayInstance = getOverlayInstance(mapId) as google.maps.Map\n eventManager = new EventManager(overlayInstance.getDiv(), {})\n }\n setLayer(layerId, {\n props: {\n eventManager,\n } as LayerProps & {\n eventManager: EventManager | null\n },\n })\n }, [getOverlayInstance, isGmaps, isLoaded, layerId, mapId, setLayer])\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport type {\n LassoToolsLayerEditProps,\n LassoToolsProps,\n LassoToolsData,\n} from './types'\nimport { getLassoToolsLayer } from './layer'\nimport {\n DEFAULT_MASK_LAYER_PROPS,\n DEFAULT_LASSO_TOOLS_PROPS,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from './const'\nimport { useLassoToolsState } from './provider/provider'\nimport type { FeatureCollection } from 'geojson'\nimport { GeoJsonLayer, type GeoJsonLayerProps } from '@deck.gl/layers'\nimport { MaskExtension } from '@deck.gl/extensions'\nimport { LassoToolsControls } from './lasso-tools-control'\nimport { EditType } from '../const'\nimport { useShallow } from 'zustand/shallow'\nimport { getMaskValues } from './util'\nimport { MAP_MEASURE_LAYER_ID } from '../measurement-tools/const'\nimport type { Layer, LayerProps, PickingInfo } from '@deck.gl/core'\nimport { ViewMode } from '@deck.gl-community/editable-layers'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\n/**\n * LassoTools component provides tools for lasso selection on a map.\n *\n * @param {Object} props - The properties object.\n * @param {ReactNode} props.children - The child components to be rendered.\n * @param {string} props.mapId - The unique identifier for the map.\n * @param {Object} [props.defaultProps] - The default properties for the component.\n * @param {Object} [props.defaultProps.styles] - The default styles for the lasso tools.\n * @param {Object} [props.defaultProps.labels] - The default labels for the lasso tools.\n * @param {Object} [props.layerProps] - The properties for the layer.\n * @param {string} [props.defaultType='mask'] - The default type for the lasso tools.\n *\n * @returns {ReactNode} The rendered children components.\n *\n * @example\n * <LassoTools mapId=\"map1\">\n * <ChildComponent />\n * </LassoTools>\n */\nexport function LassoTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_LASSO_TOOLS_PROPS.styles, labels } = {\n styles: DEFAULT_LASSO_TOOLS_PROPS.styles,\n labels: DEFAULT_LASSO_TOOLS_PROPS.labels,\n },\n layerProps = {},\n defaultType = 'mask',\n}: LassoToolsProps & {\n children?: ReactNode\n}) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)\n const setValue = useLassoToolsState((state) => state.setValue)\n const modeInstance = useLassoToolsState(\n (state) => state.data[mapId]?.modeInstance,\n )!\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n useEventManager({ mapId, layerId: MAP_LASSO_TOOLS_LAYER_ID })\n\n const maskValues = useMemo(() => {\n return getMaskValues({ values })\n }, [values])\n\n const maskFeatureCollection: FeatureCollection = useMemo(() => {\n return {\n type: 'FeatureCollection',\n features: maskValues.map((value) => ({\n type: 'Feature',\n geometry: value.geometry,\n properties: value.properties,\n id: value.id,\n })),\n }\n }, [maskValues])\n\n const maskVisible = useMemo(() => {\n return maskValues\n .filter((value) => value.properties.visible)\n .map((value) => value.id)\n }, [maskValues])\n\n const [data, setData] = useState<FeatureCollection>(maskFeatureCollection)\n const [selectedFeatureIndexes, setSelectedFeatureIndexes] = useState<\n number[]\n >([])\n\n const setDataByValues = useCallback(() => {\n const _data = {\n ...maskFeatureCollection,\n features: maskFeatureCollection.features.filter(\n (feature) => feature.properties?.visible,\n ),\n }\n setData(_data)\n }, [maskFeatureCollection])\n\n useEffect(() => {\n setDataByValues()\n }, [setDataByValues])\n\n const autoIncrement = useRef(maskValues.length)\n\n useEffect(() => {\n addLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n\n return () => {\n removeLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n }\n }, [addLayers, mapId, removeLayers])\n\n const handleCancelEdit = useCallback(() => {\n setDataByValues()\n setSelectedFeatureIndexes([])\n setEnabled(mapId, false)\n }, [mapId, setDataByValues, setEnabled])\n\n const onEdit = useCallback(\n ({ editType, updatedData }: LassoToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n handleCancelEdit()\n return\n }\n\n setData(updatedData)\n\n if (editType === EditType.updateTentativeFeature) {\n return\n }\n\n if (editType === EditType.addFeature) {\n if (modeSelected !== 'edit') {\n autoIncrement.current = autoIncrement.current + 1\n }\n updatedData.features.forEach((feature, index) => {\n feature.properties.label ??= `${labels?.mask} ${autoIncrement.current}`\n feature.properties.index = index\n feature.properties.visible = feature.properties.visible ?? true\n\n const id = (feature.id as string) ?? crypto.randomUUID()\n\n setValue(mapId, id, {\n geometry: feature.geometry,\n properties: feature.properties,\n // visible: true,\n type: defaultType,\n })\n })\n handleCancelEdit()\n }\n },\n [\n defaultType,\n handleCancelEdit,\n labels?.mask,\n mapId,\n modeSelected,\n setValue,\n ],\n )\n\n useEffect(() => {\n const pickable = enabled\n\n const {\n border: guideColorEditing,\n point: pointColorEditing,\n fill: fillColorEditing,\n } = styles.colors.editing\n\n const { border: borderFinished, fill: fillFinished } =\n styles.colors.finished\n\n const layer = getLassoToolsLayer({\n layerProps: {\n ...layerProps.mask,\n pickable,\n data,\n selectedFeatureIndexes,\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n onClick: (e: PickingInfo) => {\n const _e = e as PickingInfo<never, { isGuide: boolean }>\n if (_e.isGuide) {\n return\n }\n setSelectedFeatureIndexes([_e.index])\n },\n },\n getLineColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? guideColorEditing\n : borderFinished,\n getFillColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? fillColorEditing\n : fillFinished,\n pointColor: {\n fill: pointColorEditing,\n outline: guideColorEditing,\n },\n onEdit,\n mode: !pickable ? new ViewMode() : modeInstance,\n })\n\n setLayer(MAP_LASSO_TOOLS_LAYER_ID, layer)\n }, [\n data,\n enabled,\n layerProps.mask,\n maskVisible,\n modeInstance,\n onEdit,\n selectedFeatureIndexes,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n ])\n\n useEffect(() => {\n const props = {\n ...DEFAULT_MASK_LAYER_PROPS,\n data: maskFeatureCollection,\n getFilterValue: (f: LassoToolsData) => Number(maskVisible.includes(f.id)),\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n } as GeoJsonLayerProps\n\n setLayer(DEFAULT_MASK_LAYER_PROPS.id, {\n type: GeoJsonLayer,\n props,\n })\n\n addLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n return () => {\n removeLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n }\n }, [\n addLayers,\n mapId,\n maskFeatureCollection,\n maskVisible,\n removeLayers,\n setLayer,\n ])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable: pickable,\n extensions: [new MaskExtension()],\n maskId:\n !enabled && maskVisible.length ? MAP_MASK_LAYER_ID : undefined,\n } as Partial<GeoJsonLayerProps>,\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, maskVisible.length, setLayer])\n\n return children\n}\n\nLassoTools.Controls = LassoToolsControls\n","import deepmerge from 'deepmerge'\nimport type { LayerType } from '../../types'\nimport { DEFAULT_LAYER_PROPS, MapMeasurementUnitTurf } from './const'\nimport type { MeasurementToolsLayerProps, MeasurementToolsState } from './types'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\n\nexport function getMeasurementToolsLayer({\n mode,\n ...defaultProps\n}: MeasurementToolsLayerProps & {}): LayerType {\n const props = getLayerProps({\n mode,\n ...defaultProps,\n })\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n mode,\n data: [],\n } as unknown as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapMeasurementToolsLayer component.\n * @param layerProps - The layer props.\n * @param locale - The locale.\n * @param unit - The unit.\n * @param onHover - The onHover event handler.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n mode,\n layerProps,\n locale,\n enabled,\n unit,\n onEdit,\n guideColor,\n pointColor,\n textOptions,\n}: MeasurementToolsLayerProps) {\n const _layerProps = deepmerge(layerProps, {\n visible: enabled,\n pickable: enabled,\n modeConfig: {\n // We force distance due to conversion is addressed at feature getText level\n formatTooltip: (_distance: number) => {\n return _distance\n },\n turfOptions: {\n units: MapMeasurementUnitTurf.meters,\n },\n },\n ...(enabled && { onEdit }),\n _subLayerProps: {\n tooltips: {\n outlineColor: [255, 255, 255, 255],\n outlineWidth: 6,\n fontSettings: {\n sdf: true, // needed for the outlineWidth and outlineColor attributes to be effective\n smoothing: 0.2,\n },\n getText: (properties: { text: MeasurementToolsState['distance'] }) => {\n // @ts-expect-error - fix EditGeoJSON methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return mode?.getTooltipText?.({\n meters: properties.text,\n locale,\n unit,\n options: textOptions,\n }) as string\n },\n updateTriggers: {\n getText: [unit, locale, textOptions],\n },\n },\n },\n })\n const defaultLayerProps = deepmerge(DEFAULT_LAYER_PROPS, {\n _subLayerProps: {\n guides: {\n getLineColor: guideColor,\n getFillColor: guideColor.with(3, 20),\n },\n },\n getEditHandlePointColor: pointColor,\n getEditHandlePointOutlineColor: guideColor,\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\nimport {\n DEFAULT_MEASUREMENT_TOOLS_MODES,\n DEFAULT_MEASUREMENT_TOOLS_UNITS,\n MapMeasurementUnitAuto,\n} from '../const'\nimport { CustomMeasureDistanceMode } from '../modes/custom-measurement-distance.class'\n\nexport const createMeasurementToolsStore = (\n initProps: MeasurementToolsProviderProps['values'],\n) => {\n return createStore<MeasurementToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n mapId,\n modeSelected,\n modes = DEFAULT_MEASUREMENT_TOOLS_MODES,\n units = DEFAULT_MEASUREMENT_TOOLS_UNITS,\n distance = 0,\n finished = false,\n locale = 'en',\n positions = [],\n clearLayerOnStart = false,\n unit = MapMeasurementUnitAuto['m-km'],\n enabled = false,\n } = curr\n acc[mapId] = {\n modes,\n units,\n modeSelected,\n distance,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart,\n enabled,\n }\n return acc\n },\n {} as MeasurementToolsStore['measurements'],\n )\n\n return {\n measurements: defaultProps,\n mode: CustomMeasureDistanceMode,\n setModeInstance: (mapId, modeInstance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeInstance,\n },\n },\n }))\n },\n setModeSelected: (mapId, modeSelected) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeSelected,\n },\n },\n }))\n },\n setFinished: (mapId, finished) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n finished,\n },\n },\n }))\n },\n setDistance: (mapId, distance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n distance,\n },\n },\n }))\n },\n setUnit: (mapId, unit) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n unit,\n },\n },\n }))\n },\n setLocale: (mapId, locale) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n locale,\n },\n },\n }))\n },\n setPositions: (mapId, positions) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n positions: [...positions],\n },\n },\n }))\n },\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n enabled,\n },\n },\n }))\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMeasurementToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\n\nconst MeasurementToolsContext = createContext<StoreApi<MeasurementToolsStore>>(\n {} as StoreApi<MeasurementToolsStore>,\n)\n\nexport function MeasurementToolsProvider({\n children,\n values,\n}: PropsWithChildren<MeasurementToolsProviderProps>) {\n const [storeRef] = useState(createMeasurementToolsStore(values))\n\n return (\n <MeasurementToolsContext.Provider value={storeRef}>\n {children}\n </MeasurementToolsContext.Provider>\n )\n}\n\nexport function useMeasurementToolsState<T>(\n selector: (state: MeasurementToolsStore) => T,\n): T {\n const store = useContext(MeasurementToolsContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MeasurementToolsProvider in the tree')\n return useStore(store, selector)\n}\n","import { useCallback } from 'react'\nimport { useMeasurementToolsState } from './provider/provider'\nimport type { MeasurementToolsState } from './types'\n\nexport function useMeasurementTools({ mapId }: { mapId: string }) {\n const modes = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modes,\n )\n\n const units = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.units,\n )\n\n const distance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.distance,\n )\n const _setDistance = useMeasurementToolsState((state) => state.setDistance)\n\n const setDistance = useCallback(\n (distance: number) => _setDistance(mapId, distance),\n [_setDistance, mapId],\n )\n\n const clearLayerOnStart = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.clearLayerOnStart,\n )\n\n const enabled = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.enabled,\n )\n const _setVisibility = useMeasurementToolsState((state) => state.setEnabled)\n\n const setEnabled = useCallback(\n (enabled: MeasurementToolsState['enabled']) =>\n _setVisibility(mapId, enabled),\n [_setVisibility, mapId],\n )\n\n const modeSelected = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeSelected,\n )\n\n const _setModeSelected = useMeasurementToolsState(\n (state) => state.setModeSelected,\n )\n\n const setModeSelected = useCallback(\n (mode: MeasurementToolsState['modeSelected']) => {\n setEnabled(!!mode)\n _setModeSelected(mapId, mode)\n },\n [_setModeSelected, mapId, setEnabled],\n )\n\n const finished = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.finished,\n )\n const _setFinished = useMeasurementToolsState((state) => state.setFinished)\n\n const setFinished = useCallback(\n (finished: MeasurementToolsState['finished']) =>\n _setFinished(mapId, finished),\n [_setFinished, mapId],\n )\n\n const locale = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.locale,\n )\n const _setLocale = useMeasurementToolsState((state) => state.setLocale)\n\n const setLocale = (locale: MeasurementToolsState['locale']) =>\n _setLocale(mapId, locale)\n\n const modeInstance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeInstance,\n )\n\n const _setInstance = useMeasurementToolsState(\n (state) => state.setModeInstance,\n )\n\n const setModeInstance = useCallback(\n (modeInstance: MeasurementToolsState['modeInstance']) =>\n _setInstance(mapId, modeInstance),\n [_setInstance, mapId],\n )\n\n const positions = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.positions,\n )\n const _setPositions = useMeasurementToolsState((state) => state.setPositions)\n\n const setPositions = useCallback(\n (positions: MeasurementToolsState['positions']) =>\n _setPositions(mapId, positions),\n [mapId, _setPositions],\n )\n\n const unit = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.unit,\n )\n const _setUnit = useMeasurementToolsState((state) => state.setUnit)\n\n const setUnit = useCallback(\n (unit: MeasurementToolsState['unit']) => _setUnit(mapId, unit),\n [_setUnit, mapId],\n )\n\n const clearLayer = useCallback(() => {\n modeInstance?.resetClickSequence()\n setPositions([])\n }, [modeInstance, setPositions])\n\n const toggleLayer = useCallback(\n (enabled: boolean) => {\n setEnabled(enabled)\n },\n [setEnabled],\n )\n\n return {\n modes,\n units,\n distance,\n clearLayerOnStart,\n modeSelected,\n enabled,\n finished,\n locale,\n modeInstance,\n positions,\n unit,\n setDistance,\n setModeSelected,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n setModeInstance,\n }\n}\n","import { useCallback, useEffect } from 'react'\nimport type { MeasurementToolsControlProps } from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { getTextLayerFormattedDistance } from './utils'\n\nexport function MeasurementToolsControl({\n mapId,\n textOptions,\n children,\n}: MeasurementToolsControlProps) {\n const {\n modes,\n units,\n distance,\n setDistance,\n clearLayerOnStart,\n modeSelected,\n setModeSelected,\n enabled,\n setEnabled,\n finished,\n setFinished,\n locale,\n setLocale,\n modeInstance,\n setModeInstance,\n positions,\n setPositions,\n unit,\n setUnit,\n clearLayer,\n toggleLayer: _toggleLayer,\n } = useMeasurementTools({ mapId })\n\n useEffect(() => {\n if (modeSelected && modes[modeSelected]) {\n const ModeClass = modes[modeSelected].mode\n setModeInstance(new ModeClass())\n }\n return () => {\n setPositions([])\n }\n }, [modes, modeSelected, setPositions, setModeInstance, setEnabled])\n\n const toggleLayer = useCallback(\n (enable: boolean) => {\n if (enable && (clearLayerOnStart || !finished)) {\n clearLayer()\n }\n _toggleLayer(enable)\n },\n [_toggleLayer, clearLayer, clearLayerOnStart, finished],\n )\n return children({\n mapId,\n distance,\n enabled,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart: !!clearLayerOnStart,\n modeSelected: modeSelected!,\n modes,\n units,\n value: getTextLayerFormattedDistance({\n meters: distance,\n unit,\n locale,\n options: textOptions,\n }),\n modeInstance: modeInstance!,\n setModeSelected,\n setDistance,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n })\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport { DEFAULT_PROPS, MAP_MEASURE_LAYER_ID } from './const'\nimport { EditType } from './../const'\nimport { getMeasurementToolsLayer } from './layer'\nimport { MeasurementToolsControl } from './measurement-tools-control'\nimport type {\n MeasurementToolsLayerEditProps,\n MeasurementToolsProps,\n} from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { useShallow } from 'zustand/shallow'\nimport type { Layer, LayerProps } from '@deck.gl/core'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [MAP_MEASURE_LAYER_ID]\n\nexport function MeasurementTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_PROPS.styles } = {\n styles: DEFAULT_PROPS.styles,\n },\n layerProps,\n textOptions,\n}: MeasurementToolsProps & {\n children?: React.ReactNode\n}) {\n const {\n setDistance,\n clearLayerOnStart,\n enabled,\n finished,\n setFinished,\n locale,\n setPositions,\n unit,\n modeInstance,\n } = useMeasurementTools({ mapId })\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const setController = useMapStore((state) => state.setController)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n useEventManager({ mapId, layerId: MAP_MEASURE_LAYER_ID })\n\n useEffect(() => {\n const previousController = getDeckInstance(mapId)?.props.controller\n\n if (enabled) {\n addLayers(mapId, [MAP_MEASURE_LAYER_ID])\n\n setController(mapId, {\n doubleClickZoom: false,\n })\n }\n\n return () => {\n removeLayers(mapId, [MAP_MEASURE_LAYER_ID])\n setController(mapId, previousController)\n }\n }, [\n addLayers,\n clearLayerOnStart,\n mapId,\n removeLayers,\n enabled,\n getDeckInstance,\n setController,\n ])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable,\n },\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, setLayer])\n\n const onEdit = useCallback(\n ({ editType, editContext }: MeasurementToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n modeInstance!.resetClickSequence()\n return\n }\n\n if (editType === EditType.addPosition) {\n setDistance(editContext.distance)\n }\n\n setFinished(!!editContext.finished)\n\n const positions = editContext.positions\n\n if (positions?.length) {\n setPositions(positions)\n }\n },\n [modeInstance, setDistance, setFinished, setPositions],\n )\n\n useEffect(() => {\n const guideColor = finished ? styles.colors.finished : styles.colors.editing\n const pointColor = finished ? styles.colors.finished : styles.colors.point\n //\n const layer = getMeasurementToolsLayer({\n layerProps: {\n ...layerProps,\n pickable: layerProps?.pickable ?? !finished,\n },\n enabled,\n guideColor,\n pointColor,\n locale,\n onEdit,\n unit,\n mode: modeInstance!,\n textOptions: textOptions,\n })\n\n setLayer(MAP_MEASURE_LAYER_ID, layer)\n }, [\n finished,\n modeInstance,\n layerProps,\n locale,\n onEdit,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n styles.colors.point,\n textOptions,\n unit,\n enabled,\n ])\n\n return children\n}\n\nMeasurementTools.Controls = MeasurementToolsControl\n","import { useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\n\nexport function useLayers({ mapId }: { mapId: MapComponentProps['id'] }) {\n const { layers: layersMap } = useMapStore((state) => state.maps[mapId]!)\n const layers = useLayerStore((state) => state.layers)\n\n const computedLayers = useMemo(() => {\n return layersMap\n .map((layerId) => layers[layerId])\n .filter((layer) => !!layer)\n }, [layers, layersMap])\n\n return computedLayers\n}\n","import { MAP_MEASURE_LAYER_ID } from '../editable/measurement-tools/const'\nimport {\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from '../editable/lasso-tools/const'\nimport type { Layer } from '../providers/layers/types'\n\nconst defaultLastLayerOrder = [\n MAP_MASK_LAYER_ID,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\nexport function sortLayers(layers: Layer[]) {\n const sortedLayers = layers\n .filter((layer) => !defaultLastLayerOrder.includes(layer.props.id!))\n .sort((a, b) => (a.order ?? Infinity) - (b.order ?? Infinity))\n\n const lastLayers = defaultLastLayerOrder\n .map((id) => layers.find((layer) => layer.props.id === id))\n .filter((l) => !!l)\n\n return [...sortedLayers, ...lastLayers]\n}\n","import { useCallback, useMemo, useRef } from 'react'\nimport type {\n Layer,\n MapViewState,\n ViewStateChangeParameters,\n} from '@deck.gl/core'\nimport { DeckGLComponent } from './deckgl'\nimport type { DeckGLComponentProps, MapComponentProps } from '../types'\nimport { useMapStore } from '../providers/map/provider'\nimport { useLayers } from '../use-layers'\nimport { sortLayers } from '../utils/sort-layers'\nimport type { DeckGLProps } from '@deck.gl/react'\n\nconst ZOOM_DEBOUNCE_MS = 200\n\nexport function MapComponent({\n id,\n onLoad,\n onViewStateChange,\n ...props\n}: MapComponentProps) {\n const basemap = useMapStore((state) => state.maps[id]!.basemap)\n const instanceRef = useMapStore((state) => state.maps[id]!.instanceRef)\n const overlayRef = useMapStore((state) => state.maps[id]!.overlayRef)\n const timerRef = useRef<NodeJS.Timeout | null>(null)\n const viewState = useMapStore((state) => state.viewStates[id])\n const controller = useMapStore((state) => state.maps[id]!.controller)\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const setViewState = useMapStore((state) => state.setViewState)\n const setLoad = useMapStore((state) => state.setLoad)\n const setLayersLoad = useMapStore((state) => state.setLayersLoad)\n const updateViewPort = useMapStore((state) => state.updateViewPort)\n\n const layers = useLayers({ mapId: id })\n const computedLayers = useMemo(() => {\n return sortLayers(layers)\n }, [layers])\n\n const handleViewStateChange = useCallback(\n (newViewState: ViewStateChangeParameters<MapViewState>) => {\n const callback = setViewState\n\n if (timerRef.current) {\n clearInterval(timerRef.current)\n }\n timerRef.current = setTimeout(() => {\n updateViewPort(id)\n }, ZOOM_DEBOUNCE_MS)\n\n if (onViewStateChange) {\n onViewStateChange(newViewState, callback)\n return\n }\n\n callback(id, newViewState.viewState)\n },\n [id, onViewStateChange, setViewState, updateViewPort],\n )\n\n const handleLoad = useCallback(\n (value: Parameters<NonNullable<DeckGLComponentProps['onLoad']>>[0]) => {\n setLoad(id, value)\n onLoad?.(value)\n updateViewPort(id)\n },\n [id, onLoad, setLoad, updateViewPort],\n )\n\n const handleAfterRender = useCallback(\n (\n context: Parameters<\n NonNullable<DeckGLComponentProps['onAfterRender']>\n >[0],\n ) => {\n const layers = getDeckInstance(id)?.props.layers\n const areLayersLoaded = !!layers?.every(\n (layer) => (layer as Layer<never>)?.isLoaded,\n )\n setLayersLoad(id, areLayersLoaded)\n props.onAfterRender?.(context)\n },\n [getDeckInstance, id, props, setLayersLoad],\n )\n\n // NOTE: destructuring here to keep the reference to the props object outside of the useCallback\n const _onDragEnd = props.onDragEnd\n const handleDragEnd = useCallback(\n (...args: Parameters<NonNullable<DeckGLProps['onDragEnd']>>) => {\n updateViewPort(id)\n if (_onDragEnd) {\n _onDragEnd(...args)\n }\n },\n [id, updateViewPort, _onDragEnd],\n )\n\n return (\n <DeckGLComponent\n {...props}\n controller={controller}\n id={id}\n layers={computedLayers}\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n basemap={basemap}\n initialViewState={viewState}\n onLoad={handleLoad}\n onViewStateChange={handleViewStateChange}\n onAfterRender={handleAfterRender}\n onDragEnd={handleDragEnd}\n />\n )\n}\n","// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n /* eslint-disable no-prototype-builtins */\n var g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {};\n\n var support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n var encoding = match ? match[1] : 'utf-8';\n reader.readAsText(blob, encoding);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._noBody = true;\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n };\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n try {\n headers.append(key, value);\n } catch (error) {\n console.warn('Response ' + error.message);\n }\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 200, statusText: ''});\n response.ok = false;\n response.status = 0;\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = g.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name));\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value);\n }\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!g.fetch) {\n g.fetch = fetch;\n g.Headers = Headers;\n g.Request = Request;\n g.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","import R from \"cross-fetch\";\nconst h = \"https://gcp-us-east1.api.carto.com\", j = \"v3\", J = \"ps\", g = {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n};\nfunction I(e, n) {\n return Array.isArray(n) ? `${e}=${encodeURIComponent(JSON.stringify(n))}` : n == null || n === \"\" ? \"\" : typeof n == \"object\" ? `${e}=${encodeURIComponent(JSON.stringify(n))}` : `${e}=${encodeURIComponent(n)}`;\n}\nfunction q({\n params: e,\n url: n\n}) {\n if (!e)\n return n;\n const t = Object.entries(e).map(\n ([a, s]) => I(a, s)\n );\n return `${n}?${t.filter(Boolean).join(\"&\")}`;\n}\nfunction w(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nvar A, V;\nfunction C() {\n if (V) return A;\n V = 1;\n var e = function(o) {\n return n(o) && !t(o);\n };\n function n(r) {\n return !!r && typeof r == \"object\";\n }\n function t(r) {\n var o = Object.prototype.toString.call(r);\n return o === \"[object RegExp]\" || o === \"[object Date]\" || l(r);\n }\n var a = typeof Symbol == \"function\" && Symbol.for, s = a ? Symbol.for(\"react.element\") : 60103;\n function l(r) {\n return r.$$typeof === s;\n }\n function u(r) {\n return Array.isArray(r) ? [] : {};\n }\n function i(r, o) {\n return o.clone !== !1 && o.isMergeableObject(r) ? d(u(r), r, o) : r;\n }\n function y(r, o, c) {\n return r.concat(o).map(function(m) {\n return i(m, c);\n });\n }\n function p(r, o) {\n if (!o.customMerge)\n return d;\n var c = o.customMerge(r);\n return typeof c == \"function\" ? c : d;\n }\n function b(r) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(r).filter(function(o) {\n return Object.propertyIsEnumerable.call(r, o);\n }) : [];\n }\n function f(r) {\n return Object.keys(r).concat(b(r));\n }\n function _(r, o) {\n try {\n return o in r;\n } catch {\n return !1;\n }\n }\n function O(r, o) {\n return _(r, o) && !(Object.hasOwnProperty.call(r, o) && Object.propertyIsEnumerable.call(r, o));\n }\n function E(r, o, c) {\n var m = {};\n return c.isMergeableObject(r) && f(r).forEach(function(T) {\n m[T] = i(r[T], c);\n }), f(o).forEach(function(T) {\n O(r, T) || (_(r, T) && c.isMergeableObject(o[T]) ? m[T] = p(T, c)(r[T], o[T], c) : m[T] = i(o[T], c));\n }), m;\n }\n function d(r, o, c) {\n c = c || {}, c.arrayMerge = c.arrayMerge || y, c.isMergeableObject = c.isMergeableObject || e, c.cloneUnlessOtherwiseSpecified = i;\n var m = Array.isArray(o), T = Array.isArray(r), P = m === T;\n return P ? m ? c.arrayMerge(r, o, c) : E(r, o, c) : i(o, c);\n }\n d.all = function(o, c) {\n if (!Array.isArray(o))\n throw new Error(\"first argument should be an array\");\n return o.reduce(function(m, T) {\n return d(m, T, c);\n }, {});\n };\n var U = d;\n return A = U, A;\n}\nvar L = C();\nconst M = /* @__PURE__ */ w(L);\nfunction k(e) {\n return M(\n {\n method: g.get,\n headers: {\n Accept: \"application/json\"\n }\n },\n e\n );\n}\nfunction S(e, n) {\n return M(\n {\n method: g.post,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(n)\n },\n e\n );\n}\nconst B = {\n GET: k,\n POST: S,\n PUT: S,\n PATCH: S,\n DELETE: k\n};\nfunction x({\n body: e,\n accessToken: n,\n method: t,\n ...a\n}) {\n let s = n;\n return s && !s.includes(\"Bearer\") && (s = \"Bearer \" + s), B[t](\n M(\n {\n method: t,\n headers: { ...!!s && { authorization: s } }\n },\n a\n ),\n e\n );\n}\nconst D = 6144;\nasync function $({\n signal: e,\n body: n,\n accessToken: t,\n credentials: a,\n method: s = g.get,\n params: l,\n url: u,\n requestOptions: { getMaxUrlLength: i } = {\n getMaxUrlLength: D\n },\n ...y\n}) {\n let p = q({ url: u, params: l }), b = n, f = s;\n s === g.get && p.length > i && (b = l, f = g.post, p = u);\n const _ = x({\n body: b,\n accessToken: t ?? a?.accessToken,\n method: f,\n ...y\n });\n e && (_.signal = e);\n const O = await R(p, _);\n if (!O.ok) {\n const d = await O.text();\n throw new Error(d);\n }\n return O.status === 204 ? Promise.resolve() : await O.json();\n}\nconst v = {\n running: \"running\",\n pending: \"pending\",\n failure: \"failure\",\n cancelled: \"cancelled\",\n success: \"success\"\n};\nfunction G({\n accessToken: e,\n connection: n,\n credentials: t,\n sources: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/export`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.post,\n body: {\n sources: a\n },\n ...i\n });\n}\nasync function Q({\n accessToken: e,\n connection: n,\n credentials: t,\n query: a,\n metadata: s,\n baseUrl: l = h,\n apiVersion: u = j,\n fetcherOptions: { signal: i, ...y } = {}\n}) {\n const p = e ?? t?.accessToken, b = l ?? t?.apiBaseUrl, f = u ?? t?.apiVersion, _ = `${b}/${f}/sql/${n}/job`;\n return $({\n accessToken: p,\n signal: i,\n url: _,\n method: g.post,\n body: {\n query: a.trim(),\n metadata: s\n },\n ...y\n });\n}\nasync function H({\n url: e,\n accessToken: n,\n credentials: t,\n params: a = {},\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = n ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/lds/${e}`;\n return $({\n signal: u,\n accessToken: y,\n url: f,\n method: g.get,\n params: a,\n ...i\n });\n}\nasync function z({\n accessToken: e,\n connection: n,\n query: t,\n credentials: a,\n params: s = {},\n queryParameters: l,\n method: u = g.get,\n baseUrl: i = h,\n apiVersion: y = j,\n fetcherOptions: { signal: p, ...b } = {}\n}) {\n const f = e ?? a?.accessToken, _ = i ?? a?.apiBaseUrl, O = y ?? a?.apiVersion, E = `${_}/${O}/sql/${n}/query`, d = N(t), U = u !== g.get ? \"body\" : \"params\";\n return $({\n signal: p,\n accessToken: f,\n url: E,\n method: u,\n [U]: {\n q: d,\n ...s,\n queryParameters: l\n },\n ...b\n });\n}\nfunction N(e) {\n return e && e.replace(\n /'([^'\\\\]*(\\\\.[^'\\\\]*)*)'|\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)\"/g,\n (n) => n\n ).replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \").replace(/--.*$/gm, \"\").replace(/\\s+/g, \" \").trim();\n}\nasync function K({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/export/${a}`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.get,\n ...i\n });\n}\nasync function X({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/job/${a}`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.get,\n ...i\n });\n}\nasync function Y({\n accessToken: e,\n connection: n,\n credentials: t,\n metadataFilter: a = void 0,\n createdSince: s = void 0,\n userId: l = void 0,\n baseUrl: u = h,\n apiVersion: i = j,\n fetcherOptions: { signal: y, ...p } = {}\n}) {\n const b = e ?? t?.accessToken, f = u ?? t?.apiBaseUrl, _ = i ?? t?.apiVersion, O = `${f}/${_}/sql/${n}/jobs`;\n return $({\n accessToken: b,\n signal: y,\n url: O,\n method: g.get,\n params: {\n user_id: l,\n created_since: s,\n metadata_filter: a\n },\n ...p\n });\n}\nfunction W({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n metadata: s,\n baseUrl: l = h,\n apiVersion: u = j,\n fetcherOptions: { signal: i, ...y } = {}\n}) {\n const p = e ?? t?.accessToken, b = l ?? t?.apiBaseUrl, f = u ?? t?.apiVersion, _ = `${b}/${f}/sql/${n}/job/${a}`;\n return $({\n accessToken: p,\n signal: i,\n url: _,\n method: g.patch,\n body: {\n metadata: s\n },\n ...y\n });\n}\nexport {\n h as DEFAULT_CARTO_API_URL,\n j as DEFAULT_CARTO_API_VERSION,\n J as DEFAULT_CLIENT_ID,\n g as RequestMethods,\n G as createExport,\n Q as createJob,\n $ as executeFetch,\n H as executeLDS,\n z as executeSQL,\n K as getExport,\n X as getJob,\n v as jobStatus,\n Y as listJobs,\n W as updateJob\n};\n//# sourceMappingURL=index.js.map\n","import { create } from 'zustand'\nimport type {\n AllQuerySource,\n AllRasterSource,\n AllTableSource,\n AllTilesetSource,\n Source,\n SourceStore,\n} from './types'\nimport {\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n DEFAULT_CLIENT_ID,\n} from '@carto/ps-services'\nimport {\n TileFormat,\n WidgetQuerySource,\n WidgetTableSource,\n WidgetTilesetSource,\n WidgetRasterSource,\n addFilter,\n removeFilter,\n type Filters,\n FilterType,\n type SpatialDataType,\n} from '@carto/api-client'\nimport { useMemo } from 'react'\nimport { devtools } from 'zustand/middleware'\n\nexport const useSourceStore = create<SourceStore>()(\n devtools((set, get) => ({\n sources: {},\n filters: {},\n setSource: (id, source) =>\n set(\n (state) => {\n const sources = { ...state.sources }\n\n const widgetClient = sources[id]?.widgets\n if (widgetClient) {\n widgetClient.destroy()\n delete sources[id]!.widgets\n }\n\n if (!source) {\n delete sources[id]\n return { sources }\n }\n\n const previousSource = sources[id]\n const newSource = {\n apiBaseUrl: DEFAULT_CARTO_API_URL,\n clientId: DEFAULT_CLIENT_ID,\n apiVersion: DEFAULT_CARTO_API_VERSION,\n ...previousSource,\n ...source,\n } as Source\n\n const widgets = getWidgetSource({\n source: newSource,\n })\n\n newSource.widgets = widgets\n\n sources[id] = newSource\n\n return { sources }\n },\n undefined,\n 'setSource',\n ),\n removeSource: (id) =>\n set(\n (state) => {\n const sources = { ...state.sources }\n\n const widgetClient = sources[id]?.widgets\n if (widgetClient) {\n widgetClient.destroy()\n delete sources[id]!.widgets\n }\n\n delete sources[id]\n return { sources }\n },\n undefined,\n 'removeSource',\n ),\n setFilters: (id, newFilters) =>\n set(\n (state) => {\n let filters = {} as Filters\n const currentFilters = state.filters[id] ?? {}\n\n if (newFilters.length !== 0) {\n filters = newFilters.reduce((acc, filter) => {\n // important: removeFilter and addFilter preserve the reference to the same object\n if (!('values' in filter) || !filter.values?.length) {\n return removeFilter(acc, filter)\n }\n return addFilter(acc, filter)\n }, currentFilters)\n }\n\n return {\n filters: {\n ...state.filters,\n [id]: { ...filters }, // important: destructuring here to not conservere the reference to the same object\n },\n }\n },\n undefined,\n 'setFilters',\n ),\n removeFilters: (id, column, owner) =>\n set(\n (state) => {\n const currentFilters = state.filters[id] ?? {}\n if (!currentFilters) {\n return state\n }\n\n let filters = {}\n if (column) {\n filters = removeFilter(currentFilters, { column, owner })\n }\n\n return {\n filters: {\n ...state.filters,\n [id]: { ...filters }, // important: destructuring here to not conservere the reference to the same object\n },\n }\n },\n undefined,\n 'removeFilters',\n ),\n invalidateSourcesCache: (ids, { timeout = 500, maxAge = 10 } = {}) => {\n ids.forEach((id) => {\n get().setSource(id, {\n headers: {\n 'Cache-Control': `no-cache, max-age=${maxAge}`,\n },\n })\n })\n\n setTimeout(() => {\n ids.forEach((id) => {\n const source = get().sources[id]\n if (source) {\n delete source.headers\n get().setSource(id, source)\n }\n })\n }, timeout)\n },\n })),\n)\n\n/**\n * Shortcut to grabbing the source from the sources store object\n * @param id - the id of the source you want to grab\n * @returns source object without filters\n */\nexport function useSource(id: string) {\n return useSourceStore((state) => state.sources[id])\n}\n\n/**\n * Shortcut to grabbing the filters from the filters store object\n * @param id - the id of the source the filters are applied to\n * @returns filters object as used in the `@carto/api-client` methods calls\n */\nexport function useFilters(id: string) {\n return useSourceStore((state) => state.filters[id])\n}\n\n/**\n * Returns a source together with its filters, pulling from the separate `sources` and `filters` state objects\n * @param id - the id of the source\n * @returns source object as used in `@carto/api-client`\n */\nexport function useSourceWithFilters(id: string) {\n const source = useSourceStore((state) => state.sources[id])\n const filters = useSourceStore((state) => state.filters[id])\n\n return useMemo(() => {\n if (!source) {\n return undefined\n }\n return {\n ...source,\n filters: filters ?? {},\n }\n }, [source, filters])\n}\n\nexport function getFilterValues(\n filters: Filters | undefined,\n { column, type }: { column: string; type: FilterType },\n) {\n return filters?.[column]?.[type]?.values ?? []\n}\n\nfunction getSpatialDataFallback(source: Source) {\n const [, fallback] = source.type.split('+', 2)\n return {\n spatialDataType: (source.spatialDataType ??\n fallback ??\n 'geo') as SpatialDataType,\n spatialDataColumn: source.spatialDataColumn ?? fallback ?? 'geom',\n }\n}\n\nfunction getWidgetSource({ source }: { source: Source }) {\n const { spatialDataType, spatialDataColumn } = getSpatialDataFallback(source)\n\n const options = {\n query: () => {\n const newSource = source as Source & AllQuerySource\n return new WidgetQuerySource({\n ...newSource,\n accessToken: '',\n sqlQuery: newSource.data,\n spatialDataType,\n spatialDataColumn,\n })\n },\n table: () => {\n const newSource = source as Source & AllTableSource\n return new WidgetTableSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType,\n spatialDataColumn,\n })\n },\n tileset: () => {\n const newSource = source as Source & AllTilesetSource\n return new WidgetTilesetSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n tileFormat: newSource.tileFormat ?? TileFormat.BINARY,\n spatialDataType,\n spatialDataColumn,\n })\n },\n raster: () => {\n const newSource = source as Source & AllRasterSource\n\n if (!newSource.rasterMetadata) {\n return null\n }\n\n return new WidgetRasterSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: 'quadbin',\n spatialDataColumn: 'quadbin',\n rasterMetadata: newSource.rasterMetadata,\n })\n },\n }\n\n const key = source.type.split('+')[0] as keyof typeof options\n const option = options[key]\n\n return option?.() as Source['widgets']\n}\n","import { useFilters } from '../providers/sources/store'\nimport { useMemo } from 'react'\nimport deepmerge from 'deepmerge'\nimport { addFilter, type AddFilterOptions } from '@carto/api-client'\n\nexport function useFiltersMerged(\n sourceId: string,\n additionalFilter?: AddFilterOptions[],\n) {\n const filters = useFilters(sourceId)\n\n return useMemo(() => {\n if (!additionalFilter?.length) return filters\n const computedFilters = additionalFilter.reduce((acc, filter) => {\n return addFilter(acc, filter)\n }, {})\n return deepmerge(filters ?? {}, computedFilters) as typeof filters\n }, [filters, additionalFilter])\n}\n","import { useMemo } from 'react'\nimport { useSource } from '../providers/sources/store'\n\nexport function useWidgetModel(accessToken: string, sourceId: string) {\n const source = useSource(sourceId)\n return useMemo(() => {\n const widgetModel = source?.widgets\n if (!widgetModel || !accessToken) {\n return null\n }\n // eslint-disable-next-line react-hooks/react-compiler\n widgetModel.props.accessToken = accessToken\n return widgetModel\n }, [accessToken, source])\n}\n","const RELEVANT_HEADERS = ['authorization', 'cache-control']\n\nexport function getRelevantHeaders(\n headers: Record<string, string> | undefined,\n) {\n if (!headers || typeof headers !== 'object') {\n return ''\n }\n\n const entries = Object.fromEntries(\n Object.entries(headers).filter(([key]) =>\n RELEVANT_HEADERS.includes(key.toLowerCase()),\n ),\n )\n\n return JSON.stringify(entries)\n}\n","import type { ModelProps } from './types'\nimport { useFiltersMerged } from './use-filters-merged'\nimport { useWidgetModel } from './use-widget-model'\nimport { getRelevantHeaders } from './utils/get-relevant-headers'\n\nexport function useCommonModel<TRequestOptions, TResponse>({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n}: Pick<\n ModelProps<TRequestOptions, TResponse>,\n 'accessToken' | 'sourceId' | 'additionalFilter' | 'widgetProps'\n>) {\n const mergedFilters = useFiltersMerged(sourceId, additionalFilter)\n const widgetModel = useWidgetModel(accessToken, sourceId)\n\n const queryKey = [\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.queryParameters,\n mergedFilters,\n getRelevantHeaders(widgetModel?.props.headers),\n ]\n\n return { mergedFilters, widgetModel, queryKey }\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n CategoryRequestOptions,\n CategoryResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useCategories({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<CategoryRequestOptions, CategoryResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['categories', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getCategories({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function CategoriesModel({\n children,\n ...modelProps\n}: ModelProps<CategoryRequestOptions, CategoryResponse> & {\n children: (props: UseQueryResult<CategoryResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useCategories(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n FeaturesRequestOptions,\n FeaturesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useFeatures({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['features', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getFeatures({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FeaturesModel({\n children,\n ...modelProps\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse> & {\n children: (props: UseQueryResult<FeaturesResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFeatures(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { FormulaRequestOptions, FormulaResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useFormula({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FormulaRequestOptions, FormulaResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['formula', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getFormula({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FormulaModel({\n children,\n ...modelProps\n}: ModelProps<FormulaRequestOptions, FormulaResponse> & {\n children: (props: UseQueryResult<FormulaResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFormula(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n HistogramRequestOptions,\n HistogramResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useHistogram({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<HistogramRequestOptions, HistogramResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['histogram', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getHistogram({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function HistogramModel({\n children,\n ...modelProps\n}: ModelProps<HistogramRequestOptions, HistogramResponse> & {\n children: (props: UseQueryResult<HistogramResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useHistogram(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { RangeRequestOptions, RangeResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useRange({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<RangeRequestOptions, RangeResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['range', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getRange({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function RangeModel({\n children,\n ...modelProps\n}: ModelProps<RangeRequestOptions, RangeResponse> & {\n children: (props: UseQueryResult<RangeResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useRange(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { ScatterRequestOptions, ScatterResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useScatter({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<ScatterRequestOptions, ScatterResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['scatter', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getScatter({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function ScatterModel({\n children,\n ...modelProps\n}: ModelProps<ScatterRequestOptions, ScatterResponse> & {\n children: (props: UseQueryResult<ScatterResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useScatter(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { TableRequestOptions, TableResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useTable({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TableRequestOptions, TableResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['table', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getTable({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TableModel({\n children,\n ...modelProps\n}: ModelProps<TableRequestOptions, TableResponse> & {\n children: (props: UseQueryResult<TableResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useTable(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useTimeSeries({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['timeSeries', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getTimeSeries({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TimeSeriesModel({\n children,\n ...modelProps\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse> & {\n children: (\n props: UseQueryResult<TimeSeriesResponse, Error>,\n ) => React.ReactNode\n}) {\n const queryResult = useTimeSeries(modelProps)\n return children(queryResult)\n}\n","export const clientID = 'ps'\n","import type { PropsWithChildren } from 'react'\nimport type { MapProviderProps } from './providers/map/types'\nimport type { LassoToolsProviderProps } from './editable/lasso-tools/provider/types'\nimport type { MeasurementToolsProviderProps } from './editable/measurement-tools/provider/types'\nimport { MapProvider } from './providers/map/provider'\nimport { LassoToolsProvider } from './editable/lasso-tools/provider/provider'\nimport { MeasurementToolsProvider } from './editable/measurement-tools/provider/provider'\n\ninterface Props {\n maps: MapProviderProps['values']\n lassoTools?: LassoToolsProviderProps['values']\n measureTools?: MeasurementToolsProviderProps['values']\n}\n\nexport function MapsProvider({\n children,\n maps,\n lassoTools = [],\n measureTools = [],\n}: PropsWithChildren<Props>) {\n return (\n <MapProvider values={maps}>\n <LassoToolsProvider values={lassoTools}>\n <MeasurementToolsProvider values={measureTools}>\n {children}\n </MeasurementToolsProvider>\n </LassoToolsProvider>\n </MapProvider>\n )\n}\n","import { useCallback, useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { sortLayers } from './utils/sort-layers'\nimport type { Layer, LayerLegend } from './providers/layers/types'\n\nexport function useLegend<T>(\n layersId: string[],\n callback: (layer: Layer) => T,\n) {\n const layers = useLayerStore((state) => state.layers)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const layersById = useMemo(() => {\n return sortLayers(\n layersId.map((id) => layers[id]).filter((l): l is Layer => !!l?.legend),\n ).toReversed()\n }, [layers, layersId])\n\n const legend = useMemo(() => {\n return layersById.map(callback)\n }, [callback, layersById])\n\n const onChangeVisibility = useCallback(\n ({\n id,\n visible,\n ...legend\n }: {\n id: string\n visible: boolean\n } & Partial<LayerLegend>) => {\n setLayer(id, {\n props: { visible },\n legend,\n })\n },\n [setLayer],\n )\n\n const onChangeRowCollapse = useCallback(\n ({ id, collapsed }: { id: string; collapsed: boolean }) => {\n setLayer(id, {\n legend: {\n collapsed,\n },\n })\n },\n [setLayer],\n )\n\n const onChangeOpacity = useCallback(\n ({ id, opacity }: { id: string; opacity: number }) => {\n setLayer(id, {\n props: { opacity },\n })\n },\n [setLayer],\n )\n\n return {\n legend,\n onChangeVisibility,\n onChangeOpacity,\n onChangeRowCollapse,\n }\n}\n","import { useCallback, useState } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport type { MapRef } from 'react-map-gl/maplibre'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport html2canvas from 'html2canvas'\n\nexport function useMapScreenshot({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const [screenshot, setScreenshot] = useState<string | undefined>(undefined)\n const [isLoading, setIsLoading] = useState(false)\n const [error, setError] = useState<Error | undefined>(undefined)\n\n const basemap = useMapStore((state) => state.maps[mapId]?.basemap)!\n const deckInstanceFn = useMapStore((state) => state.getDeckInstance)\n const overlayInstanceFn = useMapStore((state) => state.getOverlayInstance)\n\n const areLayersLoaded = useMapStore((state) => state.areLayersLoaded[mapId])!\n const isLoaded = useMapStore((state) => state.maps[mapId]?.isLoaded)!\n\n const isAllLoaded = isLoaded && areLayersLoaded\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const _takeScreenshot = useCallback(async () => {\n const deckInstance = deckInstanceFn(mapId)!\n const overlayInstance = overlayInstanceFn(mapId)!\n\n try {\n const canvas = document.createElement('canvas')\n canvas.width = deckInstance.width ?? 0\n canvas.height = deckInstance.height ?? 0\n\n const context = canvas.getContext('2d')\n\n if (isGmaps) {\n const _overlayInstance = overlayInstance as google.maps.Map\n\n if ((_overlayInstance.getRenderingType() as string) !== 'RASTER') {\n throw new Error('Only raster type is supported for Google Maps')\n }\n\n const data = await html2canvas(_overlayInstance.getDiv(), {\n useCORS: true,\n })\n context?.drawImage(data, 0, 0, deckInstance.width, deckInstance.height)\n } else {\n const _overlayInstance = overlayInstance as MapRef\n _overlayInstance.redraw()\n context?.drawImage(\n _overlayInstance.getMap().getCanvas(),\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n }\n\n deckInstance?.redraw('screenshot')\n context?.drawImage(\n deckInstance.getCanvas()!,\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n\n const data = canvas.toDataURL()\n\n setScreenshot(data)\n } catch (err) {\n setError(err as Error)\n\n // eslint-disable-next-line\n console.error(err)\n } finally {\n setIsLoading(false)\n }\n }, [deckInstanceFn, isGmaps, mapId, overlayInstanceFn])\n\n const takeScreenshot = useCallback(() => {\n setError(undefined)\n setIsLoading(true)\n if (!isAllLoaded) return\n\n void _takeScreenshot()\n }, [_takeScreenshot, isAllLoaded])\n\n return {\n takeScreenshot,\n isLoading,\n screenshot,\n error,\n }\n}\n","import { useMemo } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport {\n createViewportSpatialFilter,\n type SpatialFilter,\n} from '@carto/api-client'\nimport { useLassoToolsState } from './editable/lasso-tools/provider/provider'\nimport { getMaskValues } from './editable/lasso-tools/util'\nimport { multiPolygon } from '@turf/turf'\nimport type { Polygon, Position } from 'geojson'\n\nexport function useSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewportSpatialFilter = useViewportSpatialFilter({ mapId })\n\n const lassoToolsSpatialFilter = useLassoToolsSpatialFilter({\n mapId,\n }) as unknown as SpatialFilter | undefined\n\n const staticSpatialFilter = useStaticSpatialFilter({ mapId })\n\n return {\n spatialFilter:\n lassoToolsSpatialFilter ?? staticSpatialFilter ?? viewportSpatialFilter,\n staticSpatialFilter,\n lassoToolsSpatialFilter,\n viewportSpatialFilter,\n }\n}\n\nexport function useViewportSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewport = useMapStore((state) => state.viewports[mapId])\n\n return useMemo(() => {\n if (!viewport) return\n return createViewportSpatialFilter(viewport.getBounds())\n }, [viewport])\n}\n\nexport function useLassoToolsSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const _values = useLassoToolsState((state) => state.data[mapId]?.values)\n\n return useMemo(() => {\n const values = getMaskValues({ values: _values }).filter(\n (value) => value.properties.visible,\n )\n\n if (!values?.length) return\n\n return multiPolygon(\n values.map((value) => (value.geometry as Polygon).coordinates),\n ).geometry\n }, [_values])\n}\n\nexport function useStaticSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}): SpatialFilter | undefined {\n const spatialFilter = useMapStore((state) => state.spatialFilter[mapId])\n\n return useMemo(() => {\n if (!spatialFilter || !Object.keys(spatialFilter).length) return\n\n // Flatten the array to match the expected Position[][][] type\n const coordinates: Position[][][] = Object.values(spatialFilter)\n .filter((value) => value !== null && value !== undefined)\n .flatMap((geom) => {\n // If it's a Polygon, wrap its coordinates in an array to make it compatible with MultiPolygon format\n if (geom.type === 'Polygon') {\n return [geom.coordinates]\n }\n\n // Otherwise, validate or transform `geom` to ensure it matches the expected format\n return geom.coordinates\n })\n\n return multiPolygon(coordinates).geometry\n }, [spatialFilter])\n}\n","export const formatterTypes = {\n currency: 'CURRENCY',\n default: 'DEFAULT',\n number: 'NUMBER',\n} as const\n","import { formatCurrency, formatNumber } from '@carto/ps-utils'\nimport { formatterTypes } from './const'\nimport type { Formatters, Value } from './types'\n\nexport const FORMATTERS: Formatters = {\n [formatterTypes.currency]: {\n type: formatterTypes.currency,\n format: (value: Value, locale: string) => {\n return formatCurrency(value as number, locale)\n },\n },\n [formatterTypes.number]: {\n type: formatterTypes.number,\n format: (value: Value, locale: string) => {\n return formatNumber(value as number, locale)\n },\n },\n [formatterTypes.default]: {\n type: formatterTypes.default,\n format: (value: Value) => {\n return value.toLocaleString()\n },\n },\n}\n","import { formatterTypes } from './const'\nimport { FORMATTERS } from './object-to-html.contants'\nimport type { FieldFormatter, ObjectToHtmlOptions, Value } from './types'\n\n/**\n * Returns a string with the HTML content for an object.\n *\n * @param {ObjectToHtmlOptions} - The options of the formatter.\n *\n * @return {string}\n *\n * @defaultValues\n *\n * | Prop | Value |\n * | --- | --- |\n * | `formatters` | `{}` |\n * | `includeColumns` | `Object.keys(properties)` |\n * | `locale` | `en-US` |\n * | `showColumnName` | `true` |\n * | `title` | `''` |\n * | `getColumnName` | `Function` |\n * | `getFieldHtml` | `Function` |\n * | `getTitle` | `Function` |\n * | `getValue` | `Function` |\n *\n * @example\n * const properties = {\n * name: 'I am a feature',\n * price: 100,\n * }\n *\n * const html = objectToHtml({\n * properties,\n * formatters: {\n * price: 'CURRENCY',\n * },\n * locale: 'es-ES',\n * })\n */\nexport function objectToHtml<T extends Record<string, Value>>({\n properties,\n formatters = {},\n includeColumns = Object.keys(properties),\n locale = 'en-US',\n showColumnName = true,\n title,\n getColumnName = _getColumnName,\n getFieldHtml = _getFieldHtml,\n getTitle = _getTitle,\n getValue = _getValue,\n}: ObjectToHtmlOptions<T>): string {\n const header = title ? getTitle(title) : ''\n\n const propNames = includeColumns\n\n const body = propNames.reduce((acc, cur) => {\n const formatter = formatters[cur]!\n const value = properties[cur]!\n\n const valueTransformed = getValue(value, locale, formatter)\n const columnName = showColumnName ? getColumnName(cur) : ''\n\n return acc + getFieldHtml(columnName, valueTransformed)\n }, '')\n\n return header + body\n}\n\nfunction _getTitle(title: string) {\n return `<h3 style=\"margin: 0\"><strong>${title}</strong></h3></br>`\n}\n\nfunction _getFieldHtml(columnName: string, value: Value) {\n const propHtml = `${columnName}${value}</br>`\n\n return propHtml\n}\n\nfunction _getValue(value: Value, locale: string, formatter?: FieldFormatter) {\n try {\n const format = getFormatterFunction(formatter)\n return format(value, locale)\n } catch {\n return value as string\n }\n}\n\nfunction getFormatterFunction(formatter?: FieldFormatter) {\n if (typeof formatter === 'function') {\n return formatter\n }\n\n const fn =\n (formatter && FORMATTERS[formatter]) ?? FORMATTERS[formatterTypes.default]\n\n return fn.format\n}\n\nfunction _getColumnName(propName: string) {\n return `<strong>${propName}</strong>: `\n}\n","import type { Layer } from '../providers/layers/types'\n\nexport function mappingLegendMeridian<T>(layer: Layer) {\n return {\n collapsed: layer.legend?.collapsed,\n collapsible: layer.legend?.collapsible,\n helperText: layer.legend?.helperText,\n id: layer.props.id,\n legend: layer.legend?.variables,\n maxZoom: layer.legend?.maxZoom,\n minZoom: layer.legend?.minZoom,\n opacity: layer.props.opacity ?? 1,\n showOpacityControl: layer.legend?.opacityControl,\n switchable: layer.legend?.switchable,\n title: layer.name,\n visible: layer.props.visible ?? true,\n } as T\n}\n","import type { ZoomControl } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function ZoomControls({ children, mapId }: ZoomControl) {\n const { zoom, maxZoom, minZoom } = useMapStore(\n (state) => state.viewStates[mapId]!,\n )\n const isLoaded = useMapStore((state) => state.areLayersLoaded[mapId])\n\n const setZoom = useMapStore((state) => state.setZoom)\n const flyTo = useMapStore((state) => state.flyTo)\n const resetViewState = useMapStore((state) => state.resetViewState)\n\n return children({\n zoom,\n maxZoom,\n minZoom,\n isLoading: !isLoaded,\n setZoom: useCallback((zoom) => setZoom(mapId, zoom), [mapId, setZoom]),\n flyTo: useCallback(\n (viewState: Parameters<typeof flyTo>[1]) => flyTo(mapId, viewState),\n [flyTo, mapId],\n ),\n resetViewState: useCallback(\n () => resetViewState(mapId),\n [resetViewState, mapId],\n ),\n })\n}\n","import {\n RequestMethods,\n executeFetch,\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n} from '@carto/ps-services'\nimport type { GetQueryStats } from './types'\nimport type { StatsResponse } from './types'\n\nexport async function getQueryStats<Attribute extends string | number>({\n baseUrl = DEFAULT_CARTO_API_URL,\n connection,\n accessToken,\n query,\n attribute,\n fetcherOptions: { signal, ...other } = {},\n queryParameters,\n params,\n apiVersion = DEFAULT_CARTO_API_VERSION,\n}: GetQueryStats) {\n const statsUrl = `${baseUrl}/${apiVersion}/stats/${connection}/${attribute}`\n\n return executeFetch<StatsResponse<Attribute>>({\n accessToken,\n signal,\n url: statsUrl,\n method: RequestMethods.get,\n params: { q: query, ...queryParameters, ...params },\n ...other,\n })\n}\n","import {\n RequestMethods,\n executeFetch,\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n} from '@carto/ps-services'\nimport type { GetTableStats } from './types'\nimport type { StatsResponse } from './types'\n\nexport async function getTableStats<Attribute extends string | number>({\n baseUrl = DEFAULT_CARTO_API_URL,\n connection,\n accessToken,\n table,\n attribute,\n params,\n fetcherOptions: { signal, ...other } = {},\n apiVersion = DEFAULT_CARTO_API_VERSION,\n}: GetTableStats) {\n const statsUrl = `${baseUrl}/${apiVersion}/stats/${connection}/${table}/${attribute}`\n\n return executeFetch<StatsResponse<Attribute>>({\n accessToken,\n signal,\n url: statsUrl,\n method: RequestMethods.get,\n params: { ...params },\n ...other,\n })\n}\n","import { vectorTilesetSource } from '@carto/api-client'\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query'\nimport { getQueryStats } from './get-query-stats'\nimport { getTableStats } from './get-table-stats'\nimport type { QuerySource, Source } from '../providers/sources/types'\nimport type { Stats, StatsResponse } from './types'\n\nexport function useStats<Attribute extends string | number>({\n source,\n attribute,\n accessToken,\n params,\n fetcherOptions,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: {\n source: Source | undefined\n attribute: Stats['attribute']\n accessToken: Stats['accessToken']\n params?: Stats['params']\n fetcherOptions?: Stats['fetcherOptions']\n useQueryProps?: Omit<\n UseQueryOptions<StatsResponse<Attribute>, Error>,\n 'queryKey' | 'queryFn'\n >\n}) {\n return useQuery<StatsResponse<Attribute>, Error>({\n queryKey: [source, attribute],\n queryFn: () =>\n getQueryFunction<Attribute>({\n source: source!,\n params,\n attribute,\n accessToken: accessToken!,\n fetcherOptions,\n }),\n select(data) {\n return {\n ...data,\n type: data.type.toLowerCase(),\n }\n },\n enabled: !!source && enabled,\n ...useQueryProps,\n })\n}\n\nfunction getQueryFunction<Attribute extends string | number>({\n source,\n params,\n attribute,\n accessToken,\n fetcherOptions,\n}: {\n source: Source\n params?: Stats['params']\n attribute: Stats['attribute']\n accessToken: NonNullable<Stats['accessToken']>\n fetcherOptions?: Stats['fetcherOptions']\n}) {\n if (source.type.startsWith('query')) {\n return getQueryStats<Attribute>({\n connection: source.connectionName,\n baseUrl: source.apiBaseUrl,\n apiVersion: source.apiVersion,\n accessToken,\n params,\n query: source.data,\n queryParameters: (source as QuerySource).queryParameters,\n attribute,\n fetcherOptions,\n })\n }\n if (source.type.startsWith('table')) {\n return getTableStats<Attribute>({\n connection: source.connectionName,\n baseUrl: source.apiBaseUrl,\n apiVersion: source.apiVersion,\n params,\n accessToken,\n table: source.data,\n attribute,\n fetcherOptions,\n })\n }\n if (source.type.startsWith('tileset')) {\n return getStatsFromTileset<Attribute>({\n source,\n accessToken,\n target: source.data,\n attribute,\n })\n }\n\n throw new Error(`Unsupported source type: ${source.type}`)\n}\n\n// Catch Stats from tileset\n\nasync function getStatsFromTileset<Attribute extends string | number>({\n source,\n accessToken,\n target,\n attribute,\n}: {\n source: Source\n accessToken: string\n target: string\n attribute: string\n}) {\n const tileJson = await vectorTilesetSource({\n connectionName: source.connectionName,\n apiBaseUrl: source.apiBaseUrl,\n accessToken: accessToken,\n clientId: source.clientId,\n tableName: target,\n })\n if (!tileJson?.tilestats?.layers?.[0]?.attributes) {\n throw new Error(`${attribute} not found in tileset attributes`)\n }\n\n const tileStatsAttributes = tileJson.tilestats.layers[0].attributes\n const columnStats = tileStatsAttributes.find((p) => p.attribute === attribute)\n\n if (!columnStats) {\n throw new Error(`${attribute} not found in tileset attributes`)\n }\n\n return columnStats as StatsResponse<Attribute>\n}\n"],"names":["GmapsBasemap","roadmap","satellite","hybrid","CartoBasemaps","darkMatter","positron","voyager","CartoBasemapURL","MapsTypes","maplibre","googleMaps","MAPS_BASEMAP","url","type","dark","getCursorDefault","isDragging","isHovering","getTooltipDefault","info","html","style","padding","background","MapLibre","t0","$","_c","controller","getCursor","getTooltip","id","instanceRef","layers","mapStyle","onLoad","onViewStateChange","overlayRef","parameters","rest","t1","t2","filter","_temp","map","_temp2","_layers","t3","t4","value","t5","depthTest","t6","MapReferences","t7","t8","jsx","Map","_temp3","t9","MapProvider","jsxs","DeckGL","classList","document","querySelector","remove","Layer","props","l","default","mapLibre","useMapLibre","DeckGlOverlay","Symbol","for","GoogleMapsOverlay","interleaved","deck","useMap","setMap","finalize","useEffect","setProps","GoogleMaps","basemap","gmapsProps","apiKey","APIProviderProps","_gmapsProps","_controller","useMemo","dragPan","doubleClickZoom","scrollZoom","mappingGmapsToDeck","useCallback","detail","center","zoom","heading","tilt","latitude","lat","longitude","lng","bearing","pitch","handleViewStateChange","newViewState","current","_deck","viewState","_viewState","width","height","interactionState","isZooming","APIProvider","initialViewState","gmaps","DeckGLComponent","undefined","isLoaded","setLoaded","useState","isGmaps","t10","e","index","state","loaded","i","handleLoad","t11","t12","t13","t14","isAllLoaded","every","t15","loaded_0","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","options","deepmerge","defaultArrayMerge","target","source","element","getMergeFunction","key","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","next","deepmerge_1","cjs","createMapSlice","initProps","defaultProps","reduce","acc","curr","set","get","maps","setBasemap","currentType","newType","setLoad","getOverlayInstance","getDeckInstance","getViewState","getViewports","rect","getViewport","getBounds","bounds","store","newBounds","WebMercatorViewport","fitBounds","boundsOptions","viewStateOptions","addLayers","Set","removeLayers","layer","includes","setController","currentController","newController","createAreLayersLoaded","areLayersLoaded","setLayersLoad","createViewStateSlice","initialViewStates","viewStates","viewports","updateViewPort","vp","setViewState","setInitialViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonSlice","_","flyTo","finalViewState","loadInitialViewState","resetViewState","createSpatialFilterSlice","spatialFilter","setSpatialFilter","mapId","structuredClone","createMapStore","createStore","args","MapContext","createContext","children","values","storeRef","useMapStore","selector","useContext","Object","keys","length","Error","useStore","BasemapsControls","basemap_0","state_0","EditType","addFeature","addTentativePosition","updateTentativeFeature","cancel","finish","addPosition","CustomCompositeEditMode","CompositeMode","constructor","TranslateMode","ModifyMode","handleKeyUp","event","resetClickSequence","onEdit","updatedData","data","editType","editContext","MAP_LASSO_TOOLS_LAYER_ID","MAP_MASK_LAYER_ID","DEFAULT_LASSO_TOOLS_LAYER_PROPS","billboard","editHandlePointRadiusUnits","editHandlePointRadiusMinPixels","editHandlePointRadiusMaxPixels","editHandlePointStrokeWidth","getEditHandlePointRadius","stroked","filled","lineWidthUnits","getLineWidth","lineWidthMinPixels","DEFAULT_LASSO_TOOLS_COLORS","editing","border","fill","point","finished","DEFAULT_LASSO_TOOLS_PROPS","styles","colors","labels","mask","EXTENSION_FILTER","DataFilterExtension","filterSize","DEFAULT_MASK_LAYER_PROPS","operation","pickable","visible","extensions","filterRange","DEFAULT_LASSO_TOOLS_MODES","polygon","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayerStore","create","setLayer","_layer","extension","some","equals","push","legend","updateTriggers","removeLayer","EVENT_TYPES","CustomEditableGeojsonLayer","EditableGeoJsonLayer","updateState","oldProps","context","changeFlags","eventManager","_removeEventHandlers","_addEventHandlers","_getEventManager","eventHandler","_editableLayerState","eventType","on","priority","_eventManager","off","getLassoToolsLayer","getLayerProps","layerProps","getLineColor","getFillColor","pointColor","_layerProps","modeConfig","preventOverlappingLines","defaultLayerProps","getTentativeLineColor","getTentativeFillColor","getEditHandlePointColor","getEditHandlePointOutlineColor","outline","dataComparator","oldData","features","createLassoToolsStore","enabled","modeInstance","modes","modeSelected","setEnabled","setValue","_value","setVisibility","valueId","properties","setModeSelected","setModeInstance","LassoToolsContext","LassoToolsProvider","useLassoToolsState","LassoToolsControls","Mode","serialize","label","handleModeSelected","getMaskValues","convert","configureMeasurements","convertArea","area","validateUnitForAreaConversion","unit","CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA","validUnits","join","convertMetersTo","distance","dimension","unitFrom","CONVERSIONS_UNITS","MapMeasurementUnit","meter","unitTo","from","to","CONVERSIONS_UNITS_AREA","DEFAULT_AUTO_SPLIT_NUMBER","getTextLayerFormattedDistance","meters","locale","autoSplitNumber","intlOptions","isMetricSystem","MapMeasurementUnitAuto","isImperialSystem","isAuto","_unit","_number","isSmallDistance","convertUnit","kilometer","INTL_UNITS","feet","mile","formatNumber","unitDisplay","notation","minimumFractionDigits","maximumFractionDigits","getDeckController","hasDoubleClickZoom","buildTooltip","position","formatTooltip","turfOptions","units","text","parseFloat","toString","toFixed","measurementCallback","CustomMeasureAreaMode","MeasureAreaMode","_isMeasuringSessionFinished","tooltips","resultPolygon","handleClick","picks","clickedEditHandle","getPickedEditHandle","clickSequence","getClickSequence","positionAdded","allowOverlapping","addClickSequence","latestClickSequence","polygonCoordinates","coordinates","isFinalizedEdition","finalizeEdition","mapCoords","resetEdition","updateTooltip","centroid","geometry","handlePointerMove","tentativeGuide","getTentativeGuide","getGuides","getTooltips","positionIndexes","overlappingLines","currentLine","otherLines","slice","intersectingPoints","lineIntersect","polygonToAdd","selectedIndexes","editAction","getAddFeatureOrBooleanPolygonAction","positions","getTooltipText","CustomMeasureBufferMode","_currentArea","areaCircle","checkAndFinishPolygon","tentativeFeature","onUpdateCursor","radius","CustomMeasureDistanceMode","MeasureDistanceMode","_currentDistance","stopPropagation","clickSequenceLength","_currentTooltips","MAP_MEASURE_LAYER_ID","DEFAULT_LAYER_PROPS","_subLayerProps","fontFamily","fontWeight","getSize","lineHeight","getPixelOffset","getTextAnchor","getAlignmentBaseline","guides","DEFAULT_COLORS","DEFAULT_PROPS","centimeter","milimeter","yard","MapMeasurementUnitArea","squareMeter","squareKilometer","squareMile","squareFeet","MapMeasurementUnitTurf","MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES","system","MEASUREMENT_TOOLS_UNITS_DISTANCE","MEASUREMENT_TOOLS_UNITS_AREA","DEFAULT_MEASUREMENT_TOOLS_MODES","buffer","DEFAULT_MEASUREMENT_TOOLS_UNITS","useEventManager","layerId","store_0","overlayInstance","getDiv","store_1","EXCEPTED_LAYER_IDS","LassoTools","defaultType","mapLayers","useShallow","mapLayersVisibilityRef","useRef","maskValues","maskFeatureCollection","maskVisible","setData","selectedFeatureIndexes","setSelectedFeatureIndexes","setDataByValues","_data","feature","autoIncrement","handleCancelEdit","forEach","crypto","randomUUID","guideColorEditing","pointColorEditing","fillColorEditing","borderFinished","fillFinished","getFilterValue","onClick","_e","isGuide","d","ViewMode","f","Number","GeoJsonLayer","currentLayer","find","MaskExtension","maskId","Controls","getMeasurementToolsLayer","guideColor","textOptions","_distance","outlineColor","outlineWidth","fontSettings","sdf","smoothing","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_1","_setDistance","distance_0","state_3","state_4","_setVisibility","enabled_0","state_6","_setModeSelected","state_8","_setFinished","_temp4","finished_0","state_10","_setLocale","_temp5","locale_0","state_12","_setInstance","_temp6","modeInstance_0","t16","state_14","_setPositions","_temp7","t17","positions_0","t18","state_16","_setUnit","_temp8","t19","unit_0","t20","clearLayer","t21","enabled_1","toggleLayer","t22","state_17","state_15","state_13","state_11","state_9","state_7","state_5","state_2","MeasurementToolsControl","_toggleLayer","ModeClass","enable","MeasurementTools","previousController","l_0","useLayers","layersMap","defaultLastLayerOrder","sortLayers","sortedLayers","sort","a","b","order","Infinity","lastLayers","ZOOM_DEBOUNCE_MS","MapComponent","timerRef","computedLayers","callback","clearInterval","setTimeout","onAfterRender","handleAfterRender","_onDragEnd","onDragEnd","handleDragEnd","__global__","global","__globalThis__","F","globalThis","exports","g","support","isDataView","obj","viewClasses","isArrayBufferView","normalizeName","name","normalizeValue","iteratorFor","items","iterator","Headers","headers","header","oldValue","thisArg","consumed","body","fileReaderReady","reader","resolve","reject","readBlobAsArrayBuffer","blob","promise","readBlobAsText","match","encoding","readArrayBufferAsText","buf","view","chars","bufferClone","Body","rejected","isConsumed","decode","methods","normalizeMethod","method","upcased","Request","input","ctrl","reParamSearch","reQueryString","form","bytes","split","parseHeaders","rawHeaders","preProcessedHeaders","line","parts","error","Response","bodyInit","response","redirectStatuses","status","message","fetch","init","request","xhr","abortXhr","fixUrl","names","ctx","module","h","j","J","post","useSourceStore","devtools","sources","filters","setSource","widgetClient","widgets","destroy","previousSource","newSource","apiBaseUrl","DEFAULT_CARTO_API_URL","clientId","DEFAULT_CLIENT_ID","apiVersion","DEFAULT_CARTO_API_VERSION","getWidgetSource","removeSource","setFilters","newFilters","currentFilters","removeFilter","addFilter","removeFilters","column","owner","invalidateSourcesCache","ids","timeout","maxAge","useSource","useFilters","useSourceWithFilters","bb0","getFilterValues","getSpatialDataFallback","fallback","spatialDataType","spatialDataColumn","query","WidgetQuerySource","accessToken","sqlQuery","table","WidgetTableSource","tableName","tileset","WidgetTilesetSource","tileFormat","TileFormat","BINARY","raster","rasterMetadata","WidgetRasterSource","option","useFiltersMerged","sourceId","additionalFilter","computedFilters","useWidgetModel","widgetModel","RELEVANT_HEADERS","getRelevantHeaders","entries","fromEntries","toLowerCase","JSON","stringify","useCommonModel","widgetProps","mergedFilters","queryParameters","queryKey","useCategories","useQueryProps","signal","getCategories","queryFn","useQuery","CategoriesModel","modelProps","queryResult","useFeatures","getFeatures","FeaturesModel","useFormula","getFormula","FormulaModel","useHistogram","getHistogram","HistogramModel","useRange","getRange","RangeModel","useScatter","getScatter","ScatterModel","useTable","getTable","TableModel","useTimeSeries","getTimeSeries","TimeSeriesModel","clientID","MapsProvider","lassoTools","measureTools","useLegend","layersId","layersById","toReversed","onChangeVisibility","onChangeRowCollapse","collapsed","onChangeOpacity","opacity","useMapScreenshot","screenshot","setScreenshot","isLoading","setIsLoading","setError","deckInstanceFn","overlayInstanceFn","_takeScreenshot","deckInstance","canvas","createElement","getContext","_overlayInstance","getRenderingType","html2canvas","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","takeScreenshot","useSpatialFilter","viewportSpatialFilter","useViewportSpatialFilter","lassoToolsSpatialFilter","useLassoToolsSpatialFilter","staticSpatialFilter","useStaticSpatialFilter","viewport","createViewportSpatialFilter","_values","multiPolygon","value_0","flatMap","geom","formatterTypes","currency","number","FORMATTERS","format","formatCurrency","toLocaleString","objectToHtml","formatters","includeColumns","showColumnName","title","getColumnName","_getColumnName","getFieldHtml","_getFieldHtml","getTitle","_getTitle","getValue","_getValue","cur","formatter","valueTransformed","columnName","propHtml","getFormatterFunction","propName","mappingLegendMeridian","collapsible","helperText","variables","showOpacityControl","opacityControl","switchable","ZoomControls","zoom_0","getQueryStats","baseUrl","connection","attribute","fetcherOptions","other","params","statsUrl","executeFetch","RequestMethods","q","getTableStats","useStats","getQueryFunction","select","startsWith","connectionName","getStatsFromTileset","tileJson","vectorTilesetSource","tilestats","attributes","columnStats","p"],"mappings":"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","x_google_ignoreList":[7,37]}
|