UNPKG

casc-cesium

Version:

Vue 3.x components for CesiumJS.

1 lines 25.4 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/vc-overview-map/index.ts"],"sourcesContent":["import type { VNode, WatchStopHandle, CSSProperties, PropType } from 'vue'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport { VcBtn, VcBtnRef, VcTooltip, VcTooltipRef } from 'casc-cesium-components/ui'\nimport { $ } from 'casc-cesium-utils/private/vm'\nimport type { VcBtnTooltipProps, VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, reactive, ref } from 'vue'\nimport VcViewer, { VcViewerProps, VcViewerRef } from 'casc-cesium-components/viewer'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { makeColor } from 'casc-cesium-utils/cesium-helpers'\n\nexport const overviewProps = {\n position: {\n type: String as PropType<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'>,\n default: 'bottom-right',\n validator: (v: string) => ['top-right', 'top-left', 'bottom-right', 'bottom-left'].includes(v)\n },\n offset: {\n type: Array,\n validator: (v: Array<string>) => v.length === 2\n },\n width: {\n type: String,\n default: '150px'\n },\n height: {\n type: String,\n default: '150px'\n },\n border: {\n type: String,\n default: 'solid 4px rgb(255, 255, 255)'\n },\n borderRadius: {\n type: String\n },\n toggleOpts: {\n type: Object as PropType<VcBtnTooltipProps>\n },\n viewerOpts: {\n type: Object as PropType<VcViewerProps>\n },\n centerRectColor: {\n type: [Object, Array, String] as PropType<VcColor>,\n default: '#ff000080'\n },\n widthFactor: {\n type: Number,\n default: 2\n },\n heightFactor: {\n type: Number,\n default: 2\n },\n modelValue: {\n type: Boolean,\n default: true\n }\n}\nexport default defineComponent({\n name: 'VcOverviewMap',\n props: overviewProps,\n emits: {\n ...commonEmits,\n 'update:modelValue': (value: boolean) => true\n },\n setup(props, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcOverviewMap'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const { t } = useLocale()\n const { $services } = commonState\n const rootRef = ref<HTMLElement>(null)\n const toggleBtnRef = ref<VcBtnRef>(null)\n const rootStyle = reactive<CSSProperties>({})\n const tooltipRef = ref<VcTooltipRef>(null)\n const viewerRef = ref<VcViewerRef>(null)\n const positionState = usePosition(props, $services)\n const showing = ref(props.modelValue)\n let unwatchFns: Array<WatchStopHandle> = []\n let overviewViewer: Cesium.Viewer\n let centerRect: Cesium.ViewportQuad\n\n // computed\n const toggleOpts = computed(() => {\n return Object.assign(\n {},\n {\n color: '#fff',\n background: '#3f4854',\n icon: 'vc-icons-overview-toggle',\n size: '15px',\n tooltip: {\n delay: 500,\n anchor: 'bottom middle',\n offset: [0, 20],\n tip: void 0\n } as any\n },\n props.toggleOpts\n )\n })\n\n const viewerOpts = computed(() => {\n return Object.assign(\n {},\n {\n removeCesiumScript: false,\n showCredit: false,\n sceneMode: 2,\n containerId: 'vc-overview-map'\n },\n props.viewerOpts\n )\n })\n // watch\n\n // methods\n instance.createCesiumObject = async () => {\n const { viewer } = $services\n const viewerElement = (viewer as any)._element\n viewerElement.appendChild($(rootRef))\n return [$(rootRef), $(viewerRef)]\n }\n\n instance.mount = async () => {\n updateRootStyle()\n const { viewer } = $services\n viewer.clock.onTick.addEventListener(onClockTick)\n return true\n }\n\n instance.unmount = async () => {\n const { viewer } = $services\n const viewerElement = (viewer as any)._element\n viewer.clock.onTick.removeEventListener(onClockTick)\n viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n return true\n }\n\n const onClockTick = () => {\n if (overviewViewer) {\n const { viewer: parentViewer } = $services\n const parentCameraRectangle = parentViewer.camera.computeViewRectangle()\n const { defined } = Cesium\n if (!defined(parentCameraRectangle)) {\n return\n }\n const rectangle = parentCameraRectangle.expand(props.widthFactor, props.heightFactor)\n\n overviewViewer.camera.flyTo({\n destination: rectangle.clone(),\n // destination: parentViewer.camera.position,\n orientation: {\n heading: parentViewer.camera.heading,\n pitch: parentViewer.camera.pitch,\n roll: parentViewer.camera.roll\n },\n duration: 0.0\n })\n const { Cartesian3, SceneTransforms } = Cesium\n const wnPosition = Cartesian3.fromRadians(parentCameraRectangle.west, parentCameraRectangle.north)\n const enPosition = Cartesian3.fromRadians(parentCameraRectangle.east, parentCameraRectangle.north)\n const wsPosition = Cartesian3.fromRadians(parentCameraRectangle.west, parentCameraRectangle.south)\n const esPosition = Cartesian3.fromRadians(parentCameraRectangle.east, parentCameraRectangle.south)\n const scene = overviewViewer.scene\n const wnWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, wnPosition)\n const enWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, enPosition)\n const wsWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, wsPosition)\n const esWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, esPosition)\n\n if (!defined(wnWindowPosition) || !defined(enWindowPosition) || !defined(wsWindowPosition) || !defined(esWindowPosition)) {\n return\n }\n\n const width = enWindowPosition.x - wnWindowPosition.x\n const height = wsWindowPosition.y - wnWindowPosition.y\n const x = (wnWindowPosition.x + enWindowPosition.x) / 2 - width / 2\n const y = (wnWindowPosition.y + wsWindowPosition.y) / 2 - height / 2\n\n if (width <= 0 || height <= 0) {\n return\n }\n const boundingRectangle = new Cesium.BoundingRectangle(x, y, width, height)\n centerRect.rectangle = boundingRectangle\n centerRect.material.uniforms.color = makeColor(props.centerRectColor)\n centerRect.show = true\n }\n }\n\n const onViewerReady = (readyObj: VcReadyObject) => {\n const { viewer } = readyObj\n overviewViewer = viewer\n const control = viewer.scene.screenSpaceCameraController\n control.enableRotate = false\n control.enableTranslate = false\n control.enableZoom = false\n control.enableTilt = false\n control.enableLook = false\n\n overviewViewer.scene.highDynamicRange = false\n overviewViewer.scene.globe.enableLighting = false\n overviewViewer.scene.globe.showWaterEffect = false\n overviewViewer.scene.globe.depthTestAgainstTerrain = false\n overviewViewer.scene.skyAtmosphere.show = false\n overviewViewer.scene.fog.enabled = false\n overviewViewer.scene.skyBox.show = false\n overviewViewer.scene.sun.show = false\n overviewViewer.scene.moon.show = false\n overviewViewer.scene.highDynamicRange = false\n overviewViewer.scene.globe.showGroundAtmosphere = false\n\n centerRect = new Cesium.ViewportQuad(new Cesium.BoundingRectangle(150, 100, 100, 50))\n centerRect.show = false\n overviewViewer.scene.primitives.add(centerRect)\n }\n\n const updateRootStyle = () => {\n const css: CSSProperties = positionState.style.value\n rootStyle.left = css.left\n rootStyle.top = css.top\n rootStyle.transform = css.transform\n rootStyle['pointer-events'] = 'none'\n\n css.borderRadius = props.borderRadius\n css.border = props.border\n\n if (showing.value) {\n css.width = props.width\n css.height = props.height\n } else {\n const reg = /(\\d+)/g\n const regResult = reg.exec(props.border)\n const boder = regResult?.length ? parseFloat(regResult[0]) : 0\n const toggleBtnRefStyle = getComputedStyle($(toggleBtnRef)?.$el)\n css.width = `${parseFloat(toggleBtnRefStyle.width) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n css.height = `${parseFloat(toggleBtnRefStyle.height) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n }\n Object.assign(rootStyle, css)\n }\n\n // const onTooltipBeforeShow = () => {\n\n // }\n\n const onToggle = () => {\n if (showing.value) {\n minimize()\n } else {\n restore()\n }\n showing.value = !showing.value\n ctx.emit('update:modelValue', showing.value)\n }\n\n const minimize = () => {\n const reg = /(\\d+)/g\n const regResult = reg.exec(props.border)\n const boder = regResult?.length ? parseFloat(regResult[0]) : 0\n const toggleBtnRefStyle = getComputedStyle($(toggleBtnRef)?.$el)\n rootStyle.width = `${parseFloat(toggleBtnRefStyle.width) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n rootStyle.height = `${parseFloat(toggleBtnRefStyle.height) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n }\n\n const restore = () => {\n rootStyle.width = props.width\n rootStyle.height = props.height\n }\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n })\n\n return () => {\n const children: Array<VNode> = []\n children.push(\n h(\n VcBtn,\n {\n ref: toggleBtnRef,\n class: 'toggle toggle-' + props.position + (!showing.value ? ' minimized ' : ''),\n flat: true,\n dense: true,\n icon: toggleOpts.value.icon,\n size: toggleOpts.value.size,\n style: { color: toggleOpts.value.color, background: toggleOpts.value.background, 'pointer-events': 'auto' },\n onClick: onToggle\n },\n () =>\n toggleOpts.value.tooltip\n ? h(\n VcTooltip,\n {\n ref: tooltipRef,\n ...toggleOpts.value.tooltip\n // onBeforeShow: onTooltipBeforeShow\n },\n () => h('strong', {}, toggleOpts.value.tooltip.tip || t(`vc.overview.${!showing.value ? 'show' : 'hidden'}`))\n )\n : createCommentVNode('v-if')\n )\n )\n children.push(\n h(\n VcViewer,\n {\n ref: viewerRef,\n ...viewerOpts.value,\n onReady: onViewerReady\n },\n () => hSlot(ctx.slots.default)\n )\n )\n return h(\n 'div',\n {\n ref: rootRef,\n class: 'vc-overview-map ' + positionState.classes.value,\n style: rootStyle\n },\n children\n )\n }\n }\n})\n\nexport type VcOverviewMapProps = {\n /**\n * Specify the position of the VcOverviewMap.\n * Default value: bottom-right\n */\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n /**\n * An array of two numbers to offset the VcOverviewMap horizontally and vertically in pixels.\n * Default value: [0, 0]\n */\n offset?: [number, number]\n /**\n * Specify the width of the overviewmap component.\n * Default value: 150px\n */\n width?: string\n /**\n * Specify the height of the overviewmap component.\n * Default value: 150px\n */\n height?: string\n /**\n * Specify the border of the overviewmap component.\n * Default value: solid 4px rgb(255, 255, 255)\n */\n border?: string\n /**\n * Specify the border radius of the overviewmap component.\n */\n borderRadius?: string\n /**\n * Specify the toggle button options of the overviewmap component.\n */\n toggleOpts?: VcBtnTooltipProps\n /**\n * Specify the vc-viewer component options in the overviewmap component.\n */\n viewerOpts?: VcViewerProps\n /**\n * Specify the center rectangle color.\n * Default value: #ff000080\n */\n centerRectColor?: VcColor\n /**\n * Specify the width factor of center rectangle.\n * Default value: 2\n */\n widthFactor?: number\n /**\n * Specify the height factor of center rectangle.\n * Default value: 2\n */\n heightFactor?: number\n /**\n * Model of the component determining if VcOverviewMap should be expanded or not.\n * Default value: true\n */\n modelValue?: boolean\n /**\n * Triggers before the VcOverviewMap is loaded.\n * @param instance\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcOverviewMap is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the component load failed.\n */\n onUnready?: (e: any) => void\n /**\n * Triggers when the VcOverviewMap is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Emitted when showing/hidden state changes; Is also used by v-model.\n * @param value New state (showing/hidden)\n */\n 'onUpdate:modelValue'?: (value: boolean) => void\n}\n\nexport interface VcOverviewMapSlots {\n /**\n * Default slot content of the component\n */\n default: () => VNode[]\n}\n\nexport type VcOverviewMapRef = VcComponentPublicInstance<VcOverviewMapProps>\n"],"names":["VcViewer"],"mappings":";;;;;;;;;;;;AASY,MAAC,aAAa,GAAG;AAC7B,EAAE,QAAQ,EAAE;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,cAAc;AAC3B,IAAI,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1F,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;AACpC,GAAG;AACH,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,OAAO;AACpB,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,OAAO;AACpB,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,8BAA8B;AAC3C,GAAG;AACH,EAAE,YAAY,EAAE;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,GAAG;AACH,EAAE,UAAU,EAAE;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,GAAG;AACH,EAAE,UAAU,EAAE;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,GAAG;AACH,EAAE,eAAe,EAAE;AACnB,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;AACjC,IAAI,OAAO,EAAE,WAAW;AACxB,GAAG;AACH,EAAE,WAAW,EAAE;AACf,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,YAAY,EAAE;AAChB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,UAAU,EAAE;AACd,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,OAAO,EAAE,IAAI;AACjB,GAAG;AACH,EAAE;AACF,kBAAe,eAAe,CAAC;AAC/B,EAAE,IAAI,EAAE,eAAe;AACvB,EAAE,KAAK,EAAE,aAAa;AACtB,EAAE,KAAK,EAAE;AACT,IAAI,GAAG,WAAW;AAClB,IAAI,mBAAmB,EAAE,CAAC,KAAK,KAAK,IAAI;AACxC,GAAG;AACH,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE;AACpB,IAAI,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;AAC1C,IAAI,QAAQ,CAAC,WAAW,GAAG,eAAe,CAAC;AAC3C,IAAI,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B,IAAI,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxD,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC;AAC9B,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;AACtC,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACxD,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC1C,IAAI,IAAI,UAAU,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,cAAc,CAAC;AACvB,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;AACtC,MAAM,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;AAC/B,QAAQ,KAAK,EAAE,MAAM;AACrB,QAAQ,UAAU,EAAE,SAAS;AAC7B,QAAQ,IAAI,EAAE,0BAA0B;AACxC,QAAQ,IAAI,EAAE,MAAM;AACpB,QAAQ,OAAO,EAAE;AACjB,UAAU,KAAK,EAAE,GAAG;AACpB,UAAU,MAAM,EAAE,eAAe;AACjC,UAAU,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACzB,UAAU,GAAG,EAAE,KAAK,CAAC;AACrB,SAAS;AACT,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC3B,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;AACtC,MAAM,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;AAC/B,QAAQ,kBAAkB,EAAE,KAAK;AACjC,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,iBAAiB;AACtC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC3B,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,kBAAkB,GAAG,YAAY;AAC9C,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5C,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,MAAM,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACxC,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,KAAK,GAAG,YAAY;AACjC,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACxD,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,OAAO,GAAG,YAAY;AACnC,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5C,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAC3D,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,MAAM,WAAW,GAAG,MAAM;AAC9B,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;AACnD,QAAQ,MAAM,qBAAqB,GAAG,YAAY,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;AACjF,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;AACnC,QAAQ,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;AAC7C,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAC9F,QAAQ,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,UAAU,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE;AACxC,UAAU,WAAW,EAAE;AACvB,YAAY,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO;AAChD,YAAY,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK;AAC5C,YAAY,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI;AAC1C,WAAW;AACX,UAAU,QAAQ,EAAE,CAAC;AACrB,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;AACvD,QAAQ,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC3G,QAAQ,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC3G,QAAQ,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC3G,QAAQ,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC3G,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;AAC3C,QAAQ,MAAM,gBAAgB,GAAG,eAAe,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC7F,QAAQ,MAAM,gBAAgB,GAAG,eAAe,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC7F,QAAQ,MAAM,gBAAgB,GAAG,eAAe,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC7F,QAAQ,MAAM,gBAAgB,GAAG,eAAe,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AAClI,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAC9D,QAAQ,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAC/D,QAAQ,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC5E,QAAQ,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;AAC7E,QAAQ,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;AACvC,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACpF,QAAQ,UAAU,CAAC,SAAS,GAAG,iBAAiB,CAAC;AACjD,QAAQ,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAC9E,QAAQ,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;AAC/B,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,aAAa,GAAG,CAAC,QAAQ,KAAK;AACxC,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;AAClC,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC;AAC/D,MAAM,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;AACnC,MAAM,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;AACtC,MAAM,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;AACjC,MAAM,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;AACjC,MAAM,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;AACjC,MAAM,cAAc,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACpD,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;AACxD,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;AACzD,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,GAAG,KAAK,CAAC;AACjE,MAAM,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;AACtD,MAAM,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AAC/C,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;AAC/C,MAAM,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;AAC5C,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAC7C,MAAM,cAAc,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACpD,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAC9D,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5F,MAAM,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;AAC9B,MAAM,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACtD,KAAK,CAAC;AACN,IAAI,MAAM,eAAe,GAAG,MAAM;AAClC,MAAM,IAAI,EAAE,CAAC;AACb,MAAM,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5C,MAAM,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AAChC,MAAM,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAC9B,MAAM,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;AAC1C,MAAM,SAAS,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;AAC3C,MAAM,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AAC5C,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE;AACzB,QAAQ,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAChC,QAAQ,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,OAAO,MAAM;AACb,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC;AAC7B,QAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjD,QAAQ,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrG,QAAQ,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACrG,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/G,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AACjH,OAAO;AACP,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACpC,KAAK,CAAC;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE;AACzB,QAAQ,QAAQ,EAAE,CAAC;AACnB,OAAO,MAAM;AACb,QAAQ,OAAO,EAAE,CAAC;AAClB,OAAO;AACP,MAAM,OAAO,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACnD,KAAK,CAAC;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,MAAM,IAAI,EAAE,CAAC;AACb,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC;AAC3B,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/C,MAAM,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnG,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACnG,MAAM,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AACnH,MAAM,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AACrH,KAAK,CAAC;AACN,IAAI,MAAM,OAAO,GAAG,MAAM;AAC1B,MAAM,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACpC,MAAM,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACtC,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,MAAM;AACtB,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,MAAM;AACjB,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC1B,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AAC7B,QAAQ,GAAG,EAAE,YAAY;AACzB,QAAQ,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,aAAa,GAAG,EAAE,CAAC;AACxF,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI;AACnC,QAAQ,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI;AACnC,QAAQ,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE;AACnH,QAAQ,OAAO,EAAE,QAAQ;AACzB,OAAO,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,EAAE;AACvD,QAAQ,GAAG,EAAE,UAAU;AACvB,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO;AACnC,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvJ,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAACA,OAAQ,EAAE;AAChC,QAAQ,GAAG,EAAE,SAAS;AACtB,QAAQ,GAAG,UAAU,CAAC,KAAK;AAC3B,QAAQ,OAAO,EAAE,aAAa;AAC9B,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1C,MAAM,OAAO,CAAC,CAAC,KAAK,EAAE;AACtB,QAAQ,GAAG,EAAE,OAAO;AACpB,QAAQ,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK;AAC/D,QAAQ,KAAK,EAAE,SAAS;AACxB,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnB,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC;;;;"}